{"version":3,"file":"js/icer-ui-a7d0521cc19fa7dbb5d8.js","mappings":"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","sources":["webpack://icer/./app/javascript/client/hooks/useAuthentication.js","webpack://icer/./app/javascript/client/google-analytics/index.js","webpack://icer/./app/javascript/client/redux/epics/index.js","webpack://icer/./app/javascript/client/redux/reducers/user-profile.js","webpack://icer/./app/javascript/client/config/index.js","webpack://icer/./app/javascript/client/utils/date.js","webpack://icer/./app/javascript/client/selectors/helpers.js","webpack://icer/./app/javascript/client/selectors/search.js","webpack://icer/./app/javascript/client/components/I18nProvider.jsx","webpack://icer/./app/javascript/client/component-styles/index.jsx","webpack://icer/./app/javascript/client/components/CustomTooltip.jsx","webpack://icer/./app/javascript/client/components/CustomPopover.jsx","webpack://icer/./app/javascript/client/utils/formatters.jsx","webpack://icer/./app/javascript/client/selectors/index.js","webpack://icer/./app/javascript/client/redux/reducers/analyses.js","webpack://icer/./app/javascript/client/redux/reducers/index.js","webpack://icer/./app/javascript/client/components/StateProvider.jsx","webpack://icer/./app/javascript/client/redux/index.js","webpack://icer/./app/javascript/client/config/styles.js","webpack://icer/./app/javascript/client/utils/url.jsx","webpack://icer/./app/javascript/client/redux/connect-api.js","webpack://icer/./app/javascript/client/components/Search.jsx","webpack://icer/./app/javascript/client/components/UserProfile.jsx","webpack://icer/./app/javascript/client/components/modals/OutboundLink.jsx","webpack://icer/./app/javascript/client/components/modals/Modal.jsx","webpack://icer/./app/javascript/client/constants/proptypes.js","webpack://icer/./app/javascript/client/components/PlatformChips.jsx","webpack://icer/./app/javascript/client/components/details/VideoPlayer.jsx","webpack://icer/./app/javascript/client/hooks/useThrottleScroll.js","webpack://icer/./app/javascript/client/components/ToolTabs.jsx","webpack://icer/./app/javascript/client/utils/readCsrfToken.js","webpack://icer/./app/javascript/client/components/landing/config.jsx","webpack://icer/./app/javascript/client/components/LoginButton.jsx","webpack://icer/./app/javascript/client/components/menus/BaseMenu.jsx","webpack://icer/./app/javascript/client/components/icons/VideoSettingsRoundedIcon.jsx","webpack://icer/./app/javascript/client/components/menus/ResourcesMenu.jsx","webpack://icer/./app/javascript/client/components/icons/TipsAndUpdatesRoundedIcon.jsx","webpack://icer/./app/javascript/client/components/icons/MoreTimeRoundedIcon.jsx","webpack://icer/./app/javascript/client/components/menus/UpdatesMenu.jsx","webpack://icer/./app/javascript/client/components/SkipToContentLink.tsx","webpack://icer/./app/javascript/client/components/Header.jsx","webpack://icer/./app/javascript/client/components/modals/GlossaryContent.jsx","webpack://icer/./app/javascript/client/components/modals/PrivacyContent.jsx","webpack://icer/./app/javascript/client/components/modals/TermsContent.jsx","webpack://icer/./app/javascript/client/components/Footer.jsx","webpack://icer/./app/javascript/client/components/landing/LandingAlerts.jsx","webpack://icer/./app/javascript/client/components/ToolCard.jsx","webpack://icer/./app/javascript/client/components/ProgressIndicator.jsx","webpack://icer/./app/javascript/client/components/WrappedProgressIndicator.jsx","webpack://icer/./app/javascript/client/components/ToolSelector.jsx","webpack://icer/./app/javascript/client/constants/index.js","webpack://icer/./app/javascript/client/hooks/usePageView.js","webpack://icer/./app/javascript/client/components/AppPages/index.jsx","webpack://icer/./app/javascript/client/components/menus/ButtonGroup.jsx","webpack://icer/./app/javascript/client/components/NewChip.jsx","webpack://icer/./app/javascript/client/components/menus/NavButton.jsx","webpack://icer/./app/javascript/client/hooks/useUserHasAccess.js","webpack://icer/./app/javascript/client/components/AppPages/AppLanding/AppLandingNav.jsx","webpack://icer/./app/javascript/client/components/AppPages/AppLanding/ComingSoonBanner.jsx","webpack://icer/./app/javascript/client/components/BaseCard.jsx","webpack://icer/./app/javascript/client/components/icons/MedicationRoundedIcon.jsx","webpack://icer/./app/javascript/client/components/DrugList.jsx","webpack://icer/./app/javascript/client/components/VideoDialog.jsx","webpack://icer/./app/javascript/client/components/AppPages/ComingSoon/ComingSoonCardSection.jsx","webpack://icer/./app/javascript/client/components/AppPages/ComingSoon/ComingSoonCard.jsx","webpack://icer/./app/javascript/client/components/UnpublishedChip.jsx","webpack://icer/./app/javascript/client/components/ItemBadges.jsx","webpack://icer/./app/javascript/client/components/VideoCard.jsx","webpack://icer/./app/javascript/client/components/VideoGrid.jsx","webpack://icer/./app/javascript/client/components/DocumentCard.jsx","webpack://icer/./app/javascript/client/components/DocumentGrid.jsx","webpack://icer/./app/javascript/client/components/typography/ClippedParagraph.jsx","webpack://icer/./app/javascript/client/components/CurrentVideo.jsx","webpack://icer/./app/javascript/client/components/recent_updates/Attachments.jsx","webpack://icer/./app/javascript/client/components/recent_updates/HTMLContentBlock.jsx","webpack://icer/./app/javascript/client/components/recent_updates/RecentUpdatesListItem.jsx","webpack://icer/./app/javascript/client/components/recent_updates/RecentUpdates.jsx","webpack://icer/./app/javascript/client/components/ResourceWrapper.jsx","webpack://icer/./app/javascript/client/components/AppPages/AppLanding/AppLandingContent.jsx","webpack://icer/./app/javascript/client/components/AppPages/AppLanding/index.jsx","webpack://icer/./app/javascript/client/components/AppPages/AppPageContentWrapper.jsx","webpack://icer/./app/javascript/client/components/AccessFlag.jsx","webpack://icer/./app/javascript/client/components/AppPages/ComingSoon/index.jsx","webpack://icer/./app/javascript/client/components/landing/LandingTitle.jsx","webpack://icer/./app/javascript/client/components/AppPages/DocumentsPage.jsx","webpack://icer/./app/javascript/client/components/modals/styles.jsx","webpack://icer/./app/javascript/client/components/modals/ModalWithLauncher.jsx","webpack://icer/./app/javascript/client/components/landing/LandingIllustration.jsx","webpack://icer/./app/javascript/client/components/landing/Survey.jsx","webpack://icer/./app/javascript/client/components/landing/LandingIntro.jsx","webpack://icer/./app/javascript/client/components/landing/LandingTools.jsx","webpack://icer/./app/javascript/client/components/landing/LandingLearnMore.jsx","webpack://icer/./app/javascript/client/components/modals/ModalOpened.jsx","webpack://icer/./app/javascript/client/components/landing/Landing.jsx","webpack://icer/./app/javascript/client/components/AppPages/Updates.jsx","webpack://icer/./app/javascript/client/components/AppPages/VideosPage.jsx","webpack://icer/./app/javascript/client/components/AppPages/Webinars.jsx","webpack://icer/./app/javascript/client/components/NoAccess.jsx","webpack://icer/./app/javascript/client/components/AddToCompareCountIndicator.jsx","webpack://icer/./app/javascript/client/components/AppBreadcrumbs.jsx","webpack://icer/./app/javascript/client/components/TabBar.jsx","webpack://icer/./app/javascript/client/components/menus/GridFilter.jsx","webpack://icer/./app/javascript/client/selectors/userProfile.js","webpack://icer/./app/javascript/client/components/menus/CsvDownload.jsx","webpack://icer/./app/javascript/client/components/chart/ComparisonChartLegend.jsx","webpack://icer/./app/javascript/client/utils/export.js","webpack://icer/./app/javascript/client/components/chart/ComparisonChartContent.jsx","webpack://icer/./app/javascript/client/components/chart/ComparisonChartModal.jsx","webpack://icer/./app/javascript/client/components/menus/ComparisonChart.jsx","webpack://icer/./app/javascript/client/components/table/AnalysesTableHeaderCell.jsx","webpack://icer/./app/javascript/client/components/table/AnalysesTableHeaderRow.jsx","webpack://icer/./app/javascript/client/components/modals/EbmRatingContent.jsx","webpack://icer/./app/javascript/client/components/table/AnalysesTableDataCell.jsx","webpack://icer/./app/javascript/client/components/table/RowSelector.jsx","webpack://icer/./app/javascript/client/components/table/PriceInput.jsx","webpack://icer/./app/javascript/client/components/table/PriceComparison.jsx","webpack://icer/./app/javascript/client/components/table/AnalysesTableDataSubRow.jsx","webpack://icer/./app/javascript/client/utils/dom-helpers.js","webpack://icer/./app/javascript/client/components/table/AnalysesTableDataRow.jsx","webpack://icer/./app/javascript/client/components/table/AnalysesTableStatusRow.jsx","webpack://icer/./app/javascript/client/components/AnalysesTable.jsx","webpack://icer/./app/javascript/client/components/ReportSnapshotCard.jsx","webpack://icer/./app/javascript/client/components/AppPages/ReportSnapshot/ReportSnapshotHeader.jsx","webpack://icer/./app/javascript/client/components/AppPages/ReportSnapshot/ReportSnapshotHeading.jsx","webpack://icer/./app/javascript/client/components/icons/PdfIcon.jsx","webpack://icer/./app/javascript/client/components/icons/PowerpointIcon.jsx","webpack://icer/./app/javascript/client/components/icons/WordIcon.jsx","webpack://icer/./app/javascript/client/components/AppPages/ReportSnapshot/ReportSnapshotDocuments.jsx","webpack://icer/./app/javascript/client/components/AppPages/ReportSnapshot/ReportSnapshotBody.jsx","webpack://icer/./app/javascript/client/components/DataAccessAlert.tsx","webpack://icer/./app/javascript/client/components/AppPages/ReportSnapshot/index.jsx","webpack://icer/./app/javascript/client/components/ReportSnapshots.jsx","webpack://icer/./app/javascript/client/components/LimitedAccessModal.jsx","webpack://icer/./app/javascript/client/components/TabNavigator.jsx","webpack://icer/./app/javascript/client/components/Demo.jsx","webpack://icer/./app/javascript/client/components/LoadingIndicator.jsx","webpack://icer/./app/javascript/client/components/forms/AppPasswordField.jsx","webpack://icer/./app/javascript/client/components/userHooks.js","webpack://icer/./app/javascript/client/components/AppPages/ChangePassword.jsx","webpack://icer/./app/javascript/client/components/forms/AppTextField.jsx","webpack://icer/./app/javascript/client/components/AppPages/ChangeAccountInfo.jsx","webpack://icer/./app/javascript/client/hooks/useAccessibilityAudit.js","webpack://icer/./app/javascript/client/components/AccessibilityChecker.jsx","webpack://icer/./app/javascript/client/components/StateInitializer.jsx","webpack://icer/./app/javascript/client/components/App.jsx","webpack://icer/./app/javascript/client/components/ErrorDialog.jsx","webpack://icer/./app/javascript/client/utils/logToSentry.js","webpack://icer/./app/javascript/client/components/ErrorHandler.jsx","webpack://icer/./app/javascript/client/themes/index.js","webpack://icer/./app/javascript/packs/icer-ui.jsx"],"sourcesContent":["const useAuthentication = () => {\n const root = document.getElementById(\"icer-spa\");\n const {\n isSignedIn=\"false\",\n isDeviseView=\"false\",\n applicationLoginUrl=\"/users/auth/cognito\",\n applicationLoginMethod=\"post\"\n } = root?.dataset || {};\n return {\n isSignedIn: isSignedIn === \"true\",\n isDeviseView: isDeviseView === \"true\",\n applicationLoginUrl,\n applicationLoginMethod,\n root\n };\n}\n\nexport default useAuthentication;\n","import useAuthentication from \"../hooks/useAuthentication\";\n\nconst EC_ROUTES = [\"drugs\", \"compare-your-own-pricing\", \"icer-pricing\", \"report-snapshots\"];\nconst RESOURCE_ROUTES = [\"webinars\", \"videos\", \"documents\", \"report-snapshots\"];\nconst UPDATES_ROUTES = [\"updates\", \"comming-soon\"];\nconst ACCOUNT_ROUTES = [\"account\", \"password\"];\n\nconst checkIfIsInRoutes = (routes, url) => {\n if (!url) return false;\n return routes.some((route) => url.includes(route));\n};\nclass Analytics {\n constructor() {\n this.userCanSavePrice = false;\n }\n\n postEvent = (data) => {\n if (process.env.RAILS_ENV === \"test\") return\n const { isSignedIn = false } = useAuthentication()\n if (!isSignedIn) return\n // API Tracking\n var apiData = JSON.parse(JSON.stringify(data));\n apiData.eventType = data.eventType || \"event\";\n let category = data.eventCategory;\n const url = window.location.pathname || data.url;\n if (data.eventType === \"pageview\" && data.url) {\n if (checkIfIsInRoutes(EC_ROUTES, url)) {\n category = \"Evidence Compendium\";\n } else if (checkIfIsInRoutes(RESOURCE_ROUTES, url)) {\n category = \"Resources\";\n } else if (checkIfIsInRoutes(UPDATES_ROUTES, url)) {\n category = \"Updates\";\n } else if (checkIfIsInRoutes(ACCOUNT_ROUTES, url)) {\n category = \"Profile\";\n } else if (url.includes(\"tools\")) {\n category = \"Logged in landing page (tools)\";\n } else {\n category = \"Landing or other page\";\n }\n }\n apiData.url = url || window.location.pathname;\n apiData.eventCategory = category;\n apiData.createdAt = new Date();\n\n var csrf = document.querySelector('meta[name=\"csrf-token\"]').content;\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\", \"/api/user_events\");\n xhr.setRequestHeader(\"X-CSRF-Token\", csrf);\n xhr.send(JSON.stringify(apiData));\n };\n\n #trackEvent = (data, eventType = \"click\") => {\n if (process.env.RAILS_ENV === \"test\") return\n this.postEvent(data);\n if (typeof gtag === \"undefined\" || gtag === undefined || !gtag) {\n console.warn(\"Google analytics script is not loaded\");\n return;\n }\n const { eventCategory, eventAction, eventLabel } = data;\n gtag(\"event\", eventType, {\n category: eventCategory,\n action: eventAction,\n label: eventLabel\n });\n };\n\n trackCustomEvent = (\n { eventCategory, eventAction, eventLabel = \"\", ...otherDimensions },\n eventType = \"click\"\n ) => {\n if (eventCategory && eventAction) {\n this.#trackEvent(\n {\n eventCategory,\n eventAction,\n eventLabel,\n ...otherDimensions\n },\n eventType\n );\n }\n };\n\n trackPageView = ({ title, location }) => {\n this.postEvent({\n url: window.location.href,\n eventType: \"pageview\",\n eventCategory: \"view\",\n eventLabel: title\n });\n };\n\n trackExternalLinkClick = ({ url, location }) => {\n this.#trackEvent({\n eventCategory: \"External link click\",\n eventAction: location,\n eventLabel: url\n });\n };\n\n trackBreadcrumbClick = ({ whereTo, currentPage }) => {\n this.trackCustomEvent({\n eventCategory: \"Breadcrumbs\",\n eventAction: `To: ${whereTo}`,\n eventLabel: `From: ${currentPage}`\n });\n };\n\n trackTooltipOpen = ({ label, content }) => {\n this.trackCustomEvent(\n {\n eventCategory: \"Tooltips\",\n eventAction: typeof label === \"string\" ? label : \"Label unknown\",\n eventLabel:\n typeof content === \"string\" ? content : \"Content unknown - it's probably an HTML element\"\n },\n \"mouseover\"\n );\n };\n\n trackHeaderNav = ({ action, label }) => {\n let _action = action;\n switch (action) {\n case \"item\":\n _action = \"Menu Item Click\";\n break;\n case \"menu\":\n _action = \"Menu Item Click\";\n break;\n case \"tab\":\n _action = \"Tab Click\";\n break;\n }\n this.#trackEvent({\n eventCategory: \"Header navigation\",\n eventAction: _action,\n eventLabel: label\n });\n };\n\n trackTrialRequest = (location) => {\n this.#trackEvent({\n eventCategory: \"Trial\",\n eventAction: \"Request\",\n eventLabel: `Location: ${location}`\n });\n };\n\n trackVideoThumbnailClick = (videoLabel) => {\n this.#trackEvent({\n eventCategory: \"Videos\",\n eventAction: \"Click thumbnail\",\n eventLabel: videoLabel\n });\n };\n\n trackDownload = ({ fileName, location = \"\" }) => {\n this.#trackEvent({\n eventCategory: \"Downloads\",\n eventAction: fileName,\n eventLabel: location\n });\n };\n\n trackLoginClick = (location = \"\") => {\n this.#trackEvent({\n eventCategory: \"Login\",\n eventAction: \"Click\",\n eventLabel: location\n });\n };\n\n trackCompare = (id, added) => {\n this.#trackEvent({\n eventCategory: \"add-to-compare\",\n eventAction: added ? \"add\" : \"remove\",\n eventLabel: id\n });\n };\n\n trackPrice = (id, price) => {\n // price is currently a String, in Redux state\n if (this.userCanSavePrice) {\n this.#trackEvent({\n eventCategory: \"user-proposed-price\",\n eventAction: \"change\",\n eventLabel: id\n // eventValue: parseInt(price, 10) // eventValue must be a positive integer\n });\n }\n };\n\n trackFilter = (fieldType, isActive) => {\n this.#trackEvent({\n eventCategory: \"filter\",\n eventAction: isActive ? \"add\" : \"remove\",\n eventLabel: fieldType\n });\n };\n\n trackSort = (fieldKey, sortDirection) => {\n this.#trackEvent({\n eventCategory: \"sort\",\n eventAction: sortDirection,\n eventLabel: fieldKey\n });\n };\n\n // different order for arguments?\n trackChart = (chartAction, actionDetails) => {\n this.#trackEvent({\n eventCategory: \"comparison-chart\",\n eventAction: chartAction, // open/close, vs changing menus?\n eventLabel: actionDetails\n // Send row ids, applied filters, and user proposed price?\n // fieldsObject: chartContext\n });\n };\n\n trackCSV = () => {\n this.#trackEvent({\n eventCategory: \"csv\",\n eventAction: \"download\"\n // Send row ids, applied filters, and user proposed price?\n // fieldsObject: csvContext\n });\n };\n\n trackDocument = (documentName) => {\n this.#trackEvent({\n eventCategory: \"document\",\n eventAction: \"click\",\n eventLabel: documentName\n });\n };\n\n trackSearch = (searchTerm) => {\n if (searchTerm) {\n this.#trackEvent(\n {\n eventCategory: \"Search\",\n eventAction: \"By keyword\",\n eventLabel: searchTerm\n },\n \"search\"\n );\n }\n };\n\n trackTabNavigation = (tabKey) => {\n this.#trackEvent({\n eventCategory: \"tab-navigation\",\n eventAction: \"change\",\n eventLabel: tabKey\n });\n };\n\n trackAuthentication = (isLogin) => {\n this.#trackEvent(\n {\n eventCategory: \"authentication\",\n eventAction: isLogin ? \"login\" : \"logout\"\n },\n \"authentication\"\n );\n };\n\n trackPageNav = (tabName, clickOrScroll) => {\n this.#trackEvent({\n eventCategory: \"landing page nav\",\n eventAction: tabName,\n eventLabel: clickOrScroll\n });\n };\n}\n\n// single instance, as long as the class is not exported:\nexport default new Analytics();\n\n/* eslint-disable max-len */\n/**\n GA4 events with `gtag`\n https://developers.google.com/analytics/devguides/collection/ga4/events?client_type=gtag\n */\n","import { from, of } from \"rxjs\";\nimport { createEpicMiddleware, combineEpics, ofType } from \"redux-observable\";\n\nimport { catchError, map, switchMap, concatMap, mergeMap, debounceTime } from \"rxjs/operators\";\n\nimport { ajax } from \"rxjs/ajax\";\n\nimport analytics from \"../../google-analytics\";\n\nconst endpoints = {\n ANALYSES: \"/api/analyses\",\n ASSET_GROUPS: \"/api/asset_groups\", // AKA Report Snapshot\n MEDIA_RESOURCES: \"/api/media_resources\", // Webinar, Document, etc\n COMING_SOON: \"/api/media_resources/coming_soon\",\n RECENT_UPDATES: \"/api/recent_updates\",\n USER_ANALYSES: \"/api/user_analyses\",\n USER_PROFILE: \"/api/users/me\"\n};\n\nexport const actionTypes = {\n INITIALIZE_AFTER_LOGIN: \"INITIALIZE_AFTER_LOGIN\",\n FETCH_ANALYSES: \"FETCH_ANALYSES\",\n FETCH_ANALYSES_SUCCESS: \"FETCH_ANALYSES_SUCCESS\",\n FETCH_ANALYSES_FAILURE: \"FETCH_ANALYSES_FAILURE\",\n FETCH_USER_PROFILE: \"FETCH_USER_PROFILE\",\n FETCH_USER_PROFILE_SUCCESS: \"FETCH_USER_PROFILE_SUCCESS\",\n FETCH_USER_PROFILE_FAILURE: \"FETCH_USER_PROFILE_FAILURE\",\n FETCH_MEDIA_RESOURCES: \"FETCH_MEDIA_RESOURCES\",\n FETCH_MEDIA_RESOURCES_SUCCESS: \"FETCH_MEDIA_RESOURCES_SUCCESS\",\n FETCH_MEDIA_RESOURCES_FAILURE: \"FETCH_MEDIA_RESOURCES_FAILURE\",\n FETCH_RECENT_UPDATES: \"FETCH_RECENT_UPDATES\",\n FETCH_RECENT_UPDATES_SUCCESS: \"FETCH_RECENT_UPDATES_SUCCESS\",\n FETCH_RECENT_UPDATES_FAILURE: \"FETCH_RECENT_UPDATES_FAILURE\",\n FETCH_ASSET_GROUPS: \"FETCH_ASSET_GROUPS\",\n FETCH_ASSET_GROUPS_SUCCESS: \"FETCH_ASSET_GROUPS_SUCCESS\",\n FETCH_ASSET_GROUPS_FAILURE: \"FETCH_ASSET_GROUPS_FAILURE\",\n SET_GRID_FILTER: \"SET_GRID_FILTER\",\n SET_SORT: \"SET_SORT\",\n APPLY_SORT: \"APPLY_SORT\",\n GET_USER_INPUTS: \"GET_USER_INPUTS\",\n GET_USER_INPUTS_SUCCESS: \"GET_USER_INPUTS_SUCCESS\",\n GET_USER_INPUTS_FAILURE: \"GET_USER_INPUTS_FAILURE\",\n SET_USER_INPUT: \"SET_USER_INPUT\",\n SET_USER_INPUT_SUCCESS: \"SET_USER_INPUT_SUCCESS\",\n SET_USER_INPUT_FAILURE: \"SET_USER_INPUT_FAILURE\",\n FETCH_COMING_SOON: \"FETCH_COMING_SOON\",\n FETCH_COMING_SOON_SUCCESS: \"FETCH_COMING_SOON_SUCCESS\",\n FETCH_COMING_SOON_FAILURE: \"FETCH_COMING_SOON_FAILURE\"\n};\n\nconst initializeAfterLoginEpic = (action$) =>\n action$.pipe(\n ofType(actionTypes.INITIALIZE_AFTER_LOGIN),\n // Dispatch the following three actions:\n mergeMap(() =>\n of(\n {\n type: actionTypes.GET_USER_INPUTS\n },\n {\n type: actionTypes.FETCH_USER_PROFILE\n },\n {\n type: actionTypes.FETCH_MEDIA_RESOURCES\n },\n {\n type: actionTypes.FETCH_RECENT_UPDATES\n },\n {\n type: actionTypes.FETCH_ANALYSES\n },\n {\n type: actionTypes.FETCH_ASSET_GROUPS\n },\n {\n type: actionTypes.FETCH_COMING_SOON\n }\n )\n )\n );\n\nconst analysesEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_ANALYSES),\n // debounceTime(200), // rxjs/operators, e.g.: for auto-suggest\n // delay(5000), // rxjs/operators to delay 5 seconds, e.g.: to implement/test a loader\n // switchMap: pending subscriptions are cancelled (use only last emitted value)\n switchMap(() =>\n from(api.fetchAnalyses()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_ANALYSES_SUCCESS,\n payload: result\n })),\n // Uncaught errors that reach action$.pipe() will terminate it, and\n // it will no longer listen for new actions:\n catchError((error) =>\n of({\n type: actionTypes.FETCH_ANALYSES_FAILURE,\n // error could be structured further, but redux state needs to consist of serializable POJOs:\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst userProfileEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_USER_PROFILE),\n switchMap(() =>\n from(api.fetchUserProfile()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_USER_PROFILE_SUCCESS,\n payload: result\n })),\n catchError((error) =>\n of({\n type: actionTypes.FETCH_USER_PROFILE_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst mediaResourcesEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_MEDIA_RESOURCES),\n switchMap(() =>\n from(api.fetchMediaResources()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_MEDIA_RESOURCES_SUCCESS,\n payload: result\n })),\n catchError((error) =>\n of({\n type: actionTypes.FETCH_MEDIA_RESOURCES_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst recentUpdatesEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_RECENT_UPDATES),\n switchMap(() =>\n from(api.fetchRecentUpdates()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_RECENT_UPDATES_SUCCESS,\n payload: result\n })),\n catchError((error) =>\n of({\n type: actionTypes.FETCH_RECENT_UPDATES_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst assetGroupsEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_ASSET_GROUPS),\n switchMap(() =>\n from(api.fetchAssetGroups()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_ASSET_GROUPS_SUCCESS,\n payload: result\n })),\n catchError((error) =>\n of({\n type: actionTypes.FETCH_ASSET_GROUPS_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst comingSoonEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.FETCH_COMING_SOON),\n switchMap(() =>\n from(api.fetchComingSoon()).pipe(\n map((result) => ({\n type: actionTypes.FETCH_COMING_SOON_SUCCESS,\n payload: result\n })),\n catchError((error) =>\n of({\n type: actionTypes.FETCH_COMING_SOON_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst applySortEpic = (action$, state$) =>\n action$.pipe(\n ofType(\n actionTypes.FETCH_ANALYSES,\n actionTypes.FETCH_ANALYSES_SUCCESS,\n actionTypes.FETCH_ANALYSES_FAILURE,\n actionTypes.SET_SORT\n ),\n // brief, async delay after updating column header state, before (more expensive) sorting:\n debounceTime(5),\n map(() => {\n const { analysesResponse, sort } = state$.value;\n return {\n type: actionTypes.APPLY_SORT,\n payload: { analysesResponse, sort }\n };\n })\n );\n\nconst getUserInputsEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.GET_USER_INPUTS),\n switchMap(() =>\n from(api.fetchUserInputs()).pipe(\n map((result) => {\n const payload = result.response.data.reduce(\n (acc, { attributes }) => ({\n ...acc,\n [attributes.analysis_id]: attributes\n }),\n {}\n );\n return {\n type: actionTypes.GET_USER_INPUTS_SUCCESS,\n payload\n };\n }),\n catchError((error) =>\n of({\n type: actionTypes.GET_USER_INPUTS_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nconst setUserInputEpic = (action$, state$, { api }) =>\n action$.pipe(\n ofType(actionTypes.SET_USER_INPUT),\n // concatMap: do not subscribe to the next Observable until the current one completes.\n // eslint-disable-next-line max-len\n concatMap(({ payload: { slug, key, value } }) =>\n from(api.updateUserInput(slug, key, value)).pipe(\n map((result) => {\n const { analysis_id: id, add_to_compare, user_proposed_price } = result.response;\n const payload = {\n [id]: {\n add_to_compare,\n user_proposed_price\n }\n };\n return {\n type: actionTypes.SET_USER_INPUT_SUCCESS,\n payload\n };\n }),\n catchError((error) =>\n of({\n type: actionTypes.SET_USER_INPUT_FAILURE,\n payload: String(error),\n error: true\n })\n )\n )\n )\n );\n\nclass ECApi {\n constructor() {\n this.userCanSavePrice = false;\n }\n\n subscribeToUserProfile = (obs$) =>\n obs$.subscribe(\n (subscription) => {\n const { data = null } = subscription;\n let userCanSavePrice = false;\n if (data && data.attributes) {\n const { users_can_save_price = false } = data.attributes.organization;\n userCanSavePrice = users_can_save_price;\n }\n this.userCanSavePrice = userCanSavePrice;\n analytics.userCanSavePrice = userCanSavePrice;\n },\n (error) => console.error(error)\n );\n\n get requestOptions() {\n // eslint-disable-line class-methods-use-this\n const csrfMetaElement = document.getElementsByName(\"csrf-token\")[0]; // does not exist in rspec/test environment\n return {\n // TODO: refresh token, for long sessions?\n \"X-CSRF-Token\": csrfMetaElement && csrfMetaElement.content,\n \"Content-Type\": \"application/json\"\n };\n }\n\n fetchAnalyses = () => ajax.getJSON(endpoints.ANALYSES);\n\n fetchUserProfile = () => {\n const obs$ = ajax.getJSON(endpoints.USER_PROFILE);\n this.subscribeToUserProfile(obs$);\n return obs$;\n };\n\n fetchMediaResources = () => {\n const obs$ = ajax.getJSON(endpoints.MEDIA_RESOURCES);\n return obs$;\n };\n\n fetchRecentUpdates = () => {\n const obs$ = ajax.getJSON(endpoints.RECENT_UPDATES);\n return obs$;\n };\n\n fetchAssetGroups = () => {\n const obs$ = ajax.getJSON(endpoints.ASSET_GROUPS);\n return obs$;\n };\n\n fetchComingSoon = () => {\n const obs$ = ajax.getJSON(endpoints.COMING_SOON);\n return obs$;\n };\n\n fetchUserInputs = () => ajax.get(endpoints.USER_ANALYSES, {}, this.requestOptions);\n\n updateUserInput = (analysisId, fieldKey, value) => {\n const requestBody = {\n data: {\n type: \"user_analyses\",\n attributes: {\n analysis_id: analysisId,\n [fieldKey]: value\n }\n }\n };\n if (fieldKey === \"user_proposed_price\" && !this.userCanSavePrice) {\n // rx pipeables can be either an Observable, Promise, Array, or Iterable:\n return Promise.resolve();\n }\n return ajax.patch(endpoints.USER_ANALYSES, requestBody, this.requestOptions);\n };\n}\n\nexport const rootEpic = combineEpics(\n initializeAfterLoginEpic,\n analysesEpic,\n userProfileEpic,\n mediaResourcesEpic,\n recentUpdatesEpic,\n assetGroupsEpic,\n comingSoonEpic,\n applySortEpic,\n getUserInputsEpic,\n setUserInputEpic\n);\n\nexport default createEpicMiddleware({\n dependencies: { api: new ECApi() }\n});\n","import { actionTypes } from '../epics';\n\nconst preloadedUserProfile = {\n loading: true,\n error: null,\n data: {}\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const userProfileReducer = (state = preloadedUserProfile, action) => {\n switch (action.type) {\n case actionTypes.FETCH_USER_PROFILE:\n return {\n loading: true,\n error: null,\n data: state.data\n };\n case actionTypes.FETCH_USER_PROFILE_FAILURE:\n return {\n loading: false,\n error: action.payload,\n data: state.data\n };\n case actionTypes.FETCH_USER_PROFILE_SUCCESS: {\n const { data: { attributes } } = action.payload;\n return {\n loading: false,\n error: null,\n data: attributes\n };\n }\n default:\n return state;\n }\n};\n","import React from \"react\";\nimport ECLogo from \"../../images/ec.svg\";\nimport IMLogo from \"../../images/im.svg\";\nimport { isAfter } from \"date-fns\";\n\n// Data (eg analyses performed) before this data is are considered legacy\n// Important when making the determination to suppress data based on subscription status\nexport const LEGACY_DATA_DATE = new Date(\"12/31/20\");\nexport const isDataSuppressibleForTrial = (date) => {\n let _date = date;\n if (typeof date === \"string\") {\n _date = new Date(date);\n } else if (!(date instanceof Date)) {\n return true;\n }\n return isAfter(_date, LEGACY_DATA_DATE);\n};\n\n// Number of days an item is considered new\nexport const newItemPeriod = 31;\n\nexport const surveyLinks = {\n trial: \"https://www.surveymonkey.com/r/MNJQW5K\",\n watchVideo: \"https://www.surveymonkey.com/r/V7XQW2F\"\n};\n\nexport const platformConfig = {\n welcomeMessage: `\n ICER Analytics™ is a new cloud-based platform that facilitates the use of ICER’s\n evidence reports and underlying analyses by decision-makers as they develop medical policy,\n establish drug pricing, and negotiate drug reimbursement.\n `,\n tools: [\n {\n id: \"ec\",\n name: \"Evidence Compendium\",\n description: \"Streamline the use of ICER analyses so you can make the best decisions\",\n details: [\n \"Enter your own pricing to compare to ICER price benchmarks\",\n \"View curated report material and videos from ICER appraisal committee meetings\"\n ],\n to: \"/drugs\",\n image: ECLogo\n },\n {\n id: \"im\",\n name: \"Interactive Modeler\",\n description: \"Share your assumptions based on new evidence using ICER's models\",\n details: [\n \"Analyze key aspects of individual economic models produced for ICER Evidence Reports\",\n \"Customize parameter inputs to the model based on your prices, data, or assumptions\"\n ],\n href: window.env.IM_URL,\n image: IMLogo\n }\n ]\n};\n\nexport const tooltipCopy = {\n wac: \"WAC as of date of review or drug approval\",\n dateOfReview: \"Note: ICER’s research prior to 2017 is not included in the EC\",\n map: (classes = {}, data = {}) => (\n <>\n

\n Manufacturer's Alternative Price: this price reflects the manufacturer's alternative inputs\n to the ICER model.
ICER does not vet these alternative inputs.\n

\n {data.url ? (\n

\n \n Click here\n {\" \"}\n to see a summary of all changes made to the model.\n

\n ) : null}\n \n )\n};\n\nexport const costDescriptions = [\n \"Cost Saving\", // ratioField == -1\n \"Less Costly, Less Effective\", // ratioField == -2\n \"More Costly, Less Effective\" // ratioField == -3\n]\n\nexport const tabKeys = [\"drugs\", \"compare-your-own-pricing\", \"icer-pricing\", \"report-snapshots\"];\n\n// use i18n for tab labels?\nexport const tabConfig = {\n drugs: \"Drug List\",\n \"compare-your-own-pricing\": \"Compare Your Own Pricing\",\n \"icer-pricing\": \"ICER Pricing\",\n \"report-snapshots\": \"Report Snapshots\"\n};\n\n// used to generate \"compare\" keys, configs, and values; determines left-to-right order in table:\nexport const icerBenchmarkPriceKeys = [\n \"health_system_vbpb_50k_per_qaly\",\n \"health_system_vbpb_100k_per_qaly\",\n \"health_system_vbpb_150k_per_qaly\",\n \"health_system_vbpb_200k_per_qaly\",\n \"health_system_vbpb_50k_per_evlyg\",\n \"health_system_vbpb_100k_per_evlyg\",\n \"health_system_vbpb_150k_per_evlyg\",\n \"health_system_vbpb_200k_per_evlyg\",\n \"societal_vbpb_50k_per_qaly\",\n \"societal_vbpb_100k_per_qaly\",\n \"societal_vbpb_150k_per_qaly\",\n \"societal_vbpb_200k_per_qaly\",\n \"societal_vbpb_50k_per_evlyg\",\n \"societal_vbpb_100k_per_evlyg\",\n \"societal_vbpb_150k_per_evlyg\",\n \"societal_vbpb_200k_per_evlyg\"\n];\n\n// Determines if there is a manufacturersPrice to show for the row.\nexport const manufacturersPricePriceKeys = [\n \"manufacturer_health_system_vbpb_50k_per_qaly\",\n \"manufacturer_health_system_vbpb_100k_per_qaly\",\n \"manufacturer_health_system_vbpb_150k_per_qaly\",\n \"manufacturer_health_system_vbpb_200k_per_qaly\",\n \"manufacturer_health_system_vbpb_50k_per_evlyg\",\n \"manufacturer_health_system_vbpb_100k_per_evlyg\",\n \"manufacturer_health_system_vbpb_150k_per_evlyg\",\n \"manufacturer_health_system_vbpb_200k_per_evlyg\",\n \"manufacturer_societal_vbpb_50k_per_qaly\",\n \"manufacturer_societal_vbpb_100k_per_qaly\",\n \"manufacturer_societal_vbpb_150k_per_qaly\",\n \"manufacturer_societal_vbpb_200k_per_qaly\",\n \"manufacturer_societal_vbpb_50k_per_evlyg\",\n \"manufacturer_societal_vbpb_100k_per_evlyg\",\n \"manufacturer_societal_vbpb_150k_per_evlyg\",\n \"manufacturer_societal_vbpb_200k_per_evlyg\"\n];\n\n// also determines top-down order of derived \"compare\" values, in each cell:\nexport const icerComparisonKeys = [\n \"user_proposed_price\",\n \"manufacturer_price\",\n // \"net_price\", // NOTE: Removed from comparison table\n \"wac\"\n];\n\nconst NBSP = \"\\xa0\";\n\nexport const baseFieldConfig = {\n // filters: array — Filters in Customize Table filter panel\n // fixedValue: boolean\n // label: string — table header text\n // tabFilters: array — eg [0,1,0] if 1, field shows on corresponding tab based on the index\n // type: string|number — type used in sorting to avoid numbers being sorted as strings\n // suppressible: boolean\n // - NOTE: If you update suppressible, also update Analysis.attr_suppressible_for_trial?\n generic_name: {\n label: \"Generic Name\",\n tabFilters: [1, 0, 1],\n type: \"string\",\n suppressible: false\n },\n add_to_compare: {\n label: \"Add to Compare\",\n tabFilters: [1, 0, 1],\n type: \"boolean\",\n suppressible: false\n },\n remove_from_compare: {\n label: \"Remove from Compare\",\n tabFilters: [0, 1, 0],\n type: \"string\",\n suppressible: false\n },\n trade_name: {\n label: \"Trade Name\",\n tabFilters: [1, 1, 1],\n type: \"string\",\n suppressible: false\n },\n specific_condition_tags: {\n label: \"Specific Condition Search Tags\",\n tabFilters: [0, 0, 0],\n type: \"string\",\n suppressible: false\n },\n drug_tags: {\n label: \"Drug Search Tags\",\n tabFilters: [0, 0, 0],\n type: \"string\",\n suppressible: true\n },\n method_of_administration: {\n label: `Method${NBSP}of Administration`,\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n specific_condition: {\n label: \"Condition: Specific\",\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: false\n },\n general_condition: {\n label: \"Condition: General\",\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n date_of_review: {\n label: `Date${NBSP}of Review`,\n tabFilters: [1, 1, 1],\n type: \"date\",\n suppressible: false\n },\n manufacturer: {\n label: \"Manufacturer\",\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n population_and_comparator: {\n label: \"Population and Comparator\",\n tabFilters: [1, 1, 1],\n type: \"string\",\n suppressible: true\n },\n access_and_affordability_alert: {\n label: \"Access and Affordability Alert\",\n tabFilters: [1, 0, 0],\n type: \"boolean\",\n suppressible: true\n },\n orphan_statuses: {\n label: \"Breakthrough/Orphan/Ultra-Rare\",\n tabFilters: [1, 0, 0],\n type: \"enum\",\n suppressible: true\n },\n appraisal_committee: {\n label: \"Appraisal Committee\",\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n type_of_review: {\n label: `Type${NBSP}of Review`,\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n ebm_rating: {\n label: \"EBM Rating\",\n tabFilters: [1, 0, 0],\n type: \"string\",\n suppressible: true\n },\n annual_dosage_assumptions: {\n label: \"Annual Dosage Assumptions\",\n tabFilters: [1, 1, 0],\n type: \"string\",\n suppressible: true\n },\n user_proposed_price: {\n filters: [\"user_proposed_price\"],\n label: \"\",\n tabFilters: [0, 1, 0],\n type: \"usd\",\n suppressible: true\n },\n net_price: {\n filters: [],\n label: `Est. Net Price (As${NBSP}of${NBSP}Date${NBSP}of${NBSP}Review)`,\n tabFilters: [0, 0, 1],\n type: \"usd\",\n suppressible: true\n },\n manufacturer_price: {\n filters: [\"manufacturer_price\"],\n label: \"\",\n tabFilters: [0, 1, 0],\n type: \"usd\",\n suppressible: true\n },\n wac_price_placeholder: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"\\u00a0\", // nbsp\n tabFilters: [1, 1, 0],\n type: \"string\",\n suppressible: true\n },\n wac: {\n filters: [\"wac\"],\n label: \"\",\n tabFilters: [0, 1, 0],\n type: \"usd\",\n suppressible: true\n },\n icer_vbpb_price_label: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"ICER Price\",\n tabFilters: [0, 1, 0],\n type: \"string\",\n suppressible: false\n },\n user_proposed_price_label: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"Your Price\",\n tabFilters: [0, 1, 0],\n type: \"string\",\n suppressible: false\n },\n net_price_label: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"Est. Net Price\",\n tabFilters: [0, 0, 0],\n type: \"string\",\n suppressible: false\n },\n manufacturer_price_label: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"Manufacturer Alt. Price\",\n tabFilters: [0, 1, 0],\n type: \"string\",\n suppressible: false\n },\n wac_price_label: {\n filters: [], // always present\n label: \"\",\n fixedValue: \"WAC\",\n tabFilters: [0, 1, 0],\n type: \"string\",\n suppressible: false\n },\n health_system_cost_ratio_qaly: {\n label: `Health${NBSP}System Cost‑Effectiveness ($/QALY)`, // non-breaking hyphens: \\u2011\n tabFilters: [0, 0, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_cost_ratio_evlyg: {\n label: `Health${NBSP}System Cost‑Effectiveness ($/evLYG)`,\n tabFilters: [0, 0, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_cost_ratio_qaly: {\n label: `Modified${NBSP}Societal Cost‑Effectiveness ($/QALY)`,\n tabFilters: [0, 0, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_cost_ratio_evlyg: {\n label: `Modified${NBSP}Societal Cost‑Effectiveness ($/evLYG)`,\n tabFilters: [0, 0, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_50k_per_qaly: {\n // V\n filters: [\"health_system\", \"50k\", \"qaly\"],\n label: \"50K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_100k_per_qaly: {\n // W\n filters: [\"health_system\", \"100k\", \"qaly\"],\n label: \"100K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_150k_per_qaly: {\n // X\n filters: [\"health_system\", \"150k\", \"qaly\"],\n label: \"150K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_200k_per_qaly: {\n // Y\n filters: [\"health_system\", \"200k\", \"qaly\"],\n label: \"200K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_50k_per_evlyg: {\n // Z\n filters: [\"health_system\", \"50k\", \"evlyg\"],\n label: \"50K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_100k_per_evlyg: {\n // AA\n filters: [\"health_system\", \"100k\", \"evlyg\"],\n label: \"100K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_150k_per_evlyg: {\n // AB\n filters: [\"health_system\", \"150k\", \"evlyg\"],\n label: \"150K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n health_system_vbpb_200k_per_evlyg: {\n // AC\n filters: [\"health_system\", \"200k\", \"evlyg\"],\n label: \"200K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_50k_per_qaly: {\n // AD\n filters: [\"societal\", \"50k\", \"qaly\"],\n label: \"50K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_100k_per_qaly: {\n // AE\n filters: [\"societal\", \"100k\", \"qaly\"],\n label: \"100K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_150k_per_qaly: {\n // AF\n filters: [\"societal\", \"150k\", \"qaly\"],\n label: \"150K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_200k_per_qaly: {\n // AG\n filters: [\"societal\", \"200k\", \"qaly\"],\n label: \"200K/QALY\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_50k_per_evlyg: {\n // AH\n filters: [\"societal\", \"50k\", \"evlyg\"],\n label: \"50K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_100k_per_evlyg: {\n // AI\n filters: [\"societal\", \"100k\", \"evlyg\"],\n label: \"100K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_150k_per_evlyg: {\n // AJ\n filters: [\"societal\", \"150k\", \"evlyg\"],\n label: \"150K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n societal_vbpb_200k_per_evlyg: {\n // AK\n filters: [\"societal\", \"200k\", \"evlyg\"],\n label: \"200K/evLYG\",\n tabFilters: [0, 1, 1],\n type: \"usd\",\n suppressible: true\n },\n shimming_placeholder: {\n filters: [], // always present?\n label: \"\",\n fixedValue: \"\\u00a0\", // nbsp\n tabFilters: [1, 1, 1],\n type: \"string\",\n suppressible: true\n }\n};\n\nconst generateVbpbLayoutConfig = (benchmarkPriceKey) => ({\n label: baseFieldConfig[benchmarkPriceKey].label,\n keys: icerComparisonKeys.reduce(\n (accumulatedKeysInCell, comparisonKey) =>\n accumulatedKeysInCell.concat(`${comparisonKey}_vs_${benchmarkPriceKey}`),\n [benchmarkPriceKey]\n )\n});\n\nexport const nestedColumnGroups = [\n // This Array specifies the order of columns:\n {\n label: \"\",\n // no spanning super-header: each of the following key will render a in 1st tr of thead:\n keys: [\n \"add_to_compare\",\n \"remove_from_compare\",\n \"trade_name\",\n \"generic_name\",\n \"specific_condition\",\n \"date_of_review\",\n \"population_and_comparator\",\n \"net_price\",\n \"general_condition\",\n \"method_of_administration\",\n \"manufacturer\",\n \"access_and_affordability_alert\",\n \"orphan_statuses\",\n \"appraisal_committee\",\n \"type_of_review\",\n \"ebm_rating\",\n \"annual_dosage_assumptions\"\n ]\n },\n {\n label: \"Comparison Prices\",\n keys: [\n {\n // the following keys render as data subrows, within tbody:\n keys: [\n \"icer_vbpb_price_label\", // data subrow 1 th\n \"user_proposed_price_label\", // data subrow 2 th\n \"manufacturer_price_label\", // data subrow 3 th\n // \"net_price_label\", // data subrow X th NOTE: Removed from comparison table\n \"wac_price_label\" // data subrow 4 th\n ]\n },\n {\n // the following keys render as data subrows, within tbody:\n keys: [\n null, // for row: ICER vbpb prices // data subrow 1 th (empty)\n \"user_proposed_price\", // data subrow 2 th\n \"manufacturer_price\", // data subrow 3 th\n // \"net_price\", // Q // data subrow X th NOTE: Removed from comparison table\n \"wac\" // P // data subrow 4 th\n ]\n }\n ]\n },\n {\n label: \"\",\n // no spanning super-header: each of the following key will render a in 1st tr of thead:\n keys: [\n \"health_system_cost_ratio_qaly\", // R\n \"health_system_cost_ratio_evlyg\", // S\n \"societal_cost_ratio_qaly\", // T\n \"societal_cost_ratio_evlyg\" // U\n ]\n },\n {\n label: \"Health System Perspective\",\n // spanning super-header exists: each of the following key will render a in the 2nd tr of thead:\n keys: icerBenchmarkPriceKeys\n .filter((k) => k.includes(\"health_system\"))\n .map(generateVbpbLayoutConfig)\n },\n {\n label: \"Modified Societal Perspective\",\n // spanning super-header exists: each of the following key will render a in the 2nd tr of thead:\n keys: icerBenchmarkPriceKeys.filter((k) => k.includes(\"societal\")).map(generateVbpbLayoutConfig)\n }\n].map((group) => {\n // convert keys to always be Arrays:\n // eslint-disable-next-line no-param-reassign\n group.keys = group.keys.map((keys) => (typeof keys === \"string\" ? new Array(keys) : keys));\n return group;\n});\n\n// FIELD_KEY: TYPE\nexport const SORTABLE_COLUMNS = {\n date_of_review: \"string\",\n general_condition: \"string\",\n generic_name: \"string\",\n health_system_cost_ratio_evlyg: \"number\",\n health_system_cost_ratio_qaly: \"number\",\n manufacturer: \"string\",\n access_and_affordability_alert: \"boolean\",\n method_of_administration: \"string\",\n net_price: \"number\",\n orphan_statuses: \"string\",\n societal_cost_ratio_evlyg: \"number\",\n societal_cost_ratio_qaly: \"number\",\n specific_condition: \"string\",\n trade_name: \"string\"\n};\n\nexport const costRatioFields = [\n \"health_system_cost_ratio_qaly\",\n \"health_system_cost_ratio_evlyg\",\n \"societal_cost_ratio_qaly\",\n \"societal_cost_ratio_evlyg\"\n];\n\nexport const SECONDARY_SORT_FIELDS = [\"trade_name\", \"population_and_comparator\"];\n\nexport const SEARCHABLE_FIELDS = [\n { name: \"trade_name\", weight: 2 },\n { name: \"generic_name\", weight: 2 },\n { name: \"specific_condition\", weight: 1 },\n { name: \"general_condition\", weight: 1 },\n \"manufacturer\",\n // \"orphan_statuses\", Removed when searching with fuse.js\n \"drug_tags\",\n \"specific_condition_tags\"\n];\n\nexport const SELECTED_ROW_STORAGE_KEY = \"add_to_compare\";\n\n// make sure these values stay aligned with (currently provisional) columnKeys:\nexport const stickyRowHeadingKeys = [\"add_to_compare\", \"remove_from_compare\", \"trade_name\"];\n\nexport const fieldFilterConfig = [\n [\n \"Display the Following Prices: \",\n {\n key: \"user_proposed_price\", // both entry \"user_proposed_price\" field, and \"user_proposed_price_vs_ ...\" fields\n label: \"Your Price\"\n },\n {\n key: \"manufacturer_price\",\n label: \"Manufacturer’s Alternative Price\"\n },\n {\n key: \"wac\",\n label: \"WAC\"\n }\n ],\n [\n \"Perspective: \",\n {\n key: \"health_system\",\n label: \"Health System\"\n },\n {\n key: \"societal\",\n label: \"Modified Societal\"\n }\n ],\n [\n \"Measures: \",\n {\n key: \"evlyg\",\n label: \"per evLYG\"\n },\n {\n key: \"qaly\",\n label: \"per QALY\"\n }\n ],\n [\n \"Pricing: \",\n {\n key: \"50k\",\n label: \"50K\"\n },\n {\n key: \"100k\",\n label: \"100K\"\n },\n {\n key: \"150k\",\n label: \"150K\"\n },\n {\n key: \"200k\",\n label: \"200K\"\n }\n ]\n];\n\nexport const fieldFilterKeys = fieldFilterConfig.reduce(\n (acc, config) => acc.concat(config.slice(1).map(({ key }) => key)),\n []\n); // eslint-disable-line max-len\n\n// eslint-disable-next-line max-len\nconst generateComparisonFieldConfig = () =>\n icerBenchmarkPriceKeys.reduce((accumulatedFieldConfigs, benchmarkPriceKey) => {\n icerComparisonKeys.forEach((comparisonKey) => {\n const fieldName = `${comparisonKey}_vs_${benchmarkPriceKey}`;\n const baseConfig = baseFieldConfig[benchmarkPriceKey];\n const baseFilter = baseConfig.filters.slice();\n const filters = baseFilter.concat(comparisonKey);\n\n // const isQaly = benchmarkPriceKey.includes(\"qaly\") ? 1 : 0;\n // const isEvlyg = benchmarkPriceKey.includes(\"evlyg\") ? 1 : 0;\n\n accumulatedFieldConfigs[fieldName] = {\n // eslint-disable-line no-param-reassign\n filters,\n label: baseFieldConfig[benchmarkPriceKey].label,\n tabFilters: [0, 1, 0],\n benchmarkKey: benchmarkPriceKey,\n comparisonKey,\n type: \"percent\",\n suppressible: true\n };\n });\n return accumulatedFieldConfigs;\n }, {});\n\nconst comparisonFieldConfig = generateComparisonFieldConfig();\n\nexport const fieldConfig = { ...baseFieldConfig, ...comparisonFieldConfig };\n\n// allFieldKeys also used by ESLint:\nexport const allFieldKeys = Object.keys(fieldConfig);\n\nexport const comparisonValuesKeys = Object.keys(comparisonFieldConfig);\n\nexport const getType = (fieldKey) => {\n const config = fieldConfig[fieldKey];\n if (!config) {\n return \"\";\n }\n if (!config.type) {\n return \"\";\n }\n return config.type;\n};\n\nexport const getAlignment = (fieldKey) => {\n const type = getType(fieldKey);\n switch (type) {\n case \"usd\":\n case \"usd-range\":\n case \"percent\":\n case \"percent-range\":\n case \"date\":\n return \"right\";\n case \"string\":\n return \"left\";\n default:\n return \"left\";\n }\n};\n\n// TODO: i18n:\nexport const docLabels = {\n // currently, used for img alt text (labels are built into SVG as elements)\n report_at_a_glance_upload: \"Report at a Glance\",\n presentation_upload: \"Presentation Slides\",\n patient_perspectives: \"Patient Perspectives\",\n evidence_summary_upload: \"Evidence Summary\",\n recommendation_upload: \"Recommendations for Fair Pricing and Fair Access\"\n};\n\nconst keyPattern = new RegExp(/[^0-9a-zA-Z]+/, \"gi\");\nconst toKey = (s) => s.toLowerCase().replace(keyPattern, \"-\");\n\nconst subRowKeys = [\n \"icer_vbpb_price_row\",\n \"user_proposed_price_row\",\n \"manufacturer_price_row\",\n // \"net_price_row\",\n \"wac_price_row\"\n];\n\nexport const computeHeaderProps = (tabKey, enabledGridFields = {}) => {\n const tabIndex = tabKeys.indexOf(tabKey);\n let row1Props = [];\n let row2Props = [];\n let dataRowColumnsConfigs = [];\n const activeFilters = Object.keys(enabledGridFields).filter((k) => !enabledGridFields[k]);\n nestedColumnGroups.forEach((group) => {\n const columnConfigs = group.keys\n .map((itemsInColumn) => {\n const keysInColumn = itemsInColumn instanceof Array ? itemsInColumn : itemsInColumn.keys;\n let rowSpan = itemsInColumn instanceof Array ? 4 : 1;\n if (tabIndex === 2) {\n rowSpan = 1;\n }\n const firstKey = keysInColumn.find((fieldKey) => fieldKey); // ignore null values\n const multiRowLabel = itemsInColumn.label || \"\";\n return {\n renderKey: toKey(multiRowLabel + firstKey),\n multiRowLabel,\n firstKey,\n fieldsInColumn: keysInColumn.map((fieldKey) => {\n if (!fieldKey) {\n return {\n rowSpan,\n isFiltered: true, // if fieldKey is null, this is a shim\n renderKey: `shimming_placeholder-${firstKey}`,\n fieldKey: \"shimming_placeholder\"\n };\n }\n const { tabFilters, filters = [] } = fieldConfig[fieldKey];\n const isOnTab = tabFilters[tabIndex] === 1;\n const firstFilterMatch = activeFilters.find((filterKey) => filters.includes(filterKey));\n\n const isFiltered = !isOnTab || !!firstFilterMatch;\n return {\n rowSpan,\n isFiltered,\n renderKey: toKey(`${multiRowLabel} ${fieldKey}`),\n fieldKey: isFiltered ? \"shimming_placeholder\" : fieldKey\n };\n })\n };\n })\n .filter(({ fieldsInColumn }) => {\n // Prune whole columns if no items are visible:\n const firstVisible = fieldsInColumn.find(({ isFiltered }) => !isFiltered);\n return !!firstVisible;\n });\n\n if (columnConfigs.length) {\n const { label: spanningLabel } = group;\n dataRowColumnsConfigs = dataRowColumnsConfigs.concat(columnConfigs);\n if (spanningLabel) {\n const allColumnsHaveLabels = columnConfigs.every((column) => !!column.multiRowLabel);\n row1Props.push({\n renderKey: toKey(spanningLabel),\n colSpan: columnConfigs.length,\n rowSpan: allColumnsHaveLabels ? 1 : 2,\n align: \"center\",\n label: spanningLabel\n });\n if (allColumnsHaveLabels) {\n // { multiRowLabel, \"fieldsInColumn\": [{ \"fieldKey\": firstKey }] }, indexInGroup\n row2Props = row2Props.concat(\n columnConfigs.map((config) => {\n const { multiRowLabel, fieldsInColumn } = config;\n const fieldKeys = fieldsInColumn.map(({ fieldKey }) => fieldKey);\n return {\n renderKey: toKey(`${spanningLabel} ${multiRowLabel} ${fieldKeys[0]}`),\n colSpan: 1,\n rowSpan: 1,\n classes: fieldKeys.join(\" \"),\n align: \"left\",\n label: multiRowLabel // label for individual column below spanningLabel\n };\n })\n );\n }\n } else {\n // no spanning header, rowspan=2\n // { multiRowLabel, \"fieldsInColumn\": [{ \"fieldKey\": firstKey }] }, indexInGroup\n row1Props = row1Props.concat(\n columnConfigs.map((config) => {\n const { multiRowLabel, fieldsInColumn } = config;\n const fieldKeys = fieldsInColumn.map(({ fieldKey }) => fieldKey);\n const [firstKey] = fieldKeys;\n const label = multiRowLabel || fieldConfig[fieldKeys[0]].label;\n return {\n fieldKey: firstKey,\n renderKey: toKey(label),\n colSpan: 1,\n rowSpan: 2,\n classes: fieldKeys.join(\" \"),\n align: \"left\",\n label // no spanningLabel\n };\n })\n );\n }\n }\n });\n\n // Array of subRowProps, with references to appropriate columnConfigs, regardless of rowspan:\n const dataRowProps = [];\n subRowKeys.forEach((subRowKey, rowNum) => {\n if (tabIndex === 2 && subRowKey !== \"icer_vbpb_price_row\") {\n return;\n }\n dataRowProps[rowNum] = {\n rowRenderKey: subRowKey,\n columnProps: dataRowColumnsConfigs.reduce((accColumnProps, { fieldsInColumn }) => {\n const propsForCell = fieldsInColumn[rowNum];\n if (propsForCell) {\n accColumnProps.push(propsForCell);\n }\n return accColumnProps;\n }, [])\n };\n });\n\n return {\n row1Props,\n row2Props,\n dataRowProps\n };\n};\n","export const months = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n\nexport const formateDate = (date='', options={}) => {\n let _date = date\n const { format='m Y' } = options\n if (_date) {\n const dateObj = new Date(date)\n if (format === 'm Y') {\n _date = `${months[dateObj.getUTCMonth()]} ${dateObj.getUTCFullYear()}`\n } else if (format === 'm d, Y') {\n _date = `${months[dateObj.getUTCMonth()]} ${dateObj.getUTCDate()}, ${dateObj.getUTCFullYear()}`\n }\n }\n return _date\n}\n\nexport const differenceInDays = ([startDate, endDate]) => (\n (endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24)\n)\n\nexport const determineComparisonDate = (createdDate, displayDate) => {\n let comparisonDate = createdDate || displayDate\n if (createdDate && displayDate) {\n comparisonDate = Math.max(\n new Date(createdDate).getTime(),\n new Date(displayDate).getTime()\n )\n }\n return new Date(comparisonDate)\n}\n","import isToday from \"date-fns/isToday\";\nimport isPast from \"date-fns/isPast\";\nimport isAfter from \"date-fns/isAfter\";\nimport subDays from \"date-fns/subDays\";\n\nexport const getRowSlugs = (rows) => rows.map(({ slug }) => slug);\n\nexport const isDateWithin30days = (date) => {\n if (!date) return false;\n return isToday(date) || (isPast(date) && isAfter(date, subDays(new Date(), 30)));\n};\n\nexport const sortCollection = (collection = [], sortedIds = [], sortField = null) => {\n // If no active sort return collection as is\n // e.g. during the initial search, we want to sort items by search score\n if (!sortField) return collection;\n const collectionIds = collection.map(({ slug }) => slug);\n const actualIds = sortedIds.filter((id) => collectionIds.includes(id));\n const sortedCollection = actualIds.map((id) => collection.find((a) => a.slug === id));\n return sortedCollection;\n};\n","import Fuse from \"fuse.js\";\nimport { SEARCHABLE_FIELDS } from \"../config\";\n\nexport const fuseSearch = (searchString, options = {}) => {\n let _searchString = searchString.trim();\n const { collection, keys = SEARCHABLE_FIELDS } = options;\n if (!_searchString.length) return collection;\n const inQuotes = searchString.match(/'|\"/);\n const fuse = new Fuse(collection, {\n keys,\n threshold: 0.35,\n useExtendedSearch: !inQuotes,\n includeScore: true,\n includeMatches: true\n });\n if (!inQuotes) {\n _searchString = searchString.replace(\" \", \"|\");\n }\n const search = fuse.search(_searchString);\n return search.map((r) => r.item);\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { initReactI18next, I18nextProvider } from 'react-i18next';\n\nimport enTranslations from '../translations/en.json';\n\n/**\n * https://www.i18next.com/principles/namespaces\n */\nconst defaultNamespace = 'common';\n\nconst defaultLocale = 'en-US';\n\n// https://react.i18next.com/latest/using-with-hooks\n\ni18n.use(initReactI18next).init({\n lng: defaultLocale,\n fallbackLng: defaultLocale,\n ns: [defaultNamespace],\n defaultNS: defaultNamespace,\n debug: false,\n resources: {\n en: { [defaultNamespace]: enTranslations }\n },\n returnObjects: true, // support js Arrays and Objects in translation files\n saveMissing: true, // enables missingKeyHandler\n missingKeyHandler: (lng, ns, key, fallbackValue) => { // detect and fail specs, if missing key detected:\n console.warn('warning: missing translation: ', JSON.stringify({\n lng, ns, key, fallbackValue\n }, null, ' '));\n },\n react: {\n useSuspense: false,\n transSupportBasicHtmlNodes: true,\n transKeepBasicHtmlNodesFor: ['br', 'b', 'i', 'strong'] // limited support for attributes -- use ReactMarkdown for \n }\n});\n\nconst I18nContext = React.createContext({\n language: defaultLocale,\n setLanguage: () => {}\n});\n\nconst I18nProvider = ({ children }) => {\n const [language, setLanguage] = useState(defaultLocale);\n\n useEffect(() => {\n i18n.changeLanguage(language);\n }, [language]);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nI18nProvider.propTypes = {\n children: PropTypes.node.isRequired\n};\n\nexport { i18n };\n\nexport default I18nProvider;\n","import { makeStyles } from \"@mui/styles\";\n\nexport const tooltipStyle = makeStyles(({ palette }) => ({\n root: {\n display: \"flex !important\",\n minHeight: 50\n },\n rootNoMinHeight: {\n display: \"flex !important\",\n minHeight: \"auto\"\n },\n reversed: {\n flexDirection: \"row-reverse\"\n },\n icon: {\n fill: palette.tooltip.icon,\n marginTop: \"auto\",\n marginLeft: \"auto\",\n fontSize: 16\n },\n iconLeft: {\n paddingRight: 2\n }\n}));\n\nexport const popoverStyle = makeStyles(({ components, palette }) => ({\n trigger: {\n cursor: \"pointer\"\n },\n root: {\n \"& p:last-of-type\": {\n margin: 0\n }\n },\n paper: {\n backgroundColor: `${components.MuiTooltip.styleOverrides.tooltip.backgroundColor} !important`\n },\n box: {},\n description: {\n color: \"white\",\n marginTop: 0\n },\n list: {\n color: \"white\",\n marginBottom: 0,\n \"& li\": {\n lineHeight: \"20px\"\n }\n },\n link: {\n color: palette.text.secondaryLinkLight,\n \"&:hover\": {\n color: \"white\"\n }\n }\n}));\n\nexport const baseCardStyle = (palette) => ({\n backgroundColor: \"transparent\",\n borderColor: palette.secondary.light,\n color: palette.secondary.main,\n fontSize: \"1.4rem\",\n justifyContent: \"start\",\n padding: \"1rem 1.5rem\",\n textTransform: \"none\"\n});\n\nexport const cardHover = (palette) => ({\n transition: \"all .22s ease-in-out\",\n \"&:hover,&:focus,&:focus-within\": {\n transform: \"translateY(-4px)\",\n boxShadow:\n \"0px 2px 1px -1px rgba(0, 0, 0, 0.1), 0px 5px 7px rgba(0, 0, 0, 0.05), 0px 4px 15px rgba(0, 0, 0, 0.05)\",\n borderColor: palette.secondary.light,\n backgroundColor: palette.secondary.veryLight\n }\n});\n\nexport const menu = {\n menu: {\n display: \"flex\",\n flexWrap: \"nowrap\",\n alignItems: \"center\",\n alignContent: \"flex-start\",\n paddingLeft: 32,\n paddingRight: 32,\n paddingBottom: 0,\n paddingTop: 0,\n borderBottom: \"1px solid rgb(224, 224, 224)\",\n borderRadius: 0,\n flex: \"1 1 auto\"\n },\n menuActionsSecondary: {\n marginLeft: \"auto\"\n },\n searchString: {\n alignSelf: \"center\"\n }\n};\n","import React from \"react\";\nimport { Zoom, Tooltip } from \"@mui/material\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport { tooltipStyle } from \"../component-styles\";\nimport googleAnalytics from \"../google-analytics\";\nimport { useLocation } from \"react-router-dom/cjs/react-router-dom\";\n\nconst CustomTooltip = ({\n content,\n title = \"\",\n id = \"\",\n controlHeight = true,\n contentReversed = false,\n icon = null\n}) => {\n const location = useLocation();\n const TooltipContent = React.forwardRef(function TooltipContent(props, ref) {\n const classes = tooltipStyle();\n let rootClass = controlHeight ? classes.root : classes.rootNoMinHeight;\n let iconClass = classes.icon;\n if (contentReversed) {\n rootClass += ` ${classes.reversed}`;\n iconClass += ` ${classes.iconLeft}`;\n }\n let Icon = icon;\n if (!Icon) {\n Icon = InfoIcon;\n }\n return (\n
\n {content}\n \n
\n );\n });\n return (\n {\n let _content = title && typeof title === \"string\" ? title : \"\";\n if (!_content) {\n _content =\n content &&\n content.props &&\n content.props.children &&\n typeof content.props.children === \"string\"\n ? content.props.children\n : content.props.children.props &&\n content.props.children.props.children &&\n typeof content.props.children.props.children === \"string\"\n ? content.props.children.props.children\n : \"Content unavailable - the content may be an HTML element\";\n }\n googleAnalytics.trackTooltipOpen({\n label: id || location.pathname,\n content: _content\n });\n }}\n >\n \n \n );\n};\n\nexport default CustomTooltip;\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport PopupState, { bindTrigger, bindPopover } from 'material-ui-popup-state';\nimport { tooltipStyle, popoverStyle } from '../component-styles'\n\nexport default function CustomPopover(props) {\n const {\n title='',\n data={},\n content='',\n id='',\n controlHeight=true,\n contentReversed=false,\n icon=null\n } = props\n const popoverClasses = popoverStyle()\n const { root, paper } = popoverClasses\n const PopoverTrigger = React.forwardRef(function TooltipContent(props, ref) {\n const classes = tooltipStyle()\n let rootClass = controlHeight ? classes.root : classes.rootNoMinHeight\n let iconClass = classes.icon\n if (contentReversed) {\n rootClass += ` ${classes.reversed}`\n iconClass += ` ${classes.iconLeft}`\n }\n let Icon = icon\n if (!Icon) {\n Icon = InfoIcon\n }\n return (\n
\n { title }\n \n
\n )\n });\n\n return (\n \n {(popupState) => (\n
\n \n \n \n { content(popoverClasses, data) }\n \n \n
\n )}\n
\n );\n}\n","import React from 'react';\nimport parseISO from 'date-fns/parseISO';\nimport format from 'date-fns/format';\nimport { i18n } from '../components/I18nProvider';\nimport InfoIcon from '@mui/icons-material/Info';\nimport CustomTooltip from '../components/CustomTooltip';\nimport DescriptionIcon from '@mui/icons-material/Description';\nimport {\n fieldConfig,\n tooltipCopy,\n costDescriptions,\n costRatioFields\n} from '../config';\nimport CustomPopover from '../components/CustomPopover';\n\nconst isNumeric = (v) => Number.isFinite(v);\n\nconst usdFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n minimumFractionDigits: 0,\n notation: 'standard',\n compactDisplay: 'short',\n currencyDisplay: 'symbol', // \"name\"\n // \"unitDisplay\": \"narrow\",\n // \"useGrouping\": true, // comma separator\n // \"minimumFractionDigits\": 2,\n // \"maximumFractionDigits\": 2,\n // \"minimumSignificantDigits\": 3,\n // \"maximumSignificantDigits\": 3,\n currency: 'USD'\n});\n\nconst formatUSD = (v) => usdFormatter.format(v);\n\nexport const formatPercent = (v) => `${v.toFixed(2)}%`;\n\n// const fieldsTranslations = i18n.t('fields');\n// console.info('fieldsTranslations: ', fieldsTranslations);\n// console.info('fieldsTranslations.orphan_statuses: ', fieldsTranslations.orphan_statuses);\n// latest EcmaScript standards will iterate over keys in POJO in same order as definition?\n\nconst formatValue = (fieldKey, value = '', data={}, _type=null) => {\n const config = fieldConfig[fieldKey];\n const type = _type || config.type\n\n const keysWithTooltip = {\n wac_price_label: {\n title: tooltipCopy.wac,\n },\n }\n const keysWithPopover = {\n manufacturer_price_label: (data) => ({\n content: tooltipCopy.map,\n icon: Object.keys(data).length ? DescriptionIcon : InfoIcon,\n })\n }\n\n if (fieldKey === 'orphan_statuses') {\n if (value.length === 0) {\n return i18n.t('fields.orphan_statuses.values.no_values');\n }\n return value.map((v) => i18n.t(`fields.orphan_statuses.values.${v}`)).join(', ');\n }\n\n if ((type === 'usd' || type === 'percent')) {\n if (value === null) {\n return N/A;\n }\n if (costRatioFields.includes(fieldKey) && value == -1 && config.type === 'usd') {\n return {costDescriptions[0]};\n } else if (costRatioFields.includes(fieldKey) && value == -2 && config.type === 'usd') {\n return {costDescriptions[1]};\n } else if (costRatioFields.includes(fieldKey) && value == -3 && config.type === 'usd') {\n return {costDescriptions[2]};\n } else if (costRatioFields.includes(fieldKey) && value < 0 && config.type === 'usd') {\n return N/A;\n }\n if (typeof value === 'string' || React.isValidElement(value)) {\n return value;\n }\n }\n switch (type) {\n // TODO: use currency library for both (precision of) calculations and formatting (commas):\n case 'usd':\n return isNumeric(value) ? formatUSD(value) : '--';\n case 'usd-range': {\n if (value && isNumeric(value[0]) && isNumeric(value[1])) {\n return `${formatUSD(value[0])} - ${formatUSD(value[1])}`;\n }\n return (invalid USD range);\n }\n case 'percent':\n return isNumeric(value) ? formatPercent(value) : '--';\n case 'percent-range': {\n if (value && isNumeric(value[0]) && isNumeric(value[1])) {\n return `${formatPercent(value[0])} - ${formatPercent(value[1])}`;\n }\n return (invalid percent range);\n }\n case 'date': {\n try {\n return value ? format(parseISO(value), 'MMM yyyy') : value;\n } catch (e) {\n return `invalid date format: ${value}`;\n }\n }\n case 'boolean': {\n return value ? 'Yes' : 'No';\n }\n case 'enum': {\n return value.join(', ');\n }\n case 'string':\n default:\n if (keysWithTooltip[fieldKey]) {\n const { title, icon=null } = keysWithTooltip[fieldKey]\n return (\n \n )\n } else if (keysWithPopover[fieldKey]) {\n const { content, icon=null } = keysWithPopover[fieldKey](data)\n return (\n \n )\n }\n return value;\n }\n};\n\nexport default formatValue;\n","/* eslint max-len: [\"error\", { \"code\": 120 }] */\nimport { createSelector } from \"reselect\";\nimport queryString from \"query-string\";\nimport { differenceInDays, determineComparisonDate } from \"../utils/date\";\nimport isToday from \"date-fns/isToday\";\nimport isFuture from \"date-fns/isFuture\";\nimport isBefore from \"date-fns/isBefore\";\nimport isValid from \"date-fns/isValid\";\nimport compareAsc from \"date-fns/compareAsc\";\nimport parse from \"date-fns/parse\";\nimport addDays from \"date-fns/addDays\";\n\nimport { isDateWithin30days, getRowSlugs, sortCollection } from \"./helpers\";\nimport { fuseSearch } from \"./search\";\n\nimport {\n tabKeys,\n tabConfig,\n fieldConfig,\n allFieldKeys,\n icerBenchmarkPriceKeys,\n comparisonValuesKeys,\n SEARCHABLE_FIELDS,\n SELECTED_ROW_STORAGE_KEY,\n computeHeaderProps,\n newItemPeriod,\n costDescriptions,\n costRatioFields\n} from \"../config\";\n\nimport { formatPercent } from \"../utils/formatters\";\n\nexport const activeDetailIdSelector = (state, props) => {\n if (!props.match) return null;\n const {\n match: {\n params: { detailId }\n }\n } = props;\n return detailId;\n};\n\nexport const activeTabKeySelector = (state, props) => {\n const {\n match: {\n params: { activeTabKey = tabKeys[0] }\n }\n } = props;\n return activeTabKey;\n};\n\nconst detailsSlugSelector = (state, props) => {\n const {\n match: {\n params: { detailsSlug }\n }\n } = props;\n return detailsSlug;\n};\n\nexport const searchStringSelector = (state, props) => {\n if (!props.location) return \"\";\n const { search = \"\" } = props.location;\n const urlParams = queryString.parse(search);\n // Note difference between \"search\" as a react-router property, vs the URL param named \"search\":\n const { search: searchString = \"\" } = urlParams;\n return searchString;\n};\n\nconst enabledGridFieldsSelector = (state) => state.enabledGridFields;\nexport const userInputSelector = (state) => state.userInputs.data;\n\n// Cache of analyses, by id: (JSONAPI response is an Array)\n// eslint-disable-next-line max-len\nexport const analysisCollectionSelector = (state) =>\n state.analysesResponse.data.reduce((acc, a) => ({ ...acc, [a.slug]: a }), {});\nexport const analysisCollectionArraySelector = (state) => state.analysesResponse.data;\n\nconst includedSelector = (state) => state.analysesResponse.included;\n\nexport const activeDetailName = (state, props) => {\n const report = reportSelector(state, props);\n let name = \"\";\n if (report) {\n name = report.attributes.specific_conditions[0];\n }\n return name;\n};\n\n// ! @deprecated! in favor of getReportSnapshotCollection which uses the dedicated\n// ! asset_groups endpoint\nexport const reportCollectionSelector = (state, props) => {\n const { searchTerm = \"\" } = props;\n const collection = includedSelector(state)\n .filter((included) => included.type === \"asset_group\")\n .sort((a, b) => {\n return (\n a.attributes.specific_conditions[0].localeCompare(b.attributes.specific_conditions[0]) ||\n new Date(b.attributes.date_of_review) - new Date(a.attributes.date_of_review)\n );\n });\n if (searchTerm.length <= 2) {\n return collection;\n } else {\n return fuseSearch(searchTerm, {\n collection: collection.map((d) => d.attributes),\n keys: [\"specific_conditions\", \"drugs\"]\n });\n }\n};\n\n// ! @deprecated! in favor of reportSnapshotSelector which uses the dedicated\n// ! asset_groups endpoint\nexport const reportSelector = (state, props) => {\n const reportId = props.reportId || activeDetailIdSelector(state, props);\n if (!reportId) return null;\n return reportCollectionSelector(state, props).find((r) => r.id === reportId);\n};\n\nexport const reportSnapshotSelector = (state, props) => {\n const reportId = props.reportId || activeDetailIdSelector(state, props);\n if (!reportId) return null;\n return getReportSnapshotCollection(state).find((r) => r.id === reportId);\n};\n\nexport const getReportSnapshotCollection = (state, { limit = 0, searchTerm = \"\" } = {}) => {\n const { data = [] } = state.assetGroups;\n const collection = data.filter(\n ({ attributes }) => attributes && attributes.status !== \"coming_soon\"\n );\n if (limit && limit > 0) return collection.slice(0, limit);\n if (searchTerm.length <= 2) {\n return collection;\n } else {\n return fuseSearch(searchTerm, {\n collection: collection.map((d) => d.attributes),\n keys: [\"specific_conditions\", \"drugs\"]\n });\n }\n};\n\nexport const getComingSoonCollection = (state, { limit = null } = {}) => {\n const { data = [] } = state.comingSoon;\n if (limit && limit > 0) return data.slice(0, limit);\n return data;\n};\n\nexport const comingSoonLoadingSelector = (state) => state.comingSoon.loading;\n\nexport const comingSoonMostRecentItemSelector = (state) => {\n const comingSoonItems = getComingSoonCollection(state);\n if (!comingSoonItems) return null;\n const { included: relatedObjects = [] } = state.comingSoon; // date_of_review, specific_conditions\n\n const items = [...comingSoonItems, ...relatedObjects];\n const comingSoonMostRecentItem = items\n .filter((item) => {\n const resourceDate = parse(\n item.attributes?.display_date || item.attributes?.date_of_review || \"\",\n \"yyyy-MM-dd\",\n new Date()\n );\n if (!isValid(resourceDate)) return false;\n return (\n isToday(resourceDate) ||\n (isFuture(resourceDate) && isBefore(resourceDate, addDays(new Date(), 30)))\n );\n })\n .sort((a, b) => {\n const resourceDateA = parse(\n a.attributes?.display_date || a.attributes?.date_of_review || \"\",\n \"yyyy-MM-dd\",\n new Date()\n );\n const resourceDateB = parse(\n b.attributes?.display_date || b.attributes?.date_of_review || \"\",\n \"yyyy-MM-dd\",\n new Date()\n );\n //return resourceDateA > resourceDateB;\n return compareAsc(resourceDateA, resourceDateB);\n })[0];\n\n return comingSoonMostRecentItem || null;\n};\n\nexport const comingSoonSelector = (state, { limit = null } = {}) => {\n const collection = getComingSoonCollection(state, { limit });\n const { included: relatedObjects } = state.comingSoon;\n // Filter collection of asset groups to coming soon\n let report = null;\n let resource = {};\n // Update data of asset groups (AKA report snapshots) for FE components\n // And get associated objects from `included` collection\n return collection.map(({ relationships, attributes, ...item }) => {\n const idOfAssociatedWebinar = relationships?.asset_group?.data?.id;\n if (idOfAssociatedWebinar && relatedObjects.length) {\n report = relatedObjects.find(({ attributes }) => attributes.id == idOfAssociatedWebinar);\n const createdAtDate = report?.attributes?.created_at && new Date(report.attributes.created_at);\n report && createdAtDate && (report.attributes.isNew = isDateWithin30days(createdAtDate));\n } else {\n report = null;\n }\n const { drugs = [], specific_conditions = [], date_of_review: date } = report?.attributes || {};\n\n if (attributes && Object.keys(attributes).length) {\n const {\n display_date,\n title: webinarTitle,\n registration_url: registrationUrl,\n youtube_id: videoId,\n description = \"\",\n created_at,\n ...otherWebinarAttrs\n } = attributes;\n\n // If there's an associated report, use that status, otherwise, check resource.\n // - If no report, than we can show the resource's isNew.\n const isNew = !idOfAssociatedWebinar && isDateWithin30days(new Date(created_at));\n\n resource = {\n registrationUrl,\n title: webinarTitle,\n date: display_date,\n videoId,\n description,\n isNew,\n ...otherWebinarAttrs\n };\n }\n const title = specific_conditions[0] || \"\";\n return {\n ...item,\n title,\n report: report ? { date, title, isNew: report.attributes.isNew } : null,\n drugs,\n resource\n };\n });\n};\n\nexport const newComingSoonCountSelector = (state) => {\n let count = 0;\n comingSoonSelector(state).forEach((item) => {\n (item.resource?.isNew || item.report?.isNew) && count++;\n });\n return count;\n};\n\nexport const analysesLoadingSelector = (state) => state.sortedAnalyses.loading;\n// the ^above allows progess indicator to be visible while initial filter & sort are 1st applied, vs below:\n// export const analysesLoadingSelector = (state) => state.analysesResponse.loading;\n\nconst analysisIdSelector = (state, ownProps) => ownProps.analysisId;\n\n// returns callback function for Array.sort:\nconst fuseSearchSelector = createSelector(\n [searchStringSelector, analysisCollectionArraySelector], // every member is passed: state, props\n (searchString, collection) => fuseSearch(searchString, { collection })\n);\n\nconst sortedAnalysesSelector = createSelector(\n [analysisCollectionArraySelector, (state) => state.sortedAnalyses.sortedIds],\n sortCollection\n);\n\nconst sortedAndFilteredAnalysesSelector = createSelector(\n [fuseSearchSelector, (state) => state.sortedAnalyses.sortedIds, (state) => state.sort.sortField],\n sortCollection\n);\n\nconst addedToCompareCollectionSelector = createSelector(\n [\n userInputSelector,\n sortedAnalysesSelector,\n (state) => state.sortedAnalyses.sortedIds,\n (state) => state.sort.sortField\n ],\n (userInputs, collection, sortedIds, sortField) => {\n const filteredCollection = collection.filter((row) => {\n const { [SELECTED_ROW_STORAGE_KEY]: selected = false } = (row && userInputs[row.slug]) || {};\n return selected;\n });\n return sortCollection(filteredCollection, sortedIds, sortField);\n }\n);\n\nconst filteredRowsSelector = createSelector(\n [activeTabKeySelector, addedToCompareCollectionSelector, sortedAndFilteredAnalysesSelector],\n (activeTabKey, comparisonAnalyses, sortedAnalyses) => {\n if (activeTabKey === \"compare-your-own-pricing\") {\n return comparisonAnalyses;\n }\n return sortedAnalyses;\n }\n);\n\nconst filteredRowsForAllTabsSelector = createSelector(\n [sortedAndFilteredAnalysesSelector, addedToCompareCollectionSelector],\n (sortedAnalyses, comparisonAnalyses) => ({\n [tabConfig[\"drugs\"]]: getRowSlugs(sortedAnalyses),\n [tabConfig[\"compare-your-own-pricing\"]]: getRowSlugs(comparisonAnalyses),\n [tabConfig[\"icer-pricing\"]]: getRowSlugs(sortedAnalyses)\n })\n);\n\nexport const filteredAnalysisIdsSelector = createSelector(\n [filteredRowsSelector],\n (filteredAnalyses) => filteredAnalyses.map((analysis) => (analysis ? analysis.slug : null))\n);\n\nexport const filteredAnalysisIdsForAllTabsSelector = createSelector(\n [filteredRowsForAllTabsSelector],\n (filteredAnalyses) => filteredAnalyses\n);\n\nexport const columnConfigSelector = createSelector(\n [activeTabKeySelector, enabledGridFieldsSelector],\n (activeTabKey, enabledGridFields) => computeHeaderProps(activeTabKey, enabledGridFields) // eslint-disable-line max-len\n);\n\nexport const dataRowPropsSelector = createSelector(\n [columnConfigSelector],\n ({ dataRowProps }) => dataRowProps\n);\n\nexport const columnCountSelector = createSelector(\n [dataRowPropsSelector],\n // 1st subrow corresponds to full # of columns despite colspans -- each can have rowSpans > 1 :\n (dataRowProps) => dataRowProps[0].columnProps.length\n);\n\nconst preloadedUserEnteredValues = {}; // empty object that will avoid mutation, across calls\n\nexport const userEnteredValuesByAnalysisIdSelector = createSelector(\n [userInputSelector, analysisIdSelector],\n (userInputs, analysisId) => {\n // until a value is set, userInputs[analysisId] is undefined:\n const { [analysisId]: userEnteredValuesForRow = preloadedUserEnteredValues } = userInputs;\n return userEnteredValuesForRow;\n }\n);\n\nexport const analysisByIdSelector = createSelector(\n // id from ownProps -- e.g.: from one element of a collection\n [analysisCollectionSelector, analysisIdSelector],\n (analysisCollection, analysisId) => analysisCollection[analysisId]\n);\n\nexport const analysisBySlugSelector = createSelector(\n // details id from URL path\n [analysisCollectionSelector, detailsSlugSelector],\n (analysisCollection, detailsSlug) => analysisCollection[detailsSlug]\n);\n\nexport const analysesSelector = createSelector(\n // details id from URL path\n [analysisCollectionSelector],\n (analysisCollection) => analysisCollection\n);\n\nconst currentConditionSelector = createSelector(\n [analysisBySlugSelector],\n (analysis) => analysis && analysis.specific_condition\n);\n\nconst emptyArray = []; // avoid mutation\nconst analysesForConditionSelector = createSelector(\n [analysisCollectionSelector, currentConditionSelector],\n (analysisCollection, currentCondition) => {\n if (currentCondition) {\n // TODO: use id of condition relationship:\n return Object.values(analysisCollection).filter(\n (a) => a.specific_condition === currentCondition\n );\n }\n return emptyArray;\n }\n);\n\nexport const fieldsForExportSelector = createSelector(\n [enabledGridFieldsSelector],\n (enabledGridFields) => {\n const fieldsForTabs = {};\n tabKeys.forEach((key) => {\n const tabIndex = tabKeys.indexOf(key);\n fieldsForTabs[tabConfig[key]] = allFieldKeys\n // filter by tab:\n .filter((k) => fieldConfig[k].tabFilters[tabIndex] === 1)\n .filter((k) => !fieldConfig[k].fixedValue && k !== \"remove_from_compare\")\n .filter((k) =>\n (fieldConfig[k].filters || []).reduce((accVisible, filterKey) => {\n return accVisible && enabledGridFields[filterKey] === true;\n }, true)\n ); // eslint-disable-line max-len\n });\n return fieldsForTabs;\n }\n);\nexport const relatedDrugsForConditionSelector = createSelector(\n [analysesForConditionSelector],\n (analysesForCondition) => {\n // dedupe:\n const drugs = {};\n const drugsForCondition = analysesForCondition.reduce((acc, a) => {\n if (!drugs[a.trade_name]) {\n acc.push(a.trade_name);\n drugs[a.trade_name] = true;\n }\n return acc;\n }, []);\n return drugsForCondition.length ? drugsForCondition : emptyArray;\n }\n);\n\nexport const addToCompareCountSelector = createSelector(\n [addedToCompareCollectionSelector],\n (comparisonAnalyses) => comparisonAnalyses.length\n);\n\nexport const computePercentDiscount = (benchmarkPrice, comparisonPrice, comparisonKey) => {\n if (!Number.isFinite(benchmarkPrice)) {\n return null; // becomes formatted as N/A via formatValue\n }\n // do not divide by 0 -- test for comparisonPrice:\n if (Number.isFinite(comparisonPrice) && comparisonPrice) {\n return (100 * (benchmarkPrice - comparisonPrice)) / comparisonPrice;\n }\n if (comparisonKey === \"user_proposed_price\") {\n // So far, there's no table-cell formatting in these selectors, except for here?\n return \"--\"; // it is computable, b/c benchmarkPrice exists -- but comparisonPrice was not entered\n }\n return null;\n};\n\nconst getDerivedPercentDiscount = (\n benchmarkKey,\n comparisonKey,\n userEnteredValuesByAnalysisId,\n analysisById\n) => {\n if (comparisonKey === \"user_proposed_price\") {\n const benchmarkPrice = analysisById[benchmarkKey];\n const comparisonPrice = parseFloat(userEnteredValuesByAnalysisId[comparisonKey], 10);\n return computePercentDiscount(benchmarkPrice, comparisonPrice, comparisonKey);\n }\n return analysisById.comparisonValues[benchmarkKey][comparisonKey];\n};\n\n// Used only by browser/table view, where `fieldKey` is passed via ownProps:\nconst benchmarkKeySelector = (state, ownProps) => fieldConfig[ownProps.fieldKey].benchmarkKey;\nconst comparisonKeySelector = (state, ownProps) => fieldConfig[ownProps.fieldKey].comparisonKey;\nexport const priceDiscountPercentSelector = createSelector(\n [\n benchmarkKeySelector,\n comparisonKeySelector,\n userEnteredValuesByAnalysisIdSelector,\n analysisByIdSelector\n ],\n getDerivedPercentDiscount\n);\n\n// Used only by CSV-download feature:\nconst formatCsvItem = (k, value) => {\n // This formatting is different from the Browser table view, e.g.: raw $USD values\n const { type } = fieldConfig[k];\n switch (type) {\n case \"percent\": {\n if (Number.isFinite(value)) {\n // TODO: move this into formatPercent?\n return formatPercent(value);\n }\n }\n // eslint-disable-next-line no-fallthrough\n case \"usd\": // keep usd as raw number, without $ or commas\n const isRatioField = costRatioFields.includes(k);\n if (isRatioField && value == -1) {\n return costDescriptions[0];\n } else if (isRatioField && value == -2) {\n return costDescriptions[1];\n } else if (isRatioField && value == -3) {\n return costDescriptions[2];\n } else if (isRatioField && value < 0) {\n return 'N/A';\n } else {\n return value;\n }\n case \"boolean\": // e.g.: format as \"yes\" vs \"no\"?\n return value ? \"Yes\" : \"No\";\n case \"enum\": {\n if (value && typeof value == \"object\") {\n return value.join && value.join(\", \");\n }\n }\n case \"string\":\n default:\n return value;\n }\n};\nconst getDerivedValueForFieldKey = (k, a, userInputForAnalysis = {}) => {\n if (typeof a[k] === \"undefined\") {\n // TODO: flatten all derived, comparison fieldKeys, into each analysis?\n if (comparisonValuesKeys.includes(k)) {\n // comparison keys make use of a more nested structure:\n const { benchmarkKey, comparisonKey } = fieldConfig[k];\n return getDerivedPercentDiscount(benchmarkKey, comparisonKey, userInputForAnalysis, a);\n }\n // TODO: flatten all user-input-related fieldKeys, into each analysis?\n if ([\"add_to_compare\", \"user_proposed_price\"].includes(k)) {\n return userInputForAnalysis[k];\n }\n console.error(\"FIELD KEY NOT SUPPORTED: \", k);\n }\n return a[k];\n};\n// invoked on-the-fly, not via Component props:\nexport const csvArraySelector = createSelector(\n [\n (rowIds, visibleDataFields, analysisCollection, userInputs) => [\n rowIds,\n visibleDataFields,\n analysisCollection,\n userInputs\n ]\n ], // eslint-disable-line max-len\n ([rowIds, visibleDataFields, analysisCollection, userInputs]) =>\n rowIds.map((analysisId) => {\n const a = analysisCollection[analysisId];\n const userInputForAnalysis = userInputs[analysisId];\n const csvRow = visibleDataFields.map((k) =>\n formatCsvItem(k, getDerivedValueForFieldKey(k, a, userInputForAnalysis))\n );\n return csvRow;\n })\n);\n\nconst rowIdsSelector = (state, ownProps) => ownProps.rowIds;\n\n// const chartComparisonKeys = ['50k_per_qaly', '100k_per_qaly', '150k_per_qaly', '200k_per_qaly'];\n// chartDataSelector could return Array of analyses, but, maybe not?\nexport const chartDataSelector = createSelector(\n [rowIdsSelector, analysisCollectionSelector, userInputSelector],\n (rowIds, analysisCollection, userInputs) => {\n const chartData = rowIds\n .map((id) => analysisCollection[id])\n .map(({ slug: id, trade_name, specific_condition, differentiator }) => ({\n id,\n trade_name,\n specific_condition,\n differentiator,\n ...icerBenchmarkPriceKeys.reduce(\n (acc, k) => ({ ...acc, [k]: analysisCollection[id][k] }),\n {}\n ),\n // TODO: user_proposed_price is null or parseFloat, upstream?\n user_proposed_price:\n parseFloat(userInputs[id] && userInputs[id].user_proposed_price, 10) || null\n }));\n return chartData;\n }\n);\n\nconst getAttributes = (items) => items.map(({ attributes = {} }) => attributes);\nconst getPublished = (items) =>\n getAttributes(items.filter(({ attributes }) => !attributes.unpublished));\nconst getResourceType = (items, type) =>\n items.filter(({ resource_type }) => resource_type === type);\nconst getPublishedResourceType = (type) => {\n return (state) => {\n return getResourceType(getPublished(state.mediaResources.data), type);\n };\n};\nconst publishedWebinars = getPublishedResourceType(\"webinar\");\nconst publishedVideos = getPublishedResourceType(\"resource\");\nconst publishedDocuments = getPublishedResourceType(\"document\");\nconst publishedUpdates = (state) => getPublished(state.recentUpdates.data);\n\nconst newCount = (items = []) => {\n const today = new Date();\n return items.filter((item) => {\n const { created_at, display_date } = item;\n const comparisonDate = determineComparisonDate(created_at, display_date);\n return differenceInDays([comparisonDate, today]) < newItemPeriod;\n }).length;\n};\n\nexport const newWebinarsCountSelector = createSelector([publishedWebinars], newCount);\nexport const newVideosCountSelector = createSelector([publishedVideos], newCount);\nexport const newDocumentsCountSelector = createSelector([publishedDocuments], newCount);\nexport const newRecentUpdatesCountSelector = createSelector([publishedUpdates], newCount);\n","import { actionTypes } from '../epics';\nimport {\n fieldConfig, icerBenchmarkPriceKeys, manufacturersPricePriceKeys, icerComparisonKeys, SECONDARY_SORT_FIELDS\n} from '../../config';\nimport { computePercentDiscount } from '../../selectors';\n\nconst generateComparisonValues = (analysisAttributes) => icerBenchmarkPriceKeys.reduce((accumulatedBenchmarks, benchmarkPriceKey) => ({ // eslint-disable-line max-len\n ...accumulatedBenchmarks,\n [benchmarkPriceKey]: icerComparisonKeys.reduce((accumulatedComparisonValues, comparisonKey) => ({\n ...accumulatedComparisonValues,\n [comparisonKey]: computePercentDiscount(analysisAttributes[benchmarkPriceKey], analysisAttributes[comparisonKey], comparisonKey) // eslint-disable-line max-len\n }), {})\n}), {});\n\nconst generateDerivedAttributes = (attributes) => Object.entries(attributes).reduce((acc, [n, v]) => {\n if (fieldConfig[n]) {\n const { type } = fieldConfig[n];\n if (type === 'usd') {\n acc[n] = parseFloat(v, 10) || null;\n }\n }\n acc.comparisonValues = generateComparisonValues(acc);\n return acc;\n}, {});\n\n\nexport const preloadedAnalyses = {\n loading: true,\n error: null,\n included: [], // Array of referenced, JSONAPI relationships, e.g.: reports\n data: [], // Array of Analyses Objects, corresponding to rows\n sortedIds: [] // Array of ids, TODO: filter, in Redux state, 1st?\n};\n\nexport const analysesReducer = (state = preloadedAnalyses, action) => {\n switch (action.type) {\n case actionTypes.FETCH_ANALYSES:\n return {\n ...state,\n loading: true,\n error: null\n };\n case actionTypes.FETCH_ANALYSES_FAILURE:\n return {\n loading: false,\n included: [],\n data: [],\n error: action.payload\n };\n case actionTypes.FETCH_ANALYSES_SUCCESS: {\n let { payload } = action\n const { data=[], included=false } = payload || {};\n return {\n loading: false,\n included,\n data: data.map(({ id, attributes, relationships }) => {\n attributes.manufacturer_price = null\n return { // attributes of one analysis\n slug: id, // TODO: use actual slug\n ...attributes,\n ...generateDerivedAttributes(attributes),\n hasManufacturersPrice: manufacturersPricePriceKeys.reduce((hasPrice, k) => ((attributes[k] !== null) || hasPrice), false),\n hasIcerPrice: icerBenchmarkPriceKeys.reduce((hasPrice, k) => ((attributes[k] !== null) || hasPrice), false),\n relationships\n }}),\n error: null\n };\n }\n default:\n return state;\n }\n};\n\nexport const sortReducer = (state = {}, action) => {\n switch (action.type) {\n case actionTypes.SET_SORT: {\n return {\n ...state,\n ...action.payload\n };\n }\n default:\n return state;\n }\n};\n\nconst normalizeValue = (v, type) => {\n if (type && type === 'number') {\n // If value is actually a string, remove characters like '$' and commas\n if (typeof(v) === 'string')\n return Number(v.replace(/[^0-9.-]+/g,\"\"));\n else\n return v;\n } else {\n return String(v instanceof Array ? v.join('') : v || '').toUpperCase();\n }\n}\n\nconst sortFor = (sortField, sortDirection, type) => (a1, a2) => {\n // (a1, a2) === (analysis-1, analysis-2):\n // if necessary, sort by an empty string, '', instead of \"null\" or \"undefined\":\n const a1NormalizedValue = normalizeValue(a1[sortField], type);\n const a2NormalizedValue = normalizeValue(a2[sortField], type);\n if (a1NormalizedValue > a2NormalizedValue) {\n return sortDirection === 'asc' ? 1 : -1;\n } if (a1NormalizedValue < a2NormalizedValue) {\n return sortDirection === 'asc' ? -1 : 1;\n } if (a1NormalizedValue === a2NormalizedValue) {\n for (let i = 0; i < SECONDARY_SORT_FIELDS.length; i += 1) {\n const nextField = SECONDARY_SORT_FIELDS[i];\n if (sortField === nextField) {\n continue; // eslint-disable-line no-continue\n }\n const a1SecondaryValue = normalizeValue(a1[nextField], type);\n const a2SecondaryValue = normalizeValue(a2[nextField], type);\n // 2ndary is always ascending, regardless of primary sortDirection:\n const compareResult = a1SecondaryValue > a2SecondaryValue ? 1 : -1;\n if (compareResult !== 0) {\n return compareResult;\n }\n }\n }\n return 0;\n};\n\nexport const sortedAnalysesReducer = (state = preloadedAnalyses, action) => {\n switch (action.type) {\n case actionTypes.APPLY_SORT: {\n const { analysesResponse, sort: { sortField, sortDirection, type } = {} } = action.payload;\n const { data = [] } = analysesResponse;\n const sortFunc = sortFor(sortField, sortDirection, type);\n return {\n ...analysesResponse,\n sortedIds: data.slice().sort(sortFunc).map(({ slug }) => slug)\n };\n }\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { actionTypes } from \"../epics\";\nimport { userProfileReducer } from \"./user-profile\";\nimport {\n preloadedAnalyses,\n analysesReducer,\n sortReducer,\n sortedAnalysesReducer,\n} from \"./analyses\";\nimport { fieldFilterKeys } from \"../../config\";\n\nconst preloadedUserInputs = {\n loading: false,\n error: null,\n data: {}, // Object whose keys are slugs, and values a`re objects containing input values\n};\n\nconst preloadedData = {\n loading: false,\n error: null,\n data: [],\n};\n\nexport const preloadedState = {\n analysesResponse: preloadedAnalyses,\n userInputs: preloadedUserInputs,\n};\n\nconst preloadedGridFilters = fieldFilterKeys.reduce(\n (acc, key) => ({\n ...acc,\n [key]: true,\n }),\n {}\n);\n\nconst gridFilterReducer = (state = preloadedGridFilters, action) => {\n switch (action.type) {\n case actionTypes.SET_GRID_FILTER: {\n return {\n ...state,\n ...action.payload,\n };\n }\n default:\n return state;\n }\n};\n\nconst userInputsReducer = (state = preloadedUserInputs, action) => {\n switch (action.type) {\n case actionTypes.SET_USER_INPUT: {\n // optimistic pending state\n const { slug, key, value } = action.payload;\n const { data } = state;\n const { [slug]: prevInputForRow } = data;\n return {\n ...state, // possibly: set loading for each individual row?\n data: {\n ...data,\n [slug]: {\n ...prevInputForRow,\n [key]: value,\n },\n },\n };\n }\n case actionTypes.SET_USER_INPUT_SUCCESS: {\n const { data } = state;\n return {\n ...state, // possibly: set loading for each individual row?\n data: {\n ...data,\n ...action.payload,\n },\n };\n }\n case actionTypes.SET_USER_INPUT_FAILURE: {\n return state; // possibly: set error for each individual row?\n }\n case actionTypes.GET_USER_INPUTS:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case actionTypes.GET_USER_INPUTS_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.payload,\n };\n case actionTypes.GET_USER_INPUTS_SUCCESS:\n return {\n data: action.payload,\n loading: false,\n error: null,\n };\n default:\n return state;\n }\n};\n\nconst mediaResourcesReducer = (state = preloadedData, action) => {\n switch (action.type) {\n case actionTypes.FETCH_MEDIA_RESOURCES:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case actionTypes.FETCH_MEDIA_RESOURCES_FAILURE:\n return {\n loading: false,\n data: [],\n error: action.payload,\n };\n case actionTypes.FETCH_MEDIA_RESOURCES_SUCCESS: {\n let { payload } = action;\n const { data = [], included = false } = payload || {};\n return {\n loading: false,\n data,\n error: null,\n };\n }\n default:\n return state;\n }\n};\n\nconst recentUpdatesReducer = (state = preloadedData, action) => {\n switch (action.type) {\n case actionTypes.FETCH_RECENT_UPDATES:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case actionTypes.FETCH_RECENT_UPDATES_FAILURE:\n return {\n loading: false,\n data: [],\n error: action.payload,\n };\n case actionTypes.FETCH_RECENT_UPDATES_SUCCESS: {\n let { payload } = action;\n const { data = [], included = false } = payload || {};\n return {\n loading: false,\n data,\n error: null,\n };\n }\n default:\n return state;\n }\n};\n\nconst assetGroupsReducer = (state = preloadedData, action) => {\n switch (action.type) {\n case actionTypes.FETCH_ASSET_GROUPS:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case actionTypes.FETCH_ASSET_GROUPS_FAILURE:\n return {\n loading: false,\n data: [],\n error: action.payload,\n };\n case actionTypes.FETCH_ASSET_GROUPS_SUCCESS: {\n const { data = [], included = [] } = action.payload || {};\n return {\n loading: false,\n data,\n included,\n error: null,\n };\n }\n default:\n return state;\n }\n};\n\nconst comingSoonReducer = (state = preloadedData, action) => {\n switch (action.type) {\n case actionTypes.FETCH_COMING_SOON:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case actionTypes.FETCH_COMING_SOON_FAILURE:\n return {\n loading: false,\n data: [],\n error: action.payload,\n };\n case actionTypes.FETCH_COMING_SOON_SUCCESS: {\n const { data = [], included = [] } = action.payload || {};\n return {\n loading: false,\n data,\n included,\n error: null,\n };\n }\n default:\n return state;\n }\n};\n\nexport default combineReducers({\n userProfile: userProfileReducer,\n analysesResponse: analysesReducer,\n sortedAnalyses: sortedAnalysesReducer,\n sort: sortReducer,\n enabledGridFields: gridFilterReducer,\n userInputs: userInputsReducer,\n mediaResources: mediaResourcesReducer,\n recentUpdates: recentUpdatesReducer,\n assetGroups: assetGroupsReducer,\n comingSoon: comingSoonReducer,\n});\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { element } from 'prop-types';\nimport configureStore from '../redux';\n\nconst store = configureStore();\n\nconst StateProvider = ({ children }) => (\n \n {children}\n \n);\n\nStateProvider.propTypes = {\n children: element.isRequired\n};\n\nexport default StateProvider;\n","import { createStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\n\nimport rootReducer, { preloadedState } from './reducers';\nimport epicMiddleware, { rootEpic } from './epics';\n\nexport default function configureStore() {\n // middleware executed in left-to-right order:\n const middleware = [\n // routerMiddleware(history),\n epicMiddleware\n ];\n\n const composeEnhancers = composeWithDevTools({\n // Specify name here, actionsBlacklist, actionsCreators and other options if needed\n });\n\n // https://redux.js.org/api/createstore\n const store = createStore(\n rootReducer,\n preloadedState,\n composeEnhancers(\n applyMiddleware(...middleware)\n )\n );\n\n epicMiddleware.run(rootEpic);\n\n return store;\n}\n","import { makeStyles } from '@mui/styles';\n\nexport const useBreadcrumbStyles = makeStyles(() => ({\n root: {\n marginBottom: 10,\n },\n breadcrumb: {\n color: 'white',\n fontSize: '14px',\n },\n separator: {\n color: 'white',\n },\n typography: {\n fontWeight: 'inherit',\n },\n}));\n\nexport const sectionStyles = {\n marginBottom: 100,\n minHeight: '400px',\n}\n\nexport const headerLinkStyles = makeStyles(({palette, spacing, breakpoints}) => ({\n root: {\n background: 'none',\n border: 'none',\n display: 'flex',\n alignItems: 'center',\n paddingRight: spacing(2),\n paddingLeft: spacing(2),\n height: '2.5em',\n color: props => props.anchorEl\n ? palette.secondary.main\n : palette.grey[600],\n textDecoration: 'none',\n cursor: 'pointer',\n fontSize: '.875rem',\n textTransform: 'none',\n whiteSpace: 'nowrap',\n '&:hover,&:focus': {\n textDecoration: 'none',\n color: palette.primary.dark,\n },\n '&:active': {\n color: palette.secondary.main,\n },\n '& svg:nth-of-type(1)': {\n marginRight: 8,\n },\n [breakpoints.down('sm')]: {\n paddingRight: spacing(1),\n paddingLeft: spacing(1),\n '& span': {\n display: 'none',\n }\n }\n },\n}));\n\nexport const headerMenuStyles = makeStyles( ({ palette }) => ({\n list: {\n '& li, & li div': {\n color: palette.secondary.main,\n minWidth: '35px',\n transition: 'none',\n },\n '& li:hover': {\n backgroundColor: palette.secondary.main,\n color: 'white',\n '& div, & svg': {\n color: 'white',\n },\n },\n },\n}))\n","export const urlEncode = (s) => encodeURIComponent(s).replace(/%20/gi, '+');\n","import { connect } from 'react-redux';\nimport { actionTypes } from './epics';\n\nconst mapDispatchToProps = {\n initializeAfterLogin: () => ({\n type: actionTypes.INITIALIZE_AFTER_LOGIN\n }),\n setGridFilter: (fieldKeys) => ({\n type: actionTypes.SET_GRID_FILTER,\n payload: fieldKeys\n }),\n setSort: (sortField, sortDirection, type) => ({\n type: actionTypes.SET_SORT,\n payload: { sortField, sortDirection, type }\n }),\n setUserInput: (slug, key, value) => ({\n type: actionTypes.SET_USER_INPUT,\n // meta: { slug, key },\n payload: { slug, key, value }\n })\n};\n\n// default implementation of mergeProps: Object.assign({}, ownProps, stateProps, dispatchProps)\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...ownProps,\n ...stateProps,\n actions: dispatchProps\n});\n\n// also, forwardRef, for cell onClick events:\nexport const connectToState = (mapStateSliceToProps) =>\n connect(mapStateSliceToProps, mapDispatchToProps, mergeProps, { forwardRef: true });\n","import React, { useCallback, useMemo } from 'react';\nimport {\n shape, string, object, func\n} from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport FormControl from '@mui/material/FormControl';\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport IconButton from '@mui/material/IconButton';\nimport withStyles from '@mui/styles/withStyles';\nimport queryString from 'query-string';\nimport { urlEncode } from '../utils/url'\n\nimport { connectToState } from '../redux/connect-api';\nimport { tabKeys } from '../config';\nimport analytics from '../google-analytics';\n\nimport { SORTABLE_COLUMNS } from '../config/index'\n\nconst styles = ({spacing, breakpoints, shape}) => ({\n textField: {\n marginLeft: spacing(1),\n width: 350,\n },\n searchInput: {\n position: 'relative',\n borderRadius: shape.borderRadius,\n marginLeft: 0,\n width: '100%',\n [breakpoints.up('sm')]: {\n marginLeft: spacing(1),\n width: 'auto'\n }\n },\n searchIconButton: {\n '&:focus': {\n background: '#ffffff50'\n }\n },\n whiteInput: {\n color: 'white',\n '&.Mui-focused': {\n backgroundColor: 'rgba(255,255,255,.1)',\n borderColor: 'white',\n },\n '&.Mui-focused fieldset': {\n borderColor: 'white !important',\n },\n \"&:hover fieldset\": {\n borderColor: 'white !important',\n },\n '&::-webkit-search-cancel-button': {\n color: 'white',\n }\n },\n whiteInputNotchedOutline: {\n color: 'white',\n borderColor: 'rgba(255,255,255,.5)',\n '&:focus': {\n borderColor: 'white',\n }\n },\n whiteInputLabel: {\n color: 'white',\n '&:hover': {\n borderColor: 'white',\n color: 'white',\n },\n },\n whiteInputLabelFocused: {\n color: 'white !important',\n },\n searchIcon: {\n color: 'white',\n }\n});\n\nconst Search = ({match={}, classes, location, history, actions}) => {\n const id = `search-${Math.random()}`\n const { setSort = null } = actions\n const { search = '' } = location\n\n const handleSubmit = useCallback((e) => {\n e.preventDefault();\n const searchString = e.target.search.value;\n const qs = searchString ? `?search=${urlEncode(searchString)}` : '';\n analytics.trackSearch(searchString);\n const activeTabKey = match.params?.activeTabKey ?? tabKeys[0];\n // If on last tab (report snapshot) use that key\n let tab = activeTabKey\n if (activeTabKey === 'compare-your-own-pricing') {\n tab = tabKeys[0]\n }\n if (searchString)\n // Do not sort on search (default to sorting by search score)\n setSort?.(null, 'desc', 'string');\n else {\n // Default to trade_name column if search is reset\n const fieldKey = 'trade_name'\n setSort?.(fieldKey, 'asc', SORTABLE_COLUMNS[fieldKey] || 'string');\n }\n history.push({ pathname: `/${tab}`, search: qs });\n }, [match.params.activeTabKey])\n\n const urlParams = queryString.parse(search);\n // Note difference between \"search\" as a react-router property, vs the URL param named \"search\":\n const searchString = urlParams.search || '';\n\n const endAdornment = (\n \n \n \n \n \n );\n\n return (\n
\n \n \n \n
\n );\n}\n\nSearch.propTypes = {\n classes: object.isRequired, // eslint-disable-line react/forbid-prop-types\n location: shape({\n pathname: string.isRequired,\n search: string.isRequired\n }).isRequired,\n history: shape({\n push: func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = (state) => ({\n // only need access to actions\n sort: state.sort\n});\n\nexport default withRouter(withStyles(styles)(connectToState(mapStateToProps)(Search)));\n","import React from \"react\";\nimport { shape, string, bool } from \"prop-types\";\nimport { Card, CardContent, Menu, MenuItem, Typography } from \"@mui/material/\";\nimport AccountCircleIcon from \"@mui/icons-material/AccountCircle\";\nimport { connectToState } from \"../redux/connect-api\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\nimport analytics from \"../google-analytics\";\nimport { headerLinkStyles, headerMenuStyles } from \"../config/styles\";\nimport googleAnalytics from \"../google-analytics\";\n\nconst ITEM_HEIGHT = 48;\n\nconst UserProfile = ({ profileData = {}, loading }) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n\n const {\n email,\n first_name, // not required in Rails model\n last_name // not required in Rails model\n // phone_number,\n // organization,\n // organization: {\n // name: organization_name,\n // phone_number: organization_phone_number,\n // category: organization_category\n // } = {}\n } = profileData;\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n googleAnalytics.trackHeaderNav({ action: \"menu\", label: \"Profile\" });\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const history = useHistory();\n const handleMenuItemClick = (e) => {\n const href = e.target.attributes[\"data-href\"].value;\n history.push(href);\n setAnchorEl(null);\n };\n const handleLogout = () => {\n analytics.trackAuthentication(false);\n\n document.location.href = \"/app_logout\";\n };\n\n const linkClasses = headerLinkStyles({ anchorEl: anchorEl });\n const menuClasses = headerMenuStyles();\n\n return (\n <>\n \n \n \n \n \n {first_name} {last_name}\n \n \n {email}\n \n \n \n \n Account Settings\n \n \n Change Password\n \n Log Out\n \n \n );\n};\n\nUserProfile.defaultProps = {\n profileData: null\n};\n\nUserProfile.propTypes = {\n profileData: shape({\n email: string,\n first_name: string,\n last_name: string,\n phone_number: string,\n ec_access: bool,\n im_access: bool,\n organization: shape({\n name: string,\n phone_number: string,\n category: string\n })\n })\n};\n\nconst mapStateToProps = (state) => ({\n profileData: state.userProfile.data\n});\n\nexport default connectToState(mapStateToProps)(UserProfile);\n","import React from 'react';\nimport { node, string } from 'prop-types';\n\n// Possibly, if necessary, integrate google-analytics, here?\nconst OutboundLink = ({ href, children }) => (\n \n {children}\n
\n);\n\nOutboundLink.propTypes = {\n href: string.isRequired,\n children: node.isRequired\n};\n\nexport default OutboundLink;\n","import React from \"react\";\nimport { node, string } from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { makeStyles } from \"@mui/styles\";\nimport { useTranslation } from \"react-i18next\";\n\nimport IconButton from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport OutboundLink from \"./OutboundLink\";\nimport { ReactMarkdown } from \"react-markdown/lib/react-markdown\";\n\nconst useStyles = makeStyles(() => ({\n root: {\n \"& .MuiDialogActions-root\": {\n justifyContent: \"space-between\",\n padding: \"8px 16px 8px 16px\",\n \"& .MuiDialogTitle-root\": {\n padding: 0\n }\n },\n \"& .MuiDialogContent-root\": {\n margin: \"0 0 8px 0\", // only on bottom\n padding: \"0 16px 8px 16px\"\n }\n }\n}));\n\nconst Modal = ({ i18nKey, icon, children }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const [modalOpen, setOpen] = React.useState(false);\n\n const handleModalOpen = () => {\n setOpen(true);\n };\n\n const handleModalClose = () => {\n setOpen(false);\n };\n\n const modalId = `${i18nKey}-modal`;\n const title = t(`${i18nKey}.title`);\n const body = t(`${i18nKey}.body`);\n const tooltip = t(`${i18nKey}.tooltip`);\n\n const modalGraphicOrText = icon ? (\n \n {icon}\n \n ) : (\n \n {title}\n \n );\n\n const modalLauncher = !tooltip ? (\n modalGraphicOrText\n ) : (\n {modalGraphicOrText}\n );\n\n return (\n <>\n {modalLauncher}\n \n \n {title}\n \n \n \n \n {body}\n \n {children}\n \n \n \n );\n};\n\nModal.propTypes = {\n i18nKey: string.isRequired,\n icon: node,\n children: node\n};\n\nModal.defaultProps = {\n icon: null,\n children: null\n};\n\nexport default Modal;\n","import {\n oneOf, arrayOf, shape, string, number, bool\n} from 'prop-types';\n\nimport { tabKeys, allFieldKeys, docLabels } from '../config';\n\nexport const analysisType = shape({\n slug: string.isRequired,\n trade_name: string.isRequired,\n specific_condition: string.isRequired\n});\n\n// export const analysisArrayType = arrayOf(analysisType);\n\n// export const analysesType = shape({\n// loading: bool.isRequired,\n// error: string,\n// included: arrayOf(shape({}).isRequired).isRequired,\n// data: analysisArrayType.isRequired\n// });\n\nexport const subRowPropsType = shape({\n rowRenderKey: string.isRequired,\n columnProps: arrayOf(\n shape({\n rowSpan: number.isRequired,\n renderKey: string.isRequired,\n isFiltered: bool.isRequired,\n fieldKey: oneOf(allFieldKeys).isRequired\n }).isRequired\n ).isRequired\n});\n\nexport const dataRowPropsType = arrayOf(\n subRowPropsType.isRequired\n);\n\nexport const columnConfigType = shape({\n row1Props: arrayOf(shape({\n renderKey: string.isRequired,\n label: string.isRequired\n })).isRequired,\n row2Props: arrayOf(shape({\n renderKey: string.isRequired,\n label: string.isRequired\n })).isRequired,\n dataRowProps: dataRowPropsType.isRequired\n});\n\nexport const documentType = shape({\n key: oneOf(Object.keys(docLabels)).isRequired,\n filename: string.isRequired,\n content_type: string.isRequired, // cannot be fully enumerated, beforehand?\n byte_size: number.isRequired,\n checksum: string.isRequired,\n url: string.isRequired\n});\n\nexport const documentArrayType = arrayOf(documentType);\n\nexport const videoType = shape({\n field_name: oneOf([\n 'youtube_id_1',\n 'youtube_id_2',\n 'youtube_id_3',\n 'youtube_id_4',\n 'youtube_id_5'\n ]),\n id: string.isRequired,\n title: string.isRequired\n});\n\nexport const videoArrayType = arrayOf(videoType);\n\nexport const tabKeyType = oneOf(tabKeys);\n\n// props from react-router:\n// export const locationType = shape({\n// pathname: string.isRequired,\n// search: string.isRequired\n// });\n//\n// export const matchType = shape({\n// params: shape({\n// activeTabKey: tabKeyType.isRequired\n// })\n// });\n//\n// export const historyType = shape({\n// push: func.isRequired\n// });\n","import React from \"react\";\nimport { Box, Chip } from \"@mui/material\";\nimport { platformConfig } from \"../config\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles(({ palette }) => ({\n chip: {\n \"&:focus\": {\n boxShadow: `0 0 0 0.2rem ${palette.secondary.main}`\n }\n }\n}));\n\nconst PlatformChips = ({ chips, style = {} }) => {\n const classes = useStyles();\n return (\n \n {chips.map((chip, i) => {\n const tool = platformConfig.tools.find((t) => t.name === chip);\n return (\n \n );\n })}\n \n );\n};\n\nexport default PlatformChips;\n","import React from 'react';\nimport { number, bool } from 'prop-types';\nimport {\n Box,\n Card,\n Typography,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport { videoType } from '../../constants/proptypes';\nimport PlatformChips from '../PlatformChips';\n\nconst useStyles = makeStyles(({spacing}) => ({\n root: {\n backgroundColor: 'transparent',\n paddingBottom: spacing(4),\n overflow: 'visible',\n '& > iframe': {\n backgroundColor: '#000',\n margin: spacing(0),\n padding: spacing(0)\n },\n '& > .video-title': {\n display: 'block',\n padding: spacing(0),\n paddingBottom: spacing(0.5),\n textAlign: 'left',\n '&.featured': {\n fontWeight: 'normal'\n },\n '&.related': {\n fontWeight: 'normal'\n }\n }\n },\n videoWrapper: {\n position: 'relative',\n paddingBottom: '56.25%',\n height: 0,\n '& iframe': {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n }\n },\n videoTitle: {\n margin: 0,\n marginRight: spacing(2),\n },\n videoTitleBelow: {\n margin: 0,\n marginTop: spacing(1),\n },\n}));\n\nconst VideoPlayer = ({\n isFeatured, video, width, height,\n}) => {\n const { id, title, tags=[], description='' } = video;\n const classes = useStyles();\n return (\n \n { isFeatured &&\n \n \n {title}\n { tags.length > 0 && }\n \n { description && {description} }\n \n }\n \n \n \n { !isFeatured && {title} }\n \n );\n};\n\nVideoPlayer.defaultProps = {\n isFeatured: false\n};\n\nVideoPlayer.propTypes = {\n isFeatured: bool,\n width: number,\n height: number,\n video: videoType.isRequired\n};\n\nexport default VideoPlayer;\n","// ScrollSpy component is in development\n// https://github.com/mui-org/material-ui/issues/16359#issuecomment-617365879\n\nimport { useEffect, useMemo } from 'react';\nimport throttle from 'lodash/throttle';\n\nconst useThrottledOnScroll = (callback, {delay=166}) => {\n const throttledCallback = useMemo(\n () => (callback ? throttle(callback, delay) : noop),\n [callback, delay]\n );\n\n useEffect(() => {\n if (throttledCallback === noop) {\n return undefined;\n }\n\n const root = document.getElementById('scroll-container') || window\n root.addEventListener('scroll', throttledCallback);\n return () => {\n root.removeEventListener('scroll', throttledCallback);\n throttledCallback.cancel();\n };\n }, [throttledCallback]);\n};\n\nconst noop = () => {};\n\nexport default useThrottledOnScroll;\n","import React from \"react\";\nimport { connectToState } from \"../redux/connect-api\";\nimport { bool, shape } from \"prop-types\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { Link as MaterialLink } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { platformConfig } from \"../config\";\nimport { alpha } from \"@mui/material/styles\";\nimport googleAnalytics from \"../google-analytics\";\nimport { Link } from \"react-router-dom\";\nimport useThrottledOnScroll from '../hooks/useThrottleScroll';\n\nconst useParentTabStyles = makeStyles(({ breakpoints }) => ({\n root: {\n transition: \".25s opacity ease-in-out\",\n opacity: 0,\n display: \"none\",\n [breakpoints.up(\"lg\")]: {\n display: \"flex\"\n }\n },\n scroller: {\n display: \"flex\",\n alignItems: \"stretch\"\n },\n indicator: {\n height: 3\n }\n}));\nconst useTabStyles = makeStyles(({ palette }) => {\n const color = palette.secondary.main;\n return {\n root: {\n color: color,\n textDecoration: \"none\",\n \"&:hover,&:focus\": {\n background: alpha(color, 0.1),\n textDecoration: \"none\"\n },\n \"&.Mui-selected\": {\n pointerEvents: \"none\",\n fontWeight: 600\n }\n }\n };\n});\n\nconst ToolTabs = ({ loading, toolAccess, showAlways = true, showActiveTab = true }) => {\n const tabsClasses = useParentTabStyles();\n const tabClasses = useTabStyles();\n const { tools } = platformConfig;\n const [tabsVisible, showTabs] = React.useState(false);\n\n useThrottledOnScroll(() => {\n const container = document.getElementById('scroll-container')\n if (!container) return;\n showTabs(container.scrollTop > 800);\n }, { delay: 500 })\n\n const tabsStyle = { opacity: 1 };\n if (!showAlways && !tabsVisible) {\n tabsStyle.opacity = 0;\n }\n\n if (loading) return null;\n\n return (\n <>\n \n {tools.map(({ id, name, href, to }, i) => (\n googleAnalytics.trackHeaderNav({ action: \"tab\", label: name })}\n tabIndex={showAlways || tabsVisible ? 0 : -1} // Only allow tab navigation if visible\n />\n ))}\n \n \n );\n};\n\nToolTabs.defaultProps = {\n loading: true,\n toolAccess: {\n ecAccess: false,\n imAccess: false\n }\n};\n\nToolTabs.propTypes = {\n loading: bool,\n toolAccess: shape({\n ecAccess: bool,\n imAccess: bool\n })\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading,\n toolAccess: {\n ecAccess: state.userProfile.data.ec_access,\n imAccess: state.userProfile.data.im_access\n }\n };\n};\n\nexport default connectToState(mapStateToProps)(ToolTabs);\n","const readCsrfToken = () => {\n const csrfTokenEl = document.querySelector('meta[name=\"csrf-token\"]');\n return csrfTokenEl && csrfTokenEl.getAttribute(\"content\") || \"\";\n};\nexport default readCsrfToken;\n","export const formId = 'sign-in-form'\n","import React from \"react\";\nimport readCsrfToken from \"client/utils/readCsrfToken\";\nimport Button from '@mui/material/Button';\nimport AccountCircle from '@mui/icons-material/AccountCircle';\nimport analytics from '../google-analytics';\nimport { formId } from './landing/config'\nimport googleAnalytics from \"../google-analytics\";\nimport useAuthentication from \"../hooks/useAuthentication\";\n\nconst csrf = readCsrfToken();\nconst style = { display: \"inline-block\" };\n\nconst LoginButton = () => {\n const { applicationLoginUrl, applicationLoginMethod } = useAuthentication()\n return (\n
\n \n }\n onClick={() => googleAnalytics.trackLoginClick(\"Header\")}\n >\n Login\n \n \n );\n};\n\nexport default LoginButton;\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\nimport { node, object, string } from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport { Menu, MenuItem, ListItemIcon, ListItemText, Typography } from \"@mui/material/\";\nimport { makeStyles } from \"@mui/styles\";\nimport { headerLinkStyles, headerMenuStyles } from \"../../config/styles\";\n\nimport ExpandMoreRoundedIcon from \"@mui/icons-material/ExpandMoreRounded\";\nimport googleAnalytics from \"../../google-analytics\";\n\nconst BaseMenu = ({ children, MenuIcon, menuTitle, items }) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const linkClasses = headerLinkStyles({ anchorEl: anchorEl });\n const menuClasses = headerMenuStyles();\n\n const history = useHistory();\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n googleAnalytics.trackHeaderNav({ action: \"menu\", label: menuTitle });\n };\n\n const handleClose = (event) => {\n setAnchorEl(null);\n };\n\n const slug = menuTitle\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .concat(\"-menu\");\n\n return (\n <>\n \n \n {menuTitle}\n \n \n \n {items.map((item, i) => (\n {\n googleAnalytics.trackHeaderNav({\n action: \"menu\",\n label: item.googleAnalyticsLabel\n });\n history.push(item.href);\n setAnchorEl(null);\n }}\n >\n {item.icon}\n {item.text}\n \n ))}\n \n \n );\n};\n\nBaseMenu.propTypes = {\n children: node,\n menuIcon: object,\n menuTitle: string\n};\n\nBaseMenu.defaultProps = {\n children: null,\n menuIcon: null,\n menuTitle: null\n};\n\nexport default BaseMenu;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\n\nconst VideoSettingsRoundedIcon = (props) => {\n return (\n \n \n \n \n );\n};\n\nexport default VideoSettingsRoundedIcon;\n","import React from \"react\";\n\nimport OndemandVideoRoundedIcon from \"@mui/icons-material/OndemandVideoRounded\";\nimport DescriptionRoundedIcon from \"@mui/icons-material/DescriptionRounded\";\n\nimport BaseMenu from \"./BaseMenu\";\nimport VideoSettingsRoundedIcon from \"../icons/VideoSettingsRoundedIcon\";\n\nconst ResourcesMenu = () => {\n return (\n ,\n href: \"/webinars\",\n googleAnalyticsLabel: \"Resources: Webinars\"\n },\n {\n text: \"Demo videos\",\n icon: ,\n href: \"/videos\",\n googleAnalyticsLabel: \"Resources: Videos\"\n },\n {\n text: \"Documents\",\n icon: ,\n href: \"/documents\",\n googleAnalyticsLabel: \"Resources: Documents\"\n }\n ]}\n />\n );\n};\n\nexport default ResourcesMenu;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\n\nconst TipsAndUpdatesRoundedIcon = (props) => {\n return (\n \n \n \n );\n};\n\nexport default TipsAndUpdatesRoundedIcon;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\n\nconst MoreTimeRoundedIcon = (props) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default MoreTimeRoundedIcon;\n","import React from \"react\";\n\nimport BaseMenu from \"./BaseMenu\";\nimport TipsAndUpdatesRoundedIcon from \"../icons/TipsAndUpdatesRoundedIcon\";\nimport MoreTimeRoundedIcon from \"../icons/MoreTimeRoundedIcon\";\n\nconst UpdatesMenu = () => {\n return (\n ,\n href: \"/updates\",\n googleAnalyticsLabel: \"Updates: Updates\"\n },\n {\n text: \"Coming soon\",\n icon: ,\n href: \"/coming-soon\",\n googleAnalyticsLabel: \"Updates: Coming Soon\"\n }\n ]}\n />\n );\n};\n\nexport default UpdatesMenu;\n","import React from \"react\";\nimport Button from \"@mui/material/Button\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n skipToContent: {\n position: \"absolute\",\n left: -9999,\n top: theme.spacing(2),\n transform: \"translateX(-50%)\",\n \"&:focus\": {\n left: \"50%\"\n }\n }\n}));\n\nexport default function SkipToContentLink() {\n const classes = useStyles();\n return (\n \n Skip to main content\n \n );\n}\n","import { Link as RouterLink, useLocation } from \"react-router-dom\";\nimport { bool } from \"prop-types\";\nimport React from \"react\";\nimport { AppBar, Link, Toolbar, Typography } from \"@mui/material/\";\nimport { makeStyles } from \"@mui/styles\";\nimport { headerLinkStyles } from \"../config/styles\";\n\nimport Search from \"./Search\";\nimport HelpIcon from \"@mui/icons-material/ContactSupport\";\nimport UserProfile from \"./UserProfile\";\nimport AnalyticsLogo from \"../styles/icons/analytics-logo.svg\";\nimport Modal from \"./modals/Modal\";\nimport VideoPlayer from \"./details/VideoPlayer\";\nimport ToolTabs from \"./ToolTabs\";\nimport LoginButton from \"./LoginButton\";\nimport ResourcesMenu from \"./menus/ResourcesMenu\";\nimport UpdatesMenu from \"./menus/UpdatesMenu\";\nimport SkipToContentLink from \"./SkipToContentLink\";\nimport googleAnalytics from \"../google-analytics\";\n\nconst useStyles = makeStyles(({ palette, breakpoints }) => ({\n appBar: {\n backgroundColor: palette.common.white,\n display: \"flex\",\n flexDirection: \"row\",\n paddingLeft: 15, // Aligned with IM tool's header margins\n borderBottom: `${palette.grey[200]} 1px solid`\n },\n appBarJustified: {\n justifyContent: \"space-between\"\n },\n headerSearch: {\n display: \"none\"\n },\n toolbar: {\n padding: 0,\n paddingLeft: 15,\n paddingRight: 15,\n flex: \"1 1 auto\",\n maxWidth: \"100%\",\n alignItems: \"stretch\"\n },\n navSecondary: {\n marginLeft: \"auto\",\n display: \"flex\",\n alignItems: \"center\"\n },\n logoLink: {\n display: \"flex\",\n flex: \"0 1 100px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingLeft: 5,\n paddingRight: 5,\n minWidth: 100\n },\n logoImage: {\n maxHeight: 40.5\n },\n title: {\n flexGrow: 1,\n display: \"none\",\n [breakpoints.up(\"sm\")]: {\n display: \"block\"\n }\n }\n}));\n\n/**\n * Right now, this launches the \"Review Demo Modal\", but eventually,\n * this could be a menu like UserProfile, where one of the links launches the same modal.\n */\nconst Help = () => {\n const classes = headerLinkStyles();\n return (\n googleAnalytics.trackHeaderNav({ action: \"item\", label: \"Contact Us\" })}\n >\n \n Contact Us\n \n );\n};\n\nconst LandingButtons = () => {\n return (\n <>\n \n \n );\n};\n\nconst Header = ({ isSignedIn, isDeviseView }) => {\n const classes = useStyles();\n const location = useLocation();\n\n const isToolSelectorPage = location.pathname.includes(\"tools\");\n const isGlobalPage = Boolean(\n location.pathname.match(/^\\/(tools|webinars|videos|coming-soon|documents|updates|soon|account|password)$/)\n );\n const isLandingPage = !isSignedIn && !isDeviseView;\n\n const userProfileIsEnabled = !isLandingPage && isSignedIn && !isDeviseView;\n const showToolButtons = userProfileIsEnabled && !isLandingPage && !isToolSelectorPage;\n\n // const debug = `isSignedIn:${isSignedIn}, isDeviseView:${isDeviseView}`;\n let appBarClasses = classes.appBar;\n if (isLandingPage || isToolSelectorPage) {\n appBarClasses += ` ${classes.appBarJustified}`;\n }\n\n return (\n \n googleAnalytics.trackHeaderNav({ action: \"item\", label: \"Logo (home)\" })}\n >\n \"ICER\n \n \n \n \n
\n {isLandingPage && }\n
{userProfileIsEnabled && }
\n {userProfileIsEnabled && }\n {userProfileIsEnabled && }\n {userProfileIsEnabled && }\n {userProfileIsEnabled && }\n
\n
\n
\n );\n};\n\nHeader.propTypes = {\n isSignedIn: bool.isRequired,\n isDeviseView: bool.isRequired\n};\n\nHeader.defaultProps = {};\n\nexport default Header;\n","import React from \"react\";\nimport { string } from \"prop-types\";\nimport { makeStyles } from \"@mui/styles\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactMarkdown } from \"react-markdown/lib/react-markdown\";\n\nimport OutboundLink from \"./OutboundLink\";\n\nconst useStyles = makeStyles(() => ({\n root: {\n \"& dl\": {\n marginTop: \"8px\",\n \"& dt\": {\n margin: 0,\n fontWeight: \"bold\"\n },\n \"& dd\": {\n marginTop: \"4px\"\n }\n }\n }\n}));\n\nconst DefinitionList = ({ term, definition }) => (\n
\n
{term}
\n \n {definition}\n \n
\n);\n\nDefinitionList.propTypes = {\n term: string.isRequired,\n definition: string.isRequired\n};\n\nconst GlossaryContent = React.memo(({ i18nKey }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const terms = t(i18nKey);\n return
{terms.map(DefinitionList)}
;\n});\n\nGlossaryContent.propTypes = {\n i18nKey: string.isRequired\n};\n\nexport default GlossaryContent;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n \"& h4\": {\n // border: '1px dashed red',\n marginBottom: \"2px\",\n \"& a\": {\n // anchor destinations\n cursor: \"default\",\n color: theme.palette.text.primary,\n textDecoration: \"none\"\n }\n },\n \"& h5\": {\n // color: 'red',\n margin: 0\n },\n \"& li\": {\n // border: '1px dashed #f0f',\n marginTop: 0\n },\n \"& p\": {\n // border: '1px dashed green',\n marginTop: 0\n },\n \"& a\": {}\n }\n}));\n\nconst PrivacyContent = React.memo(() => {\n const classes = useStyles();\n\n /* eslint-disable max-len */\n return (\n
\n

LAST UPDATED: JUNE 8, 2021

\n

\n Evidence for Healthcare Improvement d/b/a the Institute for Clinical and Economic Review\n (\"ICER\", \"we\", \"us\" or \"our\") is committed to protecting and preserving your privacy. This\n policy, together with our Terms of Use and Conditions located at{\" \"}\n https://analytics.icer.org/,{\" \"}\n https://icer-review.org/; and{\" \"}\n https://icer.org/, sets out the basis on which any Personal\n Information and Anonymous Information (each as defined below) we collect from you, or that\n you (\"you\" and \"your\") provide to us, will be processed, stored, shared, and used by us. By\n accessing or using our website(s) available at{\" \"}\n https://analytics.icer.org/,{\" \"}\n https://icer-review.org/; and{\" \"}\n https://icer.org/ (each, a \"Site\" and collectively, the\n \"Sites\"), you are accepting the practices described in this Privacy Policy (\"Privacy\n Policy\").\n

\n

\n By using this Site, you consent to the use of information that you provide to us in\n accordance with this Privacy Policy. We may update this Privacy Policy from time to time so\n please review this Privacy Policy regularly. If we materially alter our Privacy Policy, we\n may notify you by posting a notice on our Site. Your continued use of or access to the Site\n will be deemed your agreement that your information may be used in accordance with the new\n policy.{\" \"}\n \n BY ACCESSING OR USING THE SITE, YOU AGREE TO THE TERMS OF THIS PRIVACY POLICY; IF YOU DO\n NOT AGREE, DO NOT ACCESS OR OTHERWISE USE THE SITE\n \n .\n

\n

\n We have structured our Site so that you can visit it without identifying yourself or\n revealing any Personal Information, however some functions available on the Site may require\n you to disclose certain Personal Information. If you choose to provide us with Personal\n Information, it will be used in accordance with this Privacy Policy.\n

\n\n

Terms of Service

\n

\n Please read this Privacy Policy carefully to fully understand how we collect, share and\n protect information about you. This Policy is incorporated into and is a part of the Terms\n of Use and Conditions of this Site (the \"Terms\"). To access the Terms{\" \"}\n click here.\n

\n

\n In order to deliver personalized and relevant information to you through our Site, we may\n collect certain information from users. Please do not provide any sensitive information. If\n you should do so inadvertently, we may use and disclose that information in the same manner\n as any other information you provide to us.\n

\n\n

Linked Sites and Service Providers

\n

\n This Privacy Policy does not address, and ICER is not responsible for, the privacy,\n information, or other data collection, storage, and use practices of any third party\n operating any site or property to which the Sites link (each, a \"Linked Site\") or third\n parties who may provide certain services in connection with your access and use of, and\n ICER's ability to provide certain products and services to you through, the Site as further\n detailed herein, including, without limitation, Facebook, Inc., Apple Inc., Google Inc.,\n Microsoft Corp., Research In Motion, any wireless carriers and any third party (each, a\n \"Service Provider\"). ICER recommends you review the privacy policies of each Linked Site or\n Service Provider prior to accessing or using the Linked Sites or Site. The inclusion of a\n link to a Linked Site does not imply ICER's endorsement of, or affiliation with, the Linked\n Site. TO THE FULLEST EXTENT PERMITTED BY LAW, YOU HEREBY RELEASE ICER AND EACH OF THE OTHER\n ICER PARTIES AS DEFINED BELOW) FROM ANY CLAIMS OR DAMAGES OF ANY KIND OR NATURE, KNOWN OR\n UNKNOWN, SUSPECTED OR UNSUSPECTED, DISCLOSED OR UNDISCLOSED, RELATING TO THE DATA\n COLLECTION, STORAGE, USE, AND SHARING OF YOUR OR ANY THIRD PARTY'S PERSONAL INFORMATION OR\n ANONYMOUS INFORMATION BY ANY SERVICE PROVIDER. YOU AGREE, UNDERSTAND AND INTEND THAT THIS\n ASSUMPTION OF RISK AND RELEASE IS BINDING UPON YOU AND YOUR HEIRS, EXECUTORS, AGENTS,\n ADMINISTRATORS AND ASSIGNS IN PERPETUITY.\n

\n\n

Information We Collect

\n

\n In operating our Site, we may collect and process Personal Information and Anonymous\n Information such as the following data about you:\n

\n
    \n
  • \n Details of your visits to our Site and the resources that you access, including, but not\n limited to, traffic data, location data, weblogs and other communication data, including\n your IP address, the date and time you accessed or left the Site and which pages you\n viewed. Some parts of our Site use cookies and other technologies to collect this\n information about your general internet usage. See section below, titled 'Information We\n Collect Automatically,\" to learn more.\n
  • \n
  • \n Information that you provide directly to us. See section below titled \"Information We\n Collect Directly From You\".\n
  • \n
\n

\n \"Personal Information\" is information that can be used to identify you (whether alone or in\n combination), such as your first and last name, email address, zip code/post code, billing\n address, shipping address, phone number, payment card information, age, and any other\n information you choose to provide.\n

\n

\n \"Anonymous Information\" is aggregated or pseudonimized information which cannot be used to\n identify you, such as information about ICER's users that it renders in such a way that it\n no longer identifies or references an individual user.\n

\n\n

\n Information We Collect Directly From You. When you access our Site and\n Services you may provide us Personal Information directly as follows:{\" \"}\n

\n
    \n
  • \n To Create an Account: When you sign up for an ICER account, you may be requested to\n provide your name, email address, employer or organization affiliation, phone number,\n address, business sector information, and if a payor, the number of covered lives.\n
  • \n
  • \n To use the Evidence Compendium (EC) application in ICER Analytics: When you enter data\n into the Evidence Compendium program for comparison, including, without limitation, net\n price (\"EC Data\"), EC Data are stored so such EC Data are available for your next\n sessions. EC Data are not accessed by any third party, but may be used by ICER solely for\n the purposes of providing the Services by and through the Sites. When you subscribe to\n ICER Analytics, you have the right to opt out of the aforementioned EC Data storage\n function, in which case the EC Data entered are not stored or saved.\n
  • \n
  • \n To use the Interactive Modeler (IM) application in ICER Analytics: When you enter data\n into the Interactive Modeler program for computation (\"IM Data\"), IM Data are stored so\n such IM Data are available for your next sessions. IM Data are not accessed by any third\n party, but may be used by ICER solely for the purposes of providing the Services by and\n through the Sites. When you subscribe to ICER Analytics, you have the right to opt out of\n the aforementioned IM Data storage function, in which case the IM Data entered are not\n stored or saved.\n
  • \n
  • \n To Sign Up for Our Newsletter: When you sign up for our newsletter, you may be asked to\n provide your name, email address, and other contact information.\n
  • \n
  • \n To Contact Us: When you contact us through our Sites or otherwise, you may be requested to\n provide your full name, email address, and any account information.\n
  • \n
\n\n

\n Information We Collect Automatically. We and our Service Providers may\n collect certain Personal Information automatically as the result of your use of the Site and\n other web analytics services. This information generally includes:\n

\n
    \n
  • \n Usage Data: When you use the Site, we and our Service Providers may track and\n collect usage data and information about your interactions with the Site such as the pages\n that you visit, the links you click, and the date and time your device accesses the Site\n or our servers.\n
  • \n
  • \n Cookies, Web Beacons, and Log Data: Like most companies, when you visit or interact\n with the Site, we and our Service Providers may use cookies and other tracking\n technologies for storing information, including pixels, web beacons, \"clear GIFs,\" local\n storage, and device identifiers to help provide, protect and improve the Site.\n
      \n
    • \n An Internet Protocol (IP) address is a number that is automatically assigned to your\n device from which you are accessing the Site by your Internet Service Provider (ISP),\n and is identified and logged automatically in our server log files whenever you visit\n the Site, along with the time of the visit and the activity on the Site, browser type\n and operating system, device information, device event information, and the page\n you've viewed or engaged with before or after using the Site. We and our Service\n Providers use IP addresses for purposes such as calculating Site usage levels, helping\n diagnose server problems, administering the Site and determining your approximate\n geographic location.\n
    • \n
    • \n \"Cookies\" are small pieces of information that a website attaches to your browser when\n you visit a website. We may use both \"session\" Cookies (which expire once you close\n your web browser) and \"persistent\" Cookies (which stay on your computer until deleted)\n to provide you with a more personal and interactive experience with the Site. When you\n visit a website, that website's computer asks your computer for permission to store\n this file in a part of your hard drive specifically designated for cookies. Each\n website can send its own cookie to your browser if your browser's preferences allow\n it. We do not store Personal Information in any cookies on your computer. Persistent\n cookies can be removed by following your Internet browser's directions within the help\n tab. However, in order to use certain aspects of the Site, your web browser must\n accept cookies, and therefore some aspects of the Site may not work properly if you\n choose to disable cookies.\n
    • \n
    • \n We may also use cookies, pixels, \"Web Beacons\" (which are usually small, transparent\n graphic images) and navigational data like Uniform Resource Locators (URLs) to gather\n information regarding the date and time of your visit, the features and information\n for which you searched and viewed, or the e-mail you opened. This type of information\n is collected to make the Site more useful to you and to tailor the experience with us\n to meet your interests and needs.\n
    • \n
    \n
  • \n\n
  • \n Geographic Location Information: If you use any location-enabled products or\n services, you may be sending us location information (e.g. IP address). When you use a\n location-enabled service, we may collect and process information about your precise\n geographical location, such as GPS signals sent by a mobile device. We and our Service\n Providers and partners may use your device's physical location to provide you with\n personalized location-based services, content and advertisements. In some instances, you\n may be permitted to allow or deny such uses of your device's location, but if you choose\n to deny such uses, we may not be able to provide you with the applicable personalized\n services and content.\n
  • \n
  • \n Device Information: Certain information is collected by most browsers, such as your\n Media Access Control (MAC) address, device type (Windows or Macintosh), screen resolution,\n operating system version, Internet browser type and version and the type and version of\n the Site that you are using. We and our Service Providers may also collect a unique device\n identifier assigned by us or our Service Providers to the device from which you are\n accessing the Site and other transactional information for the device that we and our\n Service Providers may use to serve content and advertisements to the device.\n
  • \n
  • \n \n Software Development Kits (\"SDK(s)\"):\n {\" \"}\n We may use third parties including our business partners and Service Providers who use\n mobile SDKs to collect information and information related to how mobile devices interact\n with the Site. An SDK is computer code that app developers can include in their apps to\n enable ads to be shown, data to be collected and related services and functionality to be\n implemented. A mobile SDK is in effect the mobile app version of a pixel tag or beacon. We\n may use this technology, for instance, to analyze how you interact with content and\n advertisements and to enable analytics or other features through mobile devices.\n
  • \n
  • \n Aggregated Information: We may aggregate Personal Information so that the\n end-product does not personally identify you or any other user of the Site, for example,\n by using Personal Information to calculate the percentage of our users who like a\n particular product or service.\n
  • \n
\n\n

Information from Third Parties.

\n

\n We engage third parties, such as Google Analytics, to provide analytics about the use of our\n Site. These third-party ad networks and exchange providers may use third-party cookies,\n pixels, or similar technologies to collect information, including your device identifier, IP\n address, or identifier for advertising. The information these third parties collect may be\n used to help us in providing you with more relevant advertising that we serve on or off the\n Site, and as described above. We use Google Analytics, an analytics tool provided by Google,\n Inc., to collect and process data about your use of the Site including when you visit the\n Website, URLs of the websites that you visit prior to visiting the Site and when you visit\n those websites, and IP addresses assigned to the devices from where you access the Internet.\n Google sets and reads cookies to collect this data and your web browser will automatically\n send data collected by those cookies to Google. Google uses this data to provide us with\n reports that we will use to improve the Site's structure and content. For more information\n on how Google uses this data, visit{\" \"}\n Google's Privacy Policy\n {\" \"}and Google's page on{\" \"}\n \n How Google uses data when you use our partners' sites or apps\n \n . Furthermore, third-party cookies are covered by the third parties' privacy policy. If you\n would like more information about this practice and to know your choices about not having\n this information used by these companies, please visit the Network Advertising Initiative at\n www.networkadvertising.org or the Digital Advertising Alliance at{\" \"}\n www.aboutads.info.\n

\n\n

Use and Sharing of Your Information

\n

We may collect such information for uses that include, but may not be limited to:

\n
    \n
  • \n enabling us to provide our services to you in the best possible manner, including to help\n us operate, evaluate, develop, analyze, manage and improve our products, Sites and\n Services;\n
  • \n
  • \n auditing related to a current interaction with you and concurrent transactions; certain\n short-term, transient uses;\n
  • \n
  • \n detecting security incidents, protecting against malicious, deceptive, fraudulent or\n illegal activity, or prosecuting those responsible for that activity;\n
  • \n
  • \n debugging to identify and repair errors that impair existing intended functionality;\n undertaking internal research for technological development and demonstration;\n
  • \n
  • \n undertaking activities to verify or maintain the quality or safety of a service or device\n that is owned, manufactured, manufactured for, or controlled by us, and to improve,\n upgrade, or enhance the service or device that is owned, manufactured for, or controlled\n by us;\n
  • \n
  • \n to provide you with information relating to our organization, or to monitor and conduct an\n analysis of our Site traffic and usage patterns;\n
  • \n
  • \n to communicate with you via a newsletter or in connection with any service or information\n requests submitted by you;\n
  • \n
  • \n administering and improving our Site, including troubleshooting, data analysis, testing,\n research, statistical and survey purposes;\n
  • \n
  • \n As ICER believes to be necessary or appropriate: (i) under applicable law, including laws\n outside your country of residence; (ii) to comply with legal process; (iii) to respond to\n requests from public or government authorities, including public or government authorities\n outside your country of residence; (iv) to enforce the Terms and Privacy Policy; (v) to\n protect ICER's operations; (vi) to protect ICER's rights, privacy, safety or property, or\n that of you or others; or (vii) to allow ICER to pursue available remedies or limit the\n damages that ICER may sustain.\n
  • \n
\n

\n We also may de-identify and/or aggregate information to create aggregate or de-identified\n data sets and reports in order to assess, improve, and develop ICER's business, products,\n and services; prepare benchmarking reports; and for other research and analytics purposes.\n

\n

\n ICER will not sell, share, or rent your Personal Information to others in ways different\n from what is disclosed in this statement, or otherwise without your consent.\n Notwithstanding, ICER may disclose your Personal Information or Anonymous Information to\n third parties as follows:\n

\n
    \n
  • \n To its Service Providers to (i) provide the services necessary for them to perform tasks\n on ICER's behalf, including, without limitation, hosting, data analysis, process\n transactions, email delivery, and other similar tasks; or (ii) provide advertising,\n campaign measurement, online and mobile analytics, and related services. These Service\n Providers access and use of such Personal Information and Anonymous Information to allow\n ICER better reach individuals with relevant ads and measure ICER's ad campaigns, or to\n better understand how individuals interact with ICER's Sites and online services over time\n and across devices;\n
  • \n
  • \n To courts, law enforcement agencies, and governmental authorities (i) to comply with\n applicable law, including laws outside your country of residence; (ii) to comply with\n legal process; (iii) to respond to requests from public or government authorities,\n including public or government authorities outside your country of residence; (iv) to\n enforce the Terms; (v) to protect ICER's operations; (vi) to protect ICER's rights,\n privacy, safety or property, or that of you or others; or (vii) to allow ICER to pursue\n available remedies or limit the damages that ICER may sustain; and\n
  • \n
  • \n As part of a sale, merger or change in control of ICER, or in preparation for any of these\n events. Any other entity that buys ICER or part of its business will have the right to\n continue to use your data as set out in this Privacy Policy unless you agree otherwise.\n
  • \n
\n

\n \n Notwithstanding the foregoing, ICER may share or sell aggregated or Anonymous Information,\n but not identifying information, to third parties in accordance with applicable law.\n However, ICER never sells the net pricing EC Data or IM Data you enter into the Evidence\n Compendium program of ICER Analytics. Such pricing information is proprietary and\n sensitive, and ICER will not share such information with any third party. ICER may retain\n such information solely for the purposes of providing its services by and through the\n Sites, unless you opt-out of the storage and saving function of EC Data or IM Data when\n you subscribe to ICER Analytics as otherwise outlined herein.\n \n

\n\n

Security

\n

\n To ensure that your information is secure, we have put in place commercially suitable\n physical, electronic, and managerial procedures to safeguard and secure the information we\n collect on our Site.\n

\n

\n Nonetheless, the transmission of information via the internet is not completely secure and\n therefore we cannot guarantee the security of data sent to us electronically on our Site,\n and transmission of such data is therefore entirely at your own risk.\n

\n\n

Protected Information

\n

\n ICER is neither a \"covered entity\" nor a \"business associate\" under the Health Insurance\n Portability and Accountability Rule of 1996 and its implementing regulations (collectively,\n \"HIPAA\"). It is important to note that HIPAA does not necessarily apply to\n an entity or person simply because there is health information involved in an arrangement\n and we believe that HIPAA does not apply to your transactions or communications with ICER.\n

\n\n

Your choices regarding our use and disclosure of your Personal Information.

\n

\n In some jurisdictions, including the EEA, you may exercise certain rights to access, request\n copies of, change or correct, request our deletion or transfer, object to or reject certain\n processing of your Personal Information. You may, of course, decline to share certain\n Personal Information with us. In such circumstances we may not be able to provide to you\n some or all of the features and functionality found on the Site.\n

\n\n

California Privacy Rights

\n

\n California law allows California residents to ask companies with whom they have an\n established business relationship to provide certain information about the companies’\n sharing of personal information with third parties for direct marketing purposes. We do not\n share any California consumer personal information with third parties for marketing purposes\n without consent.\n

\n

\n California users who wish to request further information about our compliance with this law\n or have questions or concerns about our privacy practices may contact us using the contact\n information set forth below.\n

\n\n

European Economic Area Notice:

\n

\n If you are accessing and using our Site and Services and are located in the European\n Economic Area (\"EEA\") or the United Kingdom (the \"UK\"),\n the following additional information (the \"Notice\") applies with respect to\n your Personal Information. If you have questions about how we handle your Personal\n Information or would like to exercise any of your rights described in this Notice, please\n reach out to us in writing by contacting us at:{\" \"}\n info@icer-review.org or Institute for Clinical and\n Economic Review, 14 Beacon Street, 8th Floor, Boston, MA 02108 with the subject\n line: EEA Data Rights. Each clause of this Privacy Policy shall apply to you to the maximum\n extent permitted under applicable law.\n

\n

\n If you are located in the EEA or the UK, the following rights apply to you: subject to\n applicable law, you have the right to request access to and rectification of the Personal\n Information ICER maintains about you, to request the restriction of the processing of your\n Personal Information or to object to that processing on grounds relating to your situation.\n As described under \"Opting Out\" below, you have a right to unsubscribe from any marketing\n communications we may send to you. In addition, you may have the right to request erasure of\n your Personal Information from ICER's systems in certain circumstances provided by\n applicable law. Subject to applicable law, where technically feasible and following your\n written request and verifiable identification, we will provide you with a copy of your EEA\n or UK Personal Information in a structured, commonly used, machine readable format.{\" \"}\n

\n

\n \n How you can access, change or suppress your Personal Information or opt-out of other\n services.\n {\" \"}\n Subject to any limitations noted in this Privacy Policy, if you would like to review,\n correct, update, suppress, delete or otherwise limit our use or sale of your Personal\n Information that you have previously provided to us, you may contact us by mailing us at:\n Institute for Clinical and Economic Review, 14 Beacon Street, 8th Floor, Boston,\n MA 02108, and include your name, address, and e-mail address, or emailing us at{\" \"}\n info@icer-review.org with \"Legal\" in the subject\n line. In your request, please make clear what Personal Information you would like to have\n changed and what limitations (if any) you would like to place on our use of your Personal\n Information. We will try to comply with your request as soon as reasonably practicable. We\n may need to retain certain information for recordkeeping purposes, and there may also be\n residual information that will remain within our databases and other records which will not\n be removed. We are not responsible for changing, removing or suppressing information from\n the databases of unaffiliated third parties, including any of our service providers, with\n which we have already shared your Personal Information.\n

\n\n

Verifying Requests:

\n

\n To help protect your privacy and maintain security, we will take steps to verify your\n identity before granting you access to your Personal Information or complying with your\n request. In addition, if you exercise your right to request specific pieces of your Personal\n Information, we will require you to sign a declaration under penalty of perjury that you are\n the consumer whose Personal Information is the subject of the request.\n

\n\n

Opting Out

\n

\n We give you many choices regarding our use and disclosure of your Personal Information for\n marketing purposes. Please note that, if you opt-out, we may not be able to remove your\n Personal Information from the databases of unaffiliated third parties with which we have\n already shared your Personal Information as of the date that we process your opt-out\n request. Please also note that, if you do opt-out from receiving marketing-related messages\n from us, we may still send administrative messages to you, such as related to pending\n orders, returns, or refunds.\n

\n

\n Opting Out of EC Data or IM Data Storage: When subscribing to ICER\n Analytics, you will be presented with the option to opt in or opt out of the saving and\n storage of EC Data or IM Data.\n

\n

\n Opt Out of Google Analytics. To opt out of Google Analytics, you may\n install the Google Analytics Opt-Out Browser found at{\" \"}\n \n https://tools.google.com/dlpage/gaoptout\n \n . To opt out of Google Analytics for display advertising or customize Google display network\n ads, you can visit the Google Ads Settings{\" \"}\n page found at{\" \"}\n \n https://adssettings.google.com/authenticated\n \n .\n

\n\n

\"Do Not Track\" Signals

\n

\n Note that your browser settings may allow you to automatically transmit a \"Do Not Track\"\n signal to sites and online services you visit. There is no consensus among industry\n participants as to what \"Do Not Track\" means in this context. Like many websites and online\n services, we currently do not alter our practices when we receive a \"Do Not Track\" signal\n from a visitor's browser. To learn more about cookies and any \"Do Not Track\" features,\n please visit http://www.allaboutcookies.org/{\" \"}\n and http://www.allaboutdnt.com. If you choose to\n decline cookies, then some or all of the features, functionality and promotions available\n through the Site that may not be available to you. If you do not want information collected\n through the use of cookies, there is a procedure on most devices through which the Site are\n accessed that allows you to decline the use of cookies.\n

\n\n

Adobe Flash LSOs

\n

\n If your device stores Flash LSOs, and if you do not want Flash LSOs stored on your device\n through which you access the Site, you can adjust the settings of your Flash player to block\n Flash LSO storage using the tools contained using the Website Storage Settings Panel. You\n can also control Flash LSOs by going to the Global Storage Settings Panel and following the\n instructions (which may include instructions that explain, for example, how to delete\n existing Flash LSOs (referred to as \"information\" on the Macromedia site), how to prevent\n Flash LSOs from being placed on your device without you being asked, and (for Flash Player 8\n and later) how to block Flash LSOs that are not being delivered by the operator of the page\n you are on at the time). Please note that setting the Flash Player to restrict or limit\n acceptance of Flash LSOs may reduce or impede the functionality of some Flash applications,\n including, potentially, Flash applications used in connection with the Site or our content.\n We expect our service providers and technology suppliers to honor any decision by you to\n restrict or limit Flash LSOs, but we cannot guarantee that they will do so.\n

\n

\n Mobile Device Settings. On your mobile device, enable the \"Limit Ad\n Tracking\" setting in your iOS phone's settings, or the setting to \"Opt out of Ads\n Personalization\" in your Android phone's settings. To opt-out of location tracking when\n using our Site, you can use the settings of your device. You can disable mobile analytics\n and bug reporting through these same settings as well.\n

\n

\n For more information about analytics and advertising cookies and how you can opt out, you\n can visit the Network Advertising Initiative's opt-out page found at{\" \"}\n \n http://optout.networkadvertising.org/?c=1\n {\" \"}\n , the Digital Advertising Alliance's opt-out page found at{\" \"}\n \n http://optout.aboutads.info/?c=2&lang=EN\n \n , or EDAA's Your Online Choices page found at{\" \"}\n http://www.youronlinechoices.com/.\n

\n\n

Users Only of Legal Age of Majority

\n

\n Our Site is designed and intended for those who have reached the age of majority (18 years\n of age). By using our Site, you affirm that you are at least 18 years of age or older. We\n are not liable for any damages that may result from a user's misrepresentation of age.\n

\n

\n No one under age 13 is authorized to submit any information, including personally\n identifying information, on our Site. Under no circumstances may anyone under age 13 use our\n Site. Parents or legal guardians of children under 13 cannot agree to these terms on their\n behalf.\n

\n\n

Contacting Us

\n

\n We welcome any queries, comments, requests or complaints you may have regarding this Privacy\n Policy. Please do not hesitate to contact us at:\n

\n

Institute for Clinical and Economic Review

\n
\n
\n 14 Beacon Street, 8th Floor\n
\n
Boston, MA 02108
\n
(617) 528-4013
\n \n
\n
\n );\n});\n\nPrivacyContent.propTypes = {};\n\nexport default PrivacyContent;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles(() => ({\n root: {\n \"& h4\": {\n // border: '1px dashed red',\n marginBottom: \"8px\"\n },\n \"& h5\": {\n // color: 'red',\n margin: 0\n },\n \"& li\": {\n // border: '1px dashed #f0f',\n marginTop: 0\n },\n \"& p\": {\n // border: '1px dashed green',\n marginTop: 0\n },\n \"& a\": {}\n }\n}));\n\nconst PrivacyContent = React.memo(() => {\n const classes = useStyles();\n\n /* eslint-disable max-len */\n return (\n
\n

\n These Terms of Use and Conditions (\"Terms\") govern your (\"you\" and \"your\") use of the\n Evidence for Healthcare Improvement d/b/a Institute for Clinical and Economic Review\n (\"ICER\", \"our\", \"us\" or \"our\") website(s) available at{\" \"}\n https://analytics.icer.org/,{\" \"}\n https://icer-review.org/; and{\" \"}\n https://icer.org/ (each, a \"Site\" and collectively, the\n \"Sites\") and all features, modalities, applications, programs, and other materials\n accessible through or in connection with the Sites (collectively, the \"\n Services\").{\" \"}\n \n Please read the terms in full before using our Site. By accepting these Terms, or by\n accessing or using this Site, you agree to be legally bound by these Terms and our \n \n \n Privacy Policy\n \n . If you do not agree to these terms, please do not use our Site. We\n reserve the right to modify these Terms at any time without prior notice, and your use of\n the Site binds you to the changes made. We do occasionally update these Terms so please\n refer to them in the future.\n

\n

Access to Site

\n

\n You will be able to access our Site without having to register any details with us, however\n some functions available on the Site may require you to disclose certain personal\n information.\n

\n

Use of Site

\n

\n Our Site, the Services, and any images, data, text, audios, videos, photographs, custom\n graphics, logos, button icons, descriptions and all other material provided and the\n collection and compilation and assembly thereof are the exclusive property of ICER or its\n affiliates or licensors, and are protected by U.S. and international copyright laws. Certain\n Services may be subject to additional terms and conditions (collectively, the \"\n Additional Terms\") as may be set forth herein, on the relevant Sites, or in\n connection with your use of the Services. Your use of such Services constitutes your\n agreement to the applicable Additional Terms and such Additional Terms are hereby\n incorporated into these Terms.\n

\n

\n Conditioned upon your compliance with these Terms, the contents of our Site\n and our Services may be used for your personal, informational, non-commercial purposes only.\n Any other use of such contents, including the reproduction, modification, distribution,\n transmission, republication, display or performance of the contents without our prior\n written consent is expressly forbidden. Please note the foregoing license is non-exclusive,\n non-transferable, and non-sublicensable, and is revocable by ICER at any time for any or no\n reason.\n

\n

\n Any trademarks or service marks appearing anywhere on our Site are the property of their\n respective owners. A product name or logo not appearing with a trademark designation\n (™, ®) does not constitute a waiver of any intellectual property rights that the\n Institute for Clinical and Economic Review, its affiliates or its licensors have established\n in any of their products, services, features, or service names or logos.\n

\n

\n You may not use, reproduce, modify, transmit, display, publish, sell, create derivative\n works of, or distribute by any means, method, or process whatsoever, now known or hereafter\n developed, any content of this Site or Services for commercial profit or gain, unless\n expressly authorized to do so by ICER. Any non-commercial analysis, commentary, manuscript,\n or other material developed based on use of the contents of this Site that is intended for\n presentation, submission, or any other means of dissemination must be shared with ICER for\n comment at least 30 days prior to planned presentation, submission, or other dissemination.\n Nothing in these Terms or on the Site shall be construed as conferring any intellectual\n property or other proprietary rights to you. You agree to observe copyright and other\n applicable laws and may not use the content in any manner that infringes or violates the\n rights of any person or entity, including us. We hold or have licensed all rights to the\n content on this Site.\n

\n

\n We welcome your comments and feedback regarding our Site, products, and services. We do not,\n however, accept confidential or proprietary information. Thus, all comments (whether public\n or private), feedback, ideas, suggestions, materials, information, and other submissions\n disclosed, submitted or offered to us using the Site or otherwise (collectively, \"\n Communications\") are not confidential and will become and remain our\n property. The disclosure, submission, or offer of any Communications will constitute an\n assignment to ICER of all worldwide rights, titles, and interests, and goodwill in any and\n all media now known or hereafter devised in perpetuity, in and to the Communications without\n payment of any compensation. Additionally, Communications submitted by you must not violate\n any right of any third party, and must not contain any libelous, abusive, obscene, or\n otherwise unlawful material. If your Communications violate these Terms, you may bear legal\n responsibility for such Communications, and shall indemnify, defend and hold harmless ICER,\n its affiliates and their licensors for any third party liability associated therewith.\n

\n

\n As a condition of your use of the Site, you will not use the Site, or any contents or\n services, for any purpose that is unlawful in any jurisdiction where our Site is being used,\n or prohibited by these terms, conditions, and notices, and you agree to abide by the terms\n and conditions set forth in the \"User Conduct\" section. You may not use the Site’s\n contents or services in any manner that could damage, disable, overburden, or impair any of\n our equipment or interfere with any other party’s use and enjoyment of the Site, or\n any contents or services. You may not attempt to gain access to any portion of the Site, or\n any of its contents or services, other than those for which you are authorized.\n

\n

\n While every effort is made to ensure the timeliness and accuracy of the Site content and\n services, we make no warranties either express or implied, and assume no liability or\n responsibility for the completeness, use, accuracy, reliability, correctness, timeliness or\n usefulness, of any of the results obtained from its use.\n

\n

\n We make no representation or warranty, express or implied, with respect to the content of\n the Site, or links to other sites, including but not limited to accurateness, completeness,\n correctness, timeliness or reliability. We make no representation or warranty regarding the\n merchantability, fitness for a particular purpose or use or non-infringement of third party\n rights with respect to any content or services whatsoever that may be accessed through this\n Site, or the results to be obtained from using the Site. We make no representation or\n warranty that the Site or content is free from defects or viruses. Your use of external\n links and third-party websites is at your own risk and subject to the terms and conditions\n of use for such links and sites.\n

\n

\n While every effort is made to ensure that all content provided on the Site does not contain\n computer viruses and/or harmful materials, you should take reasonable and appropriate\n precautions to scan for computer viruses or otherwise protect your computer and you should\n ensure that you have a complete and current backup of the applicable items on your computer.\n We disclaim any liability for the need for services or replacing equipment or data resulting\n from your use of the Site. While every effort is made to ensure smooth and continuous\n operation, we do not warrant the Site will operate error-free.\n

\n

Site Uptime

\n

\n We take all reasonable steps to ensure that our Site is available 24 hours every day, 365\n days per year. However, websites do sometimes encounter downtime due to server and other\n technical issues. Therefore, we will not be liable if this Site is unavailable at any time.\n

\n

\n Our Site may be temporarily unavailable due to issues such as system failure, maintenance or\n repair, or for reasons beyond our control. Where possible, we may try to give our users\n advance warning of maintenance issues, but shall not be obliged to do so.\n

\n

User Conduct

\n

\n Any material you send or post to our Site shall be considered non-proprietary and\n non-confidential. We do not collect or store any personally identifiable information about\n you while using our Site but please do not send any such information to us. See also our\n Privacy Policy and Notice of Privacy Practices, which can be found \n here.
When using our Site,\n you shall not post or send to or from the Site:\n

\n
    \n
  • content for which you have not obtained all necessary consents;
  • \n
  • \n content that is discriminatory, obscene, pornographic, defamatory, liable to incite racial\n hatred, in breach of confidentiality or privacy obligations, which may cause annoyance or\n inconvenience to others, which encourages or constitutes conduct that would be deemed a\n criminal offense, give rise to a civil liability, or otherwise is contrary to the law in\n any applicable jurisdiction where our Site is being used; or\n
  • \n
  • \n content which is harmful in nature including, and without limitation, computer viruses,\n Trojan horses, corrupted data, or other potentially harmful software or data.\n
  • \n
\n

\n ICER expects all users to respect ICER’s and third parties’ intellectual\n property. As such, you agree that:\n

\n
    \n
  1. \n No material from the Sites may be copied, reproduced, republished, uploaded, posted,\n transmitted, or distributed in any way, except that you may download certain downloadable\n materials on any single computer for your personal, non-commercial use only, provided you\n keep intact all copyright and other proprietary notices. For purposes of this Agreement,\n the use of any such material on any other web site or networked computer environment is\n prohibited.\n
  2. \n
  3. \n You may not use the Site or Services to store or transmit infringing, libelous, or\n otherwise unlawful or tortious material, or material in violation of third-party privacy\n or other rights, or code, files, scripts, agents or programs intended to do harm,\n including, for example, viruses, worms, time bombs, and Trojan horses.\n
  4. \n
  5. \n You may not interfere with or disrupt the integrity or performance of the Site or Services\n or third-party data contained therein; attempt to gain unauthorized access to the Site or\n Services or its related systems or networks; copy the Services or any part, feature,\n function or user interface thereof unless expressly permitted hereunder.\n
  6. \n
  7. \n You may not modify, correct, adapt, translate, enhance or otherwise prepare derivative\n works or improvements of the Site or Services.\n
  8. \n
  9. \n You may not access the Site or Services in order to build a competitive product or\n service, or for purposes of monitoring its availability, performance or functionality, or\n for any other benchmarking or competitive purposes.\n
  10. \n
  11. \n You may not \"harvest\" or collect information from the Site or Services (including\n information about other users of the Site or Services or offerings, products or services\n available on the Site or Services) using an automated software tool or manually on a mass\n basis.\n
  12. \n
  13. \n You may not reverse engineer, disassemble, decompile, decode or otherwise attempt to\n derive or gain access to the source code of the Site or Services or any component thereof,\n in whole or in part, except as and only to the extent such restriction is permitted by any\n applicable federal, state, or local laws, codes, rules, regulations, or orders of any\n governmental authority (\"Law\").\n
  14. \n
  15. \n You may not integrate or link to any open source software or freeware with the Site or\n Services.\n
  16. \n
  17. \n You may not remove any proprietary notices, labels or marks from the Site or Services.\n
  18. \n
  19. \n You may not sell, resell, license, sublicense, distribute, rent, or lease the Services,\n include the Site or Services in a service bureau or outsourcing offering, or otherwise\n access or use the Site or Services other than as expressly permitted hereunder.\n
  20. \n
  21. You may not permit third parties to do any of the foregoing.
  22. \n
  23. \n You represent, warrant, and covenant that (i) you are of the legal age of majority in your\n jurisdiction and/or are an authorized representative of your company with the full power\n and authority to enter into the Terms; (ii) you will comply at all times with all relevant\n and applicable Laws; and (iii) to the extent you share with ICER any personal data of any\n third party for any purpose, you have the authority (including any necessary consents), as\n required under applicable Law, to provide ICER with such personal data, and allow ICER to\n use such personal data for the purposes for which you shared it.\n
  24. \n
\n

\n We will fully cooperate with any law enforcement authorities or court order requiring us to\n disclose the identity or other details or any person posting materials to our Site in breach\n of this Section.\n

\n

\n You shall not use our Site while distracted or preoccupied, such as when operating a motor\n vehicle. You should access our Site only with due regard for your own safety and the safety\n of others.\n

\n

Links to and from Third Party Websites

\n

\n Any links furnished on our Site may allow you to leave our Site (each a \"Linked Site\").\n These Linked Sites are not under our control and we disclaim any responsibility for the\n contents of such Linked Sites or any link(s) contained therein or any changes or updates\n thereto. We further disclaim any responsibility for any form of transmission received from\n any linked third party website or advertising. If we provide these links to you, it is done\n simply as a convenience to you and inclusion of any link herein shall in no way be construed\n as an endorsement by us of the site(s).\n

\n

\n If you would like to link to our Site, you may only do so on the basis that you link to, but\n do not replicate, any page of our Site, and subject to the following conditions:\n

\n
    \n
  • \n you do not in any way imply that we are endorsing any services or products unless this has\n been specifically agreed with us;\n
  • \n
  • \n you do not misrepresent your relationship with us or present any false information about\n us;\n
  • \n
  • you do not link from a website that is not owned by you; and
  • \n
  • \n your website does not contain content that is offensive, controversial, infringes any\n intellectual property rights or other rights of any other person or does not comply in any\n way with the applicable laws.\n
  • \n
\n

\n If you choose to link our Site in breach of this Section, you shall fully indemnify us for\n any loss or damage suffered as a result of your actions.\n

\n

Disclaimers

\n

\n All information on our Site is of a general nature and is furnished for your knowledge and\n understanding and as an informational resource only. The documents and any related graphics\n published on this Site could include technical inaccuracies or typographical errors. Changes\n are periodically added to the information contained on our Site. We may make improvements\n and/or changes to any of the products or services depicted or described herein at any time.\n We expressly disclaim any responsibility or liability for any adverse consequences or\n damages resulting from your use of the Site or reliance on the information from it.\n

\n

\n THE SITE IS PROVIDED ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS. WE MAKE NO WARRANTIES, EXPRESS\n OR IMPLIED, REPRESENTATIONS OR ENDORSEMENTS WHATSOEVER WITH REGARD TO ANY PRODUCTS,\n INFORMATION OR SERVICE PROVIDED THROUGH THIS SITE, INCLUDING, TITLE, NON-INFRINGEMENT, OR\n ANY OTHER WARRANTY, CONDITION, GUARANTY, OR REPRESENTATION, WHETHER ORAL OR IN WRITING, OR\n IN ELECTRONIC FORM.\n

\n

Limitation of Liability

\n

\n {\" \"}\n YOUR USE OF OUR SITE IS ENTIRELY AT YOUR OWN RISK. WE WILL NOT BE RESPONSIBLE TO YOU OR TO\n ANY THIRD PARTIES FOR ANY DIRECT OR INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL, OR\n PUNITIVE DAMAGES OR LOSSES OR INJURY YOU OR ANY THIRD PARTY MAY INCUR IN CONNECTION WITH\n YOUR USE OR INABILITY TO USE THE SITE OR THE PRODUCTS AND SERVICES DESCRIBED THEREIN, THE\n INFORMATION CONTAINED ON THE SITE, OR SERVICES ACTUALLY PROVIDED BY US, OR THAT RESULT FROM\n MISTAKES, OMISSIONS, INTERRUPTIONS, DELETIONS OR ANY FAILURE OF PERFORMANCE, OR ANY OF THE\n DATA OR OTHER MATERIALS TRANSMITTED THROUGH OR RESIDING ON OUR SITE, REGARDLESS OF THE TYPE\n OF CLAIM OR THE NATURE OF THE CAUSE OF ACTION, EVEN IF WE HAVE BEEN ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE OR LOSS.\n

\n

Indemnification

\n

\n {\" \"}\n You agree to defend, indemnify, and hold us, our officers, directors, employees, volunteers,\n agents, licensors, and suppliers, harmless from and against any claims, actions or demands,\n liabilities and settlements including without limitation, reasonable legal and accounting\n fees, resulting from or alleged to result from, your use of and access to the Site or your\n violation of these Terms or your violation of any third party right, including without\n limitation any trademark, copyright or other proprietary or privacy right.\n

\n

Assignment

\n

\n {\" \"}\n These Terms, and any rights and licenses granted hereunder, may not be transferred or\n assigned by you.\n

\n

Applicable Law

\n

\n {\" \"}\n We make no representations that the content or the Site are appropriate or may be used or\n downloaded outside the United States. Access to the Site and/or the content may not be legal\n in certain countries outside the United States. If you access the Site from outside the\n United States, you do so at your own risk and are responsible for compliance with the laws\n of the jurisdiction from which you access the Site.\n

\n

\n Our Site is created and controlled in the Commonwealth of Massachusetts, United States of\n America. The Site, and its contents, and any disputes arising therefrom shall be construed\n and interpreted under the laws of the Commonwealth of Massachusetts, and applicable United\n States federal laws. Use of our Site constitutes agreement of the user to the exclusive\n jurisdiction of the state and federal courts located therein.\n

\n

\n Our Site is subject to the United States export control laws and regulations, and may be\n subject to export or import regulations in other countries. You agree to strictly comply\n with all such laws and regulations and acknowledge that you have the responsibility to\n obtain authorization to export, re-export, or import any data on our Site, as may be\n required.\n

\n

General

\n

\n These Terms, together with the Privacy Policy and Notice of Privacy Practices, and any legal\n notices published by us on the Site, shall constitute the entire agreement between us\n concerning use of the Site except to the extent we have agreed otherwise in writing. If any\n provision of these Terms is deemed invalid by a court of competent jurisdiction, the\n invalidity of such provision shall not affect the validity of the remaining provisions of\n these Terms, which shall remain in full force and effect. No waiver of any term shall be\n deemed a further or continuing waiver of such term or any other term, and our failure to\n assert any right or provision under these Terms shall not constitute a waiver of such right\n or provision. YOU AGREE THAT ANY CAUSE OF ACTION ARISING OUT OF OR RELATED TO THE SITE MUST\n COMMENCE WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES. OTHERWISE, SUCH CAUSE OF\n ACTION IS PERMANENTLY BARRED.\n

\n

Our Contact Information

\n
\n
Institute for Clinical and Economic Review
\n
\n 14 Beacon Street, 8th Floor\n
\n
Boston, MA 02108
\n
(617) 528-4013
\n
\n {\" \"}\n info@icer-review.org \n
\n
\n
\n );\n});\n\nPrivacyContent.propTypes = {};\n\nexport default PrivacyContent;\n","import React from 'react';\nimport AppBar from '@mui/material/AppBar';\nimport { makeStyles } from '@mui/styles';\n\nimport GlossaryContent from './modals/GlossaryContent';\nimport PrivacyContent from './modals/PrivacyContent';\nimport TermsContent from './modals/TermsContent';\n\nimport Modal from './modals/Modal';\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n // boxShadow: 'none',\n top: 'auto',\n bottom: 0,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n whiteSpace: 'nowrap',\n fontSize: 12,\n borderTop: '1px solid #f9f9f9',\n '& a': {\n color: theme.palette.text.gray\n },\n '& a:hover, &a:focus': {\n color: theme.palette.secondary.main\n },\n '& > nav': {\n textAlign: 'center',\n '& > span': {\n color: theme.palette.text.gray,\n padding: theme.spacing(1)\n }\n }\n }\n}));\n\nconst Footer = () => {\n const classes = useStyles();\n\n return (\n \n \n \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport Alert from '@mui/material/Alert';\nimport { makeStyles } from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n fontSize: 16,\n }\n}))\n\nconst getSeverity = (type) => {\n let severity = type;\n if (type === 'notice') {\n severity = 'info';\n } else if (!['error', 'warning', 'info', 'success'].includes(severity)) {\n severity = 'warning';\n }\n\n return severity;\n};\n\n\nconst LandingAlerts = () => {\n const domContainer = document.getElementById(\"icer-spa\")\n const classes = useStyles()\n if (domContainer) {\n const alerts = JSON.parse(domContainer.dataset.alerts)\n if (alerts && alerts.length) {\n return (\n <>\n { alerts.map(([type, message], i) => {message} ) }\n \n )\n } else {\n return null\n }\n } else {\n return null\n }\n}\n\nexport default LandingAlerts;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\n\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport CardMedia from '@mui/material/CardMedia';\nimport CardActionArea from '@mui/material/CardActionArea';\nimport CardContent from '@mui/material/CardContent';\nimport CardActions from '@mui/material/CardActions';\nimport Button from '@mui/material/Button';\nimport { Link } from \"react-router-dom\";\nimport { cardHover } from '../component-styles';\n\nconst useStyles = makeStyles(({ palette, spacing, components }) => {\n const heightMediaQuery = '@media (min-height: 900px)'\n return {\n toolCardRoot: {\n borderColor: palette.secondary.light,\n position: 'relative',\n display: 'flex',\n ...cardHover( palette ),\n },\n toolLogo: {\n minHeight: 120,\n minWidth: 200,\n flexBasis: 150,\n backgroundSize: '70%',\n backgroundPosition: 'center center',\n marginTop: spacing(2),\n marginBottom: spacing(3),\n [heightMediaQuery]: {\n minHeight: 120,\n minWidth: 200,\n backgroundSize: '70%',\n marginTop: spacing(1),\n },\n },\n toolCopy: {\n display: 'flex',\n alignItems: 'stretch',\n flexWrap: 'wrap',\n justifyContent: 'center',\n height: '100%',\n paddingLeft: 4,\n paddingRight: 4,\n },\n toolTitle: {\n color: components.MuiButton.styleOverrides.text.color,\n paddingBottom: 5,\n borderBottom: `3px solid ${palette.primary.light}`,\n marginBottom: spacing(2),\n paddingLeft: 15,\n paddingRight: 15,\n fontSize: 24,\n },\n toolTitleWord: {\n display: 'block',\n },\n toolDescription: {\n fontSize: 18,\n fontWeight: 500,\n letterSpacing: '0.15px',\n lineHeight: '20px',\n paddingLeft: 15,\n paddingRight: '15%',\n color: 'black',\n },\n disabledLink: {\n pointerEvents: 'none',\n opacity: '.4',\n },\n accessFlag: {\n position: 'absolute',\n top: '25%',\n width: '100%',\n zIndex: 10,\n textAlign: 'center',\n background: '#eadeb3',\n paddingTop: spacing(1.5),\n paddingBottom: spacing(1.5),\n },\n accessFlagStatement: {\n textAlign: 'center',\n lineHeight: 1,\n marginBottom: spacing(.5)\n }\n }\n});\nconst useDetailStyles = makeStyles(({spacing}) => {\n return {\n toolDetailList: {\n paddingLeft: 35,\n paddingRight: spacing(2),\n },\n toolDetailListItem: {\n fontSize: 16,\n marginBottom: spacing(.5),\n },\n }\n})\n\nconst ToolCard = ({tool, accessible=false}) => {\n const classes = useStyles();\n const { href, to, name, description, details, image } = tool\n return (\n <>\n \n { !accessible ? : null }\n \n \n \n
\n \n {name}\n \n \n {description}\n \n \n
\n
\n \n
\n \n)\n}\n\nconst ToolDetails = ({detailItems}) => {\n const detailClasses = useDetailStyles();\n return (\n
    \n {\n detailItems.map((detailItem, i) => (\n
  • {detailItem}
  • \n ))\n }\n
\n )\n}\n\nconst AccessFlag = ({toolName}) => {\n const classes = useStyles();\n return (\n
\n \n Your organization currently does not
have access to this tool\n
\n \n
\n )\n}\n\nexport default ToolCard;\n","import React from 'react';\nimport { bool } from 'prop-types';\nimport { Box, CircularProgress } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nconst useStyles = makeStyles(({spacing}) => ({\n progress: {\n padding: spacing(8),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: `calc(100% - ${spacing(8) * 2})`,\n }\n}));\n\nconst ProgressIndicator = ({ active }) => {\n const classes = useStyles();\n if (active) {\n return (\n \n \n \n );\n }\n return null;\n};\n\nProgressIndicator.propTypes = {\n active: bool.isRequired\n};\n\nexport default ProgressIndicator;\n","import React from 'react';\nimport { Paper } from '@mui/material';\nimport ProgressIndicator from './ProgressIndicator'\n\nconst WrappedProgressIndicator = ({loading, id=\"\", elevation=0, minHeight=500}) => (\n \n \n \n)\n\nexport default WrappedProgressIndicator\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { shape, bool } from \"prop-types\";\nimport { Box, Container, Grid } from \"@mui/material\";\nimport ToolCard from \"./ToolCard\";\nimport WrappedProgressIndicator from \"./WrappedProgressIndicator\";\n\nimport { connectToState } from \"../redux/connect-api\";\nimport { platformConfig } from \"../config\";\nimport { sectionStyles } from \"../config/styles\";\n\nconst useStyles = makeStyles(({ breakpoints }) => ({\n toolCard: {\n display: \"flex\",\n textAlign: \"initial\",\n \"&:hover *\": {\n textDecoration: \"none\",\n },\n },\n toolSelectorTools: {\n marginTop: -70,\n [breakpoints.up(\"md\")]: {\n marginTop: -70,\n \"@media (min-height: 900px)\": {\n marginTop: -140,\n },\n },\n },\n toolSelectorWrapper: {\n ...sectionStyles,\n minHeight: \"auto\",\n marginBottom: 25,\n \"@media (min-height: 900px)\": {\n marginBottom: 30,\n },\n },\n toolSelectorContainer: {\n \"@media (max-height: 900px)\": {\n maxWidth: \"80%\",\n flexBasis: \"80%\",\n },\n },\n}));\n\nconst buttonStyles = makeStyles(({ palette }) => ({\n root: {\n background: \"white\",\n padding: 15,\n \"&:hover, &:focus\": {\n background: palette.secondary.main,\n \"& svg\": {\n fill: \"white\",\n },\n },\n },\n wrapper: {\n borderRadius: \"50%\",\n marginTop: -40,\n position: \"relative\",\n zIndex: 10,\n border: `1px solid ${palette.primary.light}`,\n },\n \"@keyframes upAndDown\": {\n \"0%\": { transform: \"translateY(0) scale(.99)\" },\n \"50%\": { transform: \"translateY(1px) scale(1.07)\" },\n \"100%\": { transform: \"translateY(0) scale(.99)\" },\n },\n iconRoot: {\n animationDuration: \"2s\",\n animationName: \"$upAndDown\",\n animationIterationCount: \"infinite\",\n },\n}));\n\nconst ToolSelector = ({ profileData, loading }) => {\n const classes = useStyles();\n\n if (loading) {\n return ;\n }\n\n const toolAccessible = (toolId) => profileData[`${toolId}_access`];\n\n return (\n \n \n \n \n \n \n {platformConfig.tools.map((tool, i) => (\n \n \n \n ))}\n \n \n \n \n \n \n );\n};\n\nToolSelector.defaultProps = {\n profileData: null,\n};\n\nToolSelector.propTypes = {\n profileData: shape({\n ec_access: bool,\n im_access: bool,\n }),\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading,\n profileData: state.userProfile.data,\n };\n};\n\nexport default connectToState(mapStateToProps)(ToolSelector);\n","export const APP_TITLE = \"Evidence Compendium - ICER\";\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { APP_TITLE } from \"../constants\";\nimport googleAnalytics from \"../google-analytics\";\n\nexport const trackPageView = (title) => {\n let _title = `${APP_TITLE}`;\n if (title) _title += ` - ${title}`;\n document.title = _title;\n googleAnalytics.trackPageView({ title: _title, location });\n};\n\nexport function usePageView(title = \"\") {\n let location = useLocation();\n useEffect(() => {\n trackPageView(title);\n }, [location, title]);\n}\n","import React, { useEffect } from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Breadcrumbs, Container, Typography } from \"@mui/material\";\nimport HomeRoundedIcon from \"@mui/icons-material/HomeRounded\";\nimport { usePageView } from \"../../hooks/usePageView\";\nimport googleAnalytics from \"../../google-analytics\";\n\nexport const appPageTitleStyle = (breakpoints) => ({\n fontSize: 28,\n marginBottom: 5,\n fontWeight: 700,\n [breakpoints.up(\"md\")]: {\n fontSize: 36\n }\n});\n\nconst useStyles = makeStyles(({ palette, breakpoints, spacing }) => {\n const defaultBgColor = palette.secondary.main;\n const bannerHeights = {\n md: 100,\n lg: 150,\n xl: 240\n };\n const baseBannerStyle = {\n backgroundColor: defaultBgColor,\n display: \"flex\",\n color: palette.text.light\n };\n const bannerStyle = {\n flexDirection: \"column\",\n minHeight: bannerHeights[\"md\"],\n justifyContent: \"center\",\n ...baseBannerStyle,\n alignItems: \"center\",\n [breakpoints.up(\"md\")]: {\n minHeight: bannerHeights[\"lg\"],\n \"& h2\": {\n fontSize: 45\n }\n }\n };\n const heightMediaQuery = \"@media (max-height: 900px)\";\n return {\n appPageMain: {\n position: \"relative\",\n minWidth: \"100%\",\n overflow: \"auto\"\n },\n appPageContainer: {\n flex: \"1 1 100%\",\n minWidth: \"100%\",\n marginBottom: 75,\n paddingBottom: spacing(4)\n },\n appPageBanner: bannerStyle,\n appPageBannerXl: {\n ...bannerStyle,\n minHeight: bannerHeights[\"lg\"],\n justifyContent: \"flex-start\",\n paddingTop: spacing(4.5),\n [breakpoints.up(\"md\")]: {\n minHeight: bannerHeights[\"xl\"]\n },\n [heightMediaQuery]: {\n minHeight: 150,\n paddingTop: spacing(2.5)\n }\n },\n appPageTitle: appPageTitleStyle(breakpoints),\n appPageHeroTitle: {\n ...appPageTitleStyle(breakpoints),\n textAlign: \"center\"\n },\n appPageBreadcrumbs: {\n color: \"inherit\"\n },\n appPageBreadcrumbsLink: {\n color: palette.text.light,\n display: \"flex\",\n alignItems: \"center\"\n }\n };\n});\n\nconst AppPage = ({ title = \"\", docTitle = \"\", bannerHeight = \"\", banner = null, children }) => {\n // Update document title and trigger page view event\n usePageView(docTitle || title);\n\n const classes = useStyles();\n const location = useLocation();\n let bannerClass = \"appPageBanner\";\n if (bannerHeight) {\n bannerClass += bannerHeight;\n }\n return (\n
\n \n {banner}\n {title && (\n \n \n {location.pathname.includes(\"/tools\") ? (\n \n \n {title}\n \n \n ) : (\n \n \n \n googleAnalytics.trackBreadcrumbClick({\n whereTo: \"Home\",\n currentPage: location.pathname\n })\n }\n >\n \n Home\n \n {title}\n \n \n {title}\n \n \n )}\n \n \n )}\n {children}\n \n
\n );\n};\n\nexport default AppPage;\n","import React from 'react'\nimport { node, string } from 'prop-types'\nimport { makeStyles } from '@mui/styles'\nimport {\n Grid,\n Typography,\n} from '@mui/material'\n\nconst useStyles = makeStyles(({ breakpoints }) => ({\n wrapper: {\n marginBottom: '1.2rem',\n padding: '0 0.7rem',\n },\n item: {\n flexGrow: 1,\n minWidth: '300px',\n [breakpoints.up('sm')]: {\n maxWidth: '50%',\n },\n [breakpoints.up('md')]: {\n maxWidth: '33.3%',\n },\n },\n groupTitle: {\n fontSize: '1.4rem',\n marginBottom: '0.4rem',\n },\n}))\n\nconst ButtonGroup = props => {\n const { children, groupTitle } = props\n const classes = useStyles()\n\n return (\n
\n \n { groupTitle }\n \n \n { React.Children.map(children, ( child, index ) => (\n \n { child }\n \n ))\n }\n \n
\n )\n}\n\nButtonGroup.defaultProps = {\n children: null,\n groupTitle: '',\n}\n\nButtonGroup.propTypes = {\n children: node,\n groupTitle: string,\n}\n\nexport default ButtonGroup\n","import React from 'react'\nimport { Chip } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport { alpha, darken } from '@mui/material/styles';\nimport { number, string } from 'prop-types';\n\nexport const newChipStyles = makeStyles(({palette: {primary, common}}) => {\n const base = {\n textTransform: 'uppercase',\n fontWeight: 700,\n letterSpacing: \".03em\",\n }\n return {\n green: {\n ...base,\n background: darken(primary.main, 0.20),\n border: `1px solid ${common.white}`,\n color: common.white,\n },\n white: {\n ...base,\n background: alpha(common.white, 0.50),\n border: `1px solid ${common.white}`,\n color: common.black,\n }\n }\n})\n\n\nconst NewChip = ({count, size='medium', variant=\"green\"}) => {\n const classes = newChipStyles()\n const label = count ? `New (${count})` : 'New'\n return (\n \n )\n}\n\nNewChip.propTypes = {\n count: number,\n size: string\n}\n\nexport default NewChip\n","import React from \"react\";\nimport { node, string, number } from \"prop-types\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\n\nimport { Badge, Box, Button, Typography } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport { cardHover, baseCardStyle } from \"../../component-styles\";\nimport { newChipStyles } from \"../NewChip\";\n\nconst useStyles = makeStyles(({ palette }) => ({\n root: {\n ...baseCardStyle(palette),\n ...cardHover(palette),\n \"& svg\": {\n fontSize: \"1.6rem !important\"\n },\n \"& .MuiButton-endIcon svg\": {\n color: \"#CCE3F5\"\n }\n }\n}));\nconst linkStyles = makeStyles(({ palette }) => ({\n linkTextContainer: {\n gap: 5,\n flex: 1,\n whiteSpace: \"pre-wrap\"\n },\n defaultLinkTextContainer: {\n color: palette.secondary.main\n },\n darkLinkTextContainer: {\n color: palette.common.black\n },\n linkText: {\n color: \"inherit\",\n flexGrow: \"1\",\n lineHeight: \"1\",\n fontWeight: 500\n },\n descriptionText: {\n color: \"inherit\",\n fontSize: \"16px\",\n lineHeight: \"1\"\n }\n}));\nconst badgeStyles = makeStyles(({ breakpoints }) => {\n return {\n root: {\n alignSelf: \"flex-start\",\n textTransform: \"uppercase\",\n fontSize: 10,\n [breakpoints.up(\"md\")]: {\n fontSize: 14\n },\n right: \"0.5rem\"\n },\n }\n});\n\nconst NavButton = (props) => {\n const {\n href,\n linkHref,\n linkText,\n linkDescription,\n linkIcon,\n startIconBg = false,\n endIcon,\n newCount,\n variant = \"default\",\n handleClick,\n target,\n sx = {}\n } = props;\n const classes = useStyles();\n const linkClasses = linkStyles();\n const badgeClasses = badgeStyles();\n\n const { palette } = useTheme();\n\n return (\n \n \n {startIconBg && (\n \n )}\n \n {linkText}\n \n {linkDescription && (\n \n {linkDescription}\n \n )}\n \n {newCount > 0 && (\n \n )}\n \n );\n};\n\nNavButton.defaultProps = {\n href: null,\n linkHref: null,\n linkIcon: null,\n linkText: \"\",\n newCount: 0\n};\n\nNavButton.propTypes = {\n linkHref: string,\n linkIcon: node,\n linkText: string,\n newCount: number\n};\n\nexport default NavButton;\n","import { useSelector } from \"react-redux\";\n\nexport default function useUserHasAccess() {\n return useSelector(\n (state) => !!state.userProfile.data?.ec_access || !!state.userProfile.data?.im_access\n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Container } from \"@mui/material\";\n\nimport { sectionStyles } from \"../../../config/styles\";\nimport { connectToState } from \"../../../redux/connect-api\";\n\nimport OndemandVideoRoundedIcon from \"@mui/icons-material/OndemandVideoRounded\";\nimport VideoSettingsRoundedIcon from \"../../icons/VideoSettingsRoundedIcon\";\nimport DescriptionRoundedIcon from \"@mui/icons-material/DescriptionRounded\";\nimport TipsAndUpdatesRoundedIcon from \"../../icons/TipsAndUpdatesRoundedIcon\";\nimport MoreTimeRoundedIcon from \"../../icons/MoreTimeRoundedIcon\";\n\nimport ButtonGroup from \"../../menus/ButtonGroup\";\nimport NavButton from \"../../menus/NavButton\";\nimport {\n newWebinarsCountSelector,\n newVideosCountSelector,\n newDocumentsCountSelector,\n newRecentUpdatesCountSelector,\n newComingSoonCountSelector\n} from \"../../../selectors\";\nimport useUserHasAccess from \"../../../hooks/useUserHasAccess\";\nimport ProgressIndicator from \"../../ProgressIndicator\";\n\nconst wrapperStyles = makeStyles(() => ({\n root: {\n ...sectionStyles,\n minHeight: \"auto\"\n }\n}));\n\nconst AppLandingNav = ({\n loading,\n newWebinarsCount,\n newVideosCount,\n newDocumentsCount,\n newRecentUpdatesCount,\n newComingSoonCount\n}) => {\n const userHasAccess = useUserHasAccess()\n const wrapperClasses = wrapperStyles();\n\n if (loading) {\n return \n }\n\n return (\n \n {userHasAccess && (\n \n \n }\n newCount={newWebinarsCount}\n />\n }\n newCount={newVideosCount}\n />\n }\n newCount={newDocumentsCount}\n />\n \n \n }\n newCount={newRecentUpdatesCount}\n />\n }\n newCount={newComingSoonCount}\n />\n \n \n )}\n \n );\n};\n\nconst mapStateToProps = ({ userProfile: { data }, ...state }) => ({\n loading: state.recentUpdates.loading || state.comingSoon.loading || state.mediaResources.loading,\n newWebinarsCount: newWebinarsCountSelector(state),\n newVideosCount: newVideosCountSelector(state),\n newDocumentsCount: newDocumentsCountSelector(state),\n newRecentUpdatesCount: newRecentUpdatesCountSelector(state),\n newComingSoonCount: newComingSoonCountSelector(state)\n});\n\nexport default connectToState(mapStateToProps)(AppLandingNav);\n","import React from \"react\";\nimport { Link, Typography } from \"@mui/material\";\nimport { Alert } from \"@mui/material\";\nimport TipsAndUpdatesRoundedIcon from \"../../icons/TipsAndUpdatesRoundedIcon\";\nimport { connectToState } from \"../../../redux/connect-api\";\nimport { comingSoonMostRecentItemSelector } from \"../../../selectors\";\nimport googleAnalytics from \"../../../google-analytics\";\nimport { formateDate } from \"../../../utils/date\";\nimport { Link as RouterLink } from \"react-router-dom\";\n\nconst renderMostRecentItem = (comingSoonMostRecentItem) => {\n let resourceType, formatedDate, title;\n if (comingSoonMostRecentItem?.type === \"asset_group\") {\n const { specific_conditions, date_of_review } = comingSoonMostRecentItem?.attributes;\n title = specific_conditions[0] || \"\";\n resourceType = \"Assessment\";\n formatedDate = formateDate(date_of_review, { format: \"m d, Y\" });\n } else {\n const { resource_type, display_date } = comingSoonMostRecentItem?.attributes;\n title = comingSoonMostRecentItem?.attributes?.title || \"\";\n resourceType = resource_type.charAt(0).toUpperCase() + resource_type.slice(1);\n formatedDate = formateDate(display_date, { format: \"m d, Y\" });\n }\n return (\n <>\n {resourceType} coming soon - {title} on {formatedDate}\n \n );\n};\n\nconst ComingSoonBanner = ({ loading, comingSoonMostRecentItem }) => {\n if (loading || !comingSoonMostRecentItem) return null;\n return (\n } style={{ paddingLeft: 25 }}>\n \n {comingSoonMostRecentItem && renderMostRecentItem(comingSoonMostRecentItem)}\n {!comingSoonMostRecentItem && \"New assessments coming soon.\"}\n \n \n googleAnalytics.trackCustomEvent({\n eventCategory: \"Landing Page\",\n eventAction: \"Alert link click\",\n eventLabel: \"Coming soon\"\n })\n }\n >\n {comingSoonMostRecentItem && \"More info.\"}\n {!comingSoonMostRecentItem && \"Click to review.\"}\n \n \n );\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.comingSoon.loading,\n comingSoonMostRecentItem: comingSoonMostRecentItemSelector(state)\n };\n};\n\nexport default connectToState(mapStateToProps)(ComingSoonBanner);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Card } from \"@mui/material\";\nimport { cardHover } from \"../component-styles\";\n\nconst useStyles = makeStyles(({ palette }) => ({\n card: {\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: palette.secondary.light\n },\n cardHover: {\n ...cardHover(palette)\n },\n cardGrow: {\n display: \"flex\",\n flexGrow: 1,\n minHeight: \"150px\"\n }\n}));\n\nconst BaseCard = ({ cardGrows = false, allowHover = true, children }) => {\n const classes = useStyles();\n const rootClasses = [classes.card];\n if (cardGrows) rootClasses.push(classes.cardGrow);\n if (allowHover) rootClasses.push(classes.cardHover);\n return (\n \n {children}\n \n );\n};\n\nexport default BaseCard;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\n\nconst MedicationRoundedIcon = (props) => {\n return (\n \n \n \n );\n};\n\nexport default MedicationRoundedIcon;\n","import React from \"react\";\nimport { Box, Chip, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles(({ breakpoints, spacing }) => ({\n inline: {\n display: \"flex\",\n alignItems: \"baseline\"\n },\n listWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n [breakpoints.down(\"md\")]: {\n marginTop: spacing(1)\n }\n },\n chipTitle: {\n marginBottom: 5\n },\n chipTitleInline: {\n marginRight: 10,\n whiteSpace: \"nowrap\",\n fontWeight: 600\n },\n chip: {\n marginRight: 4,\n marginTop: 4,\n marginBottom: 4,\n [breakpoints.down(\"md\")]: {\n background: \"none\",\n height: \"auto\",\n \"&:not(:last-of-type) :after\": {\n content: '\",\"',\n display: \"inline\"\n },\n \"& .MuiChip-label\": {\n padding: 0\n }\n }\n },\n darkChip: {\n background: \"#f5f5f5\",\n [breakpoints.down(\"md\")]: {\n background: \"none\",\n \"&:not(:last-of-type) :after\": {\n content: '\",\"',\n display: \"inline\"\n }\n }\n }\n}));\n\nconst DrugList = ({\n drugs = [],\n inline = false,\n darkChips = false,\n inlineText = \"\",\n showTitle = true\n}) => {\n const classes = useStyles();\n let chipClass = classes.chip;\n if (darkChips) {\n chipClass += ` ${classes.darkChip}`;\n }\n if (inline) {\n }\n return (\n \n {showTitle && (\n \n {inlineText ? inlineText : \"Drugs in report\"}{\" \"}\n \n )}\n \n {drugs.map((d, i) => (\n \n ))}\n \n \n );\n};\n\nexport default DrugList;\n","import React from \"react\";\nimport { Box, Button, Dialog, DialogActions, DialogContent } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport VideoPlayer from \"./details/VideoPlayer\";\n\nconst VideoDialog = ({ modalOpen, toggleModal, video }) => (\n \n \n \n \n \n {video && (video.id || video.youtube_id) && (\n \n \n \n )}\n \n \n);\n\nexport default VideoDialog;\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Chip, Link, Typography } from \"@mui/material\";\nimport OndemandVideoRoundedIcon from \"@mui/icons-material/OndemandVideoRounded\";\nimport DescriptionRoundedIcon from \"@mui/icons-material/DescriptionRounded\";\nimport { formateDate } from \"../../../utils/date\";\nimport LaunchIcon from \"@mui/icons-material/Launch\";\nimport VideoDialog from \"../../VideoDialog\";\nimport EventIcon from \"@mui/icons-material/Event\";\nimport googleAnalytics from \"../../../google-analytics\";\nimport NewChip from \"../../NewChip\";\n\n// TODO: Relace the interpolated `gap` values after configuring the theme\n// TODO: to know what unit to apply\nconst useStyles = makeStyles(({ spacing, palette, breakpoints }) => {\n return {\n wrapper: {\n display: \"flex\",\n gap: spacing(1.5),\n position: \"relative\"\n },\n wrapperWithBorder: {},\n iconWrapper: {\n color: palette.primary.main,\n fontSize: 35,\n [breakpoints.up(\"sm\")]: {\n fontSize: 50\n }\n },\n contentWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 0,\n [breakpoints.up(\"sm\")]: {\n gap: \"2px\"\n }\n },\n linkWithIcon: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"3px\",\n \"& svg\": {\n transform: \"translateY(2px)\"\n }\n }\n };\n});\n\nconst ComingSoonCardSection = ({\n type = \"report\",\n title,\n date,\n registrationUrl = null,\n videoId = null,\n description = \"\",\n last = false,\n isNew = false,\n ...props\n}) => {\n const classes = useStyles();\n let typeName = \"Report\";\n if (type !== \"report\") {\n typeName = type === \"event\" ? \"Exclusive Event\" : \"Exclusive Webinar\";\n }\n const showDate = !(type === \"webinar\" && videoId);\n const [modalOpen, setOpenModal] = useState(false);\n const toggleModal = () => {\n googleAnalytics.trackVideoThumbnailClick(title);\n setOpenModal(!modalOpen);\n };\n\n const wrapperClasses = [classes.wrapper];\n return (\n \n \n {type === \"report\" && }\n {type === \"webinar\" && }\n {type === \"event\" && }\n \n \n {typeName}\n \n {title}\n {isNew && }\n \n \n {date && showDate && (\n \n Date:\n \n {formateDate(date, { format: \"m d, Y\" })}\n \n \n )}\n {registrationUrl && date && showDate && |}\n {registrationUrl && (\n \n googleAnalytics.trackExternalLinkClick({\n location: \"Coming Soon Card\",\n url: registrationUrl\n })\n }\n >\n {type === \"webinar\" && \"Register now for webinar\"}\n {type === \"event\" && \"Click here for more information\"}\n \n \n )}\n {videoId && (\n <>\n toggleModal()}\n >\n View webinar recording\n \n \n \n )}\n \n \n \n );\n};\nexport default ComingSoonCardSection;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Grid, Typography } from \"@mui/material\";\nimport BaseCard from \"../../BaseCard\";\nimport MedicationRoundedIcon from \"../../icons/MedicationRoundedIcon\";\nimport DrugList from \"../../DrugList\";\nimport ComingSoonCardSection from \"./ComingSoonCardSection\";\n\nconst useStyles = makeStyles(({ spacing, palette, breakpoints }) => {\n return {\n header: {\n display: \"flex\",\n gap: \"5px\",\n flexDirection: \"column\",\n borderBottom: `1px solid ${palette.borders.light}`,\n paddingBottom: spacing(2),\n marginTop: spacing(1),\n marginLeft: spacing(2),\n marginRight: spacing(2),\n marginBottom: spacing(0.25),\n [breakpoints.up(\"sm\")]: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: spacing(0.5),\n marginBottom: 0\n }\n },\n headerContent: {\n display: \"flex\",\n alignItems: \"center\",\n [breakpoints.up(\"sm\")]: {\n justifyContent: \"space-between\"\n }\n },\n iconWrapper: {\n transform: \"translate(-3px, 3px)\",\n [breakpoints.up(\"lg\")]: {\n transform: \"none\"\n }\n },\n body: {\n padding: spacing(2)\n }\n };\n});\n\nconst ComingSoonCard = ({ drugs = [], title, resource = null, report = null }) => {\n const classes = useStyles();\n return (\n \n {(!!title || !!drugs?.length) && (\n \n \n {title}\n \n {drugs && !!drugs.length && (\n \n \n \n \n \n \n )}\n \n )}\n \n {report && (\n \n \n \n )}\n \n {resource && (\n \n )}\n \n \n \n );\n};\n\nexport default ComingSoonCard;\n","import React from 'react'\nimport { Chip, Tooltip } from '@mui/material';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport { makeStyles } from '@mui/styles';\nimport { bool, string } from 'prop-types';\n\nconst styles = makeStyles(({palette}) => ({\n root: {\n background: palette.warning.main,\n border: '1px solid white'\n },\n}))\n\nconst UnpublishedChip = ({unpublished=true, label='Unpublished', size='medium', tooltipTitle=null}) => {\n if (!unpublished) {\n return null\n }\n const classes = styles()\n\n const chip = (}\n classes={classes}\n label={label}\n size={size}\n />)\n\n if (tooltipTitle) {\n return (\n \n {chip}\n \n )\n }\n\n return chip\n}\n\nUnpublishedChip.propTypes = {\n unpublished: bool,\n label: string\n}\n\nexport default UnpublishedChip\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Chip } from \"@mui/material\";\nimport UnpublishedChip from \"./UnpublishedChip\";\n\nimport { newItemPeriod } from \"../config\";\nimport { differenceInDays, determineComparisonDate } from \"../utils/date\";\nimport NewChip from \"./NewChip\";\n\nconst useStyles = makeStyles(() => {\n return {\n publishedFlag: {\n position: \"absolute\",\n left: 10,\n top: 10,\n zIndex: 100\n },\n };\n});\n\nconst ItemBadges = ({ item, positioned = true, size = \"medium\" }) => {\n const { publishedFlag } = useStyles();\n const comparisonDate = determineComparisonDate(item.created_at, item.display_date);\n const itemIsNew = differenceInDays([comparisonDate, new Date()]) < newItemPeriod;\n const {unpublished} = item;\n if (unpublished || itemIsNew) {\n return (\n \n {unpublished && }\n {itemIsNew && }\n \n );\n } else {\n return null;\n }\n};\n\nexport default ItemBadges;\n","import React from \"react\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Box, Card, CardActionArea, CardContent, Typography } from \"@mui/material\";\nimport PlayIcon from \"@mui/icons-material/PlayCircleFilled\";\nimport { formateDate } from \"../utils/date\";\n\nimport PlatformChips from \"./PlatformChips\";\nimport ItemBadges from \"./ItemBadges\";\nimport { cardHover } from \"../component-styles\";\nimport googleAnalytics from \"../google-analytics\";\n\nconst VEIL_COLOR = \"rgba(0, 0, 0, 0.35)\";\nconst PLAY_ICON_COLOR = \"rgba(255, 255, 255, .5)\";\n\nconst useStyles = makeStyles(({ palette, overrides, spacing, breakpoints }) => {\n const rootBase = {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"stretch\",\n border: `1px solid ${palette.secondary.light}`,\n flex: 1,\n \"& .MuiCardContent-root\": {\n flexDirection: \"column\"\n }\n };\n return {\n videoCardRoot: {\n ...rootBase,\n borderRadius: 4,\n ...cardHover(palette),\n \"&:hover\": {\n \"& div::before\": {\n opacity: 0\n }\n }\n },\n videoCardRootFeatured: {\n ...rootBase,\n borderBottomLeftRadius: 4,\n borderBottomRightRadius: 4,\n [breakpoints.up(\"lg\")]: {\n borderRadius: 4\n }\n },\n videoCardRootHorizontal: {\n ...rootBase,\n \"& .MuiCardContent-root\": {\n minHeight: 75,\n flexDirection: \"row\",\n \"& button\": {\n minWidth: 150,\n flex: \"1 1 150px\"\n }\n }\n },\n videoWrapper: {\n overflow: \"hidden\",\n height: 0,\n paddingTop: \"56.25%\",\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n position: \"relative\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 1,\n background: VEIL_COLOR,\n transition: \".2s opacity ease-in-out\"\n },\n \"& svg\": {\n fill: PLAY_ICON_COLOR,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 2\n }\n },\n videoCopy: {\n display: \"flex\",\n flex: 1,\n padding: 0,\n \"&:last-child\": {\n padding: 0\n }\n },\n videoTitle: {\n fontWeight: 500,\n cursor: \"pointer\",\n \"&:hover\": {\n textDecoration: \"none\"\n },\n \"&::after\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n },\n videoTitleWord: {\n display: \"block\"\n },\n videoDescription: {\n color: \"black\"\n },\n videoActionArea: {\n \"&:hover,&:focus\": {\n \"& > div::before\": {\n opacity: 0\n },\n \"& svg\": {\n opacity: 0.75\n }\n }\n },\n videoActionAreaHorizontal: {\n flex: \"1 1 100px\",\n maxWidth: \"100px\",\n \"&:hover\": {\n \"& > div::before\": {\n opacity: 0\n }\n }\n },\n disabledLink: {\n pointerEvents: \"none\",\n opacity: \".4\"\n },\n accessFlag: {\n position: \"absolute\",\n top: \"25%\",\n width: \"100%\",\n zIndex: 10,\n textAlign: \"center\",\n background: \"#eadeb3\",\n paddingTop: spacing(1.5),\n paddingBottom: spacing(1.5)\n },\n accessFlagStatement: {\n textAlign: \"center\",\n lineHeight: 1,\n marginBottom: spacing(0.5)\n },\n chips: {\n // Needed to make chips clickable inside the card\n position: \"relative\",\n alignSelf: \"flex-start\"\n },\n rule: {\n height: 3,\n backgroundColor: palette.primary.light,\n width: \"100%\"\n },\n videoDetailsWrapper: {\n gap: spacing(1),\n }\n };\n});\n\nconst VideoCard = ({\n video,\n handleClick,\n showDetails = true,\n showChips = true,\n isFeatured = false,\n variant = \"vertical\",\n sx = {}\n}) => {\n const classes = useStyles();\n const { palette } = useTheme();\n const { title, description, youtube_id, platform_tags = [] } = video;\n const handleCardClick = () => {\n googleAnalytics.trackVideoThumbnailClick(title);\n handleClick(video);\n };\n const thumbnailUrl = `//img.youtube.com/vi/${youtube_id}/hqdefault.jpg`;\n const date = video.display_date ? formateDate(video.display_date) : null;\n\n const isHorizontal = variant === \"horizontal\";\n\n let rootClass = isFeatured ? classes.videoCardRootFeatured : classes.videoCardRoot;\n if (isHorizontal) {\n rootClass = [classes.videoCardRoot, classes.videoCardRootHorizontal].join(\" \");\n }\n\n let playIconSize = isHorizontal ? 65 : 100;\n if (isFeatured) {\n playIconSize = 175;\n }\n\n return (\n <>\n \n \n \n \n \n \n {showChips && }\n \n {showDetails && (\n \n \n {date && {date}}\n \n {title}\n \n \n {description && (\n \n {description}\n \n )}\n {platform_tags.length > 0 && (\n \n \n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default VideoCard;\n","import React from \"react\";\nimport { array, func } from \"prop-types\";\nimport { Button, Dialog, DialogActions, DialogContent, Grid } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport VideoCard from \"./VideoCard\";\nimport VideoPlayer from \"./details/VideoPlayer\";\n\nconst propsAreSame = (preProps, nextProps) => {\n return preProps.videos && nextProps.videos && preProps.videos.length === nextProps.videos.length;\n};\n\nconst Videos = React.memo(({ videos, handleSelectVideo, Header = null }) => {\n return (\n <>\n {Header &&
}\n \n {videos.map((video, i) => (\n \n \n \n ))}\n \n \n );\n}, propsAreSame);\n\nclass VideoGrid extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false,\n activeVideo: {\n title: \"\",\n id: \"\"\n }\n };\n }\n\n render() {\n const { Header, videos } = this.props;\n const { activeVideo } = this.state;\n\n const handleSelectVideo = (resource) => {\n this.setState((prevState) => ({\n ...prevState,\n modalOpen: true,\n activeVideo: {\n title: resource.title,\n id: resource.youtube_id,\n description: resource.description,\n tags: resource.platform_tags\n }\n }));\n };\n const handleModalClose = () => {\n this.setState({\n activeVideo: { title: \"\", id: \"\", tags: [], description: \"\" },\n modalOpen: false\n });\n };\n\n return (\n <>\n \n \n \n \n \n \n
\n {activeVideo.id && }\n
\n
\n \n \n );\n }\n}\n\nVideoGrid.propTypes = {\n videos: array,\n handleSelectVideo: func,\n Header: func\n};\n\nexport default VideoGrid;\n","import React from 'react'\nimport { string, array, object } from 'prop-types'\nimport { makeStyles } from '@mui/styles'\nimport PlatformChips from './PlatformChips'\nimport ItemBadges from './ItemBadges'\n\nimport analytics from '../google-analytics'\nimport { cardHover } from '../component-styles';\nimport { Box, Link, Typography } from '@mui/material'\n\nconst useStyles = makeStyles(({ palette, spacing }) => {\n return {\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n gap: '1rem',\n color: palette.secondary.main,\n borderRadius: 4,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: palette.secondary.light,\n padding: '1rem',\n width: '100%',\n // Position needed for docTitle::after styles\n position: 'relative',\n ...cardHover( palette ),\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n docTitle: {\n color: palette.secondary.main,\n display: 'block',\n fontSize: 22,\n marginRight: '1rem',\n '&:hover': {\n textDecoration: 'none',\n },\n // The ::after styles make the whole card clickable\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n },\n docDescription: {\n color: 'black',\n },\n chips: {\n // Needed to make chips clickable inside the card\n position: 'relative',\n alignSelf: 'flex-start',\n },\n }\n})\n\nconst DocumentCard = props => {\n const classes = useStyles()\n const {\n doc,\n docTitle,\n docDescription,\n docUrl,\n platformTags,\n } = props\n\n const handleClick = () => {\n analytics.trackDocument(`document_resource: ${docTitle}`);\n };\n\n return (\n \n \n \n { docTitle }\n \n \n \n { docDescription }\n \n { platformTags.length > 0 && }\n \n \n )\n}\n\nDocumentCard.defaultProps = {\n docTitle: '',\n docDescription: '',\n docUrl: '',\n platformTags: [],\n}\n\nDocumentCard.propTypes = {\n doc: object,\n docDescription: string,\n docUrl: string,\n platformTags: array,\n}\n\nexport default DocumentCard\n","import React from 'react'\nimport { makeStyles } from '@mui/styles';\nimport { array, func } from 'prop-types'\nimport { Grid } from '@mui/material'\nimport DocumentCard from './DocumentCard'\n\nconst useStyles = makeStyles(({ spacing }) => {\n return {\n wrapper: {\n paddingTop: spacing(0),\n },\n }\n})\n\nconst DocumentGrid = props => {\n const { documents, Header } = props\n const classes = useStyles()\n\n // TODO: Can we remove the Header prop from this component?\n return (\n
\n { Header &&
}\n \n {\n documents.map((doc, i) => (\n \n \n \n ))\n }\n \n
\n )\n}\n\nDocumentGrid.defaultProps = {\n documents: [],\n}\n\nDocumentGrid.propTypes = {\n documents: array,\n Header: func,\n}\n\nexport default DocumentGrid\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Box, Link, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles(({ palette }) => {\n return {\n lightLink: {\n color: palette.common.white,\n textDecoration: \"none\",\n '&:hover': {\n color: palette.common.white,\n textDecoration: \"underline\",\n }\n },\n };\n});\n\nexport const ClippedParagraph = ({\n text,\n characterCount = 160,\n toggleText = [\"[more]\", \"[less]\"],\n textColor=\"light\"\n}) => {\n const classes = useStyles();\n const clippedText = useMemo(() => {\n if (text.length <= characterCount) return text;\n return text.substring(0, characterCount) + \"...\";\n }, [text, characterCount]);\n const [renderedText, setRenderedText] = useState(clippedText);\n const [textIsClipped, setTextIsClipped] = useState(true);\n const [currentToggleText, setCurrentToggleText] = useState(toggleText[0]);\n const handleToggleText = useCallback(\n (event) => {\n event.currentTarget.blur();\n event.preventDefault();\n if (textIsClipped) {\n setRenderedText(text);\n setTextIsClipped(false);\n setCurrentToggleText(toggleText[1]);\n } else {\n setRenderedText(clippedText);\n setTextIsClipped(true);\n setCurrentToggleText(toggleText[0]);\n }\n },\n [text, clippedText, toggleText, textIsClipped]\n );\n return (\n \n {renderedText}\n {text.length > characterCount && (\n \n {\" \"}\n handleToggleText(event)} className={textColor === \"light\" ? classes.lightLink : undefined}>\n {currentToggleText}\n \n \n )}\n \n );\n};\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { alpha } from \"@mui/material/styles\";\nimport { Box, Grid, Typography } from \"@mui/material\";\n\nimport VideoCard from \"./VideoCard\";\nimport ItemBadges from \"./ItemBadges\";\nimport { formateDate } from \"../utils/date\";\nimport VideoDialog from \"./VideoDialog\";\nimport { ClippedParagraph } from \"./typography/ClippedParagraph\";\n\nconst useStyles = makeStyles(({ palette, breakpoints }) => {\n const mediaContext = ({borderRadius, hasLeftBorder}) => ({\n position: \"relative\",\n \"&::after\": {\n content: '\" \"',\n display: \"block\",\n width: \"125%\",\n position: \"absolute\",\n borderLeft: hasLeftBorder ? `1px solid ${alpha(palette.secondary.main, 0.2)}` : \"none\",\n background: palette.secondary.main,\n top: 0,\n left: 0,\n right: \"-100%\",\n bottom: 0,\n zIndex: 1,\n borderRadius\n }\n })\n return {\n featuredWrapper: {\n marginTop: 20,\n marginBottom: 10,\n [breakpoints.up(\"md\")]: {\n marginBottom: 36,\n marginTop: 36\n },\n overflow: \"hidden\"\n },\n featuredContainer: {\n alignItems: \"center\",\n color: palette.common.white,\n \"& a:hover\": {\n textDecoration: \"none\"\n }\n },\n mediaContext: (props) => mediaContext(props),\n mediaContextContent: {\n position: \"relative\",\n zIndex: 10,\n color: palette.text.dark,\n },\n videoResourceWrapper: {\n display: \"flex\",\n position: \"relative\",\n zIndex: 10\n },\n videoResourceContainer: {\n flex: 1\n },\n link: {\n color: \"white\",\n textDecoration: \"underline\",\n \"&:hover,&:focus\": {\n color: \"rgba(255,255,255,.85)\"\n }\n }\n };\n});\n\nconst CurrentVideo = ({ video, borderRadius = 0, style, hasLeftBorder=false }) => {\n const classes = useStyles({ borderRadius, hasLeftBorder });\n const [modalOpen, setOpenModal] = useState(false);\n\n const toggleModal = () => {\n setOpenModal(!modalOpen);\n };\n\n // VideoPlayer expects the youtube video id as just `id`\n video.id = video.youtube_id;\n\n const date = formateDate(video.display_date);\n\n return (\n <>\n \n \n \n \n \n \n {date && {date}}\n \n \n \n {video.title}\n \n {video.description && }\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CurrentVideo;\n","import React from 'react';\nimport { array, string } from 'prop-types';\nimport { Box, Typography } from '@mui/material';\n\nimport DownloadIcon from '@mui/icons-material/GetApp';\n\nconst Attachments = ({ attachments= [], title=\"\" }) => {\n\n if (!attachments.length) return null\n\n return (\n <>\n {title}\n \n { attachments.map((attachment, i) => (\n \n \n {attachment.filename}\n \n ))\n }\n \n \n );\n};\n\nAttachments.propTypes = {\n attachments: array,\n title: string\n};\n\nexport default Attachments;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport { object } from 'prop-types';\nimport { Box, Grid, Typography } from '@mui/material';\n\nimport DOMPurify from 'dompurify';\nimport Attachments from './Attachments';\n\nconst contentStyles = makeStyles(({palette, spacing, breakpoints}) => ({\n contentWrapper: {\n paddingTop: spacing(.75),\n '& p': {\n // Enforce size since this could be resized in the WYSIWYG\n fontSize: '16px !important',\n color: '#4A4A4A',\n lineHeight: '22px',\n marginTop: 0,\n '&:last-of-type': {\n marginBottom: 0,\n },\n '& br': {\n display: 'none'\n }\n },\n '& a': {\n textDecoration: 'underline',\n '&:hover': {\n textDecoration: 'none',\n }\n },\n '& ul li, & ol li': {\n // Enforce size since this could be resized in the WYSIWYG\n '&, & span': {\n fontSize: '16px !important',\n },\n color: '#4A4A4A',\n lineHeight: '20px',\n marginBottom: spacing(.75),\n paddingRight: spacing(2),\n },\n '& ul li': {\n '&::marker': {\n color: palette.secondary.main,\n fontSize: 20,\n }\n },\n '& ol li': {\n '&::marker': {\n color: palette.secondary.main,\n fontWeight: 'bold',\n fontSize: 16,\n }\n },\n '& h1': {\n fontSize: 20,\n lineHeight: '26px',\n fontWeight: 600,\n fontFamily: 'Lato',\n color: '#4A4A4A',\n marginTop: 0\n },\n '& h2': {\n fontSize: 16,\n lineHeight: '20px',\n fontFamily: 'Lato',\n color: '#4A4A4A',\n marginTop: 0\n },\n '& blockquote': {\n marginLeft: 0,\n paddingLeft: 40,\n paddingRight: spacing(3),\n position: 'relative',\n fontSize: '16px !important',\n color: '#4A4A4A',\n lineHeight: '22px',\n '&::before': {\n content: \"'\\\"'\",\n fontSize: 60,\n position: 'absolute',\n display: 'block',\n fontFamily: 'cursive',\n top: 0,\n left: 5,\n color: palette.secondary.light,\n lineHeight: 1,\n height: 30,\n width: 30,\n overflow: 'hidden',\n }\n }\n }\n}))\n\nconst HTMLContentBlock = ({dirtyHTML='', attachments=[]}) => {\n const classes = contentStyles()\n const cleanContent = DOMPurify.sanitize(dirtyHTML, {\n ADD_ATTR: ['target']\n })\n return (\n \n
\n { attachments.length > 0 &&\n \n }\n \n )\n}\n\nexport default HTMLContentBlock\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport { object } from 'prop-types';\nimport { Box, Grid, Typography } from '@mui/material';\n\nimport { formateDate } from '../../utils/date'\nimport ItemBadges from '../ItemBadges';\nimport HTMLContentBlock from './HTMLContentBlock'\n\nconst itemStyles = makeStyles(({palette, spacing, breakpoints}) => ({\n itemWrapper: {\n marginBottom: 30,\n },\n dateContainer: {\n display: 'flex',\n alignItems: 'stretch',\n justifyContent: 'flex-end',\n marginBottom: spacing(1),\n [breakpoints.up('md')]: {\n marginBottom: 0,\n },\n },\n dateWrapper: {\n display:'flex',\n flex: 1,\n alignItems: 'flex-start',\n position: 'relative',\n paddingRight: 20,\n alignItems: 'center',\n [breakpoints.up('lg')]: {\n flexDirection:'column',\n alignItems: 'flex-start',\n }\n },\n date: {\n color: palette.primary.main,\n fontSize: 24,\n lineHeight: '30px',\n fontWeight: 'bold',\n marginBottom: 0,\n [breakpoints.up('md')]: {\n marginBottom: spacing(1),\n },\n },\n pointLine: {\n position: 'absolute',\n right: 5,\n top: 10,\n bottom: -45,\n display: 'none',\n [breakpoints.up('lg')]: {\n display: 'block',\n },\n '&::before': {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n height: 12,\n width: 12,\n top: 0,\n left: 0,\n background: palette.primary.main,\n borderRadius: '50%',\n border: '1px solid white',\n zIndex: 3,\n },\n '&::after': {\n content: \"''\",\n display: 'block',\n position: 'absolute',\n width: 1,\n top: 1,\n left: 6,\n bottom: 0,\n background: palette.primary.main,\n zIndex: 2,\n }\n },\n}))\n\nconst RecentUpdatesListItem = ({item}) => {\n if (!item) return null\n const classes = itemStyles()\n return (\n \n \n \n \n \n \n \n {formateDate(item.display_date, {format: 'm d, Y'})}\n \n \n \n
\n
\n
\n \n \n \n
\n
\n
\n )\n}\n\nRecentUpdatesListItem.propTypes = {\n item: object,\n};\n\nexport default RecentUpdatesListItem\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { array, bool, number } from \"prop-types\";\nimport { Box, Container, Grid, Link } from \"@mui/material\";\n\nimport WrappedProgressIndicator from \"../WrappedProgressIndicator\";\nimport RecentUpdatesListItem from \"./RecentUpdatesListItem\";\n\nimport { connectToState } from \"../../redux/connect-api\";\n\nconst containerStyles = makeStyles(({ palette, spacing }) => ({\n updatesContainer: {\n paddingBottom: 15,\n position: \"relative\",\n \"&::after\": {\n content: \"''\",\n display: \"block\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n height: 25,\n background: \"white\",\n background: \"linear-gradient(0deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%)\",\n zIndex: 10\n }\n },\n updatesLink: {\n \"& a\": {\n textDecoration: \"none\",\n fontSize: \"1.5em\"\n }\n }\n}));\n\nconst RecentUpdates = ({ recentUpdates = [], loading = false, limit = 1 }) => {\n const classes = containerStyles();\n\n if (loading) {\n return ;\n }\n\n if (!recentUpdates.length) return null;\n\n const updates = recentUpdates.filter((item, index) => {\n return limit > 0 ? index < limit : true;\n });\n\n return (\n \n {updates.map((item, i) => (\n \n ))}\n \n );\n};\n\nRecentUpdates.defaultProps = {\n recentUpdates: [],\n loading: false,\n limit: 1\n};\n\nRecentUpdates.propTypes = {\n recentUpdates: array,\n loading: bool,\n limit: number\n};\n\nconst mapStateToProps = (state) => {\n return {\n recentUpdates: state.recentUpdates.data,\n loading: state.recentUpdates.loading\n };\n};\n\nexport default connectToState(mapStateToProps)(RecentUpdates);\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { bool, func, node, number, object, oneOfType, string } from \"prop-types\";\nimport { Box, Button, Container, Typography, CircularProgress } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport googleAnalytics from \"../google-analytics\";\n\nconst useStyles = makeStyles(({ breakpoints, palette, spacing }) => {\n const horizontalPadding = {\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n };\n return {\n wrapper: {\n marginBottom: spacing(12),\n padding: 0,\n position: \"relative\"\n },\n border: {\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"#e7e7e7\",\n borderRadius: 4,\n margin: \"12px 12px 16px\",\n padding: [0, spacing(2), 0, spacing(2)],\n [breakpoints.down(\"sm\")]: {\n padding: [0, spacing(1), 0, spacing(1)]\n }\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n transform: \"translateY(-50%)\",\n paddingRight: spacing(2)\n },\n footer: {\n paddingLeft: spacing(3),\n transform: \"translateY(50%)\"\n },\n contentWrapper: {\n paddingLeft: (props) => spacing(props.paddingX),\n paddingRight: (props) => spacing(props.paddingX),\n paddingBottom: spacing(4)\n },\n titleBox: {\n backgroundColor: \"white\",\n display: \"flex\",\n alignItems: \"center\"\n },\n wrapperIcon: {\n color: palette.primary.main,\n fontSize: \"2.5rem\",\n transform: \"translate(-50%, 5px)\",\n background: \"white\",\n paddingBottom: \"10px\"\n },\n wrapperTitle: {\n color: palette.secondary.main,\n fontSize: \"2rem\",\n paddingRight: spacing(2)\n },\n wrapperDescription: {\n marginBottom: spacing(4)\n },\n button: {\n borderColor: palette.secondary.main,\n color: palette.secondary.main,\n textTransform: \"none\",\n backgroundColor: \"white\",\n \"&:hover\": {\n backgroundColor: palette.secondary.veryLight\n }\n },\n buttonWrapper: {\n display: \"inline-block\",\n backgroundColor: \"white\",\n ...horizontalPadding,\n [breakpoints.down(\"xs\")]: {\n display: \"none\"\n }\n }\n };\n});\nconst ResourceWrapper = (props) => {\n const {\n children,\n descriptionPaddingX,\n paddingX,\n wrapperLimit,\n wrapperCount = 0,\n wrapperDescription = null,\n wrapperHref,\n WrapperIcon,\n wrapperTitle,\n loading\n } = props;\n\n const classes = useStyles({ paddingX: paddingX });\n\n const buttonAttributes = {\n component: Link,\n variant: \"outlined\",\n className: classes.button,\n to: wrapperHref\n };\n\n const showMoreButtons = wrapperCount > 0;\n\n let buttonText = (\n \n View all {wrapperTitle} ({wrapperCount}){\" \"}\n \n );\n\n if (wrapperCount <= wrapperLimit) {\n buttonText = View {wrapperTitle} Page;\n }\n\n return (\n \n {loading && }\n {!loading && (\n \n \n \n \n \n {wrapperTitle}\n \n \n {showMoreButtons && (\n \n {\n googleAnalytics.trackCustomEvent({\n eventCategory: \"Landing Page\",\n eventAction: \"Click view all (Top)\",\n eventLabel: wrapperTitle\n });\n }}\n >\n {buttonText}\n \n \n )}\n \n \n {wrapperCount === 0 && (\n \n There are currently no {wrapperTitle.toLowerCase()} to display.\n \n )}\n {wrapperCount > 0 && wrapperDescription && (\n \n {wrapperDescription}\n \n )}\n {wrapperCount > 0 && children}\n \n {showMoreButtons && (\n \n \n {\n googleAnalytics.trackCustomEvent({\n eventCategory: \"Landing Page\",\n eventAction: \"Click view all (Bottom)\",\n eventLabel: wrapperTitle\n });\n }}\n >\n {buttonText}\n \n \n \n )}\n \n )}\n \n );\n};\n\nResourceWrapper.defaultProps = {\n descriptionPaddingX: 0,\n paddingX: 5\n};\n\nexport default ResourceWrapper;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport { array, bool } from \"prop-types\";\nimport { Box, Container } from \"@mui/material\";\nimport OndemandVideoRoundedIcon from \"@mui/icons-material/OndemandVideoRounded\";\nimport DescriptionRoundedIcon from \"@mui/icons-material/DescriptionRounded\";\nimport VideoSettingsRoundedIcon from \"../../icons/VideoSettingsRoundedIcon\";\nimport TipsAndUpdatesRoundedIcon from \"../../icons/TipsAndUpdatesRoundedIcon\";\n\nimport { connectToState } from \"../../../redux/connect-api\";\nimport ComingSoonCard from \"../ComingSoon/ComingSoonCard\";\nimport VideoGrid from \"../../VideoGrid\";\nimport DocumentGrid from \"../../DocumentGrid\";\nimport CurrentVideo from \"../../CurrentVideo\";\nimport RecentUpdates from \"../../recent_updates/RecentUpdates\";\nimport ResourceWrapper from \"../../ResourceWrapper\";\nimport { sectionStyles } from \"../../../config/styles\";\nimport {\n comingSoonLoadingSelector,\n comingSoonSelector\n} from \"../../../selectors\";\n\nconst COMING_SOON_ITEM_LIMIT = 3;\n\nconst useStyles = makeStyles(({ palette, spacing }) => {\n return {\n featuredWrapper: {\n marginBottom: 55\n },\n featuredContainer: {\n alignItems: \"center\"\n },\n mediaContext: {\n background: palette.secondary.main,\n color: palette.text.light,\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20,\n padding: spacing(4)\n },\n videoResourceWrapper: {\n display: \"flex\"\n },\n videoResourceContainer: {\n flex: 1\n },\n link: {\n color: \"white\",\n textDecoration: \"underline\",\n \"&:hover,&:focus\": {\n color: \"rgba(255,255,255,.85)\"\n }\n }\n };\n});\n\nconst AppLandingContent = ({\n mediaResourcesLoading,\n mediaResources = [],\n recentUpdatesLoading,\n recentUpdates = [],\n comingSoonItemsLoading,\n comingSoonItems\n}) => {\n const classes = useStyles();\n\n if (!mediaResources.length) return null;\n\n const resourcesByType = (type) => {\n return mediaResources\n .filter((r) => r.attributes.resource_type === type)\n .map((r) => r.attributes);\n };\n\n const resourceVideos = resourcesByType(\"resource\");\n const resourceDocuments = resourcesByType(\"document\");\n const webinars = resourcesByType(\"webinar\");\n\n const currentWebinar = (webinars.length && webinars[0]) || null;\n\n let linkToMore = null;\n if (webinars.length > 1) {\n linkToMore = {\n text: \"webinars\",\n count: webinars.length\n };\n }\n const CurrentWebinar = () => {\n if (!currentWebinar) return null;\n return (\n \n \n \n );\n };\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {comingSoonItems.map((props, i) => (\n \n ))}\n \n \n \n \n );\n};\n\nAppLandingContent.propTypes = {\n mediaResources: array,\n recentUpdates: array,\n loading: bool\n};\n\nconst mapStateToProps = ({ mediaResources, recentUpdates, ...state }, props) => {\n return {\n mediaResourcesLoading: mediaResources.loading,\n mediaResources: mediaResources.data,\n recentUpdatesLoading: recentUpdates.loading,\n recentUpdates: recentUpdates.data,\n comingSoonItemsLoading: comingSoonLoadingSelector(state),\n comingSoonItems: comingSoonSelector(state, {\n limit: COMING_SOON_ITEM_LIMIT\n })\n };\n};\n\nexport default connectToState(mapStateToProps)(AppLandingContent);\n","import React from \"react\";\nimport ToolSelector from \"../../ToolSelector\";\nimport AppPage from \"..\";\nimport AppLandingNav from \"./AppLandingNav\";\nimport ComingSoonBanner from \"./ComingSoonBanner\";\nimport AppLandingContent from \"./AppLandingContent\";\n\nconst AppLanding = () => {\n return (\n }\n >\n \n \n \n \n );\n};\n\nexport default AppLanding;\n","import React from \"react\";\nimport { Box, Container } from \"@mui/material\";\n\nconst AppPageContentWrapper = ({ children }) => (\n \n {children}\n \n);\n\nexport default AppPageContentWrapper;\n","import React from \"react\";\nimport { makeStyles } from \"@mui/styles\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\nimport Paper from \"@mui/material/Paper\";\nimport Container from \"@mui/material/Container\";\n\nconst useStyles = makeStyles(({ spacing }) => {\n return {\n accessFlag: {\n width: \"100%\",\n marginTop: spacing(2),\n padding: spacing(4),\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n accessFlagStatement: {\n textAlign: \"center\",\n marginBottom: spacing(2)\n }\n };\n});\n\nconst AccessFlag = ({ toolName }) => {\n const classes = useStyles();\n return (\n \n \n \n Your organization currently does not have access to this tool\n \n \n Request Access\n \n \n \n );\n};\n\nexport default AccessFlag;\n","import React, { useEffect } from \"react\";\nimport { bool, array } from \"prop-types\";\nimport { Box, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Link } from \"react-router-dom\";\n\nimport AppPage from \"..\";\nimport { connectToState } from \"../../../redux/connect-api\";\nimport { comingSoonSelector } from \"../../../selectors\";\nimport ComingSoonCard from \"./ComingSoonCard\";\nimport ProgressIndicator from \"../../ProgressIndicator\";\nimport AppPageContentWrapper from \"../AppPageContentWrapper\";\nimport { APP_TITLE } from \"../../../constants/index\";\nimport useUserHasAccess from \"../../../hooks/useUserHasAccess\";\nimport AccessFlag from \"../../AccessFlag\"\n\nconst useStyles = makeStyles(() => {\n return {\n cardWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"30px\"\n }\n };\n});\n\nconst ComingSoon = ({ loading, comingSoonItems }) => {\n const userHasAccess = useUserHasAccess()\n const classes = useStyles();\n useEffect(() => {\n document.title = `${APP_TITLE} - Coming Soon`;\n }, []);\n\n if (loading) {\n return (\n \n )\n }\n\n if (!userHasAccess) {\n return \n }\n\n return (\n \n \n {!comingSoonItems.length && (\n \n \n There are currently no report snapshots or webinars planned for the immediate future.\n \n \n Check out our archived report snapshots or{\" \"}\n webinars in the meantime.\n \n \n )}\n {!!comingSoonItems.length && (\n \n {comingSoonItems.map((props, i) => (\n \n ))}\n \n )}\n \n \n );\n};\n\nComingSoon.propTypes = {\n loading: bool,\n comingSoonItems: array\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading || state.comingSoon.loading,\n comingSoonItems: comingSoonSelector(state)\n };\n};\n\nexport default connectToState(mapStateToProps)(ComingSoon);\n","import React from 'react';\nimport {\n Typography,\n Box } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nconst useStyles = makeStyles(({palette, spacing, breakpoints}) => {\n return {\n base: {\n color: palette.text.dark,\n fontSize: '1.2rem',\n fontWeight: 'normal',\n marginBottom: 15,\n },\n }\n})\n\nconst LandingTitle = ({ children, variant, align, style }) => {\n const classes = useStyles();\n return (\n \n {children}\n \n )\n}\n\nLandingTitle.defaultProps = {\n align: 'left',\n variant: 'p',\n style: {},\n}\n\nexport default LandingTitle;\n","import React, { useEffect } from \"react\";\nimport { bool, array } from \"prop-types\";\nimport { Box, Grid, Paper, Typography } from \"@mui/material\";\nimport ProgressIndicator from \"../ProgressIndicator\";\nimport AppPageContentWrapper from \"./AppPageContentWrapper\";\n\nimport AppPage from \".\";\nimport DocumentGrid from \"../DocumentGrid\";\nimport LandingTitle from \"../landing/LandingTitle\";\n\nimport { connectToState } from \"../../redux/connect-api\";\nimport { APP_TITLE } from \"../../constants\";\nimport useUserHasAccess from \"../../hooks/useUserHasAccess\";\nimport AccessFlag from \"../AccessFlag\"\n\nconst DocumentsPage = ({ mediaResources, loading }) => {\n const userHasAccess = useUserHasAccess()\n useEffect(() => {\n document.title = `${APP_TITLE} - Documents`;\n }, []);\n const documents = mediaResources\n .filter((r) => r.attributes.resource_type === \"document\")\n .map((r) => r.attributes);\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n if (!userHasAccess) {\n return \n }\n\n if (!documents.length) {\n return (\n \n \n \n There are currently no documents to display.\n \n \n \n );\n }\n\n return (\n \n \n \n \n (\n \n Download our ICER Analytics training documents:\n \n )}\n documents={documents}\n />\n \n \n \n \n );\n};\n\nDocumentsPage.defaultProps = {\n loading: true,\n mediaResources: []\n};\n\nDocumentsPage.propTypes = {\n loading: bool,\n mediaResources: array\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading || state.mediaResources.loading,\n mediaResources: state.mediaResources.data\n };\n};\n\nexport default connectToState(mapStateToProps)(DocumentsPage);\n","import { makeStyles } from \"@mui/styles\";\n\nexport const modalStyles = makeStyles(() => ({\n dialogRoot: { },\n actionRoot: {\n justifyContent: 'space-between',\n padding: '8px 16px 8px 16px',\n '& .MuiDialogTitle-root': {\n padding: 0\n }\n },\n contentRoot: {\n margin: '0 0 8px 0', // only on bottom\n padding: '0 16px 8px 16px'\n },\n contentNoPaddingXRoot: {\n margin: '0 0 8px 0', // only on bottom\n padding: '0 0 8px 0'\n }\n}));\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { modalStyles } from './styles'\n\nconst ModalWithLauncher = ({ i18nKey, title='', Launcher, Content, mx=true }) => {\n const classes = modalStyles();\n const [modalOpen, setOpen] = React.useState(false);\n\n const handleModalOpen = (event) => {\n event.preventDefault()\n setOpen(true);\n };\n\n const handleModalClose = (event) => {\n event.preventDefault()\n setOpen(false);\n };\n\n const modalGraphicOrText = (\n \n \n \n );\n\n return (\n <>\n { modalGraphicOrText }\n \n \n \n {title}\n \n \n Close\n \n \n \n \n \n \n \n );\n};\n\nModalWithLauncher.propTypes = {\n i18nKey: string.isRequired,\n title: string,\n Launcher: func,\n Content: func\n};\n\nexport default ModalWithLauncher;\n","import React from 'react';\n\nconst LandingIllustration = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n)\n\nexport default LandingIllustration;\n","import React from 'react'\nimport { surveys } from '../../config'\nimport { Container } from '@mui/material'\n\nclass Survey extends React.Component {\n\n componentDidMount() {\n let el = document.createElement(\"script\")\n el.src = \"https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd10Mk_2FpWCzXy2JaDS8uYlkoMgT7wiQxbRDL8hz4MyGPt.js\"\n document.body.appendChild(el)\n }\n\n render() {\n return (\n
\n )\n }\n}\n\nexport default Survey\n","import React from 'react';\nimport {\n Typography,\n Grid,\n Container,\n Box,\n Button } from '@mui/material';\nimport { makeStyles } from '@mui/styles';\nimport ModalWithLauncher from '../modals/ModalWithLauncher';\nimport LandingIllustration from './LandingIllustration';\nimport Survey from './Survey'\nimport { formId } from './config'\nimport analytics from '../../google-analytics';\nimport googleAnalytics from '../../google-analytics';\n\nconst useStyles = makeStyles(({palette, spacing, breakpoints}) => {\n const { secondary } = palette\n return {\n introWrapper: {\n paddingTop: 50,\n paddingBottom: 50,\n position: 'relative',\n background: secondary.main,\n [breakpoints.up('sm')]: {\n paddingTop: '150px',\n },\n width: '100vw',\n '&::after': {\n content: '\"\"',\n background: secondary.main,\n minHeight: '300px',\n width: '100%',\n display: 'block',\n borderBottomLeftRadius: \"50% 85%\",\n borderBottomRightRadius: \"50% 85%\",\n position: \"absolute\",\n left: \"-25vw\",\n right: \"-25vw\",\n width: \"150vw\",\n zIndex: 0,\n }\n },\n introContainer: {\n flexDirection: 'row-reverse',\n [breakpoints.up('sm')]: {\n flexDirection: 'row',\n },\n },\n introHeading1: {\n color: 'white',\n font: 'normal normal 900 32px/38px Lato',\n lineHeight: 1,\n [breakpoints.up('sm')]: {\n font: 'normal normal 900 45px/86px Lato',\n },\n },\n introHeading2: {\n color: 'white',\n font: 'normal normal 300 60px/70px Lato',\n marginBottom: spacing(2),\n '& strong': {\n textTransform: 'uppercase',\n },\n [breakpoints.up('sm')]: {\n marginBottom: spacing(3),\n font: 'normal normal 300 78px/86px Lato',\n },\n },\n introText: {\n fontSize: 22,\n lineHeight: '32px',\n fontWeight: 300,\n color: 'white',\n marginBottom: spacing(3),\n [breakpoints.up('sm')]: {\n paddingRight: spacing(3),\n }\n },\n illustrationWrapper: {\n display: 'flex',\n },\n illustration: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: '1 1 100%',\n '& svg': {\n flex: '1 1 100%',\n width: '100%',\n }\n },\n actionWrapper: {\n marginBottom: spacing(1),\n },\n loginAction: {\n color: 'white',\n textAlign: 'center',\n '& a': {\n color: 'white',\n textDecoration: 'underline',\n '&:hover,&:focus': {\n color: 'rgba(255,255,255,.85)',\n }\n },\n [breakpoints.up('sm')]: {\n textAlign: 'left',\n paddingLeft: spacing(3),\n }\n },\n }\n});\n\nconst buttonStyles = makeStyles(({breakpoints, spacing}) => {\n return {\n root: {\n padding: spacing(3),\n minWidth: '350px',\n background: '#FFFFFFA6',\n width: '100%',\n border: 'white 1px solid',\n alignItems: 'center',\n textAlign: 'center',\n fontSize: 18,\n color: 'black',\n justifyContent: 'flex-start',\n fontWeight: 600,\n '&:hover,&:focus': {\n background: 'white',\n },\n [breakpoints.up('sm')]: {\n width: 'auto',\n textAlign: 'left',\n alignItems: 'flex-start',\n },\n },\n }\n})\n\nconst LandingIntroTools = () => {\n const classes = useStyles();\n const buttonClasses = buttonStyles();\n const handleSignIn = (event) => {\n event.preventDefault()\n const form = document.getElementById(formId)\n form && form.submit()\n googleAnalytics.trackLoginClick(\"Already have account\")\n }\n const ModalLauncher = () => (\n \n )\n return (\n \n \n \n \n \n \n From Insight\n
\n to Action\n
\n \n ICER Analytics™ revolutionizes your ability to develop formularies, negotiate drug prices, and explore new ways to apply evidence in a drive toward a health system that can achieve fair prices and fair access for all.\n \n \n \n \n \n Already have an account? Login\n \n
\n
\n \n \n \n \n \n
\n
\n
\n );\n};\n\nexport default LandingIntroTools;\n","import React from \"react\";\nimport {\n Card,\n CardMedia,\n CardContent,\n Typography,\n Grid,\n Container,\n Box,\n Button,\n List,\n ListItem,\n ListItemText\n} from \"@mui/material\";\nimport LandingTitle from \"./LandingTitle\";\nimport ModalWithLauncher from \"../modals/ModalWithLauncher\";\nimport Survey from \"./Survey\";\nimport { makeStyles } from \"@mui/styles\";\nimport ConnectSVG from \"../../styles/landing/im-connect-to-ec.svg\";\nimport CatchSVG from \"../../styles/landing/ec-catch-meeting-highlights.svg\";\nimport CompareSVG from \"../../styles/landing/ec-compare-pricing.svg\";\nimport SearchSVG from \"../../styles/landing/ec-no-more-hunting.svg\";\nimport DirectSVG from \"../../styles/landing/im-direct-from-icer.svg\";\nimport NewSVG from \"../../styles/landing/im-stay-in-the-know.svg\";\nimport IMImage from \"../../styles/landing/im-preview1020x660.png\";\nimport ECImage from \"../../styles/landing/ec-preview1020x660.png\";\nimport { appPageTitleStyle } from \"../AppPages\";\nimport googleAnalytics from \"../../google-analytics\";\n\nconst toolDescriptions = [\n {\n name: \"Evidence Compendium\",\n description: (className) => (\n \n Streamline the use of ICER Analyses so you can make the best decisions.\n \n ),\n image: ECImage,\n points: [\n {\n title: \"No more hunting\",\n icon: SearchSVG,\n description: (className) => (\n \n You can search for ICER reviewed drugs by: Generic Name,Trade Name,{\" \"}\n Condition.\n \n )\n },\n {\n title: \"Compare pricing\",\n icon: CompareSVG,\n description: (className) => (\n \n Fast and interactive data visualization to compare how your price ranks against the ICER\n prices.\n \n )\n },\n {\n title: \"Catch the highlights\",\n icon: CatchSVG,\n description: (className) => (\n \n Report and meeting highlights captured in a brief video, along with the Report at a\n Glance, Patient Perspectives, and key evidence summaries and meeting snapshots.\n \n )\n }\n ]\n },\n {\n name: \"Interactive Modeler\",\n description: (className) => (\n \n Share your assumptions based on new evidence using ICER’s models.\n \n ),\n image: IMImage,\n points: [\n {\n title: \"Direct from ICER to you\",\n icon: DirectSVG,\n description: (className) => (\n \n Work directly with ICER’s models by varying inputs and estimates.\n \n )\n },\n {\n title: \"Connect to the Evidence Compendium\",\n icon: ConnectSVG,\n description: (className) => (\n \n Publish your alternative pricing benchmarks to all of the tool's users.\n \n )\n },\n {\n title: \"Stay in the Know\",\n icon: NewSVG,\n description: (className) => (\n \n Your subscription allows you rapid access to the new models as ICER releases them.\n \n )\n }\n ]\n }\n];\n\nconst toolStyles = makeStyles(({ spacing, breakpoints }) => {\n return {\n appPageTitleStyle: appPageTitleStyle(breakpoints),\n toolWrapper: {\n position: \"relative\",\n zIndex: 10,\n marginBottom: \"100px\"\n },\n toolCard: {\n flex: \"1 1 100%\"\n },\n toolCardWrapper: {\n display: \"flex\",\n marginBottom: spacing(6)\n },\n toolCardContainer: {\n display: \"flex\",\n flex: \"1 1 auto\",\n marginBottom: spacing(4),\n [breakpoints.up(\"sm\")]: {\n marginBottom: 0\n }\n }\n };\n});\n\nconst landingCardStyles = makeStyles(({ palette, spacing, breakpoints }) => {\n return {\n root: {\n background: \"#FFFFFF 0% 0% no-repeat padding-box\",\n boxShadow: \"0px 3px 20px #00000029\",\n border: \"10px solid #FFFFFF80\",\n borderRadius: \"20px\",\n minHeight: \"100%\"\n },\n imgPlaceholder: {\n minHeight: \"250px\",\n color: \"#999\"\n },\n title: {\n color: palette.primary.main,\n textTransform: \"uppercase\",\n font: \"normal normal bold 35px/70px Lato\",\n lineHeight: 1,\n marginBottom: spacing(1)\n },\n description: {\n marginBottom: spacing(3),\n \"& strong\": {\n fontWeight: 600\n }\n },\n listItemRoot: {\n marginBottom: spacing(2),\n paddingBottom: spacing(3),\n borderBottom: \"2px solid #F4F4F4\",\n justifyContent: \"space-between\",\n \"&:last-of-type\": {\n borderBottom: 0,\n margin: 0\n }\n },\n content: {\n padding: spacing(2),\n [breakpoints.up(\"sm\")]: {\n padding: spacing(3)\n },\n [breakpoints.up(\"md\")]: {\n padding: spacing(4)\n }\n },\n iconWrapper: {\n flex: \"1 1 75px\",\n minWidth: \"75px\",\n maxWidth: \"75px\",\n display: \"flex\",\n justifyContent: \"center\",\n marginRight: spacing(3)\n },\n icon: {\n width: \"100%\",\n flex: \"1 1 100%\"\n },\n listItemPrimary: {\n fontSize: 20,\n fontWeight: \"bold\",\n lineHeight: \"26px\"\n },\n listItemSecondary: {\n fontSize: 18,\n fontWeight: 300,\n lineHeight: \"22px\"\n }\n };\n});\n\nconst buttonStyles = makeStyles(({ palette, spacing }) => {\n return {\n root: {\n width: \"100%\",\n padding: \"15px\",\n background: palette.primary.main,\n fontSize: 32,\n color: \"white\",\n fontWeight: 700,\n \"&:hover,&:focus\": {\n background: palette.secondary.main\n }\n },\n };\n});\n\nconst LandingTools = () => {\n const classes = toolStyles();\n const buttonClasses = buttonStyles();\n const tools = () => {\n return toolDescriptions.map((tool, i) => (\n \n \n \n \n \n ));\n };\n\n const ModalLauncher = () => (\n \n );\n\n return (\n \n \n ICER Analytics: two tools in one\n \n \n \n {tools()}\n \n \n \n \n );\n};\n\nconst ToolContent = ({ tool }) => {\n const classes = landingCardStyles();\n const renderPoint = ({ title, icon, description }, key) => (\n \n \n \n \n \n \n );\n return (\n \n \n \n {tool.name}\n \n {tool.description(classes.description)}\n \n \n \n {tool.points && tool.points.map((p, i) => renderPoint(p, i))}\n \n \n );\n};\n\nexport default LandingTools;\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport {\n Box,\n Container,\n Grid,\n Card,\n CardContent,\n Typography,\n Link,\n CardActionArea} from '@mui/material';\nimport PlayCircleFilledIcon from '@mui/icons-material/PlayCircleFilled';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport ModalWithLauncher from '../modals/ModalWithLauncher';\nimport VideoPlayer from '../details/VideoPlayer';\nimport DocThumb from '../../../images/doc_thumb.png';\nimport VideoPlaceholder from '../../../images/video_placeholder.png';\nimport googleAnalytics from '../../google-analytics';\n\nconst useStyles = makeStyles(({palette, breakpoints}) => {\n return {\n imgPlaceholder: {\n background: '#f9f9f9',\n flex: '1 1 100%',\n minHeight: '400px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n '&:hover': {\n '& img': {\n opacity: '.6',\n },\n '& svg': {\n opacity: '.8',\n }\n },\n '& img': {\n maxWidth: '100%',\n maxHeight: '100%',\n objectFit: 'cover',\n opacity: '.5',\n }\n },\n cardWrapper: {\n maxWidth: '100vw',\n position: 'relative',\n [breakpoints.up('md')]: {\n '&::after': {\n top: \"50%\",\n left: \"50%\",\n width: \"200vw\",\n content: '\"\"',\n display: \"block\",\n zIndex: 0,\n position: \"absolute\",\n transform: \"translate(-50%, -50%)\",\n background: palette.secondary.main,\n minHeight: \"200px\",\n borderTopLeftRadius: \"102% 95%\",\n borderTopRightRadius: \"100% 95%\",\n borderBottomLeftRadius: \"120% 95%\",\n borderBottomRightRadius: \"90% 95%\"\n }\n }\n }\n }\n});\n\nconst iconStyles = makeStyles(({palette, spacing}) => {\n return {\n root: {\n fontSize: '200px',\n color: palette.secondary.main,\n marginBottom: spacing(3),\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: '10',\n opacity: '.6',\n }\n }\n});\n\nconst landingCardStyles = makeStyles(({palette, spacing, breakpoints}) => {\n return {\n root: {\n background: '#FFFFFF 0% 0% no-repeat padding-box',\n boxShadow: '0px 3px 20px #00000029',\n border: '10px solid #FFFFFF80',\n borderRadius: \"20px\",\n display: 'flex',\n position: 'relative',\n zIndex: 10,\n [breakpoints.up('sm')]: {\n minHeight: '500px',\n },\n },\n content: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flex: '1 1 100%',\n },\n imgPlaceholder: {\n background: '#EAEAEA',\n minHeight: '250px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#999',\n },\n title: {\n color: palette.primary.main,\n textTransform: 'uppercase',\n font: 'normal normal bold 35px/70px Lato',\n lineHeight: 1,\n marginBottom: spacing(1),\n },\n description: {\n marginBottom: spacing(3),\n '& strong': {\n color: palette.secondary.main,\n fontWeight: 600,\n }\n },\n externalDescription: {\n fontWeight: 'bold',\n marginBottom: spacing(4),\n fontSize: 18,\n lineHeight: '22px',\n [breakpoints.up('sm')]: {\n maxWidth: '65%',\n marginLeft: 'auto',\n marginRight: 'auto',\n fontSize: 20,\n lineHeight: '26px',\n },\n },\n firstCardRoot: {\n marginBottom: spacing(4),\n [breakpoints.up('md')]: {\n marginBottom: 0,\n },\n },\n }\n});\n\nconst modalStyles = makeStyles((theme) => ({\n paper: {\n position: 'absolute',\n width: '50vw',\n backgroundColor: 'white',\n border: '2px solid #000',\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n },\n}));\n\nconst LandingLearnMore = () => {\n const classes = useStyles();\n const cardClasses = landingCardStyles();\n const iconClasses = iconStyles();\n const VideoCardContent = () => {\n return (\n googleAnalytics.trackVideoThumbnailClick(\"Landing Page Demo\")}>\n \n \n \n \n \n \n \n )\n }\n const ModalVideoPlayer = () => (\n \n )\n\n const VideoCard = () => (\n \n \n \n Watch a demo, and hear from payers and life science companies about how they're using ICER Analytics\n \n \n \n \n )\n\n const trackDocClick = () => {\n googleAnalytics.trackDownload({fileName: '/docs/ICER.Analytics.Overview.pdf', location: \"Landing page - Learn more\"})\n googleAnalytics.trackDocument('ICER.Analytics.Overview')\n }\n\n const DocCard = () => (\n \n \n \n Download the ICER Analytics Overview\n \n \n trackDocClick()}>\n \n \n \n \n \n \n \n \n \n \n \n \n )\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LandingLearnMore;\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { modalStyles } from './styles'\n\nconst ModalOpened = ({ title='', Content, mx=true }) => {\n const classes = modalStyles();\n const [modalOpen, setOpen] = React.useState(true);\n\n const handleModalClose = (event) => {\n event.preventDefault()\n setOpen(false);\n };\n\n return (\n \n \n {title} \n \n \n \n \n \n \n );\n};\n\nModalOpened.propTypes = {\n title: string,\n Content: func\n};\n\nexport default ModalOpened;\n","import React from \"react\";\nimport LandingIntro from \"./LandingIntro\";\nimport LandingTools from \"./LandingTools\";\nimport LandingLearnMore from \"./LandingLearnMore\";\nimport LandingAlerts from \"./LandingAlerts\";\nimport Box from \"@mui/material/Box\";\nimport Survey from \"./Survey\";\nimport ModalOpened from \"../modals/ModalOpened\";\n\nimport queryString from \"query-string\";\nimport { trackPageView } from \"../../hooks/usePageView\";\n\nclass Landing extends React.PureComponent {\n componentDidMount() {\n window.objectFitPolyfill();\n trackPageView(\"Landing page\");\n }\n\n render() {\n const parsedParams = queryString.parse(window.location.search);\n const showModal = !!parsedParams.request_trial;\n const renderModal = () => ;\n return (\n \n {showModal ? renderModal() : null}\n \n \n \n \n \n );\n }\n}\n\nexport default Landing;\n","import React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport AppPage from \".\";\nimport { APP_TITLE } from \"../../constants\";\nimport { usePageView } from \"../../hooks/usePageView\";\nimport RecentUpdates from \"../recent_updates/RecentUpdates\";\nimport AppPageContentWrapper from \"./AppPageContentWrapper\";\nimport useUserHasAccess from \"../../hooks/useUserHasAccess\";\nimport AccessFlag from \"../AccessFlag\";\nimport ProgressIndicator from \"../ProgressIndicator\";\n\nconst Updates = () => {\n const loadingUser = useSelector((state) => state.userProfile.loading);\n const userHasAccess = useUserHasAccess();\n\n if (loadingUser) {\n return (\n \n )\n }\n\n if (!userHasAccess) {\n return ;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default Updates;\n","import React, { useEffect } from \"react\";\nimport { bool, array } from \"prop-types\";\nimport { Box, Container, Grid, Paper, Typography } from \"@mui/material\";\nimport ProgressIndicator from \"../ProgressIndicator\";\n\nimport AppPage from \".\";\nimport VideoGrid from \"../VideoGrid\";\nimport LandingTitle from \"../landing/LandingTitle\";\n\nimport { connectToState } from \"../../redux/connect-api\";\nimport AppPageContentWrapper from \"./AppPageContentWrapper\";\nimport { APP_TITLE } from \"../../constants\";\nimport { usePageView } from \"../../hooks/usePageView\";\nimport useUserHasAccess from \"../../hooks/useUserHasAccess\";\nimport AccessFlag from \"../AccessFlag\"\n\nconst VideosPage = ({ mediaResources, loading }) => {\n const userHasAccess = useUserHasAccess()\n const videos = mediaResources\n .filter((r) => r.attributes.resource_type === \"resource\")\n .map((r) => r.attributes);\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n if (!userHasAccess) {\n return \n }\n\n if (!videos.length) {\n return (\n \n \n \n There are currently no videos to display.\n \n \n Check out our{\" \"}\n \n Youtube channel\n {\" \"}\n in the meantime.\n \n \n \n );\n }\n\n return (\n \n \n \n \n (\n \n \n Watch our collection of short demo videos to explore the possibilities of ICER\n Analytics:\n \n \n )}\n videos={videos}\n />\n \n \n \n \n );\n};\n\nVideosPage.defaultProps = {\n loading: true,\n mediaResources: []\n};\n\nVideosPage.propTypes = {\n loading: bool,\n mediaResources: array\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading || state.mediaResources.loading,\n mediaResources: state.mediaResources.data\n };\n};\n\nexport default connectToState(mapStateToProps)(VideosPage);\n","import React, { useEffect } from \"react\";\nimport { bool, array } from \"prop-types\";\nimport { Box, Grid, Paper, Typography } from \"@mui/material\";\nimport ProgressIndicator from \"../ProgressIndicator\";\nimport AppPage from \".\";\n\nimport { connectToState } from \"../../redux/connect-api\";\nimport CurrentVideo from \"../CurrentVideo\";\nimport VideoGrid from \"../VideoGrid\";\nimport LandingTitle from \"../landing/LandingTitle\";\nimport AppPageContentWrapper from \"./AppPageContentWrapper\";\nimport { APP_TITLE } from \"../../constants\";\nimport { usePageView } from \"../../hooks/usePageView\";\nimport useUserHasAccess from \"../../hooks/useUserHasAccess\";\nimport AccessFlag from \"../AccessFlag\"\n\nconst Webinars = ({ mediaResources, loading }) => {\n const userHasAccess = useUserHasAccess()\n const webinars = mediaResources\n .filter((r) => r.attributes.resource_type === \"webinar\")\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n if (!userHasAccess) {\n return \n }\n\n if (!mediaResources.length) {\n return (\n \n \n \n We'll be posting the first webinar soon.\n \n \n Check out our{\" \"}\n \n Youtube channel\n {\" \"}\n in the meantime.\n \n \n \n );\n }\n\n const currentWebinar = webinars[0].attributes;\n let archivedWebinars = [...webinars];\n archivedWebinars.shift();\n archivedWebinars = archivedWebinars.map((v) => v.attributes);\n\n // TODO: Remove Header component?\n return (\n \n \n \n \n {currentWebinar && (\n \n \n \n )}\n \n {archivedWebinars.length > 0 && (\n \n (\n \n Archive:\n \n )}\n videos={archivedWebinars}\n />\n \n )}\n \n \n \n );\n};\n\nWebinars.defaultProps = {\n loading: true,\n mediaResources: []\n};\n\nWebinars.propTypes = {\n loading: bool,\n mediaResources: array\n};\n\nconst mapStateToProps = (state) => {\n return {\n loading: state.userProfile.loading || state.mediaResources.loading,\n mediaResources: state.mediaResources.data\n };\n};\n\nexport default connectToState(mapStateToProps)(Webinars);\n","import React from 'react'\nimport {\n Button,\n Container,\n Grid,\n Paper,\n} from '@mui/material';\nimport { makeStyles } from '@mui/styles';\n\nconst styles = makeStyles(({spacing}) => ({\n accessWarningContainer: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: spacing(4),\n },\n accessWarningCard: {\n padding: 20,\n textAlign: 'center',\n },\n}))\n\nconst NoAccess = () => {\n const classes = styles()\n return (\n \n \n \n

Your organization currently does not have access to this tool

\n \n
\n
\n
\n )\n}\n\nexport default NoAccess\n","import React from 'react';\nimport {\n oneOfType, oneOf, string, number, bool\n} from 'prop-types';\nimport { makeStyles } from '@mui/styles';\n\nimport { connectToState } from '../redux/connect-api';\n\nimport {\n addToCompareCountSelector\n} from '../selectors';\nimport { Box } from '@mui/material';\n\nconst VIEWBOX_SIZE = '22px';\n\nconst useStyles = makeStyles(({palette}) => ({\n container: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\"\n },\n indicator: {\n borderRadius: \"50%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n background: \"white\",\n border: `1px solid ${palette.primary.main}`,\n color: \"black\",\n fontWeight: 600,\n fontSize: \"14px\",\n height: VIEWBOX_SIZE,\n width: VIEWBOX_SIZE,\n }\n}));\n\nconst CountIndicator = ({ count, active }) => {\n const classes = useStyles();\n return {count}\n\n};\n\nCountIndicator.propTypes = {\n count: number.isRequired,\n active: bool.isRequired\n};\n\nconst AddToCompareCountIndicator = ({ label, active, addToCompareCount }) => {\n const classes = useStyles();\n const indicatorGraphic = addToCompareCount === null ? null : (\n \n );\n\n return (\n \n {label}\n {indicatorGraphic}\n \n );\n};\n\nAddToCompareCountIndicator.defaultProps = {\n addToCompareCount: null\n};\n\nAddToCompareCountIndicator.propTypes = {\n label: string.isRequired,\n active: bool.isRequired,\n addToCompareCount: oneOfType([oneOf([null]), number])\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n addToCompareCount: addToCompareCountSelector(state, ownProps)\n});\n\nexport default connectToState(mapStateToProps)(AddToCompareCountIndicator);\n","import React from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport { Breadcrumbs, Typography } from \"@mui/material\";\nimport { useBreadcrumbStyles } from \"../config/styles\";\nimport { tabConfig } from \"../config\";\nimport googleAnalytics from \"../google-analytics\";\n\nconst AppBreadcrumbs = ({ location, detailName = \"\", activeTabKey }) => {\n const breadcrumbClasses = useBreadcrumbStyles();\n const trackClick = (whereTo) => {\n googleAnalytics.trackBreadcrumbClick({\n whereTo,\n currentPage: location.pathname\n });\n };\n return (\n \n trackClick(\"/drugs\")}\n activeStyle={{ fontWeight: \"bold\" }}\n className={breadcrumbClasses.breadcrumb}\n to={{\n pathname: `/drugs`,\n search: location.search\n }}\n >\n \n Evidence Compendium\n \n \n trackClick(`/${activeTabKey}`)}\n activeStyle={{ fontWeight: detailName ? \"normal\" : \"bold\" }}\n className={breadcrumbClasses.breadcrumb}\n to={{\n pathname: `/${activeTabKey}`,\n search: location.search\n }}\n >\n \n {tabConfig[activeTabKey]}\n \n \n {detailName && (\n \n {detailName}\n \n )}\n \n );\n};\n\nexport default AppBreadcrumbs;\n","import React from 'react';\nimport {\n oneOf, shape, func, string\n} from 'prop-types';\nimport { connectToState } from '../redux/connect-api';\nimport withStyles from '@mui/styles/withStyles';\nimport { AppBar, Tab, Tabs } from '@mui/material';\n\nimport Color from 'color';\nimport AddToCompareCountIndicator from './AddToCompareCountIndicator';\nimport AppBreadcrumbs from './AppBreadcrumbs'\nimport Search from './Search'\nimport { tabKeys, tabConfig } from '../config';\nimport analytics from '../google-analytics';\nimport {\n activeDetailName\n} from '../selectors';\n\nfunction a11yProps(tabKey) {\n return {\n id: `tab-${tabKey}`,\n 'aria-controls': `tabpanel-${tabKey}`\n };\n}\n\nconst styles = ({ palette, spacing, breakpoints }) => {\n const defaultBgColor = palette.secondary.main;\n const defaultSelectedBgColor = 'white';\n const defaultMinWidth = {\n md: 100\n };\n const getTextColor = (color) => {\n if (Color(color).isLight()) return palette.text.primary;\n return palette.common.white;\n };\n return {\n appBar: {\n flexDirection: 'row',\n background: palette.secondary.main,\n marginBottom: 0,\n boxShadow: 'none',\n paddingTop: spacing(1),\n paddingLeft: spacing(4),\n paddingRight: spacing(4),\n alignItems: 'flex-end',\n },\n searchInput: {\n marginLeft: 'auto',\n marginTop: spacing(1),\n marginBottom: spacing(1),\n },\n indicator: {\n display: 'none'\n },\n tabsRoot: {\n marginBottom: 0,\n minHeight: '24px',\n alignItems: 'flex-end',\n },\n tabRoot: ({ bgColor = defaultBgColor, minWidth = defaultMinWidth }) => ({\n opacity: 1,\n overflow: 'initial',\n padding: '0px',\n minHeight: '24px',\n paddingLeft: spacing(2),\n paddingRight: spacing(2),\n paddingBottom: spacing(1),\n paddingTop: spacing(1),\n borderTopLeftRadius: spacing(1),\n borderTopRightRadius: spacing(1),\n color: 'white',\n border: '1px solid rgba(255,255,255,.4)',\n fontSize: '16px',\n // backgroundColor: \"rgba(0,0,0,.05)\",\n borderBottom: 'none',\n transition: '0.2s',\n marginRight: 3,\n zIndex: 2,\n marginTop: spacing(0.5),\n textTransform: 'initial',\n [breakpoints.up('md')]: {\n minWidth: minWidth.md\n },\n '&:before': {\n transition: '0.2s'\n },\n '&:not(:first-of-type)': { // separator bar\n '&:before': {\n content: '\" \"',\n position: 'absolute',\n left: 0,\n display: 'block',\n height: 20,\n width: 1,\n zIndex: 1,\n marginTop: spacing(0.5),\n backgroundColor: palette.primary.light\n }\n },\n '&.Mui-selected:before': {\n opacity: 0\n },\n '&:focus': {\n backgroundColor: 'rgba(255,255,255,.8)',\n },\n '&:hover,&:focus': {\n '&:not(.Mui-selected)': {\n backgroundColor: 'rgba(255,255,255,.7)',\n color: 'black',\n },\n '&::before': {\n opacity: 0\n },\n '&.MuiTab-root:before': {\n opacity: 0\n }\n },\n '&.Mui-selected': {\n color: 'red',\n backgroundColor: defaultSelectedBgColor,\n color: getTextColor(defaultSelectedBgColor),\n fontWeight: 800,\n '&.MuiTab-root': {\n zIndex: 1\n },\n '&.MuiTab-root:before': {\n opacity: 0\n }\n }\n }),\n };\n};\n\n\nconst TabLabel = ({ tabKey, activeTabKey }) => {\n if (tabKey === 'compare-your-own-pricing') {\n return (\n \n );\n }\n return tabConfig[tabKey];\n};\n\nclass TabBar extends React.PureComponent {\n render() {\n const {\n classes={},\n history,\n match: { params: { activeTabKey = tabKeys[0], detailId = null } },\n location: { search = '' },\n detailName,\n } = this.props;\n\n const handleChange = (event, tabKey) => {\n analytics.trackTabNavigation(tabKey);\n history.push({ pathname: `/${tabKey}`, search });\n };\n\n return (\n \n
\n \n \n {tabKeys.map((tabKey, i) => (\n \n )}\n {...a11yProps(tabKey)}\n />\n ))}\n \n
\n
\n \n
\n \n );\n }\n}\n\nTabBar.propTypes = {\n location: shape({\n pathname: string,\n search: string\n }),\n match: shape({\n params: shape({\n activeTabKey: oneOf(tabKeys),\n detailId: string,\n })\n }),\n history: shape({\n push: func\n }),\n classes: shape({}).isRequired,\n};\n\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n detailName: activeDetailName(state, ownProps),\n }\n};\n\nexport default withStyles(styles)(connectToState(mapStateToProps)(TabBar));\n","import React from 'react';\nimport { shape, func } from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport FilterListIcon from '@mui/icons-material/FilterList';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Drawer from '@mui/material/Drawer';\nimport Typography from '@mui/material/Typography';\n\nimport FormLabel from '@mui/material/FormLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { connectToState } from '../../redux/connect-api';\nimport { fieldFilterConfig } from '../../config';\nimport analytics from '../../google-analytics';\n\nimport { red } from '@mui/material/colors';\n\n// TODO: eliminate need for the following, by using instance of Map for fieldFilterConfig?\nconst keysMappedToGroupIndex = fieldFilterConfig.reduce((acc, config, groupIndex) => {\n config.slice(1).forEach(({ key }) => { acc[key] = groupIndex; });\n return acc;\n}, {});\n\n/* keysMappedToGroupIndex, e.g.:\n {\n \"user_proposed_price\": 0,\n \"net_price\": 0,\n \"wac\": 0,\n \"manufacturer_price\": 0,\n \"health_system\": 1,\n \"societal\": 1,\n \"evlyg\": 2,\n \"qaly\": 2,\n \"50k\": 3,\n \"100k\": 3,\n \"150k\": 3,\n \"200k\": 3\n }\n */\n\nconst styles = ({ spacing, palette }) => ({\n root: {\n '& form': {\n '& .MuiFormLabel-root': {\n color: '#666666',\n fontWeight: 'bold'\n },\n '& .MuiFormControl-root': {\n marginTop: '16px',\n marginBottom: '4px',\n display: 'block',\n minWidth: 120,\n maxWidth: 300,\n '& .MuiFormControlLabel-root': {\n borderRadius: '4px',\n '&:hover:not(.Mui-disabled)': {\n // backgroundColor: '#0071ce33',\n color: '#0071ce'\n },\n // color: '#444444', // #444444 is default\n margin: '2px 0px 2px 0', // margin enables there to be a non-interactive region between clickable labels\n padding: '2px 0px 2px 16px',\n '& span': {\n padding: 0\n }\n }\n }\n },\n '& .backdrop': {\n backgroundColor: 'rgba(0, 0, 0, 0.2) !important'\n }\n },\n iconButton: {\n marginRight: spacing(.5),\n // border: '1px blue dashed'\n },\n checkbox: {\n color: palette.secondary.main,\n },\n checkboxError: {\n color: palette.error.main,\n },\n});\n\nclass GridFilter extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false,\n lastCheckedError: null,\n };\n }\n\n handleModalOpen = () => {\n this.setState((prevState) => ({ ...prevState, modalOpen: true }));\n }\n\n handleModalClose = () => {\n this.setState((prevState) => ({ ...prevState, modalOpen: false }));\n }\n\n applyFilter = () => {\n this.handleModalClose();\n }\n\n setGridFilterKey = (fieldType) => {\n const { enabledGridFields, actions: { setGridFilter } } = this.props;\n const isActive = !enabledGridFields[fieldType];\n setGridFilter({ [fieldType]: isActive });\n analytics.trackFilter(fieldType, isActive);\n }\n\n handleFieldSelectChange = (event) => {\n const { value: fieldType } = event.target;\n const isChecked = this.props.enabledGridFields[fieldType];\n if (this.isLastChecked(fieldType, isChecked)) {\n return this.showLastCheckedError(fieldType);\n }\n this.setState({ lastCheckedError: null })\n this.setGridFilterKey(fieldType);\n }\n\n showLastCheckedError = (fieldType) => {\n this.setState({ lastCheckedError: fieldType })\n if (this.lastCheckedErrorTimeout) {\n clearTimeout(this.lastCheckedErrorTimeout);\n }\n this.lastCheckedErrorTimeout = setTimeout(() => {\n this.setState({ lastCheckedError: null })\n }, 1500);\n }\n\n isLastChecked = (filterKey, isChecked) => {\n const { enabledGridFields } = this.props;\n const groupIndex = keysMappedToGroupIndex[filterKey];\n const checkedCount = fieldFilterConfig[groupIndex].slice(1)\n .reduce((acc, { key }) => acc + (enabledGridFields[key] === true ? 1 : 0), 0);\n if (checkedCount === 1 && isChecked) {\n return true;\n }\n return false;\n }\n\n renderCheckbox = ({ key, label, disabled }) => {\n const { enabledGridFields, classes } = this.props;\n const isChecked = enabledGridFields[key] === true;\n const showLastCheckedError = key === this.state.lastCheckedError;\n return (\n \n \n )}\n />\n \n );\n }\n\n renderFilterGroup = (group) => {\n const [heading, ...items] = group;\n return (\n \n \n {heading}\n \n \n {items.map(this.renderCheckbox)}\n \n \n );\n }\n\n componentWillUnmount() {\n if (this.lastCheckedErrorTimeout) {\n clearTimeout(this.lastCheckedErrorTimeout);\n }\n }\n\n render() {\n const { classes } = this.props;\n const { modalOpen } = this.state;\n return (\n <>\n \n }\n className={classes.iconButton}\n >\n Customize Table\n \n \n \n \n \n Close\n \n \n \n Customize Your Table\n \n At least one selection is required for each filter\n \n \n \n
\n {fieldFilterConfig.map(this.renderFilterGroup)}\n
\n
\n \n \n );\n }\n}\n\nGridFilter.propTypes = {\n classes: shape({}).isRequired,\n enabledGridFields: shape({}).isRequired,\n actions: shape({\n setGridFilter: func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = (state) => ({\n enabledGridFields: state.enabledGridFields\n});\n\nexport default (withRouter(withStyles(styles)(connectToState(mapStateToProps)(GridFilter))));\n","export const userProfileLoadingSelector = (state) => {\n return state.userProfile?.loading\n};\n\nexport const userAccessStatusSelector = (state) => (\n state.userProfile.data.ec_access\n)\n\nexport const userIsTrialSubscriberSelector = (state) => (\n state.userProfile.data.organization?.ec_subscription === \"trial\"\n)\n","import React, { useCallback, useMemo } from 'react';\nimport {\n object, shape, bool\n} from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport Button from '@mui/material/Button';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport { tabKeyType } from '../../constants/proptypes';\nimport { connectToState } from '../../redux/connect-api';\nimport {\n activeTabKeySelector, fieldsForExportSelector,\n analysisCollectionSelector, userInputSelector, csvArraySelector\n} from '../../selectors';\nimport analytics from '../../google-analytics';\n\nimport { saveAs } from 'file-saver';\nimport * as XLSX from \"xlsx\";\nimport { tabConfig } from '../../config';\nimport { userIsTrialSubscriberSelector } from '../../selectors/userProfile';\n\n// https://medium.com/an-idea/export-excel-files-client-side-5b3cc5153cf7\nexport const exportToSpreadsheet = (sheets, fileName) => {\n const fileType =\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n\n const fileExtension = \".xlsx\";\n //Create a new Work Sheet using the data stored in an Array of Arrays.\n const worksheets = {}\n Object.keys(sheets).forEach((name) => {\n worksheets[name] = XLSX.utils.aoa_to_sheet(sheets[name]);\n })\n // Generate a Work Book containing the above sheet.\n const workBook = {\n Sheets: { ...worksheets, cols: [] },\n SheetNames: Object.keys(sheets),\n };\n // Exporting the file with the desired name and extension.\n const excelBuffer = XLSX.write(workBook, { bookType: \"xlsx\", type: \"array\" });\n const fileData = new Blob([excelBuffer], { type: fileType });\n saveAs(fileData, fileName + fileExtension);\n};\n\nconst CsvDownload = ({ disabled, subscriptionIsTrial=false, rowIds, analysisCollection, userInputs, fieldsForExport}) => {\n const handleClick = useCallback(() => {\n if (subscriptionIsTrial) return\n const sheets = {}\n Object.keys(rowIds).filter((k) => !k.match(/report/i)).forEach(key => {\n sheets[key] = [\n fieldsForExport[key],\n ...csvArraySelector(rowIds[key], fieldsForExport[key], analysisCollection, userInputs)\n ]\n })\n exportToSpreadsheet(sheets, 'icer-price-data')\n analytics.trackCSV();\n }, [rowIds, fieldsForExport, analysisCollection, userInputs, subscriptionIsTrial])\n\n const tabs = useMemo(() => {\n const tabs = Object.values(tabConfig)\n tabs.pop()\n return tabs\n }, [])\n\n const tooltipTitle = (\n
\n {!subscriptionIsTrial && (\n `Download an XLSX representation of all 3 tables\n (${tabs.join(', ')}), with the currently-applied filters.`\n )}\n {subscriptionIsTrial && (\n \"A subscription is needed to download data.\"\n )}\n
\n );\n\n return (\n \n \n }\n aria-haspopup=\"false\"\n >\n Download Excel Workbook\n \n \n \n );\n}\n\nCsvDownload.defaultProps = { };\n\nCsvDownload.propTypes = {\n // match: matchType.isRequired,\n activeTabKey: tabKeyType.isRequired, // eslint-disable-line react/no-unused-prop-types\n disabled: bool.isRequired,\n rowIds: shape({}).isRequired,\n fieldsForExport: object.isRequired,\n analysisCollection: shape({}).isRequired,\n userInputs: shape({}).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n activeTabKey: activeTabKeySelector(state, ownProps),\n fieldsForExport: fieldsForExportSelector(state, ownProps),\n userInputs: userInputSelector(state, ownProps),\n analysisCollection: analysisCollectionSelector(state, ownProps),\n subscriptionIsTrial: userIsTrialSubscriberSelector(state)\n});\n\nexport default withRouter((connectToState(mapStateToProps)(CsvDownload)));\n","import React from 'react';\nimport { array } from 'prop-types';\nimport { Box } from '@mui/material/';\n\nimport { makeStyles } from '@mui/styles';\n\nconst styles = makeStyles(() => ({\n legend: {\n display: 'flex',\n '& > div': {\n display: 'inline-block',\n whiteSpace: 'nowrap',\n top: '0px',\n left: '13px',\n margin: '4px 34px 0px 7px'\n }\n },\n rectangle: {\n display: 'inline-block',\n width: '10px',\n height: '10px',\n marginLeft: '8px',\n marginRight: '4px'\n }\n}))\n\nconst ComparisonChartLegend = ({items=null}) => {\n const classes = styles()\n\n const _items = items || {\n '$150K': '#489BE0',\n '$100K': '#46BBA0',\n 'Your Price': '#484349',\n }\n\n const rectangle = (color) => (\n
\n );\n\n const itemElement = (name, i) => (\n \n {rectangle(_items[name])} {name}\n \n )\n\n return (\n \n { Object.keys(_items).map((name, i) => itemElement(name, i) ) }\n \n )\n}\n\nComparisonChartLegend.propTypes = {\n items: array\n}\n\nexport default ComparisonChartLegend;\n","import { toBlob } from 'dom-to-image'\n\nexport const exportElementAsPng = (node, options={}) => (\n toBlob(node, { bgcolor: 'white', ...options })\n)\n","import React, { useCallback, useState, createRef } from 'react';\nimport {\n arrayOf, object, oneOf, shape, string, number\n} from 'prop-types';\nimport { ResponsiveBullet } from '@nivo/bullet';\n\nimport { Alert, AlertTitle, Box, Button, Typography, CircularProgress } from '@mui/material';\n\nimport ComparisonChartLegend from './ComparisonChartLegend';\n\nimport { connectToState } from '../../redux/connect-api';\nimport { chartDataSelector } from '../../selectors';\nimport { baseFieldConfig, icerBenchmarkPriceKeys } from '../../config';\nimport DownloadIcon from '@mui/icons-material/GetApp';\nimport { exportElementAsPng } from '../../utils/export';\nimport { saveAs } from 'file-saver'\nimport analytics from '../../google-analytics';\n\n// const benchmarkValues = {\n// health_system_vbpb_50k_per_qaly: 50000,\n// health_system_vbpb_100k_per_qaly: 100000,\n// health_system_vbpb_150k_per_qaly: 150000,\n// health_system_vbpb_200k_per_qaly: 200000,\n// health_system_vbpb_50k_per_evlyg: 50000,\n// health_system_vbpb_100k_per_evlyg: 100000,\n// health_system_vbpb_150k_per_evlyg: 150000,\n// health_system_vbpb_200k_per_evlyg: 200000,\n// societal_vbpb_50k_per_qaly: 50000,\n// societal_vbpb_100k_per_qaly: 100000,\n// societal_vbpb_150k_per_qaly: 150000,\n// societal_vbpb_200k_per_qaly: 200000,\n// societal_vbpb_50k_per_evlyg: 50000,\n// societal_vbpb_100k_per_evlyg: 100000,\n// societal_vbpb_150k_per_evlyg: 150000,\n// societal_vbpb_200k_per_evlyg: 200000\n// };\n\n// make sure parent container have a defined height when using\n// responsive component, otherwise height will be 0 and\n// no chart will be rendered.\n// website examples showcase many properties,\n// you'll often use just a few of them.\n\nconst DownloadButton = ({handleDownload, text=\"Download chart\"}) => {\n const [ downloading, setDownloadState ] = useState(false)\n const handleClick = () => {\n setDownloadState(true)\n handleDownload().finally(() => setDownloadState(false))\n }\n return (\n handleClick()}\n style={{marginLeft: 'auto'}}\n startIcon={downloading ? : }\n >\n {text}\n \n )\n}\n\nconst ComparisonChartContent = ({ comparisonKeys, data, height, selectedChartOptions }) => {\n let maxValue = 0;\n const chartValues = []\n data.forEach((d) => {\n if (d.user_proposed_price >= maxValue) {\n maxValue = d.user_proposed_price;\n }\n comparisonKeys.forEach((k) => {\n if (d[k] >= maxValue) {\n maxValue = d[k] || 0;\n }\n });\n });\n\n const bulletData = data\n .map((d) => {\n const {\n id,\n trade_name,\n differentiator,\n user_proposed_price\n } = d;\n\n const measures = [];\n const title = (\n \n \n {trade_name}\n \n \n {differentiator}\n \n \n );\n if (user_proposed_price) {\n measures.push(user_proposed_price);\n }\n const values = comparisonKeys.map((k) => d[k]).filter((v) => !!v)\n chartValues.push(values)\n return ({\n id,\n title,\n ranges: [ ...values , 0, maxValue ], // number[] -- stacked, background bars\n measures, // number[] -- center bars\n markers: values, // number[] -- vertical rects overlayed on bars\n });\n });\n\n const labelDictionary = {\n qaly: 'per QALY',\n evlyg: 'per evLYG',\n health_system: 'Health System',\n societal: 'Societal',\n }\n\n // Handle case where no data is available to render\n // (all values are null)\n if (chartValues.flat().length === 0) {\n const perspectiveName = (key) => (\n `${key.match(/health_system/) ? labelDictionary.health_system : labelDictionary.societal} Perspective`\n )\n return (\n \n Insufficient data available to render this chart \n None of the selected analyses have data for:\n \n {comparisonKeys.map((k) => (
  • {perspectiveName(k)} {baseFieldConfig[k].label}
  • ))}\n
    \n
    \n )\n }\n\n\n const title = `Price Comparison`\n const subTitle = `(Perspective: ${labelDictionary[selectedChartOptions.perspective]}, Measure: ${labelDictionary[selectedChartOptions.measure]})`\n const labelStyle = {\n position: 'absolute',\n left: 3,\n top: '50%',\n fontSize: 14,\n transform: 'rotate(-90deg)',\n }\n\n const chartRef = createRef()\n\n const downloadChart = useCallback(() => {\n return new Promise((resolve, reject) => {\n const chartElement = chartRef.current\n if (!chartElement) {\n console.error('Chart element can not be found')\n reject()\n }\n exportElementAsPng(chartElement, {style: {paddingTop: '10px'}})\n .then((blob) => {\n saveAs(blob, 'comparison-chart.png')\n analytics.trackChart('download', `width: ${chartElement.clientWidth}px, height: ${chartElement.clientHeight}px`)\n resolve()\n })\n .catch((error) => {\n console.error(`Chart image export error: ${error}`)\n reject()\n })\n })\n })\n\n return (\n \n \n \n {title}\n {subTitle}\n \n \n Price ($)\n \n }>\n If title is undefined, id will be used for title.\n */\n\n // width={height} // number required\n height={height} // number required\n layout=\"vertical\" // string optional default:'horizontal'\n reverse={false} // boolean optional default:false\n margin={{\n top: 50, right: 90, bottom: 25, left: 90\n }} // object optional default: { top: 50, right: 90, bottom: 50, left: 90 }\n spacing={50} // number optional default:30\n measureSize={0.4} // number optional default:0.4\n markerSize={1.02} // number optional default:0.6\n\n // -- Style:\n // rangeComponent={ComponentClass} Function optional\n rangeColors={['#F4F4F4', '#CBEBE4', '#F4F4F4']} // string | Function | string[] optional default:'seq:cool'\n // measureComponent={ComponentClass} Function optional\n measureColors=\"#484349\" // string | Function | string[] optional default:'seq:red_purple'\n // markerComponent={ComponentClass} Function optional\n markerColors={['#46BBA0', '#489BE0']} // string | Function | string[] optional default:'seq:red_purple'\n\n // -- Axes:\n axisPosition=\"before\" // string optional default:'after'\n\n // -- Title:\n titlePosition=\"before\" // string optional default:'before'\n titleAlign=\"start\" // string optional default:'middle'\n titleOffsetX={-25} // number optional\n titleOffsetY={-15} // number optional\n // titleRotation={0} // number optional default:0\n // -- Interactivity:\n // onRangeClick={ƒ} // (range, event) => void optional -- onClick handler for ranges.\n // onMeasureClick={ƒ} // (measure, event) => void optional -- onClick handler for measures.\n // onMarkerClick={ƒ} // (marker, event) => void optional -- onClick handler for markers.\n /* -- onMarkerClick:\n onClick handler for markers, will receive marker data as first argument\n & event as second one.\n The data has the following shape:\n {\n id: string,\n value: number,\n index: number,\n color: string,\n }\n */\n\n // -- Motion\n animate // boolean optional default:true\n motionStiffness={90} // number optional default:90\n motionDamping={15} // number optional default:15\n />\n \n \n \n \n \n downloadChart()}/>\n \n );\n};\n\nComparisonChartContent.defaultProp = {\n};\n\nComparisonChartContent.propTypes = {\n height: number.isRequired,\n comparisonKeys: arrayOf(oneOf(icerBenchmarkPriceKeys)).isRequired,\n data: arrayOf(shape({\n id: string.isRequired,\n user_proposed_price: number,\n trade_name: string.isRequired,\n specific_condition: string.isRequired,\n differentiator: string.isRequired\n })).isRequired,\n selectedChartOptions: object,\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n data: chartDataSelector(state, ownProps)\n});\n\nexport default (connectToState(mapStateToProps)(ComparisonChartContent));\n","import React, { useState } from 'react';\nimport { arrayOf, func, string, bool } from 'prop-types';\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n InputLabel,\n MenuItem,\n Paper,\n Select,\n} from '@mui/material/';\n\nimport { makeStyles } from '@mui/styles';\nimport ComparisonChartContent from './ComparisonChartContent';\nimport analytics from '../../google-analytics';\n\nconst useStyles = makeStyles(({spacing}) => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n dialogPaper: { },\n dialogActions: {\n padding: spacing(3),\n paddingBottom: 0,\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n dialogTitle: {\n margin: 0,\n marginBottom: spacing(2),\n padding: 0\n },\n dialogContent: {\n padding: spacing(2),\n paddingTop: 0,\n paddingBottom: spacing(4),\n margin: 0\n },\n dialogContentPaper: {\n padding: 0,\n },\n formControl: {\n marginRight: spacing(2),\n minWidth: 120\n },\n selectEmpty: {\n margin: 0,\n padding: 0\n },\n}));\n\n\nconst ComparisonChartModal = ({ rowIds, modalOpen, onClose }) => {\n const classes = useStyles();\n const [selectedChartOptions, setValues] = useState({\n perspective: 'health_system', // health_system, societal -- Same order as GridFilter\n measure: 'qaly' // evlyg, qaly -- Same order as GridFilter\n });\n\n const handleOptionChange = (event) => {\n const { name, value } = event.target;\n setValues((oldValues) => ({\n ...oldValues,\n [name]: value\n }));\n analytics.trackChart('change-option', { [name]: value, rowIds });\n };\n\n const { perspective, measure } = selectedChartOptions;\n const comparisonKeys = [\n `${perspective}_vbpb_100k_per_${measure}`,\n `${perspective}_vbpb_150k_per_${measure}`\n ];\n\n const chartHeight = 500;\n\n const Form = () => (\n \n \n \n Perspective\n \n \n Health System\n Societal\n \n \n \n \n Measure\n \n \n per evLYG\n per QALY\n \n \n \n )\n\n return (\n \n \n \n \n Compare My Price to ICER Prices\n \n
    \n \n \n Close\n \n \n \n \n \n \n \n \n );\n};\n\nComparisonChartModal.defaultProps = {\n};\n\nComparisonChartModal.propTypes = {\n // match: matchType.isRequired,\n rowIds: arrayOf(string).isRequired,\n modalOpen: bool.isRequired,\n onClose: func.isRequired\n};\n\nexport default ComparisonChartModal;\n","import React from 'react';\nimport {\n arrayOf, string, bool\n} from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport Button from '@mui/material/Button';\nimport BarChartIcon from '@mui/icons-material/BarChart';\nimport Tooltip from '@mui/material/Tooltip';\nimport ComparisonChartModal from '../chart/ComparisonChartModal';\n\nimport { tabKeyType } from '../../constants/proptypes';\nimport { connectToState } from '../../redux/connect-api';\nimport { activeTabKeySelector } from '../../selectors';\nimport analytics from '../../google-analytics';\n\nconst ChartButtonTooltip = ({ rowIds }) => {\n if (rowIds.length === 0) {\n return (\n
    \n To see a chart, pick one or more drugs from a different tab.\n
    \n );\n }\n return (\n
    \n Compare these {rowIds.length} rows in a chart\n
    \n );\n};\n\nChartButtonTooltip.propTypes = {\n rowIds: arrayOf(string).isRequired\n};\n\nclass ComparisonChart extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n }\n\n handleModalOpen = () => {\n const { rowIds, ...rest } = this.props;\n if (rowIds.length > 0) {\n this.setState((prevState) => ({ ...prevState, modalOpen: true }));\n analytics.trackChart('open');\n }\n }\n\n handleModalClose = () => {\n this.setState((prevState) => ({ ...prevState, modalOpen: false }));\n analytics.trackChart('close');\n }\n\n render() {\n const {\n activeTabKey, disabled, rowIds\n } = this.props;\n\n if (activeTabKey !== 'compare-your-own-pricing') {\n return null;\n }\n\n const { modalOpen } = this.state;\n\n return (\n <>\n }\n aria-label=\"open comparison chart\"\n placement=\"right\"\n >\n \n }\n aria-haspopup=\"true\"\n >\n Visualized Comparison\n \n \n \n {modalOpen && ()}\n \n );\n }\n}\n\nComparisonChart.defaultProps = {\n};\n\nComparisonChart.propTypes = {\n // match: matchType.isRequired,\n activeTabKey: tabKeyType.isRequired,\n disabled: bool.isRequired,\n rowIds: arrayOf(string).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n activeTabKey: activeTabKeySelector(state, ownProps)\n});\n\nexport default withRouter((connectToState(mapStateToProps)(ComparisonChart)));\n","import React from \"react\";\nimport { oneOfType, oneOf, arrayOf, shape, node, func, number, string } from \"prop-types\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport CustomTooltip from \"../CustomTooltip\";\n\nimport { connectToState } from \"../../redux/connect-api\";\nimport analytics from \"../../google-analytics\";\n\nimport { SORTABLE_COLUMNS } from \"../../config\";\n\nconst TOOLTIP_FIELDS = [\"date_of_review\"];\n\nconst styles = () => ({\n tableCell: {\n \"&.remove_from_compare\": {\n // color: '#c00'\n }\n },\n tableSortLabel: {\n '&:focus': {\n '& .MuiTableSortLabel-icon': {\n opacity: 1\n }\n }\n }\n});\n\nclass AnalysesTableHeaderCell extends React.PureComponent {\n handleSortClick = () => {\n const {\n fieldKey,\n actions: { setSort }\n } = this.props;\n const { sort: { sortField, sortDirection = \"asc\" } = {} } = this.props;\n // unless existing sortField is the same as fieldKey, sort by ascending:\n const nextSortDirection = fieldKey === sortField && sortDirection === \"asc\" ? \"desc\" : \"asc\";\n setSort(fieldKey, nextSortDirection, SORTABLE_COLUMNS[fieldKey] || \"string\");\n analytics.trackSort(fieldKey, nextSortDirection);\n };\n\n renderLabel = () => {\n const { fieldKey, children, tooltip } = this.props;\n const isSortable = fieldKey && Object.keys(SORTABLE_COLUMNS).includes(fieldKey);\n let content = children;\n if (TOOLTIP_FIELDS.includes(fieldKey)) {\n content = ;\n }\n if (isSortable) {\n const { sort: { sortField, sortDirection = \"asc\" } = {} } = this.props;\n const active = fieldKey === sortField;\n const thisTabSortDirection = active ? sortDirection : \"asc\";\n // ({thisTabSortDirection})\n return (\n \n {content}\n \n );\n }\n return content;\n };\n\n render() {\n const { rowSpan, colSpan, classes, className, align } = this.props;\n\n return (\n \n {this.renderLabel()}\n \n );\n }\n}\n\nAnalysesTableHeaderCell.defaultProps = {\n colSpan: 1,\n rowSpan: 1,\n fieldKey: null,\n children: null\n};\n\nAnalysesTableHeaderCell.propTypes = {\n colSpan: number,\n rowSpan: number,\n fieldKey: string,\n className: string.isRequired,\n align: string.isRequired,\n sort: shape({\n sortField: oneOf(Object.keys(SORTABLE_COLUMNS)),\n sortDirection: oneOf([\"asc\", \"desc\"])\n }),\n classes: shape({}).isRequired,\n actions: shape({\n setSort: func.isRequired\n }).isRequired,\n children: oneOfType([arrayOf(node), node])\n};\n\nconst mapStateToProps = (state) => ({\n sort: state.sort\n});\n\nexport default withStyles(styles)(connectToState(mapStateToProps)(AnalysesTableHeaderCell));\n","import React from \"react\";\nimport { shape } from \"prop-types\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport Zoom from \"@mui/material/Zoom\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { withRouter } from \"react-router-dom\";\n\nimport { tabKeyType, columnConfigType } from \"../../constants/proptypes\";\nimport AnalysesTableHeaderCell from \"./AnalysesTableHeaderCell\";\nimport { connectToState } from \"../../redux/connect-api\";\nimport { columnConfigSelector } from \"../../selectors\";\nimport { tooltipCopy } from \"../../config\";\n\nconst styles = ({ spacing, palette }) => ({\n tableHeading: {\n backgroundColor: palette.common.white, // otherwise, scrolled-up rows are visible\n fontSize: \"12.5px\",\n lineHeight: \"15px\",\n fontWeight: \"bold\",\n padding: spacing(0.5),\n verticalAlign: \"bottom\",\n \"&.trade_name\": {\n whiteSpace: \"nowrap\"\n },\n \"&.icer_vbpb_price_label\": {\n whiteSpace: \"nowrap\"\n },\n \"&:first-of-type\": {\n paddingLeft: spacing(4)\n },\n \"&:last-of-type\": {\n paddingRight: spacing(4)\n }\n }\n});\n\nclass AnalysesTableHeaderRow extends React.PureComponent {\n render() {\n const { classes, columnConfig } = this.props;\n const { row1Props, row2Props } = columnConfig;\n const TOOLTIP_FIELDS = {\n date_of_review: tooltipCopy.dateOfReview\n };\n const getTooltip = (fieldKey) => {\n const tooltipsForField = TOOLTIP_FIELDS[fieldKey];\n return tooltipsForField ? <>{tooltipsForField} : null;\n };\n return (\n \n \n {row1Props.map((cellProps) => (\n \n
    {cellProps.label}
    \n \n ))}\n
    \n \n {row2Props.map((cellProps) => (\n \n
    {cellProps.label}
    \n \n ))}\n
    \n
    \n );\n }\n}\n\nAnalysesTableHeaderRow.propTypes = {\n classes: shape({}).isRequired,\n // activeTabKey from react-router\n activeTabKey: tabKeyType.isRequired, // eslint-disable-line react/no-unused-prop-types\n columnConfig: columnConfigType.isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n columnConfig: columnConfigSelector(state, ownProps)\n});\n\nexport default withStyles(styles)(\n withRouter(connectToState(mapStateToProps)(AnalysesTableHeaderRow))\n); // eslint-disable-line max-len\n","import React from 'react';\nimport { makeStyles } from '@mui/styles';\nimport EbmChart from '../../../images/EBM-v.2-1_Crop.png';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& img': {\n display: 'block',\n margin: 'auto',\n },\n }\n}));\n\nconst ratings = {\n /* eslint-disable max-len */\n 'A': [\n 'Superior',\n 'High certainty of a substantial (moderate-large) net health benefit',\n ],\n 'B': [\n 'Incremental',\n 'High certainty of a small net health benefit',\n ],\n 'C': [\n 'Comparable',\n 'High certainty of a comparable net health benefit',\n ],\n 'D': [\n 'Negative',\n 'High certainty of an inferior net health benefit',\n ],\n 'B+': [\n 'Incremental or Better',\n 'Moderate certainty of a small or substantial net health benefit, with high certainty of at least a small net health benefit',\n ],\n 'C+': [\n 'Comparable or Incremental',\n 'Moderate certainty of a comparable or small net health benefit, with high certainty of at least a comparable net health benefit',\n ],\n 'C-': [\n 'Comparable or Inferior',\n 'Moderate certainty that the net health benefit is either comparable or inferior, with high certainty of at best a comparable net health benefit',\n ],\n 'C++': [\n 'Comparable or Better',\n 'Moderate certainty of a comparable, small, or substantial net health benefit, with high certainty of at least a comparable net health benefit',\n ],\n 'P/I': [\n 'Promising but Inconclusive',\n 'Moderate certainty of a small or substantial net health benefit, small likelihood of a negative net health benefit',\n ],\n 'I': [\n 'Insufficient',\n 'Any situation in which the level of certainty in the evidence is low',\n ],\n}\n\nconst EbmRatingContent = () => {\n const classes = useStyles();\n\n return (\n
    \n EBM Ratings Chart\n
      \n {\n Object.entries(ratings).map(([rating, description]) => {\n return (\n
    • \n { rating } = { description[0] } — { description[1] }\n
    • \n )\n })\n }\n
    \n

    \n \n The ICER Integrated Evidence Rating™ combines a rating for comparative clinical effectiveness and a\n rating for comparative value. The clinical effectiveness rating arises from a joint judgment of the\n level of confidence provided by the body of evidence and the magnitude of the net health benefit — the\n overall balance between benefits and harms. This method for rating the clinical effectiveness is\n modeled on the “Evidence-Based Medicine (EBM) matrix” developed by a multi-stakeholder group convened\n by America’s Health Insurance Plans.\n \n

    \n
    \n );\n};\n\nEbmRatingContent.propTypes = {\n};\n\nexport default EbmRatingContent;\n","import React from \"react\";\nimport { oneOfType, arrayOf, shape, node, func, number, string, bool } from \"prop-types\";\nimport TableCell from \"@mui/material/TableCell\";\nimport CustomTooltip from \"../CustomTooltip\";\nimport { withStyles } from \"@mui/styles\";\n\nimport { stickyRowHeadingKeys, getType, getAlignment } from \"../../config\";\nimport ModalWithLauncher from \"../modals/ModalWithLauncher\";\nimport EbmRatingContent from \"../modals/EbmRatingContent\";\n\nconst TOOLTIP_FIELDS = [\"population_and_comparator\", \"annual_dosage_assumptions\"];\n\nconst styles = (theme) => ({\n tableCell: {\n padding: theme.spacing(0.5),\n fontSize: \"13px\",\n // width: '60px',\n maxWidth: \"200px\",\n \"&.supportsTooltip\": {\n \"& div\": {\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"3\",\n \"-webkit-box-orient\": \"vertical\",\n overflow: \"hidden\"\n },\n \"&.unscrollable\": {\n \"& div\": {}\n },\n \"&.scrollable\": {\n // bg image is in: app/javascript/client/styles/icer-ui.css\n paddingRight: \"20px\"\n }\n },\n '&[rowspan=\"4\"].supportsTooltip': {\n // different style, if sub-rows are rendered, or not?\n \"& div\": {}\n }\n }\n});\n\nclass AnalysesTableDataCell extends React.PureComponent {\n constructor(props) {\n super(props);\n const supportsTooltip = TOOLTIP_FIELDS.includes(props.fieldKey);\n this.state = { supportsTooltip, isScrollable: false, hovered: false };\n this.contentRef = React.createRef();\n }\n\n componentDidMount() {\n const { supportsTooltip } = this.state;\n if (supportsTooltip) {\n this.detectScrollable();\n }\n }\n\n componentDidUpdate() {\n const { supportsTooltip } = this.state;\n if (supportsTooltip) {\n this.detectScrollable();\n }\n }\n\n highlight = () => {\n this.setState({ hovered: true });\n };\n\n dehighlight = () => {\n this.setState({ hovered: false });\n };\n\n detectScrollable = () => {\n const { supportsTooltip } = this.state;\n if (supportsTooltip) {\n const { contentRef } = this;\n if (contentRef && contentRef.current) {\n const { scrollWidth, offsetWidth, scrollHeight, offsetHeight } = contentRef.current;\n if (scrollWidth > offsetWidth || scrollHeight > offsetHeight) {\n this.setState({ isScrollable: true });\n }\n }\n }\n };\n\n handleMouseOver = () => {\n const { onClick } = this.props;\n const { isScrollable } = this.state;\n if (isScrollable || onClick) {\n this.highlight();\n }\n };\n\n handleMouseOut = () => {\n const { onClick } = this.props;\n const { isScrollable } = this.state;\n if (isScrollable || onClick) {\n this.dehighlight();\n }\n };\n\n handleMouseClick = (e) => {\n const { onClick } = this.props;\n if (onClick) {\n onClick(e);\n }\n };\n\n renderContent = () => {\n const { children, fieldKey, tooltip, isSuppressed=false } = this.props;\n const { supportsTooltip } = this.state;\n\n if (isSuppressed) return children\n\n if (fieldKey == \"ebm_rating\") {\n let rating = \"\"\n const {props:childProps} = children\n if (typeof(childProps) === \"object\" && \"children\" in childProps) rating = childProps.children\n if (!rating) return null;\n return (\n rating}\n Content={EbmRatingContent}\n />\n );\n }\n if (supportsTooltip || tooltip) {\n if (tooltip) {\n return ;\n } else {\n return ;\n }\n }\n return children;\n };\n\n getTooltip = (row, fieldKey) => {\n const tooltipsForField = TOOLTIP_FIELDS[fieldKey];\n if (!tooltipsForField) return null;\n const content = tooltipsForField[row[fieldKey]];\n return content ?
    {content}
    : null;\n };\n\n render() {\n const { rowSpan, fieldKey, classes, isSuppressed } = this.props;\n const { supportsTooltip, isScrollable, hovered } = this.state;\n\n const hoveredClass = hovered ? \"hovered\" : \"\";\n const typeClass = getType(fieldKey);\n const supportsTooltipClass = supportsTooltip ? \"supportsTooltip\" : \"\";\n const scrollClass = !supportsTooltip ? \"\" : isScrollable ? \"scrollable\" : \"unscrollable\"; // eslint-disable-line no-nested-ternary\n\n const renderWithSuppression = isSuppressed && !fieldKey.includes(\"add_to\")\n\n return (\n accessibility ? > keyboard focus, for all users?\n rowSpan={rowSpan}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onClick={this.handleMouseClick}\n className={`${classes.tableCell} ${fieldKey} ${typeClass} ${supportsTooltipClass} ${scrollClass} ${hoveredClass}`}\n component={stickyRowHeadingKeys.includes(fieldKey) ? \"th\" : \"td\"}\n align={getAlignment(fieldKey)}\n sx={{\"> div\": {filter: renderWithSuppression ? \"blur(3px)\" : undefined}}}\n >\n {this.renderContent()}\n \n );\n }\n}\n\nAnalysesTableDataCell.defaultProps = {\n rowSpan: 1,\n onClick: null,\n children: null\n};\n\nAnalysesTableDataCell.propTypes = {\n rowSpan: number,\n fieldKey: string.isRequired,\n onClick: func,\n classes: shape({}).isRequired,\n children: oneOfType([arrayOf(node), node]),\n isSuppressed: bool\n};\n\nexport default withStyles(styles)(AnalysesTableDataCell);\n","import React from 'react';\nimport {\n shape, string, func, bool\n} from 'prop-types';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport RemoveCircleIcon from '@mui/icons-material/RemoveCircle';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { SELECTED_ROW_STORAGE_KEY } from '../../config';\nimport { connectToState } from '../../redux/connect-api';\nimport { userEnteredValuesByAnalysisIdSelector } from '../../selectors';\nimport analytics from '../../google-analytics';\n\nconst styles = (theme) => ({\n checkboxLabel: {\n margin: '0',\n },\n checkboxDefault: {\n padding: '0'\n },\n checkboxRemove: {\n // color: '#c00 !important',\n padding: '0'\n }\n});\n\nconst removedCircleIcon = ;\n\nclass RowSelector extends React.PureComponent {\n getUserEnteredValueByKey = (analysisId, fieldKey) => {\n const { userEnteredValuesForRow } = this.props;\n const { [fieldKey]: userEnteredValue } = userEnteredValuesForRow;\n if (!userEnteredValue) {\n return null;\n }\n return userEnteredValue;\n }\n\n handleRowSelect = () => {\n const { analysisId, actions: { setUserInput } = {} } = this.props;\n const isChecked = this.getUserEnteredValueByKey(analysisId, SELECTED_ROW_STORAGE_KEY) || false;\n setUserInput(analysisId, SELECTED_ROW_STORAGE_KEY, !isChecked);\n analytics.trackCompare(analysisId, !isChecked);\n }\n\n handleClick = (e) => {\n this.handleRowSelect(e);\n }\n\n render() {\n const {\n analysisId, label, useRemoveIcon, classes\n } = this.props;\n\n const isChecked = this.getUserEnteredValueByKey(analysisId, SELECTED_ROW_STORAGE_KEY) || false;\n\n const checkedIcon = useRemoveIcon ? removedCircleIcon : undefined;\n\n const checkboxClass = useRemoveIcon ? classes.checkboxRemove : classes.checkboxDefault;\n\n return (\n \n )}\n />\n );\n }\n}\n\nRowSelector.defaultProps = {\n // fieldKey: 'add_to_compare'\n};\n\nRowSelector.propTypes = {\n analysisId: string.isRequired,\n // fieldKey: oneOf(allFieldKeys),\n label: string.isRequired,\n userEnteredValuesForRow: shape({}).isRequired,\n useRemoveIcon: bool.isRequired,\n classes: shape({}).isRequired,\n actions: shape({\n setUserInput: func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n userEnteredValuesForRow: userEnteredValuesByAnalysisIdSelector(state, ownProps)\n});\n\nexport default withStyles(styles)(connectToState(mapStateToProps)(RowSelector));\n","import React from 'react';\nimport {\n oneOf, shape, string, func, bool\n} from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { allFieldKeys } from '../../config';\nimport { connectToState } from '../../redux/connect-api';\nimport { userEnteredValuesByAnalysisIdSelector } from '../../selectors';\nimport analytics from '../../google-analytics';\nimport debounce from 'lodash/debounce';\n\nexport const PRICE_INPUT_BLUR_EVENT = 'price-input-blur';\n\nconst styles = () => ({\n priceInput: {\n '&.user_proposed_price': {\n textAlign: 'right'\n },\n '&:invalid': {\n color: 'red'\n },\n '&:disabled': {\n userSelect: 'none',\n color: '#aaa',\n backgroundColor: '#fff',\n border: '1px solid #eee'\n }\n }\n});\n\n// test whole string, and allow decimal\nconst matchNumericString = /^[0-9.]+$/ig;\n\nclass PriceInput extends React.PureComponent {\n constructor(props) {\n super(props);\n this.inputRef = React.createRef();\n this.debounceTrackPrice = debounce(this.debouncePriceChange.bind(this), 650);\n }\n\n debouncePriceChange = (name, value) => {\n const { analysisId, actions: { setUserInput } } = this.props;\n setUserInput(analysisId, name, value);\n analytics.trackPrice(analysisId, value);\n }\n\n handlePriceChange = (e) => {\n const { name, value } = e.target;\n this.debounceTrackPrice(name, value);\n }\n\n getUserEnteredValueByKey = (analysisId, fieldKey) => {\n const { userEnteredValuesForRow } = this.props;\n const { [fieldKey]: userEnteredValue } = userEnteredValuesForRow;\n if (!userEnteredValue) {\n return null;\n }\n return userEnteredValue;\n }\n\n getPrice = () => {\n const { analysisId, fieldKey } = this.props;\n const price = this.getUserEnteredValueByKey(analysisId, fieldKey);\n if (price) {\n return parseInt(price, 10);\n }\n return null;\n }\n\n cancelEvent = (e) => {\n e.preventDefault();\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n };\n\n testAndCancelEvent = (e) => {\n // Prevent non-numeric input from being pasted, or via \"undo\" :\n const {\n type, key, data, metaKey, clipboardData\n } = e.nativeEvent;\n\n let testValue;\n if (type === 'keydown') {\n if (key !== 'Meta' && !metaKey) {\n // if meta key, like \" v (paste)\", then event is not canceled\n if (key.length === 1) {\n testValue = key;\n }\n }\n } else if (type === 'input') {\n testValue = data; // 'input' detected in lieu of 'paste'\n } else if (type === 'paste') {\n testValue = clipboardData.getData('Text');\n }\n\n if (testValue !== undefined) { // testValue is undefined for some valid meta keys (undo,redo)\n // if keyCode exists, regular numbers, or 0-9 from a numeric keypad:\n // (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105);\n if (!matchNumericString.test(`${testValue}`)) {\n this.cancelEvent(e);\n }\n }\n };\n\n handleInputEvent = (e) => {\n // e.persist(); // FOR DEBUGGING, see: https://reactjs.org/docs/events.html\n switch (e.keyCode) {\n case 8: // backspace\n case 46: // delete\n // always allow backspace or delete:\n return;\n default:\n // disallow non-numeric input, including copy/paste, and undo/redo:\n this.testAndCancelEvent(e, 'handleInputEvent');\n }\n };\n\n handleClick = () => {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n handleBlur = () => {\n const inputDomNode = this.inputRef.current;\n const priceInputBlurEvent = new CustomEvent(PRICE_INPUT_BLUR_EVENT, {\n detail: {\n target: inputDomNode\n },\n bubbles: true\n });\n inputDomNode.dispatchEvent(priceInputBlurEvent);\n }\n\n render() {\n const { disabled, fieldKey, classes } = this.props;\n\n return (\n \n );\n }\n}\n\nPriceInput.defaultProps = {\n fieldKey: 'user_proposed_price'\n};\n\nPriceInput.propTypes = {\n disabled: bool.isRequired,\n analysisId: string.isRequired,\n fieldKey: oneOf(allFieldKeys),\n userEnteredValuesForRow: shape({}).isRequired,\n classes: shape({}).isRequired,\n actions: shape({\n // getUserInputs: func.isRequired,\n setUserInput: func.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n userEnteredValuesForRow: userEnteredValuesByAnalysisIdSelector(state, ownProps)\n});\nexport default withStyles(styles)(connectToState(mapStateToProps)(PriceInput));\n","import React from 'react';\nimport {\n oneOfType, oneOf, string, number\n} from 'prop-types';\n\nimport { allFieldKeys } from '../../config';\nimport { connectToState } from '../../redux/connect-api';\nimport { priceDiscountPercentSelector } from '../../selectors';\nimport formatValue from '../../utils/formatters';\n\nclass PriceComparison extends React.PureComponent {\n render() {\n const { fieldKey, priceDiscountPercent } = this.props;\n return formatValue(fieldKey, priceDiscountPercent);\n }\n}\nPriceComparison.defaultProps = {\n priceDiscountPercent: null // formats as 'N/A', via formatValue\n};\n\nPriceComparison.propTypes = {\n // analysisId via ownProps:\n analysisId: string.isRequired, // eslint-disable-line react/no-unused-prop-types\n fieldKey: oneOf(allFieldKeys).isRequired,\n priceDiscountPercent: oneOfType([number, oneOf(['--'])]) // only allowed string is '--', for empty user price comparison\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n priceDiscountPercent: priceDiscountPercentSelector(state, ownProps)\n});\n\nexport default connectToState(mapStateToProps)(PriceComparison);\n","import React from 'react';\nimport { TableRow, Tooltip, Skeleton, Typography, Stack } from '@mui/material';\nimport withStyles from '@mui/styles/withStyles';\nimport OldAnalysisIcon from '@mui/icons-material/AssignmentLate';\nimport { NavLink, withRouter } from 'react-router-dom';\n\n\nimport AnalysesTableDataCell from './AnalysesTableDataCell';\nimport RowSelector from './RowSelector';\nimport PriceInput, { PRICE_INPUT_BLUR_EVENT } from './PriceInput';\nimport PriceComparison from './PriceComparison';\n\nimport { fieldConfig, comparisonValuesKeys, isDataSuppressibleForTrial } from '../../config';\nimport formatValue from '../../utils/formatters';\nimport { getAnalysisRowGroup } from '../../utils/dom-helpers';\n\nconst drugsWithCustomTooltips = {\n Oxbryta: `\n Note: On September 25, 2024, the manufacturer announced they would be withdrawing Oxbryta\n from the market.\n `,\n Relyvrio: `\n Note: The Phase 3 Phoenix trial failed to confirm any clinical benefit of AMX0035\n (Relyvrio) for the treatment of ALS. On April 4, 2024, the manufacturer announced they\n would be withdrawing AMX0035 from the market.\n `,\n Lagevrio: `\n Note: The characteristics of the COVID-19 landscape have changed dramatically since this\n assessment was completed in May 2022\n `\n}\n\nconst styles = () => ({\n outDatedRow: {\n '& th, & td': {\n color: '#717171',\n verticalAlign: 'middle !important', // Overriding style from stylesheet\n },\n '& td.population_and_comparator > div, & td.annual_dosage_assumptions > div': {\n minHeight: 'auto',\n '& > div': {\n lineClamp: '1 !important',\n '-webkit-line-clamp': '1 !important',\n },\n '& svg': {\n fill: '#949494'\n }\n },\n '& th.trade_name > div > a, & th.trade_name > div': {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n },\n '& a': {\n color: '#717171',\n }\n }\n});\n\nclass AnalysesTableDataSubRow extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = { focused: false };\n\n this.rowRef = React.createRef();\n\n this.cellRefs = {}; // delegate td click event to child components\n\n // inside constructor, to evaluate once:\n this.priceRowEvents = {\n onClick: (e) => {\n this.delegateCellClick(e, 'user_proposed_price');\n this.setState({ focused: true });\n }\n };\n\n // inside constructor, to evaluate once:\n this.mapCellEvents = {\n add_to_compare: {\n onClick: (e) => this.delegateCellClick(e, 'add_to_compare')\n },\n remove_from_compare: {\n onClick: (e) => this.delegateCellClick(e, 'remove_from_compare')\n }\n };\n\n this.isSuppressed = false\n if (this.props.suppressContent) {\n this.isSuppressed =\n this.props.row?.date_of_review ? isDataSuppressibleForTrial(this.props.row?.date_of_review) : false\n }\n }\n\n componentDidMount = () => {\n this.rowDom = this.rowRef.current;\n if (this.rowDom) {\n this.rowDom.addEventListener(PRICE_INPUT_BLUR_EVENT, () => {\n this.setState({ focused: false });\n });\n }\n }\n\n getCellRef = (slug, cellKey) => this.cellRefs[`${slug}-${cellKey}`]\n\n setCellRef = (slug, cellKey) => {\n this.cellRefs[`${slug}-${cellKey}`] = React.createRef();\n return this.getCellRef(slug, cellKey);\n }\n\n delegateCellClick = (e, fieldKey) => {\n // delegate cell click:\n const { id: slug } = getAnalysisRowGroup(e.target);\n const cellRef = this.getCellRef(slug, fieldKey);\n if (cellRef) {\n cellRef.current.handleClick(e);\n }\n };\n\n getRowHandlers = (rowKey) => {\n const { row: { hasIcerPrice } } = this.props;\n if (rowKey === 'user_proposed_price_row' && hasIcerPrice) {\n return this.priceRowEvents;\n }\n return {};\n }\n\n getCellHandlers = (fieldKey) => this.mapCellEvents[fieldKey] || {}\n\n buildValueForKey = ({fieldKey, config, isSuppressed}) => {\n if (!config) {\n return `(no config: ${fieldKey})`;\n }\n const { row } = this.props;\n const { slug } = row\n switch (fieldKey) {\n case 'remove_from_compare':\n case 'add_to_compare': {\n return (\n \n );\n }\n case 'trade_name': {\n const { details_enabled, asset_group_id, is_outdated_analysis, trade_name } = row;\n const { location: { search = '' } } = this.props;\n let tooltipText = drugsWithCustomTooltips[trade_name] ?? `\n Note: ICER has completed a more recent assessment of this drug and condition\n `\n const OldNote = () => (\n \n \n \n )\n if (details_enabled && asset_group_id) {\n return (\n \n {row[fieldKey]}\n {is_outdated_analysis && }\n \n );\n }\n return <>\n {row[fieldKey]}\n {is_outdated_analysis && }\n \n }\n case 'user_proposed_price':\n if (isSuppressed) {\n return \n }\n return (\n \n );\n default: {\n if (isSuppressed) {\n if (fieldKey === \"population_and_comparator\")\n return \n \n \n else {\n return \n }\n }\n if (fieldKey.match(/^manufacturer_price_vs/)) {\n const { benchmarkKey, comparisonKey } = config\n // To match the database columns we need to remove '_price'\n // If we do not include '_price' in the config established\n // in this file ('manufacturer' vs 'manufacturer_price'):\n // app/javascript/client/config/index.js | Lines: 113, 456, 522\n // these benchmark price fields will clash with the manufacturer name\n // field which has the same base key of 'manufacturer'\n const _comparisonKey = comparisonKey.replace('_price', '')\n let value = row[`${_comparisonKey}_${benchmarkKey}`]\n // If `value` is not null convert to Number so it's formatted correctly\n // null values are handled with the formatValue ('N/A' is returned)\n value = value ? Number(value) : value\n return formatValue(fieldKey, value, {}, 'usd');\n }\n if (comparisonValuesKeys.includes(fieldKey)) {\n return (\n \n );\n }\n const data = {}\n const useValue = config.fixedValue ? config.fixedValue : row[fieldKey];\n if (row.alternative_im_output_attributes) {\n data.url = row.alternative_im_output_attributes.url\n }\n return formatValue(fieldKey, useValue, data);\n }\n }\n }\n\n renderCell = (row, cellProps) => {\n const {\n rowSpan, renderKey, fieldKey\n } = cellProps;\n const { analysis_tooltip: tooltip } = row\n const config = fieldConfig[fieldKey]\n const isSuppressed = this.isSuppressed && config.suppressible\n return (\n {tooltip}
    }\n isSuppressed={isSuppressed}\n {...this.getCellHandlers(fieldKey)}\n >\n
    {this.buildValueForKey({fieldKey, config, isSuppressed})}
    \n \n );\n }\n\n render() {\n const {\n row,\n row: { hasIcerPrice, is_outdated_analysis=false },\n subRowProps,\n classes\n } = this.props;\n const { focused } = this.state;\n const { rowRenderKey, columnProps } = subRowProps;\n const hasIcerPriceClass = hasIcerPrice ? 'has-icer-price' : '';\n const isOutdated = is_outdated_analysis ? classes.outDatedRow : '';\n const focusedInputClass = focused ? 'focused' : '';\n if (rowRenderKey === 'manufacturer_price_row' && !row.hasManufacturersPrice) {\n return null\n }\n return (\n \n {columnProps.map((cellProps) => this.renderCell(row, cellProps))}\n \n );\n }\n}\n\n\nexport default withStyles(styles)(withRouter(AnalysesTableDataSubRow));\n","// el.closest is not polyfilled by core-js:\n// https://github.com/zloirock/core-js#iterable-dom-collections\nexport const getAnalysisRowGroup = (el) => { // eslint-disable-line import/prefer-default-export\n try {\n return el.closest('tbody');\n } catch (e) {\n // e.g., MSIE 11\n let currentNode = el;\n let i = 10;\n while (--i) { // eslint-disable-line no-plusplus\n // console.error('currentNode.tagName: ', currentNode.tagName);\n if (currentNode.tagName === 'TBODY') {\n return currentNode;\n }\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n};\n","import React from 'react';\nimport TableBody from '@mui/material/TableBody';\nimport { string } from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport AnalysesTableDataSubRow from './AnalysesTableDataSubRow';\n\nimport { tabKeyType, dataRowPropsType, analysisType } from '../../constants/proptypes';\n\nimport { connectToState } from '../../redux/connect-api';\nimport { activeTabKeySelector, analysisByIdSelector, dataRowPropsSelector } from '../../selectors';\nimport { userIsTrialSubscriberSelector } from '../../selectors/userProfile';\n\nclass AnalysesTableDataRow extends React.PureComponent {\n renderSubRows = () => {\n const {\n activeTabKey, analysisId, row, dataRowProps, subscriptionIsTrial\n } = this.props;\n\n return dataRowProps.map((subRowProps) => (\n \n ));\n }\n\n render() {\n const { analysisId, row } = this.props;\n const unpublished = row.unpublished ? 'unpublished' : '';\n return (\n \n {this.renderSubRows()}\n \n );\n }\n}\n\nAnalysesTableDataRow.propTypes = {\n activeTabKey: tabKeyType.isRequired,\n analysisId: string.isRequired,\n dataRowProps: dataRowPropsType.isRequired,\n row: analysisType.isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n activeTabKey: activeTabKeySelector(state, ownProps),\n dataRowProps: dataRowPropsSelector(state, ownProps),\n row: analysisByIdSelector(state, ownProps),\n subscriptionIsTrial: userIsTrialSubscriberSelector(state)\n});\n\nexport default withRouter(connectToState(mapStateToProps)(AnalysesTableDataRow));\n","import React from 'react';\nimport {\n arrayOf, string, number, bool\n} from 'prop-types';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport { withRouter } from 'react-router-dom';\nimport withStyles from '@mui/styles/withStyles';\n\nimport { tabKeyType } from '../../constants/proptypes';\nimport ProgressIndicator from '../ProgressIndicator';\n\nimport { connectToState } from '../../redux/connect-api';\nimport {\n activeTabKeySelector,\n searchStringSelector,\n analysesLoadingSelector,\n columnCountSelector\n} from '../../selectors';\n\nconst styles = () => ({\n infoCell: {\n padding: 10,\n textAlign: 'center',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%'\n },\n})\nclass AnalysesTableStatusRow extends React.PureComponent {\n render() {\n const {\n columnCount, analysesLoading, activeTabKey, searchString, rowIds, classes\n } = this.props;\n let statusMessage = null;\n if (analysesLoading) {\n statusMessage = ;\n } else if (activeTabKey === 'compare-your-own-pricing' && rowIds.length === 0) {\n statusMessage =

    Pick one or more drugs from a different tab.

    ;\n } else if (searchString && rowIds.length === 0) {\n statusMessage =

    No results for your search: “{searchString}”

    ;\n }\n\n if (statusMessage) {\n return (\n \n \n \n
    \n {statusMessage}\n
    \n
    \n
    \n
    \n );\n }\n return null;\n }\n}\n\nAnalysesTableStatusRow.propTypes = {\n activeTabKey: tabKeyType.isRequired,\n searchString: string.isRequired,\n analysesLoading: bool.isRequired,\n columnCount: number.isRequired,\n rowIds: arrayOf(string).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n activeTabKey: activeTabKeySelector(state, ownProps),\n searchString: searchStringSelector(state, ownProps),\n analysesLoading: analysesLoadingSelector(state),\n columnCount: columnCountSelector(state, ownProps)\n});\n\n\nexport default withStyles(styles)(withRouter(connectToState(mapStateToProps)(AnalysesTableStatusRow)));\n","import React, { useEffect } from \"react\";\nimport { arrayOf, shape, string, bool } from \"prop-types\";\nimport { Table, Box } from \"@mui/material\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nimport { tabKeyType } from \"../constants/proptypes\";\nimport AnalysesTableHeaderRow from \"./table/AnalysesTableHeaderRow\";\nimport AnalysesTableDataRow from \"./table/AnalysesTableDataRow\";\nimport AnalysesTableStatusRow from \"./table/AnalysesTableStatusRow\";\nimport LoginButton from \"./LoginButton\";\nimport ProgressIndicator from \"./ProgressIndicator\";\nimport { trackPageView } from \"../hooks/usePageView\";\n\nconst styles = () => ({\n table: {\n minWidth: \"100%\"\n },\n error: {\n minWidth: \"100%\",\n minHeight: \"300px\",\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: 15\n }\n});\n\nclass AnalysesTable extends React.PureComponent {\n handleSubmit = (e) => {\n e.preventDefault();\n };\n\n determinePageTitle() {\n switch (this.props.activeTabKey) {\n case \"compare-your-own-pricing\":\n return \"Compare Your Own Pricing\";\n case \"icer-pricing\":\n return \"ICER Pricing\";\n case \"drugs\":\n return \"Drugs List\";\n case \"report-snapshots\":\n return \"Report Snapshots\";\n default:\n return \"Analysis\";\n }\n }\n\n trackPageView() {\n !this.props.loading && trackPageView(this.determinePageTitle());\n }\n\n componentDidMount() {\n this.trackPageView();\n }\n\n componentDidUpdate(prevProps) {\n this.trackPageView();\n }\n\n render() {\n const { classes, activeTabKey, rowIds, loading, searchTerm } = this.props;\n if (loading) {\n return (\n \n \n \n );\n }\n if (activeTabKey !== \"compare-your-own-pricing\" && !rowIds.length && !searchTerm) {\n return (\n \n

    \n We're having trouble loading analyses. Thanks for your patience.\n
    Please try logging in again.\n

    \n \n
    \n );\n }\n return (\n \n \n \n {rowIds.map((analysisId) => (\n \n ))}\n \n
    \n \n );\n }\n}\n\nAnalysesTable.propTypes = {\n classes: shape({}).isRequired,\n activeTabKey: tabKeyType.isRequired,\n rowIds: arrayOf(string).isRequired,\n loading: bool.isRequired,\n searchTerm: string\n};\n\nexport default withStyles(styles)(AnalysesTable);\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Box, CardActionArea, CardContent, Grid, Typography } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport BaseCard from \"./BaseCard\";\nimport DrugList from \"./DrugList\";\nimport { urlEncode } from \"../utils/url\";\nimport UnpublishedChip from \"./UnpublishedChip\";\nimport { isDataSuppressibleForTrial } from \"../config\";\n\nconst useStyles = makeStyles(({ palette }) => ({\n cardWrapper: {\n display: \"flex\"\n },\n cardAction: {\n display: \"flex\",\n flexGrow: 1,\n alignItems: \"stretch\",\n textDecoration: \"none !important\",\n \"&:hover *\": {\n textDecoration: \"none !important\"\n }\n },\n cardContent: {\n display: \"flex\",\n flexDirection: \"column\",\n flexGrow: 1\n },\n cardTitle: {\n marginBottom: 30\n },\n chipTitle: {\n marginBottom: 5\n },\n chip: {\n marginRight: 4,\n marginBottom: 4\n }\n}));\n\nconst ReportSnapshotCard = ({ attributes, searchString = \"\", subscriptionIsTrial=false }) => {\n const { specific_conditions = [], drugs = [], id, date_of_review, status } = attributes;\n const isUnpublished = status !== \"published\";\n const classes = useStyles();\n let path = `/report-snapshots/${id}`;\n if (searchString) {\n path += `?search=${urlEncode(searchString)}`;\n }\n\n const dateOfReview = new Date(date_of_review)\n let year = \"\";\n if (date_of_review && specific_conditions) {\n year = ` (${dateOfReview.getFullYear()})`;\n }\n\n let isSuppressed = subscriptionIsTrial && isDataSuppressibleForTrial(dateOfReview)\n\n const content = (\n \n \n {specific_conditions.length && (\n \n {specific_conditions[0]}\n {year}\n \n )}\n {isUnpublished && }\n {isSuppressed && (\n )}\n \n {drugs.length > 0 && }\n \n )\n\n return (\n \n \n {\n !isSuppressed && (\n \n {content}\n \n )\n }\n {isSuppressed && content}\n \n \n );\n};\n\nexport default ReportSnapshotCard;\n","import React from \"react\";\nimport { string, array, number, oneOfType } from \"prop-types\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport { formateDate } from \"../../../utils/date\";\n\n// TODO: use i18n?\n\nconst useStyles = makeStyles(({ spacing, palette }) => ({\n detailBar: {\n display: \"flex\",\n justifyContent: \"space-between\",\n paddingLeft: spacing(3),\n paddingRight: spacing(3),\n paddingTop: spacing(2),\n paddingBottom: spacing(2),\n backgroundColor: \"white\",\n borderBottom: \"1px solid #1A80D31A\",\n alignItems: \"baseline\",\n flexWrap: \"wrap\",\n gap: spacing(1)\n },\n heading: {\n fontSize: 28,\n lineHeight: \"32px\",\n fontWeight: 600,\n color: \"black\",\n paddingRight: spacing(2)\n },\n date: {\n \"& span\": {\n fontWeight: 700\n }\n }\n}));\n\nconst ReportSnapshotHeader = (props) => {\n const { condition, date } = props;\n\n const dateDisplay = date ? ` ${formateDate(date)}` : null;\n\n const classes = useStyles();\n return (\n \n {condition}\n {dateDisplay && (\n \n Date of review:\n {dateDisplay}\n \n )}\n \n );\n};\n\nReportSnapshotHeader.propTypes = {\n drugs: array,\n condition: string.isRequired,\n year: oneOfType([string, number])\n};\n\nexport default ReportSnapshotHeader;\n","import React from \"react\";\nimport { Typography } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\n\nexport const ReportSnapshotHeading = ({ text }) => {\n const { palette } = useTheme();\n return (\n \n {text}\n \n );\n};\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\n\nexport const DOCUMENT_ICON_COLOR = \"rgba(255, 255, 255, .9)\";\nconst ACROBAT_ICON_COLOR = DOCUMENT_ICON_COLOR;\n\nconst WordIcon = (props) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default WordIcon;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\nimport { DOCUMENT_ICON_COLOR } from \"./PdfIcon\";\n\nconst PowerpointIcon = (props) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default PowerpointIcon;\n","import React from \"react\";\nimport SvgIcon from \"@mui/material/SvgIcon\";\nimport { DOCUMENT_ICON_COLOR } from \"./PdfIcon\";\n\nconst WordIcon = (props) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default WordIcon;\n","import React, { useMemo } from \"react\";\nimport NavButton from \"../../menus/NavButton\";\nimport { ReportSnapshotSection } from \"./ReportSnapshotBody\";\nimport { Box, Grid, Tooltip } from \"@mui/material\";\nimport { docLabels } from \"../../../config\";\nimport difference from \"lodash/difference\";\nimport CloudDownloadIcon from \"@mui/icons-material/CloudDownload\";\nimport InsertDriveFileRoundedIcon from \"@mui/icons-material/InsertDriveFileRounded\";\nimport PowerpointIcon from \"../../icons/PowerpointIcon\";\nimport WordIcon from \"../../icons/WordIcon\";\nimport PdfIcon, { DOCUMENT_ICON_COLOR } from \"../../icons/PdfIcon\";\nimport googleAnalytics from \"../../../google-analytics\";\n\nconst getDocInfo = (activeStorageContentType = \"\", filename = \"\") => {\n const iconStyle = { position: \"relative\", zIndex: 10, marginLeft: \"-10px\" };\n switch (true) {\n case activeStorageContentType.includes(\"presentation\") ||\n filename.toLowerCase().includes(\"ppt\"):\n return {\n icon: ,\n extension: \"ppt\"\n };\n case activeStorageContentType.includes(\"word\"):\n return {\n icon: ,\n extension: \"doc\"\n };\n case activeStorageContentType.includes(\"pdf\"):\n return {\n icon: ,\n extension: \"pdf\"\n };\n default:\n return {\n icon: (\n \n ),\n extension: \"file\"\n };\n }\n};\n\nconst mapTooltips = {\n presentation_upload: (\n
    PowerPoint presentation highlighting the key findings of the report
    \n ),\n evidence_summary_upload:
    Key tables and figures from the report
    ,\n patient_perspectives:
    Narrative summary of insights gained from patients
    ,\n report_at_a_glance_upload:
    Easy to read report summary
    ,\n recommendation_upload: (\n
    Policy Roundtable perspectives on pricing and prior auth criteria
    \n )\n};\n\nexport const ReportSnapshotDocuments = ({ documents, calloutText }) => {\n const [featuredDoc, otherDocs] = useMemo(() => {\n const featured = documents.find(({ key }) => key.match(/recommendation_upload/));\n return [featured, difference(documents, [featured])];\n });\n return (\n \n \n {featuredDoc && (\n \n \n \n \n googleAnalytics.trackDocument(featuredDoc.key + \": \" + featuredDoc.filename)\n }\n href={featuredDoc.url}\n linkText={docLabels[featuredDoc.key]}\n linkDescription={calloutText}\n startIconBg={true}\n linkIcon={getDocInfo(featuredDoc.content_type, featuredDoc.filename).icon}\n endIcon={}\n variant=\"dark\"\n target=\"_blank\"\n />\n \n \n \n )}\n {otherDocs.map(({ url, key, content_type, filename }) => (\n \n \n \n googleAnalytics.trackDocument(key + \": \" + filename)}\n href={url}\n linkText={docLabels[key]}\n key={key}\n variant=\"dark\"\n linkIcon={getDocInfo(content_type, filename).icon}\n startIconBg={true}\n endIcon={}\n target=\"_blank\"\n />\n \n \n \n ))}\n \n \n );\n};\n","import React, { useState, useMemo, useCallback } from \"react\";\nimport { shape } from \"prop-types\";\nimport { Box, Grid, Typography } from \"@mui/material\";\nimport { videoArrayType, documentArrayType } from \"../../../constants/proptypes\";\nimport compact from \"lodash/compact\";\n\nimport VideoDialog from \"../../VideoDialog\";\nimport VideoCard from \"../../../components/VideoCard\";\nimport { ReportSnapshotHeading } from \"./ReportSnapshotHeading\";\nimport { ReportSnapshotDocuments } from \"./ReportSnapshotDocuments\";\nimport DrugList from \"../../DrugList\";\n\nexport const ReportSnapshotSection = ({ children, title, mb = 4 }) => (\n \n \n {children}\n \n);\n\nconst ReportSnapshotBody = ({ report }) => {\n // Add class to\n const pageContainer = document.getElementById(\"icer-spa\");\n pageContainer && pageContainer.classList.add(\"body-flex\");\n\n const [modalOpen, setModalOpen] = useState(false);\n const [currentVideoId, setCurrentVideoId] = useState(null);\n\n const [drugs, documents] = useMemo(() => [report.drugs, compact(report.documents)], [report]);\n const featuredVideo = useMemo(\n () => report.videos.find(({ field_name }) => field_name === \"youtube_id_1\"),\n [report.videos]\n );\n const relatedVideos = useMemo(\n () => report.videos.filter(({ field_name }) => field_name !== \"youtube_id_1\"),\n [report.videos]\n );\n\n const toggleModal = useCallback(() => setModalOpen(!modalOpen));\n const activateVideo = useCallback((videoId) => {\n setCurrentVideoId(videoId);\n setModalOpen(true);\n });\n\n return (\n \n \n \n {featuredVideo && (\n \n activateVideo(featuredVideo.id)}\n isFeatured\n />\n \n )}\n \n {drugs.length > 0 ? (\n \n ) : (\n No drugs associated with this report.\n )}\n \n \n \n {compact(documents).length > 0 && (\n \n )}\n {relatedVideos.length > 0 && (\n \n \n {relatedVideos.map((v, i) => (\n \n activateVideo(v.id)}\n />\n \n ))}\n \n \n )}\n \n \n \n \n );\n};\n\nReportSnapshotBody.defaultProps = {\n report: null\n};\n\nReportSnapshotBody.propTypes = {\n report: shape({\n videos: videoArrayType.isRequired,\n documents: documentArrayType.isRequired\n })\n};\n\nexport default ReportSnapshotBody;\n","import React from \"react\";\nimport { Alert, AlertTitle, Button, Link, Typography } from \"@mui/material\";\n\nconst DataAccessAlert = ({ label = \"ICER's most recent analyses are\", action }) => (\n \n Data access is limited during the free trial period.\n \n {label} only available to subscribers.{\" \"}\n Please{\" \"}\n contact us\n {\" \"}for more information.\n \n \n);\n\nexport default DataAccessAlert;\n","import React, { useEffect } from \"react\";\nimport { Box } from \"@mui/material\";\nimport Alert from \"@mui/material/Alert\";\nimport { string, bool, object } from \"prop-types\";\n\nimport ReportSnapshotHeader from \"./ReportSnapshotHeader\";\nimport ReportSnapshotBody from \"./ReportSnapshotBody\";\nimport ProgressIndicator from \"../../ProgressIndicator\";\nimport { connectToState } from \"../../../redux/connect-api\";\nimport { analysesLoadingSelector, reportSnapshotSelector } from \"../../../selectors\";\nimport { trackPageView } from \"../../../hooks/usePageView\";\nimport { userIsTrialSubscriberSelector } from \"../../../selectors/userProfile\"\nimport { isDataSuppressibleForTrial } from \"../../../config\";\nimport DataAccessAlert from \"../../DataAccessAlert\";\n\nconst getTitleAndYearFromReport = ({ attributes }) => {\n const currentCondition = attributes.specific_conditions[0] || \"\";\n let year = null;\n if (attributes.date_of_review) {\n year = new Date(attributes.date_of_review).getFullYear();\n }\n return { title: currentCondition, year };\n};\n\nconst ReportSnapshot = (props) => {\n const { report = {}, analysesLoading, subscriptionIsTrial } = props;\n\n useEffect(() => {\n if (!report || !report.attributes) return;\n const { title, year } = getTitleAndYearFromReport(report);\n trackPageView(`Report Snapshot: ${title} (${year})`);\n }, [report]);\n\n if (analysesLoading) {\n return ;\n }\n\n // If report was not loaded or found indicate in UI\n if (!report || Object.keys(report).length === 0) {\n return (\n \n \n Report Snapshot could not be found\n \n \n );\n }\n\n const { attributes = null } = report || {};\n\n // If user does not have access to report\n const dateOfReview = new Date(attributes?.date_of_review)\n if (dateOfReview && subscriptionIsTrial && isDataSuppressibleForTrial(dateOfReview)) {\n return (\n \n \n \n \n \n )\n }\n\n let relatedDrugs = attributes.drugs || [];\n const currentCondition = attributes.specific_conditions[0] || \"\";\n let date = null;\n if (attributes.date_of_review) {\n date = new Date(attributes.date_of_review);\n }\n return (\n <>\n \n \n \n );\n};\n\nReportSnapshot.propTypes = {\n // eslint-disable-next-line react/no-unused-prop-types\n activeReportId: string,\n report: object,\n analysesLoading: bool.isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n report: reportSnapshotSelector(state, ownProps),\n analysesLoading: analysesLoadingSelector(state, ownProps),\n subscriptionIsTrial: userIsTrialSubscriberSelector(state)\n };\n};\n\nexport default connectToState(mapStateToProps)(ReportSnapshot);\n","import React, { useEffect } from \"react\";\nimport { bool, string, arrayOf, shape } from \"prop-types\";\nimport { Box, Grid, Paper, Typography } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport ProgressIndicator from \"./ProgressIndicator\";\nimport ReportSnapshotCard from \"./ReportSnapshotCard\";\n\nimport { connectToState } from \"../redux/connect-api\";\nimport {\n searchStringSelector,\n activeDetailIdSelector,\n analysesLoadingSelector,\n getReportSnapshotCollection\n} from \"../selectors\";\nimport { menu } from \"../component-styles\";\nimport ReportSnapshot from \"./AppPages/ReportSnapshot\";\nimport { trackPageView } from \"../hooks/usePageView\";\nimport { userIsTrialSubscriberSelector } from \"../selectors/userProfile\";\n\nconst styles = () => ({\n loadingWrapper: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\"\n },\n container: {\n display: \"flex\",\n width: \"100%\",\n flexDirection: \"column\"\n },\n wrapper: {\n width: \"100%\",\n overflow: \"auto\"\n },\n ...menu\n});\n\nclass ReportSnapshots extends React.PureComponent {\n componentDidMount() {\n !this.props.loading && trackPageView(\"Report Snapshots\");\n }\n\n render() {\n const { loading, reportSnapshots, classes, searchString = \"\", activeDetailId, subscriptionIsTrial } = this.props;\n\n\n if (activeDetailId) {\n return ;\n }\n\n if (loading) {\n return (\n \n \n \n \n \n \n );\n }\n\n if (!reportSnapshots.length && searchString.length) {\n return (\n \n \n We weren't able to find a Report Snapshot matching '{searchString}'\n \n \n );\n }\n\n const searchResults = () => {\n let searchResults = \"\";\n if (searchString.length) {\n searchResults = ` matching: ${searchString}`;\n }\n return searchResults;\n };\n\n return (\n \n \n

    \n {reportSnapshots.length} report snapshot(s) found{searchResults()}\n

    \n
    \n \n \n \n \n {reportSnapshots.map((report, i) => (\n \n ))}\n \n \n \n \n
    \n );\n }\n}\n\nReportSnapshots.propTypes = {\n loading: bool,\n searchString: string,\n reportSnapshots: arrayOf(shape({})),\n activeDetailId: string,\n match: shape({\n // eslint-disable-line react/no-unused-prop-types\n url: string,\n params: shape({\n detailId: string\n })\n }).isRequired,\n location: shape({\n // eslint-disable-line react/no-unused-prop-types\n pathname: string.isRequired,\n search: string.isRequired\n }).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n reportSnapshots: getReportSnapshotCollection(state, ownProps),\n activeDetailId: activeDetailIdSelector(state, ownProps),\n searchString: searchStringSelector(state, ownProps),\n loading: analysesLoadingSelector(state, ownProps),\n subscriptionIsTrial: userIsTrialSubscriberSelector(state)\n };\n};\n\nexport default withStyles(styles)(connectToState(mapStateToProps)(ReportSnapshots));\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Dialog, DialogContent, IconButton } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { differenceInHours } from \"date-fns\";\nimport DataAccessAlert from \"./DataAccessAlert\";\n\nexport const getLocalStorageItem = ({ key=null }) => {\n if (!localStorage || !key) return null;\n return localStorage.getItem(key);\n};\n\nexport const setLocalStorageItem = ({ key=null, value }) => {\n if (!localStorage || !key) return null;\n localStorage.setItem(key, value);\n};\n\nconst LimitedAccessModal = () => {\n const LOCAL_STORAGE_KEY = \"trial-membership-modal-dismissal\";\n const lastDate = useMemo(() => {\n const dateString = getLocalStorageItem({ key: LOCAL_STORAGE_KEY });\n if (!dateString) return null;\n return new Date(dateString);\n }, []);\n const [modalOpen, setModalOpen] = useState(true);\n const toggleModal = useCallback(() => {\n setLocalStorageItem({ key: LOCAL_STORAGE_KEY, value: new Date().toUTCString() });\n setModalOpen(false);\n }, []);\n\n if (lastDate && differenceInHours(new Date(), lastDate) < 24) {\n return null;\n }\n\n return (\n \n \n \n \n \n }\n />\n \n \n );\n};\n\nexport default LimitedAccessModal;\n","import React from \"react\";\nimport { arrayOf, oneOf, shape, string, bool } from \"prop-types\";\nimport Paper from \"@mui/material/Paper\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport NoAccess from \"./NoAccess\";\n\nimport TabBar from \"./TabBar\";\nimport GridFilter from \"./menus/GridFilter\";\nimport CsvDownload from \"./menus/CsvDownload\";\nimport ComparisonChart from \"./menus/ComparisonChart\";\nimport AnalysesTable from \"./AnalysesTable\";\nimport ReportSnapshots from \"./ReportSnapshots\";\nimport { connectToState } from \"../redux/connect-api\";\n\nimport {\n activeTabKeySelector,\n analysesLoadingSelector,\n filteredAnalysisIdsSelector,\n filteredAnalysisIdsForAllTabsSelector\n} from \"../selectors\";\n\nimport { tabKeys } from \"../config\";\nimport { menu } from \"../component-styles\";\nimport { userAccessStatusSelector, userIsTrialSubscriberSelector, userProfileLoadingSelector } from \"../selectors/userProfile\";\nimport LimitedAccessModal from \"./LimitedAccessModal\";\n\nconst styles = ({ spacing }) => ({\n alignMenu: {\n padding: \"0 10px 0 10px\",\n width: \"100%\"\n },\n scrollable: {\n overflow: \"auto\",\n display: \"flex\",\n flex: \"1 1 auto\",\n \"& > div\": {\n flexDirection: \"column\"\n }\n },\n ...menu,\n paper: {\n display: \"flex\"\n }\n});\n\nconst TabNavigator = ({ activeTabKey,\n rowIds,\n rowIdsForExport,\n analysesLoading,\n classes,\n hasToolAccess,\n subscriptionIsTrial,\n userLoading,\n location,\n history,\n match}) => {\n const onDrugList = activeTabKey === \"drugs\";\n const onReportSnapshots = activeTabKey === \"report-snapshots\";\n const showGridFilter = !onDrugList && !onReportSnapshots;\n const controls = () => (\n <>\n {showGridFilter ? : null}\n \n
    \n \n
    \n \n );\n const searchTerm = () => {\n if (location.search) {\n return decodeURI(location.search.replace(\"?search=\", \"\").replace(\"+\", \" \"));\n } else {\n return \"\";\n }\n };\n\n if (!userLoading && !hasToolAccess) {\n return ;\n }\n\n let wrapperClasses = classes.alignMenu;\n if (onReportSnapshots) {\n wrapperClasses += ` ${classes.scrollable}`;\n }\n return (\n <>\n {subscriptionIsTrial && }\n \n
    \n {!onReportSnapshots && (\n \n {location.search && onDrugList ? (\n

    \n Search keyword: {searchTerm()}\n

    \n ) : null}\n {controls()}\n
    \n )}\n \n {onReportSnapshots ? (\n \n ) : (\n \n )}\n \n
    \n \n );\n}\n\nTabNavigator.propTypes = {\n classes: shape({}).isRequired,\n activeTabKey: oneOf(tabKeys).isRequired,\n analysesLoading: bool.isRequired,\n rowIds: arrayOf(string).isRequired,\n match: shape({\n // eslint-disable-line react/no-unused-prop-types\n params: shape({\n activeTabKey: oneOf(tabKeys)\n })\n }).isRequired,\n location: shape({\n // eslint-disable-line react/no-unused-prop-types\n search: string.isRequired\n }).isRequired,\n hasToolAccess: bool,\n loading: bool\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n activeTabKey: activeTabKeySelector(state, ownProps),\n analysesLoading: analysesLoadingSelector(state, ownProps),\n rowIds: filteredAnalysisIdsSelector(state, ownProps),\n rowIdsForExport: filteredAnalysisIdsForAllTabsSelector(state, ownProps),\n hasToolAccess: userAccessStatusSelector(state),\n subscriptionIsTrial: userIsTrialSubscriberSelector(state),\n userLoading: userProfileLoadingSelector(state)\n };\n};\n\nexport default withStyles(styles)(connectToState(mapStateToProps)(TabNavigator));\n","import React from 'react';\n\nimport Typography from '@mui/material/Typography';\nimport { makeStyles } from '@mui/styles';\nimport Card from '@mui/material/Card';\nimport VideoPlayer from './details/VideoPlayer';\n\nimport ShareThumb from '../styles/thumbnails/share-thumb.svg';\n\nconst useStyles = makeStyles((theme) => ({\n demo: {\n // border: '9px #f0f solid',\n backgroundColor: '#F8F8F8',\n display: 'flex',\n // textAlign: 'center',\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '& > .scrollable': {\n maxWidth: 'calc(100vw - (2 * var(--table-gutter-width)))',\n maxHeight: 'calc(100vh - var(--main-header-height) - var(--footer-height))',\n overflow: 'auto',\n position: 'relative',\n paddingLeft: 'var(--table-gutter-width)',\n paddingRight: 'var(--table-gutter-width)'\n }\n\n },\n intro: {\n marginLeft: '15px',\n textAlign: 'left',\n flexDirection: 'column',\n fontSize: '20px',\n fontWeight: 'bold',\n '& > h6': {\n fontSize: '32px'\n }\n },\n watch: {\n fontSize: '24px',\n margin: 0\n },\n moreFeatures: {\n fontSize: '16px',\n margin: '5px',\n fontWeight: 'normal'\n },\n share: {\n // marginLeft: '250px',\n textAlign: 'left',\n display: 'flex'\n // flexDirection: 'column',\n },\n video: {\n\n },\n download: {\n width: '275px'\n },\n shareHead: {\n backgroundColor: theme.palette.primary.main,\n padding: '10px',\n '& > p': {\n fontSize: '20px',\n fontWeight: 'bold',\n color: theme.palette.common.white,\n textAlign: 'center',\n margin: '16px 25px 16px 25px'\n }\n },\n shareBody: {\n padding: '10px',\n textAlign: 'center',\n '& > p': {\n fontSize: '14px',\n fontWeight: 'normal',\n textAlign: 'center',\n padding: '0px 10px',\n margin: '0'\n },\n '& > a': {\n display: 'block',\n fontSize: '12px',\n padding: '5px 0px 5px 0px'\n }\n\n },\n downloadCard: {\n margin: '15px 0px 25px 15px'\n },\n quotes: {\n marginTop: '15px',\n textAlign: 'center',\n '& > h6': {\n fontSize: '32px'\n }\n }\n}));\n\n\nconst Demo = () => {\n const classes = useStyles();\n\n return (\n
    \n \n
    \n \n Ready to see the Evidence Compendium?\n \n

    \n Watch the brief demo below\n

    \n

    \n More features coming soon. Stay tuned!\n

    \n
    \n
    \n \n \n
    \n \n
    \n
    \n

    \n Sharing this product with your team?\n

    \n
    \n
    \n

    Tell them all about it with this summary

    \n DOWNLOAD\n \"Demo\n
    \n
    \n
    \n
    \n {/*\n
    \n \n What people are saying\n \n
    \n */}\n
    \n \n );\n};\n\nexport default Demo;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nconst useStyles = makeStyles(({ zIndex }) => ({\n backdrop: {\n zIndex: zIndex.drawer + 1,\n color: \"#fff\",\n },\n}));\n\nconst LoadingIndicator = () => {\n const classes = useStyles();\n return (\n \n \n \n );\n};\n\nexport default LoadingIndicator;\n","import { TextField } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport React, { useEffect, useState } from \"react\";\nimport { IconButton, InputAdornment } from \"@mui/material\";\nimport { Visibility, VisibilityOff } from \"@mui/icons-material\";\n\nconst AppPasswordField = ({ value, newPassword = true, ...props }) => {\n const [field, { error }] = useField(props.name);\n const [showPassword, setShowPassword] = useState(false);\n // hide the password again after a timeout\n useEffect(() => {\n if (showPassword) {\n const ttl = 1000 * 60 * 5; // 5 minutes\n const timeout = setTimeout(() => setShowPassword(false), ttl);\n return () => clearTimeout(timeout);\n }\n }, [showPassword]);\n return (\n \n setShowPassword(!showPassword)}\n >\n {showPassword ? : }\n \n \n )\n }}\n />\n );\n};\n\nexport default AppPasswordField;\n","import readCsrfToken from \"client/utils/readCsrfToken\";\nimport { useCallback, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { actionTypes } from \"client/redux/epics\";\n\nconst headers = {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": readCsrfToken(),\n};\nconst parseJSON = (response) => {\n return response.text().then(function (text) {\n return text ? JSON.parse(text) : {};\n });\n};\nexport const useChangePassword = () => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState();\n if (error) {\n throw new Error(error);\n }\n const cb = useCallback((input) => {\n setLoading(true);\n return fetch(\"/cognito_password\", {\n method: \"PATCH\",\n headers,\n body: JSON.stringify({ user: input }),\n })\n .then((response) => {\n setLoading(false);\n if (response.ok) {\n return parseJSON(response);\n } else {\n setError(\"response failed\");\n }\n })\n .catch((e) => setError(e.message || \"request failed\"));\n }, []);\n return [cb, loading];\n};\n\nexport const useChangeUser = () => {\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n const [error, setError] = useState();\n if (error) {\n throw new Error(error);\n }\n const cb = useCallback((input) => {\n setLoading(true);\n return fetch(\"/api/users/me\", {\n method: \"PATCH\",\n headers,\n body: JSON.stringify({ user: input }),\n })\n .then((response) => {\n setLoading(false);\n if (response.ok) {\n return parseJSON(response).then((data) => {\n if (!data.errors) {\n dispatch({\n type: actionTypes.FETCH_USER_PROFILE_SUCCESS,\n payload: data,\n });\n }\n return data;\n });\n } else {\n setError(\"response failed\");\n }\n })\n .catch((e) => setError(e.message || \"request failed\"));\n }, []);\n return [cb, loading, dispatch];\n};\n","import { Box, Button, Container, Paper, Typography } from \"@mui/material\";\nimport Alert from \"@mui/material/Alert\";\nimport LoadingIndicator from \"client/components/LoadingIndicator\";\nimport { Field, Form, Formik } from \"formik\";\nimport React, { useCallback, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport AppPasswordField from \"../forms/AppPasswordField\";\nimport { useChangePassword } from \"../userHooks\";\nimport AppPage from \".\";\n\nconst initialValues = {\n password: \"\"\n};\n\nconst validate = (values) => {\n const errors = {};\n if (!values.password) {\n errors.password = \"can't be blank\";\n } else if (values.password.length < 6) {\n errors.password = \"must be at least 6 characters long\";\n }\n return errors;\n};\n\nconst ChangePassword = () => {\n const [updatePassword, loading] = useChangePassword();\n const { email } = useSelector((state) => state.userProfile.data);\n const [success, setSuccess] = useState(false);\n\n const handleSubmit = useCallback(\n (values, { setErrors, setSubmitting }) => {\n updatePassword(values).then((data) => {\n setSubmitting(false);\n if (data && data.errors) {\n setErrors(data.errors);\n } else {\n setSuccess(true);\n }\n });\n },\n [updatePassword]\n );\n\n const history = useHistory();\n const goHome = useCallback(() => history.push(\"/\"), [history]);\n\n if (success) {\n return (\n \n \n \n \n Continue\n \n }\n >\n Password Changed\n \n \n \n \n );\n }\n\n return (\n \n \n \n {!email && }\n \n \n \n
    \n \n Change Password\n \n \n Email\n {email}\n \n \n \n \n\n \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default ChangePassword;\n","import { OutlinedTextFieldProps, TextField } from '@mui/material';\nimport { useField } from 'formik';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst AppTextField = ({ value, ...props }) => {\n const [field, { error }] = useField(props.name);\n\n /* eslint-disable react/jsx-props-no-spreading */\n return (\n \n );\n /* eslint-enable react/jsx-props-no-spreading */\n};\nAppTextField.propTypes = {\n name: PropTypes.string.isRequired,\n};\n\nexport default AppTextField;\n","import { Box, Button, Container, Paper, Typography } from \"@mui/material\";\nimport Alert from \"@mui/material/Alert\";\nimport LoadingIndicator from \"client/components/LoadingIndicator\";\nimport { Field, Form, Formik } from \"formik\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport AppPage from \".\";\nimport AppTextField from \"../forms/AppTextField\";\nimport { useChangeUser } from \"../userHooks\";\n\nconst initialValues = {\n email: \"\",\n first_name: \"\",\n last_name: \"\"\n};\n\nconst ChangeAccountInfo = () => {\n const [updateUser, loading] = useChangeUser();\n const profile = useSelector((state) => state.userProfile.data);\n const initialValues = useMemo(() => {\n const { email, first_name, last_name } = profile;\n return { email, first_name, last_name };\n }, [profile]);\n\n const [success, setSuccess] = useState(false);\n\n const handleSubmit = useCallback(\n (values, { setErrors, setSubmitting }) => {\n updateUser(values).then((data) => {\n setSubmitting(false);\n if (data && data.errors) {\n setErrors(data.errors);\n } else {\n setSuccess(true);\n }\n });\n },\n [updateUser]\n );\n\n const history = useHistory();\n const goHome = useCallback(() => history.push(\"/\"), [history]);\n\n if (success) {\n return (\n \n \n \n \n Continue\n \n }\n >\n Changes Changed\n \n \n \n \n );\n }\n\n return (\n \n \n \n {!profile && }\n \n \n \n
    \n \n Update Your Account Info\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default ChangeAccountInfo;\n","const useAccessibilityAudit = () => {\n const runTest = async () => {\n if (process.env.RAILS_ENV === 'test' || process.env.RUN_ACCESSIBILITY_AUDIT !== 'true') return\n\n const [{assertAccessible}, sa11yRules, axe] = await Promise.all([\n import('@sa11y/assert'),\n import('@sa11y/preset-rules'),\n import(\"axe-core\")\n ])\n\n try {\n console.log(\"Running AXE accessibility audit\")\n console.log(\"---------------------------------\")\n const results = await axe.run()\n console.log(\"AXE accessibility results\")\n if (results?.violations?.length) {\n console.error(\"AXE accessibility found violations\")\n console.table(\n results.violations.map(({description, help, impact}) => ({page: location.pathname, description, help, impact}))\n )\n }\n console.log()\n } catch (error) {\n console.error(\"Error while running running AXE accessibility audit\", error)\n }\n\n try {\n console.log(\"Running sa11y accessibility audit\")\n console.log(\"---------------------------------\")\n await assertAccessible(document, sa11yRules, null);\n } catch(error) {\n console.error(\"Error while running running sa11y accessibility audit\", error)\n }\n }\n runTest()\n};\n\nexport default useAccessibilityAudit\n","import { useEffect } from \"react\";\nimport useAccessibilityAudit from \"../hooks/useAccessibilityAudit\"\nimport { useLocation } from \"react-router-dom\";\n\n// Run the accessibility audit of whatever this component wraps (children)\n// Notes:\n// - does not run in development mode unless RUN_ACCESSIBILITY_AUDIT is set\n// - should/does not run in production\nconst AccessibilityChecker = ({children}) => {\n let pathname = \"\"\n try {\n const location = useLocation();\n pathname = location.pathname\n } catch {\n console.warn(\"Cannot determine route/location — AccessibilityChecker probably called outside of React Router context\")\n }\n useEffect(() => useAccessibilityAudit(), [pathname]);\n return children\n}\n\nexport default AccessibilityChecker\n","import { useEffect } from \"react\";\nimport { withRouter } from 'react-router-dom';\nimport { connectToState } from \"../redux/connect-api\";\n\nconst StateInitializer = ({children, actions}) => {\n useEffect(() => {\n actions.initializeAfterLogin?.()\n }, [])\n\n return children;\n};\n\nexport default withRouter(connectToState()(StateInitializer))\n","import React from \"react\";\nimport { Router, Switch, Route, Redirect } from \"react-router-dom\";\nimport { bool } from \"prop-types\";\nimport { createBrowserHistory } from \"history\";\nimport Box from \"@mui/material/Box\";\n\nimport StateProvider from \"./StateProvider\";\nimport I18nProvider from \"./I18nProvider\";\nimport analytics from \"../google-analytics\";\n\n// Layout Component\nimport Header from \"./Header\";\nimport Footer from \"./Footer\";\nimport LandingAlerts from \"./landing/LandingAlerts\";\n\n// Pages\nimport AppLanding from \"./AppPages/AppLanding\";\nimport ComingSoon from \"./AppPages/ComingSoon/\";\nimport DocumentsPage from \"./AppPages/DocumentsPage\";\nimport Landing from \"./landing/Landing\";\nimport Updates from \"./AppPages/Updates\";\nimport VideosPage from \"./AppPages/VideosPage\";\nimport Webinars from \"./AppPages/Webinars\";\n// Tool Related Pages\nimport TabNavigator from \"./TabNavigator\";\nimport Demo from \"./Demo\";\n// User Related Pages\nimport ChangePassword from \"./AppPages/ChangePassword\";\nimport ChangeAccountInfo from \"./AppPages/ChangeAccountInfo\";\n\nimport { tabKeys } from \"../config\";\n\nimport \"../styles/icer-ui.scss\";\nimport ReportSnapshot from \"./AppPages/ReportSnapshot\";\nimport AccessibilityChecker from \"./AccessibilityChecker\";\nimport StateInitializer from \"./StateInitializer\";\n\nconst history = createBrowserHistory();\n\nconst App = ({ isSignedIn, isDeviseView }) => (\n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n {/* catch this, and render nothing -- this is a Rails/Devise user login or reset-password route */}\n \n {!isSignedIn && (\n \n \n \n \n \n \n \n \n )}\n {isSignedIn && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n
    \n