{"version":3,"file":"static/js/9375.05fb1381.chunk.js","mappings":"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","sources":["ao/components/DownloadApp/data/data.ts","ao/components/DownloadApp/subsections/AppLinksSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/AboutThisAppSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/ActionButtonsSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/AppBannerSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/AppInsightMetricsSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/AppResourcesSection.tsx","../node_modules/@chakra-ui/icons/src/QuestionOutline.tsx","../node_modules/@chakra-ui/icons/src/CheckCircle.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/UsageStatsSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/AppTagsSection.tsx","ao/components/Showroom/frameworkComponents/GalleryListingComponents/AppSections/DownloadStatusSection.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ScreenshotViewer.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/ShowroomContactButton.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/Thumbnail.tsx","ao/components/Showroom/frameworkComponents/GeneralComponents/WebsiteButton.tsx","ao/types/questionnaireVersion.ts","../node_modules/@chakra-ui/icons/src/ChevronLeft.tsx","../node_modules/@chakra-ui/icons/src/ChevronRight.tsx"],"sourcesContent":["/**\r\n * @copyright Copyright 2024 Epic Systems Corporation\r\n * @file functions to get data for app download page\r\n * @module Epic.AppOrchard.Data.DownloadApp\r\n */\r\n\r\nimport { IGenericAPIResponse } from \"ao/data\";\r\nimport { DUQVisibility } from \"ao/types/questionnaireVersion\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport api from \"ao/utils/api\";\r\n\r\nexport interface IDownloadAppModelResponse extends IGenericAPIResponse {\r\n\tmodel: IShowroomAppDownloadModel;\r\n}\r\n\r\nexport async function getDetails(appId: number): Promise<IDownloadAppModelResponse> {\r\n\treturn await api.get<IDownloadAppModelResponse>(`/api/Download/Details?appId=${appId.toString()}`);\r\n}\r\n\r\nexport async function findAppWithClientId(clientId: string): Promise<IGenericAPIResponse> {\r\n\treturn await api.get<IGenericAPIResponse>(`/api/Download/FindApp?clientId=${clientId}`);\r\n}\r\n\r\nexport async function setDuqVisibility(\r\n\tappId: number,\r\n\tduqVisibility: DUQVisibility,\r\n): Promise<IGenericAPIResponse> {\r\n\treturn await api.post<IGenericAPIResponse>(\"/api/Download/SetDuqVisibility\", { appId, duqVisibility });\r\n}\r\n","/**\r\n * @copyright Copyright 2024-2025 Epic Systems Corporation\r\n * @file subsection that contains app links\r\n * @module Epic.AppOrchard.DownloadApp.AppLinksSection\r\n */\r\n\r\nimport { Flex, VStack } from \"@chakra-ui/react\";\r\nimport { AOLink, DownloadBuildIcon, DownloadBuildLink } from \"ao/components/Core\";\r\nimport { DownloadApprovedStatus } from \"ao/data\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { getBaseUrl, isLocalhost } from \"ao/utils/helpers\";\r\nimport { FunctionComponent, memo, useMemo } from \"react\";\r\n\r\ninterface IProps {\r\n\tuserSecurity: IUserSecurity;\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\tisShowroom?: boolean;\r\n}\r\n\r\nexport const AppLinksSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appDetails, userSecurity, isShowroom } = props;\r\n\r\n\tconst appModel = appDetails?.appModel;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\tconst isShowroomPublic = isShowroom && !isLocalhost() && !siteInfo.isAdminSite;\r\n\r\n\tconst baseUrl = useMemo(() => (isShowroomPublic ? siteInfo.vendorServicesUrl : getBaseUrl()), [\r\n\t\tisShowroomPublic,\r\n\t\tsiteInfo.vendorServicesUrl,\r\n\t]);\r\n\r\n\treturn (\r\n\t\t<VStack spacing={3} align=\"stretch\" textAlign=\"center\">\r\n\t\t\t{appDetails.acceptedParticipantTermsId > 0 && userSecurity.canPurchase && (\r\n\t\t\t\t<AOLink\r\n\t\t\t\t\talignSelf=\"center\"\r\n\t\t\t\t\turl={`${baseUrl}Gallery/${siteInfo.customerAgreementName}?termsId=${appDetails.acceptedParticipantTermsId}`}\r\n\t\t\t\t\tisExternal\r\n\t\t\t\t>\r\n\t\t\t\t\tView {siteInfo.customerAgreementDisplayName}\r\n\t\t\t\t</AOLink>\r\n\t\t\t)}\r\n\t\t\t{appDetails.appModel.implementationGuideUrl && (\r\n\t\t\t\t<AOLink alignSelf=\"center\" url={appDetails.appModel.implementationGuideUrl} isExternal>\r\n\t\t\t\t\tView this app's implementation guide\r\n\t\t\t\t</AOLink>\r\n\t\t\t)}\r\n\t\t\t{appModel.hasTCDocuments && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{appDetails.vendorApproved === DownloadApprovedStatus.Approved ||\r\n\t\t\t\t\tappDetails.vendorApproved === DownloadApprovedStatus.NonProdOnly ? (\r\n\t\t\t\t\t\t<Flex justify=\"center\">\r\n\t\t\t\t\t\t\t<DownloadBuildLink appId={appModel.id} baseUrlOverride={baseUrl} showIcon />\r\n\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Flex justify=\"center\">\r\n\t\t\t\t\t\t\t<DownloadBuildIcon boxSize=\"16px\" mr=\"2px\" mt=\"3px\" />\r\n\t\t\t\t\t\t\tBuild available\r\n\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</VStack>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2024-2024 Epic Systems Corporation\r\n * @file about this app section for Showroom\r\n * @module Epic.AppOrchard.Showroom.AboutThisAppSection\r\n */\r\n\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tFlex,\r\n\tHeading,\r\n\tSwitch,\r\n\tText,\r\n\tuseDisclosure,\r\n\tuseToast,\r\n\tWrap,\r\n\tWrapItem,\r\n} from \"@chakra-ui/react\";\r\nimport { useAsync } from \"@epic/react-async-hook\";\r\nimport { config } from \"ao/appConfig\";\r\nimport { showroomText } from \"ao/chakraTheme\";\r\nimport { AOLink, ConfirmationModal, LinkButton } from \"ao/components/Core\";\r\nimport { setDuqVisibility } from \"ao/components/DownloadApp/data/data\";\r\nimport { getConsumerTypeName } from \"ao/components/Showroom/Helper\";\r\nimport { DownloadApprovedStatus, QuestionnaireType } from \"ao/data\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { DUQVisibility } from \"ao/types/questionnaireVersion\";\r\nimport { IGalleryApi, IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { getBaseUrl, isLocalhost } from \"ao/utils/helpers\";\r\nimport { FunctionComponent, memo, useMemo } from \"react\";\r\nimport { ApiCollapse, ApiLink } from \"../AppHelperComponents\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\tuserSecurity: IUserSecurity;\r\n\tbuttonBackgroundColor: string;\r\n\tbuttonBorderColor: string;\r\n\ttextColor: string;\r\n\tisShowroom?: boolean;\r\n\tsetAppDetails: (x: IShowroomAppDownloadModel) => void;\r\n}\r\n\r\nexport const ShowroomAboutThisAppSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst {\r\n\t\tappDetails,\r\n\t\tuserSecurity,\r\n\t\tbuttonBackgroundColor,\r\n\t\tbuttonBorderColor,\r\n\t\ttextColor,\r\n\t\tisShowroom,\r\n\t\tsetAppDetails,\r\n\t} = props;\r\n\r\n\tconst toast = useToast();\r\n\r\n\tconst appModel = appDetails.appModel;\r\n\r\n\tconst isEpicCustomerOrIsEpicUser = userSecurity.isEpicCustomer || userSecurity.isEpicUser;\r\n\r\n\tconst isAppFromOwnOrg =\r\n\t\tuserSecurity.userOrganizationId != null &&\r\n\t\tuserSecurity.userOrganizationId === appModel.organizationId;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\tconst isShowroomPublic = isShowroom && !isLocalhost() && !siteInfo.isAdminSite;\r\n\r\n\tconst baseUrl = useMemo(() => (isShowroomPublic ? siteInfo.vendorServicesUrl : getBaseUrl()), [\r\n\t\tisShowroomPublic,\r\n\t\tsiteInfo.vendorServicesUrl,\r\n\t]);\r\n\r\n\tconst duqLink = isShowroom\r\n\t\t? `${siteInfo.showroomRelativeUrl}Questionnaire?id=${appDetails.appModel.id}&type=${QuestionnaireType.DataUse}`\r\n\t\t: `/Download/QuestionnaireView?id=${appDetails.appModel.id}&type=${QuestionnaireType.DataUse}`;\r\n\tconst arqLink = isShowroom\r\n\t\t? `${siteInfo.showroomRelativeUrl}Questionnaire?id=${appDetails.appModel.id}&type=${QuestionnaireType.AppReadiness}`\r\n\t\t: `/Download/QuestionnaireView?id=${appDetails.appModel.id}&type=${QuestionnaireType.AppReadiness}`;\r\n\r\n\tconst duqLinkContent = (\r\n\t\t<Box>\r\n\t\t\t<Text fontWeight=\"500\" fontSize=\"1.25rem\">\r\n\t\t\t\tData Use\r\n\t\t\t</Text>\r\n\t\t\t<Text\r\n\t\t\t\tcolor={showroomText}\r\n\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\twidth=\"100%\"\r\n\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\theight=\"20px\"\r\n\t\t\t\tm=\"0\"\r\n\t\t\t\talignContent=\"center\"\r\n\t\t\t>\r\n\t\t\t\tPatient data handling\r\n\t\t\t</Text>\r\n\t\t</Box>\r\n\t);\r\n\r\n\tconst arqLinkContent = (\r\n\t\t<Box>\r\n\t\t\t<Text fontWeight=\"500\" fontSize=\"1.25rem\">\r\n\t\t\t\tApp Readiness\r\n\t\t\t</Text>\r\n\t\t\t<Text\r\n\t\t\t\tcolor={showroomText}\r\n\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\twidth=\"100%\"\r\n\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\theight=\"20px\"\r\n\t\t\t\tm=\"0\"\r\n\t\t\t\talignContent=\"center\"\r\n\t\t\t>\r\n\t\t\t\tGeneral safety, privacy, security, etc practices\r\n\t\t\t</Text>\r\n\t\t</Box>\r\n\t);\r\n\r\n\tconst hasIntegration =\r\n\t\tappModel.incomingApis?.length > 0 ||\r\n\t\tappModel.kitApiGroups?.length > 0 ||\r\n\t\tappModel.subspaceEvents?.length > 0 ||\r\n\t\tappModel.outgoingFunctionalities?.length > 0 ||\r\n\t\tappModel.contentSchema !== null;\r\n\r\n\tconst canViewQuestionnaires =\r\n\t\tisAppFromOwnOrg ||\r\n\t\t(userSecurity.isEpicCustomer && userSecurity.canPurchase) ||\r\n\t\tuserSecurity.isEpicUser;\r\n\tconst hasQuestionnaires = appDetails.showDUQInListing || appDetails.showARQInListing;\r\n\r\n\tconst {\r\n\t\tisOpen: isDuqVisibilityConfirmationOpen,\r\n\t\tonOpen: onOpenDuqVisibilityConfirmation,\r\n\t\tonClose: onCloseDuqVisibilityConfirmation,\r\n\t} = useDisclosure();\r\n\r\n\tconst [, updateDuqVisibility] = useAsync(setDuqVisibility, {\r\n\t\texecuteImmediately: false,\r\n\t\tdisplayName: \"loadAssociations\",\r\n\t\tonSuccess: () => {},\r\n\t\tonFailure: () => {\r\n\t\t\ttoast({\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\tdescription: \"Failed to update the visibility of the Data Use Questionnaire. Try again.\",\r\n\t\t\t\tstatus: \"error\",\r\n\t\t\t\tduration: config.ToastDuration,\r\n\t\t\t\tisClosable: true,\r\n\t\t\t});\r\n\t\t},\r\n\t});\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{canViewQuestionnaires && hasQuestionnaires && (\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\tfontSize=\"1.3rem\"\r\n\t\t\t\t\t\tfontWeight=\"600\"\r\n\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\twidth=\"100%\"\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tProduct Questionnaires\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t\t<Text color={showroomText} w=\"100%\" textAlign=\"center\">\r\n\t\t\t\t\t\tThese questionnaires are optional and completed by the vendor\r\n\t\t\t\t\t</Text>\r\n\r\n\t\t\t\t\t<Wrap spacing=\"35px\" pt=\"20px\" justify=\"center\" w=\"100%\">\r\n\t\t\t\t\t\t{appDetails.showDUQInListing && (\r\n\t\t\t\t\t\t\t<WrapItem w=\"300px\">\r\n\t\t\t\t\t\t\t\t<Box textAlign=\"center\">\r\n\t\t\t\t\t\t\t\t\t{isShowroom ? (\r\n\t\t\t\t\t\t\t\t\t\t<LinkButton\r\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\t\t\t\tborder={`solid 1px ${buttonBorderColor}`}\r\n\t\t\t\t\t\t\t\t\t\t\tboxShadow=\"0px 0px 2px 1px #c5c5c5\"\r\n\t\t\t\t\t\t\t\t\t\t\turl={duqLink}\r\n\t\t\t\t\t\t\t\t\t\t\tw=\"300px\"\r\n\t\t\t\t\t\t\t\t\t\t\th=\"unset\"\r\n\t\t\t\t\t\t\t\t\t\t\tp=\"8px 0 5px\"\r\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"View this optional, vendor-completed, questionnaire about how this product handles patient data\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{duqLinkContent}\r\n\t\t\t\t\t\t\t\t\t\t</LinkButton>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tas={AOLink}\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"outline\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolorScheme=\"blue\"\r\n\t\t\t\t\t\t\t\t\t\t\turl={duqLink}\r\n\t\t\t\t\t\t\t\t\t\t\tw=\"300px\"\r\n\t\t\t\t\t\t\t\t\t\t\th=\"unset\"\r\n\t\t\t\t\t\t\t\t\t\t\tp=\"8px 0 5px\"\r\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"View this optional, vendor-completed, questionnaire about how this product handles patient data\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{duqLinkContent}\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t{appDetails.appId !== undefined &&\r\n\t\t\t\t\t\t\t\t\t\tsiteInfo.isCustomerDUQAttestationEnabled &&\r\n\t\t\t\t\t\t\t\t\t\tuserSecurity.canPurchase &&\r\n\t\t\t\t\t\t\t\t\t\tappDetails.isDownloaded &&\r\n\t\t\t\t\t\t\t\t\t\t!isAppFromOwnOrg &&\r\n\t\t\t\t\t\t\t\t\t\tappDetails.vendorApproved !== DownloadApprovedStatus.Declined &&\r\n\t\t\t\t\t\t\t\t\t\tappDetails.vendorApproved !== DownloadApprovedStatus.Overwritten && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box mt=\"5px\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.duqVisibilityOverride === DUQVisibility.Unset ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Switch\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisChecked={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.Unset ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.ShowDataUse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonOpenDuqVisibilityConfirmation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Update Data Use visibility\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.DoNotShow\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Do not show Data Use answers to patients.\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"Show Data Use answers to patients.\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Switch>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ConfirmationModal\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Display DUQ Language for Third Parties (Except Contracted Vendors and Business Associates)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCentered\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.Unset ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.ShowDataUse ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text mb=\"1rem\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tThe MyChart Data Use Questionnaire\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tis intended to help patients\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunderstand how a third-party app\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twill use their health information\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tso they can make informed\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdecisions about sharing their\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thealth information with the app.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text mb=\"1rem\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tThe Questionnaire should appear\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twith all third-party apps except\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthose published by organizations\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tyou have contracts with to address\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tyour privacy obligations under the\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlaws and regulations that apply to\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tyou (such as HIPAA, GDPR, PHIA).\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tThis setting is only used by Epic\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAugust 2025 and later versions.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text mb=\"1rem\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAre you sure you want to start\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tshowing patients this app's\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanswers to the Data Use\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tQuestionnaire?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tThis setting is only used by Epic\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAugust 2025 and later versions.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tacceptCaption=\"Confirm\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisOpen={isDuqVisibilityConfirmationOpen}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCancel={onCloseDuqVisibilityConfirmation}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonAccept={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst newVisibility =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.Unset ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.duqVisibility ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.ShowDataUse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? DUQVisibility.DoNotShow\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: DUQVisibility.ShowDataUse;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetAppDetails({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...appDetails,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tduqVisibility: newVisibility,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdateDuqVisibility(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.appId!,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewVisibility,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCloseDuqVisibilityConfirmation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text title=\"Contact Vendor Services if this is not appropriate for your organization.\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.duqVisibilityOverride ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDUQVisibility.DoNotShow\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Do not show Data Use answers to patients.\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"Show Data Use answers to patients.\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</WrapItem>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{appDetails.showARQInListing && (\r\n\t\t\t\t\t\t\t<WrapItem w=\"300px\">\r\n\t\t\t\t\t\t\t\t<Box textAlign=\"center\">\r\n\t\t\t\t\t\t\t\t\t{isShowroom ? (\r\n\t\t\t\t\t\t\t\t\t\t<LinkButton\r\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\t\t\t\tborder={`solid 1px ${buttonBorderColor}`}\r\n\t\t\t\t\t\t\t\t\t\t\tboxShadow=\"0px 0px 2px 1px #c5c5c5\"\r\n\t\t\t\t\t\t\t\t\t\t\turl={arqLink}\r\n\t\t\t\t\t\t\t\t\t\t\tw=\"300px\"\r\n\t\t\t\t\t\t\t\t\t\t\th=\"unset\"\r\n\t\t\t\t\t\t\t\t\t\t\tp=\"8px 0 5px\"\r\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"View this optional, vendor-completed, questionnaire about how this product handles general safety, privacy, and security practices\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{arqLinkContent}\r\n\t\t\t\t\t\t\t\t\t\t</LinkButton>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tas={AOLink}\r\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"outline\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolorScheme=\"blue\"\r\n\t\t\t\t\t\t\t\t\t\t\turl={arqLink}\r\n\t\t\t\t\t\t\t\t\t\t\tw=\"300px\"\r\n\t\t\t\t\t\t\t\t\t\t\th=\"unset\"\r\n\t\t\t\t\t\t\t\t\t\t\tp=\"8px 0 5px\"\r\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"View this optional, vendor-completed, questionnaire about how this product handles general safety, privacy, and security practices\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{arqLinkContent}\r\n\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</WrapItem>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Wrap>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\r\n\t\t\t{(isEpicCustomerOrIsEpicUser || isAppFromOwnOrg) && (\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Heading\r\n\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\tfontSize=\"1.3rem\"\r\n\t\t\t\t\t\tfontWeight=\"600\"\r\n\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\twidth=\"100%\"\r\n\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tConsumer Type\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t\t<Text textAlign=\"center\">{getConsumerTypeName(appModel.consumerType)}</Text>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\r\n\t\t\t{(isEpicCustomerOrIsEpicUser || isAppFromOwnOrg) && hasIntegration && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{appModel.incomingApis.length > 0 && (\r\n\t\t\t\t\t\t<ApiCollapse\r\n\t\t\t\t\t\t\tlabel=\"Incoming APIs Used\"\r\n\t\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\t\tchildCount={appModel.incomingApis.length}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{appModel.incomingApis.map((api: IGalleryApi) => (\r\n\t\t\t\t\t\t\t\t<ApiLink key={api.id} api={api} baseUrl={baseUrl} color=\"#0000ff\" />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</ApiCollapse>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{appModel.kitApiGroups.length > 0 && (\r\n\t\t\t\t\t\t<ApiCollapse\r\n\t\t\t\t\t\t\tlabel=\"Kit APIs Used\"\r\n\t\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\t\tchildCount={appModel.kitApiGroups.length}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{appModel.kitApiGroups.map((api: IGalleryApi) => (\r\n\t\t\t\t\t\t\t\t<ApiLink key={api.id} api={api} baseUrl={baseUrl} color=\"#0000ff\" />\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</ApiCollapse>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{appModel.subspaceEvents.length > 0 && (\r\n\t\t\t\t\t\t<ApiCollapse\r\n\t\t\t\t\t\t\tlabel=\"Subspace Events Used\"\r\n\t\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\t\tchildCount={appModel.subspaceEvents.length}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{appModel.subspaceEvents.map((api: IGalleryApi) => (\r\n\t\t\t\t\t\t\t\t<Flex\r\n\t\t\t\t\t\t\t\t\tjustify=\"center\"\r\n\t\t\t\t\t\t\t\t\tkey={`subspace${api.id}`}\r\n\t\t\t\t\t\t\t\t\tnoOfLines={1}\r\n\t\t\t\t\t\t\t\t\twordBreak=\"break-all\"\r\n\t\t\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<Text>{api.name}</Text>\r\n\t\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</ApiCollapse>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{appModel.outgoingFunctionalities.length > 0 && (\r\n\t\t\t\t\t\t<ApiCollapse\r\n\t\t\t\t\t\t\tlabel=\"Outgoing Functionalities Used\"\r\n\t\t\t\t\t\t\ttextColor={textColor}\r\n\t\t\t\t\t\t\tchildCount={appModel.outgoingFunctionalities.length}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{appModel.outgoingFunctionalities.map((x: string) => (\r\n\t\t\t\t\t\t\t\t<Flex justify=\"center\" textAlign=\"center\" key={x} noOfLines={1}>\r\n\t\t\t\t\t\t\t\t\t<Text>{x}</Text>\r\n\t\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</ApiCollapse>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{appModel.contentSchema !== null && (\r\n\t\t\t\t\t\t<ApiCollapse label=\"Content Schema\" textColor={textColor} childCount={1}>\r\n\t\t\t\t\t\t\t<Flex justify=\"center\">\r\n\t\t\t\t\t\t\t\t<Text>{appModel.contentSchema.name}</Text>\r\n\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t</ApiCollapse>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file Actions buttons for an app's Showroom listing page\r\n * @module Epic.AppOrchard.Showroom.ActionButtons\r\n */\r\n\r\nimport { WarningTwoIcon } from \"@chakra-ui/icons\";\r\nimport { Box, Button, ButtonProps, ComponentWithAs, Grid, Text, useBreakpointValue } from \"@chakra-ui/react\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\nimport { FacilitatedAppAgreementButton, ShowroomRequestDownloadButton } from \"../AppHelperComponents\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\theaderColor: string;\r\n\tbuttonBackgroundColor: string;\r\n\tbuttonBorderColor: string;\r\n\tuserSecurity: IUserSecurity;\r\n\treload: () => void;\r\n\tisShowroom?: boolean;\r\n}\r\n\r\nexport const ActionButtonsSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst {\r\n\t\tappDetails,\r\n\t\theaderColor,\r\n\t\tbuttonBackgroundColor,\r\n\t\tbuttonBorderColor,\r\n\t\tuserSecurity,\r\n\t\tisShowroom,\r\n\t\treload,\r\n\t} = props;\r\n\r\n\t//#region state and props\r\n\tconst appModel = appDetails.appModel;\r\n\tconst isMobile = useBreakpointValue({ base: true, lg: false });\r\n\r\n\tconst canPurchase = userSecurity.isEpicCustomer && userSecurity.canPurchase;\r\n\tconst isOwnApp = appModel.organizationId === userSecurity.userOrganizationId;\r\n\r\n\tconst showFacilitatedAgreementButton =\r\n\t\tisShowroom &&\r\n\t\tappDetails.appModel.isAppAgreementFacilitated &&\r\n\t\tcanPurchase &&\r\n\t\t!isOwnApp &&\r\n\t\t!appModel.isRelatedOrgApp &&\r\n\t\t!userSecurity.getsAppLicensesFromOrganization_Name;\r\n\r\n\tconst showParentDownloadWarning =\r\n\t\tcanPurchase &&\r\n\t\tuserSecurity.getsAppLicensesFromOrganization_Name &&\r\n\t\t!appDetails.isDownloaded &&\r\n\t\tappDetails.isDownloadedByParent;\r\n\r\n\tconst isDownloadAvailable =\r\n\t\tuserSecurity.canPurchase &&\r\n\t\tappModel.showDownloadLink &&\r\n\t\t!appModel.isAutoDownloadedClient &&\r\n\t\t!appDetails.isDownloaded &&\r\n\t\t!isOwnApp &&\r\n\t\t!appModel.requiresFutureEpicVersion &&\r\n\t\t!appModel.isRelatedOrgApp;\r\n\tconst canOrgDownload =\r\n\t\tappDetails.previousAPILicenseExists ||\r\n\t\tappDetails.isUSCDIDownloadSet ||\r\n\t\tappDetails.appCanBeDownloadedWithoutApiLicense;\r\n\tconst hasUnableToDownloadDisclaimer =\r\n\t\tisOwnApp || appModel.isRelatedOrgApp || appModel.requiresFutureEpicVersion;\r\n\tconst showDownloadSection = isDownloadAvailable && (canOrgDownload || hasUnableToDownloadDisclaimer);\r\n\r\n\t//#endregion\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{showParentDownloadWarning && (\r\n\t\t\t\t<Text\r\n\t\t\t\t\ttextAlign={\"center\"}\r\n\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\tfontStyle=\"italic\"\r\n\t\t\t\t\tmt=\"8px\"\r\n\t\t\t\t\tmb=\"20px\"\r\n\t\t\t\t\tfontSize=\"18px\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<WarningTwoIcon color=\"yellow.500\" marginRight=\"5px\" mb=\"5px\" />\r\n\t\t\t\t\t{`Your system automatically receives all apps activated by ${userSecurity.getsAppLicensesFromOrganization_Name}. ${userSecurity.getsAppLicensesFromOrganization_Name} has an existing download for this app.`}\r\n\t\t\t\t</Text>\r\n\t\t\t)}\r\n\t\t\t{userSecurity.isEpicCustomer && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{showFacilitatedAgreementButton && showDownloadSection && !isMobile ? (\r\n\t\t\t\t\t\t<Grid\r\n\t\t\t\t\t\t\ttemplateAreas={`\"header1 header2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\"middle1 middle2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\"button1 button2\"`}\r\n\t\t\t\t\t\t\tgap=\"0 6em\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<FacilitatedAppAgreementButton\r\n\t\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\t\theaderColor={headerColor}\r\n\t\t\t\t\t\t\t\tbuttonBackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\tbuttonBorderColor={buttonBorderColor}\r\n\t\t\t\t\t\t\t\treload={reload}\r\n\t\t\t\t\t\t\t\tbuttonsAs={ShowroomButton}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<ShowroomRequestDownloadButton\r\n\t\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\t\theaderColor={headerColor}\r\n\t\t\t\t\t\t\t\tbuttonBackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\tbuttonBorderColor={buttonBorderColor}\r\n\t\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\t\treload={reload}\r\n\t\t\t\t\t\t\t\tbuttonsAs={isShowroom ? ShowroomButton : NormalButton}\r\n\t\t\t\t\t\t\t\tisShowroom={isShowroom}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{showFacilitatedAgreementButton && (\r\n\t\t\t\t\t\t\t\t<Box w={\"50%\"}>\r\n\t\t\t\t\t\t\t\t\t<FacilitatedAppAgreementButton\r\n\t\t\t\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\t\t\t\theaderColor={headerColor}\r\n\t\t\t\t\t\t\t\t\t\tbuttonBackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tbuttonBorderColor={buttonBorderColor}\r\n\t\t\t\t\t\t\t\t\t\treload={reload}\r\n\t\t\t\t\t\t\t\t\t\tbuttonsAs={ShowroomButton}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t{showDownloadSection && (\r\n\t\t\t\t\t\t\t\t<Box w={\"50%\"}>\r\n\t\t\t\t\t\t\t\t\t<ShowroomRequestDownloadButton\r\n\t\t\t\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\t\t\t\theaderColor={headerColor}\r\n\t\t\t\t\t\t\t\t\t\tbuttonBackgroundColor={buttonBackgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tbuttonBorderColor={buttonBorderColor}\r\n\t\t\t\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\t\t\t\treload={reload}\r\n\t\t\t\t\t\t\t\t\t\tbuttonsAs={isShowroom ? ShowroomButton : NormalButton}\r\n\t\t\t\t\t\t\t\t\t\tisShowroom={isShowroom}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n\r\nconst ShowroomButton: ComponentWithAs<\"button\", ButtonProps> = (props: ButtonProps) => {\r\n\tconst { leftIcon, children, ...rest } = props;\r\n\r\n\treturn (\r\n\t\t<Button {...rest} p=\"25px\" fontWeight=\"500\" fontSize=\"1.25rem\" boxShadow=\"0px 0px 2px 1px #c5c5c5\">\r\n\t\t\t{children}\r\n\t\t</Button>\r\n\t);\r\n};\r\n\r\nconst NormalButton: ComponentWithAs<\"button\", ButtonProps> = (props: ButtonProps) => {\r\n\tconst { leftIcon, children, ...rest } = props;\r\n\r\n\treturn (\r\n\t\t<Button {...rest} fontWeight=\"500\" colorScheme=\"blue\">\r\n\t\t\t{children}\r\n\t\t</Button>\r\n\t);\r\n};\r\n","/**\r\n * @copyright Copyright 2023-2024 Epic Systems Corporation\r\n * @file Information banner text for apps\r\n * @module Epic.AppOrchard.Showroom.AppBannerSection\r\n */\r\n\r\nimport { Box } from \"@chakra-ui/react\";\r\nimport { config } from \"ao/appConfig\";\r\nimport { ApiLicenseTermsBanner, StatusAlert } from \"ao/components/Core\";\r\nimport { DownloadApprovedStatus } from \"ao/data\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { FunctionComponent, memo } from \"react\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\tuserSecurity: IUserSecurity;\r\n\tsetAppDetails: (x: IShowroomAppDownloadModel) => void;\r\n\tisShowroom: boolean;\r\n}\r\n\r\nexport const AppBannerSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appDetails, userSecurity, setAppDetails, isShowroom } = props;\r\n\r\n\treturn (\r\n\t\t<Box my=\"10px\">\r\n\t\t\t{!appDetails.orgHasPurchaser && (\r\n\t\t\t\t<StatusAlert\r\n\t\t\t\t\tstatus=\"warning\"\r\n\t\t\t\t\tmessage={\r\n\t\t\t\t\t\tuserSecurity.canManageUsers\r\n\t\t\t\t\t\t\t? `Your organization doesn't have anyone with the Can Purchase Apps permission which allows managing requests for new products from this site. You can give someone the Can Purchase Apps permission in the Organization Details page in ${config.SiteName}.`\r\n\t\t\t\t\t\t\t: \"Your organization doesn't have anyone with the Can Purchase Apps permission which allows managing requests for new products from this site. To get someone this permission, contact your Epic representative.\"\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{userSecurity.canPurchase &&\r\n\t\t\t\t!appDetails.previousAPILicenseExists &&\r\n\t\t\t\t!appDetails.isUSCDIDownloadSet && (\r\n\t\t\t\t\t<ApiLicenseTermsBanner\r\n\t\t\t\t\t\tmt=\"0.5em\"\r\n\t\t\t\t\t\tmb=\"0.5em\"\r\n\t\t\t\t\t\tapiLicenseAgreementId={appDetails.apiLicenseTermsId}\r\n\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\tsuccessHandler={() =>\r\n\t\t\t\t\t\t\tsetAppDetails({\r\n\t\t\t\t\t\t\t\t...appDetails,\r\n\t\t\t\t\t\t\t\tpreviousAPILicenseExists: true,\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tisShowroom={isShowroom}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t{appDetails.vendorApproved === DownloadApprovedStatus.Approved && appDetails.isSyncDisabled && (\r\n\t\t\t\t<StatusAlert\r\n\t\t\t\t\tstatus=\"warning\"\r\n\t\t\t\t\tmessage={\r\n\t\t\t\t\t\t\"Syncing to your Production system has been temporarily disabled for this app by Epic while the app is modified. There may be some functionality described in this listing that has not yet synced to your Production system. Contact your Epic representative and mention SLG 9084550 if you have any questions.\"\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2024-2024 Epic Systems Corporation\r\n * @file Insight metrics display for apps\r\n * @module Epic.AppOrchard.Showroom.AppInsightMetricsSection\r\n */\r\n\r\nimport { GridItem, SimpleGrid, Text } from \"@chakra-ui/react\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { FunctionComponent, memo } from \"react\";\r\n\r\ninterface IProps {\r\n\tlisting: IShowroomAppDownloadModel;\r\n\ttextColor: string;\r\n}\r\n\r\nexport const AppInsightMetricsSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { listing, textColor } = props;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{(listing.intendedPurposes.length > 0 || listing.intendedPurposes.length > 0) && (\r\n\t\t\t\t<SimpleGrid columns={{ sm: 1, lg: 2 }} spacing=\"10px\">\r\n\t\t\t\t\t{listing.intendedPurposes.length > 0 && (\r\n\t\t\t\t\t\t<GridItem>\r\n\t\t\t\t\t\t\t<Text color={textColor} display=\"contents\">\r\n\t\t\t\t\t\t\t\tIntended Purposes:{\" \"}\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t{listing.intendedPurposes.map((x) => x.name).join(\", \")}\r\n\t\t\t\t\t\t</GridItem>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{listing.intendedUsers.length > 0 && (\r\n\t\t\t\t\t\t<GridItem>\r\n\t\t\t\t\t\t\t<Text color={textColor} display=\"contents\">\r\n\t\t\t\t\t\t\t\tIntended Users:{\" \"}\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t{listing.intendedUsers.map((x) => x.name).join(\", \")}\r\n\t\t\t\t\t\t</GridItem>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</SimpleGrid>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2024-2024 Epic Systems Corporation\r\n * @file Section containing app resources\r\n * @module Epic.AppOrchard.Showroom.AppResourcesSection\r\n */\r\n\r\nimport { LinkIcon } from \"@chakra-ui/icons\";\r\nimport {\r\n\tAccordion,\r\n\tAccordionButton,\r\n\tAccordionIcon,\r\n\tAccordionItem,\r\n\tAccordionPanel,\r\n\tBox,\r\n\tFlex,\r\n\tHeading,\r\n\tImage,\r\n\tText,\r\n} from \"@chakra-ui/react\";\r\nimport { showroomText } from \"ao/chakraTheme\";\r\nimport { AOLink } from \"ao/components/Core\";\r\nimport { IGalleryStageWithChildren, IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { getBaseUrl } from \"ao/utils/helpers\";\r\nimport { FunctionComponent, memo, useMemo } from \"react\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\tstage: IGalleryStageWithChildren;\r\n}\r\n\r\nexport const AppResourcesSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appDetails, stage } = props;\r\n\r\n\tconst baseUrl = useMemo(getBaseUrl, []);\r\n\tconst color = stage.textColor ?? showroomText;\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{stage.resourceHeaderText && appDetails.resourceLinks.length > 0 && (\r\n\t\t\t\t<Accordion\r\n\t\t\t\t\tallowToggle\r\n\t\t\t\t\tborder={`1px solid ${color}`}\r\n\t\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\t\tmarginTop=\"25px\"\r\n\t\t\t\t\tdefaultIndex={[0]}\r\n\t\t\t\t>\r\n\t\t\t\t\t<AccordionItem border=\"none\">\r\n\t\t\t\t\t\t<Heading as=\"h4\" fontFamily=\"Jost\" color={color}>\r\n\t\t\t\t\t\t\t<AccordionButton>\r\n\t\t\t\t\t\t\t\t<Flex alignItems=\"center\" flex=\"1\">\r\n\t\t\t\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\t\t\t\tsrc={`${baseUrl}Content/images/${stage.iconPath}`}\r\n\t\t\t\t\t\t\t\t\t\tfallback={<></>}\r\n\t\t\t\t\t\t\t\t\t\tmaxH=\"32px\"\r\n\t\t\t\t\t\t\t\t\t\tmaxW=\"32px\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t<Text whiteSpace={\"nowrap\"} ml=\"10px\" fontSize=\"1.3rem\" fontWeight=\"500\">\r\n\t\t\t\t\t\t\t\t\t\t{stage.groupName} {appDetails.showroomYears.join(\",\")} Resources\r\n\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t\t<AccordionIcon fontSize=\"18px\" />\r\n\t\t\t\t\t\t\t</AccordionButton>\r\n\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t<AccordionPanel>\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\twhiteSpace={\"pre-line\"}\r\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\r\n\t\t\t\t\t\t\t\t\t__html: stage.resourceHeaderText,\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tpaddingBottom=\"5px\"\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t{appDetails.resourceLinks.map((resource) => (\r\n\t\t\t\t\t\t\t\t<AOLink url={resource.url} display=\"block\" variant=\"dark\" isExternal>\r\n\t\t\t\t\t\t\t\t\t<LinkIcon mr=\"5px\" />\r\n\t\t\t\t\t\t\t\t\t{resource.displayName}\r\n\t\t\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</AccordionPanel>\r\n\t\t\t\t\t</AccordionItem>\r\n\t\t\t\t</Accordion>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n","import { createIcon } from \"@chakra-ui/icon\"\nimport * as React from \"react\"\n\nexport const QuestionOutlineIcon = createIcon({\n  displayName: \"QuestionOutlineIcon\",\n  path: (\n    <g stroke=\"currentColor\" strokeWidth=\"1.5\">\n      <path\n        strokeLinecap=\"round\"\n        fill=\"none\"\n        d=\"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25\"\n      />\n      <path\n        fill=\"none\"\n        strokeLinecap=\"round\"\n        d=\"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0\"\n      />\n      <circle fill=\"none\" strokeMiterlimit=\"10\" cx=\"12\" cy=\"12\" r=\"11.25\" />\n    </g>\n  ),\n})\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const CheckCircleIcon = createIcon({\n  displayName: \"CheckCircleIcon\",\n  d:\n    \"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z\",\n})\n","/**\r\n * @copyright Copyright 2024-2024 Epic Systems Corporation\r\n * @file Usage stat info for an app\r\n * @module Epic.AppOrchard.Showroom.UsageStatsSection\r\n */\r\n\r\nimport { CalendarIcon, CheckCircleIcon, DownloadIcon, QuestionIcon } from \"@chakra-ui/icons\";\r\nimport { Box, Button, Flex, Stack, Text, useDisclosure } from \"@chakra-ui/react\";\r\nimport { showroomText } from \"ao/chakraTheme\";\r\nimport { AOTooltip, ConfirmationModal } from \"ao/components/Core\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { pluralIfNeeded } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\ttextColor: string;\r\n}\r\n\r\nexport const UsageStatsSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appDetails, textColor } = props;\r\n\r\n\tconst badgeText = appDetails.appModel.isAutoDownloadedClient ? \"Auto-download\" : \"Organization\";\r\n\r\n\tconst otherLiveCount = appDetails.liveOrgCount - appDetails.liveOrgList.length;\r\n\tconst otherInstallCount = appDetails\r\n\t\t? appDetails.installingOrgCount - appDetails.installingOrgList.length\r\n\t\t: 0;\r\n\r\n\tconst availableDate = appDetails.appModel.liveOn ?? appDetails.listingDate;\r\n\r\n\treturn (\r\n\t\t<Stack\r\n\t\t\tspacing={\"2px\"}\r\n\t\t\tmarginLeft={{ base: \"unset\", lg: \"-5px\" }}\r\n\t\t\tdirection={{ base: \"column\", lg: \"row\" }}\r\n\t\t\talign=\"stretch\"\r\n\t\t\twidth=\"100%\"\r\n\t\t\tpt=\"10px\"\r\n\t\t>\r\n\t\t\t<StatBadge\r\n\t\t\t\tlabel={`${appDetails.liveOrgCount} Live ${pluralIfNeeded(\r\n\t\t\t\t\tbadgeText,\r\n\t\t\t\t\tappDetails.liveOrgCount,\r\n\t\t\t\t)}`}\r\n\t\t\t\ticon={\r\n\t\t\t\t\t<AOTooltip\r\n\t\t\t\t\t\thelptext={`This data is organization reported and may not represent every live integration.`}\r\n\t\t\t\t\t\tboxProps={{\r\n\t\t\t\t\t\t\tverticalAlign: \"bottom\",\r\n\t\t\t\t\t\t\tpaddingBottom: \"2px\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{appDetails.liveOrgCount > 0 ? (\r\n\t\t\t\t\t\t\t<CheckCircleIcon color={textColor} />\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<QuestionIcon color={textColor} />\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</AOTooltip>\r\n\t\t\t\t}\r\n\t\t\t\tmodelTitle={`Live ${pluralIfNeeded(badgeText, appDetails.liveOrgCount)}`}\r\n\t\t\t\tmodalContent={\r\n\t\t\t\t\tappDetails.liveOrgList.length > 0 ? (\r\n\t\t\t\t\t\t<Box maxHeight=\"min(400px, calc(100vh - 10rem))\" overflowY=\"auto\">\r\n\t\t\t\t\t\t\t{appDetails.liveOrgList.map((orgName) => (\r\n\t\t\t\t\t\t\t\t<Text>{orgName}</Text>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t{otherLiveCount > 0 && (\r\n\t\t\t\t\t\t\t\t<Text>{` and ${otherLiveCount} other ${pluralIfNeeded(\r\n\t\t\t\t\t\t\t\t\t\"organization\",\r\n\t\t\t\t\t\t\t\t\totherLiveCount,\r\n\t\t\t\t\t\t\t\t)}`}</Text>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t) : undefined\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t\t{!appDetails.appModel.isAutoDownloadedClient && (\r\n\t\t\t\t<StatBadge\r\n\t\t\t\t\tlabel={`${appDetails.installingOrgCount} Installing ${pluralIfNeeded(\r\n\t\t\t\t\t\tbadgeText,\r\n\t\t\t\t\t\tappDetails.installingOrgCount,\r\n\t\t\t\t\t)}`}\r\n\t\t\t\t\ticon={<DownloadIcon color={textColor} />}\r\n\t\t\t\t\tmodelTitle={`Installing ${pluralIfNeeded(badgeText, appDetails.installingOrgCount)}`}\r\n\t\t\t\t\tmodalContent={\r\n\t\t\t\t\t\tappDetails.installingOrgList.length > 0 ? (\r\n\t\t\t\t\t\t\t<Box maxHeight=\"min(400px, calc(100vh - 10rem))\" overflowY=\"auto\">\r\n\t\t\t\t\t\t\t\t{appDetails.installingOrgList.map((orgName) => (\r\n\t\t\t\t\t\t\t\t\t<Text>{orgName}</Text>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t{otherInstallCount > 0 && (\r\n\t\t\t\t\t\t\t\t\t<Text>{` and ${otherInstallCount} other ${pluralIfNeeded(\r\n\t\t\t\t\t\t\t\t\t\t\"organization\",\r\n\t\t\t\t\t\t\t\t\t\totherInstallCount,\r\n\t\t\t\t\t\t\t\t\t)}`}</Text>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t) : undefined\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{availableDate && (\r\n\t\t\t\t<StatBadge\r\n\t\t\t\t\tlabel={`Available since ${new Date(availableDate).toLocaleDateString()}`}\r\n\t\t\t\t\ticon={<CalendarIcon color={textColor} />}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</Stack>\r\n\t);\r\n});\r\n\r\ninterface IStatBadgeProp {\r\n\tlabel: string;\r\n\ticon: React.ReactNode;\r\n\tmodelTitle?: string;\r\n\tmodalContent?: React.ReactNode;\r\n}\r\n\r\nconst StatBadge: FunctionComponent<IStatBadgeProp> = memo((props) => {\r\n\tconst { label, icon, modelTitle, modalContent } = props;\r\n\r\n\tconst { isOpen, onOpen, onClose } = useDisclosure();\r\n\r\n\treturn (\r\n\t\t<Flex paddingRight=\"12px\" justify={{ base: \"center\", lg: \"left\" }}>\r\n\t\t\t{modalContent ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tleftIcon={<Box marginRight=\"-3px\">{icon}</Box>}\r\n\t\t\t\t\t\tonClick={onOpen}\r\n\t\t\t\t\t\tvariant=\"linkUnderline\"\r\n\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\tfontSize=\"1rem\"\r\n\t\t\t\t\t\tpaddingX=\"5px\"\r\n\t\t\t\t\t\tcolorScheme=\"blue\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{label}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t\t<ConfirmationModal\r\n\t\t\t\t\t\ttitle={modelTitle ?? label}\r\n\t\t\t\t\t\tmessage={modalContent}\r\n\t\t\t\t\t\tisOpen={isOpen}\r\n\t\t\t\t\t\tonAccept={onClose}\r\n\t\t\t\t\t\tacceptCaption=\"Close\"\r\n\t\t\t\t\t\tpreserveScrollBarGap\r\n\t\t\t\t\t\tisCentered\r\n\t\t\t\t\t\treturnFocusOnClose\r\n\t\t\t\t\t/>\r\n\t\t\t\t</>\r\n\t\t\t) : (\r\n\t\t\t\t<Flex\r\n\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\tfontSize=\"1rem\"\r\n\t\t\t\t\tpaddingX=\"5px\"\r\n\t\t\t\t\twhiteSpace=\"nowrap\"\r\n\t\t\t\t\theight=\"35px\"\r\n\t\t\t\t\talignItems=\"center\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{icon}\r\n\t\t\t\t\t<Box ml=\"3px\">{label}</Box>\r\n\t\t\t\t</Flex>\r\n\t\t\t)}\r\n\t\t</Flex>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file Download info for an app's showroom listing page\r\n * @module Epic.AppOrchard.Showroom.DownloadInfoSection\r\n */\r\n\r\nimport { QuestionOutlineIcon, TimeIcon } from \"@chakra-ui/icons\";\r\nimport {\r\n\tBox,\r\n\tButton,\r\n\tButtonProps,\r\n\tComponentWithAs,\r\n\tFlex,\r\n\tStack,\r\n\tuseBreakpointValue,\r\n\tVStack,\r\n\tWrap,\r\n} from \"@chakra-ui/react\";\r\nimport { showroomText } from \"ao/chakraTheme\";\r\nimport { AOLink, AOTooltip, EditableInstallStatus } from \"ao/components/Core\";\r\nimport { NotImplementingNowInfoBody } from \"ao/components/Dashboard/widgets/nominatedApps/helperComponents/NotImplementingNowInfo\";\r\nimport { DownloadApprovedStatus, InstallStatus } from \"ao/data\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { IUserSecurity } from \"ao/types\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { getBaseUrl, isLocalhost, pluralIfNeeded } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useMemo } from \"react\";\r\nimport { BiHeart } from \"react-icons/bi\";\r\nimport {\r\n\tNominateButton,\r\n\tNotImplementingNowButtonWrapper,\r\n\tShowroomUpdateTokensButton,\r\n} from \"../AppHelperComponents\";\r\nimport { UsageStatsSection } from \"./UsageStatsSection\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\tuserSecurity: IUserSecurity;\r\n\tsetAppDetails: (x: IShowroomAppDownloadModel) => void;\r\n\treload: () => void;\r\n\ttextColor: string;\r\n\tonlyThumbnail: boolean;\r\n\tsubLogoElements: JSX.Element;\r\n\tisShowroom: boolean;\r\n}\r\n\r\nconst actionButtonProps: ButtonProps = {\r\n\tvariant: \"link\",\r\n\tcolorScheme: \"blue\",\r\n\tfontSize: \"1rem\",\r\n\tfontWeight: \"normal\",\r\n\tsize: \"sm\",\r\n\tpadding: 0,\r\n};\r\n\r\nexport const AppHeaderDetails: FunctionComponent<IProps> = memo((props) => {\r\n\tconst {\r\n\t\tappDetails,\r\n\t\tuserSecurity,\r\n\t\tsetAppDetails,\r\n\t\treload,\r\n\t\ttextColor,\r\n\t\tonlyThumbnail,\r\n\t\tsubLogoElements,\r\n\t\tisShowroom,\r\n\t} = props;\r\n\r\n\t//#region local state\r\n\tconst isMobile = useBreakpointValue({ base: true, lg: false }) || false;\r\n\r\n\tconst isCustomerOrEpicUser = userSecurity.isEpicCustomer || userSecurity.isEpicUser;\r\n\r\n\tconst nominationCountTitle = userSecurity.isEpicUser\r\n\t\t? \"The number of people who have nominated this product across all customer organizations.\"\r\n\t\t: \"The number of people who have nominated this product from your organization.\";\r\n\r\n\tconst showSubLogoElements = !isMobile && !onlyThumbnail;\r\n\r\n\tconst showNominationCountTag =\r\n\t\tisCustomerOrEpicUser &&\r\n\t\tappDetails.interestedCount > 0 &&\r\n\t\t!appDetails.isDownloaded &&\r\n\t\t!appDetails.isComingSoon;\r\n\r\n\tconst showNotImplementingNowTag =\r\n\t\t!appDetails.isDownloaded && appDetails.notImplementingNowDetails !== null && !appDetails.isComingSoon;\r\n\r\n\tconst showNotNowUserName =\r\n\t\t(userSecurity.canPurchase || userSecurity.isEpicUser) &&\r\n\t\tappDetails.notImplementingNowDetails?.userName;\r\n\r\n\tconst isAppFromOwnOrg = userSecurity.userOrganizationId === appDetails.appModel.organizationId;\r\n\tconst showUsageStats =\r\n\t\t(userSecurity.isEpicCustomer ||\r\n\t\t\tuserSecurity.isEpicUser ||\r\n\t\t\t(userSecurity.isVendorUser && isAppFromOwnOrg)) &&\r\n\t\tappDetails.appId !== null &&\r\n\t\t!appDetails.isComingSoon;\r\n\r\n\tconst canPurchase = userSecurity.isEpicCustomer && userSecurity.canPurchase;\r\n\r\n\tconst isRemoteAccessing =\r\n\t\tuserSecurity.userDBOrganizationId !== null &&\r\n\t\tuserSecurity.userOrganizationId !== userSecurity.userDBOrganizationId;\r\n\r\n\tconst canRequest =\r\n\t\t(!appDetails.isDownloaded || appDetails.vendorApproved === DownloadApprovedStatus.Overwritten) &&\r\n\t\t!isAppFromOwnOrg &&\r\n\t\tappDetails.appModel.showDownloadLink &&\r\n\t\tcanPurchase &&\r\n\t\t!appDetails.isComingSoon;\r\n\r\n\tconst canNominate =\r\n\t\t!isAppFromOwnOrg &&\r\n\t\tuserSecurity.isEpicCustomer &&\r\n\t\t!userSecurity.canPurchase &&\r\n\t\t!appDetails.isDownloaded &&\r\n\t\t!appDetails.interestedOn &&\r\n\t\t!appDetails.notImplementingNowDetails &&\r\n\t\t!isRemoteAccessing &&\r\n\t\t!appDetails.isComingSoon;\r\n\r\n\tconst canUpdateTokens =\r\n\t\tappDetails.appModel.showDownloadLink &&\r\n\t\tappDetails.isDownloaded &&\r\n\t\tappDetails.appModel.usesOAuth2 &&\r\n\t\tappDetails.vendorApproved !== DownloadApprovedStatus.Declined &&\r\n\t\tappDetails.vendorApproved !== DownloadApprovedStatus.Overwritten &&\r\n\t\tcanPurchase &&\r\n\t\t!appDetails.appModel.requiresFutureEpicVersion;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\tconst isShowroomPublic = isShowroom && !isLocalhost() && !siteInfo.isAdminSite;\r\n\r\n\tconst baseUrl = useMemo(() => (isShowroomPublic ? siteInfo.vendorServicesUrl : getBaseUrl()), [\r\n\t\tisShowroomPublic,\r\n\t\tsiteInfo.vendorServicesUrl,\r\n\t]);\r\n\r\n\tconst showroomBaseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\t//#endregion\r\n\r\n\treturn (\r\n\t\t<VStack wordBreak=\"break-word\" spacing={0} alignItems={onlyThumbnail ? \"center\" : \"stretch\"}>\r\n\t\t\t{showSubLogoElements && subLogoElements}\r\n\t\t\t{showUsageStats && (\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<UsageStatsSection appDetails={appDetails} textColor={textColor} />\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\r\n\t\t\t<Stack spacing={0} direction={isMobile ? \"column\" : \"row\"}>\r\n\t\t\t\t{appDetails.isDownloaded &&\r\n\t\t\t\t\tuserSecurity.canPurchase &&\r\n\t\t\t\t\t(appDetails.vendorApproved === DownloadApprovedStatus.Approved ||\r\n\t\t\t\t\t\tappDetails.vendorApproved === DownloadApprovedStatus.NonProdOnly) && (\r\n\t\t\t\t\t\t<Flex color={showroomText} justify={isMobile ? \"center\" : \"left\"} pt=\"5px\">\r\n\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t<EditableInstallStatus\r\n\t\t\t\t\t\t\t\t\tappId={appDetails.appModel.id}\r\n\t\t\t\t\t\t\t\t\torgId={userSecurity.userOrganizationId ?? -1}\r\n\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={appDetails.vendorApproved}\r\n\t\t\t\t\t\t\t\t\tinstallStatus={appDetails.installStatus}\r\n\t\t\t\t\t\t\t\t\tsuccessHandler={(newStatus: InstallStatus) => {\r\n\t\t\t\t\t\t\t\t\t\tsetAppDetails({\r\n\t\t\t\t\t\t\t\t\t\t\t...appDetails,\r\n\t\t\t\t\t\t\t\t\t\t\tinstallStatus: newStatus,\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\treload();\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tbuttonsAs={EditButton}\r\n\t\t\t\t\t\t\t\t\tisForGallery\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t{canUpdateTokens && (\r\n\t\t\t\t\t<Flex color={showroomText} justify={isMobile ? \"center\" : \"left\"} pt=\"5px\" h=\"32px\">\r\n\t\t\t\t\t\t<ShowroomUpdateTokensButton\r\n\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\tsetAppDetails={setAppDetails}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Flex>\r\n\t\t\t\t)}\r\n\t\t\t</Stack>\r\n\r\n\t\t\t{(showNotImplementingNowTag || canRequest) && (\r\n\t\t\t\t<Wrap spacing={0} justify={isMobile ? \"center\" : \"left\"} pt=\"5px\">\r\n\t\t\t\t\t{showNotImplementingNowTag && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t<Flex\r\n\t\t\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\t\t\talignItems=\"center\"\r\n\t\t\t\t\t\t\t\tpr=\"3px\"\r\n\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\tfontSize=\"\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<TimeIcon color={textColor} mr=\"3px\" /> Not Implementing Now{\" \"}\r\n\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t<Box display=\"inline\" color={\"gray.500\"} fontStyle=\"italic\" pr=\"5px\">\r\n\t\t\t\t\t\t\t\tset{\" \"}\r\n\t\t\t\t\t\t\t\t{new Date(appDetails.notImplementingNowDetails.instant).toLocaleDateString()}\r\n\t\t\t\t\t\t\t\t{showNotNowUserName\r\n\t\t\t\t\t\t\t\t\t? \" by \" + appDetails.notImplementingNowDetails.userName\r\n\t\t\t\t\t\t\t\t\t: \"\"}{\" \"}\r\n\t\t\t\t\t\t\t\t<AOTooltip\r\n\t\t\t\t\t\t\t\t\thelptext={\r\n\t\t\t\t\t\t\t\t\t\t<NotImplementingNowInfoBody\r\n\t\t\t\t\t\t\t\t\t\t\tlatestAppVersionId={appDetails.appId!}\r\n\t\t\t\t\t\t\t\t\t\t\tnotNowDecision={appDetails.notImplementingNowDetails}\r\n\t\t\t\t\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tboxProps={{ paddingX: \"5px\" }}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<QuestionOutlineIcon color={\"gray.500\"} />\r\n\t\t\t\t\t\t\t\t</AOTooltip>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{canRequest && (\r\n\t\t\t\t\t\t<NotImplementingNowButtonWrapper\r\n\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\tsetAppDetails={setAppDetails}\r\n\t\t\t\t\t\t\tbuttonProps={actionButtonProps}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Wrap>\r\n\t\t\t)}\r\n\t\t\t{(showNominationCountTag || canNominate) && (\r\n\t\t\t\t<Wrap spacing={0} justify={isMobile ? \"center\" : \"left\"} pt=\"5px\">\r\n\t\t\t\t\t{showNominationCountTag && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t<Flex\r\n\t\t\t\t\t\t\t\tcolor={showroomText}\r\n\t\t\t\t\t\t\t\talignItems=\"center\"\r\n\t\t\t\t\t\t\t\tpr=\"3px\"\r\n\t\t\t\t\t\t\t\tfontWeight=\"400\"\r\n\t\t\t\t\t\t\t\tfontSize=\"\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<BiHeart style={{ color: textColor, marginRight: \"3px\" }} />\r\n\r\n\t\t\t\t\t\t\t\t{`${appDetails.interestedCount} ${pluralIfNeeded(\r\n\t\t\t\t\t\t\t\t\t\"Nomination\",\r\n\t\t\t\t\t\t\t\t\tappDetails.interestedCount,\r\n\t\t\t\t\t\t\t\t)} `}\r\n\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t<Flex alignItems=\"center\" color={\"gray.500\"} fontStyle=\"italic\" pr=\"5px\">\r\n\t\t\t\t\t\t\t\t<AOTooltip\r\n\t\t\t\t\t\t\t\t\thelptext={\r\n\t\t\t\t\t\t\t\t\t\tappDetails.interestedOn\r\n\t\t\t\t\t\t\t\t\t\t\t? `You nominated this product on ${appDetails.interestedOn}`\r\n\t\t\t\t\t\t\t\t\t\t\t: nominationCountTitle\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tboxProps={{ paddingX: \"5px\" }}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<QuestionOutlineIcon color={\"gray.500\"} />\r\n\t\t\t\t\t\t\t\t</AOTooltip>\r\n\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{canNominate && (\r\n\t\t\t\t\t\t<NominateButton\r\n\t\t\t\t\t\t\tappDetails={appDetails}\r\n\t\t\t\t\t\t\tuserSecurity={userSecurity}\r\n\t\t\t\t\t\t\tsetAppDetails={setAppDetails}\r\n\t\t\t\t\t\t\tbuttonProps={actionButtonProps}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Wrap>\r\n\t\t\t)}\r\n\t\t\t{appDetails.appModel.agreementId > 0 && userSecurity.canPurchase && (\r\n\t\t\t\t<Wrap spacing={0} justify={isMobile ? \"center\" : \"left\"} pt=\"5px\">\r\n\t\t\t\t\t<Flex color={showroomText} alignItems=\"center\" pr=\"3px\" fontWeight=\"400\" fontSize=\"\">\r\n\t\t\t\t\t\t<AOLink\r\n\t\t\t\t\t\t\turl={\r\n\t\t\t\t\t\t\t\tisShowroomPublic\r\n\t\t\t\t\t\t\t\t\t? `${showroomBaseUrl}VendorServices/api/Showroom/AppAgreement?termId=${appDetails.appModel.agreementId}&download=false`\r\n\t\t\t\t\t\t\t\t\t: `${baseUrl}Developer/AppAgreement?termId=${appDetails.appModel.agreementId}`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tisExternal\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tView App Agreement\r\n\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t</Flex>\r\n\t\t\t\t</Wrap>\r\n\t\t\t)}\r\n\t\t</VStack>\r\n\t);\r\n});\r\n\r\nconst EditButton: ComponentWithAs<\"button\", ButtonProps> = (props: ButtonProps) => {\r\n\tconst { leftIcon, children, ...rest } = props;\r\n\r\n\treturn (\r\n\t\t<Button {...rest} variant=\"outline\" fontWeight=\"400\" fontSize=\"1rem\" size=\"sm\" w=\"100%\">\r\n\t\t\t{children}\r\n\t\t</Button>\r\n\t);\r\n};\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file Download info for an app and it's versions\r\n * @module Epic.AppOrchard.Showroom.DownloadStatusSection\r\n */\r\n\r\nimport { WarningTwoIcon } from \"@chakra-ui/icons\";\r\nimport {\r\n\tBox,\r\n\tFlex,\r\n\tHeading,\r\n\tTable,\r\n\tTableContainer,\r\n\tTag,\r\n\tTbody,\r\n\tTd,\r\n\tText,\r\n\tTh,\r\n\tThead,\r\n\tTr,\r\n} from \"@chakra-ui/react\";\r\nimport { AOLink } from \"ao/components/Core\";\r\nimport { isAutoDownloaded } from \"ao/components/Showroom/Helper\";\r\nimport { useSiteInfoState } from \"ao/state/siteInfo\";\r\nimport { IShowroomAppDownloadModel } from \"ao/types/showroom\";\r\nimport { FunctionComponent, memo } from \"react\";\r\nimport { AppKeyDownloads } from \"../AppHelperComponents\";\r\n\r\ninterface IProps {\r\n\tappDetails: IShowroomAppDownloadModel;\r\n\theaderColor: string;\r\n\tisShowroom?: boolean;\r\n}\r\n\r\nexport const DownloadStatusSection: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appDetails, headerColor, isShowroom } = props;\r\n\r\n\tconst { siteInfo } = useSiteInfoState((selectors) => selectors.getState(), []);\r\n\r\n\tconst appModel = appDetails.appModel;\r\n\r\n\tconst appId = appModel.id;\r\n\r\n\tconst newestVersion = appDetails.appVersions[appDetails.appVersions.length - 1];\r\n\tconst hasNewerVersion = appId < newestVersion.id;\r\n\r\n\tconst hasNewestVersionDownload =\r\n\t\t(appDetails.prodVersion && appDetails.prodVersion.id === newestVersion.id) ||\r\n\t\t(appDetails.requestedVersion && appDetails.requestedVersion.id === newestVersion.id) ||\r\n\t\t(appDetails.nonProdVersion && appDetails.nonProdVersion.id === newestVersion.id);\r\n\r\n\tconst isLicenseInBoth =\r\n\t\tappDetails.prodVersion &&\r\n\t\tappDetails.nonProdVersion &&\r\n\t\tappDetails.nonProdVersion.id === appDetails.prodVersion.id;\r\n\r\n\tconst hasVersionDownload =\r\n\t\tappDetails.isDownloaded ||\r\n\t\tappDetails.requestedVersion !== null ||\r\n\t\tappDetails.nonProdVersion !== null ||\r\n\t\tappDetails.prodVersion !== null;\r\n\r\n\tconst justify = \"center\";\r\n\tconst fontFamily = isShowroom ? \"Jost !important\" : \"unset\";\r\n\r\n\tconst showroomUrl = isShowroom ? siteInfo.showroomRelativeUrl : siteInfo.showroomUrl;\r\n\tconst vendorServicesUrl = isShowroom ? siteInfo.vendorServicesUrl : \"/\";\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{(appDetails.isDownloaded || hasVersionDownload) && (\r\n\t\t\t\t<Box w=\"100%\">\r\n\t\t\t\t\t{appModel.isEpicOnFhirApp ? (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{appDetails.isDownloaded && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\t\t\t\t\tfontWeight=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\tfontSize=\"1.5rem\"\r\n\t\t\t\t\t\t\t\t\t\tfontFamily={fontFamily}\r\n\t\t\t\t\t\t\t\t\t\ttextAlign={justify}\r\n\t\t\t\t\t\t\t\t\t\tmb=\"10px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor={headerColor}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tDownload Status\r\n\t\t\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t\t\t\t<Flex justify={justify} mb=\"5px\">\r\n\t\t\t\t\t\t\t\t\t\t<AppKeyDownloads\r\n\t\t\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={appDetails.vendorApproved}\r\n\t\t\t\t\t\t\t\t\t\t\tappStatus={appModel.status}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t\t\t\t\t<Text textAlign={justify}>\r\n\t\t\t\t\t\t\t\t\t\t{isAutoDownloaded(appDetails.downloadedBy)\r\n\t\t\t\t\t\t\t\t\t\t\t? `Auto downloaded on ${appDetails.downloadedOn}`\r\n\t\t\t\t\t\t\t\t\t\t\t: `Download requested by ${appDetails.downloadedBy} on ${appDetails.downloadedOn}`}\r\n\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{hasVersionDownload && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<Heading\r\n\t\t\t\t\t\t\t\t\t\tas=\"h3\"\r\n\t\t\t\t\t\t\t\t\t\tfontFamily={fontFamily}\r\n\t\t\t\t\t\t\t\t\t\ttextAlign={{ base: \"center\", lg: \"left\" }}\r\n\t\t\t\t\t\t\t\t\t\tmb=\"10px\"\r\n\t\t\t\t\t\t\t\t\t\tcolor={headerColor}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tVersions\r\n\t\t\t\t\t\t\t\t\t</Heading>\r\n\r\n\t\t\t\t\t\t\t\t\t{hasNewerVersion && (\r\n\t\t\t\t\t\t\t\t\t\t<Text pl=\"14px\" pb=\"10px\">\r\n\t\t\t\t\t\t\t\t\t\t\t<WarningTwoIcon color=\"red.600\" mr=\"3px\" />\r\n\t\t\t\t\t\t\t\t\t\t\tYour organization has requested or downloaded other versions of\r\n\t\t\t\t\t\t\t\t\t\t\tthis product. Only one version of a product can be active at a\r\n\t\t\t\t\t\t\t\t\t\t\ttime in a given Epic environment.\r\n\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t<TableContainer>\r\n\t\t\t\t\t\t\t\t\t\t<Table size=\"sm\">\r\n\t\t\t\t\t\t\t\t\t\t\t<Thead>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Th fontFamily={fontFamily}>Status</Th>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Th fontFamily={fontFamily}>Version</Th>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Th fontFamily={fontFamily}>Link</Th>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Th fontFamily={fontFamily}>Download Requested By</Th>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Th fontFamily={fontFamily}>Download Requested On</Th>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t</Thead>\r\n\t\t\t\t\t\t\t\t\t\t\t<Tbody>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{hasNewerVersion && !hasNewestVersionDownload && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tag\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"showroom\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolorScheme=\"white\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextAlign=\"center\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNewest version\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tag>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{newestVersion.name}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AOLink\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turl={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewestVersion.isInShowroom\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${showroomUrl}listing?appId=${newestVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${vendorServicesUrl}Download?id=${newestVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tClick to see this version\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td fontStyle=\"italic\">(Not picked)</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td fontStyle=\"italic\">(Not picked)</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.prodVersion &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.prodVersion.id !== appId && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AppKeyDownloads\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.prodVersion.vendorApproved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisProdOnly={!isLicenseInBoth}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.prodVersion.name}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AOLink\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turl={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.prodVersion.isInShowroom\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${showroomUrl}listing?appId=${appDetails.prodVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${vendorServicesUrl}Download?id=${appDetails.prodVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tClick to see this version\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.prodVersion.licensedBy}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.prodVersion.licensedOn}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.nonProdVersion &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t!isLicenseInBoth &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.nonProdVersion.id !== appId && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AppKeyDownloads\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.nonProdVersion\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.vendorApproved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.nonProdVersion.name}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AOLink\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turl={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.nonProdVersion.isInShowroom\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${showroomUrl}listing?appId=${appDetails.nonProdVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${vendorServicesUrl}Download?id=${appDetails.nonProdVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tClick to see this version\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.nonProdVersion.licensedBy}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.nonProdVersion.licensedOn}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.requestedVersion &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.requestedVersion.id !== appId && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AppKeyDownloads\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.requestedVersion\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.vendorApproved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.requestedVersion.name}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AOLink\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turl={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.requestedVersion\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.isInShowroom\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${showroomUrl}listing?appId=${appDetails.requestedVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${vendorServicesUrl}Download?id=${appDetails.requestedVersion.id}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tClick to see this version\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AOLink>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.requestedVersion.licensedBy}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.requestedVersion.licensedOn}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{appDetails.isDownloaded && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AppKeyDownloads\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdownloadApprovedStatus={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappDetails.vendorApproved\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appModel.version}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>This is the version shown on this page</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.downloadedBy}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Td>{appDetails.downloadedOn}</Td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t</Tbody>\r\n\t\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2024 Epic Systems Corporation\r\n * @file app screenshot with modal popup and carousel\r\n * @module Epic.AppOrchard.Showroom.ScreenshotViewer\r\n */\r\n\r\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\r\nimport {\r\n\tButton,\r\n\tCenter,\r\n\tImage,\r\n\tModal,\r\n\tModalContent,\r\n\tModalOverlay,\r\n\tSpacer,\r\n\tuseDisclosure,\r\n\tWrap,\r\n\tWrapItem,\r\n} from \"@chakra-ui/react\";\r\nimport { showroomBorder } from \"ao/chakraTheme\";\r\nimport { IShowroomScreenshot } from \"ao/types/showroom\";\r\nimport { FunctionComponent, memo, useCallback, useState } from \"react\";\r\n\r\ninterface IProps {\r\n\tscreenshots: IShowroomScreenshot[];\r\n}\r\n\r\nexport const ScreenshotViewer: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { screenshots } = props;\r\n\r\n\tconst { isOpen, onOpen, onClose } = useDisclosure();\r\n\tconst [screenshotIndex, setScreenshotIndex] = useState<number>(0);\r\n\r\n\tconst selectScreenshot = useCallback(\r\n\t\t(index: number) => () => {\r\n\t\t\tsetScreenshotIndex(index);\r\n\t\t\tonOpen();\r\n\t\t},\r\n\t\t[onOpen],\r\n\t);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{screenshots.length > 0 && (\r\n\t\t\t\t<Center>\r\n\t\t\t\t\t<Wrap spacing=\"30px\" justify=\"center\">\r\n\t\t\t\t\t\t{screenshots.map((x, idx) => (\r\n\t\t\t\t\t\t\t<WrapItem>\r\n\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\tmargin=\"0px\"\r\n\t\t\t\t\t\t\t\t\theight=\"170px\"\r\n\t\t\t\t\t\t\t\t\twidth=\"300px\"\r\n\t\t\t\t\t\t\t\t\tpadding=\"0px\"\r\n\t\t\t\t\t\t\t\t\topacity={1}\r\n\t\t\t\t\t\t\t\t\tposition=\"relative\"\r\n\t\t\t\t\t\t\t\t\tborderRadius=\"10px\"\r\n\t\t\t\t\t\t\t\t\toverflow=\"hidden\"\r\n\t\t\t\t\t\t\t\t\tbackgroundColor=\"white\"\r\n\t\t\t\t\t\t\t\t\tborder={showroomBorder}\r\n\t\t\t\t\t\t\t\t\tboxShadow=\"0px 3px 6px #00000029\"\r\n\t\t\t\t\t\t\t\t\t_hover={{ boxShadow: \"#afafaf 0px 0px 8px 2px\", opacity: 0.7 }}\r\n\t\t\t\t\t\t\t\t\tonClick={selectScreenshot(idx)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\t\t\t\tmaxWidth=\"100%\"\r\n\t\t\t\t\t\t\t\t\t\tmaxHeight=\"100%\"\r\n\t\t\t\t\t\t\t\t\t\tsrc={\"data:image/png;base64,\" + x.imageData}\r\n\t\t\t\t\t\t\t\t\t\talt=\"App Screenshot\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t</WrapItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Wrap>\r\n\t\t\t\t</Center>\r\n\t\t\t)}\r\n\t\t\t<Modal isOpen={isOpen} onClose={onClose} isCentered preserveScrollBarGap>\r\n\t\t\t\t<ModalOverlay />\r\n\r\n\t\t\t\t<ModalContent maxWidth=\"70vw\" maxHeight=\"70vh\">\r\n\t\t\t\t\t<Center width=\"70vw\" height=\"70vh\">\r\n\t\t\t\t\t\t{screenshots.length > 1 && (\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\r\n\t\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\t\tsetScreenshotIndex(\r\n\t\t\t\t\t\t\t\t\t\tscreenshotIndex === 0 ? screenshots.length - 1 : screenshotIndex - 1,\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbgGradient=\"linear(to-r, gray.200, white)\"\r\n\t\t\t\t\t\t\t\t_hover={{\r\n\t\t\t\t\t\t\t\t\tbgGradient: \"linear(to-r, gray.300, white)\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<ChevronLeftIcon fontSize=\"50px\" />\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t<Spacer />\r\n\t\t\t\t\t\t<Image\r\n\t\t\t\t\t\t\tsrc={\"data:image/png;base64,\" + screenshots[screenshotIndex]?.imageData}\r\n\t\t\t\t\t\t\tmaxWidth=\"60vw\"\r\n\t\t\t\t\t\t\tmaxHeight=\"70vh\"\r\n\t\t\t\t\t\t\tbackgroundColor=\"white\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<Spacer />\r\n\t\t\t\t\t\t{screenshots.length > 1 && (\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\r\n\t\t\t\t\t\t\t\tonClick={() => setScreenshotIndex((screenshotIndex + 1) % screenshots.length)}\r\n\t\t\t\t\t\t\t\tbgGradient=\"linear(to-r, white, gray.200)\"\r\n\t\t\t\t\t\t\t\t_hover={{\r\n\t\t\t\t\t\t\t\t\tbgGradient: \"linear(to-r, white, gray.300)\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<ChevronRightIcon fontSize=\"50px\" />\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Center>\r\n\t\t\t\t</ModalContent>\r\n\t\t\t</Modal>\r\n\t\t</>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file button to trigger an email to the vendor\r\n * @module Epic.AppOrchard.Showroom.ShowroomContactButton\r\n */\r\n\r\nimport { ButtonProps } from \"@chakra-ui/react\";\r\nimport { ContactButton } from \"ao/components/Core\";\r\nimport { contactAuthor } from \"ao/data\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\nimport { AiOutlineMail } from \"react-icons/ai\";\r\n\r\ninterface IProps {\r\n\tappId: number;\r\n\tappName: string;\r\n\torgName: string;\r\n\ticonColor: string;\r\n\tbuttonProps?: ButtonProps;\r\n}\r\n\r\nexport const ShowroomContactButton: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appId, appName, orgName, iconColor, buttonProps } = props;\r\n\r\n\tconst computedButtonProps: ButtonProps = {\r\n\t\tfontWeight: buttonProps?.fontWeight || \"normal\",\r\n\t\tpx: buttonProps?.px || buttonProps?.paddingX || 2,\r\n\t\tvariant: buttonProps?.variant || \"card\",\r\n\t\ticonSpacing: buttonProps?.iconSpacing || \"3px\",\r\n\t\ttitle: buttonProps?.title || `Let ${orgName} know you're interested in ${appName}`,\r\n\t\t...buttonProps,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ContactButton\r\n\t\t\t{...computedButtonProps}\r\n\t\t\tcontactApi={contactAuthor}\r\n\t\t\tleftIcon={<AiOutlineMail color={iconColor} />}\r\n\t\t\tapiArgs={[appId]}\r\n\t\t\tbuttonCaption=\"Contact\"\r\n\t\t\tbuttonNotContactedHelptext=\"Send an email to the vendor indicating your interest and inviting them to start a conversation with you.\"\r\n\t\t\tsuccessMessage=\"An email was sent to the vendor.\"\r\n\t\t\terrorMessage=\"Error contacting the vendor. Please try again later or contact your Epic representative if this continues to happen.\"\r\n\t\t\tconfirmModalTitle={`Contact ${orgName ?? appName}`}\r\n\t\t\tconfirmModalPrompt={`This will send an email to ${\r\n\t\t\t\torgName ?? appName\r\n\t\t\t} indicating your interest and inviting them to start a conversation with you. Are you sure you want to continue?`}\r\n\t\t/>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2023-2025 Epic Systems Corporation\r\n * @file app thumbnail or thumbnail placeholder\r\n * @module Epic.AppOrchard.AppListing.Thumbnail\r\n */\r\n\r\nimport { ExternalLinkIcon } from \"@chakra-ui/icons\";\r\nimport { Box, BoxProps, Image, ImageProps } from \"@chakra-ui/react\";\r\nimport { config } from \"ao/appConfig\";\r\nimport { getBaseUrl, isNullOrEmpty } from \"ao/utils/helpers\";\r\nimport React, { FunctionComponent, memo, useMemo } from \"react\";\r\n\r\ninterface IProps {\r\n\tsrc?: string;\r\n\tlistingId: number;\r\n\tshowBackground?: boolean;\r\n}\r\n\r\ntype Props = IProps & ImageProps;\r\n\r\nexport const Thumbnail: FunctionComponent<Props> = memo((props) => {\r\n\tconst { src, listingId, showBackground, ...rest } = props;\r\n\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\tconst thumbnailSrc = !isNullOrEmpty(src)\r\n\t\t? `data:image/png;base64,${src}`\r\n\t\t: `${baseUrl}Content/images/app_placeholder.png`;\r\n\tconst thumbnailColor = !isNullOrEmpty(src)\r\n\t\t? \"none\"\r\n\t\t: `appThumbnailBackground.${listingId % config.NumAppThumbnailColors}`;\r\n\r\n\treturn (\r\n\t\t<Image\r\n\t\t\tsrc={thumbnailSrc}\r\n\t\t\tbackgroundColor={showBackground ? rest.backgroundColor || thumbnailColor : \"none\"}\r\n\t\t\t{...rest}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\ninterface IThumbnailStageWatermarkProps extends BoxProps {\r\n\ticonPath: string;\r\n}\r\n\r\nexport const ThumbnailStageWatermark: React.FC<IThumbnailStageWatermarkProps> = (\r\n\tprops: IThumbnailStageWatermarkProps,\r\n) => {\r\n\tconst baseUrl = useMemo(() => getBaseUrl(), []);\r\n\r\n\treturn (\r\n\t\t<ThumbnailWatermark {...props}>\r\n\t\t\t<Image\r\n\t\t\t\tsrc={`${baseUrl}Content/images/${props.iconPath}`}\r\n\t\t\t\tfallback={<></>}\r\n\t\t\t\tmaxH=\"26px\"\r\n\t\t\t\tmaxW=\"26px\"\r\n\t\t\t\th=\"26px\"\r\n\t\t\t\tw=\"26px\"\r\n\t\t\t\tp=\"3px\"\r\n\t\t\t\tpos=\"absolute\"\r\n\t\t\t\tright=\"3px\"\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tfilter:\r\n\t\t\t\t\t\t\"drop-shadow(1px 0px 0px white) drop-shadow(-1px 0px 0px white) drop-shadow(0px 1px 0px white) drop-shadow(0px -1px 0px white)\",\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t</ThumbnailWatermark>\r\n\t);\r\n};\r\n\r\ninterface IThumbnailExternalWatermarkProps {\r\n\ttitle?: string;\r\n}\r\n\r\nexport const ThumbnailExternalWatermark: React.FC<IThumbnailExternalWatermarkProps> = (\r\n\tprops: IThumbnailExternalWatermarkProps,\r\n) => {\r\n\treturn (\r\n\t\t<ThumbnailWatermark title={props.title}>\r\n\t\t\t<ExternalLinkIcon maxH=\"26px\" maxW=\"26px\" h=\"26px\" w=\"26px\" p=\"3px\" />\r\n\t\t</ThumbnailWatermark>\r\n\t);\r\n};\r\n\r\nexport const ThumbnailWatermark: React.FC<BoxProps> = (props: BoxProps) => {\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tpos={props?.pos ?? props.position ?? \"absolute\"}\r\n\t\t\ttop={props?.top ?? \"5px\"}\r\n\t\t\tright={props?.right ?? \"5px\"}\r\n\t\t\tborder={props?.border ?? \"0\"}\r\n\t\t\tborderBottom={props?.borderBottom ?? \"0\"}\r\n\t\t\tborderLeft={props?.borderLeft ?? \"0\"}\r\n\t\t\tbackgroundColor={props?.backgroundColor ?? \"white\"}\r\n\t\t\tbackgroundImage={props?.backgroundImage ?? \"none\"}\r\n\t\t\tbackgroundSize={props?.backgroundSize ?? \"contain\"}\r\n\t\t\tbackgroundRepeat={props?.backgroundRepeat ?? \"no-repeat\"}\r\n\t\t\tbackgroundPosition={props?.backgroundPosition ?? \"top right\"}\r\n\t\t\tborderRadius={props?.borderRadius ?? \"50%\"}\r\n\t\t\tpadding={props?.padding ?? \"2px 2px 5px 5px\"}\r\n\t\t\theight={props?.h ?? props.height ?? \"auto\"}\r\n\t\t\twidth={props?.w ?? props.width ?? \"auto\"}\r\n\t\t\tmaxH={props?.maxH ?? props?.maxHeight ?? \"100%\"}\r\n\t\t\tmaxW={props?.maxW ?? props.maxWidth ?? \"84px\"}\r\n\t\t\ttitle={props.title}\r\n\t\t>\r\n\t\t\t{props.children}\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nThumbnail.defaultProps = { display: \"inline\", borderRadius: \"10px\" };\r\n","/**\r\n * @copyright Copyright 2023-2023 Epic Systems Corporation\r\n * @file button for linking to an app's external website\r\n * @module Epic.AppOrchard.Showroom.WebsiteButton\r\n */\r\n\r\nimport { Button, ButtonProps, Link } from \"@chakra-ui/react\";\r\nimport React, { FunctionComponent, memo } from \"react\";\r\nimport { BiWorld } from \"react-icons/bi\";\r\n\r\ninterface IProps {\r\n\tappUrl: string;\r\n\torgName: string;\r\n\ticonColor: string;\r\n\tbuttonProps?: ButtonProps;\r\n}\r\n\r\nexport const WebsiteButton: FunctionComponent<IProps> = memo((props) => {\r\n\tconst { appUrl, orgName, iconColor, buttonProps } = props;\r\n\r\n\tconst computedButtonProps: ButtonProps = {\r\n\t\th: buttonProps?.h || buttonProps?.height || \"8\",\r\n\t\tborderRadius: buttonProps?.borderRadius || \"50px\",\r\n\t\tfontSize: buttonProps?.fontSize || \"0.9rem\",\r\n\t\tfontWeight: buttonProps?.fontWeight || \"normal\",\r\n\t\tpx: buttonProps?.px || buttonProps?.paddingX || 2,\r\n\t\tvariant: buttonProps?.variant || \"card\",\r\n\t\tas: buttonProps?.as || Link,\r\n\t\ticonSpacing: buttonProps?.iconSpacing || \"3px\",\r\n\t\ttitle: buttonProps?.title || `Navigate to ${orgName}'s external page`,\r\n\t\t...buttonProps,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Button {...computedButtonProps} href={appUrl} isExternal leftIcon={<BiWorld color={iconColor} />}>\r\n\t\t\tWebsite\r\n\t\t</Button>\r\n\t);\r\n});\r\n","/**\r\n * @copyright Copyright 2022-2024 Epic Systems Corporation\r\n * @file Type declarations for QuestionnaireVersion\r\n * @module Epic.AppOrchard.Types.QuestionnaireVersion\r\n */\r\n\r\nimport { QuestionnaireType } from \"ao/data\";\r\nimport { ISelectionOption, QuestionnaireQuestionType } from \".\";\r\n\r\nexport interface IParsedQuestionnaireVersion {\r\n\tid: number | null;\r\n\tname: string;\r\n\tquestionnaireType: QuestionnaireType;\r\n\tstartDate: Date;\r\n\teditableInEpicOnFhirEndDate: Date | null;\r\n\tcategories: IParsedCategory[];\r\n\thooks: IHookForVersion[];\r\n\tisInUse: boolean;\r\n}\r\n\r\nexport interface IParsedCategory {\r\n\tid: number;\r\n\ttitle: string;\r\n\tquestions: IQuestionModel[];\r\n}\r\n\r\nexport interface IHookForVersion {\r\n\tid: number;\r\n\ttype: QuestionnaireHookType;\r\n\tcondition: string;\r\n\temailTemplateId: number | null;\r\n\tcatalogToUseId: number | null;\r\n\tactionError: string;\r\n\tconditionError: string;\r\n\tisExpanded: boolean;\r\n}\r\n\r\ninterface IRawQuestionnaireVersion {\r\n\tname: string;\r\n\tquestionnaireType: QuestionnaireType;\r\n\tstartDate: Date;\r\n\teditableInEpicOnFhirEndDate: Date | null;\r\n\tquestions: IQuestionForVersion[];\r\n\thooks: IHookForVersion[];\r\n\tisInUse: boolean;\r\n}\r\n\r\nexport type ISimpleQuestionnaireVersion = IRawQuestionnaireVersion & {\r\n\tid: number | null;\r\n};\r\n\r\nexport type IQuestionnaireVersionModel = IRawQuestionnaireVersion & {\r\n\tid: number;\r\n};\r\n\r\nexport interface IQuestionCategoryModel {\r\n\tid: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface IQuestionForVersion {\r\n\tid: number;\r\n\tdisplayCondition: string;\r\n\tindent: boolean;\r\n}\r\n\r\nexport interface IQuestionModel {\r\n\tid: number;\r\n\tquestionText: string;\r\n\tquestionType: QuestionnaireQuestionType;\r\n\tcategoryID: number;\r\n\tdocumentID: number;\r\n\tisPublished: boolean;\r\n\tusedByDuq: boolean;\r\n\tdisplayCondition: string;\r\n\tindent: boolean;\r\n\toptions: IOptionModel[];\r\n}\r\n\r\nexport interface IOptionModel {\r\n\tid: number;\r\n\toptionText: string;\r\n}\r\n\r\nexport interface IConditionModel {\r\n\tindex: number;\r\n\tquestion: IQuestionModel;\r\n\toptionId: number;\r\n\tisNegated: boolean;\r\n\toperator: ConditionOperator;\r\n\twarning: string;\r\n\tfocus: boolean;\r\n}\r\n\r\nexport interface IQuestionnaireVersionManagementModel {\r\n\tquestionCategories: IQuestionCategoryModel[];\r\n\tquestions: IQuestionModel[];\r\n\tquestionnaireVersions: IQuestionnaireVersionModel[];\r\n\temailTemplates: ISelectionOption[];\r\n\tcatalogOptions: ISelectionOption[];\r\n}\r\n\r\nexport interface IUpsertQuestionnaireVersionResponse {\r\n\tid: number;\r\n\tmessage: string;\r\n}\r\n\r\nexport enum ConditionOperator {\r\n\tNULL = 0,\r\n\tAND = 1,\r\n\tOR = 2,\r\n}\r\n\r\nexport enum QuestionnaireHookType {\r\n\tUnknown = -1,\r\n\tSendEmail = 0,\r\n\tSetCatalog = 1,\r\n}\r\n\r\nexport enum DUQVisibility {\r\n\tUnset = 0,\r\n\tShowDataUse = 1,\r\n\tDoNotShow = 2,\r\n}\r\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const ChevronLeftIcon = createIcon({\n  d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\",\n  displayName: \"ChevronLeftIcon\",\n})\n","import { createIcon } from \"@chakra-ui/icon\"\n\nexport const ChevronRightIcon = createIcon({\n  d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\",\n  displayName: \"ChevronRightIcon\",\n})\n"],"names":["async","getDetails","appId","api","get","concat","toString","findAppWithClientId","clientId","setDuqVisibility","duqVisibility","post","AppLinksSection","memo","props","appDetails","userSecurity","isShowroom","appModel","siteInfo","useSiteInfoState","selectors","getState","isShowroomPublic","isLocalhost","isAdminSite","baseUrl","useMemo","vendorServicesUrl","getBaseUrl","_jsxs","VStack","spacing","align","textAlign","children","acceptedParticipantTermsId","canPurchase","AOLink","alignSelf","url","customerAgreementName","isExternal","customerAgreementDisplayName","implementationGuideUrl","_jsx","hasTCDocuments","_Fragment","vendorApproved","DownloadApprovedStatus","Approved","NonProdOnly","Flex","justify","DownloadBuildLink","id","baseUrlOverride","showIcon","DownloadBuildIcon","boxSize","mr","mt","ShowroomAboutThisAppSection","_appModel$incomingApi","_appModel$kitApiGroup","_appModel$subspaceEve","_appModel$outgoingFun","buttonBackgroundColor","buttonBorderColor","textColor","setAppDetails","toast","useToast","isEpicCustomerOrIsEpicUser","isEpicCustomer","isEpicUser","isAppFromOwnOrg","userOrganizationId","organizationId","duqLink","showroomRelativeUrl","QuestionnaireType","DataUse","arqLink","AppReadiness","duqLinkContent","Box","Text","fontWeight","fontSize","color","showroomText","fontStyle","width","height","m","alignContent","arqLinkContent","hasIntegration","incomingApis","length","kitApiGroups","subspaceEvents","outgoingFunctionalities","contentSchema","canViewQuestionnaires","hasQuestionnaires","showDUQInListing","showARQInListing","isOpen","isDuqVisibilityConfirmationOpen","onOpen","onOpenDuqVisibilityConfirmation","onClose","onCloseDuqVisibilityConfirmation","useDisclosure","updateDuqVisibility","useAsync","executeImmediately","displayName","onSuccess","onFailure","title","description","status","duration","config","ToastDuration","isClosable","Heading","as","w","Wrap","pt","WrapItem","LinkButton","backgroundColor","border","boxShadow","h","p","Button","variant","colorScheme","undefined","isCustomerDUQAttestationEnabled","isDownloaded","Declined","Overwritten","duqVisibilityOverride","DUQVisibility","Unset","Switch","isChecked","ShowDataUse","onChange","DoNotShow","ConfirmationModal","isCentered","message","mb","acceptCaption","onCancel","onAccept","newVisibility","getConsumerTypeName","consumerType","ApiCollapse","label","childCount","map","ApiLink","noOfLines","wordBreak","name","x","ActionButtonsSection","headerColor","reload","isMobile","useBreakpointValue","base","lg","isOwnApp","showFacilitatedAgreementButton","isAppAgreementFacilitated","isRelatedOrgApp","getsAppLicensesFromOrganization_Name","showParentDownloadWarning","isDownloadedByParent","isDownloadAvailable","showDownloadLink","isAutoDownloadedClient","requiresFutureEpicVersion","canOrgDownload","previousAPILicenseExists","isUSCDIDownloadSet","appCanBeDownloadedWithoutApiLicense","hasUnableToDownloadDisclaimer","showDownloadSection","WarningTwoIcon","marginRight","Grid","templateAreas","gap","FacilitatedAppAgreementButton","buttonsAs","ShowroomButton","ShowroomRequestDownloadButton","NormalButton","leftIcon","rest","AppBannerSection","my","orgHasPurchaser","StatusAlert","canManageUsers","SiteName","ApiLicenseTermsBanner","apiLicenseAgreementId","apiLicenseTermsId","successHandler","isSyncDisabled","AppInsightMetricsSection","listing","intendedPurposes","SimpleGrid","columns","sm","GridItem","display","join","intendedUsers","AppResourcesSection","_stage$textColor","stage","resourceHeaderText","resourceLinks","Accordion","allowToggle","borderRadius","marginTop","defaultIndex","AccordionItem","fontFamily","AccordionButton","alignItems","flex","Image","src","iconPath","fallback","maxH","maxW","whiteSpace","ml","groupName","showroomYears","AccordionIcon","AccordionPanel","dangerouslySetInnerHTML","__html","paddingBottom","resource","LinkIcon","QuestionOutlineIcon","createIcon","path","React","stroke","strokeWidth","strokeLinecap","fill","d","strokeMiterlimit","cx","cy","r","CheckCircleIcon","UsageStatsSection","_appDetails$appModel$","badgeText","otherLiveCount","liveOrgCount","liveOrgList","otherInstallCount","installingOrgCount","installingOrgList","availableDate","liveOn","listingDate","Stack","marginLeft","direction","StatBadge","pluralIfNeeded","icon","AOTooltip","helptext","boxProps","verticalAlign","QuestionIcon","modelTitle","modalContent","maxHeight","overflowY","orgName","DownloadIcon","Date","toLocaleDateString","CalendarIcon","paddingRight","onClick","paddingX","preserveScrollBarGap","returnFocusOnClose","actionButtonProps","size","padding","AppHeaderDetails","_appDetails$notImplem","_userSecurity$userOrg","onlyThumbnail","subLogoElements","isCustomerOrEpicUser","nominationCountTitle","showSubLogoElements","showNominationCountTag","interestedCount","isComingSoon","showNotImplementingNowTag","notImplementingNowDetails","showNotNowUserName","userName","showUsageStats","isVendorUser","isRemoteAccessing","userDBOrganizationId","canRequest","canNominate","interestedOn","canUpdateTokens","usesOAuth2","showroomBaseUrl","EditableInstallStatus","orgId","downloadApprovedStatus","installStatus","newStatus","EditButton","isForGallery","ShowroomUpdateTokensButton","pr","TimeIcon","instant","NotImplementingNowInfoBody","latestAppVersionId","notNowDecision","NotImplementingNowButtonWrapper","buttonProps","BiHeart","style","NominateButton","agreementId","DownloadStatusSection","newestVersion","appVersions","hasNewerVersion","hasNewestVersionDownload","prodVersion","requestedVersion","nonProdVersion","isLicenseInBoth","hasVersionDownload","showroomUrl","isEpicOnFhirApp","AppKeyDownloads","appStatus","isAutoDownloaded","downloadedBy","downloadedOn","pl","pb","TableContainer","Table","Thead","Tr","Th","Tbody","Td","Tag","isInShowroom","isProdOnly","licensedBy","licensedOn","version","ScreenshotViewer","_screenshots$screensh","screenshots","screenshotIndex","setScreenshotIndex","useState","selectScreenshot","useCallback","index","Center","idx","margin","opacity","position","overflow","showroomBorder","_hover","maxWidth","imageData","alt","Modal","ModalOverlay","ModalContent","bgGradient","ChevronLeftIcon","Spacer","ChevronRightIcon","ShowroomContactButton","appName","iconColor","computedButtonProps","px","iconSpacing","ContactButton","contactApi","contactAuthor","AiOutlineMail","apiArgs","buttonCaption","buttonNotContactedHelptext","successMessage","errorMessage","confirmModalTitle","confirmModalPrompt","Thumbnail","listingId","showBackground","thumbnailSrc","isNullOrEmpty","thumbnailColor","NumAppThumbnailColors","ThumbnailStageWatermark","ThumbnailWatermark","pos","right","filter","ThumbnailExternalWatermark","ExternalLinkIcon","_ref","_props$pos","_props$top","_props$right","_props$border","_props$borderBottom","_props$borderLeft","_props$backgroundColo","_props$backgroundImag","_props$backgroundSize","_props$backgroundRepe","_props$backgroundPosi","_props$borderRadius","_props$padding","_ref2","_props$h","_ref3","_props$w","_ref4","_props$maxH","_ref5","_props$maxW","top","borderBottom","borderLeft","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","defaultProps","WebsiteButton","appUrl","Link","href","BiWorld","ConditionOperator","QuestionnaireHookType"],"sourceRoot":""}