@projectcor/maia-components 2.11.31-4 → 2.11.31

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.
Files changed (60) hide show
  1. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
  2. package/lib/components/atoms/icons/index.js +1 -3
  3. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +10 -41
  4. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +4 -7
  5. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +3 -16
  6. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +44 -54
  7. package/lib/components/molecules/ChatAIHome/styles.js +35 -43
  8. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +39 -55
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +91 -341
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +15 -28
  11. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +18 -91
  12. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +2 -17
  13. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +9 -10
  14. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +6 -37
  15. package/lib/components/molecules/Sidebar/Sidebar.js +323 -269
  16. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +23 -18
  17. package/lib/components/molecules/Sidebar/Sidebar.styles.js +37 -54
  18. package/lib/dev/Providers.js +2 -2
  19. package/lib/hooks/useChatManager/useChatManager.js +8 -20
  20. package/lib/hooks/useChats/useChats.js +4 -12
  21. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +5 -8
  22. package/lib/hooks/useProjectSearch.js +4 -11
  23. package/lib/lang/br/index.js +2 -19
  24. package/lib/lang/en/index.js +2 -19
  25. package/lib/lang/es/index.js +2 -19
  26. package/lib/lang/fr/index.js +2 -19
  27. package/lib/mocks/mockChats.js +395 -0
  28. package/lib/mocks/mockedUser.js +169 -0
  29. package/lib/services/maia/Chats/getChatsByUserId.js +8 -14
  30. package/lib/services/maia/Chats/index.js +1 -7
  31. package/lib/services/maia/Orchestrator/orchestrator.js +4 -6
  32. package/lib/services/maia/client.js +9 -44
  33. package/lib/services/query/projectSearchByValueQuery.js +2 -2
  34. package/lib/store/chatsStore.types.js +2 -10
  35. package/lib/store/useChatsStore.js +37 -75
  36. package/lib/types/Chat.js +1 -3
  37. package/lib/types/Project.js +1 -1
  38. package/package.json +1 -1
  39. package/lib/components/atoms/icons/ChatConversation.js +0 -40
  40. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +0 -33
  41. package/lib/components/molecules/ChatAIMessages/ChatDaySeparator.js +0 -43
  42. package/lib/components/molecules/ChatAIMessages/ChatDaySeparator.styles.js +0 -11
  43. package/lib/components/molecules/ChatAIMessages/chatMessageUtils.js +0 -5
  44. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +0 -16
  45. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +0 -12
  46. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +0 -13
  47. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +0 -3
  48. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +0 -57
  49. package/lib/components/molecules/ChatAIModal/layout.js +0 -35
  50. package/lib/components/molecules/Sidebar/SidebarChats.styles.js +0 -73
  51. package/lib/components/molecules/Sidebar/SidebarChatsSection.js +0 -69
  52. package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +0 -150
  53. package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +0 -238
  54. package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +0 -70
  55. package/lib/components/molecules/Sidebar/sidebarChats.types.js +0 -14
  56. package/lib/dev/fixtures/devUser.js +0 -173
  57. package/lib/dev/fixtures/mockedUser.js +0 -169
  58. package/lib/services/maia/Chats/getChatMessagesV2.js +0 -114
  59. package/lib/services/maia/Chats/getSessionByAgent.js +0 -66
  60. package/lib/services/maia/Chats/getSessionsGroupedV2.js +0 -70
