@projectcor/maia-components 2.35.3-0 → 2.35.4-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +6 -2
  3. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +135 -0
  4. package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
  5. package/lib/components/atoms/Chip/Chip.spec.js +32 -0
  6. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
  7. package/lib/components/atoms/Fade/Fade.spec.js +31 -0
  8. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
  9. package/lib/components/atoms/MAIAInput/MAIAInput.js +45 -3
  10. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +283 -0
  11. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +68 -0
  12. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
  13. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
  14. package/lib/components/atoms/Switch/Switch.spec.js +41 -0
  15. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
  16. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
  17. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
  18. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
  19. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +20 -5
  20. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
  21. package/lib/components/molecules/ChatFooter/ChatFooter.js +13 -1
  22. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +105 -0
  23. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
  24. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
  25. package/lib/components/molecules/Sidebar/Sidebar.js +9 -3
  26. package/lib/components/molecules/Sidebar/Sidebar.spec.js +183 -0
  27. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +12 -7
  28. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
  29. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +66 -7
  30. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +293 -0
  31. package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
  32. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
  33. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
  34. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
  35. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
  36. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
  37. package/lib/hooks/useCaretPosition.spec.js +58 -0
  38. package/lib/hooks/useDebounce.spec.js +42 -0
  39. package/lib/hooks/useEvent.js +15 -2
  40. package/lib/hooks/useEvent.spec.js +40 -0
  41. package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
  42. package/lib/hooks/useModal/useModal.spec.js +73 -0
  43. package/lib/hooks/useResize.spec.js +37 -0
  44. package/lib/hooks/useSkillsCatalog.spec.js +88 -0
  45. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
  46. package/lib/hooks/useT.spec.js +20 -0
  47. package/lib/hooks/useToggle.spec.js +33 -0
  48. package/lib/services/maia/Access/updateAccess.spec.js +108 -0
  49. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
  50. package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
  51. package/lib/services/maia/Agents/createAgent.spec.js +55 -0
  52. package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
  53. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
  54. package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
  55. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
  56. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
  57. package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
  58. package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
  59. package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
  60. package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
  61. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  62. package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
  63. package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
  64. package/lib/services/maia/Chats/patchChat.spec.js +41 -0
  65. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
  66. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
  67. package/lib/services/maia/Knowledge/delete.spec.js +45 -0
  68. package/lib/services/maia/Knowledge/download.spec.js +78 -0
  69. package/lib/services/maia/Knowledge/save.spec.js +58 -0
  70. package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
  71. package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
  72. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
  73. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
  74. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
  75. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
  76. package/lib/services/maia/Skills/createSkill.spec.js +68 -0
  77. package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
  78. package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
  79. package/lib/services/maia/Skills/getSkills.spec.js +152 -0
  80. package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
  81. package/lib/services/maia/client.spec.js +56 -0
  82. package/lib/services/utils/fetchCOR.spec.js +211 -0
  83. package/lib/services/utils/getCookie.spec.js +20 -0
  84. package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
  85. package/lib/store/faqsStore.types.js +1 -1
  86. package/lib/store/maiaLastChatPersistence.spec.js +22 -0
  87. package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
  88. package/lib/store/sessions/sessions.types.spec.js +16 -0
  89. package/lib/store/sessions/useSessionsStore.spec.js +135 -0
  90. package/lib/store/useChatsStore.js +3 -3
  91. package/lib/store/useChatsStore.spec.js +619 -0
  92. package/lib/store/useFaqsStore.spec.js +57 -0
  93. package/lib/test/buttonMock.js +22 -0
  94. package/lib/test/fetchPolyfill.js +160 -0
  95. package/lib/test/fileMock.js +2 -0
  96. package/lib/test/global-context.js +49 -0
  97. package/lib/test/iconMock.js +19 -0
  98. package/lib/test/mockFetch.js +49 -0
  99. package/lib/test/portalRoot.js +13 -0
  100. package/lib/test/styleMock.js +2 -0
  101. package/lib/test/test-utils.js +26 -0
  102. package/lib/test/tooltipMock.js +11 -0
  103. package/lib/types/Chat.js +1 -1
  104. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  105. package/lib/utils/agentDisplayName.spec.js +44 -0
  106. package/lib/utils/autoApproveStorage.spec.js +25 -0
  107. package/lib/utils/chatInputFiles.spec.js +39 -0
  108. package/lib/utils/contextMentionLabel.spec.js +13 -0
  109. package/lib/utils/contextMentionTriggers.spec.js +38 -0
  110. package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
  111. package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
  112. package/lib/utils/fileDownloadHelper.spec.js +67 -0
  113. package/lib/utils/formatQuickActionMessage.spec.js +27 -0
  114. package/lib/utils/formatUnreadCount.spec.js +12 -0
  115. package/lib/utils/getUnitFileSize.spec.js +18 -0
  116. package/lib/utils/hitlAnalytics.spec.js +100 -0
  117. package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
  118. package/lib/utils/mapBackendLang.spec.js +19 -0
  119. package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
  120. package/lib/utils/orchestratorSubagents.spec.js +32 -0
  121. package/lib/utils/reasoningMappers.spec.js +103 -0
  122. package/lib/utils/retryCompletion.spec.js +99 -0
  123. package/lib/utils/skillContentSize.spec.js +13 -0
  124. package/lib/utils/slashCommandMarker.spec.js +43 -0
  125. package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
  126. package/lib/utils/sseStreamContent.spec.js +31 -0
  127. package/lib/utils/streamActivityMessages.spec.js +98 -0
  128. package/lib/utils/validateTrimmedFields.spec.js +26 -0
  129. package/package.json +9 -6
