@projectcor/maia-components 2.28.0 → 2.30.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 (658) hide show
  1. package/lib/App.js +55 -0
  2. package/lib/components/atoms/ActionableButton.js +60 -0
  3. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +89 -0
  4. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +21 -0
  5. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +9 -0
  6. package/lib/components/atoms/AgentActivityIndicator/index.js +2 -0
  7. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +209 -0
  8. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +93 -0
  9. package/lib/components/atoms/ApprovalBox/index.js +2 -0
  10. package/lib/components/atoms/AttachmentCard/AttachmentCard.js +218 -0
  11. package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +52 -0
  12. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +448 -0
  13. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +58 -0
  14. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +55 -0
  15. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +14 -0
  16. package/lib/components/atoms/AttachmentCard/index.js +4 -0
  17. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +442 -0
  18. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +119 -0
  19. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +222 -0
  20. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +313 -0
  21. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
  22. package/lib/components/atoms/AttachmentPreviewModal/index.js +2 -0
  23. package/lib/components/atoms/Backdrop/Backdrop.js +17 -0
  24. package/lib/components/atoms/Backdrop/Backdrop.styles.js +9 -0
  25. package/lib/components/atoms/Backdrop/index.js +2 -0
  26. package/lib/components/atoms/CardItem.js +7 -0
  27. package/lib/components/atoms/CardMenu/CardMenu.js +131 -0
  28. package/lib/components/atoms/CardMenu/index.js +2 -0
  29. package/lib/components/atoms/CardMenu/styles.js +21 -0
  30. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +77 -0
  31. package/lib/components/atoms/ChatClientSelector/index.js +2 -0
  32. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
  33. package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
  34. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
  35. package/lib/components/atoms/Checkbox/Checkbox.js +34 -0
  36. package/lib/components/atoms/Checkbox/index.js +2 -0
  37. package/lib/components/atoms/Checkbox/styles.js +39 -0
  38. package/lib/components/atoms/Chip/Chip.js +150 -0
  39. package/lib/components/atoms/Chip/index.js +2 -0
  40. package/lib/components/atoms/Chip/styles.js +43 -0
  41. package/lib/components/atoms/ChipLlm/ChipLlm.js +45 -0
  42. package/lib/components/atoms/ChipLlm/ChipLlm.style.js +21 -0
  43. package/lib/components/atoms/ChipLlm/index.js +2 -0
  44. package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +2 -0
  45. package/lib/components/atoms/ChipStatus/ChipStatus.js +14 -0
  46. package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +27 -0
  47. package/lib/components/atoms/ChipStatus/index.js +2 -0
  48. package/lib/components/atoms/ClearButton.js +6 -0
  49. package/lib/components/atoms/ClientSelector/ClientSelector.js +146 -0
  50. package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +15 -0
  51. package/lib/components/atoms/ClientSelector/index.js +2 -0
  52. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +38 -0
  53. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +188 -0
  54. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
  55. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +434 -0
  56. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  57. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +411 -0
  58. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +10 -0
  59. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  60. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +309 -0
  61. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +157 -0
  62. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  63. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +307 -0
  64. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +108 -0
  65. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  66. package/lib/components/atoms/CopyToClipboard.js +70 -0
  67. package/lib/components/atoms/EditableLabel/EditableLabel.js +110 -0
  68. package/lib/components/atoms/EditableLabel/index.js +2 -0
  69. package/lib/components/atoms/EditableLabel/styles.js +7 -0
  70. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +22 -0
  71. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +18 -0
  72. package/lib/components/atoms/EmptySearchClients/index.js +2 -0
  73. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +19 -0
  74. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +15 -0
  75. package/lib/components/atoms/EmptySearchProjects/index.js +2 -0
  76. package/lib/components/atoms/EntitySelector/EntitySelector.js +247 -0
  77. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  78. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +67 -0
  79. package/lib/components/atoms/EntitySelector/index.js +2 -0
  80. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +14 -0
  81. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +15 -0
  82. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +14 -0
  83. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +15 -0
  84. package/lib/components/atoms/ErrorSearchFaqs/index.js +2 -0
  85. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +18 -0
  86. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +15 -0
  87. package/lib/components/atoms/ErrorSearchProjects/index.js +2 -0
  88. package/lib/components/atoms/Expand/Expand.js +32 -0
  89. package/lib/components/atoms/Expand/index.js +2 -0
  90. package/lib/components/atoms/Fade/Fade.js +56 -0
  91. package/lib/components/atoms/Fade/index.js +2 -0
  92. package/lib/components/atoms/FeedbackButton/FeedbackButton.js +59 -0
  93. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +14 -0
  94. package/lib/components/atoms/FeedbackButton/index.js +2 -0
  95. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +138 -0
  96. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  97. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +43 -0
  98. package/lib/components/atoms/FrequentlyAskedQuestions/index.js +2 -0
  99. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +122 -0
  100. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  101. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +62 -0
  102. package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
  103. package/lib/components/atoms/GoBackButton.js +24 -0
  104. package/lib/components/atoms/HelpButton.js +44 -0
  105. package/lib/components/atoms/IconButton.js +56 -0
  106. package/lib/components/atoms/ImagePreview/ImagePreview.js +96 -0
  107. package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +70 -0
  108. package/lib/components/atoms/Input/CustomInput.interface.js +2 -0
  109. package/lib/components/atoms/Input/CustomInput.js +91 -0
  110. package/lib/components/atoms/Input/CustomInput.styles.js +39 -0
  111. package/lib/components/atoms/Input/index.js +2 -0
  112. package/lib/components/atoms/ListMenuOption/ListMenuOption.js +41 -0
  113. package/lib/components/atoms/ListMenuOption/index.js +2 -0
  114. package/lib/components/atoms/ListMenuOption/styles.js +9 -0
  115. package/lib/components/atoms/Loader.js +41 -0
  116. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +11 -0
  117. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +6 -0
  118. package/lib/components/atoms/LoadingFaqs/index.js +2 -0
  119. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +11 -0
  120. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +6 -0
  121. package/lib/components/atoms/LoadingSearchClients/index.js +2 -0
  122. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +14 -0
  123. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +10 -0
  124. package/lib/components/atoms/LoadingSearchProjects/index.js +2 -0
  125. package/lib/components/atoms/LoadingText/LoadingText.js +18 -0
  126. package/lib/components/atoms/LoadingText/index.js +2 -0
  127. package/lib/components/atoms/LoadingText/styles.js +7 -0
  128. package/lib/components/atoms/MAIAButton/MAIAButton.js +33 -0
  129. package/lib/components/atoms/MAIAButton/index.js +2 -0
  130. package/lib/components/atoms/MAIAError/MAIAError.js +15 -0
  131. package/lib/components/atoms/MAIAError/index.js +2 -0
  132. package/lib/components/atoms/MAIAInput/MAIAInput.js +1058 -0
  133. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +266 -0
  134. package/lib/components/atoms/MAIAInput/index.js +2 -0
  135. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
  136. package/lib/components/atoms/MAIAInput/styles.js +182 -0
  137. package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +2 -0
  138. package/lib/components/atoms/MAIAMessage/MAIAMessage.js +22 -0
  139. package/lib/components/atoms/MAIAMessage/index.js +2 -0
  140. package/lib/components/atoms/MAIAMessage/styles.js +7 -0
  141. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +23 -0
  142. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +2 -0
  143. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +51 -0
  144. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +26 -0
  145. package/lib/components/atoms/MaiaStreamdown/index.js +2 -0
  146. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +18 -0
  147. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +84 -0
  148. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +15 -0
  149. package/lib/components/atoms/MaiaWrapper/index.js +3 -0
  150. package/lib/components/atoms/MaiaWrapper/styles.js +21 -0
  151. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +2 -0
  152. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +84 -0
  153. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +53 -0
  154. package/lib/components/atoms/ModalClientAccess/index.js +2 -0
  155. package/lib/components/atoms/ModalInfo/ModalInfo.js +52 -0
  156. package/lib/components/atoms/ModalInfo/ModalInfoContent.js +7 -0
  157. package/lib/components/atoms/ModalInfo/index.js +3 -0
  158. package/lib/components/atoms/ModalInfo/styles.js +7 -0
  159. package/lib/components/atoms/ModalProject/ModalProject.interface.js +2 -0
  160. package/lib/components/atoms/ModalProject/ModalProject.js +112 -0
  161. package/lib/components/atoms/ModalProject/ModalProject.style.js +59 -0
  162. package/lib/components/atoms/ModalProject/index.js +2 -0
  163. package/lib/components/atoms/NextPageLoader.js +33 -0
  164. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +28 -0
  165. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +180 -0
  166. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +34 -0
  167. package/lib/components/atoms/OnboardingModalButton/index.js +3 -0
  168. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +131 -0
  169. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +59 -0
  170. package/lib/components/atoms/OptionAccessibility/index.js +2 -0
  171. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +27 -0
  172. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +18 -0
  173. package/lib/components/atoms/OptionCorPermission/index.js +2 -0
  174. package/lib/components/atoms/PrimaryButton.js +31 -0
  175. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +77 -0
  176. package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +61 -0
  177. package/lib/components/atoms/ProjectSelector/index.js +2 -0
  178. package/lib/components/atoms/SecondaryButton.js +20 -0
  179. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  180. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  181. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  182. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  183. package/lib/components/atoms/Skeleton/index.js +2 -0
  184. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
  185. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
  186. package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
  187. package/lib/components/atoms/SlashCommandChip/index.js +4 -0
  188. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +210 -0
  189. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +53 -0
  190. package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
  191. package/lib/components/atoms/Switch/Switch.js +27 -0
  192. package/lib/components/atoms/Switch/Switch.styles.js +22 -0
  193. package/lib/components/atoms/Switch/index.js +2 -0
  194. package/lib/components/atoms/TextArea/CustomTextArea.interface.js +2 -0
  195. package/lib/components/atoms/TextArea/CustomTextArea.js +93 -0
  196. package/lib/components/atoms/TextArea/CustomTextArea.styles.js +25 -0
  197. package/lib/components/atoms/TextArea/TextArea.interfaces.js +2 -0
  198. package/lib/components/atoms/TextArea/TextArea.js +172 -0
  199. package/lib/components/atoms/TextArea/TextArea.styles.js +16 -0
  200. package/lib/components/atoms/TextArea/index.js +2 -0
  201. package/lib/components/atoms/ThirdButton.js +19 -0
  202. package/lib/components/atoms/VideoModal/VideoModal.js +76 -0
  203. package/lib/components/atoms/VideoModal/index.js +2 -0
  204. package/lib/components/atoms/WithAppCfg.js +26 -0
  205. package/lib/components/atoms/WithFeatureValidation.js +23 -0
  206. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +9 -0
  207. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +6 -0
  208. package/lib/components/atoms/WrapperCenterIcon/index.js +2 -0
  209. package/lib/components/atoms/icons/AIIcon.js +23 -0
  210. package/lib/components/atoms/icons/AacFile.js +39 -0
  211. package/lib/components/atoms/icons/AccessibilityIcon.js +42 -0
  212. package/lib/components/atoms/icons/ActionAssignIcon.js +111 -0
  213. package/lib/components/atoms/icons/ActionCalendarIcon.js +112 -0
  214. package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
  215. package/lib/components/atoms/icons/ActionChatIcon.js +71 -0
  216. package/lib/components/atoms/icons/ActionCreateIcon.js +91 -0
  217. package/lib/components/atoms/icons/ActionCreateReworkIcon.js +39 -0
  218. package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
  219. package/lib/components/atoms/icons/ActionEditIcon.js +39 -0
  220. package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
  221. package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
  222. package/lib/components/atoms/icons/ActionTimeBackIcon.js +112 -0
  223. package/lib/components/atoms/icons/AgentMaiaIcon.js +31 -0
  224. package/lib/components/atoms/icons/Brain.js +77 -0
  225. package/lib/components/atoms/icons/CorAccessIcon.js +41 -0
  226. package/lib/components/atoms/icons/CorLogo.js +76 -0
  227. package/lib/components/atoms/icons/CsvFile.js +41 -0
  228. package/lib/components/atoms/icons/DocFile.js +41 -0
  229. package/lib/components/atoms/icons/DocxFile.js +41 -0
  230. package/lib/components/atoms/icons/EmptyClientIllustration.js +67 -0
  231. package/lib/components/atoms/icons/EmptyHistory.js +46 -0
  232. package/lib/components/atoms/icons/EmptySearchIllustration.js +37 -0
  233. package/lib/components/atoms/icons/EmptyState.js +84 -0
  234. package/lib/components/atoms/icons/EmptyStateAgents.js +58 -0
  235. package/lib/components/atoms/icons/ErrorIcon.js +14 -0
  236. package/lib/components/atoms/icons/ErrorSearchIllustration.js +52 -0
  237. package/lib/components/atoms/icons/ErrorState.js +51 -0
  238. package/lib/components/atoms/icons/FaqChevronIcon.js +39 -0
  239. package/lib/components/atoms/icons/FaqsIcon.js +51 -0
  240. package/lib/components/atoms/icons/FlacIcon.js +39 -0
  241. package/lib/components/atoms/icons/FolderIcon.js +29 -0
  242. package/lib/components/atoms/icons/HomeIcon.js +30 -0
  243. package/lib/components/atoms/icons/ImageFile.js +46 -0
  244. package/lib/components/atoms/icons/M4aFile.js +39 -0
  245. package/lib/components/atoms/icons/MAIAIcon.js +20 -0
  246. package/lib/components/atoms/icons/MAIAIsologo.js +65 -0
  247. package/lib/components/atoms/icons/MDFile.js +41 -0
  248. package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +41 -0
  249. package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +41 -0
  250. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
  251. package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +41 -0
  252. package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
  253. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
  254. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
  255. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
  256. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
  257. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
  258. package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
  259. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
  260. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
  261. package/lib/components/atoms/icons/MaiaSettingsProject.js +111 -0
  262. package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +193 -0
  263. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  264. package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
  265. package/lib/components/atoms/icons/Mp3File.js +39 -0
  266. package/lib/components/atoms/icons/Mp4File.js +39 -0
  267. package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
  268. package/lib/components/atoms/icons/NewChat.js +29 -0
  269. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  270. package/lib/components/atoms/icons/OgaFile.js +39 -0
  271. package/lib/components/atoms/icons/OggFile.js +39 -0
  272. package/lib/components/atoms/icons/PdfFile.js +39 -0
  273. package/lib/components/atoms/icons/PptFile.js +47 -0
  274. package/lib/components/atoms/icons/PptxFile.js +49 -0
  275. package/lib/components/atoms/icons/RetryIcon.js +34 -0
  276. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  277. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  278. package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
  279. package/lib/components/atoms/icons/TaskLinkIcon.js +27 -0
  280. package/lib/components/atoms/icons/TelescopeIcon.js +60 -0
  281. package/lib/components/atoms/icons/TemplateGradientIcon.js +42 -0
  282. package/lib/components/atoms/icons/TextFile.js +41 -0
  283. package/lib/components/atoms/icons/WavFile.js +39 -0
  284. package/lib/components/atoms/icons/WebmFile.js +50 -0
  285. package/lib/components/atoms/icons/XlsFile.js +42 -0
  286. package/lib/components/atoms/icons/XlsxFile.js +42 -0
  287. package/lib/components/atoms/icons/index.js +50 -0
  288. package/lib/components/atoms/index.js +42 -0
  289. package/lib/components/index.js +11 -0
  290. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +2 -0
  291. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +149 -0
  292. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +53 -0
  293. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +415 -0
  294. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +152 -0
  295. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +374 -0
  296. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +106 -0
  297. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +92 -0
  298. package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +57 -0
  299. package/lib/components/molecules/AbmSection/index.js +4 -0
  300. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +52 -0
  301. package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
  302. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +117 -0
  303. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  304. package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +6 -0
  305. package/lib/components/molecules/ChatAIContent/index.js +2 -0
  306. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +241 -0
  307. package/lib/components/molecules/ChatAIHistory/index.js +2 -0
  308. package/lib/components/molecules/ChatAIHistory/styles.js +22 -0
  309. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +649 -0
  310. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +115 -0
  311. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +95 -0
  312. package/lib/components/molecules/ChatAIHome/index.js +2 -0
  313. package/lib/components/molecules/ChatAIHome/styles.js +335 -0
  314. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
  315. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +853 -0
  316. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +47 -0
  317. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
  318. package/lib/components/molecules/ChatAIMessages/README.md +101 -0
  319. package/lib/components/molecules/ChatAIMessages/index.js +2 -0
  320. package/lib/components/molecules/ChatAIMessages/newStyles.js +131 -0
  321. package/lib/components/molecules/ChatAIMessages/styles.js +94 -0
  322. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1217 -0
  323. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +58 -0
  324. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +127 -0
  325. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +34 -0
  326. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +2 -0
  327. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +189 -0
  328. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -0
  329. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +2 -0
  330. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +448 -0
  331. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +108 -0
  332. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +2 -0
  333. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +48 -0
  334. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +38 -0
  335. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  336. package/lib/components/molecules/ChatAIModal/constants.js +40 -0
  337. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
  338. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
  339. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
  340. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
  341. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
  342. package/lib/components/molecules/ChatAIModal/index.js +2 -0
  343. package/lib/components/molecules/ChatAIModal/layout.js +74 -0
  344. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +457 -0
  345. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +218 -0
  346. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  347. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  348. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  349. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +48 -0
  350. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +49 -0
  351. package/lib/components/molecules/ChatAIProjectSelector/index.js +2 -0
  352. package/lib/components/molecules/ChatFooter/ChatFooter.js +337 -0
  353. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +32 -0
  354. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +14 -0
  355. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +201 -0
  356. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
  357. package/lib/components/molecules/ChatFooter/index.js +2 -0
  358. package/lib/components/molecules/ChatFooter/styles.js +23 -0
  359. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +62 -0
  360. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  361. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  362. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +118 -0
  363. package/lib/components/molecules/MessageFeedback/index.js +2 -0
  364. package/lib/components/molecules/MessageFeedback/styles.js +14 -0
  365. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +127 -0
  366. package/lib/components/molecules/ProjectSummaryChat/index.js +2 -0
  367. package/lib/components/molecules/ProjectSummaryChat/styles.js +8 -0
  368. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +152 -0
  369. package/lib/components/molecules/ProjectSummaryConfig/index.js +2 -0
  370. package/lib/components/molecules/ProjectSummaryConfig/styles.js +86 -0
  371. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +49 -0
  372. package/lib/components/molecules/ProjectSummaryContent/index.js +2 -0
  373. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +19 -0
  374. package/lib/components/molecules/ProjectSummaryModal/index.js +2 -0
  375. package/lib/components/molecules/ProjectSummaryModal/styles.js +2 -0
  376. package/lib/components/molecules/Sidebar/Sidebar.js +715 -0
  377. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +157 -0
  378. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  379. package/lib/components/molecules/Sidebar/Sidebar.styles.js +75 -0
  380. package/lib/components/molecules/Sidebar/index.js +2 -0
  381. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1420 -0
  382. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +93 -0
  383. package/lib/components/organisms/AbmAgentModal/index.js +2 -0
  384. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +175 -0
  385. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  386. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  387. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +432 -0
  388. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  389. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  390. package/lib/components/organisms/ChatAI/ChatAI.js +167 -0
  391. package/lib/components/organisms/ChatAI/index.js +2 -0
  392. package/lib/components/organisms/ChatAI/styles.js +7 -0
  393. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +23 -0
  394. package/lib/components/organisms/ClientAIButton/index.js +2 -0
  395. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +86 -0
  396. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +39 -0
  397. package/lib/components/organisms/DeleteAgentModal/index.js +2 -0
  398. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +122 -0
  399. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +47 -0
  400. package/lib/components/organisms/DeleteQuestionModal/index.js +2 -0
  401. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +138 -0
  402. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +69 -0
  403. package/lib/components/organisms/EditQuestionModal/index.js +2 -0
  404. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +113 -0
  405. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +54 -0
  406. package/lib/components/organisms/ModalFileExceeds/index.js +2 -0
  407. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +26 -0
  408. package/lib/components/organisms/ProjectAIButton/index.js +2 -0
  409. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +60 -0
  410. package/lib/components/organisms/ProjectSummary/index.js +2 -0
  411. package/lib/components/organisms/ProjectSummary/styles.js +7 -0
  412. package/lib/components/organisms/SnackBar/Snackbar.interface.js +2 -0
  413. package/lib/components/organisms/SnackBar/Snackbar.js +73 -0
  414. package/lib/components/organisms/SnackBar/Snackbar.styles.js +9 -0
  415. package/lib/components/organisms/SnackBar/index.js +2 -0
  416. package/lib/components/organisms/SourcesInformation/SourceItem.js +18 -0
  417. package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +14 -0
  418. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +66 -0
  419. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +27 -0
  420. package/lib/components/organisms/SourcesInformation/index.js +2 -0
  421. package/lib/constants/config.js +13 -0
  422. package/lib/constants/formatExtensions.js +55 -0
  423. package/lib/constants/gqlClient.js +4 -0
  424. package/lib/constants/maiaHourAgentAccess.js +15 -0
  425. package/lib/constants/maiaTaskPanelAccess.js +24 -0
  426. package/lib/constants/maiaTaskPanelOutsideClick.js +9 -0
  427. package/lib/constants/maiaTaskPanelZIndex.js +19 -0
  428. package/lib/constants/permissions/config.js +72 -0
  429. package/lib/constants/permissions/index.js +3 -0
  430. package/lib/constants/permissions/types.js +2 -0
  431. package/lib/constants/permissions/utils.js +18 -0
  432. package/lib/constants/plannerSyncEvents.js +15 -0
  433. package/lib/constants/taskLinkIcon.js +15 -0
  434. package/lib/constants/taskUrls.js +11 -0
  435. package/lib/context/cor-user.js +31 -0
  436. package/lib/context/global-context.js +39 -0
  437. package/lib/dev/DevChatAI.js +101 -0
  438. package/lib/dev/DevContextMentionInput.js +67 -0
  439. package/lib/dev/ProjectSummary.js +9 -0
  440. package/lib/dev/Providers.js +27 -0
  441. package/lib/exports.js +2 -0
  442. package/lib/hooks/README.md +192 -0
  443. package/lib/hooks/index.js +30 -0
  444. package/lib/hooks/useAccessClient/index.js +2 -0
  445. package/lib/hooks/useAccessClient/useAccessClient.js +81 -0
  446. package/lib/hooks/useAgentModel/index.js +2 -0
  447. package/lib/hooks/useAgentModel/useAgentModel.js +62 -0
  448. package/lib/hooks/useAgentModel/useCreateAgent.js +128 -0
  449. package/lib/hooks/useAgentModel/useDeleteAgent.js +88 -0
  450. package/lib/hooks/useAgentModel/useUpdateAgent.js +129 -0
  451. package/lib/hooks/useAgentSuggestions.js +60 -0
  452. package/lib/hooks/useCaretPosition.js +65 -0
  453. package/lib/hooks/useChatManager/index.js +2 -0
  454. package/lib/hooks/useChatManager/useChatManager.interface.js +2 -0
  455. package/lib/hooks/useChatManager/useChatManager.js +1782 -0
  456. package/lib/hooks/useChatMessages/index.js +2 -0
  457. package/lib/hooks/useChatMessages/useChatMessages.interface.js +2 -0
  458. package/lib/hooks/useChatMessages/useChatMessages.js +722 -0
  459. package/lib/hooks/useChats/index.js +2 -0
  460. package/lib/hooks/useChats/useChats.interfaces.js +2 -0
  461. package/lib/hooks/useChats/useChats.js +187 -0
  462. package/lib/hooks/useClientSearch.js +163 -0
  463. package/lib/hooks/useContextMentions.js +463 -0
  464. package/lib/hooks/useContextPinPopover.js +228 -0
  465. package/lib/hooks/useDebounce.js +18 -0
  466. package/lib/hooks/useEntitySearch.js +1239 -0
  467. package/lib/hooks/useEvent.js +93 -0
  468. package/lib/hooks/useFrequentlyAskedQuestions.js +150 -0
  469. package/lib/hooks/useFrequentlyUsedActions.js +94 -0
  470. package/lib/hooks/useKnowledge/deleteKnowledge.js +69 -0
  471. package/lib/hooks/useKnowledge/downloadKnowledge.js +81 -0
  472. package/lib/hooks/useKnowledge/index.js +4 -0
  473. package/lib/hooks/useKnowledge/saveKnowledge.js +107 -0
  474. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +156 -0
  475. package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
  476. package/lib/hooks/useMentionAllowedTypes.js +136 -0
  477. package/lib/hooks/useMentionPopover.js +366 -0
  478. package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
  479. package/lib/hooks/useModal/index.js +2 -0
  480. package/lib/hooks/useModal/useModal.interfaces.js +2 -0
  481. package/lib/hooks/useModal/useModal.js +47 -0
  482. package/lib/hooks/useOnboardingNavigation.js +20 -0
  483. package/lib/hooks/useOrchestratorStream/index.js +2 -0
  484. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +2 -0
  485. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +269 -0
  486. package/lib/hooks/useProjectSearch.js +183 -0
  487. package/lib/hooks/useProjectSummary.js +101 -0
  488. package/lib/hooks/useProjectSummaryConfig.js +211 -0
  489. package/lib/hooks/useProjects.js +46 -0
  490. package/lib/hooks/useRecentClientsSearch.js +150 -0
  491. package/lib/hooks/useRecentContexts.js +86 -0
  492. package/lib/hooks/useResize.js +29 -0
  493. package/lib/hooks/useSlashCommands.js +84 -0
  494. package/lib/hooks/useSmoothStreamText/index.js +2 -0
  495. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +197 -0
  496. package/lib/hooks/useSnackBarManager/useSnackBarManager.js +41 -0
  497. package/lib/hooks/useStreamResponse.js +112 -0
  498. package/lib/hooks/useStreamdownStyles.js +13 -0
  499. package/lib/hooks/useStreamingMessage/index.js +2 -0
  500. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +18 -0
  501. package/lib/hooks/useT.js +17 -0
  502. package/lib/hooks/useTabTaskDefault.js +33 -0
  503. package/lib/hooks/useTaskPanel.js +22 -0
  504. package/lib/hooks/useTextOverflowEllipsisTooltip.js +34 -0
  505. package/lib/hooks/useToggle.js +19 -0
  506. package/lib/hooks/useToggleFavorite/index.js +2 -0
  507. package/lib/hooks/useToggleFavorite/useToggleFavorite.js +83 -0
  508. package/lib/index.css +76 -0
  509. package/lib/index.js +30 -0
  510. package/lib/lang/br/index.js +761 -0
  511. package/lib/lang/en/index.js +761 -0
  512. package/lib/lang/es/index.js +762 -0
  513. package/lib/lang/fr/index.js +582 -0
  514. package/lib/lang/index.js +24 -0
  515. package/lib/lang/utils.js +33 -0
  516. package/lib/mocks/mockChats.js +395 -0
  517. package/lib/mocks/mockOrchestrator.js +5 -0
  518. package/lib/mocks/mockProject.js +11 -0
  519. package/lib/mocks/mockProjectSummary.js +6 -0
  520. package/lib/mocks/mockedUser.js +169 -0
  521. package/lib/services/apolloClient.js +3 -0
  522. package/lib/services/appcues.js +19 -0
  523. package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +31 -0
  524. package/lib/services/corpilot/ProjectSummary/index.js +5 -0
  525. package/lib/services/corpilot/client.js +27 -0
  526. package/lib/services/corpilot/index.js +5 -0
  527. package/lib/services/maia/Access/updateAccess.js +59 -0
  528. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +46 -0
  529. package/lib/services/maia/Actions/getSlashCommands.js +39 -0
  530. package/lib/services/maia/Actions/index.js +7 -0
  531. package/lib/services/maia/Agents/createAgent.js +39 -0
  532. package/lib/services/maia/Agents/deleteAgent.js +38 -0
  533. package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
  534. package/lib/services/maia/Agents/getAgentById.js +162 -0
  535. package/lib/services/maia/Agents/getAgentModels.js +112 -0
  536. package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
  537. package/lib/services/maia/Agents/getAgents.js +718 -0
  538. package/lib/services/maia/Agents/setAgentToolGroups.js +42 -0
  539. package/lib/services/maia/Agents/toggleFavorite.js +34 -0
  540. package/lib/services/maia/Agents/updateAgent.js +39 -0
  541. package/lib/services/maia/Chats/deleteChat.js +32 -0
  542. package/lib/services/maia/Chats/getChatMessages.js +144 -0
  543. package/lib/services/maia/Chats/getChatsByUserId.js +82 -0
  544. package/lib/services/maia/Chats/index.js +15 -0
  545. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  546. package/lib/services/maia/Chats/patchChat.js +43 -0
  547. package/lib/services/maia/Chats/wasHelpfulChat.js +31 -0
  548. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +55 -0
  549. package/lib/services/maia/Faqs/index.js +5 -0
  550. package/lib/services/maia/Knowledge/delete.js +41 -0
  551. package/lib/services/maia/Knowledge/download.js +48 -0
  552. package/lib/services/maia/Knowledge/index.js +3 -0
  553. package/lib/services/maia/Knowledge/save.js +43 -0
  554. package/lib/services/maia/Orchestrator/index.js +7 -0
  555. package/lib/services/maia/Orchestrator/orchestrator.js +246 -0
  556. package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
  557. package/lib/services/maia/RecentClients/index.js +6 -0
  558. package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
  559. package/lib/services/maia/RecentContexts/index.js +6 -0
  560. package/lib/services/maia/RecentProjects/getRecentProjects.js +55 -0
  561. package/lib/services/maia/RecentProjects/index.js +6 -0
  562. package/lib/services/maia/RecentTasks/getRecentTasks.js +54 -0
  563. package/lib/services/maia/RecentTasks/index.js +6 -0
  564. package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
  565. package/lib/services/maia/RecentUsers/index.js +6 -0
  566. package/lib/services/maia/Skills/createSkill.js +39 -0
  567. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  568. package/lib/services/maia/Skills/generateSkill.js +41 -0
  569. package/lib/services/maia/Skills/getSkills.js +90 -0
  570. package/lib/services/maia/Skills/updateSkill.js +39 -0
  571. package/lib/services/maia/client.js +27 -0
  572. package/lib/services/maia/index.js +17 -0
  573. package/lib/services/query/ClientSearchQuery.js +5 -0
  574. package/lib/services/query/entitySearchQuery.js +18 -0
  575. package/lib/services/query/index.js +2 -0
  576. package/lib/services/query/projectSearchByValueQuery.js +5 -0
  577. package/lib/services/query/taskUserTabQuery.js +8 -0
  578. package/lib/services/query/usersDirectoryQuery.js +19 -0
  579. package/lib/services/types.js +6 -0
  580. package/lib/services/utils/fetchCOR.js +117 -0
  581. package/lib/services/utils/getCookie.js +10 -0
  582. package/lib/services/utils/index.js +3 -0
  583. package/lib/services/utils/mapChatMessages.js +287 -0
  584. package/lib/services/utils/validateIsMaia.js +4 -0
  585. package/lib/store/chatsSidebarOptimistic.js +92 -0
  586. package/lib/store/chatsStore.types.js +2 -0
  587. package/lib/store/chatsStoreLifecycle.js +8 -0
  588. package/lib/store/faqsStore.types.js +2 -0
  589. package/lib/store/index.js +4 -0
  590. package/lib/store/maiaLastChatPersistence.js +35 -0
  591. package/lib/store/sessions/activeView.js +22 -0
  592. package/lib/store/sessions/index.js +9 -0
  593. package/lib/store/sessions/sessionHitlContext.js +15 -0
  594. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  595. package/lib/store/sessions/sessionNotifications.js +110 -0
  596. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  597. package/lib/store/sessions/sessionStreamManager.js +715 -0
  598. package/lib/store/sessions/sessionStreamingText.js +80 -0
  599. package/lib/store/sessions/sessions.types.js +35 -0
  600. package/lib/store/sessions/useSessionMeta.js +39 -0
  601. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  602. package/lib/store/sessions/useSessionsStore.js +197 -0
  603. package/lib/store/useChatsStore.js +387 -0
  604. package/lib/store/useFaqsStore.js +27 -0
  605. package/lib/streamdownStyles.js +9 -0
  606. package/lib/styles/StyledCleanContainer.js +7 -0
  607. package/lib/styles/cascade.js +14 -0
  608. package/lib/styles/config.js +47 -0
  609. package/lib/styles/shared/scrollable.js +3 -0
  610. package/lib/styles/transitions.js +21 -0
  611. package/lib/types/Action.js +2 -0
  612. package/lib/types/AgentSuggestion.js +2 -0
  613. package/lib/types/Chat.js +10 -0
  614. package/lib/types/Client.js +2 -0
  615. package/lib/types/FrequentlyAskedQuestion.js +2 -0
  616. package/lib/types/Project.js +2 -0
  617. package/lib/types/ProjectSummaryConfigKeys.js +9 -0
  618. package/lib/types/Task.js +2 -0
  619. package/lib/types/agent.js +2 -0
  620. package/lib/types/agentModal.js +2 -0
  621. package/lib/types/contextMention.js +37 -0
  622. package/lib/types/global.d.js +2 -0
  623. package/lib/types/skill.js +2 -0
  624. package/lib/types/streamActivity.js +2 -0
  625. package/lib/types/userType.d.js +2 -0
  626. package/lib/utils/actionCategoryMap.js +37 -0
  627. package/lib/utils/actionIconMap.js +61 -0
  628. package/lib/utils/agentDisplayName.js +42 -0
  629. package/lib/utils/chatInputFiles.js +52 -0
  630. package/lib/utils/contextMentionIcons.js +134 -0
  631. package/lib/utils/contextMentionLabel.js +4 -0
  632. package/lib/utils/contextMentionTriggers.js +54 -0
  633. package/lib/utils/contextMentionTypeLabel.js +17 -0
  634. package/lib/utils/corConnectorMentionTypes.js +41 -0
  635. package/lib/utils/ensureStreamdownStyles.js +21 -0
  636. package/lib/utils/entityLinkRender.js +135 -0
  637. package/lib/utils/fileDownloadHelper.js +40 -0
  638. package/lib/utils/formatQuickActionMessage.js +16 -0
  639. package/lib/utils/formatUnreadCount.js +6 -0
  640. package/lib/utils/getUnitFileSize.js +13 -0
  641. package/lib/utils/hitlAnalytics.js +65 -0
  642. package/lib/utils/hoursPlannerQuickActionType.js +64 -0
  643. package/lib/utils/imagePreprocessor.js +108 -0
  644. package/lib/utils/index.js +3 -0
  645. package/lib/utils/maiaHostOpen.js +19 -0
  646. package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
  647. package/lib/utils/mapBackendLang.js +8 -0
  648. package/lib/utils/normalizeAgentConnectors.js +70 -0
  649. package/lib/utils/openTaskInCorPanel.js +22 -0
  650. package/lib/utils/orchestratorSubagents.js +11 -0
  651. package/lib/utils/renderContextMentions.js +399 -0
  652. package/lib/utils/retryCompletion.js +85 -0
  653. package/lib/utils/slashCommandMarker.js +30 -0
  654. package/lib/utils/sortManagerHoursHomeFuas.js +14 -0
  655. package/lib/utils/sseStreamContent.js +17 -0
  656. package/lib/utils/streamActivityMessages.js +359 -0
  657. package/lib/utils/validateTrimmedFields.js +8 -0
  658. package/package.json +1 -1
