@projectcor/maia-components 2.29.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.
- package/lib/App.js +55 -0
- package/lib/components/atoms/ActionableButton.js +60 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +89 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +21 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +9 -0
- package/lib/components/atoms/AgentActivityIndicator/index.js +2 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +209 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +93 -0
- package/lib/components/atoms/ApprovalBox/index.js +2 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCard.js +218 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +52 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +448 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +58 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +55 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +14 -0
- package/lib/components/atoms/AttachmentCard/index.js +4 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +442 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +119 -0
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +222 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +313 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
- package/lib/components/atoms/AttachmentPreviewModal/index.js +2 -0
- package/lib/components/atoms/Backdrop/Backdrop.js +17 -0
- package/lib/components/atoms/Backdrop/Backdrop.styles.js +9 -0
- package/lib/components/atoms/Backdrop/index.js +2 -0
- package/lib/components/atoms/CardItem.js +7 -0
- package/lib/components/atoms/CardMenu/CardMenu.js +131 -0
- package/lib/components/atoms/CardMenu/index.js +2 -0
- package/lib/components/atoms/CardMenu/styles.js +21 -0
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +77 -0
- package/lib/components/atoms/ChatClientSelector/index.js +2 -0
- package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
- package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
- package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
- package/lib/components/atoms/Checkbox/Checkbox.js +34 -0
- package/lib/components/atoms/Checkbox/index.js +2 -0
- package/lib/components/atoms/Checkbox/styles.js +39 -0
- package/lib/components/atoms/Chip/Chip.js +150 -0
- package/lib/components/atoms/Chip/index.js +2 -0
- package/lib/components/atoms/Chip/styles.js +43 -0
- package/lib/components/atoms/ChipLlm/ChipLlm.js +45 -0
- package/lib/components/atoms/ChipLlm/ChipLlm.style.js +21 -0
- package/lib/components/atoms/ChipLlm/index.js +2 -0
- package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +2 -0
- package/lib/components/atoms/ChipStatus/ChipStatus.js +14 -0
- package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +27 -0
- package/lib/components/atoms/ChipStatus/index.js +2 -0
- package/lib/components/atoms/ClearButton.js +6 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.js +146 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +15 -0
- package/lib/components/atoms/ClientSelector/index.js +2 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +38 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +188 -0
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +434 -0
- package/lib/components/atoms/ContextMentionChip/index.js +4 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +411 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +10 -0
- package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +309 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +157 -0
- package/lib/components/atoms/ContextMentionItem/index.js +2 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +307 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +108 -0
- package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
- package/lib/components/atoms/CopyToClipboard.js +70 -0
- package/lib/components/atoms/EditableLabel/EditableLabel.js +110 -0
- package/lib/components/atoms/EditableLabel/index.js +2 -0
- package/lib/components/atoms/EditableLabel/styles.js +7 -0
- package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +22 -0
- package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +18 -0
- package/lib/components/atoms/EmptySearchClients/index.js +2 -0
- package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +19 -0
- package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +15 -0
- package/lib/components/atoms/EmptySearchProjects/index.js +2 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.js +247 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +67 -0
- package/lib/components/atoms/EntitySelector/index.js +2 -0
- package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +14 -0
- package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +15 -0
- package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +14 -0
- package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +15 -0
- package/lib/components/atoms/ErrorSearchFaqs/index.js +2 -0
- package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +18 -0
- package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +15 -0
- package/lib/components/atoms/ErrorSearchProjects/index.js +2 -0
- package/lib/components/atoms/Expand/Expand.js +32 -0
- package/lib/components/atoms/Expand/index.js +2 -0
- package/lib/components/atoms/Fade/Fade.js +56 -0
- package/lib/components/atoms/Fade/index.js +2 -0
- package/lib/components/atoms/FeedbackButton/FeedbackButton.js +59 -0
- package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +14 -0
- package/lib/components/atoms/FeedbackButton/index.js +2 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +138 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +43 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/index.js +2 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +122 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +62 -0
- package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
- package/lib/components/atoms/GoBackButton.js +24 -0
- package/lib/components/atoms/HelpButton.js +44 -0
- package/lib/components/atoms/IconButton.js +56 -0
- package/lib/components/atoms/ImagePreview/ImagePreview.js +96 -0
- package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +70 -0
- package/lib/components/atoms/Input/CustomInput.interface.js +2 -0
- package/lib/components/atoms/Input/CustomInput.js +91 -0
- package/lib/components/atoms/Input/CustomInput.styles.js +39 -0
- package/lib/components/atoms/Input/index.js +2 -0
- package/lib/components/atoms/ListMenuOption/ListMenuOption.js +41 -0
- package/lib/components/atoms/ListMenuOption/index.js +2 -0
- package/lib/components/atoms/ListMenuOption/styles.js +9 -0
- package/lib/components/atoms/Loader.js +41 -0
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +11 -0
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +6 -0
- package/lib/components/atoms/LoadingFaqs/index.js +2 -0
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +11 -0
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +6 -0
- package/lib/components/atoms/LoadingSearchClients/index.js +2 -0
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +14 -0
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +10 -0
- package/lib/components/atoms/LoadingSearchProjects/index.js +2 -0
- package/lib/components/atoms/LoadingText/LoadingText.js +18 -0
- package/lib/components/atoms/LoadingText/index.js +2 -0
- package/lib/components/atoms/LoadingText/styles.js +7 -0
- package/lib/components/atoms/MAIAButton/MAIAButton.js +33 -0
- package/lib/components/atoms/MAIAButton/index.js +2 -0
- package/lib/components/atoms/MAIAError/MAIAError.js +15 -0
- package/lib/components/atoms/MAIAError/index.js +2 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +1058 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +266 -0
- package/lib/components/atoms/MAIAInput/index.js +2 -0
- package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
- package/lib/components/atoms/MAIAInput/styles.js +182 -0
- package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +2 -0
- package/lib/components/atoms/MAIAMessage/MAIAMessage.js +22 -0
- package/lib/components/atoms/MAIAMessage/index.js +2 -0
- package/lib/components/atoms/MAIAMessage/styles.js +7 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +23 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +2 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +51 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +26 -0
- package/lib/components/atoms/MaiaStreamdown/index.js +2 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +18 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +84 -0
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +15 -0
- package/lib/components/atoms/MaiaWrapper/index.js +3 -0
- package/lib/components/atoms/MaiaWrapper/styles.js +21 -0
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +2 -0
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +84 -0
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +53 -0
- package/lib/components/atoms/ModalClientAccess/index.js +2 -0
- package/lib/components/atoms/ModalInfo/ModalInfo.js +52 -0
- package/lib/components/atoms/ModalInfo/ModalInfoContent.js +7 -0
- package/lib/components/atoms/ModalInfo/index.js +3 -0
- package/lib/components/atoms/ModalInfo/styles.js +7 -0
- package/lib/components/atoms/ModalProject/ModalProject.interface.js +2 -0
- package/lib/components/atoms/ModalProject/ModalProject.js +112 -0
- package/lib/components/atoms/ModalProject/ModalProject.style.js +59 -0
- package/lib/components/atoms/ModalProject/index.js +2 -0
- package/lib/components/atoms/NextPageLoader.js +33 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +28 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +180 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +34 -0
- package/lib/components/atoms/OnboardingModalButton/index.js +3 -0
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +131 -0
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +59 -0
- package/lib/components/atoms/OptionAccessibility/index.js +2 -0
- package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +27 -0
- package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +18 -0
- package/lib/components/atoms/OptionCorPermission/index.js +2 -0
- package/lib/components/atoms/PrimaryButton.js +31 -0
- package/lib/components/atoms/ProjectSelector/ProjectSelector.js +77 -0
- package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +61 -0
- package/lib/components/atoms/ProjectSelector/index.js +2 -0
- package/lib/components/atoms/SecondaryButton.js +20 -0
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
- package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
- package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
- package/lib/components/atoms/Skeleton/index.js +2 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
- package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
- package/lib/components/atoms/SlashCommandChip/index.js +4 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +210 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +53 -0
- package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
- package/lib/components/atoms/Switch/Switch.js +27 -0
- package/lib/components/atoms/Switch/Switch.styles.js +22 -0
- package/lib/components/atoms/Switch/index.js +2 -0
- package/lib/components/atoms/TextArea/CustomTextArea.interface.js +2 -0
- package/lib/components/atoms/TextArea/CustomTextArea.js +93 -0
- package/lib/components/atoms/TextArea/CustomTextArea.styles.js +25 -0
- package/lib/components/atoms/TextArea/TextArea.interfaces.js +2 -0
- package/lib/components/atoms/TextArea/TextArea.js +172 -0
- package/lib/components/atoms/TextArea/TextArea.styles.js +16 -0
- package/lib/components/atoms/TextArea/index.js +2 -0
- package/lib/components/atoms/ThirdButton.js +19 -0
- package/lib/components/atoms/VideoModal/VideoModal.js +76 -0
- package/lib/components/atoms/VideoModal/index.js +2 -0
- package/lib/components/atoms/WithAppCfg.js +26 -0
- package/lib/components/atoms/WithFeatureValidation.js +23 -0
- package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +9 -0
- package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +6 -0
- package/lib/components/atoms/WrapperCenterIcon/index.js +2 -0
- package/lib/components/atoms/icons/AIIcon.js +23 -0
- package/lib/components/atoms/icons/AacFile.js +39 -0
- package/lib/components/atoms/icons/AccessibilityIcon.js +42 -0
- package/lib/components/atoms/icons/ActionAssignIcon.js +111 -0
- package/lib/components/atoms/icons/ActionCalendarIcon.js +112 -0
- package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
- package/lib/components/atoms/icons/ActionChatIcon.js +71 -0
- package/lib/components/atoms/icons/ActionCreateIcon.js +91 -0
- package/lib/components/atoms/icons/ActionCreateReworkIcon.js +39 -0
- package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
- package/lib/components/atoms/icons/ActionEditIcon.js +39 -0
- package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
- package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
- package/lib/components/atoms/icons/ActionTimeBackIcon.js +112 -0
- package/lib/components/atoms/icons/AgentMaiaIcon.js +31 -0
- package/lib/components/atoms/icons/Brain.js +77 -0
- package/lib/components/atoms/icons/CorAccessIcon.js +41 -0
- package/lib/components/atoms/icons/CorLogo.js +76 -0
- package/lib/components/atoms/icons/CsvFile.js +41 -0
- package/lib/components/atoms/icons/DocFile.js +41 -0
- package/lib/components/atoms/icons/DocxFile.js +41 -0
- package/lib/components/atoms/icons/EmptyClientIllustration.js +67 -0
- package/lib/components/atoms/icons/EmptyHistory.js +46 -0
- package/lib/components/atoms/icons/EmptySearchIllustration.js +37 -0
- package/lib/components/atoms/icons/EmptyState.js +84 -0
- package/lib/components/atoms/icons/EmptyStateAgents.js +58 -0
- package/lib/components/atoms/icons/ErrorIcon.js +14 -0
- package/lib/components/atoms/icons/ErrorSearchIllustration.js +52 -0
- package/lib/components/atoms/icons/ErrorState.js +51 -0
- package/lib/components/atoms/icons/FaqChevronIcon.js +39 -0
- package/lib/components/atoms/icons/FaqsIcon.js +51 -0
- package/lib/components/atoms/icons/FlacIcon.js +39 -0
- package/lib/components/atoms/icons/FolderIcon.js +29 -0
- package/lib/components/atoms/icons/HomeIcon.js +30 -0
- package/lib/components/atoms/icons/ImageFile.js +46 -0
- package/lib/components/atoms/icons/M4aFile.js +39 -0
- package/lib/components/atoms/icons/MAIAIcon.js +20 -0
- package/lib/components/atoms/icons/MAIAIsologo.js +65 -0
- package/lib/components/atoms/icons/MDFile.js +41 -0
- package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +41 -0
- package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +41 -0
- package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
- package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +41 -0
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
- package/lib/components/atoms/icons/MaiaSettingsProject.js +111 -0
- package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +193 -0
- package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
- package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
- package/lib/components/atoms/icons/Mp3File.js +39 -0
- package/lib/components/atoms/icons/Mp4File.js +39 -0
- package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
- package/lib/components/atoms/icons/NewChat.js +29 -0
- package/lib/components/atoms/icons/NotionIcon.js +36 -0
- package/lib/components/atoms/icons/OgaFile.js +39 -0
- package/lib/components/atoms/icons/OggFile.js +39 -0
- package/lib/components/atoms/icons/PdfFile.js +39 -0
- package/lib/components/atoms/icons/PptFile.js +47 -0
- package/lib/components/atoms/icons/PptxFile.js +49 -0
- package/lib/components/atoms/icons/RetryIcon.js +34 -0
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
- package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
- package/lib/components/atoms/icons/TaskLinkIcon.js +27 -0
- package/lib/components/atoms/icons/TelescopeIcon.js +60 -0
- package/lib/components/atoms/icons/TemplateGradientIcon.js +42 -0
- package/lib/components/atoms/icons/TextFile.js +41 -0
- package/lib/components/atoms/icons/WavFile.js +39 -0
- package/lib/components/atoms/icons/WebmFile.js +50 -0
- package/lib/components/atoms/icons/XlsFile.js +42 -0
- package/lib/components/atoms/icons/XlsxFile.js +42 -0
- package/lib/components/atoms/icons/index.js +50 -0
- package/lib/components/atoms/index.js +42 -0
- package/lib/components/index.js +11 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +2 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +149 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +53 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +415 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +152 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +374 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +106 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +92 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +57 -0
- package/lib/components/molecules/AbmSection/index.js +4 -0
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +52 -0
- package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +117 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +6 -0
- package/lib/components/molecules/ChatAIContent/index.js +2 -0
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +241 -0
- package/lib/components/molecules/ChatAIHistory/index.js +2 -0
- package/lib/components/molecules/ChatAIHistory/styles.js +22 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +649 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +115 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +95 -0
- package/lib/components/molecules/ChatAIHome/index.js +2 -0
- package/lib/components/molecules/ChatAIHome/styles.js +335 -0
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +853 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +47 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
- package/lib/components/molecules/ChatAIMessages/README.md +101 -0
- package/lib/components/molecules/ChatAIMessages/index.js +2 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +131 -0
- package/lib/components/molecules/ChatAIMessages/styles.js +94 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1217 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +58 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +127 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +34 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +189 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +448 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +108 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +48 -0
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +38 -0
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/constants.js +40 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
- package/lib/components/molecules/ChatAIModal/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/layout.js +74 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +457 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +218 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
- package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +48 -0
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +49 -0
- package/lib/components/molecules/ChatAIProjectSelector/index.js +2 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +337 -0
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +32 -0
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +14 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +201 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
- package/lib/components/molecules/ChatFooter/index.js +2 -0
- package/lib/components/molecules/ChatFooter/styles.js +23 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +62 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
- package/lib/components/molecules/ContextMentionInput/index.js +2 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.js +118 -0
- package/lib/components/molecules/MessageFeedback/index.js +2 -0
- package/lib/components/molecules/MessageFeedback/styles.js +14 -0
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +127 -0
- package/lib/components/molecules/ProjectSummaryChat/index.js +2 -0
- package/lib/components/molecules/ProjectSummaryChat/styles.js +8 -0
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +152 -0
- package/lib/components/molecules/ProjectSummaryConfig/index.js +2 -0
- package/lib/components/molecules/ProjectSummaryConfig/styles.js +86 -0
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +49 -0
- package/lib/components/molecules/ProjectSummaryContent/index.js +2 -0
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +19 -0
- package/lib/components/molecules/ProjectSummaryModal/index.js +2 -0
- package/lib/components/molecules/ProjectSummaryModal/styles.js +2 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +715 -0
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +157 -0
- package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +75 -0
- package/lib/components/molecules/Sidebar/index.js +2 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1420 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +93 -0
- package/lib/components/organisms/AbmAgentModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +175 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +432 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
- package/lib/components/organisms/AbmSkillModal/index.js +2 -0
- package/lib/components/organisms/ChatAI/ChatAI.js +167 -0
- package/lib/components/organisms/ChatAI/index.js +2 -0
- package/lib/components/organisms/ChatAI/styles.js +7 -0
- package/lib/components/organisms/ClientAIButton/ClientAIButton.js +23 -0
- package/lib/components/organisms/ClientAIButton/index.js +2 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +86 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +39 -0
- package/lib/components/organisms/DeleteAgentModal/index.js +2 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +122 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +47 -0
- package/lib/components/organisms/DeleteQuestionModal/index.js +2 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +138 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +69 -0
- package/lib/components/organisms/EditQuestionModal/index.js +2 -0
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +113 -0
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +54 -0
- package/lib/components/organisms/ModalFileExceeds/index.js +2 -0
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +26 -0
- package/lib/components/organisms/ProjectAIButton/index.js +2 -0
- package/lib/components/organisms/ProjectSummary/ProjectSummary.js +60 -0
- package/lib/components/organisms/ProjectSummary/index.js +2 -0
- package/lib/components/organisms/ProjectSummary/styles.js +7 -0
- package/lib/components/organisms/SnackBar/Snackbar.interface.js +2 -0
- package/lib/components/organisms/SnackBar/Snackbar.js +73 -0
- package/lib/components/organisms/SnackBar/Snackbar.styles.js +9 -0
- package/lib/components/organisms/SnackBar/index.js +2 -0
- package/lib/components/organisms/SourcesInformation/SourceItem.js +18 -0
- package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +14 -0
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +66 -0
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +27 -0
- package/lib/components/organisms/SourcesInformation/index.js +2 -0
- package/lib/constants/config.js +13 -0
- package/lib/constants/formatExtensions.js +55 -0
- package/lib/constants/gqlClient.js +4 -0
- package/lib/constants/maiaHourAgentAccess.js +15 -0
- package/lib/constants/maiaTaskPanelAccess.js +24 -0
- package/lib/constants/maiaTaskPanelOutsideClick.js +9 -0
- package/lib/constants/maiaTaskPanelZIndex.js +19 -0
- package/lib/constants/permissions/config.js +72 -0
- package/lib/constants/permissions/index.js +3 -0
- package/lib/constants/permissions/types.js +2 -0
- package/lib/constants/permissions/utils.js +18 -0
- package/lib/constants/plannerSyncEvents.js +15 -0
- package/lib/constants/taskLinkIcon.js +15 -0
- package/lib/constants/taskUrls.js +11 -0
- package/lib/context/cor-user.js +31 -0
- package/lib/context/global-context.js +39 -0
- package/lib/dev/DevChatAI.js +101 -0
- package/lib/dev/DevContextMentionInput.js +67 -0
- package/lib/dev/ProjectSummary.js +9 -0
- package/lib/dev/Providers.js +27 -0
- package/lib/exports.js +2 -0
- package/lib/hooks/README.md +192 -0
- package/lib/hooks/index.js +30 -0
- package/lib/hooks/useAccessClient/index.js +2 -0
- package/lib/hooks/useAccessClient/useAccessClient.js +81 -0
- package/lib/hooks/useAgentModel/index.js +2 -0
- package/lib/hooks/useAgentModel/useAgentModel.js +62 -0
- package/lib/hooks/useAgentModel/useCreateAgent.js +128 -0
- package/lib/hooks/useAgentModel/useDeleteAgent.js +88 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.js +129 -0
- package/lib/hooks/useAgentSuggestions.js +60 -0
- package/lib/hooks/useCaretPosition.js +65 -0
- package/lib/hooks/useChatManager/index.js +2 -0
- package/lib/hooks/useChatManager/useChatManager.interface.js +2 -0
- package/lib/hooks/useChatManager/useChatManager.js +1782 -0
- package/lib/hooks/useChatMessages/index.js +2 -0
- package/lib/hooks/useChatMessages/useChatMessages.interface.js +2 -0
- package/lib/hooks/useChatMessages/useChatMessages.js +722 -0
- package/lib/hooks/useChats/index.js +2 -0
- package/lib/hooks/useChats/useChats.interfaces.js +2 -0
- package/lib/hooks/useChats/useChats.js +187 -0
- package/lib/hooks/useClientSearch.js +163 -0
- package/lib/hooks/useContextMentions.js +463 -0
- package/lib/hooks/useContextPinPopover.js +228 -0
- package/lib/hooks/useDebounce.js +18 -0
- package/lib/hooks/useEntitySearch.js +1239 -0
- package/lib/hooks/useEvent.js +93 -0
- package/lib/hooks/useFrequentlyAskedQuestions.js +150 -0
- package/lib/hooks/useFrequentlyUsedActions.js +94 -0
- package/lib/hooks/useKnowledge/deleteKnowledge.js +69 -0
- package/lib/hooks/useKnowledge/downloadKnowledge.js +81 -0
- package/lib/hooks/useKnowledge/index.js +4 -0
- package/lib/hooks/useKnowledge/saveKnowledge.js +107 -0
- package/lib/hooks/useKnowledge/useKnowledgeOperations.js +156 -0
- package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
- package/lib/hooks/useMentionAllowedTypes.js +136 -0
- package/lib/hooks/useMentionPopover.js +366 -0
- package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
- package/lib/hooks/useModal/index.js +2 -0
- package/lib/hooks/useModal/useModal.interfaces.js +2 -0
- package/lib/hooks/useModal/useModal.js +47 -0
- package/lib/hooks/useOnboardingNavigation.js +20 -0
- package/lib/hooks/useOrchestratorStream/index.js +2 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +2 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +269 -0
- package/lib/hooks/useProjectSearch.js +183 -0
- package/lib/hooks/useProjectSummary.js +101 -0
- package/lib/hooks/useProjectSummaryConfig.js +211 -0
- package/lib/hooks/useProjects.js +46 -0
- package/lib/hooks/useRecentClientsSearch.js +150 -0
- package/lib/hooks/useRecentContexts.js +86 -0
- package/lib/hooks/useResize.js +29 -0
- package/lib/hooks/useSlashCommands.js +84 -0
- package/lib/hooks/useSmoothStreamText/index.js +2 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +197 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.js +41 -0
- package/lib/hooks/useStreamResponse.js +112 -0
- package/lib/hooks/useStreamdownStyles.js +13 -0
- package/lib/hooks/useStreamingMessage/index.js +2 -0
- package/lib/hooks/useStreamingMessage/useStreamingMessage.js +18 -0
- package/lib/hooks/useT.js +17 -0
- package/lib/hooks/useTabTaskDefault.js +33 -0
- package/lib/hooks/useTaskPanel.js +22 -0
- package/lib/hooks/useTextOverflowEllipsisTooltip.js +34 -0
- package/lib/hooks/useToggle.js +19 -0
- package/lib/hooks/useToggleFavorite/index.js +2 -0
- package/lib/hooks/useToggleFavorite/useToggleFavorite.js +83 -0
- package/lib/index.css +76 -0
- package/lib/index.js +30 -0
- package/lib/lang/br/index.js +761 -0
- package/lib/lang/en/index.js +761 -0
- package/lib/lang/es/index.js +762 -0
- package/lib/lang/fr/index.js +582 -0
- package/lib/lang/index.js +24 -0
- package/lib/lang/utils.js +33 -0
- package/lib/mocks/mockChats.js +395 -0
- package/lib/mocks/mockOrchestrator.js +5 -0
- package/lib/mocks/mockProject.js +11 -0
- package/lib/mocks/mockProjectSummary.js +6 -0
- package/lib/mocks/mockedUser.js +169 -0
- package/lib/services/apolloClient.js +3 -0
- package/lib/services/appcues.js +19 -0
- package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +31 -0
- package/lib/services/corpilot/ProjectSummary/index.js +5 -0
- package/lib/services/corpilot/client.js +27 -0
- package/lib/services/corpilot/index.js +5 -0
- package/lib/services/maia/Access/updateAccess.js +59 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +46 -0
- package/lib/services/maia/Actions/getSlashCommands.js +39 -0
- package/lib/services/maia/Actions/index.js +7 -0
- package/lib/services/maia/Agents/createAgent.js +39 -0
- package/lib/services/maia/Agents/deleteAgent.js +38 -0
- package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
- package/lib/services/maia/Agents/getAgentById.js +162 -0
- package/lib/services/maia/Agents/getAgentModels.js +112 -0
- package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
- package/lib/services/maia/Agents/getAgents.js +718 -0
- package/lib/services/maia/Agents/setAgentToolGroups.js +42 -0
- package/lib/services/maia/Agents/toggleFavorite.js +34 -0
- package/lib/services/maia/Agents/updateAgent.js +39 -0
- package/lib/services/maia/Chats/deleteChat.js +32 -0
- package/lib/services/maia/Chats/getChatMessages.js +144 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +82 -0
- package/lib/services/maia/Chats/index.js +15 -0
- package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
- package/lib/services/maia/Chats/patchChat.js +43 -0
- package/lib/services/maia/Chats/wasHelpfulChat.js +31 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +55 -0
- package/lib/services/maia/Faqs/index.js +5 -0
- package/lib/services/maia/Knowledge/delete.js +41 -0
- package/lib/services/maia/Knowledge/download.js +48 -0
- package/lib/services/maia/Knowledge/index.js +3 -0
- package/lib/services/maia/Knowledge/save.js +43 -0
- package/lib/services/maia/Orchestrator/index.js +7 -0
- package/lib/services/maia/Orchestrator/orchestrator.js +246 -0
- package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
- package/lib/services/maia/RecentClients/index.js +6 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
- package/lib/services/maia/RecentContexts/index.js +6 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.js +55 -0
- package/lib/services/maia/RecentProjects/index.js +6 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.js +54 -0
- package/lib/services/maia/RecentTasks/index.js +6 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
- package/lib/services/maia/RecentUsers/index.js +6 -0
- package/lib/services/maia/Skills/createSkill.js +39 -0
- package/lib/services/maia/Skills/deleteSkill.js +38 -0
- package/lib/services/maia/Skills/generateSkill.js +41 -0
- package/lib/services/maia/Skills/getSkills.js +90 -0
- package/lib/services/maia/Skills/updateSkill.js +39 -0
- package/lib/services/maia/client.js +27 -0
- package/lib/services/maia/index.js +17 -0
- package/lib/services/query/ClientSearchQuery.js +5 -0
- package/lib/services/query/entitySearchQuery.js +18 -0
- package/lib/services/query/index.js +2 -0
- package/lib/services/query/projectSearchByValueQuery.js +5 -0
- package/lib/services/query/taskUserTabQuery.js +8 -0
- package/lib/services/query/usersDirectoryQuery.js +19 -0
- package/lib/services/types.js +6 -0
- package/lib/services/utils/fetchCOR.js +117 -0
- package/lib/services/utils/getCookie.js +10 -0
- package/lib/services/utils/index.js +3 -0
- package/lib/services/utils/mapChatMessages.js +287 -0
- package/lib/services/utils/validateIsMaia.js +4 -0
- package/lib/store/chatsSidebarOptimistic.js +92 -0
- package/lib/store/chatsStore.types.js +2 -0
- package/lib/store/chatsStoreLifecycle.js +8 -0
- package/lib/store/faqsStore.types.js +2 -0
- package/lib/store/index.js +4 -0
- package/lib/store/maiaLastChatPersistence.js +35 -0
- package/lib/store/sessions/activeView.js +22 -0
- package/lib/store/sessions/index.js +9 -0
- package/lib/store/sessions/sessionHitlContext.js +15 -0
- package/lib/store/sessions/sessionNotificationSound.js +57 -0
- package/lib/store/sessions/sessionNotifications.js +110 -0
- package/lib/store/sessions/sessionNotifications.types.js +2 -0
- package/lib/store/sessions/sessionStreamManager.js +715 -0
- package/lib/store/sessions/sessionStreamingText.js +80 -0
- package/lib/store/sessions/sessions.types.js +35 -0
- package/lib/store/sessions/useSessionMeta.js +39 -0
- package/lib/store/sessions/useSessionStreamingText.js +18 -0
- package/lib/store/sessions/useSessionsStore.js +197 -0
- package/lib/store/useChatsStore.js +387 -0
- package/lib/store/useFaqsStore.js +27 -0
- package/lib/streamdownStyles.js +9 -0
- package/lib/styles/StyledCleanContainer.js +7 -0
- package/lib/styles/cascade.js +14 -0
- package/lib/styles/config.js +47 -0
- package/lib/styles/shared/scrollable.js +3 -0
- package/lib/styles/transitions.js +21 -0
- package/lib/types/Action.js +2 -0
- package/lib/types/AgentSuggestion.js +2 -0
- package/lib/types/Chat.js +10 -0
- package/lib/types/Client.js +2 -0
- package/lib/types/FrequentlyAskedQuestion.js +2 -0
- package/lib/types/Project.js +2 -0
- package/lib/types/ProjectSummaryConfigKeys.js +9 -0
- package/lib/types/Task.js +2 -0
- package/lib/types/agent.js +2 -0
- package/lib/types/agentModal.js +2 -0
- package/lib/types/contextMention.js +37 -0
- package/lib/types/global.d.js +2 -0
- package/lib/types/skill.js +2 -0
- package/lib/types/streamActivity.js +2 -0
- package/lib/types/userType.d.js +2 -0
- package/lib/utils/actionCategoryMap.js +37 -0
- package/lib/utils/actionIconMap.js +61 -0
- package/lib/utils/agentDisplayName.js +42 -0
- package/lib/utils/chatInputFiles.js +52 -0
- package/lib/utils/contextMentionIcons.js +134 -0
- package/lib/utils/contextMentionLabel.js +4 -0
- package/lib/utils/contextMentionTriggers.js +54 -0
- package/lib/utils/contextMentionTypeLabel.js +17 -0
- package/lib/utils/corConnectorMentionTypes.js +41 -0
- package/lib/utils/ensureStreamdownStyles.js +21 -0
- package/lib/utils/entityLinkRender.js +135 -0
- package/lib/utils/fileDownloadHelper.js +40 -0
- package/lib/utils/formatQuickActionMessage.js +16 -0
- package/lib/utils/formatUnreadCount.js +6 -0
- package/lib/utils/getUnitFileSize.js +13 -0
- package/lib/utils/hitlAnalytics.js +65 -0
- package/lib/utils/hoursPlannerQuickActionType.js +64 -0
- package/lib/utils/imagePreprocessor.js +108 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/maiaHostOpen.js +19 -0
- package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
- package/lib/utils/mapBackendLang.js +8 -0
- package/lib/utils/normalizeAgentConnectors.js +70 -0
- package/lib/utils/openTaskInCorPanel.js +22 -0
- package/lib/utils/orchestratorSubagents.js +11 -0
- package/lib/utils/renderContextMentions.js +399 -0
- package/lib/utils/retryCompletion.js +85 -0
- package/lib/utils/slashCommandMarker.js +30 -0
- package/lib/utils/sortManagerHoursHomeFuas.js +14 -0
- package/lib/utils/sseStreamContent.js +17 -0
- package/lib/utils/streamActivityMessages.js +359 -0
- package/lib/utils/validateTrimmedFields.js +8 -0
- 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==
|