@@ -0,0 +1,283 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
3
+ import { GlobalContextTestProvider } from '../../../test/global-context';
4
+ import { MAIAInput } from './MAIAInput';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ var insertSkillMention = jest.fn();
7
+ jest.mock('../../../hooks/useEvent', function () {
8
+ return {
9
+ EVENTS: {
10
+ aiChatPlusOpen: 'AI_CHAT_PLUS_OPEN',
11
+ aiChatQuickActionOpen: 'AI_CHAT_QUICK_ACTION_OPEN',
12
+ aiChatSkillOpen: 'AI_CHAT_SKILL_OPEN',
13
+ aiChatSkillSelect: 'AI_CHAT_SKILL_SELECT',
14
+ aiChatSkillRemove: 'AI_CHAT_SKILL_REMOVE'
15
+ },
16
+ useEvent: function useEvent() {
17
+ return jest.fn();
18
+ }
19
+ };
20
+ });
21
+ jest.mock('../../../context/cor-user', function () {
22
+ return {
23
+ CORUserRole: {
24
+ CLEVEL: 1,
25
+ DIRECTOR: 2,
26
+ PROJECT_MANAGER: 3,
27
+ COLLABORATOR: 4,
28
+ FREELANCER: 5,
29
+ CLIENT: 6
30
+ },
31
+ useUser: function useUser() {
32
+ return {
33
+ id: 99,
34
+ role_id: 3
35
+ };
36
+ }
37
+ };
38
+ });
39
+ jest.mock('../../../constants/permissions', function () {
40
+ return {
41
+ canAccessToSkills: function canAccessToSkills() {
42
+ return true;
43
+ }
44
+ };
45
+ });
46
+ jest.mock('../../../hooks/useSkillsCatalog', function () {
47
+ return {
48
+ useSkillsCatalog: function useSkillsCatalog() {
49
+ return {
50
+ skills: [{
51
+ id: 'sk1',
52
+ name: 'Resumir',
53
+ description: 'Desc',
54
+ content: 'Resume'
55
+ }],
56
+ loading: false,
57
+ error: false,
58
+ fetchSkills: jest.fn()
59
+ };
60
+ }
61
+ };
62
+ });
63
+ jest.mock('../../../hooks/useSlashCommands', function () {
64
+ return {
65
+ useSlashCommands: function useSlashCommands() {
66
+ return {
67
+ commands: []
68
+ };
69
+ }
70
+ };
71
+ });
72
+ jest.mock('../../../hooks/useMentionPopover', function () {
73
+ return {
74
+ useMentionPopover: function useMentionPopover() {
75
+ return {
76
+ popoverOpen: false,
77
+ resetMentionOpenTracking: jest.fn(),
78
+ handleTrigger: jest.fn(),
79
+ handleKeyDown: function handleKeyDown() {
80
+ return false;
81
+ },
82
+ popoverNode: null,
83
+ close: jest.fn()
84
+ };
85
+ }
86
+ };
87
+ });
88
+ jest.mock('../../../hooks/useMaiaTaskPanelZIndex', function () {
89
+ return {
90
+ useMaiaTaskPanelZIndex: function useMaiaTaskPanelZIndex() {
91
+ return 1300;
92
+ }
93
+ };
94
+ });
95
+ jest.mock('../../organisms/ModalFileExceeds', function () {
96
+ return {
97
+ ModalFileExceeds: function ModalFileExceeds() {
98
+ return null;
99
+ }
100
+ };
101
+ });
102
+ jest.mock('../SlashCommandDropdown', function () {
103
+ return {
104
+ SlashCommandDropdown: function SlashCommandDropdown() {
105
+ return null;
106
+ }
107
+ };
108
+ });
109
+ jest.mock('../ContextMentionEditor', function () {
110
+ var React = jest.requireActual('react');
111
+ return {
112
+ ContextMentionEditor: React.forwardRef(function (_ref, ref) {
113
+ var onInput = _ref.onInput,
114
+ placeholder = _ref.placeholder,
115
+ disabled = _ref.disabled;
116
+ var _React$useState = React.useState(''),
117
+ _React$useState2 = _slicedToArray(_React$useState, 2),
118
+ value = _React$useState2[0],
119
+ setValue = _React$useState2[1];
120
+ var emit = function emit(text) {
121
+ onInput === null || onInput === void 0 || onInput({
122
+ text: text,
123
+ mentions: [],
124
+ slashCommands: [],
125
+ trigger: {
126
+ active: false,
127
+ query: '',
128
+ atRunLength: 0
129
+ }
130
+ });
131
+ };
132
+ React.useImperativeHandle(ref, function () {
133
+ return {
134
+ focus: jest.fn(),
135
+ clear: function clear() {
136
+ setValue('');
137
+ emit('');
138
+ },
139
+ setPlainText: function setPlainText(text) {
140
+ setValue(text);
141
+ emit(text);
142
+ },
143
+ serialize: function serialize() {
144
+ return {
145
+ text: value,
146
+ mentions: [],
147
+ slashCommands: []
148
+ };
149
+ },
150
+ insertMentionTrigger: jest.fn(),
151
+ insertSlashTrigger: jest.fn(),
152
+ insertMention: jest.fn(),
153
+ insertSlashCommand: jest.fn(),
154
+ insertSkillTrigger: function insertSkillTrigger() {
155
+ onInput === null || onInput === void 0 || onInput({
156
+ text: '#',
157
+ mentions: [],
158
+ slashCommands: [],
159
+ trigger: {
160
+ active: false,
161
+ query: '',
162
+ atRunLength: 0
163
+ },
164
+ hashTrigger: {
165
+ active: true,
166
+ query: ''
167
+ }
168
+ });
169
+ },
170
+ insertSkillMention: insertSkillMention,
171
+ syncTriggerAtRunLength: jest.fn(),
172
+ syncSkillTrigger: jest.fn(),
173
+ hasVisualMultiline: function hasVisualMultiline() {
174
+ return false;
175
+ },
176
+ getEditorClientRect: function getEditorClientRect() {
177
+ return null;
178
+ }
179
+ };
180
+ });
181
+ return /*#__PURE__*/_jsx("textarea", {
182
+ "aria-label": "maia-editor",
183
+ placeholder: placeholder,
184
+ disabled: disabled,
185
+ value: value,
186
+ onChange: function onChange(event) {
187
+ setValue(event.target.value);
188
+ emit(event.target.value);
189
+ }
190
+ });
191
+ })
192
+ };
193
+ });
194
+ var sendButton = function sendButton() {
195
+ return screen.getAllByRole('button').find(function (button) {
196
+ return !button.getAttribute('aria-label') && !button.getAttribute('aria-haspopup');
197
+ });
198
+ };
199
+ describe('MAIAInput', function () {
200
+ it('keeps send disabled without text', function () {
201
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
202
+ children: /*#__PURE__*/_jsx(MAIAInput, {
203
+ onSendMessage: jest.fn(),
204
+ placeholder: "Escrib\xED"
205
+ })
206
+ }));
207
+ expect(screen.getByPlaceholderText('Escribí')).toBeInTheDocument();
208
+ expect(sendButton()).toBeDisabled();
209
+ });
210
+ it('sends the typed message and clears the editor', function () {
211
+ var onSendMessage = jest.fn();
212
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
213
+ children: /*#__PURE__*/_jsx(MAIAInput, {
214
+ onSendMessage: onSendMessage
215
+ })
216
+ }));
217
+ fireEvent.change(screen.getByLabelText('maia-editor'), {
218
+ target: {
219
+ value: 'Hola draft'
220
+ }
221
+ });
222
+ fireEvent.click(sendButton());
223
+ expect(onSendMessage).toHaveBeenCalledWith('Hola draft', [], []);
224
+ expect(screen.getByLabelText('maia-editor')).toHaveValue('');
225
+ });
226
+ it('does not send when disabled', function () {
227
+ var onSendMessage = jest.fn();
228
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
229
+ children: /*#__PURE__*/_jsx(MAIAInput, {
230
+ onSendMessage: onSendMessage,
231
+ disabled: true
232
+ })
233
+ }));
234
+ expect(screen.getByLabelText('maia-editor')).toBeDisabled();
235
+ expect(sendButton()).toBeDisabled();
236
+ fireEvent.click(sendButton());
237
+ expect(onSendMessage).not.toHaveBeenCalled();
238
+ });
239
+ it('shows stop while writing', function () {
240
+ var onStopGeneration = jest.fn();
241
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
242
+ children: /*#__PURE__*/_jsx(MAIAInput, {
243
+ onSendMessage: jest.fn(),
244
+ isWriting: true,
245
+ onStopGeneration: onStopGeneration
246
+ })
247
+ }));
248
+ fireEvent.click(sendButton());
249
+ expect(onStopGeneration).toHaveBeenCalled();
250
+ });
251
+ it('opens the plus menu', function () {
252
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
253
+ children: /*#__PURE__*/_jsx(MAIAInput, {
254
+ onSendMessage: jest.fn()
255
+ })
256
+ }));
257
+ fireEvent.click(screen.getByRole('button', {
258
+ name: 'chat.openPlusMenuAria'
259
+ }));
260
+ expect(screen.getByText('chat.plusMenuAttach')).toBeInTheDocument();
261
+ expect(screen.getByText('chat.searchWeb')).toBeInTheDocument();
262
+ });
263
+ it('opens the skills catalog and selects a skill', function () {
264
+ insertSkillMention.mockClear();
265
+ renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
266
+ children: /*#__PURE__*/_jsx(MAIAInput, {
267
+ onSendMessage: jest.fn()
268
+ })
269
+ }));
270
+ fireEvent.click(screen.getByRole('button', {
271
+ name: 'mySkills.dropdownButton'
272
+ }));
273
+ fireEvent.click(screen.getByRole('button', {
274
+ name: /#Resumir/
275
+ }));
276
+ expect(insertSkillMention).toHaveBeenCalledWith({
277
+ id: 'sk1',
278
+ type: 'skill',
279
+ label: '#Resumir'
280
+ });
281
+ });
282
+ });
283
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaXJlRXZlbnQiLCJyZW5kZXJXaXRoUHJvdmlkZXJzIiwic2NyZWVuIiwiR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciIsIk1BSUFJbnB1dCIsImpzeCIsIl9qc3giLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJqZXN0IiwiZm4iLCJtb2NrIiwiRVZFTlRTIiwiYWlDaGF0UGx1c09wZW4iLCJhaUNoYXRRdWlja0FjdGlvbk9wZW4iLCJhaUNoYXRTa2lsbE9wZW4iLCJhaUNoYXRTa2lsbFNlbGVjdCIsImFpQ2hhdFNraWxsUmVtb3ZlIiwidXNlRXZlbnQiLCJDT1JVc2VyUm9sZSIsIkNMRVZFTCIsIkRJUkVDVE9SIiwiUFJPSkVDVF9NQU5BR0VSIiwiQ09MTEFCT1JBVE9SIiwiRlJFRUxBTkNFUiIsIkNMSUVOVCIsInVzZVVzZXIiLCJpZCIsInJvbGVfaWQiLCJjYW5BY2Nlc3NUb1NraWxscyIsInVzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwibG9hZGluZyIsImVycm9yIiwiZmV0Y2hTa2lsbHMiLCJ1c2VTbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZUtleURvd24iLCJwb3BvdmVyTm9kZSIsImNsb3NlIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIk1vZGFsRmlsZUV4Y2VlZHMiLCJTbGFzaENvbW1hbmREcm9wZG93biIsIlJlYWN0IiwicmVxdWlyZUFjdHVhbCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJvbklucHV0IiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWUiLCJzZXRWYWx1ZSIsImVtaXQiLCJ0ZXh0IiwibWVudGlvbnMiLCJzbGFzaENvbW1hbmRzIiwidHJpZ2dlciIsImFjdGl2ZSIsInF1ZXJ5IiwiYXRSdW5MZW5ndGgiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiZm9jdXMiLCJjbGVhciIsInNldFBsYWluVGV4dCIsInNlcmlhbGl6ZSIsImluc2VydE1lbnRpb25UcmlnZ2VyIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiaW5zZXJ0TWVudGlvbiIsImluc2VydFNsYXNoQ29tbWFuZCIsImluc2VydFNraWxsVHJpZ2dlciIsImhhc2hUcmlnZ2VyIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsInN5bmNTa2lsbFRyaWdnZXIiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJnZXRFZGl0b3JDbGllbnRSZWN0Iiwib25DaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInNlbmRCdXR0b24iLCJnZXRBbGxCeVJvbGUiLCJmaW5kIiwiYnV0dG9uIiwiZ2V0QXR0cmlidXRlIiwiZGVzY3JpYmUiLCJpdCIsImNoaWxkcmVuIiwib25TZW5kTWVzc2FnZSIsImV4cGVjdCIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJ0b0JlRGlzYWJsZWQiLCJjaGFuZ2UiLCJnZXRCeUxhYmVsVGV4dCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJ0b0hhdmVWYWx1ZSIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiLCJvblN0b3BHZW5lcmF0aW9uIiwiaXNXcml0aW5nIiwiZ2V0QnlSb2xlIiwiZ2V0QnlUZXh0IiwibW9ja0NsZWFyIiwidHlwZSIsImxhYmVsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC5zcGVjLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJlRXZlbnQsIHJlbmRlcldpdGhQcm92aWRlcnMsIHNjcmVlbiB9IGZyb20gJy4uLy4uLy4uL3Rlc3QvdGVzdC11dGlscydcbmltcG9ydCB7IEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi90ZXN0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTUFJQUlucHV0IH0gZnJvbSAnLi9NQUlBSW5wdXQnXG5cbmNvbnN0IGluc2VydFNraWxsTWVudGlvbiA9IGplc3QuZm4oKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50JywgKCkgPT4gKHtcbiAgRVZFTlRTOiB7XG4gICAgYWlDaGF0UGx1c09wZW46ICdBSV9DSEFUX1BMVVNfT1BFTicsXG4gICAgYWlDaGF0UXVpY2tBY3Rpb25PcGVuOiAnQUlfQ0hBVF9RVUlDS19BQ1RJT05fT1BFTicsXG4gICAgYWlDaGF0U2tpbGxPcGVuOiAnQUlfQ0hBVF9TS0lMTF9PUEVOJyxcbiAgICBhaUNoYXRTa2lsbFNlbGVjdDogJ0FJX0NIQVRfU0tJTExfU0VMRUNUJyxcbiAgICBhaUNoYXRTa2lsbFJlbW92ZTogJ0FJX0NIQVRfU0tJTExfUkVNT1ZFJyxcbiAgfSxcbiAgdXNlRXZlbnQ6ICgpID0+IGplc3QuZm4oKSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInLCAoKSA9PiAoe1xuICBDT1JVc2VyUm9sZToge1xuICAgIENMRVZFTDogMSxcbiAgICBESVJFQ1RPUjogMixcbiAgICBQUk9KRUNUX01BTkFHRVI6IDMsXG4gICAgQ09MTEFCT1JBVE9SOiA0LFxuICAgIEZSRUVMQU5DRVI6IDUsXG4gICAgQ0xJRU5UOiA2LFxuICB9LFxuICB1c2VVc2VyOiAoKSA9PiAoeyBpZDogOTksIHJvbGVfaWQ6IDMgfSksXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnLCAoKSA9PiAoe1xuICBjYW5BY2Nlc3NUb1NraWxsczogKCkgPT4gdHJ1ZSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZVNraWxsc0NhdGFsb2cnLCAoKSA9PiAoe1xuICB1c2VTa2lsbHNDYXRhbG9nOiAoKSA9PiAoe1xuICAgIHNraWxsczogW3sgaWQ6ICdzazEnLCBuYW1lOiAnUmVzdW1pcicsIGRlc2NyaXB0aW9uOiAnRGVzYycsIGNvbnRlbnQ6ICdSZXN1bWUnIH1dLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBmZXRjaFNraWxsczogamVzdC5mbigpLFxuICB9KSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnLCAoKSA9PiAoe1xuICB1c2VTbGFzaENvbW1hbmRzOiAoKSA9PiAoeyBjb21tYW5kczogW10gfSksXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcicsICgpID0+ICh7XG4gIHVzZU1lbnRpb25Qb3BvdmVyOiAoKSA9PiAoe1xuICAgIHBvcG92ZXJPcGVuOiBmYWxzZSxcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6IGplc3QuZm4oKSxcbiAgICBoYW5kbGVUcmlnZ2VyOiBqZXN0LmZuKCksXG4gICAgaGFuZGxlS2V5RG93bjogKCkgPT4gZmFsc2UsXG4gICAgcG9wb3Zlck5vZGU6IG51bGwsXG4gICAgY2xvc2U6IGplc3QuZm4oKSxcbiAgfSksXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4JywgKCkgPT4gKHtcbiAgdXNlTWFpYVRhc2tQYW5lbFpJbmRleDogKCkgPT4gMTMwMCxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJywgKCkgPT4gKHtcbiAgTW9kYWxGaWxlRXhjZWVkczogKCkgPT4gbnVsbCxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uL1NsYXNoQ29tbWFuZERyb3Bkb3duJywgKCkgPT4gKHtcbiAgU2xhc2hDb21tYW5kRHJvcGRvd246ICgpID0+IG51bGwsXG59KSlcblxuamVzdC5tb2NrKCcuLi9Db250ZXh0TWVudGlvbkVkaXRvcicsICgpID0+IHtcbiAgY29uc3QgUmVhY3QgPSBqZXN0LnJlcXVpcmVBY3R1YWwoJ3JlYWN0JykgYXMgdHlwZW9mIGltcG9ydCgncmVhY3QnKVxuICByZXR1cm4ge1xuICAgIENvbnRleHRNZW50aW9uRWRpdG9yOiBSZWFjdC5mb3J3YXJkUmVmKFxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgb25JbnB1dCxcbiAgICAgICAgICBwbGFjZWhvbGRlcixcbiAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgfToge1xuICAgICAgICAgIG9uSW5wdXQ/OiAoc3RhdGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgbWVudGlvbnM6IHVua25vd25bXVxuICAgICAgICAgICAgc2xhc2hDb21tYW5kczogdW5rbm93bltdXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgICAgICAgfSkgPT4gdm9pZFxuICAgICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuXG4gICAgICAgIH0sXG4gICAgICAgIHJlZjoge1xuICAgICAgICAgIGZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHZvaWRcbiAgICAgICAgICBzZXRQbGFpblRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgICAgICAgICBzZXJpYWxpemU6ICgpID0+IHsgdGV4dDogc3RyaW5nOyBtZW50aW9uczogdW5rbm93bltdOyBzbGFzaENvbW1hbmRzOiB1bmtub3duW10gfVxuICAgICAgICAgIGluc2VydE1lbnRpb25UcmlnZ2VyOiAoKSA9PiB2b2lkXG4gICAgICAgIH0gfCBudWxsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgnJylcbiAgICAgICAgY29uc3QgZW1pdCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIG1lbnRpb25zOiBbXSxcbiAgICAgICAgICAgIHNsYXNoQ29tbWFuZHM6IFtdLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICAgIGZvY3VzOiBqZXN0LmZuKCksXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICAgIHNldFZhbHVlKCcnKVxuICAgICAgICAgICAgZW1pdCgnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldFBsYWluVGV4dDogKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUodGV4dClcbiAgICAgICAgICAgIGVtaXQodGV4dClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlcmlhbGl6ZTogKCkgPT4gKHsgdGV4dDogdmFsdWUsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfSksXG4gICAgICAgICAgaW5zZXJ0TWVudGlvblRyaWdnZXI6IGplc3QuZm4oKSxcbiAgICAgICAgICBpbnNlcnRTbGFzaFRyaWdnZXI6IGplc3QuZm4oKSxcbiAgICAgICAgICBpbnNlcnRNZW50aW9uOiBqZXN0LmZuKCksXG4gICAgICAgICAgaW5zZXJ0U2xhc2hDb21tYW5kOiBqZXN0LmZuKCksXG4gICAgICAgICAgaW5zZXJ0U2tpbGxUcmlnZ2VyOiAoKSA9PiB7XG4gICAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgICB0ZXh0OiAnIycsXG4gICAgICAgICAgICAgIG1lbnRpb25zOiBbXSxcbiAgICAgICAgICAgICAgc2xhc2hDb21tYW5kczogW10sXG4gICAgICAgICAgICAgIHRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCB9LFxuICAgICAgICAgICAgICBoYXNoVHJpZ2dlcjogeyBhY3RpdmU6IHRydWUsIHF1ZXJ5OiAnJyB9LFxuICAgICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluc2VydFNraWxsTWVudGlvbixcbiAgICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoOiBqZXN0LmZuKCksXG4gICAgICAgICAgc3luY1NraWxsVHJpZ2dlcjogamVzdC5mbigpLFxuICAgICAgICAgIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gbnVsbCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJtYWlhLWVkaXRvclwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgIGVtaXQoZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICB9XG4gICAgKSxcbiAgfVxufSlcblxuY29uc3Qgc2VuZEJ1dHRvbiA9ICgpID0+XG4gIHNjcmVlblxuICAgIC5nZXRBbGxCeVJvbGUoJ2J1dHRvbicpXG4gICAgLmZpbmQoYnV0dG9uID0+ICFidXR0b24uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIWJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnKSlcblxuZGVzY3JpYmUoJ01BSUFJbnB1dCcsICgpID0+IHtcbiAgaXQoJ2tlZXBzIHNlbmQgZGlzYWJsZWQgd2l0aG91dCB0ZXh0JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IHBsYWNlaG9sZGVyPVwiRXNjcmliw61cIiAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VzY3JpYsOtJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS50b0JlRGlzYWJsZWQoKVxuICB9KVxuXG4gIGl0KCdzZW5kcyB0aGUgdHlwZWQgbWVzc2FnZSBhbmQgY2xlYXJzIHRoZSBlZGl0b3InLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtvblNlbmRNZXNzYWdlfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jaGFuZ2Uoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLCB7IHRhcmdldDogeyB2YWx1ZTogJ0hvbGEgZHJhZnQnIH0gfSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2VuZEJ1dHRvbigpIGFzIEhUTUxCdXR0b25FbGVtZW50KVxuXG4gICAgZXhwZWN0KG9uU2VuZE1lc3NhZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdIb2xhIGRyYWZ0JywgW10sIFtdKVxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJykpLnRvSGF2ZVZhbHVlKCcnKVxuICB9KVxuXG4gIGl0KCdkb2VzIG5vdCBzZW5kIHdoZW4gZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtvblNlbmRNZXNzYWdlfSBkaXNhYmxlZCAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJykpLnRvQmVEaXNhYmxlZCgpXG4gICAgZXhwZWN0KHNlbmRCdXR0b24oKSkudG9CZURpc2FibGVkKClcbiAgICBmaXJlRXZlbnQuY2xpY2soc2VuZEJ1dHRvbigpIGFzIEhUTUxCdXR0b25FbGVtZW50KVxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHN0b3Agd2hpbGUgd3JpdGluZycsICgpID0+IHtcbiAgICBjb25zdCBvblN0b3BHZW5lcmF0aW9uID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gaXNXcml0aW5nIG9uU3RvcEdlbmVyYXRpb249e29uU3RvcEdlbmVyYXRpb259IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNlbmRCdXR0b24oKSBhcyBIVE1MQnV0dG9uRWxlbWVudClcbiAgICBleHBlY3Qob25TdG9wR2VuZXJhdGlvbikudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdjaGF0LnBsdXNNZW51QXR0YWNoJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5zZWFyY2hXZWInKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICB9KVxuXG4gIGl0KCdvcGVucyB0aGUgc2tpbGxzIGNhdGFsb2cgYW5kIHNlbGVjdHMgYSBza2lsbCcsICgpID0+IHtcbiAgICBpbnNlcnRTa2lsbE1lbnRpb24ubW9ja0NsZWFyKClcblxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyB9KSlcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC8jUmVzdW1pci8gfSkpXG4gICAgZXhwZWN0KGluc2VydFNraWxsTWVudGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBpZDogJ3NrMScsIHR5cGU6ICdza2lsbCcsIGxhYmVsOiAnI1Jlc3VtaXInIH0pXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsU0FBUyxFQUFFQyxtQkFBbUIsRUFBRUMsTUFBTSxRQUFRLDBCQUEwQjtBQUNqRixTQUFTQyx5QkFBeUIsUUFBUSw4QkFBOEI7QUFDeEUsU0FBU0MsU0FBUyxRQUFRLGFBQWE7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFdkMsSUFBTUMsa0JBQWtCLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7QUFFcENELElBQUksQ0FBQ0UsSUFBSSxDQUFDLHlCQUF5QixFQUFFO0VBQUEsT0FBTztJQUMxQ0MsTUFBTSxFQUFFO01BQ05DLGNBQWMsRUFBRSxtQkFBbUI7TUFDbkNDLHFCQUFxQixFQUFFLDJCQUEyQjtNQUNsREMsZUFBZSxFQUFFLG9CQUFvQjtNQUNyQ0MsaUJBQWlCLEVBQUUsc0JBQXNCO01BQ3pDQyxpQkFBaUIsRUFBRTtJQUNyQixDQUFDO0lBQ0RDLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFBO01BQUEsT0FBUVQsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUFBO0VBQzNCLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEQsSUFBSSxDQUFDRSxJQUFJLENBQUMsMkJBQTJCLEVBQUU7RUFBQSxPQUFPO0lBQzVDUSxXQUFXLEVBQUU7TUFDWEMsTUFBTSxFQUFFLENBQUM7TUFDVEMsUUFBUSxFQUFFLENBQUM7TUFDWEMsZUFBZSxFQUFFLENBQUM7TUFDbEJDLFlBQVksRUFBRSxDQUFDO01BQ2ZDLFVBQVUsRUFBRSxDQUFDO01BQ2JDLE1BQU0sRUFBRTtJQUNWLENBQUM7SUFDREMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFTO1FBQUVDLEVBQUUsRUFBRSxFQUFFO1FBQUVDLE9BQU8sRUFBRTtNQUFFLENBQUM7SUFBQTtFQUN4QyxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBRUhuQixJQUFJLENBQUNFLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRTtFQUFBLE9BQU87SUFDakRrQixpQkFBaUIsRUFBRSxTQUFuQkEsaUJBQWlCQSxDQUFBO01BQUEsT0FBUSxJQUFJO0lBQUE7RUFDL0IsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIcEIsSUFBSSxDQUFDRSxJQUFJLENBQUMsaUNBQWlDLEVBQUU7RUFBQSxPQUFPO0lBQ2xEbUIsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBQTtNQUFBLE9BQVM7UUFDdkJDLE1BQU0sRUFBRSxDQUFDO1VBQUVKLEVBQUUsRUFBRSxLQUFLO1VBQUVLLElBQUksRUFBRSxTQUFTO1VBQUVDLFdBQVcsRUFBRSxNQUFNO1VBQUVDLE9BQU8sRUFBRTtRQUFTLENBQUMsQ0FBQztRQUNoRkMsT0FBTyxFQUFFLEtBQUs7UUFDZEMsS0FBSyxFQUFFLEtBQUs7UUFDWkMsV0FBVyxFQUFFNUIsSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFDdkIsQ0FBQztJQUFBO0VBQ0gsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIRCxJQUFJLENBQUNFLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtFQUFBLE9BQU87SUFDbEQyQixnQkFBZ0IsRUFBRSxTQUFsQkEsZ0JBQWdCQSxDQUFBO01BQUEsT0FBUztRQUFFQyxRQUFRLEVBQUU7TUFBRyxDQUFDO0lBQUE7RUFDM0MsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIOUIsSUFBSSxDQUFDRSxJQUFJLENBQUMsa0NBQWtDLEVBQUU7RUFBQSxPQUFPO0lBQ25ENkIsaUJBQWlCLEVBQUUsU0FBbkJBLGlCQUFpQkEsQ0FBQTtNQUFBLE9BQVM7UUFDeEJDLFdBQVcsRUFBRSxLQUFLO1FBQ2xCQyx3QkFBd0IsRUFBRWpDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7UUFDbkNpQyxhQUFhLEVBQUVsQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCa0MsYUFBYSxFQUFFLFNBQWZBLGFBQWFBLENBQUE7VUFBQSxPQUFRLEtBQUs7UUFBQTtRQUMxQkMsV0FBVyxFQUFFLElBQUk7UUFDakJDLEtBQUssRUFBRXJDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQ2pCLENBQUM7SUFBQTtFQUNILENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEQsSUFBSSxDQUFDRSxJQUFJLENBQUMsdUNBQXVDLEVBQUU7RUFBQSxPQUFPO0lBQ3hEb0Msc0JBQXNCLEVBQUUsU0FBeEJBLHNCQUFzQkEsQ0FBQTtNQUFBLE9BQVEsSUFBSTtJQUFBO0VBQ3BDLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSHRDLElBQUksQ0FBQ0UsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO0VBQUEsT0FBTztJQUNuRHFDLGdCQUFnQixFQUFFLFNBQWxCQSxnQkFBZ0JBLENBQUE7TUFBQSxPQUFRLElBQUk7SUFBQTtFQUM5QixDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBRUh2QyxJQUFJLENBQUNFLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtFQUFBLE9BQU87SUFDMUNzQyxvQkFBb0IsRUFBRSxTQUF0QkEsb0JBQW9CQSxDQUFBO01BQUEsT0FBUSxJQUFJO0lBQUE7RUFDbEMsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIeEMsSUFBSSxDQUFDRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsWUFBTTtFQUN6QyxJQUFNdUMsS0FBSyxHQUFHekMsSUFBSSxDQUFDMEMsYUFBYSxDQUFDLE9BQU8sQ0FBMkI7RUFDbkUsT0FBTztJQUNMQyxvQkFBb0IsRUFBRUYsS0FBSyxDQUFDRyxVQUFVLENBQ3BDLFVBQUFDLElBQUEsRUFlRUMsR0FNUSxFQUNMO01BQUEsSUFwQkRDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO1FBQ1BDLFdBQVcsR0FBQUgsSUFBQSxDQUFYRyxXQUFXO1FBQ1hDLFFBQVEsR0FBQUosSUFBQSxDQUFSSSxRQUFRO01BbUJWLElBQUFDLGVBQUEsR0FBMEJULEtBQUssQ0FBQ1UsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFBQyxnQkFBQSxHQUFBQyxjQUFBLENBQUFILGVBQUE7UUFBckNJLEtBQUssR0FBQUYsZ0JBQUE7UUFBRUcsUUFBUSxHQUFBSCxnQkFBQTtNQUN0QixJQUFNSSxJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSUMsSUFBWSxFQUFLO1FBQzdCVixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHO1VBQ1JVLElBQUksRUFBSkEsSUFBSTtVQUNKQyxRQUFRLEVBQUUsRUFBRTtVQUNaQyxhQUFhLEVBQUUsRUFBRTtVQUNqQkMsT0FBTyxFQUFFO1lBQUVDLE1BQU0sRUFBRSxLQUFLO1lBQUVDLEtBQUssRUFBRSxFQUFFO1lBQUVDLFdBQVcsRUFBRTtVQUFFO1FBQ3RELENBQUMsQ0FBQztNQUNKLENBQUM7TUFFRHRCLEtBQUssQ0FBQ3VCLG1CQUFtQixDQUFDbEIsR0FBRyxFQUFFO1FBQUEsT0FBTztVQUNwQ21CLEtBQUssRUFBRWpFLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7VUFDaEJpRSxLQUFLLEVBQUUsU0FBUEEsS0FBS0EsQ0FBQSxFQUFRO1lBQ1hYLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDWkMsSUFBSSxDQUFDLEVBQUUsQ0FBQztVQUNWLENBQUM7VUFDRFcsWUFBWSxFQUFFLFNBQWRBLFlBQVlBLENBQUdWLElBQVksRUFBSztZQUM5QkYsUUFBUSxDQUFDRSxJQUFJLENBQUM7WUFDZEQsSUFBSSxDQUFDQyxJQUFJLENBQUM7VUFDWixDQUFDO1VBQ0RXLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1lBQUEsT0FBUztjQUFFWCxJQUFJLEVBQUVILEtBQUs7Y0FBRUksUUFBUSxFQUFFLEVBQUU7Y0FBRUMsYUFBYSxFQUFFO1lBQUcsQ0FBQztVQUFBLENBQUM7VUFDbkVVLG9CQUFvQixFQUFFckUsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUMvQnFFLGtCQUFrQixFQUFFdEUsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUM3QnNFLGFBQWEsRUFBRXZFLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7VUFDeEJ1RSxrQkFBa0IsRUFBRXhFLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7VUFDN0J3RSxrQkFBa0IsRUFBRSxTQUFwQkEsa0JBQWtCQSxDQUFBLEVBQVE7WUFDeEIxQixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHO2NBQ1JVLElBQUksRUFBRSxHQUFHO2NBQ1RDLFFBQVEsRUFBRSxFQUFFO2NBQ1pDLGFBQWEsRUFBRSxFQUFFO2NBQ2pCQyxPQUFPLEVBQUU7Z0JBQUVDLE1BQU0sRUFBRSxLQUFLO2dCQUFFQyxLQUFLLEVBQUUsRUFBRTtnQkFBRUMsV0FBVyxFQUFFO2NBQUUsQ0FBQztjQUNyRFcsV0FBVyxFQUFFO2dCQUFFYixNQUFNLEVBQUUsSUFBSTtnQkFBRUMsS0FBSyxFQUFFO2NBQUc7WUFDekMsQ0FBVSxDQUFDO1VBQ2IsQ0FBQztVQUNEL0Qsa0JBQWtCLEVBQWxCQSxrQkFBa0I7VUFDbEI0RSxzQkFBc0IsRUFBRTNFLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7VUFDakMyRSxnQkFBZ0IsRUFBRTVFLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7VUFDM0I0RSxrQkFBa0IsRUFBRSxTQUFwQkEsa0JBQWtCQSxDQUFBO1lBQUEsT0FBUSxLQUFLO1VBQUE7VUFDL0JDLG1CQUFtQixFQUFFLFNBQXJCQSxtQkFBbUJBLENBQUE7WUFBQSxPQUFRLElBQUk7VUFBQTtRQUNqQyxDQUFDO01BQUEsQ0FBQyxDQUFDO01BRUgsb0JBQ0VoRixJQUFBO1FBQ0UsY0FBVyxhQUFhO1FBQ3hCa0QsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCQyxRQUFRLEVBQUVBLFFBQVM7UUFDbkJLLEtBQUssRUFBRUEsS0FBTTtRQUNieUIsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUVDLEtBQUssRUFBSTtVQUNqQnpCLFFBQVEsQ0FBQ3lCLEtBQUssQ0FBQ0MsTUFBTSxDQUFDM0IsS0FBSyxDQUFDO1VBQzVCRSxJQUFJLENBQUN3QixLQUFLLENBQUNDLE1BQU0sQ0FBQzNCLEtBQUssQ0FBQztRQUMxQjtNQUFFLENBQ0gsQ0FBQztJQUVOLENBQ0Y7RUFDRixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTTRCLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFBO0VBQUEsT0FDZHhGLE1BQU0sQ0FDSHlGLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FDdEJDLElBQUksQ0FBQyxVQUFBQyxNQUFNO0lBQUEsT0FBSSxDQUFDQSxNQUFNLENBQUNDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDRCxNQUFNLENBQUNDLFlBQVksQ0FBQyxlQUFlLENBQUM7RUFBQSxFQUFDO0FBQUE7QUFFaEdDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtFQUMxQkMsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLFlBQU07SUFDM0MvRixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUE4RixRQUFBLGVBQ3hCM0YsSUFBQSxDQUFDRixTQUFTO1FBQUM4RixhQUFhLEVBQUUxRixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFFO1FBQUMrQyxXQUFXLEVBQUM7TUFBUyxDQUFFO0lBQUMsQ0FDcEMsQ0FDN0IsQ0FBQztJQUVEMkMsTUFBTSxDQUFDakcsTUFBTSxDQUFDa0csb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRUYsTUFBTSxDQUFDVCxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNZLFlBQVksQ0FBQyxDQUFDO0VBQ3JDLENBQUMsQ0FBQztFQUVGTixFQUFFLENBQUMsK0NBQStDLEVBQUUsWUFBTTtJQUN4RCxJQUFNRSxhQUFhLEdBQUcxRixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUE4RixRQUFBLGVBQ3hCM0YsSUFBQSxDQUFDRixTQUFTO1FBQUM4RixhQUFhLEVBQUVBO01BQWMsQ0FBRTtJQUFDLENBQ2xCLENBQzdCLENBQUM7SUFFRGxHLFNBQVMsQ0FBQ3VHLE1BQU0sQ0FBQ3JHLE1BQU0sQ0FBQ3NHLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUFFZixNQUFNLEVBQUU7UUFBRTNCLEtBQUssRUFBRTtNQUFhO0lBQUUsQ0FBQyxDQUFDO0lBQzNGOUQsU0FBUyxDQUFDeUcsS0FBSyxDQUFDZixVQUFVLENBQUMsQ0FBc0IsQ0FBQztJQUVsRFMsTUFBTSxDQUFDRCxhQUFhLENBQUMsQ0FBQ1Esb0JBQW9CLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEVQLE1BQU0sQ0FBQ2pHLE1BQU0sQ0FBQ3NHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDRyxXQUFXLENBQUMsRUFBRSxDQUFDO0VBQzlELENBQUMsQ0FBQztFQUVGWCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsWUFBTTtJQUN0QyxJQUFNRSxhQUFhLEdBQUcxRixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUE4RixRQUFBLGVBQ3hCM0YsSUFBQSxDQUFDRixTQUFTO1FBQUM4RixhQUFhLEVBQUVBLGFBQWM7UUFBQ3pDLFFBQVE7TUFBQSxDQUFFO0lBQUMsQ0FDM0IsQ0FDN0IsQ0FBQztJQUVEMEMsTUFBTSxDQUFDakcsTUFBTSxDQUFDc0csY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUNGLFlBQVksQ0FBQyxDQUFDO0lBQzNESCxNQUFNLENBQUNULFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1ksWUFBWSxDQUFDLENBQUM7SUFDbkN0RyxTQUFTLENBQUN5RyxLQUFLLENBQUNmLFVBQVUsQ0FBQyxDQUFzQixDQUFDO0lBQ2xEUyxNQUFNLENBQUNELGFBQWEsQ0FBQyxDQUFDVSxHQUFHLENBQUNDLGdCQUFnQixDQUFDLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUZiLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQU1jLGdCQUFnQixHQUFHdEcsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUNsQ1IsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBOEYsUUFBQSxlQUN4QjNGLElBQUEsQ0FBQ0YsU0FBUztRQUFDOEYsYUFBYSxFQUFFMUYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBRTtRQUFDc0csU0FBUztRQUFDRCxnQkFBZ0IsRUFBRUE7TUFBaUIsQ0FBRTtJQUFDLENBQzVELENBQzdCLENBQUM7SUFFRDlHLFNBQVMsQ0FBQ3lHLEtBQUssQ0FBQ2YsVUFBVSxDQUFDLENBQXNCLENBQUM7SUFDbERTLE1BQU0sQ0FBQ1csZ0JBQWdCLENBQUMsQ0FBQ0QsZ0JBQWdCLENBQUMsQ0FBQztFQUM3QyxDQUFDLENBQUM7RUFFRmIsRUFBRSxDQUFDLHFCQUFxQixFQUFFLFlBQU07SUFDOUIvRixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUE4RixRQUFBLGVBQ3hCM0YsSUFBQSxDQUFDRixTQUFTO1FBQUM4RixhQUFhLEVBQUUxRixJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUU7SUFBQyxDQUNkLENBQzdCLENBQUM7SUFFRFQsU0FBUyxDQUFDeUcsS0FBSyxDQUFDdkcsTUFBTSxDQUFDOEcsU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUFFakYsSUFBSSxFQUFFO0lBQXdCLENBQUMsQ0FBQyxDQUFDO0lBRTlFb0UsTUFBTSxDQUFDakcsTUFBTSxDQUFDK0csU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQ1osaUJBQWlCLENBQUMsQ0FBQztJQUNuRUYsTUFBTSxDQUFDakcsTUFBTSxDQUFDK0csU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ1osaUJBQWlCLENBQUMsQ0FBQztFQUNoRSxDQUFDLENBQUM7RUFFRkwsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLFlBQU07SUFDdkR6RixrQkFBa0IsQ0FBQzJHLFNBQVMsQ0FBQyxDQUFDO0lBRTlCakgsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBOEYsUUFBQSxlQUN4QjNGLElBQUEsQ0FBQ0YsU0FBUztRQUFDOEYsYUFBYSxFQUFFMUYsSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRURULFNBQVMsQ0FBQ3lHLEtBQUssQ0FBQ3ZHLE1BQU0sQ0FBQzhHLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpGLElBQUksRUFBRTtJQUEwQixDQUFDLENBQUMsQ0FBQztJQUVoRi9CLFNBQVMsQ0FBQ3lHLEtBQUssQ0FBQ3ZHLE1BQU0sQ0FBQzhHLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpGLElBQUksRUFBRTtJQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pFb0UsTUFBTSxDQUFDNUYsa0JBQWtCLENBQUMsQ0FBQ21HLG9CQUFvQixDQUFDO01BQUVoRixFQUFFLEVBQUUsS0FBSztNQUFFeUYsSUFBSSxFQUFFLE9BQU87TUFBRUMsS0FBSyxFQUFFO0lBQVcsQ0FBQyxDQUFDO0VBQ2xHLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,68 @@
1
+ import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
2
+ import { ReasoningBlock } from './ReasoningBlock';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ jest.mock('../MaiaStreamdown/MaiaStreamdown', function () {
5
+ return {
6
+ MaiaStreamdown: function MaiaStreamdown(_ref) {
7
+ var children = _ref.children;
8
+ return /*#__PURE__*/_jsx("div", {
9
+ children: children
10
+ });
11
+ }
12
+ };
13
+ });
14
+ jest.mock('../../../hooks/useEvent', function () {
15
+ return {
16
+ EVENTS: {
17
+ aiChatThinking: 'AI_CHAT_THINKING'
18
+ },
19
+ useEvent: function useEvent() {
20
+ return jest.fn();
21
+ }
22
+ };
23
+ });
24
+ describe('ReasoningBlock', function () {
25
+ it('returns null without visible steps', function () {
26
+ var _renderWithProviders = renderWithProviders(/*#__PURE__*/_jsx(ReasoningBlock, {
27
+ messageId: "m1",
28
+ trace: {
29
+ steps: [{
30
+ i: 0,
31
+ type: 'thinking',
32
+ text: '...'
33
+ }],
34
+ summary: {
35
+ stepCount: 1,
36
+ toolCount: 0
37
+ }
38
+ }
39
+ })),
40
+ container = _renderWithProviders.container;
41
+ expect(container).toBeEmptyDOMElement();
42
+ });
43
+ it('toggles the expanded trace', function () {
44
+ renderWithProviders(/*#__PURE__*/_jsx(ReasoningBlock, {
45
+ messageId: "m1",
46
+ trace: {
47
+ steps: [{
48
+ i: 0,
49
+ type: 'narration',
50
+ text: 'Revisando'
51
+ }, {
52
+ i: 1,
53
+ type: 'tool',
54
+ tool: 'edit_task'
55
+ }],
56
+ summary: {
57
+ stepCount: 2,
58
+ toolCount: 1
59
+ }
60
+ }
61
+ }));
62
+ var toggle = screen.getByRole('button');
63
+ expect(toggle).toHaveAttribute('aria-expanded', 'false');
64
+ fireEvent.click(toggle);
65
+ expect(toggle).toHaveAttribute('aria-expanded', 'true');
66
+ });
67
+ });
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaXJlRXZlbnQiLCJyZW5kZXJXaXRoUHJvdmlkZXJzIiwic2NyZWVuIiwiUmVhc29uaW5nQmxvY2siLCJqc3giLCJfanN4IiwiamVzdCIsIm1vY2siLCJNYWlhU3RyZWFtZG93biIsIl9yZWYiLCJjaGlsZHJlbiIsIkVWRU5UUyIsImFpQ2hhdFRoaW5raW5nIiwidXNlRXZlbnQiLCJmbiIsImRlc2NyaWJlIiwiaXQiLCJfcmVuZGVyV2l0aFByb3ZpZGVycyIsIm1lc3NhZ2VJZCIsInRyYWNlIiwic3RlcHMiLCJpIiwidHlwZSIsInRleHQiLCJzdW1tYXJ5Iiwic3RlcENvdW50IiwidG9vbENvdW50IiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUVtcHR5RE9NRWxlbWVudCIsInRvb2wiLCJ0b2dnbGUiLCJnZXRCeVJvbGUiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJjbGljayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL1JlYXNvbmluZ0Jsb2NrL1JlYXNvbmluZ0Jsb2NrLnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcmVFdmVudCwgcmVuZGVyV2l0aFByb3ZpZGVycywgc2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vdGVzdC90ZXN0LXV0aWxzJ1xuaW1wb3J0IHsgUmVhc29uaW5nQmxvY2sgfSBmcm9tICcuL1JlYXNvbmluZ0Jsb2NrJ1xuXG5qZXN0Lm1vY2soJy4uL01haWFTdHJlYW1kb3duL01haWFTdHJlYW1kb3duJywgKCkgPT4gKHtcbiAgTWFpYVN0cmVhbWRvd246ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBzdHJpbmcgfSkgPT4gPGRpdj57Y2hpbGRyZW59PC9kaXY+LFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnLCAoKSA9PiAoe1xuICBFVkVOVFM6IHsgYWlDaGF0VGhpbmtpbmc6ICdBSV9DSEFUX1RISU5LSU5HJyB9LFxuICB1c2VFdmVudDogKCkgPT4gamVzdC5mbigpLFxufSkpXG5cbmRlc2NyaWJlKCdSZWFzb25pbmdCbG9jaycsICgpID0+IHtcbiAgaXQoJ3JldHVybnMgbnVsbCB3aXRob3V0IHZpc2libGUgc3RlcHMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8UmVhc29uaW5nQmxvY2tcbiAgICAgICAgbWVzc2FnZUlkPVwibTFcIlxuICAgICAgICB0cmFjZT17eyBzdGVwczogW3sgaTogMCwgdHlwZTogJ3RoaW5raW5nJywgdGV4dDogJy4uLicgfV0sIHN1bW1hcnk6IHsgc3RlcENvdW50OiAxLCB0b29sQ291bnQ6IDAgfSB9fVxuICAgICAgLz5cbiAgICApXG5cbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlRW1wdHlET01FbGVtZW50KClcbiAgfSlcblxuICBpdCgndG9nZ2xlcyB0aGUgZXhwYW5kZWQgdHJhY2UnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxSZWFzb25pbmdCbG9ja1xuICAgICAgICBtZXNzYWdlSWQ9XCJtMVwiXG4gICAgICAgIHRyYWNlPXt7XG4gICAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICAgIHsgaTogMCwgdHlwZTogJ25hcnJhdGlvbicsIHRleHQ6ICdSZXZpc2FuZG8nIH0sXG4gICAgICAgICAgICB7IGk6IDEsIHR5cGU6ICd0b29sJywgdG9vbDogJ2VkaXRfdGFzaycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHN1bW1hcnk6IHsgc3RlcENvdW50OiAyLCB0b29sQ291bnQ6IDEgfSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKVxuXG4gICAgY29uc3QgdG9nZ2xlID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJylcbiAgICBleHBlY3QodG9nZ2xlKS50b0hhdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHRvZ2dsZSlcbiAgICBleHBlY3QodG9nZ2xlKS50b0hhdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLEVBQUVDLG1CQUFtQixFQUFFQyxNQUFNLFFBQVEsMEJBQTBCO0FBQ2pGLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFakRDLElBQUksQ0FBQ0MsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO0VBQUEsT0FBTztJQUNuREMsY0FBYyxFQUFFLFNBQWhCQSxjQUFjQSxDQUFBQyxJQUFBO01BQUEsSUFBS0MsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7TUFBQSxvQkFBOEJMLElBQUE7UUFBQUssUUFBQSxFQUFNQTtNQUFRLENBQU0sQ0FBQztJQUFBO0VBQ2hGLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEosSUFBSSxDQUFDQyxJQUFJLENBQUMseUJBQXlCLEVBQUU7RUFBQSxPQUFPO0lBQzFDSSxNQUFNLEVBQUU7TUFBRUMsY0FBYyxFQUFFO0lBQW1CLENBQUM7SUFDOUNDLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFBO01BQUEsT0FBUVAsSUFBSSxDQUFDUSxFQUFFLENBQUMsQ0FBQztJQUFBO0VBQzNCLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQU07RUFDL0JDLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxZQUFNO0lBQzdDLElBQUFDLG9CQUFBLEdBQXNCaEIsbUJBQW1CLGNBQ3ZDSSxJQUFBLENBQUNGLGNBQWM7UUFDYmUsU0FBUyxFQUFDLElBQUk7UUFDZEMsS0FBSyxFQUFFO1VBQUVDLEtBQUssRUFBRSxDQUFDO1lBQUVDLENBQUMsRUFBRSxDQUFDO1lBQUVDLElBQUksRUFBRSxVQUFVO1lBQUVDLElBQUksRUFBRTtVQUFNLENBQUMsQ0FBQztVQUFFQyxPQUFPLEVBQUU7WUFBRUMsU0FBUyxFQUFFLENBQUM7WUFBRUMsU0FBUyxFQUFFO1VBQUU7UUFBRTtNQUFFLENBQ3RHLENBQ0gsQ0FBQztNQUxPQyxTQUFTLEdBQUFWLG9CQUFBLENBQVRVLFNBQVM7SUFPakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLG1CQUFtQixDQUFDLENBQUM7RUFDekMsQ0FBQyxDQUFDO0VBRUZiLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxZQUFNO0lBQ3JDZixtQkFBbUIsY0FDakJJLElBQUEsQ0FBQ0YsY0FBYztNQUNiZSxTQUFTLEVBQUMsSUFBSTtNQUNkQyxLQUFLLEVBQUU7UUFDTEMsS0FBSyxFQUFFLENBQ0w7VUFBRUMsQ0FBQyxFQUFFLENBQUM7VUFBRUMsSUFBSSxFQUFFLFdBQVc7VUFBRUMsSUFBSSxFQUFFO1FBQVksQ0FBQyxFQUM5QztVQUFFRixDQUFDLEVBQUUsQ0FBQztVQUFFQyxJQUFJLEVBQUUsTUFBTTtVQUFFUSxJQUFJLEVBQUU7UUFBWSxDQUFDLENBQzFDO1FBQ0ROLE9BQU8sRUFBRTtVQUFFQyxTQUFTLEVBQUUsQ0FBQztVQUFFQyxTQUFTLEVBQUU7UUFBRTtNQUN4QztJQUFFLENBQ0gsQ0FDSCxDQUFDO0lBRUQsSUFBTUssTUFBTSxHQUFHN0IsTUFBTSxDQUFDOEIsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUN6Q0osTUFBTSxDQUFDRyxNQUFNLENBQUMsQ0FBQ0UsZUFBZSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUM7SUFFeERqQyxTQUFTLENBQUNrQyxLQUFLLENBQUNILE1BQU0sQ0FBQztJQUN2QkgsTUFBTSxDQUFDRyxNQUFNLENBQUMsQ0FBQ0UsZUFBZSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7RUFDekQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,107 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
5
+ import { SkillsDropdown } from './SkillsDropdown';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ var skill = function skill(overrides) {
8
+ return _objectSpread({
9
+ id: 'sk1',
10
+ name: 'Resumir',
11
+ description: 'Resume briefs',
12
+ content: 'Resume el brief',
13
+ access_type: 'only_me'
14
+ }, overrides);
15
+ };
16
+ var skills = [skill({
17
+ id: 'sk1',
18
+ name: 'Resumir'
19
+ }), skill({
20
+ id: 'sk2',
21
+ name: 'Traducir',
22
+ description: ''
23
+ })];
24
+ describe('SkillsDropdown', function () {
25
+ var onSelect = jest.fn();
26
+ var onCreate = jest.fn();
27
+ var onClose = jest.fn();
28
+ beforeEach(function () {
29
+ onSelect.mockClear();
30
+ onCreate.mockClear();
31
+ onClose.mockClear();
32
+ });
33
+ it('filters by name and selects a skill', function () {
34
+ renderWithProviders(/*#__PURE__*/_jsx(SkillsDropdown, {
35
+ skills: skills,
36
+ query: "trad",
37
+ onSelect: onSelect,
38
+ onClose: onClose,
39
+ bottom: 0,
40
+ left: 0
41
+ }));
42
+ var items = screen.getAllByRole('button');
43
+ expect(items).toHaveLength(1);
44
+ expect(items[0]).toHaveTextContent('#Traducir');
45
+ expect(screen.queryByText('#Resumir')).not.toBeInTheDocument();
46
+ fireEvent.click(items[0]);
47
+ expect(onSelect).toHaveBeenCalledWith(skills[1]);
48
+ });
49
+ it('shows the empty state when nothing matches', function () {
50
+ renderWithProviders(/*#__PURE__*/_jsx(SkillsDropdown, {
51
+ skills: skills,
52
+ query: "zzz",
53
+ onSelect: onSelect,
54
+ onClose: onClose,
55
+ bottom: 0,
56
+ left: 0
57
+ }));
58
+ expect(screen.getByText('mySkills.dropdownEmpty')).toBeInTheDocument();
59
+ });
60
+ it('shows the error state', function () {
61
+ renderWithProviders(/*#__PURE__*/_jsx(SkillsDropdown, {
62
+ skills: skills,
63
+ query: "",
64
+ error: true,
65
+ onSelect: onSelect,
66
+ onClose: onClose,
67
+ bottom: 0,
68
+ left: 0
69
+ }));
70
+ expect(screen.getByText('mySkills.dropdownError')).toBeInTheDocument();
71
+ });
72
+ it('creates a skill from the header action', function () {
73
+ renderWithProviders(/*#__PURE__*/_jsx(SkillsDropdown, {
74
+ skills: skills,
75
+ query: "",
76
+ canCreate: true,
77
+ onCreate: onCreate,
78
+ onSelect: onSelect,
79
+ onClose: onClose,
80
+ bottom: 0,
81
+ left: 0
82
+ }));
83
+ fireEvent.click(screen.getByRole('button', {
84
+ name: 'mySkills.dropdownCreate'
85
+ }));
86
+ expect(onCreate).toHaveBeenCalled();
87
+ });
88
+ it('selects the highlighted skill with Enter and closes on Escape', function () {
89
+ renderWithProviders(/*#__PURE__*/_jsx(SkillsDropdown, {
90
+ skills: skills,
91
+ query: "",
92
+ onSelect: onSelect,
93
+ onClose: onClose,
94
+ bottom: 0,
95
+ left: 0
96
+ }));
97
+ fireEvent.keyDown(document, {
98
+ key: 'Enter'
99
+ });
100
+ expect(onSelect).toHaveBeenCalledWith(skills[0]);
101
+ fireEvent.keyDown(document, {
102
+ key: 'Escape'
103
+ });
104
+ expect(onClose).toHaveBeenCalled();
105
+ });
106
+ });
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaXJlRXZlbnQiLCJyZW5kZXJXaXRoUHJvdmlkZXJzIiwic2NyZWVuIiwiU2tpbGxzRHJvcGRvd24iLCJqc3giLCJfanN4Iiwic2tpbGwiLCJvdmVycmlkZXMiLCJfb2JqZWN0U3ByZWFkIiwiaWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiYWNjZXNzX3R5cGUiLCJza2lsbHMiLCJkZXNjcmliZSIsIm9uU2VsZWN0IiwiamVzdCIsImZuIiwib25DcmVhdGUiLCJvbkNsb3NlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwicXVlcnkiLCJib3R0b20iLCJsZWZ0IiwiaXRlbXMiLCJnZXRBbGxCeVJvbGUiLCJleHBlY3QiLCJ0b0hhdmVMZW5ndGgiLCJ0b0hhdmVUZXh0Q29udGVudCIsInF1ZXJ5QnlUZXh0Iiwibm90IiwidG9CZUluVGhlRG9jdW1lbnQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiZ2V0QnlUZXh0IiwiZXJyb3IiLCJjYW5DcmVhdGUiLCJnZXRCeVJvbGUiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwia2V5RG93biIsImRvY3VtZW50Iiwia2V5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvU2tpbGxzRHJvcGRvd24vU2tpbGxzRHJvcGRvd24uc3BlYy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlyZUV2ZW50LCByZW5kZXJXaXRoUHJvdmlkZXJzLCBzY3JlZW4gfSBmcm9tICcuLi8uLi8uLi90ZXN0L3Rlc3QtdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBTa2lsbHNEcm9wZG93biB9IGZyb20gJy4vU2tpbGxzRHJvcGRvd24nXG5cbmNvbnN0IHNraWxsID0gKG92ZXJyaWRlczogUGFydGlhbDxTa2lsbD4pOiBTa2lsbCA9PiAoe1xuICBpZDogJ3NrMScsXG4gIG5hbWU6ICdSZXN1bWlyJyxcbiAgZGVzY3JpcHRpb246ICdSZXN1bWUgYnJpZWZzJyxcbiAgY29udGVudDogJ1Jlc3VtZSBlbCBicmllZicsXG4gIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG4gIC4uLm92ZXJyaWRlcyxcbn0pXG5cbmNvbnN0IHNraWxscyA9IFtza2lsbCh7IGlkOiAnc2sxJywgbmFtZTogJ1Jlc3VtaXInIH0pLCBza2lsbCh7IGlkOiAnc2syJywgbmFtZTogJ1RyYWR1Y2lyJywgZGVzY3JpcHRpb246ICcnIH0pXVxuXG5kZXNjcmliZSgnU2tpbGxzRHJvcGRvd24nLCAoKSA9PiB7XG4gIGNvbnN0IG9uU2VsZWN0ID0gamVzdC5mbigpXG4gIGNvbnN0IG9uQ3JlYXRlID0gamVzdC5mbigpXG4gIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKClcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvblNlbGVjdC5tb2NrQ2xlYXIoKVxuICAgIG9uQ3JlYXRlLm1vY2tDbGVhcigpXG4gICAgb25DbG9zZS5tb2NrQ2xlYXIoKVxuICB9KVxuXG4gIGl0KCdmaWx0ZXJzIGJ5IG5hbWUgYW5kIHNlbGVjdHMgYSBza2lsbCcsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPFNraWxsc0Ryb3Bkb3duIHNraWxscz17c2tpbGxzfSBxdWVyeT1cInRyYWRcIiBvblNlbGVjdD17b25TZWxlY3R9IG9uQ2xvc2U9e29uQ2xvc2V9IGJvdHRvbT17MH0gbGVmdD17MH0gLz5cbiAgICApXG5cbiAgICBjb25zdCBpdGVtcyA9IHNjcmVlbi5nZXRBbGxCeVJvbGUoJ2J1dHRvbicpXG4gICAgZXhwZWN0KGl0ZW1zKS50b0hhdmVMZW5ndGgoMSlcbiAgICBleHBlY3QoaXRlbXNbMF0pLnRvSGF2ZVRleHRDb250ZW50KCcjVHJhZHVjaXInKVxuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJyNSZXN1bWlyJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soaXRlbXNbMF0pXG4gICAgZXhwZWN0KG9uU2VsZWN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChza2lsbHNbMV0pXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHRoZSBlbXB0eSBzdGF0ZSB3aGVuIG5vdGhpbmcgbWF0Y2hlcycsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPFNraWxsc0Ryb3Bkb3duIHNraWxscz17c2tpbGxzfSBxdWVyeT1cInp6elwiIG9uU2VsZWN0PXtvblNlbGVjdH0gb25DbG9zZT17b25DbG9zZX0gYm90dG9tPXswfSBsZWZ0PXswfSAvPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdteVNraWxscy5kcm9wZG93bkVtcHR5JykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIGVycm9yIHN0YXRlJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8U2tpbGxzRHJvcGRvd24gc2tpbGxzPXtza2lsbHN9IHF1ZXJ5PVwiXCIgZXJyb3Igb25TZWxlY3Q9e29uU2VsZWN0fSBvbkNsb3NlPXtvbkNsb3NlfSBib3R0b209ezB9IGxlZnQ9ezB9IC8+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ215U2tpbGxzLmRyb3Bkb3duRXJyb3InKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICB9KVxuXG4gIGl0KCdjcmVhdGVzIGEgc2tpbGwgZnJvbSB0aGUgaGVhZGVyIGFjdGlvbicsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICBxdWVyeT1cIlwiXG4gICAgICAgIGNhbkNyZWF0ZVxuICAgICAgICBvbkNyZWF0ZT17b25DcmVhdGV9XG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYm90dG9tPXswfVxuICAgICAgICBsZWZ0PXswfVxuICAgICAgLz5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnbXlTa2lsbHMuZHJvcGRvd25DcmVhdGUnIH0pKVxuICAgIGV4cGVjdChvbkNyZWF0ZSkudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ3NlbGVjdHMgdGhlIGhpZ2hsaWdodGVkIHNraWxsIHdpdGggRW50ZXIgYW5kIGNsb3NlcyBvbiBFc2NhcGUnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxTa2lsbHNEcm9wZG93biBza2lsbHM9e3NraWxsc30gcXVlcnk9XCJcIiBvblNlbGVjdD17b25TZWxlY3R9IG9uQ2xvc2U9e29uQ2xvc2V9IGJvdHRvbT17MH0gbGVmdD17MH0gLz5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQua2V5RG93bihkb2N1bWVudCwgeyBrZXk6ICdFbnRlcicgfSlcbiAgICBleHBlY3Qob25TZWxlY3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNraWxsc1swXSlcblxuICAgIGZpcmVFdmVudC5rZXlEb3duKGRvY3VtZW50LCB7IGtleTogJ0VzY2FwZScgfSlcbiAgICBleHBlY3Qob25DbG9zZSkudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxTQUFTLEVBQUVDLG1CQUFtQixFQUFFQyxNQUFNLFFBQVEsMEJBQTBCO0FBRWpGLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFakQsSUFBTUMsS0FBSyxHQUFHLFNBQVJBLEtBQUtBLENBQUlDLFNBQXlCO0VBQUEsT0FBQUMsYUFBQTtJQUN0Q0MsRUFBRSxFQUFFLEtBQUs7SUFDVEMsSUFBSSxFQUFFLFNBQVM7SUFDZkMsV0FBVyxFQUFFLGVBQWU7SUFDNUJDLE9BQU8sRUFBRSxpQkFBaUI7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
@@ -0,0 +1,85 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
5
+ import { SlashCommandDropdown } from './SlashCommandDropdown';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ var action = function action(overrides) {
8
+ return _objectSpread({
9
+ id: '1',
10
+ title: 'Crear tarea',
11
+ subtitle: 'Nueva tarea',
12
+ prompt: 'p',
13
+ language: null,
14
+ category: 'tasks'
15
+ }, overrides);
16
+ };
17
+ var commands = [action({
18
+ id: 'task',
19
+ title: 'Crear tarea',
20
+ category: 'tasks'
21
+ }), action({
22
+ id: 'hours',
23
+ title: 'Cargar horas',
24
+ subtitle: 'Esta semana',
25
+ category: 'hours'
26
+ })];
27
+ describe('SlashCommandDropdown', function () {
28
+ var onSelect = jest.fn();
29
+ var onClose = jest.fn();
30
+ beforeEach(function () {
31
+ onSelect.mockClear();
32
+ onClose.mockClear();
33
+ });
34
+ it('filters commands by query and selects one', function () {
35
+ renderWithProviders(/*#__PURE__*/_jsx(SlashCommandDropdown, {
36
+ commands: commands,
37
+ query: "horas",
38
+ onSelect: onSelect,
39
+ onClose: onClose,
40
+ bottom: 0,
41
+ left: 0
42
+ }));
43
+ var hoursButton = screen.getByRole('button', {
44
+ name: /Cargar horas/
45
+ });
46
+ expect(hoursButton).toBeInTheDocument();
47
+ expect(screen.queryByRole('button', {
48
+ name: /Crear tarea/
49
+ })).not.toBeInTheDocument();
50
+ fireEvent.click(hoursButton);
51
+ expect(onSelect).toHaveBeenCalledWith(expect.objectContaining({
52
+ id: 'hours'
53
+ }));
54
+ });
55
+ it('closes on Escape and outside click', function () {
56
+ renderWithProviders(/*#__PURE__*/_jsx(SlashCommandDropdown, {
57
+ commands: commands,
58
+ query: "",
59
+ onSelect: onSelect,
60
+ onClose: onClose,
61
+ bottom: 0,
62
+ left: 0
63
+ }));
64
+ fireEvent.keyDown(document, {
65
+ key: 'Escape'
66
+ });
67
+ expect(onClose).toHaveBeenCalled();
68
+ onClose.mockClear();
69
+ fireEvent.mouseDown(document.body);
70
+ expect(onClose).toHaveBeenCalled();
71
+ });
72
+ it('returns null when nothing matches', function () {
73
+ var _renderWithProviders = renderWithProviders(/*#__PURE__*/_jsx(SlashCommandDropdown, {
74
+ commands: commands,
75
+ query: "zzz",
76
+ onSelect: onSelect,
77
+ onClose: onClose,
78
+ bottom: 0,
79
+ left: 0
80
+ })),
81
+ container = _renderWithProviders.container;
82
+ expect(container).toBeEmptyDOMElement();
83
+ });
84
+ });
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaXJlRXZlbnQiLCJyZW5kZXJXaXRoUHJvdmlkZXJzIiwic2NyZWVuIiwiU2xhc2hDb21tYW5kRHJvcGRvd24iLCJqc3giLCJfanN4IiwiYWN0aW9uIiwib3ZlcnJpZGVzIiwiX29iamVjdFNwcmVhZCIsImlkIiwidGl0bGUiLCJzdWJ0aXRsZSIsInByb21wdCIsImxhbmd1YWdlIiwiY2F0ZWdvcnkiLCJjb21tYW5kcyIsImRlc2NyaWJlIiwib25TZWxlY3QiLCJqZXN0IiwiZm4iLCJvbkNsb3NlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwicXVlcnkiLCJib3R0b20iLCJsZWZ0IiwiaG91cnNCdXR0b24iLCJnZXRCeVJvbGUiLCJuYW1lIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJxdWVyeUJ5Um9sZSIsIm5vdCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJvYmplY3RDb250YWluaW5nIiwia2V5RG93biIsImRvY3VtZW50Iiwia2V5IiwidG9IYXZlQmVlbkNhbGxlZCIsIm1vdXNlRG93biIsImJvZHkiLCJfcmVuZGVyV2l0aFByb3ZpZGVycyIsImNvbnRhaW5lciIsInRvQmVFbXB0eURPTUVsZW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9TbGFzaENvbW1hbmREcm9wZG93bi9TbGFzaENvbW1hbmREcm9wZG93bi5zcGVjLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJlRXZlbnQsIHJlbmRlcldpdGhQcm92aWRlcnMsIHNjcmVlbiB9IGZyb20gJy4uLy4uLy4uL3Rlc3QvdGVzdC11dGlscydcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuL1NsYXNoQ29tbWFuZERyb3Bkb3duJ1xuXG5jb25zdCBhY3Rpb24gPSAob3ZlcnJpZGVzOiBQYXJ0aWFsPEFjdGlvbj4pOiBBY3Rpb24gPT4gKHtcbiAgaWQ6ICcxJyxcbiAgdGl0bGU6ICdDcmVhciB0YXJlYScsXG4gIHN1YnRpdGxlOiAnTnVldmEgdGFyZWEnLFxuICBwcm9tcHQ6ICdwJyxcbiAgbGFuZ3VhZ2U6IG51bGwsXG4gIGNhdGVnb3J5OiAndGFza3MnLFxuICAuLi5vdmVycmlkZXMsXG59KVxuXG5jb25zdCBjb21tYW5kcyA9IFtcbiAgYWN0aW9uKHsgaWQ6ICd0YXNrJywgdGl0bGU6ICdDcmVhciB0YXJlYScsIGNhdGVnb3J5OiAndGFza3MnIH0pLFxuICBhY3Rpb24oeyBpZDogJ2hvdXJzJywgdGl0bGU6ICdDYXJnYXIgaG9yYXMnLCBzdWJ0aXRsZTogJ0VzdGEgc2VtYW5hJywgY2F0ZWdvcnk6ICdob3VycycgfSksXG5dXG5cbmRlc2NyaWJlKCdTbGFzaENvbW1hbmREcm9wZG93bicsICgpID0+IHtcbiAgY29uc3Qgb25TZWxlY3QgPSBqZXN0LmZuKClcbiAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKVxuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uU2VsZWN0Lm1vY2tDbGVhcigpXG4gICAgb25DbG9zZS5tb2NrQ2xlYXIoKVxuICB9KVxuXG4gIGl0KCdmaWx0ZXJzIGNvbW1hbmRzIGJ5IHF1ZXJ5IGFuZCBzZWxlY3RzIG9uZScsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPFNsYXNoQ29tbWFuZERyb3Bkb3duXG4gICAgICAgIGNvbW1hbmRzPXtjb21tYW5kc31cbiAgICAgICAgcXVlcnk9XCJob3Jhc1wiXG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYm90dG9tPXswfVxuICAgICAgICBsZWZ0PXswfVxuICAgICAgLz5cbiAgICApXG5cbiAgICBjb25zdCBob3Vyc0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL0NhcmdhciBob3Jhcy8gfSlcbiAgICBleHBlY3QoaG91cnNCdXR0b24pLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9DcmVhciB0YXJlYS8gfSkpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soaG91cnNCdXR0b24pXG4gICAgZXhwZWN0KG9uU2VsZWN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7IGlkOiAnaG91cnMnIH0pKVxuICB9KVxuXG4gIGl0KCdjbG9zZXMgb24gRXNjYXBlIGFuZCBvdXRzaWRlIGNsaWNrJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd24gY29tbWFuZHM9e2NvbW1hbmRzfSBxdWVyeT1cIlwiIG9uU2VsZWN0PXtvblNlbGVjdH0gb25DbG9zZT17b25DbG9zZX0gYm90dG9tPXswfSBsZWZ0PXswfSAvPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5rZXlEb3duKGRvY3VtZW50LCB7IGtleTogJ0VzY2FwZScgfSlcbiAgICBleHBlY3Qob25DbG9zZSkudG9IYXZlQmVlbkNhbGxlZCgpXG5cbiAgICBvbkNsb3NlLm1vY2tDbGVhcigpXG4gICAgZmlyZUV2ZW50Lm1vdXNlRG93bihkb2N1bWVudC5ib2R5KVxuICAgIGV4cGVjdChvbkNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkKClcbiAgfSlcblxuICBpdCgncmV0dXJucyBudWxsIHdoZW4gbm90aGluZyBtYXRjaGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPFNsYXNoQ29tbWFuZERyb3Bkb3duIGNvbW1hbmRzPXtjb21tYW5kc30gcXVlcnk9XCJ6enpcIiBvblNlbGVjdD17b25TZWxlY3R9IG9uQ2xvc2U9e29uQ2xvc2V9IGJvdHRvbT17MH0gbGVmdD17MH0gLz5cbiAgICApXG5cbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlRW1wdHlET01FbGVtZW50KClcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLFNBQVMsRUFBRUMsbUJBQW1CLEVBQUVDLE1BQU0sUUFBUSwwQkFBMEI7QUFFakYsU0FBU0Msb0JBQW9CLFFBQVEsd0JBQXdCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBRTdELElBQU1DLE1BQU0sR0FBRyxTQUFUQSxNQUFNQSxDQUFJQyxTQUEwQjtFQUFBLE9BQUFDLGFBQUE7SUFDeENDLEVBQUUsRUFBRSxHQUFHO0lBQ1BDLEtBQUssRUFBRSxhQUFhO0lBQ3BCQyxRQUFRLEVBQUUsYUFBYTtJQUN2QkMsTUFBTSxFQUFFLEdBQUc7SUFDWEMsUUFBUSxFQUFFLElBQUk7SUFDZEMsUUFBUSxFQUFFO0VBQU8sR0FDZFAsU0FBUztBQUFBLENBQ1o7QUFFRixJQUFNUSxRQUFRLEdBQUcsQ0FDZlQsTUFBTSxDQUFDO0VBQUVHLEVBQUUsRUFBRSxNQUFNO0VBQUVDLEtBQUssRUFBRSxhQUFhO0VBQUVJLFFBQVEsRUFBRTtBQUFRLENBQUMsQ0FBQyxFQUMvRFIsTUFBTSxDQUFDO0VBQUVHLEVBQUUsRUFBRSxPQUFPO0VBQUVDLEtBQUssRUFBRSxjQUFjO0VBQUVDLFFBQVEsRUFBRSxhQUFhO0VBQUVHLFFBQVEsRUFBRTtBQUFRLENBQUMsQ0FBQyxDQUMzRjtBQUVERSxRQUFRLENBQUMsc0JBQXNCLEVBQUUsWUFBTTtFQUNyQyxJQUFNQyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7RUFDMUIsSUFBTUMsT0FBTyxHQUFHRixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0VBRXpCRSxVQUFVLENBQUMsWUFBTTtJQUNmSixRQUFRLENBQUNLLFNBQVMsQ0FBQyxDQUFDO0lBQ3BCRixPQUFPLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0VBQ3JCLENBQUMsQ0FBQztFQUVGQyxFQUFFLENBQUMsMkNBQTJDLEVBQUUsWUFBTTtJQUNwRHRCLG1CQUFtQixjQUNqQkksSUFBQSxDQUFDRixvQkFBb0I7TUFDbkJZLFFBQVEsRUFBRUEsUUFBUztNQUNuQlMsS0FBSyxFQUFDLE9BQU87TUFDYlAsUUFBUSxFQUFFQSxRQUFTO01BQ25CRyxPQUFPLEVBQUVBLE9BQVE7TUFDakJLLE1BQU0sRUFBRSxDQUFFO01BQ1ZDLElBQUksRUFBRTtJQUFFLENBQ1QsQ0FDSCxDQUFDO0lBRUQsSUFBTUMsV0FBVyxHQUFHekIsTUFBTSxDQUFDMEIsU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBZSxDQUFDLENBQUM7SUFDeEVDLE1BQU0sQ0FBQ0gsV0FBVyxDQUFDLENBQUNJLGlCQUFpQixDQUFDLENBQUM7SUFDdkNELE1BQU0sQ0FBQzVCLE1BQU0sQ0FBQzhCLFdBQVcsQ0FBQyxRQUFRLEVBQUU7TUFBRUgsSUFBSSxFQUFFO0lBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ksR0FBRyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO0lBRXJGL0IsU0FBUyxDQUFDa0MsS0FBSyxDQUFDUCxXQUFXLENBQUM7SUFDNUJHLE1BQU0sQ0FBQ2IsUUFBUSxDQUFDLENBQUNrQixvQkFBb0IsQ0FBQ0wsTUFBTSxDQUFDTSxnQkFBZ0IsQ0FBQztNQUFFM0IsRUFBRSxFQUFFO0lBQVEsQ0FBQyxDQUFDLENBQUM7RUFDakYsQ0FBQyxDQUFDO0VBRUZjLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxZQUFNO0lBQzdDdEIsbUJBQW1CLGNBQ2pCSSxJQUFBLENBQUNGLG9CQUFvQjtNQUFDWSxRQUFRLEVBQUVBLFFBQVM7TUFBQ1MsS0FBSyxFQUFDLEVBQUU7TUFBQ1AsUUFBUSxFQUFFQSxRQUFTO01BQUNHLE9BQU8sRUFBRUEsT0FBUTtNQUFDSyxNQUFNLEVBQUUsQ0FBRTtNQUFDQyxJQUFJLEVBQUU7SUFBRSxDQUFFLENBQ2hILENBQUM7SUFFRDFCLFNBQVMsQ0FBQ3FDLE9BQU8sQ0FBQ0MsUUFBUSxFQUFFO01BQUVDLEdBQUcsRUFBRTtJQUFTLENBQUMsQ0FBQztJQUM5Q1QsTUFBTSxDQUFDVixPQUFPLENBQUMsQ0FBQ29CLGdCQUFnQixDQUFDLENBQUM7SUFFbENwQixPQUFPLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQ25CdEIsU0FBUyxDQUFDeUMsU0FBUyxDQUFDSCxRQUFRLENBQUNJLElBQUksQ0FBQztJQUNsQ1osTUFBTSxDQUFDVixPQUFPLENBQUMsQ0FBQ29CLGdCQUFnQixDQUFDLENBQUM7RUFDcEMsQ0FBQyxDQUFDO0VBRUZqQixFQUFFLENBQUMsbUNBQW1DLEVBQUUsWUFBTTtJQUM1QyxJQUFBb0Isb0JBQUEsR0FBc0IxQyxtQkFBbUIsY0FDdkNJLElBQUEsQ0FBQ0Ysb0JBQW9CO1FBQUNZLFFBQVEsRUFBRUEsUUFBUztRQUFDUyxLQUFLLEVBQUMsS0FBSztRQUFDUCxRQUFRLEVBQUVBLFFBQVM7UUFBQ0csT0FBTyxFQUFFQSxPQUFRO1FBQUNLLE1BQU0sRUFBRSxDQUFFO1FBQUNDLElBQUksRUFBRTtNQUFFLENBQUUsQ0FDbkgsQ0FBQztNQUZPa0IsU0FBUyxHQUFBRCxvQkFBQSxDQUFUQyxTQUFTO0lBSWpCZCxNQUFNLENBQUNjLFNBQVMsQ0FBQyxDQUFDQyxtQkFBbUIsQ0FBQyxDQUFDO0VBQ3pDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==