@rh-support/troubleshoot 2.7.0 → 2.7.10
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/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/AccountSelector.js +23 -33
- package/lib/esm/components/AccountInfo/ManagedAccountsDropdown.js +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.js +90 -24
- package/lib/esm/components/AccountInfo/css/accountSelector.css +3 -2
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/ActiveCustomerEscalation.js +47 -35
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +167 -90
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts +7 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/ArchivedCaseBanner.js +12 -0
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +103 -37
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +44 -37
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts +1 -0
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsErrorMessage.js +32 -11
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +94 -72
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts +2 -0
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +4 -4
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts +3 -2
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseStatus.js +24 -11
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +2 -4
- package/lib/esm/components/CaseEditView/CaseOverview/DateTime.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/DateTime.js +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +123 -70
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +240 -121
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts +0 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutionsItem.js +6 -6
- package/lib/esm/components/CaseEditView/CaseSolutions/HandpicketItem.js +3 -3
- package/lib/esm/components/CaseEditView/CaseSubscriptionAbuseAlert.js +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts +1 -3
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +55 -43
- package/lib/esm/components/CaseEditView/PDFContainer.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/PDFContainer.js +19 -15
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSession.js +33 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/ESSRemoteSessionModal.js +31 -33
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +116 -91
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreement.js +33 -16
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +114 -89
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts +15 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.js +47 -0
- package/lib/esm/components/CaseEditView/ShareCase/TnC.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseActionPlan/CaseActionPlan.js +9 -6
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +54 -48
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +84 -17
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseHostname.js +8 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInformation.js +0 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +4 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftV3Popover.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +137 -59
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CasePhoneNumberConfirmAlert.js +6 -9
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseReferenceNumber.js +13 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseSbrGroups.js +3 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +119 -65
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/SFDCUrl.js +3 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +22 -15
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/useCustomEmails.js +6 -5
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts +25 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/AsaCommentFeedbackModal.js +102 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +44 -28
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseChat.js +7 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +158 -101
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts +10 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +294 -143
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseExternalTrackerUpdate.js +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +16 -16
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/DiscussionItemLink.js +9 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/JumpAndCopyLink.js +8 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts +29 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useAttachmentUploadCompletion.js +29 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts +17 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts.map +1 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.js +62 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.js +14 -12
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts +9 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +223 -277
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +33 -25
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts +0 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.js +8 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +55 -42
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts +36 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +100 -248
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts +4 -5
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.js +29 -12
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +32 -18
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +5 -7
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.js +41 -55
- package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.js +2 -3
- package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts +7 -0
- package/lib/esm/components/CaseInformation/AISureMessageCard.d.ts.map +1 -0
- package/lib/esm/components/CaseInformation/AISureMessageCard.js +15 -0
- package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseGroup.js +177 -55
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +15 -14
- package/lib/esm/components/CaseInformation/CaseLabels.d.ts +3 -0
- package/lib/esm/components/CaseInformation/CaseLabels.d.ts.map +1 -0
- package/lib/esm/components/CaseInformation/CaseLabels.js +108 -0
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +108 -31
- package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumberPopOver.js +3 -3
- package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Description.js +25 -7
- package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/FileDiag.js +2 -5
- package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Fts.js +41 -27
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts +1 -0
- package/lib/esm/components/CaseInformation/OpenCaseIssue.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/OpenCaseIssue.js +8 -3
- package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Severity.js +34 -25
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +43 -51
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts +4 -0
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts.map +1 -0
- package/lib/esm/components/CaseManagement/CaseLabelsCreate.js +141 -0
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +14 -17
- package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseManagement.js +15 -12
- package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/Cep.js +56 -51
- package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/ESSRemoteSessionCheckBox.js +50 -42
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts +2 -1
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/NoClusterIDReasonSelector.js +74 -72
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +14 -9
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts +1 -4
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +136 -84
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +12 -8
- package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/AddContactToGroupModal.js +8 -8
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/AddCustomEmailToAccountModal.js +19 -21
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +15 -10
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/NonOrgCaseNotifyeesSelector.js +94 -49
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +17 -34
- package/lib/esm/components/ConfirmationModals/PreCaseConfirmationModals.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/PreferredSecureSupportModal.js +1 -1
- package/lib/esm/components/Cve/CveItem.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveItem.js +14 -11
- package/lib/esm/components/Cve/CveModal.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveModal.js +12 -11
- package/lib/esm/components/Cve/CvePanel.d.ts.map +1 -1
- package/lib/esm/components/Cve/CvePanel.js +18 -10
- package/lib/esm/components/Cve/CveSidebar.d.ts.map +1 -1
- package/lib/esm/components/Cve/CveSidebar.js +9 -8
- package/lib/esm/components/EditDescription/EditDescription.d.ts.map +1 -1
- package/lib/esm/components/EditDescription/EditDescription.js +4 -2
- package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.js +30 -24
- package/lib/esm/components/ImproveCase/Hostname.d.ts.map +1 -1
- package/lib/esm/components/ImproveCase/Hostname.js +2 -2
- package/lib/esm/components/ImproveCase/KtQuestions.js +6 -6
- package/lib/esm/components/OpenCase/CaseTypeIcons/BugIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/CertificationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/DocumentationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/GearIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/IdeaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/CaseTypeIcons/RcaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/OpenCase.js +2 -8
- package/lib/esm/components/OpenCase/SupportTypeIcons/BugIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/CertificationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/CustomerServiceIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/DocumentationIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/GearIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/IdeaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeIcons/RcaIcon.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +10 -15
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +0 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +20 -39
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +67 -59
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +47 -56
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts +3 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.d.ts.map +1 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledWarning.js +9 -0
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +7 -16
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductVersionDropdownSelector.js +13 -5
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +22 -12
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +2 -0
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +18 -13
- package/lib/esm/components/Recommendations/ClusterRecommendationToast.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationToast.js +1 -4
- package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendations.js +3 -9
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/ClusterRecommendationsModal.js +10 -11
- package/lib/esm/components/Recommendations/CriticalSolutionsToast.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/CriticalSolutionsToast.js +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.js +9 -4
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoAccordion.js +6 -4
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +9 -9
- package/lib/esm/components/Recommendations/InsightsResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsResults.js +9 -5
- package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsRuleInfo.js +25 -16
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationFeedbackModal.js +7 -7
- package/lib/esm/components/Recommendations/RecommendationInfoBox.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RecommendationInfoBox.js +7 -7
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +51 -42
- package/lib/esm/components/Recommendations/RecommendationsLoader.js +1 -1
- package/lib/esm/components/Recommendations/RulesModal.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/RulesModal.js +10 -12
- package/lib/esm/components/Recommendations/WatsonxAiIcon.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/WatsonxAiIcon.js +9 -10
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
- package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.js +10 -8
- package/lib/esm/components/RemoteRider/RemoteRiderBanner.js +1 -1
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +43 -28
- package/lib/esm/components/SessionRestore/RestoreLastSessionModal.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/RestoreLastSessionModal.js +7 -5
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts +2 -0
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +35 -13
- package/lib/esm/components/SessionRestore/SessionRestoreCard.js +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.js +34 -22
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts +3 -0
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.d.ts.map +1 -0
- package/lib/esm/components/Suggestions/EmptyTopContentSidebar.js +26 -0
- package/lib/esm/components/Suggestions/Suggestions.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/Suggestions.js +31 -25
- package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/TopContent.js +17 -17
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/AskRedHat.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/AskRedHat.js +367 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/CloseButton.js +5 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts +15 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/QuickResponse.js +26 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts +18 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/ResponseActionButton.js +28 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts +20 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/ResponseActions.js +54 -0
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +20 -0
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +346 -27
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts +13 -0
- package/lib/esm/components/TroubleshootSection/UserFeedback.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/UserFeedback.js +50 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts +10 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/UserFeedbackComplete.js +50 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/icons/CollapseIcon.js +9 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts +9 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.d.ts.map +1 -0
- package/lib/esm/components/TroubleshootSection/icons/StarIcon.js +17 -0
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.d.ts.map +1 -1
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +157 -105
- package/lib/esm/components/shared/Constants.d.ts +1 -4
- package/lib/esm/components/shared/Constants.d.ts.map +1 -1
- package/lib/esm/components/shared/Constants.js +1 -4
- package/lib/esm/components/shared/Rule.d.ts.map +1 -1
- package/lib/esm/components/shared/Rule.js +6 -6
- package/lib/esm/components/shared/fileUpload/FileLister.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileLister.js +11 -14
- package/lib/esm/components/shared/fileUpload/FileUpload.js +2 -3
- package/lib/esm/components/shared/fileUpload/FileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileUploader.js +3 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts +1 -0
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +13 -10
- package/lib/esm/components/shared/fileUpload/common/FileUploaderInfoIcon.js +1 -1
- package/lib/esm/components/shared/fileUpload/css/fileSelector.css +2 -0
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.js +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +4 -4
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelectorImage.js +2 -2
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts +22 -5
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +311 -60
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts +5 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentReducer.js +36 -1
- package/lib/esm/components/shared/fileUpload/types/index.d.ts +5 -1
- package/lib/esm/components/shared/fileUpload/types/index.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts +2 -2
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.js +119 -47
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts +16 -6
- package/lib/esm/components/shared/input/ContactSelectorInternal.d.ts.map +1 -1
- package/lib/esm/components/shared/input/ContactSelectorInternal.js +133 -23
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +70 -91
- package/lib/esm/components/shared/usePostComment.d.ts.map +1 -1
- package/lib/esm/components/shared/usePostComment.js +16 -28
- package/lib/esm/components/shared/utils.d.ts +1 -0
- package/lib/esm/components/shared/utils.d.ts.map +1 -1
- package/lib/esm/components/shared/utils.js +9 -3
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +187 -37
- package/lib/esm/components/wizardLayout/MainSection.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/MainSection.js +5 -4
- package/lib/esm/components/wizardLayout/NewFeatureModal.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/NewFeatureModal.js +6 -6
- package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardAside.js +35 -15
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +17 -46
- package/lib/esm/components/wizardLayout/WizardMain.d.ts +10 -1
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +361 -22
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts +8 -2
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +118 -75
- package/lib/esm/components/wizardLayout/index.d.ts +1 -0
- package/lib/esm/components/wizardLayout/index.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/index.js +1 -0
- package/lib/esm/constants/askRedHatMessages.d.ts +35 -0
- package/lib/esm/constants/askRedHatMessages.d.ts.map +1 -0
- package/lib/esm/constants/askRedHatMessages.js +61 -0
- package/lib/esm/constants/caseDetailsConstants.d.ts +15 -11
- package/lib/esm/constants/caseDetailsConstants.d.ts.map +1 -1
- package/lib/esm/constants/caseDetailsConstants.js +32 -12
- package/lib/esm/context/AIResponseContext.d.ts +10 -0
- package/lib/esm/context/AIResponseContext.d.ts.map +1 -0
- package/lib/esm/context/AIResponseContext.js +26 -0
- package/lib/esm/context/CaseContext.d.ts.map +1 -1
- package/lib/esm/context/RootTroubleshootProvider.d.ts.map +1 -1
- package/lib/esm/context/RootTroubleshootProvider.js +8 -6
- package/lib/esm/css/AskRedHat.css +495 -0
- package/lib/esm/css/app.css +54 -17
- package/lib/esm/css/case.css +499 -37
- package/lib/esm/css/productSelector.css +5 -1
- package/lib/esm/css/results.css +2 -2
- package/lib/esm/graphql/index.d.ts +4 -0
- package/lib/esm/graphql/index.d.ts.map +1 -0
- package/lib/esm/graphql/index.js +3 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts +2 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.js +24 -0
- package/lib/esm/graphql/mutations/index.d.ts +2 -0
- package/lib/esm/graphql/mutations/index.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/index.js +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts +2 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts.map +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.js +36 -0
- package/lib/esm/graphql/queries/index.d.ts +2 -0
- package/lib/esm/graphql/queries/index.d.ts.map +1 -0
- package/lib/esm/graphql/queries/index.js +1 -0
- package/lib/esm/graphql/schemas/escalation.d.ts +66 -0
- package/lib/esm/graphql/schemas/escalation.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/escalation.js +1 -0
- package/lib/esm/graphql/schemas/index.d.ts +2 -0
- package/lib/esm/graphql/schemas/index.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/index.js +1 -0
- package/lib/esm/hooks/useAB.d.ts +23 -0
- package/lib/esm/hooks/useAB.d.ts.map +1 -0
- package/lib/esm/hooks/useAB.js +75 -0
- package/lib/esm/hooks/useARHResponse.d.ts +15 -0
- package/lib/esm/hooks/useARHResponse.d.ts.map +1 -0
- package/lib/esm/hooks/useARHResponse.js +103 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts +4 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/caseCommentsQuery.js +57 -0
- package/lib/esm/hooks/useCaseComments/index.d.ts +8 -0
- package/lib/esm/hooks/useCaseComments/index.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/index.js +5 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts +25 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/mapCaseComment.js +75 -0
- package/lib/esm/hooks/useCaseComments/types.d.ts +93 -0
- package/lib/esm/hooks/useCaseComments/types.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/types.js +1 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts +26 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/useCaseComments.js +116 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts +19 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseComments/useCreateCaseComment.js +33 -0
- package/lib/esm/hooks/useCaseGroupUiState.d.ts +3 -0
- package/lib/esm/hooks/useCaseGroupUiState.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseGroupUiState.js +10 -0
- package/lib/esm/hooks/useCaseHistory.d.ts +26 -0
- package/lib/esm/hooks/useCaseHistory.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseHistory.js +107 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts +23 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.d.ts.map +1 -0
- package/lib/esm/hooks/useCaseLabelLinkMutations.js +84 -0
- package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts +9 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.d.ts.map +1 -1
- package/lib/esm/hooks/useCaseUpdateErrorMessage.js +108 -11
- package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
- package/lib/esm/hooks/useResetCaseCreate.js +18 -11
- package/lib/esm/hooks/useS3Upload.d.ts +5 -4
- package/lib/esm/hooks/useS3Upload.d.ts.map +1 -1
- package/lib/esm/hooks/useS3Upload.js +28 -30
- package/lib/esm/hooks/useWizard.d.ts +14 -0
- package/lib/esm/hooks/useWizard.d.ts.map +1 -1
- package/lib/esm/hooks/useWizard.js +33 -11
- package/lib/esm/i18n/template-de.d.ts +82 -4
- package/lib/esm/i18n/template-de.d.ts.map +1 -1
- package/lib/esm/i18n/template-de.js +82 -4
- package/lib/esm/i18n/template-es.d.ts +81 -3
- package/lib/esm/i18n/template-es.d.ts.map +1 -1
- package/lib/esm/i18n/template-es.js +81 -3
- package/lib/esm/i18n/template-fr.d.ts +81 -3
- package/lib/esm/i18n/template-fr.d.ts.map +1 -1
- package/lib/esm/i18n/template-fr.js +81 -3
- package/lib/esm/i18n/template-it.d.ts +81 -3
- package/lib/esm/i18n/template-it.d.ts.map +1 -1
- package/lib/esm/i18n/template-it.js +81 -3
- package/lib/esm/i18n/template-jp.d.ts +81 -3
- package/lib/esm/i18n/template-jp.d.ts.map +1 -1
- package/lib/esm/i18n/template-jp.js +81 -3
- package/lib/esm/i18n/template-ko.d.ts +81 -3
- package/lib/esm/i18n/template-ko.d.ts.map +1 -1
- package/lib/esm/i18n/template-ko.js +81 -3
- package/lib/esm/i18n/template-pt.d.ts +81 -3
- package/lib/esm/i18n/template-pt.d.ts.map +1 -1
- package/lib/esm/i18n/template-pt.js +81 -3
- package/lib/esm/i18n/template-ru.d.ts +47 -3
- package/lib/esm/i18n/template-ru.d.ts.map +1 -1
- package/lib/esm/i18n/template-ru.js +47 -3
- package/lib/esm/i18n/template-zh.d.ts +59 -3
- package/lib/esm/i18n/template-zh.d.ts.map +1 -1
- package/lib/esm/i18n/template-zh.js +59 -3
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +2 -0
- package/lib/esm/models/cache.d.ts +0 -2
- package/lib/esm/models/cache.d.ts.map +1 -1
- package/lib/esm/models/caseHistory.d.ts +86 -0
- package/lib/esm/models/caseHistory.d.ts.map +1 -0
- package/lib/esm/models/caseHistory.js +1 -0
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts +90 -0
- package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -0
- package/lib/esm/reducers/AIResponseConstNTypes.js +33 -0
- package/lib/esm/reducers/AIResponseReducer.d.ts +14 -0
- package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -0
- package/lib/esm/reducers/AIResponseReducer.js +80 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts +129 -9
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +39 -10
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +7 -5
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.js +61 -26
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +11 -10
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDiscussionTabReducer.js +95 -64
- package/lib/esm/reducers/CaseHelpers.d.ts +26 -7
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +150 -27
- package/lib/esm/reducers/CaseOverviewReducer.d.ts +3 -1
- package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseOverviewReducer.js +7 -5
- package/lib/esm/reducers/CaseReducer.d.ts +59 -12
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +311 -95
- package/lib/esm/reducers/ClusterRecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RecommendationsReducer.js +16 -19
- package/lib/esm/reducers/RouteConstNTypes.d.ts +1 -2
- package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/RouteConstNTypes.js +4 -1
- package/lib/esm/reducers/RouteReducer.d.ts +2 -2
- package/lib/esm/reducers/RouteReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RouteReducer.js +1 -1
- package/lib/esm/reducers/RulesReducer.d.ts +11 -4
- package/lib/esm/reducers/RulesReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RulesReducer.js +6 -1
- package/lib/esm/reducers/SessionRestoreReducer.d.ts +4 -3
- package/lib/esm/reducers/SessionRestoreReducer.d.ts.map +1 -1
- package/lib/esm/reducers/SessionRestoreReducer.js +51 -17
- package/lib/esm/reducers/TopContentReducer.d.ts.map +1 -1
- package/lib/esm/reducers/TopContentReducer.js +1 -1
- package/lib/esm/scss/_main.scss +295 -117
- package/lib/esm/scss/_pf-overrides.scss +269 -162
- package/lib/esm/utils/TimelineUtils.d.ts +41 -0
- package/lib/esm/utils/TimelineUtils.d.ts.map +1 -0
- package/lib/esm/utils/TimelineUtils.js +135 -0
- package/lib/esm/utils/caseDetailsCacheUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseDetailsCacheUtils.js +1 -0
- package/lib/esm/utils/caseHistoryUtils.d.ts +85 -0
- package/lib/esm/utils/caseHistoryUtils.d.ts.map +1 -0
- package/lib/esm/utils/caseHistoryUtils.js +200 -0
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts +1 -2
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseOpenshiftClusterIdUtils.js +4 -4
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts +6 -0
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.d.ts.map +1 -0
- package/lib/esm/utils/caseSeverityFtsGraphQLUtils.js +26 -0
- package/lib/esm/utils/caseUtils.d.ts.map +1 -1
- package/lib/esm/utils/engagementUtils.d.ts +3 -0
- package/lib/esm/utils/engagementUtils.d.ts.map +1 -0
- package/lib/esm/utils/engagementUtils.js +16 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.d.ts +8 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.d.ts.map +1 -0
- package/lib/esm/utils/linkifyHtmlTextNodes.js +37 -0
- package/lib/esm/utils/remoteRiderUtils.d.ts.map +1 -1
- package/lib/esm/utils/visitedResourcesUtils.d.ts +31 -0
- package/lib/esm/utils/visitedResourcesUtils.d.ts.map +1 -0
- package/lib/esm/utils/visitedResourcesUtils.js +99 -0
- package/package.json +21 -26
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/CaseHistory.css +0 -0
|
@@ -1,31 +1,37 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import './Timeline.css';
|
|
11
|
-
import {
|
|
12
|
-
import { Avatar, Button, DatePicker, EmptyState, EmptyStateBody, EmptyStateHeader, EmptyStateIcon, EmptyStateVariant, MenuToggle, Pagination, SearchInput, Select, SelectOption, Spinner, } from '@patternfly/react-core';
|
|
2
|
+
import { Avatar, Button, DatePicker, EmptyState, EmptyStateBody, EmptyStateVariant, MenuToggle, Pagination, SearchInput, Select, SelectOption, Spinner, } from '@patternfly/react-core';
|
|
13
3
|
import ExclamationCircleIcon from '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
|
|
14
4
|
import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
|
|
15
|
-
import globalDangerColor100 from '@patternfly/react-tokens/dist/js/global_danger_color_100';
|
|
16
5
|
import { haltEvent } from '@rh-support/utils';
|
|
17
|
-
import { format,
|
|
6
|
+
import { format, isSameDay, parse, parseISO } from 'date-fns';
|
|
18
7
|
import debounce from 'lodash/debounce';
|
|
19
8
|
import isEmpty from 'lodash/isEmpty';
|
|
20
9
|
import React, { useEffect, useRef, useState } from 'react';
|
|
21
10
|
import { Trans, useTranslation } from 'react-i18next';
|
|
22
|
-
|
|
11
|
+
import { useCaseHistory } from '../../../../hooks/useCaseHistory';
|
|
12
|
+
import { getFieldDisplayName } from '../../../../utils/caseHistoryUtils';
|
|
13
|
+
import { applyPostProcessing, handleFieldChange } from '../../../../utils/TimelineUtils';
|
|
14
|
+
const CustomHighlighter = ({ search, children, highlightDate, }) => {
|
|
15
|
+
const createHighlight = (text) => React.createElement("mark", { className: "timeline-highlight" }, text);
|
|
16
|
+
if (highlightDate) {
|
|
17
|
+
return createHighlight(children);
|
|
18
|
+
}
|
|
19
|
+
if (search) {
|
|
20
|
+
const escapedSearch = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
21
|
+
const regex = new RegExp(`(${escapedSearch})`, 'i');
|
|
22
|
+
const parts = children.split(regex);
|
|
23
|
+
return React.createElement(React.Fragment, null, parts.map((part, index) => (regex.test(part) ? createHighlight(part) : part)));
|
|
24
|
+
}
|
|
25
|
+
return React.createElement(React.Fragment, null, children);
|
|
26
|
+
};
|
|
27
|
+
const TimelineEvent = ({ date, text, side, user, useAvatar, searchValue, highlightDate, }) => {
|
|
23
28
|
if (side === 'left') {
|
|
24
29
|
if (useAvatar) {
|
|
25
30
|
// we render the main date if the user changes or if the date changes
|
|
26
31
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
|
|
27
32
|
React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
|
|
28
|
-
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
33
|
+
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
34
|
+
React.createElement(CustomHighlighter, { highlightDate: highlightDate }, date)),
|
|
29
35
|
React.createElement("p", { className: `content-time-${side}-history` }, text))));
|
|
30
36
|
}
|
|
31
37
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline Event Time` },
|
|
@@ -34,192 +40,63 @@ const TimelineEvent = ({ date, text, side, user, useAvatar }) => {
|
|
|
34
40
|
}
|
|
35
41
|
return (React.createElement("div", { className: `${side}-node ${user}`, role: "complementary", "aria-label": `${user}'s timeline event content` },
|
|
36
42
|
React.createElement("div", { className: `contentTimeline content-${side}-history content-${side}-${user}` },
|
|
37
|
-
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
38
|
-
|
|
43
|
+
React.createElement("h2", { className: `content-date-${side}-history` },
|
|
44
|
+
React.createElement(CustomHighlighter, { search: searchValue || '' }, date)),
|
|
45
|
+
text && (React.createElement("p", { className: `content-time-${side}-history` },
|
|
46
|
+
React.createElement(CustomHighlighter, { search: searchValue || '' }, text))))));
|
|
39
47
|
};
|
|
40
|
-
const
|
|
48
|
+
const DEFAULT_AVATAR_SRC = 'https://www.patternfly.org/images/668560cd.svg';
|
|
49
|
+
const TimelineNode = React.forwardRef(({ leftEvent, rightEvent, user, useAvatar, photoUrl, searchValue, highlightDate }, ref) => {
|
|
50
|
+
const [imgSrc, setImgSrc] = useState(photoUrl || DEFAULT_AVATAR_SRC);
|
|
41
51
|
return (React.createElement("div", { className: "timeline-node", role: "region", "aria-label": "Timeline node" },
|
|
42
|
-
leftEvent && React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar })),
|
|
43
|
-
React.createElement("div", { ref: ref, "aria-label": `${useAvatar ? 'User profile picture' : 'Timeline marker'}`, tabIndex: -1 }, useAvatar ? (React.createElement(Avatar, { src:
|
|
44
|
-
rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right" }))));
|
|
52
|
+
leftEvent && (React.createElement(TimelineEvent, Object.assign({}, leftEvent, { side: "left", useAvatar: useAvatar, searchValue: searchValue, highlightDate: highlightDate }))),
|
|
53
|
+
React.createElement("div", { ref: ref, "aria-label": `${useAvatar ? 'User profile picture' : 'Timeline marker'}`, tabIndex: -1 }, useAvatar ? (React.createElement(Avatar, { src: imgSrc, className: `timeline-avatar timeline-avatar-${user}`, alt: `${user}'s avatar`, onError: () => setImgSrc(DEFAULT_AVATAR_SRC) })) : (React.createElement("div", { className: `timeline-marker timeline-${user}` }))),
|
|
54
|
+
rightEvent && React.createElement(TimelineEvent, Object.assign({}, rightEvent, { side: "right", searchValue: searchValue }))));
|
|
45
55
|
});
|
|
46
56
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @returns {string} The formatted text string.
|
|
57
|
+
* Builds the display text for a "Change" history item by resolving values and
|
|
58
|
+
* delegating to field-specific formatters.
|
|
50
59
|
*/
|
|
51
|
-
const applyReplacements = (item) => {
|
|
60
|
+
export const applyReplacements = (item) => {
|
|
61
|
+
var _a, _b;
|
|
52
62
|
if (!item || typeof item !== 'object')
|
|
53
63
|
return '';
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
EntitlementId: 'Entitlement',
|
|
60
|
-
AccountId: 'Account',
|
|
61
|
-
OwnerId: 'Owner',
|
|
62
|
-
BusinessHoursId: 'Business Hours',
|
|
63
|
-
FolderId__c: 'Case Group',
|
|
64
|
-
Status: 'Status',
|
|
65
|
-
Customer_Escalation__c: 'Customer Escalation',
|
|
66
|
-
SlaStartDate: 'SLA Start Date',
|
|
67
|
-
Case_Language__c: 'Case Language',
|
|
68
|
-
Alternate_Id__c: 'Personal reference number',
|
|
69
|
-
SBR_Group__c: 'SBR Group',
|
|
70
|
-
};
|
|
71
|
-
// https://help.salesforce.com/s/articleView?id=000384484&type=1
|
|
72
|
-
// adding in option for multiselect fields provided by salesforce.
|
|
73
|
-
// in future for more multiselect fields just add to below array.
|
|
74
|
-
const multiSelectFields = ['SBR_Group__c'];
|
|
75
|
-
// language codes to language names
|
|
76
|
-
const languageCodeMapping = {
|
|
77
|
-
de: 'German',
|
|
78
|
-
en: 'English',
|
|
79
|
-
es: 'Spanish',
|
|
80
|
-
fr: 'French',
|
|
81
|
-
it: 'Italian',
|
|
82
|
-
pt: 'Portuguese',
|
|
83
|
-
ko: 'Korean',
|
|
84
|
-
jp: 'Japanese',
|
|
85
|
-
zh: 'Chinese',
|
|
86
|
-
};
|
|
87
|
-
// field display names to prefix keys used in item properties
|
|
88
|
-
const keyMap = {
|
|
89
|
-
Product: 'product',
|
|
90
|
-
Version: 'version',
|
|
91
|
-
Account: 'account',
|
|
92
|
-
Contact: 'contact',
|
|
93
|
-
Entitlement: 'entitlement',
|
|
94
|
-
'Business Hours': 'businessHours',
|
|
95
|
-
Owner: 'queueNameOwner',
|
|
96
|
-
'Customer Escalation': 'customerEscalation',
|
|
97
|
-
'Case Group': 'caseGroup',
|
|
98
|
-
'SLA Start Date': 'slaStartDate',
|
|
99
|
-
'Case Language': 'caseLanguage',
|
|
100
|
-
'Personal reference number': 'alternateId',
|
|
101
|
-
};
|
|
102
|
-
// get the mapped display name for a field
|
|
103
|
-
const getMappedFieldName = (fieldName) => fieldNameMapping[fieldName] || item.fieldLabel || fieldName || '';
|
|
104
|
-
// get the new or old value using the prefix
|
|
105
|
-
const getNameValue = (prefix) => item[`${keyMap[getMappedFieldName(item.fieldName)]}${prefix}Name`] ||
|
|
106
|
-
item[`${prefix}Value`] ||
|
|
107
|
-
item[`${prefix.toLowerCase()}Value`] ||
|
|
108
|
-
'';
|
|
109
|
-
// formatting functions
|
|
110
|
-
const formatLanguageChange = (fieldName, oldLanguage, newLanguage) => `changed ${fieldName} from ${oldLanguage} to ${newLanguage}`;
|
|
111
|
-
const formatSimpleChange = (fieldName, value) => `set ${fieldName} to ${value}`;
|
|
112
|
-
const formatBooleanChange = (fieldName, value) => `set ${fieldName} to ${value}`;
|
|
113
|
-
// get field name and values
|
|
114
|
-
const fieldName = getMappedFieldName(item.fieldName);
|
|
115
|
-
const newValue = getNameValue('New');
|
|
116
|
-
const oldValue = getNameValue('Old');
|
|
117
|
-
let newText = '';
|
|
118
|
-
// special field handling below, useful for future exposed case history fields etc / api changes
|
|
119
|
-
switch (item.fieldName) {
|
|
120
|
-
case 'Case_Language__c': {
|
|
121
|
-
const newLanguage = languageCodeMapping[item.newValue] || item.newValue;
|
|
122
|
-
const oldLanguage = languageCodeMapping[item.oldValue] || item.oldValue;
|
|
123
|
-
newText =
|
|
124
|
-
item.oldValue && item.newValue
|
|
125
|
-
? formatLanguageChange(fieldName, oldLanguage, newLanguage)
|
|
126
|
-
: formatSimpleChange(fieldName, newLanguage || 'empty');
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
case 'OwnerId':
|
|
130
|
-
if (item.createdByUserName)
|
|
131
|
-
newText = formatSimpleChange(fieldName, item.createdByUserName);
|
|
132
|
-
break;
|
|
133
|
-
case 'Status':
|
|
134
|
-
newText =
|
|
135
|
-
item.oldValue && item.newValue
|
|
136
|
-
? `changed ${fieldName} from ${item.oldValue} to ${item.newValue}`
|
|
137
|
-
: formatSimpleChange(fieldName, item.newValue || 'empty');
|
|
138
|
-
break;
|
|
139
|
-
case 'Customer_Escalation__c':
|
|
140
|
-
if (item.createdByUserName)
|
|
141
|
-
newText = 'started Escalation for this ticket';
|
|
142
|
-
break;
|
|
143
|
-
case 'SlaStartDate':
|
|
144
|
-
if (item.newValue)
|
|
145
|
-
newText = formatSimpleChange(fieldName, item.newValue);
|
|
146
|
-
break;
|
|
147
|
-
case 'RemoteSessionTermsAckedBy__c':
|
|
148
|
-
newText = 'Acked Remote Rider terms';
|
|
149
|
-
break;
|
|
150
|
-
default:
|
|
151
|
-
if (oldValue && newValue) {
|
|
152
|
-
if (multiSelectFields.includes(item.fieldName)) {
|
|
153
|
-
// in salesforce multi-select picklist values are stored as a single string, with each value separated by a semicolon
|
|
154
|
-
const oldValues = oldValue.split(';').map((s) => s.trim());
|
|
155
|
-
const newValues = newValue.split(';').map((s) => s.trim());
|
|
156
|
-
const added = newValues.filter((nv) => !oldValues.includes(nv));
|
|
157
|
-
const removed = oldValues.filter((ov) => !newValues.includes(ov));
|
|
158
|
-
if (added.length > 0 && removed.length === 0) {
|
|
159
|
-
newText = `added ${added.join(', ')} to ${fieldName}`;
|
|
160
|
-
}
|
|
161
|
-
else if (removed.length > 0 && added.length === 0) {
|
|
162
|
-
newText = `removed ${removed.join(', ')} from ${fieldName}`;
|
|
163
|
-
}
|
|
164
|
-
else if (added.length > 0 && removed.length > 0) {
|
|
165
|
-
newText = `changed ${fieldName}, added ${added.join(', ')} and removed ${removed.join(', ')}`;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
newText = `changed ${fieldName} from ${oldValue} to ${newValue}`;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
newText = `changed ${fieldName} from ${oldValue} to ${newValue}`;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
else if (newValue) {
|
|
176
|
-
newText = formatSimpleChange(fieldName, newValue);
|
|
177
|
-
}
|
|
178
|
-
else if (oldValue && (newValue === undefined || newValue === '')) {
|
|
179
|
-
newText = `removed ${fieldName}, was ${oldValue}`;
|
|
180
|
-
}
|
|
181
|
-
else if (item.newValue !== undefined) {
|
|
182
|
-
newText = formatSimpleChange(fieldName, item.newValue);
|
|
183
|
-
}
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
if (typeof item.newValue === 'boolean')
|
|
187
|
-
newText = formatBooleanChange(fieldName, item.newValue);
|
|
188
|
-
if (typeof newText === 'string')
|
|
189
|
-
newText = newText.replace(/Problem Statement/g, 'Title');
|
|
190
|
-
if (typeof newText === 'string')
|
|
191
|
-
newText = newText.replace(/Case Type/g, 'Support Type');
|
|
192
|
-
return newText;
|
|
64
|
+
const fieldName = item.displayName || getFieldDisplayName(item.fieldName) || item.fieldName;
|
|
65
|
+
const newValue = String((_a = item.newValue) !== null && _a !== void 0 ? _a : '');
|
|
66
|
+
const oldValue = String((_b = item.oldValue) !== null && _b !== void 0 ? _b : '');
|
|
67
|
+
const text = handleFieldChange(item, fieldName, oldValue, newValue);
|
|
68
|
+
return applyPostProcessing(text, item);
|
|
193
69
|
};
|
|
194
|
-
|
|
195
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Converts normalized history items into timeline node data for rendering.
|
|
72
|
+
*
|
|
73
|
+
* Applies a secondary filter (excludes `FolderId__c` and `OwnerId` whose resolved
|
|
74
|
+
* display names are unavailable), then maps each item to a left (date/time) and
|
|
75
|
+
* right (user action text) event pair. Avatar/date-header boundaries are computed
|
|
76
|
+
* sequentially: a new boundary is set on the first item, user change, or date change.
|
|
77
|
+
*/
|
|
78
|
+
export const transformApiResponseToTimelineData = (apiResponse) => {
|
|
196
79
|
let previousUser = null;
|
|
197
80
|
let previousDate = null;
|
|
198
81
|
const timelineEvents = apiResponse.historyItems
|
|
199
|
-
//
|
|
82
|
+
// Second-layer field-name filter on top of filterSfdcIdEntries (which is pattern-based).
|
|
83
|
+
// FolderId__c (Case Group) and OwnerId are excluded because their resolved display
|
|
84
|
+
// names (queue name, owner name) are not available in the history payload.
|
|
200
85
|
.filter((item) => item.fieldName !== 'FolderId__c' && item.fieldName !== 'OwnerId')
|
|
201
86
|
.map((item, index) => {
|
|
202
87
|
const currentUser = item.createdByUserName;
|
|
203
|
-
|
|
204
|
-
if (typeof item.createdDate === 'string' && item.createdDate.includes('T')) {
|
|
205
|
-
eventDate = parse(item.createdDate, "yyyy-MM-dd'T'HH:mm:ss'Z'", new Date());
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
eventDate = fromUnixTime(item.createdDate / 1000);
|
|
209
|
-
}
|
|
88
|
+
const eventDate = parseISO(item.createdDate);
|
|
210
89
|
const currentDate = format(eventDate, 'MMMM d, yyyy');
|
|
90
|
+
// Show avatar + date header when: (1) first item, (2) user changed from
|
|
91
|
+
// previous event, or (3) calendar date changed. After any list mutation
|
|
92
|
+
// (filter, sort, paginate) applyAvatarLogic must be re-run so boundaries
|
|
93
|
+
// remain correct.
|
|
211
94
|
const useAvatar = index === 0 ||
|
|
212
|
-
(
|
|
213
|
-
(
|
|
95
|
+
(previousUser !== null && currentUser !== previousUser) ||
|
|
96
|
+
(previousDate !== null && currentDate !== previousDate);
|
|
214
97
|
previousUser = currentUser;
|
|
215
98
|
previousDate = currentDate;
|
|
216
|
-
const user = item.createdByCustomer
|
|
217
|
-
? item.createdByCustomer
|
|
218
|
-
? 'customer'
|
|
219
|
-
: 'internal'
|
|
220
|
-
: currentUser === 'Case Diagnostics' || currentUser === 'GSS Tools'
|
|
221
|
-
? 'internal'
|
|
222
|
-
: 'customer';
|
|
99
|
+
const user = item.createdByCustomer ? 'customer' : 'internal';
|
|
223
100
|
const leftEvent = {
|
|
224
101
|
date: currentDate,
|
|
225
102
|
text: format(eventDate, 'h:mm a zzz'),
|
|
@@ -228,11 +105,8 @@ const transformApiResponseToTimelineData = (apiResponse) => {
|
|
|
228
105
|
if (item.type === 'Change') {
|
|
229
106
|
outputText = applyReplacements(item);
|
|
230
107
|
}
|
|
231
|
-
else {
|
|
232
|
-
outputText = stripHTML(outputText);
|
|
233
|
-
}
|
|
234
108
|
const rightEvent = {
|
|
235
|
-
date: `${item.createdByUserName} ${outputText}
|
|
109
|
+
date: item.createdByUserName ? `${item.createdByUserName} ${outputText}` : outputText,
|
|
236
110
|
text: '',
|
|
237
111
|
user: user,
|
|
238
112
|
useAvatar: useAvatar,
|
|
@@ -240,27 +114,24 @@ const transformApiResponseToTimelineData = (apiResponse) => {
|
|
|
240
114
|
return {
|
|
241
115
|
left: leftEvent,
|
|
242
116
|
right: rightEvent,
|
|
117
|
+
photoUrl: item.photoUrl,
|
|
118
|
+
userName: currentUser,
|
|
243
119
|
};
|
|
244
120
|
});
|
|
245
121
|
return timelineEvents;
|
|
246
122
|
};
|
|
247
|
-
|
|
248
|
-
const anchorTagRegex = /<a[^>]*>(.*?)<\/a>/g;
|
|
249
|
-
// We are trying to return the text without having the info in the anchor.
|
|
250
|
-
return htmlString.replace(anchorTagRegex, '');
|
|
251
|
-
}
|
|
252
|
-
const Timeline = ({ caseNumber }) => {
|
|
123
|
+
const Timeline = ({ caseNumber, sfdcCaseId, isViewerInternal }) => {
|
|
253
124
|
const { t } = useTranslation();
|
|
254
125
|
const [timelineEvents, setTimelineEvents] = useState([]);
|
|
255
|
-
const [originalTimelineEvents, setOriginalTimelineEvents] = useState([]);
|
|
256
|
-
const [isFetchingData, setIsFetchingData] = useState();
|
|
257
126
|
const lastNodeRef = useRef(null);
|
|
127
|
+
const [sortOrder, setSortOrder] = useState('DESC');
|
|
128
|
+
const { historyItems, loading: isFetchingData, error } = useCaseHistory(sfdcCaseId, isViewerInternal, sortOrder);
|
|
129
|
+
const fetchError = error ? t('Unable to connect') : null;
|
|
258
130
|
const [dateValue, setDateValue] = useState('');
|
|
259
131
|
const [searchValue, setSearchValue] = useState('');
|
|
260
132
|
const [filteredEvents, setFilteredEvents] = useState([]);
|
|
261
133
|
const [isSelectOpen, setIsSelectOpen] = useState(false);
|
|
262
134
|
const [selectedOrder, setSelectedOrder] = useState('Newest to Oldest');
|
|
263
|
-
const [fetchError, setFetchError] = useState(null);
|
|
264
135
|
const [page, setPage] = useState(1);
|
|
265
136
|
const [perPage, setPerPage] = useState(20);
|
|
266
137
|
const onSetPage = (_, newPage) => {
|
|
@@ -284,55 +155,31 @@ const Timeline = ({ caseNumber }) => {
|
|
|
284
155
|
e.preventDefault();
|
|
285
156
|
if (value !== selectedOrder) {
|
|
286
157
|
setSelectedOrder(value);
|
|
287
|
-
|
|
158
|
+
setSortOrder(value === 'Newest to Oldest' ? 'DESC' : 'ASC');
|
|
288
159
|
}
|
|
289
160
|
setIsSelectOpen(false);
|
|
290
161
|
};
|
|
291
|
-
|
|
292
|
-
const events = order === 'Newest to Oldest' ? [...originalTimelineEvents] : [...originalTimelineEvents].reverse();
|
|
293
|
-
setTimelineEvents(applyAvatarLogic(events));
|
|
294
|
-
};
|
|
162
|
+
// Re-derives avatar/date-header boundaries after list mutations (filter, sort, paginate).
|
|
295
163
|
const applyAvatarLogic = (events) => {
|
|
296
164
|
let previousUser = null;
|
|
297
165
|
let previousDate = null;
|
|
298
166
|
return events.map((event, index) => {
|
|
299
|
-
const currentUser = event.
|
|
167
|
+
const currentUser = event.userName || '';
|
|
300
168
|
const currentDate = event.left.date;
|
|
301
169
|
const useAvatar = index === 0 ||
|
|
302
|
-
(
|
|
303
|
-
(
|
|
170
|
+
(previousUser !== null && currentUser !== previousUser) ||
|
|
171
|
+
(previousDate !== null && currentDate !== previousDate);
|
|
304
172
|
previousUser = currentUser;
|
|
305
173
|
previousDate = currentDate;
|
|
306
174
|
return Object.assign(Object.assign({}, event), { right: Object.assign(Object.assign({}, event.right), { useAvatar: useAvatar }) });
|
|
307
175
|
});
|
|
308
176
|
};
|
|
309
177
|
useEffect(() => {
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
setFetchError(null);
|
|
314
|
-
const options = {
|
|
315
|
-
sortField: 'createdDate',
|
|
316
|
-
sortOrder: 'DESC',
|
|
317
|
-
showVerbose: true,
|
|
318
|
-
};
|
|
319
|
-
try {
|
|
320
|
-
const response = yield caseHistory.getHistoryv1(caseNumber, options);
|
|
321
|
-
const transformedData = transformApiResponseToTimelineData(response);
|
|
322
|
-
setTimelineEvents(transformedData);
|
|
323
|
-
setOriginalTimelineEvents(transformedData);
|
|
324
|
-
}
|
|
325
|
-
catch (error) {
|
|
326
|
-
console.error('Failed to fetch history:', error);
|
|
327
|
-
setFetchError('Unable to connect');
|
|
328
|
-
}
|
|
329
|
-
finally {
|
|
330
|
-
setIsFetchingData(false);
|
|
331
|
-
}
|
|
332
|
-
});
|
|
178
|
+
if (historyItems.length > 0) {
|
|
179
|
+
const transformedData = transformApiResponseToTimelineData({ historyItems });
|
|
180
|
+
setTimelineEvents(transformedData);
|
|
333
181
|
}
|
|
334
|
-
|
|
335
|
-
}, [caseNumber]);
|
|
182
|
+
}, [historyItems]);
|
|
336
183
|
const futureDateValidator = (date) => {
|
|
337
184
|
const today = new Date();
|
|
338
185
|
today.setHours(0, 0, 0, 0); // Normalize to midnight
|
|
@@ -341,6 +188,9 @@ const Timeline = ({ caseNumber }) => {
|
|
|
341
188
|
}
|
|
342
189
|
return '';
|
|
343
190
|
};
|
|
191
|
+
// Measures the DOM to shorten the vertical timeline connector line so it does not
|
|
192
|
+
// extend past the last node. Sets the --timeline-bottom CSS variable, recomputed
|
|
193
|
+
// on resize and list changes via requestAnimationFrame.
|
|
344
194
|
const updateLineStyle = () => {
|
|
345
195
|
const timelineElement = document.querySelector('.timeline');
|
|
346
196
|
if (timelineElement) {
|
|
@@ -375,10 +225,13 @@ const Timeline = ({ caseNumber }) => {
|
|
|
375
225
|
timelineElement.style.setProperty('--timeline-bottom', '0px');
|
|
376
226
|
}
|
|
377
227
|
}
|
|
378
|
-
return () =>
|
|
228
|
+
return () => {
|
|
229
|
+
debouncedUpdateLineStyle.cancel();
|
|
230
|
+
window.removeEventListener('resize', debouncedUpdateLineStyle);
|
|
231
|
+
};
|
|
379
232
|
}, [isFetchingData, filteredEvents, page, perPage]);
|
|
380
|
-
const handleSearchChange = (value) => {
|
|
381
|
-
setSearchValue(value.
|
|
233
|
+
const handleSearchChange = (_, value) => {
|
|
234
|
+
setSearchValue(value.trim());
|
|
382
235
|
};
|
|
383
236
|
const handleClear = () => {
|
|
384
237
|
setSearchValue('');
|
|
@@ -414,41 +267,40 @@ const Timeline = ({ caseNumber }) => {
|
|
|
414
267
|
}, [searchValue, dateValue, timelineEvents]);
|
|
415
268
|
const handleReload = (e) => {
|
|
416
269
|
e.preventDefault();
|
|
417
|
-
window.location.href = window.location.href;
|
|
418
270
|
window.location.reload();
|
|
419
271
|
};
|
|
420
272
|
const renderTimelineContent = () => {
|
|
421
273
|
if (fetchError) {
|
|
422
|
-
return (React.createElement(EmptyState, { variant: EmptyStateVariant.full },
|
|
423
|
-
React.createElement(EmptyStateHeader, { titleText: "Unable to connect", icon: React.createElement(EmptyStateIcon, { icon: ExclamationCircleIcon, color: globalDangerColor100.value }), headingLevel: "h2" }),
|
|
274
|
+
return (React.createElement(EmptyState, { headingLevel: "h2", icon: ExclamationCircleIcon, titleText: "Unable to connect", variant: EmptyStateVariant.full },
|
|
424
275
|
React.createElement(EmptyStateBody, null,
|
|
425
|
-
React.createElement(Trans,
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
"or check back later"))));
|
|
276
|
+
React.createElement(Trans, { i18nKey: "Try <reloadLink>reloading the page</reloadLink> or check back later", components: {
|
|
277
|
+
// eslint-disable-next-line jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid
|
|
278
|
+
reloadLink: React.createElement("a", { href: "#", onClick: handleReload }),
|
|
279
|
+
} }))));
|
|
430
280
|
}
|
|
431
281
|
if (filteredEvents.length < 1) {
|
|
432
|
-
return (React.createElement(EmptyState, { variant: EmptyStateVariant.full },
|
|
433
|
-
React.createElement(EmptyStateHeader, { titleText: React.createElement(Trans, null, "No results found"), icon: React.createElement(EmptyStateIcon, { icon: SearchIcon }), headingLevel: "h2" }),
|
|
282
|
+
return (React.createElement(EmptyState, { headingLevel: "h2", icon: SearchIcon, titleText: React.createElement(Trans, null, "No results found"), variant: EmptyStateVariant.full },
|
|
434
283
|
React.createElement(EmptyStateBody, null,
|
|
435
284
|
React.createElement(Trans, null, "Try modifying your search query or changing the date range and try again."))));
|
|
436
285
|
}
|
|
437
286
|
const paginatedEvents = filteredEvents.slice((page - 1) * perPage, page * perPage);
|
|
438
|
-
return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
|
|
287
|
+
return (React.createElement(React.Fragment, null, paginatedEvents.map((node, index) => (React.createElement(TimelineNode, { key: index, leftEvent: node.left, rightEvent: node.right, user: node.right.user, useAvatar: node.right.useAvatar, photoUrl: node.photoUrl, searchValue: searchValue, highlightDate: !!dateValue, ref: index === paginatedEvents.length - 1 ? lastNodeRef : null })))));
|
|
439
288
|
};
|
|
440
289
|
return (React.createElement(React.Fragment, null,
|
|
441
290
|
React.createElement("div", { className: "timelineMenu" },
|
|
442
291
|
React.createElement(SearchInput, { placeholder: t('Search for a user, action, or keyword'), value: searchValue, onChange: handleSearchChange, onClear: handleClear, className: "case-history-timeline-search" }),
|
|
443
292
|
React.createElement("div", { className: "case-history-timeline-datepicker" },
|
|
444
|
-
React.createElement(DatePicker, { value: dateValue, onChange: (_event, value) => handleDateChange(value), validators: [futureDateValidator] }),
|
|
445
|
-
React.createElement(Button, { onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) },
|
|
293
|
+
React.createElement(DatePicker, { value: dateValue, invalidFormatText: t('Invalid date format.'), onChange: (_event, value) => handleDateChange(value), validators: [futureDateValidator] }),
|
|
294
|
+
React.createElement(Button, { className: "pf-v6-u-ml-xs", onClick: () => setDateValue(''), isDisabled: isEmpty(dateValue) },
|
|
295
|
+
React.createElement(Trans, null, "Reset")))),
|
|
446
296
|
React.createElement("div", { className: "timeline-controls" },
|
|
447
297
|
React.createElement("div", { className: "timeline-pagination" }, renderPagination()),
|
|
448
298
|
React.createElement("div", { className: "timeline-sort-order-select" },
|
|
449
|
-
React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen,
|
|
450
|
-
React.createElement(SelectOption, { value: "Newest to Oldest" },
|
|
451
|
-
|
|
299
|
+
React.createElement(Select, { id: "order-select", isOpen: isSelectOpen, selected: selectedOrder, onSelect: handleSelect, onOpenChange: (isOpen) => setIsSelectOpen(isOpen), shouldFocusToggleOnSelect: false, toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: handleSelectToggle, isExpanded: isSelectOpen }, selectedOrder === 'Newest to Oldest' ? (React.createElement(Trans, null, "Newest to Oldest")) : (React.createElement(Trans, null, "Oldest to Newest")))) },
|
|
300
|
+
React.createElement(SelectOption, { value: "Newest to Oldest" },
|
|
301
|
+
React.createElement(Trans, null, "Newest to Oldest")),
|
|
302
|
+
React.createElement(SelectOption, { value: "Oldest to Newest" },
|
|
303
|
+
React.createElement(Trans, null, "Oldest to Newest"))))),
|
|
452
304
|
isFetchingData ? (React.createElement("div", { className: "timeline-loading-spinner" },
|
|
453
305
|
React.createElement(Spinner, { size: "xl" }))) : (React.createElement("div", { className: `timeline ${filteredEvents.length === 0 ? 'timeline-empty' : ''}` }, renderTimelineContent())),
|
|
454
306
|
React.createElement("div", { className: "timeline-controls" },
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
caseNumber
|
|
4
|
-
|
|
5
|
-
type DefaultProps = typeof defaultProps;
|
|
6
|
-
interface IProps extends DefaultProps {
|
|
2
|
+
interface IProps {
|
|
3
|
+
caseNumber?: string;
|
|
4
|
+
privateNotes?: string;
|
|
7
5
|
}
|
|
8
6
|
declare function CasePrivateNotes(props: IProps): React.JSX.Element;
|
|
9
7
|
declare namespace CasePrivateNotes {
|
|
10
8
|
var defaultProps: {
|
|
11
9
|
caseNumber: any;
|
|
10
|
+
privateNotes: string | undefined;
|
|
12
11
|
};
|
|
13
12
|
}
|
|
14
13
|
export default CasePrivateNotes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CasePrivateNotes.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CasePrivateNotes.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CasePrivateNotes/CasePrivateNotes.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAa/D,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAyHtC;kBAzHQ,gBAAgB;;;sBARM,MAAM,GAAG,SAAS;;;AAoIjD,eAAe,gBAAgB,CAAC"}
|
|
@@ -7,6 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
import { useApolloClient } from '@apollo/client/react';
|
|
11
|
+
import { Button } from '@patternfly/react-core';
|
|
10
12
|
import { LoadingIndicator, TextAreaResizable, ToastNotification } from '@rh-support/components';
|
|
11
13
|
import { useCanEditCase } from '@rh-support/react-context';
|
|
12
14
|
import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
@@ -16,17 +18,24 @@ import React, { useContext, useEffect, useState } from 'react';
|
|
|
16
18
|
import { Trans, useTranslation } from 'react-i18next';
|
|
17
19
|
import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
|
|
18
20
|
import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
|
|
19
|
-
import {
|
|
21
|
+
import { updateCaseDetailsGraphQL } from '../../../../reducers/CaseReducer';
|
|
20
22
|
import { PDFContext } from '../../PDFContainer';
|
|
21
23
|
const defaultProps = {
|
|
22
24
|
caseNumber: undefined,
|
|
25
|
+
privateNotes: undefined,
|
|
23
26
|
};
|
|
24
27
|
function CasePrivateNotes(props) {
|
|
28
|
+
var _a;
|
|
25
29
|
const { t } = useTranslation();
|
|
26
30
|
const caseUpdateError = useCaseUpdateErrorMessage();
|
|
27
31
|
const ability = useContext(AbilityContext);
|
|
32
|
+
const apolloClient = useApolloClient();
|
|
28
33
|
const canUpdatePrivateNotes = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_PRIVATE_NOTES_EDIT);
|
|
29
|
-
const
|
|
34
|
+
const { caseSalesforceId, existingCaseDetails } = useCaseSelector((state) => ({
|
|
35
|
+
caseSalesforceId: state.caseDetails.id,
|
|
36
|
+
existingCaseDetails: state.caseDetails,
|
|
37
|
+
}), isEqual);
|
|
38
|
+
const notes = (_a = props.privateNotes) !== null && _a !== void 0 ? _a : '';
|
|
30
39
|
const caseDispatch = useCaseDispatch();
|
|
31
40
|
const [notesState, setNotes] = useState(notes);
|
|
32
41
|
const [formIsDirty, setFormIsDirty] = useState(false);
|
|
@@ -36,24 +45,33 @@ function CasePrivateNotes(props) {
|
|
|
36
45
|
useEffect(() => {
|
|
37
46
|
if (notes !== notesState) {
|
|
38
47
|
setNotes(notes);
|
|
48
|
+
setFormIsDirty(false);
|
|
39
49
|
}
|
|
40
50
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
51
|
}, [notes]);
|
|
42
|
-
const
|
|
43
|
-
|
|
52
|
+
const persistNotes = () => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
if (!props.caseNumber) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
44
56
|
setIsUpdating(true);
|
|
45
57
|
try {
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
yield updateCaseDetailsGraphQL(caseDispatch, apolloClient, props.caseNumber, { notes: notesState }, false, {
|
|
59
|
+
salesforceCaseId: caseSalesforceId,
|
|
60
|
+
existingCaseDetails,
|
|
61
|
+
});
|
|
48
62
|
setFormIsDirty(false);
|
|
49
63
|
ToastNotification.addSuccessMessage(t(`Notes has been successfully updated`));
|
|
50
64
|
setIsUpdating(false);
|
|
51
65
|
}
|
|
52
66
|
catch (e) {
|
|
53
|
-
caseUpdateError.
|
|
67
|
+
caseUpdateError.showFieldError(e, t('Private notes'), persistNotes);
|
|
54
68
|
setIsUpdating(false);
|
|
55
69
|
}
|
|
56
70
|
});
|
|
71
|
+
const updateCase = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
yield persistNotes();
|
|
74
|
+
});
|
|
57
75
|
const discardNotes = (event) => {
|
|
58
76
|
event.preventDefault();
|
|
59
77
|
setNotes(notes);
|
|
@@ -70,7 +88,6 @@ function CasePrivateNotes(props) {
|
|
|
70
88
|
}
|
|
71
89
|
setNotes(notesState);
|
|
72
90
|
};
|
|
73
|
-
// To check if private notes is empty
|
|
74
91
|
const isPrivateNotesEmpty = isEmpty(notesState === null || notesState === void 0 ? void 0 : notesState.trim());
|
|
75
92
|
return (React.createElement(React.Fragment, null,
|
|
76
93
|
React.createElement("div", null,
|
|
@@ -78,14 +95,14 @@ function CasePrivateNotes(props) {
|
|
|
78
95
|
React.createElement(Trans, null, "Notes"))),
|
|
79
96
|
canUpdatePrivateNotes && (React.createElement("form", null,
|
|
80
97
|
React.createElement(TextAreaResizable, { style: { minHeight: '200px' }, id: "rha-case-notes", disabled: isUpdating, maxLength: 255, name: "notes", value: notesState, onChange: onChange }),
|
|
81
|
-
React.createElement("div", { className: "pf-
|
|
82
|
-
React.createElement(
|
|
98
|
+
React.createElement("div", { className: "pf-v6-u-mt-md" },
|
|
99
|
+
React.createElement(Button, { className: `${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: updateCase, isDisabled: isPrivateNotesEmpty || isUpdating || !formIsDirty, variant: "primary" },
|
|
83
100
|
React.createElement(Trans, null, "Update"),
|
|
84
101
|
" ",
|
|
85
102
|
React.createElement(LoadingIndicator, { show: isUpdating, isInline: true })),
|
|
86
|
-
React.createElement(
|
|
103
|
+
React.createElement(Button, { className: `pf-v6-u-ml-md ${isExportingPDF ? 'hide-in-pdf' : ''}`, onClick: discardNotes, disabled: isUpdating || !formIsDirty, variant: "secondary" },
|
|
87
104
|
React.createElement(Trans, null, "Discard Changes"))))),
|
|
88
|
-
React.createElement("p", { className: "pf-
|
|
105
|
+
React.createElement("p", { className: "pf-v6-u-mt-xl" },
|
|
89
106
|
React.createElement(Trans, null, "Please note, contents of this field are not visible to Red Hat Support professionals."))));
|
|
90
107
|
}
|
|
91
108
|
CasePrivateNotes.defaultProps = defaultProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"CaseSummary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseSummary/CaseSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAuB3B,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,sBA+LxC,CAAC"}
|