@@ -1,238 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- 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; }
4
- 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; }
5
- /* eslint-disable @typescript-eslint/no-explicit-any */
6
- import { useLayoutEffect, useRef, useState } from 'react';
7
- import { createPortal } from 'react-dom';
8
- import { CUButton } from '@projectcor/button/lib/components/CUButton';
9
- import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
10
- import { Pencil } from '@projectcor/icons/lib/components/Pencil';
11
- import { Trash } from '@projectcor/icons/lib/components/Trash';
12
- import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
13
- import { useResizeListener } from '../../../hooks/useResize';
14
- import { EVENTS } from '../../../hooks/useEvent';
15
- import { useT } from '../../../hooks/useT';
16
- import { OptionItem } from '../../atoms/CardMenu/CardMenu';
17
- import { EditQuestionModal } from '../../organisms/EditQuestionModal';
18
- import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal';
19
- import { ChatConversation, MAIAIcon } from '../../atoms/icons';
20
- import { SCLHCChatMenuPopoverPortal, SCLHCConversationIconSlot, SCLHCConversationKebab, SCLHCConversationRoot, SCLHCConversationSubtitle, SCLHCConversationSubtitleEmoji, SCLHCConversationSubtitleRow, SCLHCConversationTitle, SCLHCConversationTopRow } from './Sidebar.styles';
21
- import { getSidebarHistorySubtitle } from './sidebarChats.helpers';
22
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
23
- var actions = {
24
- edit: function edit(props) {
25
- return /*#__PURE__*/_jsx(EditQuestionModal, _objectSpread({}, props));
26
- },
27
- "delete": function _delete(props) {
28
- return /*#__PURE__*/_jsx(DeleteQuestionModal, _objectSpread({}, props));
29
- }
30
- };
31
- export var SidebarHistoryChat = function SidebarHistoryChat(_ref) {
32
- var chat = _ref.chat,
33
- sectionKey = _ref.sectionKey,
34
- _onClick = _ref.onClick,
35
- isModalOpen = _ref.isModalOpen,
36
- chatMenuSurface = _ref.chatMenuSurface,
37
- onOpenModal = _ref.onOpenModal,
38
- onCloseModal = _ref.onCloseModal,
39
- handlers = _ref.handlers,
40
- isSelected = _ref.isSelected;
41
- var textRef = useRef(null);
42
- var subtitleRef = useRef(null);
43
- var kebabRef = useRef(null);
44
- var menuPopoverRef = useRef(null);
45
- var _useState = useState(null),
46
- _useState2 = _slicedToArray(_useState, 2),
47
- menuCoords = _useState2[0],
48
- setMenuCoords = _useState2[1];
49
- var _useT = useT(),
50
- t = _useT.t;
51
- var _useState3 = useState(null),
52
- _useState4 = _slicedToArray(_useState3, 2),
53
- action = _useState4[0],
54
- setAction = _useState4[1];
55
- var subtitle = getSidebarHistorySubtitle(chat, sectionKey);
56
- var subtitleTrimmed = subtitle.trim();
57
- var _useResizeListener = useResizeListener(textRef, [chat.title]),
58
- showTooltip = _useResizeListener.showTooltip;
59
- var agentSubtitleLine = sectionKey === 'agentsByCompany' && (subtitleTrimmed || chat.emoji != null && chat.emoji !== '' || chat.agentType === 'clone');
60
- var _useResizeListener2 = useResizeListener(subtitleRef, [subtitleTrimmed, sectionKey, chat.emoji, chat.agentType]),
61
- showTooltipSubtitle = _useResizeListener2.showTooltip;
62
- var subtitleTooltipTitle = sectionKey === 'agentsByCompany' && chat.emoji && chat.agentType !== 'clone' ? "".concat(chat.emoji, " ").concat(subtitleTrimmed).trim() : subtitleTrimmed;
63
- var menuItems = [{
64
- label: t('history.menu.rename'),
65
- onClickItem: function onClickItem(chatId) {
66
- setAction('edit');
67
- onOpenModal(chatId);
68
- },
69
- Icon: Pencil,
70
- eventKey: EVENTS.pmAiMenuEdit
71
- }, {
72
- label: t('history.menu.delete'),
73
- onClickItem: function onClickItem(chatId) {
74
- setAction('delete');
75
- onOpenModal(chatId);
76
- },
77
- Icon: Trash,
78
- eventKey: EVENTS.pmAiMenuDelete
79
- }];
80
- var handleConfirmAction = function handleConfirmAction(chatData) {
81
- if (action === 'edit') {
82
- handlers.handleUpdateChat(chatData);
83
- } else {
84
- handlers.handleDeleteChat(chatData);
85
- }
86
- setAction(null);
87
- onCloseModal();
88
- };
89
- useLayoutEffect(function () {
90
- if (!isModalOpen || action) {
91
- setMenuCoords(null);
92
- return undefined;
93
- }
94
- var anchor = kebabRef.current;
95
- if (!anchor) {
96
- return undefined;
97
- }
98
- var place = function place() {
99
- var _menuEl$offsetWidth, _menuEl$offsetHeight;
100
- var r = anchor.getBoundingClientRect();
101
- var menuEl = menuPopoverRef.current;
102
- var w = Math.max((_menuEl$offsetWidth = menuEl === null || menuEl === void 0 ? void 0 : menuEl.offsetWidth) !== null && _menuEl$offsetWidth !== void 0 ? _menuEl$offsetWidth : 124, 124);
103
- var h = (_menuEl$offsetHeight = menuEl === null || menuEl === void 0 ? void 0 : menuEl.offsetHeight) !== null && _menuEl$offsetHeight !== void 0 ? _menuEl$offsetHeight : 72;
104
- var gap = 4;
105
- var pad = 8;
106
- var top = r.bottom + gap;
107
- var left = r.right - w;
108
- if (left < pad) left = pad;
109
- if (left + w > window.innerWidth - pad) {
110
- left = Math.max(pad, window.innerWidth - w - pad);
111
- }
112
- if (top + h > window.innerHeight - pad) {
113
- top = r.top - h - gap;
114
- }
115
- if (top < pad) top = pad;
116
- setMenuCoords({
117
- top: top,
118
- left: left
119
- });
120
- };
121
- place();
122
- var raf = requestAnimationFrame(place);
123
- window.addEventListener('resize', place);
124
- document.addEventListener('scroll', place, true);
125
- return function () {
126
- cancelAnimationFrame(raf);
127
- window.removeEventListener('resize', place);
128
- document.removeEventListener('scroll', place, true);
129
- setMenuCoords(null);
130
- };
131
- }, [isModalOpen, action]);
132
- var menuPortal = isModalOpen && !action && typeof document !== 'undefined' && /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(SCLHCChatMenuPopoverPortal, _objectSpread(_objectSpread({
133
- ref: menuPopoverRef,
134
- "data-modal-container": true
135
- }, chatMenuSurface === 'sectionModal' ? {
136
- 'data-section-modal-container': true
137
- } : {}), {}, {
138
- style: menuCoords ? {
139
- top: menuCoords.top,
140
- left: menuCoords.left
141
- } : {
142
- top: -9999,
143
- left: -9999,
144
- visibility: 'hidden'
145
- },
146
- children: menuItems.map(function (_ref2) {
147
- var label = _ref2.label,
148
- onClickItem = _ref2.onClickItem,
149
- Icon = _ref2.Icon,
150
- eventKey = _ref2.eventKey;
151
- return /*#__PURE__*/_jsx(OptionItem, {
152
- label: label,
153
- onClick: function onClick() {
154
- return onClickItem(chat.id);
155
- },
156
- Icon: Icon,
157
- eventKey: eventKey
158
- }, label);
159
- })
160
- })), document.body);
161
- return /*#__PURE__*/_jsxs(_Fragment, {
162
- children: [/*#__PURE__*/_jsxs(SCLHCConversationRoot, {
163
- $isSelected: isSelected,
164
- "data-menu-open": isModalOpen ? 'true' : undefined,
165
- onClick: function onClick(e) {
166
- e.stopPropagation();
167
- _onClick(chat);
168
- },
169
- children: [/*#__PURE__*/_jsxs(SCLHCConversationTopRow, {
170
- children: [/*#__PURE__*/_jsx(SCLHCConversationIconSlot, {
171
- "aria-hidden": true,
172
- children: /*#__PURE__*/_jsx(ChatConversation, {
173
- width: 15,
174
- height: 15,
175
- color: "#20201f"
176
- })
177
- }), /*#__PURE__*/_jsx(Tooltip, {
178
- title: showTooltip ? chat.title : '',
179
- children: /*#__PURE__*/_jsx(SCLHCConversationTitle, {
180
- ref: textRef,
181
- children: chat.title || t('conversations.emptyLabel')
182
- })
183
- }), /*#__PURE__*/_jsx(SCLHCConversationKebab, {
184
- ref: kebabRef,
185
- "data-modal-container": true,
186
- children: /*#__PURE__*/_jsx(CUButton, {
187
- iconOnly: true,
188
- size: "small",
189
- variant: "text",
190
- onClick: function onClick(event) {
191
- event.stopPropagation();
192
- onOpenModal(chat.id);
193
- },
194
- children: /*#__PURE__*/_jsx(MenuDots, {
195
- width: 15,
196
- height: 15
197
- })
198
- })
199
- })]
200
- }), agentSubtitleLine && /*#__PURE__*/_jsx(Tooltip, {
201
- title: showTooltipSubtitle ? subtitleTooltipTitle : '',
202
- children: /*#__PURE__*/_jsxs(SCLHCConversationSubtitleRow, {
203
- children: [chat.agentType === 'clone' && /*#__PURE__*/_jsx(SCLHCConversationSubtitleEmoji, {
204
- "aria-hidden": true,
205
- children: /*#__PURE__*/_jsx(MAIAIcon, {
206
- width: 12,
207
- height: 12
208
- })
209
- }), chat.agentType !== 'clone' && chat.emoji && /*#__PURE__*/_jsx(SCLHCConversationSubtitleEmoji, {
210
- "aria-hidden": true,
211
- children: chat.emoji
212
- }), subtitleTrimmed ? /*#__PURE__*/_jsx(SCLHCConversationSubtitle, {
213
- ref: subtitleRef,
214
- $inFlexRow: true,
215
- children: subtitleTrimmed
216
- }) : null]
217
- })
218
- }), !agentSubtitleLine && subtitleTrimmed && /*#__PURE__*/_jsx(Tooltip, {
219
- title: showTooltipSubtitle ? subtitleTrimmed : '',
220
- children: /*#__PURE__*/_jsx(SCLHCConversationSubtitle, {
221
- ref: subtitleRef,
222
- children: subtitleTrimmed
223
- })
224
- })]
225
- }, "conversation-".concat(chat.sessionExternalId)), menuPortal, !!action && actions[action]({
226
- onClose: function onClose() {
227
- onCloseModal();
228
- setAction(null);
229
- },
230
- chat: chat,
231
- handlers: {
232
- handleConfirmAction: handleConfirmAction,
233
- handleSetIsOpenModal: onCloseModal
234
- }
235
- })]
236
- });
237
- };
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNVQnV0dG9uIiwiTWVudURvdHMiLCJQZW5jaWwiLCJUcmFzaCIsIlRvb2x0aXAiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiQ2hhdENvbnZlcnNhdGlvbiIsIk1BSUFJY29uIiwiU0NMSENDaGF0TWVudVBvcG92ZXJQb3J0YWwiLCJTQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90IiwiU0NMSENDb252ZXJzYXRpb25LZWJhYiIsIlNDTEhDQ29udmVyc2F0aW9uUm9vdCIsIlNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUiLCJTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlRW1vamkiLCJTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93IiwiU0NMSENDb252ZXJzYXRpb25UaXRsZSIsIlNDTEhDQ29udmVyc2F0aW9uVG9wUm93IiwiZ2V0U2lkZWJhckhpc3RvcnlTdWJ0aXRsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiU2lkZWJhckhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJzZWN0aW9uS2V5Iiwib25DbGljayIsImlzTW9kYWxPcGVuIiwiY2hhdE1lbnVTdXJmYWNlIiwib25PcGVuTW9kYWwiLCJvbkNsb3NlTW9kYWwiLCJoYW5kbGVycyIsImlzU2VsZWN0ZWQiLCJ0ZXh0UmVmIiwic3VidGl0bGVSZWYiLCJrZWJhYlJlZiIsIm1lbnVQb3BvdmVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVudUNvb3JkcyIsInNldE1lbnVDb29yZHMiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGlvbiIsInNldEFjdGlvbiIsInN1YnRpdGxlIiwic3VidGl0bGVUcmltbWVkIiwidHJpbSIsIl91c2VSZXNpemVMaXN0ZW5lciIsInRpdGxlIiwic2hvd1Rvb2x0aXAiLCJhZ2VudFN1YnRpdGxlTGluZSIsImVtb2ppIiwiYWdlbnRUeXBlIiwiX3VzZVJlc2l6ZUxpc3RlbmVyMiIsInNob3dUb29sdGlwU3VidGl0bGUiLCJzdWJ0aXRsZVRvb2x0aXBUaXRsZSIsImNvbmNhdCIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwidW5kZWZpbmVkIiwiYW5jaG9yIiwiY3VycmVudCIsInBsYWNlIiwiX21lbnVFbCRvZmZzZXRXaWR0aCIsIl9tZW51RWwkb2Zmc2V0SGVpZ2h0IiwiciIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm1lbnVFbCIsInciLCJNYXRoIiwibWF4Iiwib2Zmc2V0V2lkdGgiLCJoIiwib2Zmc2V0SGVpZ2h0IiwiZ2FwIiwicGFkIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwicmFmIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibWVudVBvcnRhbCIsInJlZiIsInN0eWxlIiwidmlzaWJpbGl0eSIsImNoaWxkcmVuIiwibWFwIiwiX3JlZjIiLCJpZCIsImJvZHkiLCIkaXNTZWxlY3RlZCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiJGluRmxleFJvdyIsInNlc3Npb25FeHRlcm5hbElkIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhckhpc3RvcnlDaGF0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgQ2hhdENvbnZlcnNhdGlvbiwgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7XG4gIFNDTEhDQ2hhdE1lbnVQb3BvdmVyUG9ydGFsLFxuICBTQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90LFxuICBTQ0xIQ0NvbnZlcnNhdGlvbktlYmFiLFxuICBTQ0xIQ0NvbnZlcnNhdGlvblJvb3QsXG4gIFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUsXG4gIFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaSxcbiAgU0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZVJvdyxcbiAgU0NMSENDb252ZXJzYXRpb25UaXRsZSxcbiAgU0NMSENDb252ZXJzYXRpb25Ub3BSb3csXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQgeyBnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlIH0gZnJvbSAnLi9zaWRlYmFyQ2hhdHMuaGVscGVycydcbmltcG9ydCB0eXBlIHsgU2lkZWJhckNoYXRNZW51U3VyZmFjZSwgU2lkZWJhclNlY3Rpb25LZXkgfSBmcm9tICcuL3NpZGViYXJDaGF0cy50eXBlcydcblxuY29uc3QgYWN0aW9ucyA9IHtcbiAgZWRpdDogKHByb3BzOiBhbnkpID0+IDxFZGl0UXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxuICBkZWxldGU6IChwcm9wczogYW55KSA9PiA8RGVsZXRlUXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhckhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgc2VjdGlvbktleSxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIGNoYXRNZW51U3VyZmFjZSxcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBzZWN0aW9uS2V5OiBTaWRlYmFyU2VjdGlvbktleVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIGNoYXRNZW51U3VyZmFjZTogU2lkZWJhckNoYXRNZW51U3VyZmFjZVxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3Qgc3VidGl0bGVSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBrZWJhYlJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgbWVudVBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFttZW51Q29vcmRzLCBzZXRNZW51Q29vcmRzXSA9IHVzZVN0YXRlPHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qgc3VidGl0bGUgPSBnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlKGNoYXQsIHNlY3Rpb25LZXkpXG4gIGNvbnN0IHN1YnRpdGxlVHJpbW1lZCA9IHN1YnRpdGxlLnRyaW0oKVxuXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgYWdlbnRTdWJ0aXRsZUxpbmUgPVxuICAgIHNlY3Rpb25LZXkgPT09ICdhZ2VudHNCeUNvbXBhbnknICYmXG4gICAgKHN1YnRpdGxlVHJpbW1lZCB8fCAoY2hhdC5lbW9qaSAhPSBudWxsICYmIGNoYXQuZW1vamkgIT09ICcnKSB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJylcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBTdWJ0aXRsZSB9ID0gdXNlUmVzaXplTGlzdGVuZXIoc3VidGl0bGVSZWYsIFtcbiAgICBzdWJ0aXRsZVRyaW1tZWQsXG4gICAgc2VjdGlvbktleSxcbiAgICBjaGF0LmVtb2ppLFxuICAgIGNoYXQuYWdlbnRUeXBlLFxuICBdKVxuXG4gIGNvbnN0IHN1YnRpdGxlVG9vbHRpcFRpdGxlID1cbiAgICBzZWN0aW9uS2V5ID09PSAnYWdlbnRzQnlDb21wYW55JyAmJiBjaGF0LmVtb2ppICYmIGNoYXQuYWdlbnRUeXBlICE9PSAnY2xvbmUnXG4gICAgICA/IGAke2NoYXQuZW1vaml9ICR7c3VidGl0bGVUcmltbWVkfWAudHJpbSgpXG4gICAgICA6IHN1YnRpdGxlVHJpbW1lZFxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc01vZGFsT3BlbiB8fCBhY3Rpb24pIHtcbiAgICAgIHNldE1lbnVDb29yZHMobnVsbClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgYW5jaG9yID0ga2ViYWJSZWYuY3VycmVudFxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCByID0gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBtZW51RWwgPSBtZW51UG9wb3ZlclJlZi5jdXJyZW50XG4gICAgICBjb25zdCB3ID0gTWF0aC5tYXgobWVudUVsPy5vZmZzZXRXaWR0aCA/PyAxMjQsIDEyNClcbiAgICAgIGNvbnN0IGggPSBtZW51RWw/Lm9mZnNldEhlaWdodCA/PyA3MlxuICAgICAgY29uc3QgZ2FwID0gNFxuICAgICAgY29uc3QgcGFkID0gOFxuICAgICAgbGV0IHRvcCA9IHIuYm90dG9tICsgZ2FwXG4gICAgICBsZXQgbGVmdCA9IHIucmlnaHQgLSB3XG4gICAgICBpZiAobGVmdCA8IHBhZCkgbGVmdCA9IHBhZFxuICAgICAgaWYgKGxlZnQgKyB3ID4gd2luZG93LmlubmVyV2lkdGggLSBwYWQpIHtcbiAgICAgICAgbGVmdCA9IE1hdGgubWF4KHBhZCwgd2luZG93LmlubmVyV2lkdGggLSB3IC0gcGFkKVxuICAgICAgfVxuICAgICAgaWYgKHRvcCArIGggPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwYWQpIHtcbiAgICAgICAgdG9wID0gci50b3AgLSBoIC0gZ2FwXG4gICAgICB9XG4gICAgICBpZiAodG9wIDwgcGFkKSB0b3AgPSBwYWRcbiAgICAgIHNldE1lbnVDb29yZHMoeyB0b3AsIGxlZnQgfSlcbiAgICB9XG5cbiAgICBwbGFjZSgpXG4gICAgY29uc3QgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHBsYWNlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBwbGFjZSlcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBwbGFjZSwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHBsYWNlKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcGxhY2UsIHRydWUpXG4gICAgICBzZXRNZW51Q29vcmRzKG51bGwpXG4gICAgfVxuICB9LCBbaXNNb2RhbE9wZW4sIGFjdGlvbl0pXG5cbiAgY29uc3QgbWVudVBvcnRhbCA9XG4gICAgaXNNb2RhbE9wZW4gJiZcbiAgICAhYWN0aW9uICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0xIQ0NoYXRNZW51UG9wb3ZlclBvcnRhbFxuICAgICAgICByZWY9e21lbnVQb3BvdmVyUmVmfVxuICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICB7Li4uKGNoYXRNZW51U3VyZmFjZSA9PT0gJ3NlY3Rpb25Nb2RhbCcgPyB7ICdkYXRhLXNlY3Rpb24tbW9kYWwtY29udGFpbmVyJzogdHJ1ZSB9IDoge30pfVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAgbWVudUNvb3Jkc1xuICAgICAgICAgICAgPyB7IHRvcDogbWVudUNvb3Jkcy50b3AsIGxlZnQ6IG1lbnVDb29yZHMubGVmdCB9XG4gICAgICAgICAgICA6IHsgdG9wOiAtOTk5OSwgbGVmdDogLTk5OTksIHZpc2liaWxpdHk6ICdoaWRkZW4nIH1cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICA8T3B0aW9uSXRlbSBrZXk9e2xhYmVsfSBsYWJlbD17bGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfSBJY29uPXtJY29ufSBldmVudEtleT17ZXZlbnRLZXl9IC8+XG4gICAgICAgICkpfVxuICAgICAgPC9TQ0xIQ0NoYXRNZW51UG9wb3ZlclBvcnRhbD4sXG4gICAgICBkb2N1bWVudC5ib2R5XG4gICAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblJvb3RcbiAgICAgICAgJGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgIGRhdGEtbWVudS1vcGVuPXtpc01vZGFsT3BlbiA/ICd0cnVlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgPlxuICAgICAgICA8U0NMSENDb252ZXJzYXRpb25Ub3BSb3c+XG4gICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uSWNvblNsb3QgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICA8Q2hhdENvbnZlcnNhdGlvbiB3aWR0aD17MTV9IGhlaWdodD17MTV9IGNvbG9yPVwiIzIwMjAxZlwiIC8+XG4gICAgICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90PlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGNoYXQudGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENDb252ZXJzYXRpb25UaXRsZSByZWY9e3RleHRSZWZ9PntjaGF0LnRpdGxlIHx8IHQoJ2NvbnZlcnNhdGlvbnMuZW1wdHlMYWJlbCcpfTwvU0NMSENDb252ZXJzYXRpb25UaXRsZT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uS2ViYWIgcmVmPXtrZWJhYlJlZn0gZGF0YS1tb2RhbC1jb250YWluZXI+XG4gICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICA8L1NDTEhDQ29udmVyc2F0aW9uS2ViYWI+XG4gICAgICAgIDwvU0NMSENDb252ZXJzYXRpb25Ub3BSb3c+XG4gICAgICAgIHthZ2VudFN1YnRpdGxlTGluZSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwU3VidGl0bGUgPyBzdWJ0aXRsZVRvb2x0aXBUaXRsZSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93PlxuICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlRW1vamkgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZUVtb2ppPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgIT09ICdjbG9uZScgJiYgY2hhdC5lbW9qaSAmJiAoXG4gICAgICAgICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaSBhcmlhLWhpZGRlbj57Y2hhdC5lbW9qaX08L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3N1YnRpdGxlVHJpbW1lZCA/IChcbiAgICAgICAgICAgICAgICA8U0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZSByZWY9e3N1YnRpdGxlUmVmfSAkaW5GbGV4Um93PlxuICAgICAgICAgICAgICAgICAge3N1YnRpdGxlVHJpbW1lZH1cbiAgICAgICAgICAgICAgICA8L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFhZ2VudFN1YnRpdGxlTGluZSAmJiBzdWJ0aXRsZVRyaW1tZWQgJiYgKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcFN1YnRpdGxlID8gc3VidGl0bGVUcmltbWVkIDogJyd9PlxuICAgICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUgcmVmPXtzdWJ0aXRsZVJlZn0+e3N1YnRpdGxlVHJpbW1lZH08L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApfVxuICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvblJvb3Q+XG4gICAgICB7bWVudVBvcnRhbH1cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLFNBQVNBLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUN6RCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLE9BQU8sUUFBUSw4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
@@ -1,70 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { MAX_VISIBLE_CHATS_PER_SECTION, SIDEBAR_SECTION_ORDER } from './sidebarChats.types';
3
- export function abbreviateSpecialistInAgentName(agentName) {
4
- if (!agentName || typeof agentName !== 'string') return agentName;
5
- return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
6
- }
7
- export function groupChatsBySidebarSection(chats) {
8
- var initialGroups = {
9
- clients: [],
10
- projects: [],
11
- agentsByCompany: []
12
- };
13
- chats.forEach(function (chat) {
14
- var _chatData$agent;
15
- var chatData = chat;
16
- var hasClientMetadata = chat.clientId != null || !!chat.clientName;
17
- var hasProjectMetadata = chat.projectId != null || !!chat.projectName;
18
- var isCustomAgentSession = chatData.agentType === 'custom';
19
- /** Temporal: clone cuyo nombre indica Maiaker/marketplace (mismo criterio que ChatAIMessages / ChatFooter). */
20
- var isCloneMarketplaceSession = chatData.agentType === 'clone' && /(maiaker|marketplace)/i.test(String((_chatData$agent = chatData.agent) !== null && _chatData$agent !== void 0 ? _chatData$agent : ''));
21
- if (hasProjectMetadata) {
22
- initialGroups.projects.push(chat);
23
- return;
24
- }
25
- if (hasClientMetadata && !hasProjectMetadata) {
26
- initialGroups.clients.push(chat);
27
- return;
28
- }
29
- if (isCustomAgentSession || isCloneMarketplaceSession) {
30
- initialGroups.agentsByCompany.push(chat);
31
- }
32
- });
33
- return initialGroups;
34
- }
35
-
36
- /** Subtítulo de la fila según la sección: proyecto, cliente o nombre del agente. */
37
- export function getSidebarHistorySubtitle(chat, sectionKey) {
38
- var _chat$projectName, _chat$clientName, _chat$agent2;
39
- switch (sectionKey) {
40
- case 'projects':
41
- return (_chat$projectName = chat.projectName) !== null && _chat$projectName !== void 0 ? _chat$projectName : '';
42
- case 'clients':
43
- return (_chat$clientName = chat.clientName) !== null && _chat$clientName !== void 0 ? _chat$clientName : '';
44
- case 'agentsByCompany':
45
- if (chat.agentType === 'clone') {
46
- var _chat$agent;
47
- return abbreviateSpecialistInAgentName((_chat$agent = chat.agent) !== null && _chat$agent !== void 0 ? _chat$agent : '');
48
- }
49
- return (_chat$agent2 = chat.agent) !== null && _chat$agent2 !== void 0 ? _chat$agent2 : '';
50
- default:
51
- return '';
52
- }
53
- }
54
- export function buildSidebarSections(groupedChats, getSectionLabel, /** `has_more` del API v2 por grupo; permite “Ver más” aunque solo haya 3 ítems en la primera página. */
55
- sessionsGroupHasMore) {
56
- return SIDEBAR_SECTION_ORDER.map(function (sectionKey) {
57
- var sectionChats = groupedChats[sectionKey];
58
- if (!sectionChats.length) {
59
- return null;
60
- }
61
- return {
62
- key: sectionKey,
63
- label: getSectionLabel(sectionKey),
64
- chats: sectionChats,
65
- visibleChats: sectionChats.slice(0, MAX_VISIBLE_CHATS_PER_SECTION),
66
- hasMore: sectionChats.length > MAX_VISIBLE_CHATS_PER_SECTION || sessionsGroupHasMore[sectionKey]
67
- };
68
- }).filter(Boolean);
69
- }
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiIsIlNJREVCQVJfU0VDVElPTl9PUkRFUiIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiZ3JvdXBDaGF0c0J5U2lkZWJhclNlY3Rpb24iLCJjaGF0cyIsImluaXRpYWxHcm91cHMiLCJjbGllbnRzIiwicHJvamVjdHMiLCJhZ2VudHNCeUNvbXBhbnkiLCJmb3JFYWNoIiwiY2hhdCIsIl9jaGF0RGF0YSRhZ2VudCIsImNoYXREYXRhIiwiaGFzQ2xpZW50TWV0YWRhdGEiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJoYXNQcm9qZWN0TWV0YWRhdGEiLCJwcm9qZWN0SWQiLCJwcm9qZWN0TmFtZSIsImlzQ3VzdG9tQWdlbnRTZXNzaW9uIiwiYWdlbnRUeXBlIiwiaXNDbG9uZU1hcmtldHBsYWNlU2Vzc2lvbiIsInRlc3QiLCJTdHJpbmciLCJhZ2VudCIsInB1c2giLCJnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlIiwic2VjdGlvbktleSIsIl9jaGF0JHByb2plY3ROYW1lIiwiX2NoYXQkY2xpZW50TmFtZSIsIl9jaGF0JGFnZW50MiIsIl9jaGF0JGFnZW50IiwiYnVpbGRTaWRlYmFyU2VjdGlvbnMiLCJncm91cGVkQ2hhdHMiLCJnZXRTZWN0aW9uTGFiZWwiLCJzZXNzaW9uc0dyb3VwSGFzTW9yZSIsIm1hcCIsInNlY3Rpb25DaGF0cyIsImxlbmd0aCIsImtleSIsImxhYmVsIiwidmlzaWJsZUNoYXRzIiwic2xpY2UiLCJoYXNNb3JlIiwiZmlsdGVyIiwiQm9vbGVhbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL3NpZGViYXJDaGF0cy5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIE1BWF9WSVNJQkxFX0NIQVRTX1BFUl9TRUNUSU9OLFxuICBTSURFQkFSX1NFQ1RJT05fT1JERVIsXG4gIHR5cGUgU2lkZWJhckNoYXRzU2VjdGlvbk1vZGVsLFxuICB0eXBlIFNpZGViYXJTZWN0aW9uS2V5LFxufSBmcm9tICcuL3NpZGViYXJDaGF0cy50eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUoYWdlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWFnZW50TmFtZSB8fCB0eXBlb2YgYWdlbnROYW1lICE9PSAnc3RyaW5nJykgcmV0dXJuIGFnZW50TmFtZVxuICByZXR1cm4gYWdlbnROYW1lLnJlcGxhY2UoL1xcYihlc3BlY2lhbGlzdGF8ZXNwZWNpYWxpc3QpXFxiL2dpLCAnRXNwLicpLnJlcGxhY2UoL1xcYnNwZWNpYWxpc3RcXGIvZ2ksICdTcGVjLicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cENoYXRzQnlTaWRlYmFyU2VjdGlvbihjaGF0czogYW55W10pOiBSZWNvcmQ8U2lkZWJhclNlY3Rpb25LZXksIGFueVtdPiB7XG4gIGNvbnN0IGluaXRpYWxHcm91cHM6IFJlY29yZDxTaWRlYmFyU2VjdGlvbktleSwgYW55W10+ID0ge1xuICAgIGNsaWVudHM6IFtdLFxuICAgIHByb2plY3RzOiBbXSxcbiAgICBhZ2VudHNCeUNvbXBhbnk6IFtdLFxuICB9XG5cbiAgY2hhdHMuZm9yRWFjaChjaGF0ID0+IHtcbiAgICBjb25zdCBjaGF0RGF0YSA9IGNoYXQgYXMgYW55XG4gICAgY29uc3QgaGFzQ2xpZW50TWV0YWRhdGEgPSBjaGF0LmNsaWVudElkICE9IG51bGwgfHwgISFjaGF0LmNsaWVudE5hbWVcbiAgICBjb25zdCBoYXNQcm9qZWN0TWV0YWRhdGEgPSBjaGF0LnByb2plY3RJZCAhPSBudWxsIHx8ICEhY2hhdC5wcm9qZWN0TmFtZVxuICAgIGNvbnN0IGlzQ3VzdG9tQWdlbnRTZXNzaW9uID0gY2hhdERhdGEuYWdlbnRUeXBlID09PSAnY3VzdG9tJ1xuICAgIC8qKiBUZW1wb3JhbDogY2xvbmUgY3V5byBub21icmUgaW5kaWNhIE1haWFrZXIvbWFya2V0cGxhY2UgKG1pc21vIGNyaXRlcmlvIHF1ZSBDaGF0QUlNZXNzYWdlcyAvIENoYXRGb290ZXIpLiAqL1xuICAgIGNvbnN0IGlzQ2xvbmVNYXJrZXRwbGFjZVNlc3Npb24gPVxuICAgICAgY2hhdERhdGEuYWdlbnRUeXBlID09PSAnY2xvbmUnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KFN0cmluZyhjaGF0RGF0YS5hZ2VudCA/PyAnJykpXG5cbiAgICBpZiAoaGFzUHJvamVjdE1ldGFkYXRhKSB7XG4gICAgICBpbml0aWFsR3JvdXBzLnByb2plY3RzLnB1c2goY2hhdClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChoYXNDbGllbnRNZXRhZGF0YSAmJiAhaGFzUHJvamVjdE1ldGFkYXRhKSB7XG4gICAgICBpbml0aWFsR3JvdXBzLmNsaWVudHMucHVzaChjaGF0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzQ3VzdG9tQWdlbnRTZXNzaW9uIHx8IGlzQ2xvbmVNYXJrZXRwbGFjZVNlc3Npb24pIHtcbiAgICAgIGluaXRpYWxHcm91cHMuYWdlbnRzQnlDb21wYW55LnB1c2goY2hhdClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGluaXRpYWxHcm91cHNcbn1cblxuLyoqIFN1YnTDrXR1bG8gZGUgbGEgZmlsYSBzZWfDum4gbGEgc2VjY2nDs246IHByb3llY3RvLCBjbGllbnRlIG8gbm9tYnJlIGRlbCBhZ2VudGUuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lkZWJhckhpc3RvcnlTdWJ0aXRsZShjaGF0OiBhbnksIHNlY3Rpb25LZXk6IFNpZGViYXJTZWN0aW9uS2V5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChzZWN0aW9uS2V5KSB7XG4gICAgY2FzZSAncHJvamVjdHMnOlxuICAgICAgcmV0dXJuIGNoYXQucHJvamVjdE5hbWUgPz8gJydcbiAgICBjYXNlICdjbGllbnRzJzpcbiAgICAgIHJldHVybiBjaGF0LmNsaWVudE5hbWUgPz8gJydcbiAgICBjYXNlICdhZ2VudHNCeUNvbXBhbnknOlxuICAgICAgaWYgKGNoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnKSB7XG4gICAgICAgIHJldHVybiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQgPz8gJycpXG4gICAgICB9XG4gICAgICByZXR1cm4gY2hhdC5hZ2VudCA/PyAnJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJydcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaWRlYmFyU2VjdGlvbnMoXG4gIGdyb3VwZWRDaGF0czogUmVjb3JkPFNpZGViYXJTZWN0aW9uS2V5LCBhbnlbXT4sXG4gIGdldFNlY3Rpb25MYWJlbDogKHNlY3Rpb25LZXk6IFNpZGViYXJTZWN0aW9uS2V5KSA9PiBzdHJpbmcsXG4gIC8qKiBgaGFzX21vcmVgIGRlbCBBUEkgdjIgcG9yIGdydXBvOyBwZXJtaXRlIOKAnFZlciBtw6Fz4oCdIGF1bnF1ZSBzb2xvIGhheWEgMyDDrXRlbXMgZW4gbGEgcHJpbWVyYSBww6FnaW5hLiAqL1xuICBzZXNzaW9uc0dyb3VwSGFzTW9yZTogUmVjb3JkPFNpZGViYXJTZWN0aW9uS2V5LCBib29sZWFuPlxuKTogU2lkZWJhckNoYXRzU2VjdGlvbk1vZGVsW10ge1xuICByZXR1cm4gU0lERUJBUl9TRUNUSU9OX09SREVSLm1hcChzZWN0aW9uS2V5ID0+IHtcbiAgICBjb25zdCBzZWN0aW9uQ2hhdHMgPSBncm91cGVkQ2hhdHNbc2VjdGlvbktleV1cbiAgICBpZiAoIXNlY3Rpb25DaGF0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBrZXk6IHNlY3Rpb25LZXksXG4gICAgICBsYWJlbDogZ2V0U2VjdGlvbkxhYmVsKHNlY3Rpb25LZXkpLFxuICAgICAgY2hhdHM6IHNlY3Rpb25DaGF0cyxcbiAgICAgIHZpc2libGVDaGF0czogc2VjdGlvbkNoYXRzLnNsaWNlKDAsIE1BWF9WSVNJQkxFX0NIQVRTX1BFUl9TRUNUSU9OKSxcbiAgICAgIGhhc01vcmU6IHNlY3Rpb25DaGF0cy5sZW5ndGggPiBNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiB8fCBzZXNzaW9uc0dyb3VwSGFzTW9yZVtzZWN0aW9uS2V5XSxcbiAgICB9XG4gIH0pLmZpbHRlcihCb29sZWFuKSBhcyBTaWRlYmFyQ2hhdHNTZWN0aW9uTW9kZWxbXVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQ0VBLDZCQUE2QixFQUM3QkMscUJBQXFCLFFBR2hCLHNCQUFzQjtBQUU3QixPQUFPLFNBQVNDLCtCQUErQkEsQ0FBQ0MsU0FBaUIsRUFBVTtFQUN6RSxJQUFJLENBQUNBLFNBQVMsSUFBSSxPQUFPQSxTQUFTLEtBQUssUUFBUSxFQUFFLE9BQU9BLFNBQVM7RUFDakUsT0FBT0EsU0FBUyxDQUFDQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsTUFBTSxDQUFDLENBQUNBLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7QUFDM0c7QUFFQSxPQUFPLFNBQVNDLDBCQUEwQkEsQ0FBQ0MsS0FBWSxFQUFvQztFQUN6RixJQUFNQyxhQUErQyxHQUFHO0lBQ3REQyxPQUFPLEVBQUUsRUFBRTtJQUNYQyxRQUFRLEVBQUUsRUFBRTtJQUNaQyxlQUFlLEVBQUU7RUFDbkIsQ0FBQztFQUVESixLQUFLLENBQUNLLE9BQU8sQ0FBQyxVQUFBQyxJQUFJLEVBQUk7SUFBQSxJQUFBQyxlQUFBO0lBQ3BCLElBQU1DLFFBQVEsR0FBR0YsSUFBVztJQUM1QixJQUFNRyxpQkFBaUIsR0FBR0gsSUFBSSxDQUFDSSxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQ0osSUFBSSxDQUFDSyxVQUFVO0lBQ3BFLElBQU1DLGtCQUFrQixHQUFHTixJQUFJLENBQUNPLFNBQVMsSUFBSSxJQUFJLElB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
@@ -1,14 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- export var MAX_VISIBLE_CHATS_PER_SECTION = 3;
4
-
5
- /** Orden fijo de secciones en el sidebar. */
6
- export var SIDEBAR_SECTION_ORDER = ['clients', 'projects', 'agentsByCompany'];
7
-
8
- /** Claves i18n bajo `conversations.sections.*` (namespace chat AI). */
9
- export var SIDEBAR_SECTION_TRANSLATION_KEYS = {
10
- clients: 'conversations.sections.clients',
11
- projects: 'conversations.sections.projects',
12
- agentsByCompany: 'conversations.sections.agentsByCompany'
13
- };
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiIsIlNJREVCQVJfU0VDVElPTl9PUkRFUiIsIlNJREVCQVJfU0VDVElPTl9UUkFOU0xBVElPTl9LRVlTIiwiY2xpZW50cyIsInByb2plY3RzIiwiYWdlbnRzQnlDb21wYW55Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvc2lkZWJhckNoYXRzLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZXhwb3J0IHR5cGUgU2lkZWJhckNoYXRNZW51U3VyZmFjZSA9ICdzaWRlYmFyJyB8ICdzZWN0aW9uTW9kYWwnXG5cbmV4cG9ydCB0eXBlIFNpZGViYXJDaGF0TWVudVN0YXRlID0ge1xuICBjaGF0SWQ6IHN0cmluZ1xuICBzdXJmYWNlOiBTaWRlYmFyQ2hhdE1lbnVTdXJmYWNlXG59IHwgbnVsbFxuXG5leHBvcnQgdHlwZSBTaWRlYmFyU2VjdGlvbktleSA9ICdjbGllbnRzJyB8ICdwcm9qZWN0cycgfCAnYWdlbnRzQnlDb21wYW55J1xuXG5leHBvcnQgY29uc3QgTUFYX1ZJU0lCTEVfQ0hBVFNfUEVSX1NFQ1RJT04gPSAzXG5cbi8qKiBPcmRlbiBmaWpvIGRlIHNlY2Npb25lcyBlbiBlbCBzaWRlYmFyLiAqL1xuZXhwb3J0IGNvbnN0IFNJREVCQVJfU0VDVElPTl9PUkRFUjogU2lkZWJhclNlY3Rpb25LZXlbXSA9IFsnY2xpZW50cycsICdwcm9qZWN0cycsICdhZ2VudHNCeUNvbXBhbnknXVxuXG4vKiogQ2xhdmVzIGkxOG4gYmFqbyBgY29udmVyc2F0aW9ucy5zZWN0aW9ucy4qYCAobmFtZXNwYWNlIGNoYXQgQUkpLiAqL1xuZXhwb3J0IGNvbnN0IFNJREVCQVJfU0VDVElPTl9UUkFOU0xBVElPTl9LRVlTOiBSZWNvcmQ8U2lkZWJhclNlY3Rpb25LZXksIHN0cmluZz4gPSB7XG4gIGNsaWVudHM6ICdjb252ZXJzYXRpb25zLnNlY3Rpb25zLmNsaWVudHMnLFxuICBwcm9qZWN0czogJ2NvbnZlcnNhdGlvbnMuc2VjdGlvbnMucHJvamVjdHMnLFxuICBhZ2VudHNCeUNvbXBhbnk6ICdjb252ZXJzYXRpb25zLnNlY3Rpb25zLmFnZW50c0J5Q29tcGFueScsXG59XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJDaGF0c1NlY3Rpb25Nb2RlbCA9IHtcbiAga2V5OiBTaWRlYmFyU2VjdGlvbktleVxuICBsYWJlbDogc3RyaW5nXG4gIGNoYXRzOiBhbnlbXVxuICB2aXNpYmxlQ2hhdHM6IGFueVtdXG4gIGhhc01vcmU6IGJvb2xlYW5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBV0EsT0FBTyxJQUFNQSw2QkFBNkIsR0FBRyxDQUFDOztBQUU5QztBQUNBLE9BQU8sSUFBTUMscUJBQTBDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDOztBQUVwRztBQUNBLE9BQU8sSUFBTUMsZ0NBQW1FLEdBQUc7RUFDakZDLE9BQU8sRUFBRSxnQ0FBZ0M7RUFDekNDLFFBQVEsRUFBRSxpQ0FBaUM7RUFDM0NDLGVBQWUsRUFBRTtBQUNuQixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,173 +0,0 @@
1
- /**
2
- * Usuario mínimo para levantar la app local (`webpack-dev-server`) con `UserProvider`.
3
- * No usar en producción ni en tests; el host real inyecta el usuario desde COR.
4
- */
5
-
6
- export var devAppUser = {
7
- info: {
8
- id: 30573,
9
- first_name: 'Charles',
10
- last_name: 'Babbage',
11
- picture: null,
12
- remaining_hours: 16,
13
- company: 'COR',
14
- company_id: 10564,
15
- lang: 'es',
16
- email: 'cb@projectcor.com',
17
- type: '1',
18
- user_type: 'internal',
19
- role: 'C-Level',
20
- role_id: 1,
21
- companies: [{
22
- id: 2336,
23
- name: 'DEV',
24
- subdomain: 'dev',
25
- user_id: 15,
26
- picture: 'user.png',
27
- users_q: 566
28
- }, {
29
- id: 60,
30
- name: 'COR',
31
- subdomain: 'cor',
32
- user_id: 15,
33
- picture: 'user.png',
34
- users_q: 41
35
- }],
36
- company_segment: null,
37
- daily_hours: 0,
38
- monthly_hours: 0,
39
- first_user: false,
40
- leaves: null,
41
- user_created_at: '2020-01-13T19:03:13+00:00',
42
- company_created_at: '2016-04-03T00:00:00+00:00',
43
- gmt: '-03:00',
44
- timezone: 'America/Buenos_Aires',
45
- implementer: false,
46
- company_users_q_paid: 41,
47
- company_users_q_available: 120,
48
- has_metrics_view: true,
49
- has_quotations_view: true,
50
- has_quotations_create: true
51
- },
52
- permissions: {
53
- quotations: {
54
- view: true,
55
- edit: false,
56
- create: false,
57
- "delete": true
58
- },
59
- proyectos: {
60
- archive: true,
61
- view: true,
62
- edit: true,
63
- create: true,
64
- "delete": true,
65
- deleteFile: true
66
- },
67
- tasks: {
68
- archive: true,
69
- view: true,
70
- edit: true,
71
- create: true,
72
- "delete": true,
73
- viewUserCapacity: true,
74
- viewHours: true,
75
- deleteFile: true
76
- },
77
- tasks_deadline: {
78
- view: false,
79
- edit: true,
80
- create: true,
81
- "delete": true
82
- },
83
- clients: {
84
- view: true,
85
- edit: true,
86
- create: true,
87
- "delete": true
88
- },
89
- users: {
90
- view: true,
91
- edit: true,
92
- create: true,
93
- "delete": true
94
- },
95
- leaves: {
96
- view: true,
97
- edit: true,
98
- create: true,
99
- "delete": true
100
- },
101
- project_gantt: {
102
- view: true,
103
- edit: false,
104
- create: false,
105
- "delete": false
106
- },
107
- settings: {
108
- view: true,
109
- edit: true,
110
- create: false,
111
- "delete": false
112
- },
113
- passwords: {
114
- view: true,
115
- edit: true,
116
- create: true,
117
- "delete": true
118
- },
119
- notifications: {
120
- view: true,
121
- edit: true,
122
- create: false,
123
- "delete": false
124
- },
125
- hours: {
126
- view: true,
127
- edit: true,
128
- create: true,
129
- "delete": true
130
- },
131
- project_templates: {
132
- view: true,
133
- edit: true,
134
- create: true,
135
- "delete": true
136
- },
137
- metrics: {
138
- view: true,
139
- edit: false,
140
- create: false,
141
- "delete": false
142
- },
143
- dashboards: {
144
- view: true,
145
- edit: false,
146
- create: false,
147
- "delete": false
148
- },
149
- gantt: {
150
- view: true,
151
- edit: true,
152
- create: true,
153
- "delete": false
154
- },
155
- salary: {
156
- view: true,
157
- edit: false,
158
- create: true,
159
- "delete": false
160
- },
161
- ai_agents: {
162
- view: true,
163
- create: true,
164
- edit: true,
165
- "delete": true
166
- }
167
- },
168
- settings: {
169
- allow_in_design_status: false,
170
- allow_in_review_status: false
171
- }
172
- };
173
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXZBcHBVc2VyIiwiaW5mbyIsImlkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsInBpY3R1cmUiLCJyZW1haW5pbmdfaG91cnMiLCJjb21wYW55IiwiY29tcGFueV9pZCIsImxhbmciLCJlbWFpbCIsInR5cGUiLCJ1c2VyX3R5cGUiLCJyb2xlIiwicm9sZV9pZCIsImNvbXBhbmllcyIsIm5hbWUiLCJzdWJkb21haW4iLCJ1c2VyX2lkIiwidXNlcnNfcSIsImNvbXBhbnlfc2VnbWVudCIsImRhaWx5X2hvdXJzIiwibW9udGhseV9ob3VycyIsImZpcnN0X3VzZXIiLCJsZWF2ZXMiLCJ1c2VyX2NyZWF0ZWRfYXQiLCJjb21wYW55X2NyZWF0ZWRfYXQiLCJnbXQiLCJ0aW1lem9uZSIsImltcGxlbWVudGVyIiwiY29tcGFueV91c2Vyc19xX3BhaWQiLCJjb21wYW55X3VzZXJzX3FfYXZhaWxhYmxlIiwiaGFzX21ldHJpY3NfdmlldyIsImhhc19xdW90YXRpb25zX3ZpZXciLCJoYXNfcXVvdGF0aW9uc19jcmVhdGUiLCJwZXJtaXNzaW9ucyIsInF1b3RhdGlvbnMiLCJ2aWV3IiwiZWRpdCIsImNyZWF0ZSIsInByb3llY3RvcyIsImFyY2hpdmUiLCJkZWxldGVGaWxlIiwidGFza3MiLCJ2aWV3VXNlckNhcGFjaXR5Iiwidmlld0hvdXJzIiwidGFza3NfZGVhZGxpbmUiLCJjbGllbnRzIiwidXNlcnMiLCJwcm9qZWN0X2dhbnR0Iiwic2V0dGluZ3MiLCJwYXNzd29yZHMiLCJub3RpZmljYXRpb25zIiwiaG91cnMiLCJwcm9qZWN0X3RlbXBsYXRlcyIsIm1ldHJpY3MiLCJkYXNoYm9hcmRzIiwiZ2FudHQiLCJzYWxhcnkiLCJhaV9hZ2VudHMiLCJhbGxvd19pbl9kZXNpZ25fc3RhdHVzIiwiYWxsb3dfaW5fcmV2aWV3X3N0YXR1cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXYvZml4dHVyZXMvZGV2VXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzdWFyaW8gbcOtbmltbyBwYXJhIGxldmFudGFyIGxhIGFwcCBsb2NhbCAoYHdlYnBhY2stZGV2LXNlcnZlcmApIGNvbiBgVXNlclByb3ZpZGVyYC5cbiAqIE5vIHVzYXIgZW4gcHJvZHVjY2nDs24gbmkgZW4gdGVzdHM7IGVsIGhvc3QgcmVhbCBpbnllY3RhIGVsIHVzdWFyaW8gZGVzZGUgQ09SLlxuICovXG5pbXBvcnQgeyBVc2VyUHJvcHMgfSBmcm9tICcuLi8uLi90eXBlcy91c2VyVHlwZS5kJ1xuXG5leHBvcnQgY29uc3QgZGV2QXBwVXNlcjogVXNlclByb3BzID0ge1xuICBpbmZvOiB7XG4gICAgaWQ6IDMwNTczLFxuICAgIGZpcnN0X25hbWU6ICdDaGFybGVzJyxcbiAgICBsYXN0X25hbWU6ICdCYWJiYWdlJyxcbiAgICBwaWN0dXJlOiBudWxsLFxuICAgIHJlbWFpbmluZ19ob3VyczogMTYsXG4gICAgY29tcGFueTogJ0NPUicsXG4gICAgY29tcGFueV9pZDogMTA1NjQsXG4gICAgbGFuZzogJ2VzJyxcbiAgICBlbWFpbDogJ2NiQHByb2plY3Rjb3IuY29tJyxcbiAgICB0eXBlOiAnMScsXG4gICAgdXNlcl90eXBlOiAnaW50ZXJuYWwnLFxuICAgIHJvbGU6ICdDLUxldmVsJyxcbiAgICByb2xlX2lkOiAxLFxuICAgIGNvbXBhbmllczogW1xuICAgICAge1xuICAgICAgICBpZDogMjMzNixcbiAgICAgICAgbmFtZTogJ0RFVicsXG4gICAgICAgIHN1YmRvbWFpbjogJ2RldicsXG4gICAgICAgIHVzZXJfaWQ6IDE1LFxuICAgICAgICBwaWN0dXJlOiAndXNlci5wbmcnLFxuICAgICAgICB1c2Vyc19xOiA1NjYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogNjAsXG4gICAgICAgIG5hbWU6ICdDT1InLFxuICAgICAgICBzdWJkb21haW46ICdjb3InLFxuICAgICAgICB1c2VyX2lkOiAxNSxcbiAgICAgICAgcGljdHVyZTogJ3VzZXIucG5nJyxcbiAgICAgICAgdXNlcnNfcTogNDEsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29tcGFueV9zZWdtZW50OiBudWxsLFxuICAgIGRhaWx5X2hvdXJzOiAwLFxuICAgIG1vbnRobHlfaG91cnM6IDAsXG4gICAgZmlyc3RfdXNlcjogZmFsc2UsXG4gICAgbGVhdmVzOiBudWxsLFxuICAgIHVzZXJfY3JlYXRlZF9hdDogJzIwMjAtMDEtMTNUMTk6MDM6MTMrMDA6MDAnLFxuICAgIGNvbXBhbnlfY3JlYXRlZF9hdDogJzIwMTYtMDQtMDNUMDA6MDA6MDArMDA6MDAnLFxuICAgIGdtdDogJy0wMzowMCcsXG4gICAgdGltZXpvbmU6ICdBbWVyaWNhL0J1ZW5vc19BaXJlcycsXG4gICAgaW1wbGVtZW50ZXI6IGZhbHNlLFxuICAgIGNvbXBhbnlfdXNlcnNfcV9wYWlkOiA0MSxcbiAgICBjb21wYW55X3VzZXJzX3FfYXZhaWxhYmxlOiAxMjAsXG4gICAgaGFzX21ldHJpY3NfdmlldzogdHJ1ZSxcbiAgICBoYXNfcXVvdGF0aW9uc192aWV3OiB0cnVlLFxuICAgIGhhc19xdW90YXRpb25zX2NyZWF0ZTogdHJ1ZSxcbiAgfSxcbiAgcGVybWlzc2lvbnM6IHtcbiAgICBxdW90YXRpb25zOiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogZmFsc2UsXG4gICAgICBjcmVhdGU6IGZhbHNlLFxuICAgICAgZGVsZXRlOiB0cnVlLFxuICAgIH0sXG4gICAgcHJveWVjdG9zOiB7XG4gICAgICBhcmNoaXZlOiB0cnVlLFxuICAgICAgdmlldzogdHJ1ZSxcbiAgICAgIGVkaXQ6IHRydWUsXG4gICAgICBjcmVhdGU6IHRydWUsXG4gICAgICBkZWxldGU6IHRydWUsXG4gICAgICBkZWxldGVGaWxlOiB0cnVlLFxuICAgIH0sXG4gICAgdGFza3M6IHtcbiAgICAgIGFyY2hpdmU6IHRydWUsXG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgIHZpZXdVc2VyQ2FwYWNpdHk6IHRydWUsXG4gICAgICB2aWV3SG91cnM6IHRydWUsXG4gICAgICBkZWxldGVGaWxlOiB0cnVlLFxuICAgIH0sXG4gICAgdGFza3NfZGVhZGxpbmU6IHtcbiAgICAgIHZpZXc6IGZhbHNlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIGNsaWVudHM6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgZGVsZXRlOiB0cnVlLFxuICAgIH0sXG4gICAgdXNlcnM6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgZGVsZXRlOiB0cnVlLFxuICAgIH0sXG4gICAgbGVhdmVzOiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIHByb2plY3RfZ2FudHQ6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiBmYWxzZSxcbiAgICAgIGNyZWF0ZTogZmFsc2UsXG4gICAgICBkZWxldGU6IGZhbHNlLFxuICAgIH0sXG4gICAgc2V0dGluZ3M6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY3JlYXRlOiBmYWxzZSxcbiAgICAgIGRlbGV0ZTogZmFsc2UsXG4gICAgfSxcbiAgICBwYXNzd29yZHM6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgZGVsZXRlOiB0cnVlLFxuICAgIH0sXG4gICAgbm90aWZpY2F0aW9uczoge1xuICAgICAgdmlldzogdHJ1ZSxcbiAgICAgIGVkaXQ6IHRydWUsXG4gICAgICBjcmVhdGU6IGZhbHNlLFxuICAgICAgZGVsZXRlOiBmYWxzZSxcbiAgICB9LFxuICAgIGhvdXJzOiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIHByb2plY3RfdGVtcGxhdGVzOiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNyZWF0ZTogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIG1ldHJpY3M6IHtcbiAgICAgIHZpZXc6IHRydWUsXG4gICAgICBlZGl0OiBmYWxzZSxcbiAgICAgIGNyZWF0ZTogZmFsc2UsXG4gICAgICBkZWxldGU6IGZhbHNlLFxuICAgIH0sXG4gICAgZGFzaGJvYXJkczoge1xuICAgICAgdmlldzogdHJ1ZSxcbiAgICAgIGVkaXQ6IGZhbHNlLFxuICAgICAgY3JlYXRlOiBmYWxzZSxcbiAgICAgIGRlbGV0ZTogZmFsc2UsXG4gICAgfSxcbiAgICBnYW50dDoge1xuICAgICAgdmlldzogdHJ1ZSxcbiAgICAgIGVkaXQ6IHRydWUsXG4gICAgICBjcmVhdGU6IHRydWUsXG4gICAgICBkZWxldGU6IGZhbHNlLFxuICAgIH0sXG4gICAgc2FsYXJ5OiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgZWRpdDogZmFsc2UsXG4gICAgICBjcmVhdGU6IHRydWUsXG4gICAgICBkZWxldGU6IGZhbHNlLFxuICAgIH0sXG4gICAgYWlfYWdlbnRzOiB7XG4gICAgICB2aWV3OiB0cnVlLFxuICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBzZXR0aW5nczoge1xuICAgIGFsbG93X2luX2Rlc2lnbl9zdGF0dXM6IGZhbHNlLFxuICAgIGFsbG93X2luX3Jldmlld19zdGF0dXM6IGZhbHNlLFxuICB9LFxufVxuIl0sIm1hcHBp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