@@ -0,0 +1,366 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ 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; }
5
+ 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; }
6
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
7
+ import { ContextMentionPopover, MAIA_TASK_PANEL_OVERLAY_ATTR, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
8
+ import { useMaiaTaskPanelZIndex } from './useMaiaTaskPanelZIndex';
9
+ import { useGlobalContext } from '../context/global-context';
10
+ import { useT } from './useT';
11
+ // eslint-disable-next-line import/no-cycle
12
+ import { useEntitySearch } from './useEntitySearch';
13
+ import { useMentionAllowedTypes } from './useMentionAllowedTypes';
14
+ import { useCaretPosition } from './useCaretPosition';
15
+ import { EVENTS, useEvent } from './useEvent';
16
+ import { getAtRunTabTypes, getTriggerSequenceFromType, getTypeFromTriggerSequence } from '../utils/contextMentionTriggers';
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ var MENTION_POPOVER_GAP_PX = 4;
19
+ var MENTION_POPOVER_VIEWPORT_PAD_PX = 8;
20
+ var MENTION_POPOVER_FALLBACK_WIDTH_PX = 320;
21
+ /**
22
+ * Deriva clientId, projectId, agentEntity y MCP desde el contexto global (incl.
23
+ * `entityValues` y `chipsProject`) para filtrar recents y búsqueda GraphQL.
24
+ */
25
+ var useDerivedScope = function useDerivedScope() {
26
+ var _ref, _ctx$client$id, _ctx$client, _ctx$entityValues, _ref2, _ref3, _ctx$project$id, _ctx$project, _ctx$entityValues2, _ctx$chipsProject, _ctx$agent$entity, _ctx$agent, _ctx$agent$connectors, _ctx$agent2;
27
+ var ctx = useGlobalContext();
28
+ var clientId = (_ref = (_ctx$client$id = (_ctx$client = ctx.client) === null || _ctx$client === void 0 ? void 0 : _ctx$client.id) !== null && _ctx$client$id !== void 0 ? _ctx$client$id : (_ctx$entityValues = ctx.entityValues) === null || _ctx$entityValues === void 0 ? void 0 : _ctx$entityValues.clientId) !== null && _ref !== void 0 ? _ref : null;
29
+ var projectId = (_ref2 = (_ref3 = (_ctx$project$id = (_ctx$project = ctx.project) === null || _ctx$project === void 0 ? void 0 : _ctx$project.id) !== null && _ctx$project$id !== void 0 ? _ctx$project$id : (_ctx$entityValues2 = ctx.entityValues) === null || _ctx$entityValues2 === void 0 ? void 0 : _ctx$entityValues2.projectId) !== null && _ref3 !== void 0 ? _ref3 : (_ctx$chipsProject = ctx.chipsProject) === null || _ctx$chipsProject === void 0 ? void 0 : _ctx$chipsProject.projectId) !== null && _ref2 !== void 0 ? _ref2 : null;
30
+ var agentEntity = (_ctx$agent$entity = (_ctx$agent = ctx.agent) === null || _ctx$agent === void 0 ? void 0 : _ctx$agent.entity) !== null && _ctx$agent$entity !== void 0 ? _ctx$agent$entity : null;
31
+ var mcpSlugsKey = ((_ctx$agent$connectors = (_ctx$agent2 = ctx.agent) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.connectors) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.find(function (c) {
32
+ return c.group === 'MCP';
33
+ })) === null || _ctx$agent2 === void 0 ? void 0 : _ctx$agent2.slugs) !== null && _ctx$agent$connectors !== void 0 ? _ctx$agent$connectors : []).join('|');
34
+ var mcpSlugs = useMemo(function () {
35
+ var _ctx$agent$connectors2, _ctx$agent3;
36
+ var raw = (_ctx$agent$connectors2 = (_ctx$agent3 = ctx.agent) === null || _ctx$agent3 === void 0 || (_ctx$agent3 = _ctx$agent3.connectors) === null || _ctx$agent3 === void 0 || (_ctx$agent3 = _ctx$agent3.find(function (c) {
37
+ return c.group === 'MCP';
38
+ })) === null || _ctx$agent3 === void 0 ? void 0 : _ctx$agent3.slugs) !== null && _ctx$agent$connectors2 !== void 0 ? _ctx$agent$connectors2 : [];
39
+ return _toConsumableArray(new Set(raw.filter(function (s) {
40
+ return typeof s === 'string' && s.trim().length > 0;
41
+ }))).sort();
42
+ }, [mcpSlugsKey]);
43
+ return useMemo(function () {
44
+ return {
45
+ clientId: clientId,
46
+ projectId: projectId,
47
+ mcpSlugs: mcpSlugs,
48
+ agentEntity: agentEntity
49
+ };
50
+ }, [clientId, projectId, mcpSlugs, agentEntity] // skills se inyecta en useMentionPopover
51
+ );
52
+ };
53
+
54
+ /**
55
+ * Encapsula la lógica del popover de @-mentions (estado, fetch por tab, analytics,
56
+ * posicionamiento). El consumer mantiene el editor y el envío del mensaje.
57
+ * Los filtros de búsqueda usan `useDerivedScope`: especialista proyecto acota tareas
58
+ * al `projectId` del contexto; especialista cliente, proyectos al `clientId` (en `extra` de search).
59
+ */
60
+ export var useMentionPopover = function useMentionPopover(_ref4) {
61
+ var editorRef = _ref4.editorRef,
62
+ popoverAnchorRef = _ref4.popoverAnchorRef,
63
+ enabledTypes = _ref4.enabledTypes,
64
+ skills = _ref4.skills,
65
+ onMentionAdded = _ref4.onMentionAdded;
66
+ var _useT = useT(),
67
+ t = _useT.t;
68
+ var event = useEvent();
69
+ var _useMentionAllowedTyp = useMentionAllowedTypes(enabledTypes),
70
+ allowedTypes = _useMentionAllowedTyp.allowedTypes,
71
+ defaultType = _useMentionAllowedTyp.defaultType;
72
+ var mentionPopoverZIndex = useMaiaTaskPanelZIndex(1200, 'overlay');
73
+ var tooltipZIndex = useMaiaTaskPanelZIndex(1500, 'overlay');
74
+ var _useState = useState(defaultType),
75
+ _useState2 = _slicedToArray(_useState, 2),
76
+ activeType = _useState2[0],
77
+ setActiveType = _useState2[1];
78
+ var _useState3 = useState(false),
79
+ _useState4 = _slicedToArray(_useState3, 2),
80
+ popoverOpen = _useState4[0],
81
+ setPopoverOpen = _useState4[1];
82
+ var _useState5 = useState({
83
+ bottom: 0,
84
+ left: 0,
85
+ width: 0
86
+ }),
87
+ _useState6 = _slicedToArray(_useState5, 2),
88
+ popoverPos = _useState6[0],
89
+ setPopoverPos = _useState6[1];
90
+ var _useState7 = useState(0),
91
+ _useState8 = _slicedToArray(_useState7, 2),
92
+ activeIndex = _useState8[0],
93
+ setActiveIndex = _useState8[1];
94
+ var _useState9 = useState(false),
95
+ _useState0 = _slicedToArray(_useState9, 2),
96
+ isKeyboardNavActive = _useState0[0],
97
+ setIsKeyboardNavActive = _useState0[1];
98
+ var hasEmittedOpen = useRef(false);
99
+ var popoverRef = useRef(null);
100
+ var getCaretRect = useCaretPosition();
101
+ var derivedScope = useDerivedScope();
102
+ var scope = useMemo(function () {
103
+ return skills ? _objectSpread(_objectSpread({}, derivedScope), {}, {
104
+ skills: skills
105
+ }) : derivedScope;
106
+ }, [derivedScope, skills]);
107
+ var _useEntitySearch = useEntitySearch(activeType, scope),
108
+ items = _useEntitySearch.items,
109
+ loading = _useEntitySearch.loading,
110
+ error = _useEntitySearch.error,
111
+ hideRecentsLabel = _useEntitySearch.hideRecentsLabel,
112
+ hasMore = _useEntitySearch.hasMore,
113
+ isLoadingMore = _useEntitySearch.isLoadingMore,
114
+ loadMore = _useEntitySearch.loadMore,
115
+ searchValue = _useEntitySearch.searchValue,
116
+ updateSearchValue = _useEntitySearch.updateSearchValue,
117
+ skillsCatalogEmpty = _useEntitySearch.skillsCatalogEmpty;
118
+ useEffect(function () {
119
+ if (!allowedTypes.includes(activeType)) {
120
+ setActiveType(defaultType);
121
+ }
122
+ }, [allowedTypes, activeType, defaultType]);
123
+ var positionPopover = useCallback(function () {
124
+ var _popoverAnchorRef$cur, _editorRef$current$ge, _editorRef$current, _editorRef$current$ge2, _caret$top;
125
+ var fromAnchor = popoverAnchorRef === null || popoverAnchorRef === void 0 || (_popoverAnchorRef$cur = popoverAnchorRef.current) === null || _popoverAnchorRef$cur === void 0 ? void 0 : _popoverAnchorRef$cur.getBoundingClientRect();
126
+ var fromEditor = (_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || (_editorRef$current$ge2 = _editorRef$current.getEditorClientRect) === null || _editorRef$current$ge2 === void 0 ? void 0 : _editorRef$current$ge2.call(_editorRef$current)) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : null;
127
+ var widthRect = fromAnchor !== null && fromAnchor !== void 0 ? fromAnchor : fromEditor;
128
+ var caret = getCaretRect('@');
129
+ var width = widthRect && widthRect.width > 0 ? widthRect.width : MENTION_POPOVER_FALLBACK_WIDTH_PX;
130
+ var leftSource = widthRect && widthRect.width > 0 ? widthRect.left : caret === null || caret === void 0 ? void 0 : caret.left;
131
+ var topSource = (_caret$top = caret === null || caret === void 0 ? void 0 : caret.top) !== null && _caret$top !== void 0 ? _caret$top : widthRect && widthRect.width > 0 ? widthRect.top : null;
132
+ if (leftSource == null || topSource == null) return;
133
+ var viewportW = window.innerWidth;
134
+ var viewportH = window.innerHeight;
135
+ var left = Math.max(MENTION_POPOVER_VIEWPORT_PAD_PX, Math.min(viewportW - width - MENTION_POPOVER_VIEWPORT_PAD_PX, leftSource));
136
+
137
+ /** Ancho del input; borde inferior ~4px por encima del `@` que abre las menciones. */
138
+ setPopoverPos({
139
+ width: width,
140
+ left: left,
141
+ bottom: viewportH - topSource + MENTION_POPOVER_GAP_PX
142
+ });
143
+ }, [popoverAnchorRef, editorRef, getCaretRect]);
144
+ var resetMentionOpenTracking = useCallback(function () {
145
+ hasEmittedOpen.current = false;
146
+ }, []);
147
+ var close = useCallback(function () {
148
+ setPopoverOpen(false);
149
+ updateSearchValue('');
150
+ }, [updateSearchValue]);
151
+ var handleTrigger = useCallback(function (trigger) {
152
+ if (allowedTypes.length === 0) {
153
+ if (popoverOpen) close();
154
+ return;
155
+ }
156
+ if (trigger.active) {
157
+ // detectMentionTrigger marca @/ como atRunLength === -1 (slash consumido, no queda en query)
158
+ var isSkillTrigger = allowedTypes.includes('skill') && trigger.atRunLength === -1;
159
+ var atRunTabTypes = getAtRunTabTypes(allowedTypes);
160
+ var atRunTypesOrAll = atRunTabTypes.length > 0 ? atRunTabTypes : allowedTypes.filter(function (type) {
161
+ return type !== 'skill';
162
+ });
163
+ var isSlashTrigger = trigger.atRunLength < 0;
164
+ var typeFromAt;
165
+ var effectiveQuery;
166
+ if (isSkillTrigger) {
167
+ typeFromAt = 'skill';
168
+ effectiveQuery = trigger.query;
169
+ } else if (isSlashTrigger) {
170
+ typeFromAt = getTypeFromTriggerSequence(trigger.atRunLength, allowedTypes, defaultType);
171
+ effectiveQuery = trigger.query;
172
+ } else {
173
+ var overflowAtCount = Math.max(0, trigger.atRunLength - atRunTabTypes.length);
174
+ var effectiveAtRunLength = Math.min(trigger.atRunLength, atRunTypesOrAll.length);
175
+ effectiveQuery = "".concat('@'.repeat(overflowAtCount)).concat(trigger.query);
176
+ typeFromAt = getTypeFromTriggerSequence(effectiveAtRunLength, atRunTypesOrAll, defaultType);
177
+ }
178
+ if (!popoverOpen) {
179
+ setPopoverOpen(true);
180
+ setActiveType(typeFromAt);
181
+ positionPopover();
182
+ if (!hasEmittedOpen.current) {
183
+ event(EVENTS.aiChatMentionOpen, {
184
+ type: typeFromAt
185
+ });
186
+ hasEmittedOpen.current = true;
187
+ }
188
+ } else {
189
+ setActiveType(typeFromAt);
190
+ positionPopover();
191
+ }
192
+ updateSearchValue(effectiveQuery);
193
+ } else if (popoverOpen) {
194
+ close();
195
+ }
196
+ }, [allowedTypes, defaultType, popoverOpen, positionPopover, updateSearchValue, event, close]);
197
+ var insertSelectedItem = useCallback(function (item) {
198
+ var _item$raw$clientId, _item$raw$clientName, _item$raw$projectName, _item$raw$feeId, _item$raw$fatherId, _item$raw$fatherTitle, _item$raw$totalProyec, _item$raw$name, _item$raw$picture, _item$raw$positionNam, _item$raw$email, _editorRef$current2;
199
+ var mention = {
200
+ id: item.id,
201
+ type: item.type,
202
+ label: item.primary,
203
+ metadata: {
204
+ clientId: (_item$raw$clientId = item.raw.clientId) !== null && _item$raw$clientId !== void 0 ? _item$raw$clientId : null,
205
+ clientName: (_item$raw$clientName = item.raw.clientName) !== null && _item$raw$clientName !== void 0 ? _item$raw$clientName : null,
206
+ projectName: (_item$raw$projectName = item.raw.projectName) !== null && _item$raw$projectName !== void 0 ? _item$raw$projectName : null,
207
+ feeId: (_item$raw$feeId = item.raw.feeId) !== null && _item$raw$feeId !== void 0 ? _item$raw$feeId : null,
208
+ fatherId: (_item$raw$fatherId = item.raw.fatherId) !== null && _item$raw$fatherId !== void 0 ? _item$raw$fatherId : null,
209
+ fatherTitle: (_item$raw$fatherTitle = item.raw.fatherTitle) !== null && _item$raw$fatherTitle !== void 0 ? _item$raw$fatherTitle : null,
210
+ totalProyectos: (_item$raw$totalProyec = item.raw.totalProyectos) !== null && _item$raw$totalProyec !== void 0 ? _item$raw$totalProyec : null,
211
+ name: (_item$raw$name = item.raw.name) !== null && _item$raw$name !== void 0 ? _item$raw$name : null,
212
+ picture: (_item$raw$picture = item.raw.picture) !== null && _item$raw$picture !== void 0 ? _item$raw$picture : null,
213
+ positionName: (_item$raw$positionNam = item.raw.positionName) !== null && _item$raw$positionNam !== void 0 ? _item$raw$positionNam : null,
214
+ email: (_item$raw$email = item.raw.email) !== null && _item$raw$email !== void 0 ? _item$raw$email : null
215
+ }
216
+ };
217
+ (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 || _editorRef$current2.insertMention(mention);
218
+ onMentionAdded === null || onMentionAdded === void 0 || onMentionAdded(mention);
219
+ event(EVENTS.aiChatMentionSelect, {
220
+ type: mention.type,
221
+ id: String(mention.id)
222
+ });
223
+ close();
224
+ }, [editorRef, onMentionAdded, event, close]);
225
+ var handleTypeChange = useCallback(function (type) {
226
+ setActiveType(type);
227
+ if (type === 'skill') {
228
+ var _editorRef$current3;
229
+ (_editorRef$current3 = editorRef.current) === null || _editorRef$current3 === void 0 || _editorRef$current3.syncSkillTrigger();
230
+ } else {
231
+ var _editorRef$current4;
232
+ var nextRunLength = getTriggerSequenceFromType(type, allowedTypes.filter(function (entityType) {
233
+ return entityType !== 'skill';
234
+ }));
235
+ (_editorRef$current4 = editorRef.current) === null || _editorRef$current4 === void 0 || _editorRef$current4.syncTriggerAtRunLength(nextRunLength);
236
+ }
237
+ event(EVENTS.aiChatMentionTypeSwitch, {
238
+ type: type
239
+ });
240
+ }, [allowedTypes, editorRef, event]);
241
+ var handleKeyDown = useCallback(function (e) {
242
+ if (!popoverOpen || allowedTypes.length === 0) return false;
243
+ if (e.key === 'Escape') {
244
+ e.preventDefault();
245
+ close();
246
+ return true;
247
+ }
248
+ if ((e.key === 'ArrowRight' || e.key === 'ArrowLeft') && (e.metaKey || e.altKey)) {
249
+ e.preventDefault();
250
+ var idx = allowedTypes.indexOf(activeType);
251
+ var delta = e.key === 'ArrowRight' ? 1 : -1;
252
+ var nextIdx = (idx + delta + allowedTypes.length) % allowedTypes.length;
253
+ handleTypeChange(allowedTypes[nextIdx]);
254
+ return true;
255
+ }
256
+ if (items.length === 0) return false;
257
+ if (e.key === 'ArrowDown') {
258
+ e.preventDefault();
259
+ setIsKeyboardNavActive(true);
260
+ setActiveIndex(function (prev) {
261
+ return items.length > 0 ? Math.min(prev + 1, items.length - 1) : 0;
262
+ });
263
+ return true;
264
+ }
265
+ if (e.key === 'ArrowUp') {
266
+ e.preventDefault();
267
+ setIsKeyboardNavActive(true);
268
+ setActiveIndex(function (prev) {
269
+ return Math.max(prev - 1, 0);
270
+ });
271
+ return true;
272
+ }
273
+ if (e.key === 'Enter' || e.key === 'Tab') {
274
+ e.preventDefault();
275
+ insertSelectedItem(items[activeIndex]);
276
+ return true;
277
+ }
278
+ return false;
279
+ }, [popoverOpen, items, allowedTypes, activeType, activeIndex, insertSelectedItem, close, handleTypeChange]);
280
+ useLayoutEffect(function () {
281
+ if (!popoverOpen) return undefined;
282
+ positionPopover();
283
+ var handler = function handler() {
284
+ return positionPopover();
285
+ };
286
+ window.addEventListener('scroll', handler, true);
287
+ window.addEventListener('resize', handler);
288
+ return function () {
289
+ window.removeEventListener('scroll', handler, true);
290
+ window.removeEventListener('resize', handler);
291
+ };
292
+ }, [popoverOpen, positionPopover]);
293
+ useEffect(function () {
294
+ if (!popoverOpen) return undefined;
295
+ var handlePointerDownOutside = function handlePointerDownOutside(mouseEvent) {
296
+ var _popoverRef$current, _popoverAnchorRef$cur2;
297
+ var target = mouseEvent.target;
298
+ if (!target) return;
299
+ if ((_popoverRef$current = popoverRef.current) !== null && _popoverRef$current !== void 0 && _popoverRef$current.contains(target)) return;
300
+ if (popoverAnchorRef !== null && popoverAnchorRef !== void 0 && (_popoverAnchorRef$cur2 = popoverAnchorRef.current) !== null && _popoverAnchorRef$cur2 !== void 0 && _popoverAnchorRef$cur2.contains(target)) return;
301
+ close();
302
+ };
303
+ document.addEventListener('mousedown', handlePointerDownOutside);
304
+ return function () {
305
+ return document.removeEventListener('mousedown', handlePointerDownOutside);
306
+ };
307
+ }, [popoverOpen, close, popoverAnchorRef]);
308
+ var prevIsLoadingMoreRef = useRef(false);
309
+ useEffect(function () {
310
+ return function () {
311
+ prevIsLoadingMoreRef.current = isLoadingMore;
312
+ };
313
+ }, [isLoadingMore]);
314
+ useEffect(function () {
315
+ if (prevIsLoadingMoreRef.current) return;
316
+ setActiveIndex(0);
317
+ }, [items.length, activeType]);
318
+ var popoverNode = useMemo(function () {
319
+ if (!popoverOpen) return null;
320
+ return /*#__PURE__*/_jsx(SCMPAnchor, _objectSpread(_objectSpread({
321
+ ref: popoverRef
322
+ }, _defineProperty({}, MAIA_TASK_PANEL_OVERLAY_ATTR, '')), {}, {
323
+ $bottom: popoverPos.bottom,
324
+ $left: popoverPos.left,
325
+ $width: popoverPos.width,
326
+ $zIndex: mentionPopoverZIndex,
327
+ onMouseDown: function onMouseDown(e) {
328
+ return e.stopPropagation();
329
+ },
330
+ children: /*#__PURE__*/_jsx(ContextMentionPopover, {
331
+ allowedTypes: allowedTypes,
332
+ activeType: activeType,
333
+ onTypeChange: handleTypeChange,
334
+ items: items,
335
+ loading: loading,
336
+ error: error,
337
+ hideRecentsLabel: hideRecentsLabel,
338
+ skillsCatalogEmpty: skillsCatalogEmpty,
339
+ hasMore: hasMore,
340
+ isLoadingMore: isLoadingMore,
341
+ onReachListEnd: loadMore,
342
+ searchValue: searchValue,
343
+ keyboardHint: t('contextMention.keyboardHint', {
344
+ defaultValue: 'Navegación entre pestañas: @, @@, @@@… en orden. También Alt/Cmd + ←/→'
345
+ }),
346
+ tooltipZIndex: tooltipZIndex,
347
+ onItemSelected: insertSelectedItem,
348
+ activeIndex: activeIndex,
349
+ onActiveIndexChange: setActiveIndex,
350
+ isKeyboardNavActive: isKeyboardNavActive,
351
+ onMouseMoveInList: function onMouseMoveInList() {
352
+ return setIsKeyboardNavActive(false);
353
+ }
354
+ })
355
+ }));
356
+ }, [popoverOpen, popoverPos, mentionPopoverZIndex, allowedTypes, activeType, handleTypeChange, items, loading, error, hideRecentsLabel, skillsCatalogEmpty, hasMore, isLoadingMore, loadMore, searchValue, tooltipZIndex, insertSelectedItem, activeIndex, isKeyboardNavActive]);
357
+ return {
358
+ popoverOpen: popoverOpen,
359
+ resetMentionOpenTracking: resetMentionOpenTracking,
360
+ handleTrigger: handleTrigger,
361
+ handleKeyDown: handleKeyDown,
362
+ popoverNode: popoverNode,
363
+ close: close
364
+ };
365
+ };
366
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldEF0UnVuVGFiVHlwZXMiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsImdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlIiwianN4IiwiX2pzeCIsIk1FTlRJT05fUE9QT1ZFUl9HQVBfUFgiLCJNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYIiwiTUVOVElPTl9QT1BPVkVSX0ZBTExCQUNLX1dJRFRIX1BYIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZiIsIl9jdHgkY2xpZW50JGlkIiwiX2N0eCRjbGllbnQiLCJfY3R4JGVudGl0eVZhbHVlcyIsIl9yZWYyIiwiX3JlZjMiLCJfY3R4JHByb2plY3QkaWQiLCJfY3R4JHByb2plY3QiLCJfY3R4JGVudGl0eVZhbHVlczIiLCJfY3R4JGNoaXBzUHJvamVjdCIsIl9jdHgkYWdlbnQkZW50aXR5IiwiX2N0eCRhZ2VudCIsIl9jdHgkYWdlbnQkY29ubmVjdG9ycyIsIl9jdHgkYWdlbnQyIiwiY3R4IiwiY2xpZW50SWQiLCJjbGllbnQiLCJpZCIsImVudGl0eVZhbHVlcyIsInByb2plY3RJZCIsInByb2plY3QiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiZmluZCIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQzIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmNCIsImVkaXRvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJlbmFibGVkVHlwZXMiLCJza2lsbHMiLCJvbk1lbnRpb25BZGRlZCIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZU1lbnRpb25BbGxvd2VkVHlwIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0IiwiZGVyaXZlZFNjb3BlIiwic2NvcGUiLCJfb2JqZWN0U3ByZWFkIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwic2tpbGxzQ2F0YWxvZ0VtcHR5IiwiaW5jbHVkZXMiLCJwb3NpdGlvblBvcG92ZXIiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UyIiwiX2NhcmV0JHRvcCIsImZyb21BbmNob3IiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZnJvbUVkaXRvciIsImdldEVkaXRvckNsaWVudFJlY3QiLCJjYWxsIiwid2lkdGhSZWN0IiwiY2FyZXQiLCJsZWZ0U291cmNlIiwidG9wU291cmNlIiwidG9wIiwidmlld3BvcnRXIiwid2luZG93IiwiaW5uZXJXaWR0aCIsInZpZXdwb3J0SCIsImlubmVySGVpZ2h0IiwiTWF0aCIsIm1heCIsIm1pbiIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImNsb3NlIiwiaGFuZGxlVHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmUiLCJpc1NraWxsVHJpZ2dlciIsImF0UnVuTGVuZ3RoIiwiYXRSdW5UYWJUeXBlcyIsImF0UnVuVHlwZXNPckFsbCIsInR5cGUiLCJpc1NsYXNoVHJpZ2dlciIsInR5cGVGcm9tQXQiLCJlZmZlY3RpdmVRdWVyeSIsInF1ZXJ5Iiwib3ZlcmZsb3dBdENvdW50IiwiZWZmZWN0aXZlQXRSdW5MZW5ndGgiLCJjb25jYXQiLCJyZXBlYXQiLCJhaUNoYXRNZW50aW9uT3BlbiIsImluc2VydFNlbGVjdGVkSXRlbSIsIml0ZW0iLCJfaXRlbSRyYXckY2xpZW50SWQiLCJfaXRlbSRyYXckY2xpZW50TmFtZSIsIl9pdGVtJHJhdyRwcm9qZWN0TmFtZSIsIl9pdGVtJHJhdyRmZWVJZCIsIl9pdGVtJHJhdyRmYXRoZXJJZCIsIl9pdGVtJHJhdyRmYXRoZXJUaXRsZSIsIl9pdGVtJHJhdyR0b3RhbFByb3llYyIsIl9pdGVtJHJhdyRuYW1lIiwiX2l0ZW0kcmF3JHBpY3R1cmUiLCJfaXRlbSRyYXckcG9zaXRpb25OYW0iLCJfaXRlbSRyYXckZW1haWwiLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwibWVudGlvbiIsImxhYmVsIiwicHJpbWFyeSIsIm1ldGFkYXRhIiwiY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwiZmVlSWQiLCJmYXRoZXJJZCIsImZhdGhlclRpdGxlIiwidG90YWxQcm95ZWN0b3MiLCJuYW1lIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsImVtYWlsIiwiaW5zZXJ0TWVudGlvbiIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsInN5bmNTa2lsbFRyaWdnZXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQ0IiwibmV4dFJ1bkxlbmd0aCIsImVudGl0eVR5cGUiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJoYW5kbGVLZXlEb3duIiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0IiwibWV0YUtleSIsImFsdEtleSIsImlkeCIsImluZGV4T2YiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIyIiwidGFyZ2V0IiwiY29udGFpbnMiLCJkb2N1bWVudCIsInByZXZJc0xvYWRpbmdNb3JlUmVmIiwicG9wb3Zlck5vZGUiLCJyZWYiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJjaGlsZHJlbiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHtcbiAgQ29udGV4dE1lbnRpb25Qb3BvdmVyLFxuICBNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSLFxuICBTQ01QQW5jaG9yLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBFbnRpdHlTZWFyY2hTY29wZSwgdXNlRW50aXR5U2VhcmNoIH0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2gnXG5pbXBvcnQgeyB1c2VNZW50aW9uQWxsb3dlZFR5cGVzIH0gZnJvbSAnLi91c2VNZW50aW9uQWxsb3dlZFR5cGVzJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4vdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi90eXBlcy9za2lsbCdcbmltcG9ydCB7XG4gIGdldEF0UnVuVGFiVHlwZXMsXG4gIGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlLFxuICBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSxcbn0gZnJvbSAnLi4vdXRpbHMvY29udGV4dE1lbnRpb25UcmlnZ2VycydcblxuY29uc3QgTUVOVElPTl9QT1BPVkVSX0dBUF9QWCA9IDRcbmNvbnN0IE1FTlRJT05fUE9QT1ZFUl9WSUVXUE9SVF9QQURfUFggPSA4XG5jb25zdCBNRU5USU9OX1BPUE9WRVJfRkFMTEJBQ0tfV0lEVEhfUFggPSAzMjBcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJPcHRpb25zID0ge1xuICBlZGl0b3JSZWY6IFJlZk9iamVjdDxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZT5cbiAgLyoqXG4gICAqIE5vZG8gY3V5byBhbmNobyB5IGFsaW5lYWNpw7NuIGhvcml6b250YWwgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIEVsIGFuY2xhIHZlcnRpY2FsIGVzIGVsIGNhcmV0IC8gdGV4dG8gZGVsIHRyaWdnZXIgYEBgLiBTaSBubyBoYXkgY2FyZXQsIHNlIHVzYSBlbCBib3JkZSBzdXBlcmlvciBkZSBlc3RlIG5vZG8uXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIFNraWxscyBpbnllY3RhZGFzIGRpcmVjdGFtZW50ZSAoZGV2L3Rlc3RpbmcpLiBTaSBzZSBwcm92ZWVuLCBzZSBvbWl0ZSBlbCBmZXRjaCBSRVNULiAqL1xuICBza2lsbHM/OiBTa2lsbFtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKlxuICAgKiBSZWluaWNpYSBlbCB0cmFja2luZyBkZSBgQUlfQ0hBVF9NRU5USU9OX09QRU5gIChwcmltZXJhIGFwZXJ0dXJhIHBvciBtZW5zYWplKS5cbiAgICogTGxhbWFyIHRyYXMgZW52aWFyIGVsIG1lbnNhamUgbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gICAqL1xuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc2EgZWwgdHJpZ2dlciBwcm92ZW5pZW50ZSBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yLm9uSW5wdXRgLiAqL1xuICBoYW5kbGVUcmlnZ2VyOiAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4gdm9pZFxuICAvKipcbiAgICogTWFuZWpvIGRlIHRlY2xhcyByZWxhdGl2YXMgYWwgcG9wb3ZlciAobmF2ZWdhY2nDs24sIHNlbGVjY2nDs24sIGNhbWJpbyBkZVxuICAgKiB0YWIgeSBlc2NhcGUpLiBEZXZ1ZWx2ZSBgdHJ1ZWAgc2kgY29uc3VtacOzIGxhIGtleSwgcGFyYSBxdWUgZWwgY29uc3VtZXJcbiAgICogcHVlZGEgZGVjaWRpciBzaSBzZWd1aXIgcHJvY2VzYW5kbyBvdHJhcyB0ZWNsYXMgKHAuZWouIEVudGVyIHBhcmEgZW52aWFyKS5cbiAgICovXG4gIGhhbmRsZUtleURvd246IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gYm9vbGVhblxuICAvKiogTm9kbyBkZWwgcG9wb3ZlcjsgZWwgY29uc3VtZXIgZGViZSBwb3J0YXJsbyBjb24gYGNyZWF0ZVBvcnRhbGAuICovXG4gIHBvcG92ZXJOb2RlOiBSZWFjdE5vZGUgfCBudWxsXG4gIC8qKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBlbCBxdWVyeS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBEZXJpdmEgY2xpZW50SWQsIHByb2plY3RJZCwgYWdlbnRFbnRpdHkgeSBNQ1AgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsIChpbmNsLlxuICogYGVudGl0eVZhbHVlc2AgeSBgY2hpcHNQcm9qZWN0YCkgcGFyYSBmaWx0cmFyIHJlY2VudHMgeSBiw7pzcXVlZGEgR3JhcGhRTC5cbiAqL1xuY29uc3QgdXNlRGVyaXZlZFNjb3BlID0gKCk6IEVudGl0eVNlYXJjaFNjb3BlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGNsaWVudElkID0gY3R4LmNsaWVudD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8uY2xpZW50SWQgPz8gbnVsbFxuICBjb25zdCBwcm9qZWN0SWQgPSBjdHgucHJvamVjdD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8ucHJvamVjdElkID8/IGN0eC5jaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gY3R4LmFnZW50Py5lbnRpdHkgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHkgfSksXG4gICAgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eV0gLy8gc2tpbGxzIHNlIGlueWVjdGEgZW4gdXNlTWVudGlvblBvcG92ZXJcbiAgKVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYSBsYSBsw7NnaWNhIGRlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKGVzdGFkbywgZmV0Y2ggcG9yIHRhYiwgYW5hbHl0aWNzLFxuICogcG9zaWNpb25hbWllbnRvKS4gRWwgY29uc3VtZXIgbWFudGllbmUgZWwgZWRpdG9yIHkgZWwgZW52w61vIGRlbCBtZW5zYWplLlxuICogTG9zIGZpbHRyb3MgZGUgYsO6c3F1ZWRhIHVzYW4gYHVzZURlcml2ZWRTY29wZWA6IGVzcGVjaWFsaXN0YSBwcm95ZWN0byBhY290YSB0YXJlYXNcbiAqIGFsIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0bzsgZXNwZWNpYWxpc3RhIGNsaWVudGUsIHByb3llY3RvcyBhbCBgY2xpZW50SWRgIChlbiBgZXh0cmFgIGRlIHNlYXJjaCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uUG9wb3ZlciA9ICh7XG4gIGVkaXRvclJlZixcbiAgcG9wb3ZlckFuY2hvclJlZixcbiAgZW5hYmxlZFR5cGVzLFxuICBza2lsbHMsXG4gIG9uTWVudGlvbkFkZGVkLFxufTogVXNlTWVudGlvblBvcG92ZXJPcHRpb25zKTogVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlIH0gPSB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKGVuYWJsZWRUeXBlcylcbiAgY29uc3QgbWVudGlvblBvcG92ZXJaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbYWN0aXZlVHlwZSwgc2V0QWN0aXZlVHlwZV0gPSB1c2VTdGF0ZTxDb250ZXh0RW50aXR5VHlwZT4oZGVmYXVsdFR5cGUpXG4gIGNvbnN0IFtwb3BvdmVyT3Blbiwgc2V0UG9wb3Zlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyUG9zLCBzZXRQb3BvdmVyUG9zXSA9IHVzZVN0YXRlPHsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9Pih7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gIH0pXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzS2V5Ym9hcmROYXZBY3RpdmUsIHNldElzS2V5Ym9hcmROYXZBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhc0VtaXR0ZWRPcGVuID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwb3BvdmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG5cbiAgY29uc3QgZGVyaXZlZFNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3Qgc2NvcGUgPSB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoc2tpbGxzID8geyAuLi5kZXJpdmVkU2NvcGUsIHNraWxscyB9IDogZGVyaXZlZFNjb3BlKSxcbiAgICBbZGVyaXZlZFNjb3BlLCBza2lsbHNdXG4gIClcbiAgY29uc3Qge1xuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUsXG4gICAgc2tpbGxzQ2F0YWxvZ0VtcHR5LFxuICB9ID0gdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHdpZHRoUmVjdCA9IGZyb21BbmNob3IgPz8gZnJvbUVkaXRvclxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCdAJylcblxuICAgIGNvbnN0IHdpZHRoID0gd2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3Qud2lkdGggOiBNRU5USU9OX1BPUE9WRVJfRkFMTEJBQ0tfV0lEVEhfUFhcbiAgICBjb25zdCBsZWZ0U291cmNlID0gd2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3QubGVmdCA6IGNhcmV0Py5sZWZ0XG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3QudG9wIDogbnVsbClcblxuICAgIGlmIChsZWZ0U291cmNlID09IG51bGwgfHwgdG9wU291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYLFxuICAgICAgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSBNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYLCBsZWZ0U291cmNlKVxuICAgIClcblxuICAgIC8qKiBBbmNobyBkZWwgaW5wdXQ7IGJvcmRlIGluZmVyaW9yIH40cHggcG9yIGVuY2ltYSBkZWwgYEBgIHF1ZSBhYnJlIGxhcyBtZW5jaW9uZXMuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIE1FTlRJT05fUE9QT1ZFUl9HQVBfUFgsXG4gICAgfSlcbiAgfSwgW3BvcG92ZXJBbmNob3JSZWYsIGVkaXRvclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICBjb25zdCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBvcG92ZXJPcGVuKGZhbHNlKVxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlKCcnKVxuICB9LCBbdXBkYXRlU2VhcmNoVmFsdWVdKVxuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXIgPSB1c2VDYWxsYmFjayhcbiAgICAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHBvcG92ZXJPcGVuKSBjbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHJpZ2dlci5hY3RpdmUpIHtcbiAgICAgICAgLy8gZGV0ZWN0TWVudGlvblRyaWdnZXIgbWFyY2EgQC8gY29tbyBhdFJ1bkxlbmd0aCA9PT0gLTEgKHNsYXNoIGNvbnN1bWlkbywgbm8gcXVlZGEgZW4gcXVlcnkpXG4gICAgICAgIGNvbnN0IGlzU2tpbGxUcmlnZ2VyID0gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCdza2lsbCcpICYmIHRyaWdnZXIuYXRSdW5MZW5ndGggPT09IC0xXG4gICAgICAgIGNvbnN0IGF0UnVuVGFiVHlwZXMgPSBnZXRBdFJ1blRhYlR5cGVzKGFsbG93ZWRUeXBlcylcbiAgICAgICAgY29uc3QgYXRSdW5UeXBlc09yQWxsID0gYXRSdW5UYWJUeXBlcy5sZW5ndGggPiAwID8gYXRSdW5UYWJUeXBlcyA6IGFsbG93ZWRUeXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlICE9PSAnc2tpbGwnKVxuICAgICAgICBjb25zdCBpc1NsYXNoVHJpZ2dlciA9IHRyaWdnZXIuYXRSdW5MZW5ndGggPCAwXG5cbiAgICAgICAgbGV0IHR5cGVGcm9tQXQ6IENvbnRleHRFbnRpdHlUeXBlXG4gICAgICAgIGxldCBlZmZlY3RpdmVRdWVyeTogc3RyaW5nXG5cbiAgICAgICAgaWYgKGlzU2tpbGxUcmlnZ2VyKSB7XG4gICAgICAgICAgdHlwZUZyb21BdCA9ICdza2lsbCdcbiAgICAgICAgICBlZmZlY3RpdmVRdWVyeSA9IHRyaWdnZXIucXVlcnlcbiAgICAgICAgfSBlbHNlIGlmIChpc1NsYXNoVHJpZ2dlcikge1xuICAgICAgICAgIHR5cGVGcm9tQXQgPSBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSh0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlKVxuICAgICAgICAgIGVmZmVjdGl2ZVF1ZXJ5ID0gdHJpZ2dlci5xdWVyeVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG92ZXJmbG93QXRDb3VudCA9IE1hdGgubWF4KDAsIHRyaWdnZXIuYXRSdW5MZW5ndGggLSBhdFJ1blRhYlR5cGVzLmxlbmd0aClcbiAgICAgICAgICBjb25zdCBlZmZlY3RpdmVBdFJ1bkxlbmd0aCA9IE1hdGgubWluKHRyaWdnZXIuYXRSdW5MZW5ndGgsIGF0UnVuVHlwZXNPckFsbC5sZW5ndGgpXG4gICAgICAgICAgZWZmZWN0aXZlUXVlcnkgPSBgJHsnQCcucmVwZWF0KG92ZXJmbG93QXRDb3VudCl9JHt0cmlnZ2VyLnF1ZXJ5fWBcbiAgICAgICAgICB0eXBlRnJvbUF0ID0gZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UoZWZmZWN0aXZlQXRSdW5MZW5ndGgsIGF0UnVuVHlwZXNPckFsbCwgZGVmYXVsdFR5cGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgc2V0UG9wb3Zlck9wZW4odHJ1ZSlcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgICBpZiAoIWhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uT3BlbiwgeyB0eXBlOiB0eXBlRnJvbUF0IH0pXG4gICAgICAgICAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTZWFyY2hWYWx1ZShlZmZlY3RpdmVRdWVyeSlcbiAgICAgIH0gZWxzZSBpZiAocG9wb3Zlck9wZW4pIHtcbiAgICAgICAgY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUsIHBvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXIsIHVwZGF0ZVNlYXJjaFZhbHVlLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBpbnNlcnRTZWxlY3RlZEl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtKSA9PiB7XG4gICAgICBjb25zdCBtZW50aW9uOiBDb250ZXh0TWVudGlvbiA9IHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcbiAgICAgICAgbGFiZWw6IGl0ZW0ucHJpbWFyeSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjbGllbnRJZDogaXRlbS5yYXcuY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgICAgICBjbGllbnROYW1lOiBpdGVtLnJhdy5jbGllbnROYW1lID8/IG51bGwsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucmF3LnByb2plY3ROYW1lID8/IG51bGwsXG4gICAgICAgICAgZmVlSWQ6IGl0ZW0ucmF3LmZlZUlkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVySWQ6IGl0ZW0ucmF3LmZhdGhlcklkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVyVGl0bGU6IGl0ZW0ucmF3LmZhdGhlclRpdGxlID8/IG51bGwsXG4gICAgICAgICAgdG90YWxQcm95ZWN0b3M6IGl0ZW0ucmF3LnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gICAgICAgICAgbmFtZTogaXRlbS5yYXcubmFtZSA/PyBudWxsLFxuICAgICAgICAgIHBpY3R1cmU6IGl0ZW0ucmF3LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbk5hbWU6IGl0ZW0ucmF3LnBvc2l0aW9uTmFtZSA/PyBudWxsLFxuICAgICAgICAgIGVtYWlsOiBpdGVtLnJhdy5lbWFpbCA/PyBudWxsLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb24obWVudGlvbilcbiAgICAgIG9uTWVudGlvbkFkZGVkPy4obWVudGlvbilcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uU2VsZWN0LCB7IHR5cGU6IG1lbnRpb24udHlwZSwgaWQ6IFN0cmluZyhtZW50aW9uLmlkKSB9KVxuICAgICAgY2xvc2UoKVxuICAgIH0sXG4gICAgW2VkaXRvclJlZiwgb25NZW50aW9uQWRkZWQsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVR5cGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodHlwZTogQ29udGV4dEVudGl0eVR5cGUpID0+IHtcbiAgICAgIHNldEFjdGl2ZVR5cGUodHlwZSlcbiAgICAgIGlmICh0eXBlID09PSAnc2tpbGwnKSB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5zeW5jU2tpbGxUcmlnZ2VyKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5leHRSdW5MZW5ndGggPSBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZShcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGFsbG93ZWRUeXBlcy5maWx0ZXIoZW50aXR5VHlwZSA9PiBlbnRpdHlUeXBlICE9PSAnc2tpbGwnKVxuICAgICAgICApXG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5zeW5jVHJpZ2dlckF0UnVuTGVuZ3RoKG5leHRSdW5MZW5ndGgpXG4gICAgICB9XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblR5cGVTd2l0Y2gsIHsgdHlwZSB9KVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZWRpdG9yUmVmLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghcG9wb3Zlck9wZW4gfHwgYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNsb3NlKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUua2V5ID09PSAnQXJyb3dMZWZ0JykgJiYgKGUubWV0YUtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKGFjdGl2ZVR5cGUpXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMVxuICAgICAgICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgYWxsb3dlZFR5cGVzLmxlbmd0aCkgJSBhbGxvd2VkVHlwZXMubGVuZ3RoXG4gICAgICAgIGhhbmRsZVR5cGVDaGFuZ2UoYWxsb3dlZFR5cGVzW25leHRJZHhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IChpdGVtcy5sZW5ndGggPiAwID8gTWF0aC5taW4ocHJldiArIDEsIGl0ZW1zLmxlbmd0aCAtIDEpIDogMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IE1hdGgubWF4KHByZXYgLSAxLCAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGluc2VydFNlbGVjdGVkSXRlbShpdGVtc1thY3RpdmVJbmRleF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIFtwb3BvdmVyT3BlbiwgaXRlbXMsIGFsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgYWN0aXZlSW5kZXgsIGluc2VydFNlbGVjdGVkSXRlbSwgY2xvc2UsIGhhbmRsZVR5cGVDaGFuZ2VdXG4gIClcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZl0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvclxuICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBza2lsbHNDYXRhbG9nRW1wdHk9e3NraWxsc0NhdGFsb2dFbXB0eX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2luc2VydFNlbGVjdGVkSXRlbX1cbiAgICAgICAgICBhY3RpdmVJbmRleD17YWN0aXZlSW5kZXh9XG4gICAgICAgICAgb25BY3RpdmVJbmRleENoYW5nZT17c2V0QWN0aXZlSW5kZXh9XG4gICAgICAgICAgaXNLZXlib2FyZE5hdkFjdGl2ZT17aXNLZXlib2FyZE5hdkFjdGl2ZX1cbiAgICAgICAgICBvbk1vdXNlTW92ZUluTGlzdD17KCkgPT4gc2V0SXNLZXlib2FyZE5hdkFjdGl2ZShmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1NDTVBBbmNob3I+XG4gICAgKVxuICB9LCBbXG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcG9wb3ZlclBvcyxcbiAgICBtZW50aW9uUG9wb3ZlclpJbmRleCxcbiAgICBhbGxvd2VkVHlwZXMsXG4gICAgYWN0aXZlVHlwZSxcbiAgICBoYW5kbGVUeXBlQ2hhbmdlLFxuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBza2lsbHNDYXRhbG9nRW1wdHksXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHRvb2x0aXBaSW5kZXgsXG4gICAgaW5zZXJ0U2VsZWN0ZWRJdGVtLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIGlzS2V5Ym9hcmROYXZBY3RpdmUsXG4gIF0pXG5cbiAgcmV0dXJuIHsgcG9wb3Zlck9wZW4sIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZywgaGFuZGxlVHJpZ2dlciwgaGFuZGxlS2V5RG93biwgcG9wb3Zlck5vZGUsIGNsb3NlIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUlFQSxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsUUFBUSxRQUNILE9BQU87QUFFZCxTQUNFQyxxQkFBcUIsRUFDckJDLDRCQUE0QixFQUM1QkMsVUFBVSxRQUNMLDJDQUEyQztBQUNsRCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQVNDLElBQUksUUFBUSxRQUFRO0FBQzdCO0FBQ0EsU0FBNEJDLGVBQWUsUUFBUSxtQkFBbUI7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxZQUFZO0FBRzdDLFNBQ0VDLGdCQUFnQixFQUNoQkMsMEJBQTBCLEVBQzFCQywwQkFBMEIsUUFDckIsaUNBQWlDO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBRXhDLElBQU1DLHNCQUFzQixHQUFHLENBQUM7QUFDaEMsSUFBTUMsK0JBQStCLEdBQUcsQ0FBQztBQUN6QyxJQUFNQyxpQ0FBaUMsR0FBRyxHQUFHO0FBc0M3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUE0QjtFQUFBLElBQUFDLElBQUEsRUFBQUMsY0FB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
@@ -0,0 +1,110 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useEffect, useState } from 'react';
3
+ import { useGlobalContext } from '../context/global-context';
4
+ var DEFAULT_BOTTOM_PX = 16;
5
+ var DEFAULT_GAP_PX = 24;
6
+ var PILL_HEIGHT_PX = 44;
7
+ var PILL_RIGHT_PX = 16;
8
+ var PILL_MAX_WIDTH_PX = 220;
9
+ /** Re-medidas tras montar el pill (layout del host puede estabilizarse después del minimize). */
10
+ var REMEASURE_DELAYS_MS = [0, 100, 300];
11
+ var isElementVisible = function isElementVisible(element) {
12
+ var rect = element.getBoundingClientRect();
13
+ if (rect.width <= 0 || rect.height <= 0) return false;
14
+ var style = window.getComputedStyle(element);
15
+ return style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0';
16
+ };
17
+ var isAnchorInPillCollisionZone = function isAnchorInPillCollisionZone(rect, viewportHeight, defaultBottomPx, gapPx) {
18
+ if (rect.bottom <= 0 || rect.top >= viewportHeight) return false;
19
+ var naturalPillTop = viewportHeight - defaultBottomPx - PILL_HEIGHT_PX;
20
+ return rect.bottom > naturalPillTop - gapPx;
21
+ };
22
+ var overlapsPillHorizontally = function overlapsPillHorizontally(rect, viewportWidth) {
23
+ var pillLeft = viewportWidth - PILL_RIGHT_PX - PILL_MAX_WIDTH_PX;
24
+ var pillRight = viewportWidth - PILL_RIGHT_PX;
25
+ return rect.left < pillRight && rect.right > pillLeft;
26
+ };
27
+ var resolveBottomPx = function resolveBottomPx(anchors, defaultBottomPx) {
28
+ var resolvedBottom = defaultBottomPx;
29
+ var viewportHeight = window.innerHeight;
30
+ var viewportWidth = window.innerWidth;
31
+ anchors.forEach(function (_ref) {
32
+ var selector = _ref.selector,
33
+ _ref$gapPx = _ref.gapPx,
34
+ gapPx = _ref$gapPx === void 0 ? DEFAULT_GAP_PX : _ref$gapPx;
35
+ var element = document.querySelector(selector);
36
+ if (!element || !isElementVisible(element)) return;
37
+ var rect = element.getBoundingClientRect();
38
+ if (!isAnchorInPillCollisionZone(rect, viewportHeight, defaultBottomPx, gapPx)) return;
39
+ if (!overlapsPillHorizontally(rect, viewportWidth)) return;
40
+ var bottomPx = viewportHeight - rect.top + gapPx;
41
+ if (bottomPx > resolvedBottom) {
42
+ resolvedBottom = bottomPx;
43
+ }
44
+ });
45
+ return resolvedBottom;
46
+ };
47
+
48
+ /** Calcula el `bottom` del pill minimizado evitando solaparse con anchors del host (COR web). */
49
+ export var useMinimizedPillBottomOffset = function useMinimizedPillBottomOffset() {
50
+ var defaultBottomPx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_BOTTOM_PX;
51
+ var _useGlobalContext = useGlobalContext(),
52
+ minimizedPillAvoidAnchors = _useGlobalContext.minimizedPillAvoidAnchors;
53
+ var _useState = useState(defaultBottomPx),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ bottomPx = _useState2[0],
56
+ setBottomPx = _useState2[1];
57
+ useEffect(function () {
58
+ var anchors = minimizedPillAvoidAnchors !== null && minimizedPillAvoidAnchors !== void 0 ? minimizedPillAvoidAnchors : [];
59
+ if (!anchors.length) {
60
+ setBottomPx(defaultBottomPx);
61
+ return undefined;
62
+ }
63
+ var frameId = null;
64
+ var delayTimeouts = [];
65
+ var measureNow = function measureNow() {
66
+ setBottomPx(resolveBottomPx(anchors, defaultBottomPx));
67
+ };
68
+ var scheduleMeasure = function scheduleMeasure() {
69
+ if (frameId != null) return;
70
+ frameId = window.requestAnimationFrame(function () {
71
+ frameId = null;
72
+ measureNow();
73
+ });
74
+ };
75
+ scheduleMeasure();
76
+ REMEASURE_DELAYS_MS.forEach(function (delayMs) {
77
+ if (delayMs === 0) return;
78
+ delayTimeouts.push(window.setTimeout(scheduleMeasure, delayMs));
79
+ });
80
+ window.addEventListener('resize', scheduleMeasure);
81
+ window.addEventListener('scroll', scheduleMeasure, true);
82
+ var resizeObserver = new ResizeObserver(scheduleMeasure);
83
+ anchors.forEach(function (_ref2) {
84
+ var selector = _ref2.selector;
85
+ document.querySelectorAll(selector).forEach(function (element) {
86
+ return resizeObserver.observe(element);
87
+ });
88
+ });
89
+ var mutationObserver = new MutationObserver(scheduleMeasure);
90
+ mutationObserver.observe(document.body, {
91
+ childList: true,
92
+ subtree: true,
93
+ attributes: true
94
+ });
95
+ return function () {
96
+ if (frameId != null) {
97
+ window.cancelAnimationFrame(frameId);
98
+ }
99
+ delayTimeouts.forEach(function (timeoutId) {
100
+ return window.clearTimeout(timeoutId);
101
+ });
102
+ window.removeEventListener('resize', scheduleMeasure);
103
+ window.removeEventListener('scroll', scheduleMeasure, true);
104
+ resizeObserver.disconnect();
105
+ mutationObserver.disconnect();
106
+ };
107
+ }, [defaultBottomPx, minimizedPillAvoidAnchors]);
108
+ return bottomPx;
109
+ };
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZUdsb2JhbENvbnRleHQiLCJERUZBVUxUX0JPVFRPTV9QWCIsIkRFRkFVTFRfR0FQX1BYIiwiUElMTF9IRUlHSFRfUFgiLCJQSUxMX1JJR0hUX1BYIiwiUElMTF9NQVhfV0lEVEhfUFgiLCJSRU1FQVNVUkVfREVMQVlTX01TIiwiaXNFbGVtZW50VmlzaWJsZSIsImVsZW1lbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJkaXNwbGF5IiwidmlzaWJpbGl0eSIsIm9wYWNpdHkiLCJpc0FuY2hvckluUGlsbENvbGxpc2lvblpvbmUiLCJ2aWV3cG9ydEhlaWdodCIsImRlZmF1bHRCb3R0b21QeCIsImdhcFB4IiwiYm90dG9tIiwidG9wIiwibmF0dXJhbFBpbGxUb3AiLCJvdmVybGFwc1BpbGxIb3Jpem9udGFsbHkiLCJ2aWV3cG9ydFdpZHRoIiwicGlsbExlZnQiLCJwaWxsUmlnaHQiLCJsZWZ0IiwicmlnaHQiLCJyZXNvbHZlQm90dG9tUHgiLCJhbmNob3JzIiwicmVzb2x2ZWRCb3R0b20iLCJpbm5lckhlaWdodCIsImlubmVyV2lkdGgiLCJmb3JFYWNoIiwiX3JlZiIsInNlbGVjdG9yIiwiX3JlZiRnYXBQeCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImJvdHRvbVB4IiwidXNlTWluaW1pemVkUGlsbEJvdHRvbU9mZnNldCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl91c2VHbG9iYWxDb250ZXh0IiwibWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldEJvdHRvbVB4IiwiZnJhbWVJZCIsImRlbGF5VGltZW91dHMiLCJtZWFzdXJlTm93Iiwic2NoZWR1bGVNZWFzdXJlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZGVsYXlNcyIsInB1c2giLCJzZXRUaW1lb3V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJfcmVmMiIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJvYnNlcnZlIiwibXV0YXRpb25PYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJib2R5IiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImF0dHJpYnV0ZXMiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInRpbWVvdXRJZCIsImNsZWFyVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1pbmltaXplZFBpbGxCb3R0b21PZmZzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIE1pbmltaXplZFBpbGxBdm9pZEFuY2hvciB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5cbmNvbnN0IERFRkFVTFRfQk9UVE9NX1BYID0gMTZcbmNvbnN0IERFRkFVTFRfR0FQX1BYID0gMjRcbmNvbnN0IFBJTExfSEVJR0hUX1BYID0gNDRcbmNvbnN0IFBJTExfUklHSFRfUFggPSAxNlxuY29uc3QgUElMTF9NQVhfV0lEVEhfUFggPSAyMjBcbi8qKiBSZS1tZWRpZGFzIHRyYXMgbW9udGFyIGVsIHBpbGwgKGxheW91dCBkZWwgaG9zdCBwdWVkZSBlc3RhYmlsaXphcnNlIGRlc3B1w6lzIGRlbCBtaW5pbWl6ZSkuICovXG5jb25zdCBSRU1FQVNVUkVfREVMQVlTX01TID0gWzAsIDEwMCwgMzAwXVxuXG5jb25zdCBpc0VsZW1lbnRWaXNpYmxlID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgaWYgKHJlY3Qud2lkdGggPD0gMCB8fCByZWN0LmhlaWdodCA8PSAwKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpXG4gIHJldHVybiBzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiYgc3R5bGUudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicgJiYgc3R5bGUub3BhY2l0eSAhPT0gJzAnXG59XG5cbmNvbnN0IGlzQW5jaG9ySW5QaWxsQ29sbGlzaW9uWm9uZSA9IChcbiAgcmVjdDogRE9NUmVjdCxcbiAgdmlld3BvcnRIZWlnaHQ6IG51bWJlcixcbiAgZGVmYXVsdEJvdHRvbVB4OiBudW1iZXIsXG4gIGdhcFB4OiBudW1iZXJcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAocmVjdC5ib3R0b20gPD0gMCB8fCByZWN0LnRvcCA+PSB2aWV3cG9ydEhlaWdodCkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgbmF0dXJhbFBpbGxUb3AgPSB2aWV3cG9ydEhlaWdodCAtIGRlZmF1bHRCb3R0b21QeCAtIFBJTExfSEVJR0hUX1BYXG4gIHJldHVybiByZWN0LmJvdHRvbSA+IG5hdHVyYWxQaWxsVG9wIC0gZ2FwUHhcbn1cblxuY29uc3Qgb3ZlcmxhcHNQaWxsSG9yaXpvbnRhbGx5ID0gKHJlY3Q6IERPTVJlY3QsIHZpZXdwb3J0V2lkdGg6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBwaWxsTGVmdCA9IHZpZXdwb3J0V2lkdGggLSBQSUxMX1JJR0hUX1BYIC0gUElMTF9NQVhfV0lEVEhfUFhcbiAgY29uc3QgcGlsbFJpZ2h0ID0gdmlld3BvcnRXaWR0aCAtIFBJTExfUklHSFRfUFhcblxuICByZXR1cm4gcmVjdC5sZWZ0IDwgcGlsbFJpZ2h0ICYmIHJlY3QucmlnaHQgPiBwaWxsTGVmdFxufVxuXG5jb25zdCByZXNvbHZlQm90dG9tUHggPSAoYW5jaG9yczogTWluaW1pemVkUGlsbEF2b2lkQW5jaG9yW10sIGRlZmF1bHRCb3R0b21QeDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgbGV0IHJlc29sdmVkQm90dG9tID0gZGVmYXVsdEJvdHRvbVB4XG4gIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0XG4gIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aFxuXG4gIGFuY2hvcnMuZm9yRWFjaCgoeyBzZWxlY3RvciwgZ2FwUHggPSBERUZBVUxUX0dBUF9QWCB9KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpXG4gICAgaWYgKCFlbGVtZW50IHx8ICFpc0VsZW1lbnRWaXNpYmxlKGVsZW1lbnQpKSByZXR1cm5cblxuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgaWYgKCFpc0FuY2hvckluUGlsbENvbGxpc2lvblpvbmUocmVjdCwgdmlld3BvcnRIZWlnaHQsIGRlZmF1bHRCb3R0b21QeCwgZ2FwUHgpKSByZXR1cm5cbiAgICBpZiAoIW92ZXJsYXBzUGlsbEhvcml6b250YWxseShyZWN0LCB2aWV3cG9ydFdpZHRoKSkgcmV0dXJuXG5cbiAgICBjb25zdCBib3R0b21QeCA9IHZpZXdwb3J0SGVpZ2h0IC0gcmVjdC50b3AgKyBnYXBQeFxuXG4gICAgaWYgKGJvdHRvbVB4ID4gcmVzb2x2ZWRCb3R0b20pIHtcbiAgICAgIHJlc29sdmVkQm90dG9tID0gYm90dG9tUHhcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHJlc29sdmVkQm90dG9tXG59XG5cbi8qKiBDYWxjdWxhIGVsIGBib3R0b21gIGRlbCBwaWxsIG1pbmltaXphZG8gZXZpdGFuZG8gc29sYXBhcnNlIGNvbiBhbmNob3JzIGRlbCBob3N0IChDT1Igd2ViKS4gKi9cbmV4cG9ydCBjb25zdCB1c2VNaW5pbWl6ZWRQaWxsQm90dG9tT2Zmc2V0ID0gKGRlZmF1bHRCb3R0b21QeCA9IERFRkFVTFRfQk9UVE9NX1BYKTogbnVtYmVyID0+IHtcbiAgY29uc3QgeyBtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgW2JvdHRvbVB4LCBzZXRCb3R0b21QeF0gPSB1c2VTdGF0ZShkZWZhdWx0Qm90dG9tUHgpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBhbmNob3JzID0gbWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyA/PyBbXVxuICAgIGlmICghYW5jaG9ycy5sZW5ndGgpIHtcbiAgICAgIHNldEJvdHRvbVB4KGRlZmF1bHRCb3R0b21QeClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBsZXQgZnJhbWVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgICBjb25zdCBkZWxheVRpbWVvdXRzOiBudW1iZXJbXSA9IFtdXG5cbiAgICBjb25zdCBtZWFzdXJlTm93ID0gKCkgPT4ge1xuICAgICAgc2V0Qm90dG9tUHgocmVzb2x2ZUJvdHRvbVB4KGFuY2hvcnMsIGRlZmF1bHRCb3R0b21QeCkpXG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZWR1bGVNZWFzdXJlID0gKCkgPT4ge1xuICAgICAgaWYgKGZyYW1lSWQgIT0gbnVsbCkgcmV0dXJuXG4gICAgICBmcmFtZUlkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGZyYW1lSWQgPSBudWxsXG4gICAgICAgIG1lYXN1cmVOb3coKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZU1lYXN1cmUoKVxuICAgIFJFTUVBU1VSRV9ERUxBWVNfTVMuZm9yRWFjaChkZWxheU1zID0+IHtcbiAgICAgIGlmIChkZWxheU1zID09PSAwKSByZXR1cm5cbiAgICAgIGRlbGF5VGltZW91dHMucHVzaCh3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZU1lYXN1cmUsIGRlbGF5TXMpKVxuICAgIH0pXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc2NoZWR1bGVNZWFzdXJlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY2hlZHVsZU1lYXN1cmUsIHRydWUpXG5cbiAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihzY2hlZHVsZU1lYXN1cmUpXG4gICAgYW5jaG9ycy5mb3JFYWNoKCh7IHNlbGVjdG9yIH0pID0+IHtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpLmZvckVhY2goZWxlbWVudCA9PiByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpKVxuICAgIH0pXG5cbiAgICBjb25zdCBtdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoc2NoZWR1bGVNZWFzdXJlKVxuICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlczogdHJ1ZSB9KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmcmFtZUlkICE9IG51bGwpIHtcbiAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpXG4gICAgICB9XG4gICAgICBkZWxheVRpbWVvdXRzLmZvckVhY2godGltZW91dElkID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkKSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBzY2hlZHVsZU1lYXN1cmUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2NoZWR1bGVNZWFzdXJlLCB0cnVlKVxuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRCb3R0b21QeCwgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9y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
@@ -0,0 +1,2 @@
1
+ export { useModal } from './useModal';
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNb2RhbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VNb2RhbC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJy4vdXNlTW9kYWwnXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxZQUFZIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU1vZGFsL3VzZU1vZGFsLmludGVyZmFjZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnXG5cbmV4cG9ydCB0eXBlIFVzZU1vZGFsUHJvcHMgPSB7XG4gIHJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IEhUTUxCdXR0b25FbGVtZW50PlxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaW5pdGlhbE9wZW4/OiBib29sZWFuXG4gIGNsaWNrT3V0c2lkZT86IGJvb2xlYW5cbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==