{"version":3,"sources":["components/Icons.js","styles/utils.js","styles/colors.js","components/Link.js","styles/typography.js","components/Modal.js","components/BrowserSupportModal.js","services/firebase.js","providers/FirebaseProvider.js","api/user.js","api/practice.js","hooks/useApiMethod.js","hooks/useCurrentCollections.js","components/PolicyList/PolicyList.constants.js","constants/regex.js","constants/index.js","constants/roles.js","helpers/sortRecords.js","helpers/index.js","services/errorLogging.js","providers/AuthProvider.js","hooks/usePolicies.js","hooks/usePlans.js","providers/AppProvider.js","assets/fonts/arial_light.ttf","assets/fonts/arial_regular.ttf","assets/fonts/arial_bold.ttf","styles/GlobalStyle.js","styles/themes.js","constants/routes.js","propTypes/index.js","assets/images/striped_background@2x.png","styles/constants.js","routes/AuthenticatedRoute.js","routes/UnauthenticatedRoute.js","components/PracticeList/PracticeList.constants.js","components/Input.js","components/TextButton.js","components/List.js","components/PracticeList/SuperUserForm.js","components/PracticeList/SuperUserListRow.js","components/Button.js","components/ConfirmDeleteModal.js","components/LoadingSpinner.js","assets/images/loading.png","hooks/useRowForm.js","components/PracticeList/PracticeListRow.js","components/PracticeList/PracticeForm.js","components/FullWidthWrapper.js","components/PracticeList/index.js","components/UserList/UserList.constants.js","components/UserList/UserListRow.js","components/UserList/UserForm.js","components/UserList/index.js","components/PageHeading.js","styles/breakpoints.js","components/BannerAd.js","components/FooterText.js","components/PageFooterDisclaimerText.js","constants/siteMetadata.js","assets/images/regeneron_logo.svg","components/PageFooter.js","assets/images/libtayo_banner_ad.png","components/PageWrapper.js","pages/Admin.js","components/Select.js","components/PageSubheading.js","components/USAMap.js","components/JumboButton.js","components/ProductIndicator.js","pages/CoverageSelection.js","components/ListFilterMenu.js","components/FilterableListTitleBar.js","components/SortableListTitleColumn.js","components/PolicyList/PolicyListRowMeta.js","api/policy.js","hooks/usePolicySelections.js","components/PolicyList/PolicyListRow.js","components/PolicyList/filterPolicies.js","components/PolicyList/sortPolicies.js","hooks/useTableFilters.js","hooks/useTableSort.js","components/PolicyList/index.js","components/QueryParam.js","pages/CoverageResults.js","pages/Coverage.js","components/StripedBackgroundPageWrapper.js","pages/HomeCallToAction.js","pages/Home.js","pages/Login/LoginForm.components.js","pages/Login/ForgotPasswordForm.js","components/Checkbox.js","pages/Login/LoginForm.js","pages/Login/index.js","pages/NotFound.js","assets/images/libtayo_logo.png","components/PlanFilterContainer/PlanFilterContainer.components.js","components/PlanFilterContainer/getFilteredData.js","components/PlanFilterContainer/IndicationRadio.js","components/PlanFilterContainer/PlanItem.js","components/PlanFilterContainer/index.js","pages/Policy.js","pages/PriorAuth.js","pages/Resources.js","pages/UserGuide.js","components/PathwaySelect.js","pages/PathwayStatusSelection.js","components/PathwayStatusList/constants.js","components/PathwayStatusList/PathwayStatusListRow.js","components/PathwayStatusList/index.js","components/PathwayStatusList/helpers.js","hooks/usePathwayStatuses.js","pages/PathwayStatusResults.js","pages/PathwayStatus.js","routes/index.js","components/AppHeader/AppHeader.components.js","components/AppHeader/AssistanceLink.js","components/Tooltip.js","components/AppHeader/SettingsTooltip.js","components/AppHeader/PrescribingInformation.js","components/AppHeader/index.js","assets/images/LibtayoLogo.png","components/AppFooter.js","constants/footerContent.js","components/ErrorModal.js","components/LoadingOverlay.js","components/Layout.js","App.js","reportWebVitals.js","index.js"],"names":["ChevronUp","xmlns","width","height","viewBox","id","transform","data-name","d","fill","stroke","strokeWidth","Filters","MagnifierLight","StarFilled","color","StarOutlined","ToggleOff","opacity","rx","x","y","ToggleOn","RadioFilled","cx","cy","r","RadioOutlined","InternetExplorerLogo","User","Cog","EmailSupport","globalTransition","props","map","prop","join","calcViewArea","subtractions","subtractString","s","darkBlue","blankWhite","yellowGreen","pink","fadedBlue","lightYellow","lighten","greyscale","white","black","linkStyles","css","disabled","theme","foreground","activeColor","colors","accent","Link","styled","a","regular","bold","h1","h2","h3","h4","h5","h6","body","caption","span","ReactModal","setAppElement","modalStyles","content","top","left","right","bottom","marginRight","maxWidth","minWidth","borderRadius","border","overlay","background","zIndex","TopIconRow","div","CloseIconWrapper","typography","Modal","children","className","onRequestClose","showCloseIcon","style","mergedStyles","portalClassName","onClick","ContentWrapper","LogoWrapper","size","Heading","BrowserSupportModal","useState","isOpen","setIsOpen","BrowserSupportModalWrapper","isIE","config","apiKey","process","authDomain","projectId","appId","storageBucket","Firebase","firebase","initializeApp","this","auth","firestore","functions","storage","analytics","DEFAULT_STATE","FirebaseContext","React","createContext","useFirebaseContext","useContext","FirebaseProvider","Provider","value","useUserApi","GetExtendedUser","userId","collection","doc","get","userDoc","data","CreateUser","role","user","practiceId","userObj","email","displayName","password","createUser","httpsCallable","sendPasswordResetEmail","errorInfo","err","Error","message","code","GetUsersFromIds","userIds","userDataRequests","Promise","all","userDataResults","userData","index","GetUsersFromPractice","getUsers","practiceUserData","users","console","log","EditUser","editUser","then","result","uid","set","merge","DeleteUser","deleteUser","delete","getPractice","rawPracticeData","practiceData","newUsers","filter","ListenToUserUpdates","onChange","onSnapshot","usePracticeApi","CreatePractice","practice","rbmId","allPoliciesVisible","policies","practiceDetails","address1","address2","city","usState","zip","phone","rbm","GetPracticeById","GetPractices","orderBy","getPractices","allPlans","docs","EditPractice","ListenToPracticeUpdates","ListenToPracticeUserUpdates","u","RemovePractice","forEach","SetAllPoliciesVisibilityForPractice","useApiMethod","apiMethod","called","setCalled","setData","loading","setLoading","error","setError","useCallback","reset","useCurrentCollections","getCurrentCollectionName","type","ref","currentCollectionName","getCurrentPlansCollectionName","getCurrentPoliciesCollectionName","FIELDS","columnWidth","label","zipCode","ALPHABET","split","INDICATION_IDS","ADVANCED_NSCLC_CHEMOTHERAPY","ADVANCED_NSCLC_MONOTHERAPY","ADVANCED_BCC","ADVANCED_CSCC","INDICATION_IDS_POLICY_DOWNLOADS","INDICATION_LABELS","INDICATION_OPTIONS","Object","keys","key","INDICATION_OPTIONS_POLICY_DOWNLOADS","PATHWAY_STATUS_INDICATION_IDS","DISABLED_PATHWAY_STATUS_INDICATION_IDS","PATHWAY_STATUS_INDICATION_OPTIONS","PATHWAY_STATUS_POSITION_NOT_REVIEWED","LIBTAYO_ID","MEDICATION_OPTIONS","expandedLabel","indications","fields","CHANNEL_OPTIONS","STATE_AND_TERRITORY_OPTIONS","values","StateData","name","abbreviation","concat","sort","b","localeCompare","PRESCRIBING_INFORMATION","GENERAL_USER","RBM","SUPER_USER","ROLE_TEXT","sortRecords","records","sortBy","order","sortedRecords","nullCompare","reverse","getProductById","productId","option","find","getChannelLabelById","channelId","getPathwayStatusIndicationLabelById","indicationId","getIndicationLabelById","decoratePolicyWithIndication","policy","i","getIndication","getCoverageTitle","addToStateArray","setter","arr","val","removeFromStateArray","toggleStateArray","includes","getUsStateFullNameFromAbbreviation","stateAbbreviation","createStateArrayUtils","add","toggle","remove","sortObjectsExcludingUndefined","items","sortProp","sortFn","itemsWithDefinedProp","itemsWithUndefinedProp","sortedItems","trimSearchInput","stripPunctuation","res","replace","trim","logToSentry","extra","section","tags","Sentry","clearAuthError","refetchUser","signIn","staySignedIn","signOut","AuthContext","useAuthContext","AuthProvider","currentUser","authUser","setAuthUser","setUser","getPersistence","Auth","Persistence","LOCAL","SESSION","useEffect","removeListener","onAuthStateChanged","extendedUser","fullUser","_delegate","mappedUser","policiesShownOnHomepage","setPersistence","signInWithEmailAndPassword","username","payload","usePolicies","setPolicies","currentPoliciesCollectionName","policiesDoc","allPolicies","sortedPolicies","lives","warn","fetchPolicies","groupPlansByMedicalGroup","plans","medicalGroupsMap","reduce","acc","plan","medicalGroupId","medicalGroupName","formularyId","usePlans","setPlans","fetchPlans","currentPlansCollectionName","plansDoc","groupedPlans","firstTimeExperience","globalError","isInitializing","isLoading","favorites","visible","refetchPractice","setFavoritePolicies","setFirstTimeExperience","isFte","setGlobalError","setIsInitializing","setIsLoading","setVisiblePolicies","AppContext","useAppContext","getFullPolicy","policyObj","p","AppProvider","isLoadingAuth","fetchPractice","isLoadingPractice","resetPractice","visiblePolicies","favoritePolicies","fetchPlansOnce","length","every","Boolean","fullVisiblePolicies","fullFavePolicies","q","some","GlobalStyle","createGlobalStyle","arialLight","arialRegular","arialBold","text","commonTheme","highlight","lightTheme","input","inputBorder","placeholder","tableRow","darkTheme","routes","home","login","findCoverage","findPolicy","findPriorAuth","userGuide","resources","admin","pathwayStatus","policyIndicationPropType","PropTypes","oneOfType","arrayOf","node","isRequired","shape","stepCategory","string","stepStatement","duration","reauthorizationRequired","indicationPropType","coverageStatus","number","address","state","payerParticipant","pathway","appGutters","boxShadowStandard","headerHeight","footerHeight","pageHorizontalPadding","backgroundStyles","stripedBackgroundStyles","stripedBackgroundImage","ProductText","BlankWhitePage","AuthenticatedRoute","roles","rest","render","to","defaultProps","userRoles","UnauthenticatedRoute","redirectTo","tableLeftSpacing","columnWidths","editButtons","expandButton","userColumnWidths","passwordReset","EMPTY_PRACTICE","EMPTY_USER","InputWrapper","StyledInput","IconRight","Input","dark","iconRight","inputProps","TextButton","LIST_PADDING_X","ListTextButton","ListTitleBar","backgroundColor","padding","ListTitleHeader","IconColumn","DataColumn","justify","TitleColumn","ListRow","ListHeaderRow","SortIcon","ListBodyRow","transitions","ListBodyRowContent","stripUnit","List","IconWrapper","SubListRow","SuperUserForm","initialValue","isSaving","onCancel","onSave","isFormValid","setIsFormValid","setUserField","fieldName","event","target","regex","test","renderInput","BoldColumn","SendEmailButton","SuperUserListRow","onEditUser","onRemoveUser","StyledButton","button","SubHeading","Button","StyledLink","ConfirmDeleteModal","onContinue","deleteTargetName","spinAnimation","keyframes","SpinnerContainer","sizeUtil","LoadingSpinner","NEW_ROW_ID","useRowForm","apiMethods","idProp","isVisible","mapFetchedData","onCreateSuccess","editModeRows","setEditModeRows","pendingChanges","setPendingChanges","deleteConfirmation","setDeleteConfirmation","editModeRowsUtils","pendingChangesUtils","subscribe","unsubscribe","read","clearDeleteConfirmation","activateEditMode","item","deactivateEditMode","handleCreate","create","handleUpdate","update","handleDelete","showDeleteConfirmation","RowContent","PracticeListBodyRow","isExpanded","PracticeListTextButton","PracticeUserList","showNewRow","userCount","document","clientWidth","heightPerItem","SubListHeader","PracticeListRow","onCollapse","onEditPractice","onExpand","onRemovePractice","newUser","setShowNewRow","onSuccess","handleCreateUser","handleDeleteUser","handleUpdateUser","superUsers","useMemo","STATE_ABBREVIATIONS","StyledRow","inputMarginOffset","PracticeForm","setPractice","setPracticeField","toUpperCase","maxLength","FullWidthWrapper","StyledTitleBar","PracticeList","onCloseNewRow","practices","expandedRow","setExpandedRow","UserListRow","UserList","generalUsers","UserForm","PageHeading","fullWidth","device","mobileS","mobileM","mobileL","tablet","laptop","laptopL","desktop","desktopL","BannerWrapper","important","margin","TextWrapper","BannerAd","imgSrc","href","alt","jobNumber","rel","src","FooterText","LargerBoldFooterText","BoldText","LineBreak","PageFooterDisclaimer","isISI","Fragment","siteMetadata","title","lastUpdated","showBanners","isiMetadata","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","fillRule","SvgRegeneronLogo","_ref","svgRef","titleId","ForwardRef","FOOTER_LINKS","FooterMetadata","FooterLink","attrs","PrivacyPreferenceCenter","RegeneronLogo","LogoSvg","PageFooterWrapper","PageFooter","inverted","path","useRouteMatch","PageFooterDisclaimerText","Date","getFullYear","querySelector","click","StyledPageFooter","PageWrapper","BannerTop","viewArea","StyledPageWrapper","HeadingRow","HeadingRowSpacer","HeadingRowCenterContent","MainHeadingText","SubHeadingText","PolicyVisibilityToggleWrapper","ToggleIconWrapper","ListControlRow","ListControlRowItem","align","Strong","roleText","heading","newButton","AdminPage","setAllPolicyVisibility","visibilityToggleLoading","pageText","ToggleIcon","Icons","handleToggleAllPolicyVisibility","selectStyles","control","provided","isFocused","hasValue","isDisabled","selectProps","isPi","cursor","borderColor","fontFamily","fontWeight","boxShadow","transition","singleValue","indicatorSeparator","display","dropdownIndicator","fontSize","menu","borderTop","container","DropdownIndicator","Select","options","valueProp","isOptionDisabled","styles","internalValue","o","components","isClearable","isSearchable","undefined","PageSubheading","StyledContainer","USAMap","onClickState","customConfig","customize","dataset","JumboButton","ProductIndicator","SelectsContainer","SelectContainer","FlexWrapBreak","ContinueButton","CoverageSelection","history","useHistory","product","setUSState","channel","setChannel","indication","setIndication","isIndicationSelectionDisabled","isUSStateSelectionDisabled","isContinueButtonDisabled","visibility","params","push","qs","stringify","GoButton","FieldsPane","SearchPane","form","FiltersIcon","FieldLabel","selected","PolicyFilterMenu","activeFilters","onClose","onSetFilter","activeField","setActiveField","filterInputValue","setFilterInputValue","handleSetFilter","e","preventDefault","handleChangeInput","stopPropagation","onSubmit","autoFocus","field","selectField","ProductWrapper","FilterControlsWrapper","ClearFiltersButton","active","FilterableListTitleBar","indicatorColor","isListFiltered","filterFields","filters","onClearFilters","isFilterMenuOpen","setIsFilterMenuOpen","ListFilterMenu","onClearFilter","Wrapper","SortableListTitleColumn","MetaColumn","MetaList","dl","MetaLabel","dt","MetaValue","dd","PolicyListRowMeta","showVisibleToPractice","states","hydraApi","axios","baseURL","mapPolicyIds","mapDocumentLinksToRequests","documentData","authToken","docNames","DocumentName","requests","DocumentId","responseType","usePolicyApi","fetchPolicyLinks","selections","productName","getIdToken","queryString","mappedResults","selection","match","parseInt","downloadPolicyDocuments","responses","FileDownload","updateFavoritePolicies","mappedPolicies","updateVisiblePolicies","isPolicyEqual","isPolicyInCollection","addPolicyToCollection","updateFn","removePolicyFromCollection","createCollectionApi","usePolicySelections","favoritesApi","visibleApi","toggleFavoritePolicy","toggleVisiblePolicy","getIsPending","policyId","findPolicyWithIndication","PolicyRowIcon","icon","PolicyListRow","showMeta","search","useLocation","parse","makeHandleClickIcon","callback","isFavorite","isVisibleToPractice","filterPoliciesByProductId","sortPolicies","useTableFilters","allowMultipleFilters","setFilters","clearAllFilters","clearFilterForField","setFilterForField","filterVal","useTableSort","setSortBy","setOrder","getSortForField","setSort","ProductTitle","PolicyList","noResultsText","titleBarBackgroundColor","filteredPolicies","toLowerCase","filterPolicies","isTableFiltered","renderHeaderCell","renderTableForProduct","QueryParams","QueryParamLabel","QueryParamValue","QueryParam","StyledPageHeading","PageHeadingSeparator","PageHeadingWithLink","ViewAllPlansLink","TableControlsRow","SourceText","CoverageResults","setFilteredPolicies","mapped","filtered","filterFn","Coverage","exact","component","StripedBackgroundPageWrapper","HomeCallToActionWrapper","HomeCallToAction","onClickButton","buttonLabel","Subheading","ViewPlansLink","Home","viewAllPlans","setViewAllPlans","ErrorText","LoginBox","LoginLabel","LoginInput","ForgotLink","HelpLink","LoginButton","Subheader","CloseIcon","ForgotPasswordForm","setEmail","submitted","setSubmitted","resetEmailSent","setResetEmailSent","isEmailValid","emailRegex","handleSubmit","showEmailError","labelPositions","Label","CheckboxStyled","labelPosition","Checkbox","labelComponent","CheckboxLabel","LoginForm","setPassword","rememberUser","setRememberUser","updateField","LoginWrapper","WelcomeBox","Login","NotFoundWrapper","ImageWrapper","Logo","img","Header","NotFound","StyledWrapper","JumboBox","innerGutter","SelectionContainer","ProductContainer","SectionLabel","ProductSelectSectionLabel","IndicationBox","RadioSet","FilterControls","rgba","LetterFilter","enabled","LetterFilterSet","SearchBox","AllResultsContainer","SelectedResultsContainer","ResultsWrapper","SubmitButton","ResultLink","ResultLinksContainer","getFilteredData","letterFilter","textFilter","filteredData","IndicationRadioWrapper","IndicationRadio","ResultItemWrapper","SelectControl","ResultItem","onSelect","controlText","getControlText","DownloadButton","PlanFilterContainer","pageLabel","setLetterFilter","setTextFilter","setSelections","pendingDownloads","setPendingDownloads","pendingDownloadsUtils","getIsLetterFilterEnabled","letter","slice","getIsItemSelected","toggleSelection","handleSubmitSelection","selectedIndication","decoratedSelections","filteredSelections","sel","isPolicy","isForm","handleFileDownload","docData","handleDownloadButtonText","toggleLetterFilter","PlanItem","textColor","Policy","PriorAuth","TextHeading","ColoredBoldText","SubScript","EndSubScript","Text","LinkBold","Resources","GUIDE_FILE","BodyText","UserGuide","url","setUrl","child","getDownloadURL","download","pathwayIndicationSelectStyles","PathwaySelect","setUsState","isUsStateSelectionDisabled","PathwayStatusSelection","isSelectionComplete","DATA_COLUMN_MARGIN_LEFT","PathwayStatusDataColumn","PathwayStatusListRow","PathwayStatusSortableListTitleColumn","PathwayStatusList","pathwayStatuses","filteredPathwayStatuses","filterPathwayStatusesByUserFilters","isPathwayStatusVisibleForUsState","chemotherapy","position","monotherapy","isPathwayStatusVisibleForIndication","hasResults","isFiltered","usePathwayStatuses","setPathwayStatuses","pathwayStatusSourceDate","setPathwayStatusSourceDate","fetchPathwayStatuses","snapshot","fetchPathwayStatusSourceDate","dateUpdated","PathwayStatusPageHeading","PathwayStatusResults","dateString","ignoreQueryPrefix","month","year","PathwayStatus","Routes","rootRedirect","AppHeaderWrapper","ToolbarsWrapper","UsernameWrapper","UserBar","PrescribingInformationContainer","NavBar","nav","NavLink","IconLink","SignOutLink","AssistanceLink","TooltipWrapper","POSITIONS_X","POSITIONS_Y","Tooltip","anchorEl","offset","tooltipRef","useRef","absolutePosition","offsetLeft","offsetTop","clientHeight","calculatePosition","current","Body","SettingsTooltip","emailString","PiText","PiLink","PrescribingInformation","AppHeader","settingsIconRef","isTooltipOpen","setIsTooltipOpen","setSuperUsers","allUsers","filteredUsers","fetchSuperUsers","handleLogOut","PRESCRIBING_INFO_LINK_LIBTAYO","AppFooterWrapper","sticky","BigChevron","FooterColumns","FooterColumn","StyledMarkdown","Markdown","PrescribingInfo","AppFooter","forwardRef","onToggleExpanded","propTypes","bool","func","ErrorModal","Overlay","LoadingOverlay","ScrollArea","AppGutter","AppWrapper","AppContentArea","Layout","scrollAreaRef","footerRef","showStickyFooter","setShowStickyFooter","prevEntry","setPrevEntry","scrollReturnPoint","setScrollReturnPoint","useInView","threshold","inViewRef","internalFooterVisible","entry","showIsi","location","pathname","listen","scrollTo","intersectionRatio","isScrollingDown","setFooterRefs","handleToggleFooter","scrollTop","scrollIntoView","behavior","App","async","dangerouslySetInnerHTML","__html","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","dsn","REACT_APP_NPPW_SENTRY_DSN","integrations","tracePropagationTargets","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","environment","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.6e176661.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\n\nexport const ChevronUp = (\n \n \n \n \n \n);\nexport const Filters = (\n \n \n \n \n \n \n);\nexport const MagnifierLight = (\n \n \n \n);\nexport const StarFilled = ({ color = '#ffd100' }) => (\n \n \n \n \n \n);\nStarFilled.propTypes = {\n color: PropTypes.string,\n};\nexport const StarOutlined = (\n \n \n \n \n \n);\n\nexport const ToggleOff = (\n \n \n \n \n \n \n \n);\nexport const ToggleOn = (\n \n \n \n \n \n \n \n);\n\nexport const RadioFilled = (\n \n \n \n \n \n \n \n);\nexport const RadioOutlined = (\n \n \n \n \n \n \n);\nexport const XCircled = (\n \n \n \n \n \n \n \n \n);\n\nexport const InternetExplorerLogo = (\n \n \n \n);\n\nexport const User = (\n \n \n \n \n \n);\n\nexport const Cog = (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const EmailSupport = (\n \n \n \n);\n","export const globalTransition = (...props) =>\n props.map((prop) => `${prop} 200ms ease`).join(', ');\n\n/**\n * Calculates the height of the view area in the application by\n * subtracting pixel values from the full view height of the window\n * @param {...string} subtractions pixel strings for amounts to subtract from the view height\n */\nexport const calcViewArea = (...subtractions) => {\n const subtractString = subtractions.map((s) => ` - ${s}`).join('');\n return `calc(100vh${subtractString})`;\n};\n","import { lighten } from 'polished';\n\n// core colors\nexport const teal = '#60cdcb';\nexport const lightBlue = '#ADDFED';\nexport const darkBlue = '#004F6F';\nexport const blankWhite = '#FFFFFF';\nexport const yellow = '#ffd100';\nexport const red = '#ee1111';\nexport const green = '#2DA870';\nexport const yellowGreen = '#969B1E';\nexport const pink = '#DC0077';\n\n// color variants\nexport const fadedBlue = '#296283';\nexport const blueGrey = '#85a6b9';\nexport const darkerBlue = '#003454';\nexport const lightYellow = lighten(0.2, yellow);\n\nexport const greyscale = {\n 50: '#fafafa',\n 100: '#f0f0f0',\n 200: '#d9d9d9',\n 300: '#c3c3c3',\n 400: '#a8a8a8',\n 500: '#858585',\n 600: '#707070',\n 900: '#212121',\n};\nexport const white = greyscale[50];\nexport const black = greyscale[900];\n","import styled, { css } from 'styled-components';\n\nimport { globalTransition } from '../styles/utils';\nimport * as colors from '../styles/colors';\n\n// export separately so we can easily style Link elements\n// from react-router library\nexport const linkStyles = css`\n color: ${({ disabled, theme }) =>\n disabled ? theme.disabled : theme.foreground};\n cursor: ${(props) => (props.disabled ? 'auto' : 'pointer')};\n transition: ${globalTransition('color')};\n & svg * {\n fill: ${({ theme }) => theme.foreground};\n transition: ${globalTransition('fill')};\n }\n &:hover,\n &:active,\n &.active {\n color: ${({ activeColor, disabled, theme }) =>\n disabled ? theme.disabled : activeColor || colors.pink};\n & svg * {\n fill: ${({ activeColor, disabled, theme }) =>\n disabled ? theme.disabled : activeColor || theme.accent};\n }\n }\n`;\n\nconst Link = styled.a`\n ${linkStyles};\n`;\n\nexport default Link;\n","import styled, { css } from 'styled-components';\n\nexport const light = css`\n font-family: 'Arial';\n`;\nexport const regular = css`\n font-family: 'Arial Regular';\n`;\nexport const bold = css`\n font-family: 'Arial Bold';\n`;\n\n// 1rem = 16pt; see index.css\n\n// 28pt default\n// avenir bold\nexport const h1 = css`\n font-size: 1.75rem;\n`;\n\n// 24pt default\n// avenir bold\nexport const h2 = css`\n font-size: 1.5rem;\n`;\n\n// 22pt default\n// avenir medium\nexport const h3 = css`\n font-size: 1.375rem;\n`;\n\nexport const h4 = css`\n font-size: 1.25rem;\n`;\nexport const h5 = css`\n font-size: 1.125rem;\n`;\nexport const h6 = css`\n font-size: 1rem;\n`;\n\n// 12pt default\n// avenir regular\nexport const body = css`\n font-size: 0.75rem;\n`;\n\nexport const caption = css`\n font-size: 0.625rem;\n`;\nexport const legal = css`\n font-size: 0.55rem;\n`;\n\nexport const IsiHeaderLarge = styled.span`\n font-size: 32px;\n`;\nexport const IsiHeaderMedium = styled.span`\n font-size: 28px;\n`;\nexport const IsiHeaderSmall = styled.span`\n font-size: 24px;\n`;\n","import PropTypes from 'prop-types';\nimport ReactModal from 'react-modal';\nimport styled from 'styled-components';\n\nimport { linkStyles } from './Link';\nimport * as colors from '../styles/colors';\nimport * as typography from '../styles/typography';\n\nReactModal.setAppElement('#root');\n\nconst modalStyles = {\n content: {\n // general orientation / layout\n top: '50%',\n left: '50%',\n right: 'auto',\n bottom: 'auto',\n marginRight: '-50%',\n // adjust these based on breakpoints later for tablet/mobile\n maxWidth: '40%',\n minWidth: '40%',\n transform: 'translate(-50%, -50%)',\n // actual styling\n borderRadius: '12px',\n border: `4px solid ${colors.greyscale[100]}`,\n },\n overlay: {\n background: 'rgba(0, 0, 0, 0.7)',\n zIndex: 1000,\n },\n};\n\nconst TopIconRow = styled.div`\n display: flex;\n justify-content: flex-end;\n`;\nconst CloseIconWrapper = styled.div`\n ${linkStyles};\n ${typography.bold};\n // don't use rem since this is an icon, not text\n font-size: 20px;\n cursor: pointer;\n`;\n\n// we need to pass the className as portalClassName\n// to style this component using styled-components\n/**\n * Styled wrapper for the react-modal component.\n * @param {Props} props\n */\nconst Modal = ({\n children,\n className,\n onRequestClose,\n showCloseIcon,\n style,\n ...props\n}) => {\n const mergedStyles = {\n ...modalStyles,\n content: {\n ...modalStyles.content,\n ...style,\n },\n };\n\n return (\n \n {showCloseIcon && (\n \n X\n \n )}\n {children}\n \n );\n};\n\nModal.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n closeIcon: PropTypes.node,\n onRequestClose: PropTypes.func,\n showCloseIcon: PropTypes.bool,\n style: PropTypes.object,\n};\n\nexport default Modal;\n","import { size } from 'polished';\nimport React, { useState } from 'react';\nimport { isIE } from 'react-device-detect';\nimport styled from 'styled-components';\n\nimport { InternetExplorerLogo } from './Icons';\nimport Modal from './Modal';\nimport * as typography from '../styles/typography';\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\nconst LogoWrapper = styled.div`\n & > svg {\n ${size(96)}\n }\n`;\nconst Heading = styled.h2`\n ${typography.bold};\n color: ${({ theme }) => theme.foreground};\n`;\n\nconst BrowserSupportModal = () => {\n const [isOpen, setIsOpen] = useState(true);\n\n return (\n setIsOpen(false)}\n showCloseIcon\n >\n \n {InternetExplorerLogo}\n Internet Explorer is not supported.\n

Please use another browser for optimal user experience.

\n
\n \n );\n};\n\n// this is separate so that we never even have to run the\n// useState hook from the actual modal if they're not using IE\nconst BrowserSupportModalWrapper = () => {\n if (!isIE) return null;\n return ;\n};\n\nexport default BrowserSupportModalWrapper;\n","import firebase from 'firebase/compat/app';\nimport 'firebase/compat/firestore';\nimport 'firebase/compat/auth';\nimport 'firebase/compat/functions';\nimport 'firebase/compat/storage';\nimport 'firebase/compat/analytics';\n\nconst config = {\n apiKey: process.env.REACT_APP_NPPW_FIREBASE_API_KEY,\n authDomain: process.env.REACT_APP_NPPW_FIREBASE_AUTH_DOMAIN,\n projectId: process.env.REACT_APP_NPPW_FIREBASE_PROJECT_ID,\n appId: process.env.REACT_APP_NPPW_FIREBASE_APP_ID,\n storageBucket: process.env.REACT_APP_NPPW_FIREBASE_STORAGE_BUCKET,\n};\n\nclass Fire {\n constructor() {\n firebase.initializeApp(config);\n this.auth = firebase.auth;\n this.firestore = firebase.firestore();\n this.functions = firebase.functions();\n this.storage = firebase.storage();\n this.analytics = firebase.analytics();\n }\n}\n\nconst Firebase = new Fire();\n\nexport default Firebase;\n","import PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\n\nimport Firebase from '../services/firebase';\n\nconst DEFAULT_STATE = { ...Firebase };\n\nexport const FirebaseContext = React.createContext(DEFAULT_STATE);\n\nexport const useFirebaseContext = () => useContext(FirebaseContext);\n\nconst FirebaseProvider = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nFirebaseProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport default FirebaseProvider;\n","import { useFirebaseContext } from '../providers/FirebaseProvider';\n\nexport const useUserApi = () => {\n const firebase = useFirebaseContext();\n\n const GetExtendedUser = async (userId) => {\n const userDoc = await firebase.firestore\n .collection('users')\n .doc(userId)\n .get();\n return userDoc.data();\n };\n\n const CreateUser = async (role, user, practiceId) => {\n const defaultPassword = 'Password1';\n const userObj = {\n email: user.email,\n displayName: user.displayName,\n password: defaultPassword,\n role,\n practiceId,\n };\n\n const createUser = firebase.functions.httpsCallable(\n 'createCallableUserInAuth'\n );\n\n const { data } = await createUser(userObj);\n // comes back with string if successful, error object if not\n if (typeof data === 'string') {\n await firebase.auth().sendPasswordResetEmail(user.email);\n } else if (data.errorInfo) {\n const err = new Error(data.errorInfo.message);\n err.code = data.errorInfo.code;\n throw err;\n }\n };\n\n const GetUsersFromIds = async (userIds) => {\n const userDataRequests = userIds.map((id) => {\n return firebase.firestore.collection('users').doc(id).get();\n });\n const userDataResults = await Promise.all(userDataRequests);\n const userData = userDataResults.map((data, index) => {\n return {\n ...data.data(),\n id: userIds[index],\n };\n });\n return userData;\n };\n\n const GetUsersFromPractice = async (practiceId) => {\n try {\n const getUsers = await firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .get();\n const practiceUserData = getUsers.data();\n if (practiceUserData?.users) {\n const userIds = practiceUserData.users.map((user) => user.userId);\n const userData = await GetUsersFromIds(userIds);\n return userData;\n } else {\n return [];\n }\n } catch (error) {\n console.log(error);\n }\n };\n const EditUser = async (user) => {\n try {\n const userObj = {\n email: user.email,\n displayName: user.displayName,\n userId: user.id,\n };\n const editUser = firebase.functions.httpsCallable('editUserInAuth');\n await editUser(userObj)\n .then((result) => result.data)\n .then(({ displayName, email, uid }) =>\n firebase.firestore.collection('users').doc(uid).set(\n {\n email,\n displayName,\n },\n { merge: true }\n )\n );\n } catch (error) {\n console.log(error);\n }\n };\n\n const DeleteUser = async (userId, practiceId) => {\n try {\n const deleteUser = firebase.functions.httpsCallable('deleteUserInAuth');\n return await deleteUser(userId)\n .then(() => {\n return firebase.firestore.collection('users').doc(userId).delete();\n })\n .then(async () => {\n const getPractice = firebase.firestore\n .collection('practices')\n .doc(practiceId);\n const rawPracticeData = await getPractice.get();\n const practiceData = rawPracticeData.data();\n const newUsers = practiceData.users\n ? practiceData.users.filter((user) => user.userId !== userId)\n : [];\n return firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .set(\n {\n users: [...newUsers],\n },\n { merge: true }\n );\n });\n } catch (error) {\n console.log(error);\n }\n };\n const ListenToUserUpdates = (userId, onChange) => {\n const unsubscribe = firebase.firestore\n .collection('users')\n .doc(userId)\n .onSnapshot((doc) => {\n const data = doc.data();\n onChange(data);\n });\n return unsubscribe;\n };\n return {\n CreateUser,\n EditUser,\n DeleteUser,\n GetExtendedUser,\n GetUsersFromIds,\n GetUsersFromPractice,\n ListenToUserUpdates,\n };\n};\n","import { useFirebaseContext } from '../providers/FirebaseProvider';\nimport { useUserApi } from './user';\n\nexport const usePracticeApi = () => {\n const firebase = useFirebaseContext();\n const { GetUsersFromIds, GetUsersFromPractice } = useUserApi();\n\n const CreatePractice = async (practice, rbmId) => {\n try {\n await firebase.firestore\n .collection('practices')\n .doc()\n .set(\n {\n allPoliciesVisible: true,\n policies: [],\n practiceDetails: {\n displayName: practice.displayName,\n address1: practice.address1,\n address2: practice.address2,\n city: practice.city,\n usState: practice.usState,\n zip: practice.zip,\n phone: practice.phone,\n },\n rbm: rbmId,\n },\n { merge: true },\n );\n } catch (error) {\n console.log(error);\n }\n };\n\n const GetPracticeById = async (practiceId) => {\n const doc = await firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .get();\n const practice = doc.data();\n practice.id = practiceId;\n if (practice.rbm) {\n const rbm = await firebase.firestore\n .collection('users')\n .doc(practice?.rbm)\n .get();\n const { displayName, email } = rbm.data();\n practice.rbm = {\n displayName,\n email,\n id: practice.rbm,\n };\n }\n return practice;\n };\n\n const GetPractices = async () => {\n try {\n const getPractices = await firebase.firestore\n .collection('practices')\n .orderBy('practiceDetails.displayName')\n .get();\n const allPlans = getPractices.docs.map((d) => {\n return { ...d.data(), id: d.id };\n });\n return allPlans;\n } catch (error) {\n console.log(error);\n }\n };\n\n const EditPractice = async (practice) => {\n try {\n await firebase.firestore\n .collection('practices')\n .doc(practice.id)\n .set(\n {\n practiceDetails: {\n displayName: practice.displayName,\n address1: practice.address1,\n address2: practice.address2,\n city: practice.city,\n usState: practice.usState,\n zip: practice.zip,\n phone: practice.phone,\n },\n },\n { merge: true },\n );\n } catch (error) {\n console.log(error);\n }\n };\n\n const RemovePractice = async (practiceId) => {\n try {\n const usersFromPractice = await GetUsersFromPractice(practiceId);\n usersFromPractice.forEach(async (user) => {\n const deleteUser = firebase.functions.httpsCallable('deleteUserInAuth');\n await deleteUser(user.id).then(() => {\n return firebase.firestore.collection('users').doc(user.id).delete();\n });\n });\n return firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .delete();\n } catch (error) {\n console.log(error);\n }\n };\n\n const SetAllPoliciesVisibilityForPractice = async (\n practiceId,\n allPoliciesVisible,\n ) => {\n try {\n await firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .set({ allPoliciesVisible }, { merge: true });\n } catch (error) {\n throw error;\n }\n };\n\n const ListenToPracticeUpdates = (practiceId, onChange) => {\n const unsubscribe = firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .onSnapshot((doc) => {\n const data = doc.data();\n onChange(data);\n });\n return unsubscribe;\n };\n\n const ListenToPracticeUserUpdates = (practiceId, onChange) => {\n const unsubscribe = firebase.firestore\n .collection('practices')\n .doc(practiceId)\n .onSnapshot(async (doc) => {\n const data = doc.data();\n const userIds = data?.users?.map((u) => u.userId) ?? [];\n const users = await GetUsersFromIds(userIds);\n onChange(users);\n });\n return unsubscribe;\n };\n\n return {\n CreatePractice,\n GetPracticeById,\n GetPractices,\n EditPractice,\n ListenToPracticeUpdates,\n ListenToPracticeUserUpdates,\n RemovePractice,\n SetAllPoliciesVisibilityForPractice,\n };\n};\n","import { useCallback, useState } from 'react';\n\n// this is heavily inspired by the setup of\n// Apollo GraphQL's `useLazyQuery` hook\nconst useApiMethod = (apiMethod) => {\n const [called, setCalled] = useState(false);\n const [data, setData] = useState(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const handler = useCallback(\n async (...args) => {\n if (loading) return;\n try {\n setCalled(true);\n setLoading(true);\n const result = await apiMethod(...args);\n if (result) setData(result);\n setError(null);\n } catch (err) {\n setError(err);\n } finally {\n setLoading(false);\n }\n },\n [apiMethod, loading]\n );\n\n const reset = () => {\n setCalled(false);\n setData(null);\n setError(null);\n setLoading(false);\n };\n\n return {\n apiMethod: handler,\n called,\n data,\n error,\n loading,\n reset,\n };\n};\n\nexport default useApiMethod;\n","import { useFirebaseContext } from '../providers/FirebaseProvider';\n\nconst CURRENT_COLLECTIONS_COLLECTION_NAME = 'currentCollections';\nconst CURRENT_COLLECTIONS_PLANS_KEY = 'plans';\nconst CURRENT_COLLECTIONS_POLICIES_KEY = 'policies';\n\n/**\n * Hook to manage the retrieval of the current Firestore collection names for\n * policies and plans.\n *\n * @see https://developmentnow.atlassian.net/browse/NAVFEATURE-95\n */\nconst useCurrentCollections = () => {\n const firebase = useFirebaseContext();\n\n const getCurrentCollectionName = async (type) => {\n const ref = await firebase.firestore\n .collection(CURRENT_COLLECTIONS_COLLECTION_NAME)\n .doc(type)\n .get();\n return ref?.data()?.currentCollectionName;\n };\n\n const getCurrentPlansCollectionName = async () =>\n await getCurrentCollectionName(CURRENT_COLLECTIONS_PLANS_KEY);\n const getCurrentPoliciesCollectionName = async () =>\n await getCurrentCollectionName(CURRENT_COLLECTIONS_POLICIES_KEY);\n\n return {\n getCurrentPlansCollectionName,\n getCurrentPoliciesCollectionName,\n };\n};\n\nexport default useCurrentCollections;\n","/*\n All Column Widths should add up to ~80-85%, which leaves a decent\n bit of space for the Icon columns in the table to occupy\n*/\n\nexport const FIELDS = [\n { columnWidth: '14%', label: 'Insurer', value: 'controller' },\n { columnWidth: '13%', label: 'Health Plan(s)', value: 'name' },\n { columnWidth: '8%', label: 'Status', value: 'coverageStatus' },\n { columnWidth: '8%', label: 'Step Edit', value: 'stepStatus' },\n { columnWidth: '8%', label: 'Step Statement', value: 'stepStatement' },\n {\n columnWidth: '8%',\n label: 'PA Required',\n value: 'paRequired',\n },\n];\n","export const email = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const phone = /^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?\\s*$/;\nexport const zipCode = /\\d{5}/;\n","import StateData from 'react-usa-map/src/data/usa-map-dimensions';\nimport * as colors from '../styles/colors';\nimport { FIELDS } from '../components/PolicyList/PolicyList.constants';\n\nexport * as regex from './regex';\n\nexport const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\nexport const INDICATION_IDS = {\n ADVANCED_NSCLC_CHEMOTHERAPY: 434,\n ADVANCED_NSCLC_MONOTHERAPY: 434999,\n ADVANCED_BCC: 457,\n ADVANCED_CSCC: 449,\n};\n\nexport const INDICATION_IDS_POLICY_DOWNLOADS = {\n ADVANCED_NSCLC_CHEMOTHERAPY: 434,\n ADVANCED_NSCLC_MONOTHERAPY: 434,\n ADVANCED_BCC: 457,\n ADVANCED_CSCC: 449,\n};\n\nexport const INDICATION_LABELS = {\n ADVANCED_NSCLC_CHEMOTHERAPY:\n 'Advanced NSCLC: LIBTAYO in combination with chemotherapy',\n ADVANCED_NSCLC_MONOTHERAPY: 'Advanced NSCLC: LIBTAYO monotherapy',\n ADVANCED_BCC: 'Advanced BCC',\n ADVANCED_CSCC: 'Advanced CSCC',\n};\n\nexport const INDICATION_OPTIONS = Object.keys(INDICATION_IDS).map((key) => ({\n value: INDICATION_IDS[key],\n label: INDICATION_LABELS[key],\n}));\n\nexport const INDICATION_OPTIONS_POLICY_DOWNLOADS = Object.keys(\n INDICATION_IDS_POLICY_DOWNLOADS,\n).map((key) => ({\n value: INDICATION_IDS_POLICY_DOWNLOADS[key],\n label: INDICATION_LABELS[key],\n}));\n\nexport const PATHWAY_STATUS_INDICATION_IDS = {\n ADVANCED_NSCLC_CHEMOTHERAPY: 'chemotherapy',\n ADVANCED_NSCLC_MONOTHERAPY: 'monotherapy',\n ADVANCED_BCC: 'bcc',\n ADVANCED_CSCC: 'cscc',\n};\n\nexport const DISABLED_PATHWAY_STATUS_INDICATION_IDS = ['bcc', 'cscc'];\n\nexport const PATHWAY_STATUS_INDICATION_OPTIONS = Object.keys(\n PATHWAY_STATUS_INDICATION_IDS,\n).map((key) => ({\n value: PATHWAY_STATUS_INDICATION_IDS[key],\n label: INDICATION_LABELS[key],\n}));\n\nexport const PATHWAY_STATUS_POSITION_NOT_REVIEWED = 'Not Reviewed';\n\nexport const LIBTAYO_ID = 232993;\n\nexport const MEDICATION_OPTIONS = [\n {\n value: LIBTAYO_ID,\n label: 'LIBTAYO',\n expandedLabel: 'LIBTAYO (cemiplimab-rwlc)',\n indications: INDICATION_OPTIONS,\n color: colors.pink,\n fields: FIELDS,\n },\n];\n\nexport const CHANNEL_OPTIONS = [\n {\n label: 'Commercial',\n value: 1,\n },\n {\n label: 'Medicare',\n value: 2,\n },\n {\n label: 'State Medicaid',\n value: 3,\n },\n {\n label: 'Managed Medicaid',\n value: 5,\n },\n {\n label: 'Health Exchange',\n value: 4,\n },\n];\n\nexport const TERRITORIES = [\n {\n label: 'Puerto Rico',\n value: 'PR',\n },\n {\n label: 'Guam',\n value: 'GU',\n },\n {\n label: 'North Marianas',\n value: 'MP',\n },\n {\n label: 'US Virgin Islands',\n value: 'VI',\n },\n];\n\nconst DC = {\n label: 'District of Columbia',\n value: 'DC2',\n};\n\nexport const STATE_AND_TERRITORY_OPTIONS = Object.values(StateData())\n .map((s) => ({\n label: s.name,\n value: s.abbreviation,\n }))\n .concat(DC)\n .concat(TERRITORIES)\n .sort((a, b) => a.label.localeCompare(b.label));\n\nexport const PRESCRIBING_INFORMATION = {\n LIBTAYO: {\n label: 'LIBTAYO Prescribing Information',\n value: 'https://www.regeneron.com/downloads/libtayo_fpi.pdf',\n },\n};\n\nexport const PRESCRIBING_INFORMATION_LINK =\n 'https://www.regeneron.com/downloads/libtayo_fpi.pdf';\n","export const GENERAL_USER = 'general';\nexport const RBM = 'rbm';\nexport const SUPER_USER = 'super';\n\nexport const ROLE_TEXT = {\n [GENERAL_USER]: 'General User',\n [RBM]: 'ORM',\n [SUPER_USER]: 'Managing User',\n};\n","// Sort falsy values to the bottom\nconst nullCompare = (a, b) => {\n if (!a && b) return 1;\n if (a && !b) return -1;\n return 0;\n};\n\nconst sortRecords = (records, sortBy, order) => {\n if (!order || !sortBy) return records;\n\n // Spread to create a copy:\n const sortedRecords = [...records].sort((a, b) => {\n if (!a[sortBy] || !b[sortBy]) return nullCompare(a[sortBy], b[sortBy]);\n return a[sortBy].localeCompare(b[sortBy]);\n });\n\n return order === 'asc' ? sortedRecords : sortedRecords.reverse();\n};\n\nexport default sortRecords;\n","import {\n INDICATION_OPTIONS,\n PATHWAY_STATUS_INDICATION_OPTIONS,\n CHANNEL_OPTIONS,\n MEDICATION_OPTIONS,\n STATE_AND_TERRITORY_OPTIONS,\n} from '../constants';\nimport { SUPER_USER } from '../constants/roles';\nexport { default as sortRecords } from './sortRecords';\n\nexport const getProductById = (productId) => {\n if (productId) {\n const option = MEDICATION_OPTIONS.find(({ value }) => value === productId);\n return option ?? {};\n }\n return {};\n};\n\nexport const getChannelLabelById = (channelId) => {\n if (channelId) {\n const option = CHANNEL_OPTIONS.find(\n ({ label, value }) => value === channelId,\n );\n return option ? option.label : '';\n }\n return '';\n};\n\nexport const getPathwayStatusIndicationLabelById = (indicationId) => {\n const option = PATHWAY_STATUS_INDICATION_OPTIONS.find(\n ({ label, value }) => value === indicationId,\n );\n return option.label;\n};\n\nexport const getIndicationLabelById = (indicationId) => {\n const option = INDICATION_OPTIONS.find(\n ({ label, value }) => value === indicationId,\n );\n return option.label;\n};\n\n/**\n * Gets the field name associated with the indications for the given product.\n * Note that this method is a holdover from the Eylea application, where there\n * are multiple products and therefore multiple indication fields.\n */\nconst getIndicationsFieldName = (productId) => {\n return 'indications';\n};\n\nconst getIndication = (policy, indicationId, productId) => {\n const indicationsFieldName = getIndicationsFieldName(productId);\n return policy[indicationsFieldName].find(\n (i) => i.indicationId === indicationId,\n );\n};\n\nexport const decoratePolicyWithIndication = (\n policy,\n indicationId,\n productId,\n) => ({\n ...policy,\n ...getIndication(policy, indicationId || policy.indicationId, productId),\n});\n\nexport const getCoverageTitle = (role) =>\n `${role === SUPER_USER ? 'Find' : 'View'} Insurance Coverage`;\n\nconst addToStateArray = (setter, arr) => (val) => {\n setter([...arr, val]);\n};\nconst removeFromStateArray = (setter, arr) => (val) => {\n setter(arr.filter((i) => i !== val));\n};\nconst toggleStateArray = (setter, arr) => (val) => {\n if (arr.includes(val)) {\n removeFromStateArray(setter, arr)(val);\n } else {\n addToStateArray(setter, arr)(val);\n }\n};\n\n/**\n * Gets the full name of a US state or territory by its abbreviation.\n * Returns the supplied abbreviation if the state or territory cannot be found.\n * @param {String} stateAbbreviation - The abbreviation of the US state or territory\n */\nexport const getUsStateFullNameFromAbbreviation = (stateAbbreviation) =>\n STATE_AND_TERRITORY_OPTIONS.find(\n ({ label, value }) => value === stateAbbreviation,\n )?.label || stateAbbreviation;\n\nexport const createStateArrayUtils = (setter, arr) => ({\n add: addToStateArray(setter, arr),\n toggle: toggleStateArray(setter, arr),\n remove: removeFromStateArray(setter, arr),\n});\n\nexport const sortObjectsExcludingUndefined = ({ items, sortProp, sortFn }) => {\n const itemsWithDefinedProp = items.filter(\n (i) => typeof i[sortProp] !== 'undefined',\n );\n const itemsWithUndefinedProp = items.filter(\n (i) => typeof i[sortProp] === 'undefined',\n );\n const sortedItems = itemsWithDefinedProp.sort(sortFn);\n const combinedItems = [...sortedItems, ...itemsWithUndefinedProp];\n return combinedItems;\n};\n\n/**\n * Trims search input\n * @param {String} val String value to trim\n * @param {Object} config\n * @param {Boolean} config.stripPunctuation should it also remove punctuation from the input?\n */\nexport const trimSearchInput = (val, { stripPunctuation = false } = {}) => {\n let res = val;\n if (stripPunctuation) res = res.replace(/[^\\w ]/g, '');\n return res.trim();\n};\n\n/**\n * Gets the product label for a given product ID.\n * Note that this method is a holdover from the Eylea application, where there\n * are multiple products.\n */\nexport const getProductLabelById = (productId) => 'Libtayo';\n","import * as Sentry from '@sentry/react';\n\nexport const logToSentry = (error, user, extra, section, tags) => {\n return Sentry.captureException(error, { user, section, extra });\n};\n","import PropTypes from 'prop-types';\nimport React, { useContext, useEffect, useState } from 'react';\n\nimport { useFirebaseContext } from './FirebaseProvider';\nimport { useUserApi } from '../api/user';\nimport { logToSentry } from '../services/errorLogging';\n\nconst DEFAULT_STATE = {\n error: null,\n loading: true,\n user: null,\n clearAuthError: () => {},\n refetchUser: () => new Promise(),\n sendPasswordResetEmail: (email) => new Promise(),\n signIn: (email, password, staySignedIn) => new Promise(),\n signOut: () => new Promise(),\n};\n\nexport const AuthContext = React.createContext(DEFAULT_STATE);\n\nexport const useAuthContext = () => useContext(AuthContext);\n\nconst mapUserObject = (fullUser) => ({\n displayName: fullUser.displayName,\n email: fullUser.email,\n policiesShownOnHomepage: fullUser.policiesShownOnHomepage || [],\n practiceId: fullUser.practiceId,\n role: fullUser.role,\n uid: fullUser.uid,\n});\n\nconst AuthProvider = ({ children }) => {\n const firebase = useFirebaseContext();\n const { GetExtendedUser } = useUserApi();\n const [authUser, setAuthUser] = useState(firebase.auth().currentUser);\n const [error, setError] = useState(null);\n // this is really only for the initial, global loading state\n // use local state in components if they need something more specific\n const [loading, setLoading] = useState(true);\n const [user, setUser] = useState(null);\n\n const getPersistence = (staySignedIn) => {\n return staySignedIn\n ? firebase.auth.Auth.Persistence.LOCAL\n : firebase.auth.Auth.Persistence.SESSION;\n };\n\n const refetchUser = async () => {\n const userDoc = await GetExtendedUser(user.uid);\n setUser({ ...user, ...userDoc });\n };\n\n // on login, fetch extended user object for setUser\n // this should be simplified / cleaned up\n useEffect(() => {\n const removeListener = firebase\n .auth()\n .onAuthStateChanged(async (userDoc) => {\n setLoading(true);\n setAuthUser(userDoc);\n if (userDoc) {\n const extendedUser = await GetExtendedUser(userDoc.uid);\n const mappedUser = mapUserObject({\n ...userDoc._delegate,\n ...extendedUser,\n });\n setUser(mappedUser);\n } else {\n setUser(null);\n }\n setLoading(false);\n });\n return () => removeListener();\n }, [authUser, firebase]);\n\n const signIn = async (email, password, staySignedIn) => {\n try {\n setError(null);\n await firebase.auth().setPersistence(getPersistence(staySignedIn));\n return await firebase.auth().signInWithEmailAndPassword(email, password);\n } catch (err) {\n setError(err);\n const user = { username: email };\n const extra = {\n code: err.code,\n payload: err.payload,\n };\n const section = 'login';\n const tags = { type: 'frontend' };\n logToSentry(err, user, extra, section, tags);\n } finally {\n setLoading(false);\n }\n };\n\n const signOut = () => {\n setError(null);\n setUser(null);\n return firebase.auth().signOut();\n };\n\n const sendPasswordResetEmail = async (email) => {\n return await firebase.auth().sendPasswordResetEmail(email);\n };\n\n return (\n setError(null),\n refetchUser,\n sendPasswordResetEmail,\n signIn,\n signOut,\n }}\n >\n {children}\n \n );\n};\n\nAuthProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport default AuthProvider;\n","import { useEffect, useState } from 'react';\n\nimport useCurrentCollections from './useCurrentCollections';\nimport { sortObjectsExcludingUndefined } from '../helpers';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport { useFirebaseContext } from '../providers/FirebaseProvider';\n\nconst usePolicies = () => {\n const { user } = useAuthContext();\n const firebase = useFirebaseContext();\n\n const [policies, setPolicies] = useState([]);\n const [loading, setLoading] = useState(false);\n const { getCurrentPoliciesCollectionName } = useCurrentCollections();\n\n useEffect(() => {\n if (!user?.uid) return;\n\n const fetchPolicies = async () => {\n setLoading(true);\n\n const currentPoliciesCollectionName =\n await getCurrentPoliciesCollectionName();\n\n if (currentPoliciesCollectionName) {\n const policiesDoc = await firebase.firestore\n .collection('mmitPoliciesCurrent')\n .doc(currentPoliciesCollectionName)\n .collection('currentPolicies')\n .get();\n const allPolicies = policiesDoc.docs.map((d) => d.data());\n const sortedPolicies = sortObjectsExcludingUndefined({\n items: allPolicies,\n sortProp: 'lives',\n sortFn: (a, b) => b.lives - a.lives,\n });\n setPolicies(sortedPolicies);\n } else {\n console.warn(\n 'No currentCollections key set for policies. Not loading policies.',\n );\n }\n\n setLoading(false);\n };\n fetchPolicies();\n }, [firebase, user?.uid]);\n\n return {\n policies,\n loading,\n };\n};\n\nexport default usePolicies;\n","import { useState } from 'react';\n\nimport useCurrentCollections from './useCurrentCollections';\nimport { useFirebaseContext } from '../providers/FirebaseProvider';\n\nconst groupPlansByMedicalGroup = (plans) => {\n const medicalGroupsMap = plans.reduce((acc, plan) => {\n if (acc[plan.medicalGroupId]) return acc;\n acc[plan.medicalGroupId] = {\n name: plan.medicalGroupName,\n id: plan.medicalGroupId,\n formularyId: plan.formularyId,\n };\n return acc;\n }, {});\n return Object.values(medicalGroupsMap);\n};\n\nconst usePlans = () => {\n const firebase = useFirebaseContext();\n const [plans, setPlans] = useState([]);\n const [loading, setLoading] = useState(false);\n const { getCurrentPlansCollectionName } = useCurrentCollections();\n\n const fetchPlans = async () => {\n setLoading(true);\n\n const currentPlansCollectionName = await getCurrentPlansCollectionName();\n\n if (currentPlansCollectionName) {\n const plansDoc = await firebase.firestore\n .collection('mmitPlansCurrent')\n .doc(currentPlansCollectionName)\n .collection('currentPlans')\n .get();\n const allPlans = plansDoc.docs.map((d) => d.data());\n const groupedPlans = groupPlansByMedicalGroup(allPlans);\n setPlans(groupedPlans);\n } else {\n console.warn(\n 'No currentCollections key set for plans. Not loading plans.',\n );\n }\n\n setLoading(false);\n };\n\n return {\n fetchPlans,\n loading,\n plans,\n };\n};\n\nexport default usePlans;\n","import React, { useContext, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePracticeApi } from '../api/practice';\nimport useApiMethod from '../hooks/useApiMethod';\nimport usePolicies from '../hooks/usePolicies';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport { decoratePolicyWithIndication } from '../helpers';\nimport usePlans from '../hooks/usePlans';\nimport { LIBTAYO_ID } from '../constants';\n\nconst DEFAULT_STATE = {\n fetchPlans: () => new Promise(),\n firstTimeExperience: true,\n globalError: null,\n isInitializing: false,\n isLoading: false,\n plans: [],\n policies: {\n all: [],\n favorites: [],\n visible: [],\n },\n practice: {\n allPoliciesVisible: true,\n rbm: {\n displayName: '',\n email: '',\n },\n },\n refetchPractice: () => new Promise(),\n setFavoritePolicies: (policies) => {},\n setFirstTimeExperience: (isFte) => {},\n setGlobalError: (err) => {},\n setIsInitializing: (isInitializing) => {},\n setIsLoading: (isLoading) => {},\n setVisiblePolicies: (policies) => {},\n};\n\nexport const AppContext = React.createContext(DEFAULT_STATE);\n\nexport const useAppContext = () => useContext(AppContext);\n\n/**\n * Given a policy ID & indication ID and the full list of\n * policies, find & return the full object for that policy\n * with the given indication\n * @param {Object} policy\n * @param {Number} policy.id\n * @param {Number} policy.indicationId\n * @param {Array} allPolicies\n */\nconst getFullPolicy = (policy, allPolicies) => {\n const { id, indicationId, productId } = policy;\n const policyObj = allPolicies.find((p) => p.id === id);\n if (!policyObj) return null;\n return decoratePolicyWithIndication(\n policyObj,\n indicationId,\n productId || LIBTAYO_ID,\n );\n};\n\nconst AppProvider = ({ children }) => {\n const { GetPracticeById } = usePracticeApi();\n const { policies: allPolicies } = usePolicies();\n\n const { fetchPlans, plans: allPlans } = usePlans();\n const { loading: isLoadingAuth, user } = useAuthContext();\n const {\n apiMethod: fetchPractice,\n data: practice,\n loading: isLoadingPractice,\n reset: resetPractice,\n } = useApiMethod(GetPracticeById);\n\n const [globalError, setGlobalError] = useState(null);\n const [firstTimeExperience, setFirstTimeExperience] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [visiblePolicies, setVisiblePolicies] = useState([]);\n const [favoritePolicies, setFavoritePolicies] = useState([]);\n\n const getIsInitializing = () => {\n return [isLoadingAuth, isLoadingPractice && !practice].some(Boolean);\n };\n\n const fetchPlansOnce = async () => {\n // don't refetch plans if we already have them,\n // since they do not change very often\n if (allPlans.length) return;\n setIsLoading(true);\n await fetchPlans();\n setIsLoading(false);\n };\n\n useEffect(() => {\n if (!user?.practiceId) {\n resetPractice();\n } else {\n fetchPractice(user.practiceId);\n }\n }, [user?.practiceId]);\n const refetchPractice = () => {\n fetchPractice(user.practiceId);\n };\n\n useEffect(() => {\n const allDataLoaded = [\n allPolicies.length,\n user?.policiesShownOnHomepage,\n practice?.policies,\n ].every(Boolean);\n\n if (!allDataLoaded) {\n setFavoritePolicies([]);\n setVisiblePolicies([]);\n setFirstTimeExperience(true);\n return;\n }\n // get & set visible policies\n const fullVisiblePolicies = practice.policies\n .map((policy) => getFullPolicy(policy, allPolicies))\n .filter(Boolean);\n setVisiblePolicies(fullVisiblePolicies);\n\n // get & set favorite policies\n const fullFavePolicies = user.policiesShownOnHomepage\n .filter(\n (p) =>\n practice.allPoliciesVisible ||\n practice.policies.find((q) => q.id === p.id),\n )\n .map((policy) => getFullPolicy(policy, allPolicies))\n .filter(Boolean);\n setFavoritePolicies(fullFavePolicies);\n if (firstTimeExperience) {\n setFirstTimeExperience(!fullFavePolicies.length);\n }\n }, [allPolicies, user?.policiesShownOnHomepage, practice?.policies]);\n\n return (\n \n {children}\n \n );\n};\n\nAppProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport default AppProvider;\n","export default __webpack_public_path__ + \"static/media/arial_light.1d1225b7.ttf\";","export default __webpack_public_path__ + \"static/media/arial_regular.5afb1f7c.ttf\";","export default __webpack_public_path__ + \"static/media/arial_bold.ff542716.ttf\";","import { createGlobalStyle } from 'styled-components';\n\nimport arialLight from '../assets/fonts/arial_light.ttf';\nimport arialRegular from '../assets/fonts/arial_regular.ttf';\nimport arialBold from '../assets/fonts/arial_bold.ttf';\n\nconst GlobalStyle = createGlobalStyle`\n html {\n font-size: 16px;\n }\n @font-face {\n font-family: 'Arial Light';\n src: url(${arialLight});\n font-weight: normal;\n font-style: normal;\n }\n @font-face {\n font-family: 'Arial Regular';\n src: url(${arialRegular});\n font-weight: normal;\n font-style: normal;\n }\n @font-face {\n font-family: 'Arial Bold';\n src: url(${arialBold});\n font-weight: normal;\n font-style: normal;\n }\n\n body {\n margin: 0;\n font-family: 'Arial Regular', -apple-system, BlinkMacSystemFont,\n 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\n 'Droid Sans', 'Helvetica Neue', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n color: ${({ theme }) => theme.text};\n height: 100vh;\n }\n // global component styles\n a {\n color: ${({ theme }) => theme.foreground};\n text-decoration: none;\n }\n`;\n\nexport default GlobalStyle;\n","import * as colors from './colors';\n\nconst commonTheme = {\n disabled: colors.greyscale[600],\n error: colors.pink,\n highlight: colors.yellowGreen,\n};\n\nexport const lightTheme = {\n ...commonTheme,\n accent: colors.lightBlue,\n background: colors.white,\n foreground: colors.darkBlue,\n input: colors.white,\n inputBorder: `1px solid ${colors.greyscale[600]}`,\n placeholder: colors.greyscale[600],\n tableRow: colors.greyscale[100],\n text: colors.greyscale[600],\n};\n\nexport const darkTheme = {\n ...commonTheme,\n accent: colors.yellowGreen,\n background: colors.darkBlue,\n foreground: colors.blankWhite,\n input: colors.fadedBlue,\n inputBorder: 'none',\n placeholder: colors.blueGrey,\n tableRow: colors.darkBlue,\n text: colors.white,\n};\n","const routes = {\n home: '/home',\n login: '/login',\n findCoverage: '/coverage',\n findPolicy: '/policy',\n findPriorAuth: '/prior-auth',\n userGuide: '/user-guide',\n resources: '/resources',\n admin: '/admin',\n pathwayStatus: '/pathway-status',\n};\n\nexport default routes;\n","import PropTypes from 'prop-types';\n\nexport const childrenPropType = PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n]).isRequired;\n\nexport const policyIndicationPropType = PropTypes.shape({\n stepCategory: PropTypes.string,\n stepStatement: PropTypes.string,\n duration: PropTypes.string,\n reauthorizationRequired: PropTypes.string,\n});\n\nexport const policyPropType = PropTypes.shape({\n name: PropTypes.string.isRequired,\n coverageStatus: PropTypes.string.isRequired,\n indications: PropTypes.arrayOf(policyIndicationPropType).isRequired,\n});\n\nexport const indicationPropType = PropTypes.shape({\n value: PropTypes.number,\n label: PropTypes.string,\n});\n\nexport const selectItemPropType = PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n});\n\nexport const practicePropType = PropTypes.shape({\n name: PropTypes.string,\n address: PropTypes.string,\n address2: PropTypes.string,\n city: PropTypes.string,\n state: PropTypes.string,\n zip: PropTypes.string,\n phone: PropTypes.string,\n});\n\nexport const userPropType = PropTypes.shape({\n displayName: PropTypes.string,\n email: PropTypes.string,\n practiceId: PropTypes.string,\n role: PropTypes.string,\n uid: PropTypes.string,\n});\n\nexport const productPropType = PropTypes.shape({\n value: PropTypes.number,\n label: PropTypes.string,\n indications: PropTypes.arrayOf(indicationPropType),\n});\n\nexport const usStatePropType = PropTypes.shape({\n value: PropTypes.number,\n label: PropTypes.string,\n});\n\nexport const pathwayStatusPropType = PropTypes.shape({\n usState: PropTypes.string.isRequired,\n payerParticipant: PropTypes.string.isRequired,\n pathway: PropTypes.string,\n});\n","export default __webpack_public_path__ + \"static/media/striped_background@2x.c28ef063.png\";","import styled, { css } from 'styled-components';\n\nimport * as colors from './colors';\n\nimport stripedBackgroundImage from '../assets/images/striped_background@2x.png';\n\nexport const appGutters = '120px';\nexport const boxShadowStandard = '0px 3px 5px 0px rgba(0, 0, 0, 0.25)';\nexport const headerHeight = '120px';\nexport const footerHeight = '185px';\nexport const pageHorizontalPadding = '20px';\nexport const ISI_SCROLL_THRESHOLD = 0.04;\n\nexport const backgroundStyles = css`\n background-color: ${colors.blankWhite};\n`;\n\nexport const stripedBackgroundStyles = css`\n background: url(${stripedBackgroundImage}) no-repeat;\n background-position: top -100px right 20px;\n background-size: 200px;\n`;\n\nexport const ProductText = styled.span`\n color: ${colors.pink};\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Route, Redirect } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport routes from '../constants/routes';\nimport * as userRoles from '../constants/roles';\nimport { childrenPropType } from '../propTypes';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport { backgroundStyles } from '../styles/constants';\n\n/**\n * While loading the user authentication status from Firebase,\n * show a blank white page to avoid any ugly staggered rendering\n * of the authenticated page elements.\n */\nconst BlankWhitePage = styled.div`\n ${backgroundStyles};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 2;\n`;\n\nconst AuthenticatedRoute = ({ children, roles, ...rest }) => {\n const { user, loading } = useAuthContext();\n\n const render = () => {\n if (loading) {\n return ;\n }\n\n return user && roles.includes(user.role) ? (\n children\n ) : (\n \n );\n };\n\n return ;\n};\n\nAuthenticatedRoute.propTypes = {\n children: childrenPropType,\n roles: PropTypes.arrayOf(PropTypes.string),\n};\n\nAuthenticatedRoute.defaultProps = {\n roles: [userRoles.GENERAL_USER, userRoles.RBM, userRoles.SUPER_USER],\n};\n\nexport default AuthenticatedRoute;\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n\nimport * as roles from '../constants/roles';\nimport routes from '../constants/routes';\nimport { childrenPropType } from '../propTypes';\nimport { useAuthContext } from '../providers/AuthProvider';\n\nconst UnauthenticatedRoute = ({ children, ...rest }) => {\n const { user } = useAuthContext();\n const redirectTo = user?.role === roles.RBM ? routes.admin : routes.home;\n\n return (\n (!user ? children : )}\n />\n );\n};\n\nUnauthenticatedRoute.propTypes = {\n children: childrenPropType,\n};\n\nexport default UnauthenticatedRoute;\n","export const tableLeftSpacing = '60px';\n\nexport const columnWidths = {\n displayName: '18%',\n address1: '16%',\n address2: '11%',\n city: '8%',\n usState: '5%',\n zip: '6%',\n phone: '9%',\n editButtons: '10%',\n expandButton: '17%',\n};\n\nexport const userColumnWidths = {\n displayName: '20%',\n email: '45%',\n editButtons: '15%',\n passwordReset: '20%',\n};\n\nexport const EMPTY_PRACTICE = {\n displayName: '',\n address1: '',\n address2: '',\n city: '',\n usState: '',\n zip: '',\n phone: '',\n};\n\nexport const EMPTY_USER = {\n displayName: '',\n email: '',\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport * as colors from '../styles/colors';\n\nconst InputWrapper = styled.div`\n background-color: ${({ error, theme }) =>\n error ? colors.white : theme.input};\n border: ${({ error, theme }) =>\n error ? `3px solid ${theme.error}` : theme.inputBorder};\n border-radius: 1px;\n display: flex;\n flex-grow: 1;\n max-width: 100%;\n`;\nconst StyledInput = styled.input`\n background-color: ${({ error, theme }) =>\n error ? colors.white : theme.input};\n border: none;\n color: ${({ error, theme }) => (error ? theme.error : theme.text)};\n flex-grow: 1;\n max-width: 100%;\n outline: none;\n &::placeholder {\n color: ${({ theme }) => theme.placeholder};\n }\n`;\nconst IconRight = styled.div`\n padding: 4px 0 4px 4px;\n & > * {\n max-height: 100%;\n }\n`;\n\nconst Input = ({ dark, error, iconRight, inputProps, ...props }) => {\n return (\n \n \n {iconRight && {iconRight}}\n \n );\n};\n\nInput.propTypes = {\n dark: PropTypes.bool,\n error: PropTypes.bool,\n iconRight: PropTypes.any,\n inputProps: PropTypes.object,\n};\n\nexport default Input;\n","import styled from 'styled-components';\n\nimport { linkStyles } from './Link';\nimport * as typography from '../styles/typography';\n\nconst TextButton = styled.span`\n ${typography.bold};\n ${linkStyles};\n text-transform: uppercase;\n`;\n\nexport default TextButton;\n","import { padding, stripUnit, transitions } from 'polished';\nimport styled from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport { linkStyles } from './Link';\nimport * as colors from '../styles/colors';\nimport * as typography from '../styles/typography';\n\nexport const LIST_PADDING_X = '20px';\n\nexport const ListTextButton = styled(Link)`\n ${linkStyles};\n ${typography.bold};\n color: ${colors.greyscale[400]};\n text-transform: uppercase;\n`;\n\nexport const ListTitleBar = styled.div`\n align-items: baseline;\n color: ${colors.white};\n background-color: ${(props) => props.backgroundColor};\n display: flex;\n justify-content: space-between;\n max-width: 100%;\n ${padding('8px', LIST_PADDING_X)}\n`;\n\nexport const ListTitleHeader = styled.div`\n ${typography.h4};\n ${typography.bold};\n`;\n\nexport const IconColumn = styled.div`\n flex-grow: 0;\n width: 80px;\n text-align: center;\n margin: 0 4px;\n`;\nexport const DataColumn = styled.div`\n align-items: center;\n display: flex;\n justify-content: ${(props) => props.justify};\n flex-grow: 1;\n width: ${(props) => props.width};\n margin: 0 4px;\n`;\nexport const TitleColumn = styled(DataColumn)`\n ${typography.bold};\n ${typography.h5};\n`;\n// adjust this to make things more responsive?\nexport const ListRow = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 8px;\n max-width: 100%;\n`;\nexport const ListHeaderRow = styled(ListRow)`\n align-items: flex-end;\n padding: 8px 0;\n position: -webkit-sticky; /* for Safari */\n position: sticky;\n top: 0;\n background: ${colors.white};\n & ${IconColumn} {\n ${typography.caption};\n text-transform: uppercase;\n }\n & ${DataColumn}, & ${TitleColumn} {\n ${linkStyles};\n ${typography.body};\n ${typography.bold};\n color: ${colors.darkBlue};\n font-weight: bold;\n overflow: hidden;\n }\n`;\nexport const SortIcon = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n width: fit-content;\n & svg {\n transform: rotate(\n ${(props) => (props.order === 'asc' ? '180deg' : '0deg')}\n );\n & * {\n fill: ${({ theme }) => theme.foreground};\n stroke: ${({ theme }) => theme.foreground};\n }\n }\n & + * {\n margin-left: 4px;\n }\n`;\n\nexport const ListBodyRow = styled(ListRow)`\n ${padding('16px', LIST_PADDING_X)}\n ${typography.body};\n display: block;\n background: ${({ theme }) => theme.tableRow};\n color: ${({ theme }) => theme.text};\n ${transitions(['color', 'background-color'], '0.15s linear')}\n flex-grow: 1\n overflow-y: auto;\n`;\n\nexport const ListBodyRowContent = styled.div`\n display: flex;\n /*\n negative margin fixes alignment from ListBodyRow padding.\n This aligns things correctly if we just have text in a row\n (no results view) vs. the regular cell alignment\n */\n margin-left: ${stripUnit(LIST_PADDING_X) * -1}px;\n margin-right: ${stripUnit(LIST_PADDING_X) * -1}px;\n & + & {\n margin-top: 8px;\n }\n`;\n\nexport const List = styled.div`\n & > * {\n margin: 6px 0;\n }\n height: 100%;\n min-height: 100%;\n`;\n\nexport const IconWrapper = styled.div`\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n`;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { userColumnWidths, EMPTY_USER } from './PracticeList.constants';\nimport Input from '../Input';\nimport TextButton from '../TextButton';\nimport { ListRow, DataColumn } from '../List';\nimport * as regex from '../../constants/regex';\n\nconst SubListRow = styled(ListRow)`\n padding: 10px 20px;\n`;\nconst inputMarginOffset = '8px';\nconst StyledInput = styled(Input)`\n & input {\n margin: 4px;\n max-width: calc(100% - ${inputMarginOffset});\n }\n`;\n\nconst SuperUserForm = ({\n initialValue = EMPTY_USER,\n isSaving,\n onCancel,\n onSave,\n}) => {\n const [isFormValid, setIsFormValid] = useState(false);\n const [user, setUser] = useState(initialValue);\n\n const setUserField = (fieldName) => (event) =>\n setUser({\n ...user,\n [fieldName]: event.target.value,\n });\n\n useEffect(() => {\n setIsFormValid(\n [!!user.displayName, regex.email.test(user.email)].every(Boolean)\n );\n }, [user]);\n\n const handleSave = () => {\n if (!isFormValid) return;\n onSave(user);\n };\n\n const renderInput = (fieldName) => (\n \n \n \n );\n\n return (\n \n {renderInput('displayName')}\n {renderInput('email')}\n \n \n Cancel\n \n  | \n \n Save\n \n \n \n \n );\n};\n\nSuperUserForm.propTypes = {\n initialValue: PropTypes.object,\n isSaving: PropTypes.bool,\n onCancel: PropTypes.func,\n onSave: PropTypes.func,\n};\n\nexport default SuperUserForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { userColumnWidths } from './PracticeList.constants';\nimport TextButton from '../TextButton';\nimport { ListRow, DataColumn } from '../List';\nimport { useAuthContext } from '../../providers/AuthProvider';\nimport * as typography from '../../styles/typography';\n\n// SUB-LIST\nconst SubListRow = styled(ListRow)`\n padding: 10px 20px;\n`;\nconst BoldColumn = styled(DataColumn)`\n ${typography.bold};\n color: ${({ theme }) => theme.foreground};\n`;\n\nconst SendEmailButton = styled(TextButton)`\n text-transform: none;\n`;\n\nconst SuperUserListRow = ({ onEditUser, onRemoveUser, user }) => {\n const { sendPasswordResetEmail } = useAuthContext();\n\n return (\n \n \n {user.displayName}\n \n {user.email}\n \n EDIT\n  | \n REMOVE\n \n \n sendPasswordResetEmail(user.email)}>\n Send Email to Set Password\n \n \n \n );\n};\n\nSuperUserListRow.propTypes = {\n onEditUser: PropTypes.func,\n onRemoveUser: PropTypes.func,\n user: PropTypes.object.isRequired,\n};\n\nexport default SuperUserListRow;\n","import styled from 'styled-components';\n\nimport { globalTransition } from '../styles/utils';\nimport * as typography from '../styles/typography';\n\nconst StyledButton = styled.button`\n ${typography.body};\n background-color: ${({ theme }) => theme.foreground};\n border: none;\n border-radius: 1px;\n color: ${({ theme }) => theme.background};\n cursor: pointer;\n font-weight: 700;\n padding: 6px 32px;\n text-transform: uppercase;\n transition: ${globalTransition('background-color')};\n &:disabled {\n background-color: ${({ theme }) => theme.disabled};\n cursor: default;\n }\n`;\n\nexport default StyledButton;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport Button from './Button';\nimport Link from './Link';\nimport Modal from './Modal';\nimport * as typography from '../styles/typography';\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 50px;\n color: ${({ theme }) => theme.foreground};\n & > * {\n margin: 8px 0;\n }\n`;\nconst Heading = styled.div`\n ${typography.h4};\n`;\nconst SubHeading = styled.div`\n ${typography.h5};\n`;\n\nconst StyledButton = styled(Button)`\n border-radius: 0;\n`;\nconst StyledLink = styled(Link)`\n text-decoration: underline;\n`;\n\nconst modalStyles = {\n borderRadius: '0px',\n};\n\nconst ConfirmDeleteModal = ({\n isOpen,\n onCancel,\n onContinue,\n deleteTargetName,\n}) => {\n return (\n \n \n You are deleting a {deleteTargetName}.\n This action cannot be undone.\n Continue\n GO BACK\n \n \n );\n};\n\nConfirmDeleteModal.propTypes = {\n deleteTargetName: PropTypes.string,\n isOpen: PropTypes.bool.isRequired,\n onCancel: PropTypes.func,\n onContinue: PropTypes.func,\n};\n\nexport default ConfirmDeleteModal;\n","import { size as sizeUtil } from 'polished';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport image from '../assets/images/loading.png';\n\nconst spinAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst SpinnerContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n ${(props) => sizeUtil(props.size)};\n background-image: url(${image});\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n animation: ${spinAnimation} 1.5s infinite linear;\n`;\n\nconst LoadingSpinner = ({ size }) => {\n return ;\n};\n\nLoadingSpinner.propTypes = {\n size: PropTypes.number,\n};\n\nLoadingSpinner.defaultProps = {\n size: 150,\n};\n\nexport default LoadingSpinner;\n","export default \"data:image/png;base64,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\"","import { useEffect, useState } from 'react';\n\nimport { createStateArrayUtils } from '../helpers';\n\nexport const NEW_ROW_ID = 'NEW_ROW';\n\n/**\n * @param {object} config\n * @param {object} config.apiMethods\n * @param {Function} config.apiMethods.create\n * @param {Function} config.apiMethods.read\n * @param {Function} config.apiMethods.update\n * @param {Function} config.apiMethods.delete\n * @param {Function} config.apiMethods.subscribe\n * @param {String} config.idProp\n * @param {Boolean} config.isVisible\n * @param {Function} config.mapFetchedData\n * @param {Function} config.onCreateSuccess\n */\nconst useRowForm = ({\n apiMethods,\n idProp = 'id',\n isVisible = true,\n mapFetchedData,\n onCreateSuccess,\n}) => {\n const [editModeRows, setEditModeRows] = useState([]);\n const [pendingChanges, setPendingChanges] = useState([]);\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [deleteConfirmation, setDeleteConfirmation] = useState({\n id: null,\n isOpen: false,\n });\n\n const editModeRowsUtils = createStateArrayUtils(\n setEditModeRows,\n editModeRows\n );\n const pendingChangesUtils = createStateArrayUtils(\n setPendingChanges,\n pendingChanges\n );\n\n useEffect(() => {\n if (!apiMethods.subscribe) return;\n const unsubscribe = apiMethods.subscribe((data) => {\n setData(data);\n });\n // return unsubscribe fn so that we unsubscribe when the\n // component that calls this hook is destroyed\n return () => unsubscribe();\n // no dependency array to ensure we only subscribe once\n }, []);\n\n useEffect(() => {\n if (pendingChanges.length || !isVisible || !apiMethods.read) return;\n if (!data.length) setIsLoading(true);\n apiMethods.read().then((result = []) => {\n if (mapFetchedData) {\n setData(mapFetchedData(result));\n } else {\n setData(result);\n }\n setIsLoading(false);\n });\n }, [isVisible, pendingChanges]);\n\n const handleCreate = async (item) => {\n pendingChangesUtils.add(NEW_ROW_ID);\n await apiMethods.create(item);\n pendingChangesUtils.remove(NEW_ROW_ID);\n if (onCreateSuccess) onCreateSuccess();\n };\n const activateEditMode = (item) => {\n editModeRowsUtils.add(item[idProp]);\n };\n const deactivateEditMode = (item) => {\n editModeRowsUtils.remove(item[idProp]);\n };\n const handleUpdate = async (item) => {\n pendingChangesUtils.add(item[idProp]);\n await apiMethods.update(item);\n pendingChangesUtils.remove(item[idProp]);\n editModeRowsUtils.remove(item[idProp]);\n };\n const showDeleteConfirmation = (item) => {\n setDeleteConfirmation({ id: item[idProp], isOpen: true });\n };\n const clearDeleteConfirmation = () => {\n setDeleteConfirmation({ id: null, isOpen: false });\n };\n const handleDelete = async (item) => {\n const id = item ? item[idProp] : deleteConfirmation.id;\n pendingChangesUtils.add(id);\n editModeRowsUtils.remove(id);\n await apiMethods.delete(id);\n clearDeleteConfirmation();\n pendingChangesUtils.remove(id);\n };\n\n return {\n activateEditMode,\n deactivateEditMode,\n editModeRows,\n data,\n handleCreate,\n handleUpdate,\n handleDelete,\n isLoading,\n pendingChanges,\n showDeleteConfirmation,\n clearDeleteConfirmation,\n deleteConfirmation,\n };\n};\n\nexport default useRowForm;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { ThemeProvider } from 'styled-components';\n\nimport {\n columnWidths,\n tableLeftSpacing,\n userColumnWidths,\n} from './PracticeList.constants';\nimport SuperUserForm from './SuperUserForm';\nimport SuperUserListRow from './SuperUserListRow';\nimport ConfirmDeleteModal from '../ConfirmDeleteModal';\nimport LoadingSpinner from '../LoadingSpinner';\nimport TextButton from '../TextButton';\nimport { ListBodyRow, ListBodyRowContent, DataColumn } from '../List';\nimport * as roles from '../../constants/roles';\nimport useRowForm, { NEW_ROW_ID } from '../../hooks/useRowForm';\nimport { practicePropType } from '../../propTypes';\nimport { darkTheme, lightTheme } from '../../styles/themes';\nimport * as colors from '../../styles/colors';\nimport * as typography from '../../styles/typography';\nimport { usePracticeApi } from '../../api/practice';\nimport { useUserApi } from '../../api/user';\nimport { useAppContext } from '../../providers/AppProvider';\n\nconst RowContent = styled(ListBodyRowContent)`\n margin-left: ${tableLeftSpacing};\n margin-right: 0;\n`;\n\nconst PracticeListBodyRow = styled(ListBodyRow)`\n background-color: ${({ isExpanded, theme }) =>\n isExpanded ? colors.yellowGreen : theme.tableRow};\n color: ${({ isExpanded, theme }) => (isExpanded ? colors.white : theme.text)};\n`;\n\nconst PracticeListTextButton = styled(TextButton)`\n color: ${({ isExpanded, theme }) =>\n isExpanded ? colors.white : theme.foreground};\n &:hover {\n color: ${({ isExpanded, theme }) =>\n isExpanded ? colors.white : theme.accent};\n }\n`;\n\n// SUB-LIST\n// the wacky max height thing makes the transition smooth by calculating the correct value\n// based on the number of list items and the width of the window (to account for line wrap)\nconst getHeightPerItem = () => {\n if (document.body.clientWidth > 1325) return 35;\n if (document.body.clientWidth > 850) return 50;\n return 65;\n};\n\nconst getHeaderHeight = () => {\n if (document.body.clientWidth > 1050) return 35;\n return 50;\n};\n\nconst calcMaxHeightFromProps = ({ isExpanded, showNewRow, userCount }) => {\n if (!isExpanded) return '0px';\n const headerHeight = getHeaderHeight();\n const heightPerItem = getHeightPerItem();\n const newRowHeight = showNewRow ? 50 : 0;\n const maxHeight = heightPerItem * userCount + headerHeight + newRowHeight;\n return `${maxHeight}px`;\n};\n\nconst PracticeUserList = styled.div`\n max-height: ${calcMaxHeightFromProps};\n overflow: hidden;\n transition: max-height 0.1s linear;\n ${typography.body};\n margin-bottom: ${(props) => (props.isExpanded ? '16px' : '0')};\n margin-left: ${tableLeftSpacing};\n`;\n\nconst SubListHeader = styled.div`\n ${typography.bold};\n align-items: baseline;\n background-color: ${({ theme }) => theme.disabled};\n color: ${({ theme }) => theme.text};\n display: flex;\n max-width: 100%;\n padding: 8px 20px;\n`;\n\nconst BoldColumn = styled(DataColumn)`\n ${typography.bold};\n color: ${({ isExpanded, theme }) => (isExpanded ? colors.white : theme.text)};\n`;\n\nconst PracticeListRow = ({\n isExpanded,\n onCollapse,\n onEditPractice,\n onExpand,\n onRemovePractice,\n practice,\n}) => {\n const { ListenToPracticeUserUpdates } = usePracticeApi();\n const { CreateUser, DeleteUser, EditUser } = useUserApi();\n const { setGlobalError } = useAppContext();\n\n const createUser = async (newUser) => {\n try {\n return await CreateUser(roles.SUPER_USER, newUser, practice.id);\n } catch (err) {\n setGlobalError({\n error: err,\n message: err.message,\n });\n }\n };\n const deleteUser = (userId) => DeleteUser(userId, practice.id);\n\n const [showNewRow, setShowNewRow] = useState(false);\n const {\n activateEditMode,\n deactivateEditMode,\n clearDeleteConfirmation,\n data: users,\n deleteConfirmation,\n editModeRows,\n handleCreate: handleCreateUser,\n handleDelete: handleDeleteUser,\n handleUpdate: handleUpdateUser,\n isLoading,\n pendingChanges,\n showDeleteConfirmation,\n } = useRowForm({\n apiMethods: {\n create: createUser,\n update: EditUser,\n delete: deleteUser,\n subscribe: (onSuccess) => {\n return ListenToPracticeUserUpdates(practice.id, onSuccess);\n },\n },\n isVisible: isExpanded,\n onCreateSuccess: () => {\n setShowNewRow(false);\n },\n });\n\n const handleDeletePractice = () => {\n onCollapse();\n onRemovePractice();\n };\n\n const superUsers = useMemo(() => {\n if (!users || !users.length) return [];\n return users.filter((u) => u.role === roles.SUPER_USER);\n }, [users]);\n\n return (\n <>\n \n \n \n \n {practice.displayName}\n \n \n {practice.address1}\n \n \n {practice.address2}\n \n {practice.city}\n \n {practice.usState}\n \n {practice.zip}\n {practice.phone}\n \n \n EDIT\n \n  | \n \n REMOVE\n \n \n \n (isExpanded ? onCollapse() : onExpand())}\n >\n {isExpanded ? 'Close' : 'View/Add Managing Users'}\n \n \n \n \n \n \n \n \n \n MANAGING USERS\n \n \n Email Address\n \n \n \n setShowNewRow(true)}\n >\n ADD NEW MANAGING USER\n \n \n \n \n {isLoading && }\n {!isLoading && (\n <>\n {showNewRow && !pendingChanges.includes(NEW_ROW_ID) && (\n setShowNewRow(false)}\n onSave={handleCreateUser}\n />\n )}\n {superUsers.map((u, i) =>\n editModeRows.includes(u.id) ? (\n deactivateEditMode(u)}\n onSave={handleUpdateUser}\n />\n ) : (\n activateEditMode(u)}\n onRemoveUser={() => showDeleteConfirmation(u)}\n user={u}\n />\n ),\n )}\n \n )}\n \n {isExpanded && (\n handleDeleteUser()}\n onCancel={clearDeleteConfirmation}\n />\n )}\n \n );\n};\n\nPracticeListRow.propTypes = {\n backgroundColor: PropTypes.string,\n isExpanded: PropTypes.bool,\n onCollapse: PropTypes.func,\n onCloseNewRow: PropTypes.func,\n onEditPractice: PropTypes.func,\n onExpand: PropTypes.func,\n onRemovePractice: PropTypes.func,\n practice: practicePropType.isRequired,\n};\n\nexport default PracticeListRow;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport StateData from 'react-usa-map/src/data/usa-map-dimensions';\n\nimport {\n columnWidths,\n EMPTY_PRACTICE,\n tableLeftSpacing,\n} from './PracticeList.constants';\nimport Input from '../Input';\nimport TextButton from '../TextButton';\nimport {\n ListBodyRow,\n ListBodyRowContent,\n DataColumn,\n LIST_PADDING_X,\n} from '../List';\nimport { practicePropType } from '../../propTypes';\nimport * as regex from '../../constants/regex';\n\nconst STATE_ABBREVIATIONS = Object.keys(StateData());\n\nconst StyledRow = styled(ListBodyRow)`\n padding-left: CALC(${LIST_PADDING_X} + ${tableLeftSpacing});\n margin-bottom: 8px;\n`;\n\nconst RowContent = styled(ListBodyRowContent)`\n margin-left: 0;\n margin-right: 0;\n`;\nconst inputMarginOffset = '8px';\nconst StyledInput = styled(Input)`\n & input {\n margin: 4px;\n max-width: calc(100% - ${inputMarginOffset});\n }\n`;\n\nconst PracticeForm = ({\n initialValue = EMPTY_PRACTICE,\n isSaving,\n onSave,\n onCancel,\n}) => {\n const [practice, setPractice] = useState(initialValue);\n const [isFormValid, setIsFormValid] = useState(false);\n const setPracticeField = (fieldName) => (event) =>\n setPractice({\n ...practice,\n [fieldName]: event.target.value,\n });\n // const setStateField = (stateField) => (event) =>\n useEffect(() => {\n setIsFormValid(\n [\n !!practice.displayName,\n !!practice.address1,\n !!practice.city,\n !!practice.usState &&\n STATE_ABBREVIATIONS.includes(practice.usState.toUpperCase()),\n !!practice.zip && regex.zipCode.test(practice.zip),\n !!practice.phone && regex.phone.test(practice.phone),\n ].every(Boolean),\n );\n }, [practice]);\n\n const handleSave = () => {\n if (!isFormValid) return;\n onSave(practice);\n };\n const renderInput = (fieldName) => {\n if (fieldName === 'usState') {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n };\n\n return (\n \n \n {renderInput('displayName')}\n {renderInput('address1')}\n {renderInput('address2')}\n {renderInput('city')}\n {renderInput('usState')}\n {renderInput('zip')}\n {renderInput('phone')}\n \n \n Cancel\n \n  | \n \n Save\n \n \n \n \n \n );\n};\n\nPracticeForm.propTypes = {\n initialValue: practicePropType,\n isSaving: PropTypes.bool,\n onCancel: PropTypes.func,\n onSave: PropTypes.func,\n};\n\nexport default PracticeForm;\n","import styled from 'styled-components';\nimport { pageHorizontalPadding } from '../styles/constants';\n\nconst FullWidthWrapper = styled.div`\n width: calc(100% + ${pageHorizontalPadding} + ${pageHorizontalPadding});\n`;\n\nexport default FullWidthWrapper;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport PracticeListRow from './PracticeListRow';\nimport PracticeForm from './PracticeForm';\nimport { columnWidths, tableLeftSpacing } from './PracticeList.constants';\nimport { usePracticeApi } from '../../api/practice';\nimport useRowForm, { NEW_ROW_ID } from '../../hooks/useRowForm';\nimport ConfirmDeleteModal from '../ConfirmDeleteModal';\nimport FullWidthWrapper from '../FullWidthWrapper';\nimport LoadingSpinner from '../LoadingSpinner';\nimport { useAuthContext } from '../../providers/AuthProvider';\n\nimport {\n LIST_PADDING_X,\n ListTitleBar,\n List,\n DataColumn,\n TitleColumn,\n} from '../List';\n\nconst StyledTitleBar = styled(ListTitleBar)`\n padding-left: calc(${tableLeftSpacing} + ${LIST_PADDING_X});\n background-color: #b5b4b4;\n`;\n\nconst PracticeList = ({ onCloseNewRow, showNewRow }) => {\n const { user } = useAuthContext();\n const { CreatePractice, EditPractice, GetPractices, RemovePractice } =\n usePracticeApi();\n const {\n activateEditMode,\n deactivateEditMode,\n clearDeleteConfirmation,\n data: practices,\n deleteConfirmation,\n editModeRows,\n handleCreate,\n handleDelete,\n handleUpdate,\n isLoading,\n pendingChanges,\n showDeleteConfirmation,\n } = useRowForm({\n apiMethods: {\n create: (practice) => CreatePractice(practice, user.uid),\n read: GetPractices,\n update: EditPractice,\n delete: RemovePractice,\n },\n mapFetchedData: (data) => {\n return data.map((practice) => ({\n ...practice.practiceDetails,\n rbm: practice.rbm,\n id: practice.id,\n }));\n },\n onCreateSuccess: () => {\n onCloseNewRow();\n },\n });\n\n const [expandedRow, setExpandedRow] = useState([]);\n\n return (\n \n \n Practice\n Address\n Address 2\n City\n State\n ZIP\n Phone\n \n \n \n {isLoading && }\n {!isLoading && (\n \n {showNewRow && (\n \n )}\n {!!practices.length &&\n practices.map((p, i) =>\n editModeRows.includes(p.id) ? (\n deactivateEditMode(p)}\n onSave={handleUpdate}\n />\n ) : (\n user.uid === p.rbm && (\n setExpandedRow(null)}\n onEditPractice={() => activateEditMode(p)}\n onExpand={() => setExpandedRow(p.id)}\n onRemovePractice={() => showDeleteConfirmation(p)}\n practice={p}\n />\n )\n ),\n )}\n \n )}\n handleDelete()}\n onCancel={clearDeleteConfirmation}\n />\n \n );\n};\n\nPracticeList.propTypes = {\n noResultsText: PropTypes.string,\n onCloseNewRow: PropTypes.func,\n showNewRow: PropTypes.bool,\n};\n\nexport default PracticeList;\n","export const columnWidths = {\n displayName: '25%',\n email: '45%',\n editButtons: '14%',\n passwordReset: '16%',\n};\n\nexport const EMPTY_USER = {\n displayName: '',\n email: '',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { columnWidths } from './UserList.constants';\nimport { linkStyles } from '../Link';\nimport { ListBodyRow, ListBodyRowContent, DataColumn } from '../List';\nimport { userPropType } from '../../propTypes';\nimport { useAuthContext } from '../../providers/AuthProvider';\nimport * as typography from '../../styles/typography';\n\nconst RowContent = styled(ListBodyRowContent)`\n margin-left: 0;\n margin-right: 0;\n`;\nconst TextButton = styled.span`\n ${typography.bold};\n ${linkStyles};\n`;\nconst BoldColumn = styled(DataColumn)`\n ${typography.bold};\n color: ${({ theme }) => theme.foreground};\n`;\n\nconst UserListRow = ({ onEditUser, onRemoveUser, user }) => {\n const { sendPasswordResetEmail } = useAuthContext();\n\n return (\n \n \n \n {user.displayName}\n \n {user.email}\n \n EDIT\n  | \n REMOVE\n \n \n sendPasswordResetEmail(user.email)}>\n Send Email to Set Password\n \n \n \n \n );\n};\n\nUserListRow.propTypes = {\n onEditUser: PropTypes.func,\n onRemoveUser: PropTypes.func,\n user: userPropType.isRequired,\n};\n\nUserListRow.defaultProps = {};\n\nexport default UserListRow;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\n// MOVE THESE CONSTANTS TO A COMMON LOCATION\nimport { columnWidths, EMPTY_USER } from './UserList.constants';\nimport Input from '../Input';\nimport TextButton from '../TextButton';\nimport { ListBodyRow, ListBodyRowContent, DataColumn } from '../List';\nimport * as regex from '../../constants/regex';\n\nconst StyledRow = styled(ListBodyRow)`\n margin-bottom: 8px;\n`;\n\nconst RowContent = styled(ListBodyRowContent)`\n margin-left: 0;\n margin-right: 0;\n`;\nconst inputMarginOffset = '8px';\nconst StyledInput = styled(Input)`\n & input {\n margin: 4px;\n max-width: calc(100% - ${inputMarginOffset});\n }\n`;\n\nconst SuperUserForm = ({\n initialValue = EMPTY_USER,\n isSaving,\n onCancel,\n onSave,\n}) => {\n const [isFormValid, setIsFormValid] = useState(false);\n const [user, setUser] = useState(initialValue);\n\n const setUserField = (fieldName) => (event) =>\n setUser({\n ...user,\n [fieldName]: event.target.value,\n });\n\n useEffect(() => {\n setIsFormValid(\n [!!user.displayName, regex.email.test(user.email)].every(Boolean)\n );\n }, [user]);\n\n const handleSave = () => {\n if (!isFormValid) return;\n onSave(user);\n };\n\n const renderInput = (fieldName) => (\n \n \n \n );\n\n return (\n \n \n {renderInput('displayName')}\n {renderInput('email')}\n \n \n Cancel\n \n  | \n \n Save\n \n \n \n \n \n );\n};\n\nSuperUserForm.propTypes = {\n initialValue: PropTypes.object,\n isSaving: PropTypes.bool,\n onCancel: PropTypes.func,\n onSave: PropTypes.func,\n};\n\nexport default SuperUserForm;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport UserListRow from './UserListRow';\nimport UserForm from './UserForm';\nimport { columnWidths } from './UserList.constants';\nimport { usePracticeApi } from '../../api/practice';\nimport { useUserApi } from '../../api/user';\nimport useRowForm, { NEW_ROW_ID } from '../../hooks/useRowForm';\nimport { useAppContext } from '../../providers/AppProvider';\nimport { useAuthContext } from '../../providers/AuthProvider';\nimport ConfirmDeleteModal from '../ConfirmDeleteModal';\nimport FullWidthWrapper from '../FullWidthWrapper';\nimport LoadingSpinner from '../LoadingSpinner';\nimport * as roles from '../../constants/roles';\nimport * as colors from '../../styles/colors';\n\nimport { ListTitleBar, List, DataColumn, TitleColumn } from '../List';\n\nconst UserList = ({ onCloseNewRow, showNewRow }) => {\n const { CreateUser, DeleteUser, EditUser } = useUserApi();\n const { ListenToPracticeUserUpdates } = usePracticeApi();\n const { setGlobalError } = useAppContext();\n const { user } = useAuthContext();\n\n const createUser = async (newUser) => {\n try {\n return await CreateUser(roles.GENERAL_USER, newUser, user.practiceId);\n } catch (err) {\n console.log(err);\n setGlobalError({\n error: err,\n message: err.message,\n });\n }\n };\n const {\n activateEditMode,\n deactivateEditMode,\n clearDeleteConfirmation,\n data: users,\n deleteConfirmation,\n editModeRows,\n handleCreate,\n handleDelete,\n handleUpdate,\n isLoading,\n pendingChanges,\n showDeleteConfirmation,\n } = useRowForm({\n apiMethods: useMemo(\n () => ({\n create: createUser,\n subscribe: (onSuccess) => {\n return ListenToPracticeUserUpdates(user.practiceId, onSuccess);\n },\n update: EditUser,\n delete: (newUser) => DeleteUser(newUser, user.practiceId),\n }),\n [user],\n ),\n onCreateSuccess: () => {\n onCloseNewRow();\n },\n });\n\n const generalUsers = users.filter((u) => u.role === roles.GENERAL_USER);\n\n return (\n \n \n Office Users\n Email\n \n \n \n {isLoading && }\n {!isLoading && (\n \n {showNewRow && !pendingChanges.includes(NEW_ROW_ID) && (\n \n )}\n {!!generalUsers.length &&\n generalUsers.map((u, i) =>\n editModeRows.includes(u.id) ? (\n deactivateEditMode(u)}\n onSave={handleUpdate}\n />\n ) : (\n activateEditMode(u)}\n onRemoveUser={() => showDeleteConfirmation(u)}\n user={u}\n />\n ),\n )}\n \n )}\n handleDelete()}\n onCancel={clearDeleteConfirmation}\n />\n \n );\n};\n\nUserList.propTypes = {\n noResultsText: PropTypes.string,\n onCloseNewRow: PropTypes.func,\n showNewRow: PropTypes.bool,\n};\n\nexport default UserList;\n","import styled from 'styled-components';\nimport { h1, bold } from '../styles/typography';\n\nconst PageHeading = styled.h1`\n ${h1}\n ${bold}\n color: ${({ theme }) => theme.foreground};\n margin-bottom: 1em;\n width: ${(props) => (props.fullWidth ? '100%' : 'auto')};\n`;\n\nexport default PageHeading;\n","export const size = {\n mobileS: '320px',\n mobileM: '375px',\n mobileL: '425px',\n tablet: '768px',\n laptop: '1024px',\n laptopL: '1440px',\n desktop: '2560px',\n};\n\nexport const device = {\n mobileS: `(min-width: ${size.mobileS})`,\n mobileM: `(min-width: ${size.mobileM})`,\n mobileL: `(min-width: ${size.mobileL})`,\n tablet: `(min-width: ${size.tablet})`,\n laptop: `(min-width: ${size.laptop})`,\n laptopL: `(min-width: ${size.laptopL})`,\n desktop: `(min-width: ${size.desktop})`,\n desktopL: `(min-width: ${size.desktop})`,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { device } from '../styles/breakpoints';\nimport { important, margin, stripUnit } from 'polished';\n\nimport { pageHorizontalPadding } from '../styles/constants';\n\n// important margin helps enforce consistent positioning for banner ads\n// regardless of other page content. Would love a good way to remove this\n// without carving out exceptions in other stylesheets.\nconst BannerWrapper = styled.a`\n ${important(margin('20px', 0))};\n align-items: center;\n background-color: #f5f8fa;\n border-bottom: 1px solid #d1d1d1;\n border-top: 1px solid #d1d1d1;\n cursor: pointer;\n display: flex;\n height: 90px;\n justify-content: center;\n width: calc(100% + ${stripUnit(pageHorizontalPadding) * 2}px);\n position: relative;\n\n @media ${device.laptop} {\n height: 75px;\n }\n`;\n\nconst TextWrapper = styled.div`\n display: flex;\n align-items: end;\n position: absolute;\n right: 20px;\n height: 100%;\n font-size: 0.75rem;\n\n @media ${device.laptop} {\n height: 60px;\n }\n`;\n\nconst BannerAd = ({ imgSrc, href, alt, jobNumber }) => (\n \n {alt}\n {jobNumber}\n \n);\n\nBannerAd.propTypes = {\n imgSrc: PropTypes.string.isRequired,\n href: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n jobNumber: PropTypes.string.isRequired,\n};\n\nexport default BannerAd;\n","import styled from 'styled-components';\n\nconst FooterText = styled.div`\n font-size: 0.8rem;\n display: flex;\n & > div {\n width: 50%;\n }\n`;\n\nexport default FooterText;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport * as typography from '../styles/typography';\nimport FooterText from './FooterText';\n\nconst LargerBoldFooterText = styled.div`\n font-size: 1rem;\n ${typography.bold};\n & > div {\n width: 50%;\n }\n & > sup {\n vertical-align: top;\n font-size: 0.6em;\n }\n`;\n\nconst BoldText = styled.span`\n ${typography.bold};\n`;\n\nconst LineBreak = styled.div`\n margin: 16px;\n`;\n\nconst PageFooterDisclaimer = ({ isISI }) => (\n \n \n Information contained on this website comes directly from the payer's\n medical policy, is subject to change, and is not a guarantee of insurance\n coverage. This information is provided for your education only, and it\n should not be construed as medical advice. Patient-specific coverage may\n vary from the medical policy. Refer to the LIBTAYO Surround\n ® benefits verification or your patient's plan\n document to verify patient-specific coverage.\n \n {isISI && }\n \n \n LIBTAYO® and LIBTAYO Surround® are registered\n trademarks of Regeneron Pharmaceuticals, Inc.\n \n \n {isISI && }\n \n Other trademarks or registered trademarks are the property of their\n respective owners.\n \n \n);\n\nPageFooterDisclaimer.propTypes = {\n isISI: PropTypes.bool,\n};\n\nexport default PageFooterDisclaimer;\n","import routes from './routes';\n\nexport const siteMetadata = {\n [routes.login]: {\n title: 'LIBTAYO Payer Policy Portal',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: false,\n },\n [`${routes.login}/forgot`]: {\n title: 'LIBTAYO Payer Policy Portal',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: false,\n },\n\n [routes.home]: {\n title: 'Home',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.findCoverage]: {\n title: 'Find Insurance Coverage',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n [`${routes.findCoverage}/results`]: {\n title: 'Results',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.findPolicy]: {\n title: 'Find a Medical Policy',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.findPriorAuth]: {\n title: 'Find a PA Form',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.pathwayStatus]: {\n title: 'Pathway Status',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n [`${routes.pathwayStatus}/results`]: {\n title: 'Pathway Status: Results',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.userGuide]: {\n title: 'User Guide',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n\n [routes.resources]: {\n title: 'Resources',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n [routes.admin]: {\n title: 'Admin Settings',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n showBanners: true,\n },\n};\n\nexport const isiMetadata = {\n title: 'Isi',\n jobNumber: 'US.LIB.24.03.0011',\n lastUpdated: '05/24',\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_1792\",\n \"data-name\": \"Group 1792\",\n transform: \"translate(-277.574 -53.006)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_1790\",\n \"data-name\": \"Group 1790\",\n transform: \"translate(277.574 53.006)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1928\",\n \"data-name\": \"Path 1928\",\n d: \"M281.941,53.773h9.924c3.753-.059,6.2,1.425,6.2,5.442a5.566,5.566,0,0,1-4.772,5.588v.059c1.717.524,2.153,2.037,2.153,3.666,0,.932-.147,2.328-.147,3.608a7.342,7.342,0,0,0,.292,2.416h-4.453a6,6,0,0,1-.2-1.4c0-1.4.233-2.823.233-4.22,0-2.008-1.192-2.5-3-2.5H283.86l-1.717,8.12h-4.57Zm2.619,9.4h4.22c2.416-.03,4.714-.96,4.714-3.289,0-2.241-1.571-2.561-3.375-2.561h-4.337Z\",\n transform: \"translate(-277.574 -53.278)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1929\",\n \"data-name\": \"Path 1929\",\n d: \"M314.55,53.774h15.86l-.785,3.842H318.332l-.932,4.452h10.448l-.756,3.552H316.644l-1.077,5.092h11.467l-.814,3.842H310.183Z\",\n transform: \"translate(-289.171 -53.279)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1930\",\n \"data-name\": \"Path 1930\",\n d: \"M356.683,72.155h-.057a6.328,6.328,0,0,1-5.239,2.619c-5.821,0-9.226-3.346-9.226-9.2,0-6.723,4.337-12.572,11.35-12.572,4.862,0,8.819,2.27,8.819,7.363h-4.57c-.117-2.5-1.689-3.521-4.22-3.521-4.685,0-6.81,4.743-6.81,8.73,0,2.852,1.4,5.355,4.715,5.355,3.463,0,4.976-1.834,5.763-4.482h-4.8l.727-3.406h8.817L359.564,74.28h-2.881Z\",\n transform: \"translate(-300.543 -53.006)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1931\",\n \"data-name\": \"Path 1931\",\n d: \"M378.954,53.774h15.862l-.787,3.842H382.737l-.93,4.452h10.448l-.757,3.552H381.05l-1.077,5.092h11.465l-.814,3.842H374.589Z\",\n transform: \"translate(-312.076 -53.279)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1932\",\n \"data-name\": \"Path 1932\",\n d: \"M409.108,53.774h4.715l5.645,14.784h.058l2.97-14.784h4.19l-4.395,20.779h-4.569l-5.7-14.581h-.057l-2.969,14.581h-4.279Z\",\n transform: \"translate(-322.79 -53.279)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1933\",\n \"data-name\": \"Path 1933\",\n d: \"M442.546,53.774h15.862l-.787,3.842H446.329l-.93,4.452h10.448l-.756,3.552H444.642l-1.077,5.092h11.466l-.815,3.842H438.181Z\",\n transform: \"translate(-334.692 -53.279)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1934\",\n \"data-name\": \"Path 1934\",\n d: \"M472.671,53.773h9.924c3.753-.059,6.2,1.425,6.2,5.442a5.566,5.566,0,0,1-4.772,5.588v.059c1.717.524,2.153,2.037,2.153,3.666,0,.932-.147,2.328-.147,3.608a7.341,7.341,0,0,0,.292,2.416h-4.452a5.965,5.965,0,0,1-.2-1.4c0-1.4.233-2.823.233-4.22,0-2.008-1.193-2.5-3-2.5h-4.308l-1.717,8.12H468.3Zm2.619,9.4h4.22c2.416-.03,4.714-.96,4.714-3.289,0-2.241-1.571-2.561-3.375-2.561h-4.337Z\",\n transform: \"translate(-345.405 -53.278)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1935\",\n \"data-name\": \"Path 1935\",\n d: \"M514.116,53.006c5.617,0,9.225,3.085,9.225,8.906,0,6.839-4.073,12.863-11.348,12.863-5.821,0-9.227-3.346-9.227-9.2C502.766,58.856,507.1,53.006,514.116,53.006Zm-2.065,17.927c4.482,0,6.722-4.773,6.722-8.7,0-2.911-1.281-5.384-4.626-5.384-4.686,0-6.811,4.743-6.811,8.73C507.335,68.43,508.732,70.933,512.051,70.933Z\",\n transform: \"translate(-357.661 -53.006)\",\n fill: \"#0f4dbc\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1936\",\n \"data-name\": \"Path 1936\",\n d: \"M540.448,53.774h4.714l5.647,14.784h.058l2.968-14.784h4.192l-4.395,20.779h-4.57l-5.7-14.581H543.3L540.33,74.553h-4.277Z\",\n transform: \"translate(-369.499 -53.279)\",\n fill: \"#0f4dbc\"\n})), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_1791\",\n \"data-name\": \"Group 1791\",\n transform: \"translate(472.434 53.006)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_1937\",\n \"data-name\": \"Path 1937\",\n d: \"M585.106,53.886a2.892,2.892,0,0,0-2.121-.88,2.94,2.94,0,0,0-2.065.814,2.863,2.863,0,0,0-.936,2.187,3,3,0,1,0,5.123-2.121Zm-.374,3.889a2.456,2.456,0,0,1-3.5,0,2.491,2.491,0,0,1-.012-3.51,2.435,2.435,0,0,1,3.514,0,2.488,2.488,0,0,1,0,3.506Zm-.388-.289a.712.712,0,0,1-.007-.1v-.3a.9.9,0,0,0-.293-.746,1.119,1.119,0,0,0-.472-.193,1.085,1.085,0,0,0,.577-.224.726.726,0,0,0,.233-.605.837.837,0,0,0-.444-.794,1.606,1.606,0,0,0-.655-.171c-.047,0-.276,0-.686-.006l-.927,0v3.328h.872V56.5h.184l.191.012a.983.983,0,0,1,.3.052.405.405,0,0,1,.245.244,1.554,1.554,0,0,1,.055.407,2.47,2.47,0,0,0,.054.461h.831l-.031-.094A.519.519,0,0,1,584.343,57.486Zm-.988-1.707a.807.807,0,0,1-.477.123h-.338v-.966h.211a1.45,1.45,0,0,1,.506.07.381.381,0,0,1,.269.378A.45.45,0,0,1,583.355,55.779Z\",\n transform: \"translate(-579.983 -53.006)\",\n fill: \"#0f4dbc\",\n fillRule: \"evenodd\"\n})));\n\nfunction SvgRegeneronLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 200.863,\n height: 21.768,\n viewBox: \"0 0 200.863 21.768\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRegeneronLogo);\nexport default __webpack_public_path__ + \"static/media/regeneron_logo.e90d6c61.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport Link from './Link';\nimport FooterText from './FooterText';\nimport PageFooterDisclaimerText from './PageFooterDisclaimerText';\nimport { siteMetadata, isiMetadata } from '../constants/siteMetadata';\nimport * as colors from '../styles/colors';\nimport { ReactComponent as LogoSvg } from '../assets/images/regeneron_logo.svg';\n\nconst FOOTER_LINKS = {\n PRIVACY_POLICY: 'https://www.regeneron.com/privacy-policy',\n TERMS_OF_USE: 'https://www.regeneron.com/terms',\n CONTACT_US: 'https://www.regeneron.com/contact',\n CONSUMER_HEALTH:\n 'https://www.regeneron.com/downloads/consumer-health-data-privacy-policy.pdf',\n};\n\nconst FooterMetadata = styled.div`\n align-items: flex-end;\n display: flex;\n justify-content: flex-end;\n flex-direction: column;\n & > div {\n align-items: flex-end;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n & > * {\n text-align: center;\n margin-left: 16px;\n margin-top: 8px;\n }\n }\n`;\nconst FooterLink = styled(Link).attrs({\n rel: 'noreferrer',\n target: '_blank',\n})`\n text-transform: uppercase;\n`;\nconst PrivacyPreferenceCenter = styled(FooterLink)`\n text-transform: uppercase;\n #ot-sdk-btn {\n font-family: 'Barlow-Bold' !important;\n color: #ffffff !important;\n border: none !important;\n height: auto;\n white-space: normal;\n word-wrap: break-word;\n padding: 0 !important;\n font-size: 14px !important;\n line-height: 1.6 !important;\n cursor: pointer;\n -moz-transition: 0.1s ease;\n -o-transition: 0.1s ease;\n -webkit-transition: 1s ease;\n transition: 0.1s ease;\n }\n #ot-sdk-btn.ot-sdk-show-settings:hover,\n #ot-sdk-btn.optanon-show-settings:hover {\n color: #fff;\n background-color: transparent !important;\n }\n`;\n\nconst RegeneronLogo = styled(LogoSvg)`\n width: 115px;\n path {\n fill: ${({ isISI }) => (isISI ? colors.blankWhite : colors.black)};\n }\n`;\nconst PageFooterWrapper = styled.div`\n color: ${({ theme, isISI }) => (isISI ? theme.text : colors.black)};\n display: flex;\n flex-direction: column;\n & ${RegeneronLogo} {\n color: ${({ theme }) => theme.foreground};\n margin-top: 16px;\n }\n & > * {\n margin: 6px 0;\n }\n`;\n\nconst PageFooter = ({ inverted, isISI, ...rest }) => {\n const { path } = useRouteMatch();\n const { jobNumber, lastUpdated } = isISI\n ? isiMetadata\n : siteMetadata[path] || {};\n\n const openPrivacyCenter = () => {\n const btn = document.querySelector('#ot-sdk-btn-floating button');\n btn.click();\n };\n return (\n \n {!isISI && }\n \n
\n \n
\n © {new Date().getFullYear()} Regeneron Pharmaceuticals, Inc.\n All rights reserved.\n
\n
\n {jobNumber}\n  \n {lastUpdated}\n
\n
\n Questions or comments? Call 1.877.734.6777 to contact Regeneron\n Pharmaceuticals, Inc.\n
\n
777 Old Saw Mill Road, Tarrytown, NY 10591
\n
\n \n
\n \n Consumer Health Data Privacy Policy\n \n \n Privacy Preferences Center\n \n \n Privacy Policy\n \n \n Terms of Use\n \n Contact Us\n
\n
\n
\n
\n );\n};\n\nPageFooter.propTypes = {\n inverted: PropTypes.bool,\n isISI: PropTypes.bool,\n};\n\nexport default PageFooter;\n","export default __webpack_public_path__ + \"static/media/libtayo_banner_ad.b1e05374.png\";","import React from 'react';\nimport { padding } from 'polished';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { Helmet } from 'react-helmet-async';\nimport { useRouteMatch } from 'react-router-dom';\n\nimport BannerAd from './BannerAd';\nimport PageFooter from './PageFooter';\nimport * as colors from '../styles/colors';\nimport {\n headerHeight,\n footerHeight,\n pageHorizontalPadding,\n} from '../styles/constants';\nimport BannerTop from '../assets/images/libtayo_banner_ad.png';\nimport { siteMetadata } from '../constants/siteMetadata';\nimport { calcViewArea } from '../styles/utils';\n\nconst StyledPageFooter = styled(PageFooter)`\n margin-top: 4rem;\n`;\n\nconst PageWrapper = ({ children, className }) => {\n const { path } = useRouteMatch();\n const { showBanners, title } = siteMetadata[path];\n\n return (\n
\n \n {title}\n \n {showBanners && (\n \n )}\n {children}\n {showBanners && (\n \n )}\n \n
\n );\n};\n\nPageWrapper.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n};\n\nPageWrapper.defaultProps = {\n title: 'Payer Policy',\n className: '',\n};\n\nconst pageTopPadding = '32px';\nconst pageBottomPadding = '24px';\nconst viewArea = calcViewArea(footerHeight, headerHeight);\n\nconst StyledPageWrapper = styled(PageWrapper)`\n ${padding(pageTopPadding, pageHorizontalPadding, pageBottomPadding)}\n align-items: center;\n background-color: ${colors.white};\n border-left: 1px solid ${colors.darkBlue};\n border-right: 1px solid ${colors.darkBlue};\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n height: fit-content;\n min-height: ${viewArea};\n`;\n\nexport default StyledPageWrapper;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { usePracticeApi } from '../api/practice';\nimport * as Icons from '../components/Icons';\nimport { linkStyles } from '../components/Link';\nimport PracticeList from '../components/PracticeList';\nimport UserList from '../components/UserList';\nimport PageHeading from '../components/PageHeading';\nimport PageWrapper from '../components/PageWrapper';\nimport * as roles from '../constants/roles';\nimport useApiMethod from '../hooks/useApiMethod';\nimport { useAppContext } from '../providers/AppProvider';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport * as typography from '../styles/typography';\n\nconst HeadingRow = styled.div`\n display: flex;\n width: 100%;\n margin: 24px 0;\n`;\nconst HeadingRowSpacer = styled.div`\n width: 100%;\n`;\nconst HeadingRowCenterContent = styled.div`\n width: 100%;\n text-align: center;\n`;\nconst MainHeadingText = styled(PageHeading)`\n width: 100%;\n margin: 0;\n`;\nconst SubHeadingText = styled.div`\n margin-top: 16px;\n`;\nconst PolicyVisibilityToggleWrapper = styled.div`\n ${typography.body};\n ${typography.bold};\n display: flex;\n width: 100%;\n justify-content: end;\n & > * {\n margin-left: 8px;\n }\n`;\nconst ToggleIconWrapper = styled.div`\n cursor: pointer;\n margin-bottom: -4px;\n`;\nconst ListControlRow = styled.div`\n ${typography.h6};\n display: flex;\n margin-bottom: 16px;\n width: 100%;\n`;\nconst ListControlRowItem = styled.div`\n display: flex;\n justify-content: ${(props) => props.align};\n width: 50%;\n`;\nconst Strong = styled.span`\n ${typography.bold};\n`;\nconst TextButton = styled.span`\n ${linkStyles};\n color: ${({ theme }) => theme.foreground};\n text-decoration: underline;\n`;\n\nconst roleText = {\n [roles.RBM]: {\n heading: 'Practices',\n newButton: 'PRACTICE',\n },\n [roles.SUPER_USER]: {\n heading: 'Office',\n newButton: 'NEW USER',\n },\n};\n\nconst AdminPage = () => {\n const [showNewRow, setShowNewRow] = useState(false);\n\n const { SetAllPoliciesVisibilityForPractice } = usePracticeApi();\n const {\n apiMethod: setAllPolicyVisibility,\n loading: visibilityToggleLoading,\n } = useApiMethod(SetAllPoliciesVisibilityForPractice);\n const { practice, refetchPractice } = useAppContext();\n const { user } = useAuthContext();\n const pageText = roleText[user.role];\n\n const ToggleIcon = practice?.allPoliciesVisible\n ? Icons.ToggleOn\n : Icons.ToggleOff;\n\n const handleToggleAllPolicyVisibility = async () => {\n if (visibilityToggleLoading) return;\n await setAllPolicyVisibility(practice.id, !practice.allPoliciesVisible);\n refetchPractice();\n };\n\n return (\n \n \n \n\n \n Manage My {pageText.heading}\n \n {user.displayName || user.email}\n  ({roles.ROLE_TEXT[user.role]})\n \n \n\n \n {user.role === roles.SUPER_USER && (\n <>\n All health plans viewable to General Users\n \n {ToggleIcon}\n \n \n )}\n \n \n \n \n \n setShowNewRow(true)}>\n + ADD {pageText.newButton}\n \n \n \n {user.role === roles.SUPER_USER && (\n setShowNewRow(false)}\n showNewRow={showNewRow}\n />\n )}\n {user.role === roles.RBM && (\n setShowNewRow(false)}\n showNewRow={showNewRow}\n />\n )}\n \n );\n};\n\nexport default AdminPage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as colors from '../styles/colors';\nimport ReactSelect, { components } from 'react-select';\n\nexport const selectStyles = {\n control: (\n provided,\n { isFocused, hasValue, isDisabled, isPi, selectProps },\n ) => ({\n ...provided,\n cursor: 'pointer',\n borderColor:\n isFocused || hasValue ? colors.darkBlue : colors.greyscale[600],\n borderRadius: 0,\n backgroundColor: (() => {\n if (selectProps.backgroundColor) {\n return selectProps.backgroundColor;\n } else if (isDisabled) {\n return colors.greyscale[200];\n } else if (isFocused || hasValue) {\n return colors.darkBlue;\n }\n return colors.white;\n })(),\n color: isFocused || hasValue ? colors.white : colors.greyscale[500],\n fontFamily: 'Arial Bold',\n fontWeight: 'bold',\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none',\n },\n transition: 'none',\n }),\n singleValue: (provided) => ({\n ...provided,\n color: colors.white,\n }),\n indicatorSeparator: () => ({\n display: 'none',\n }),\n dropdownIndicator: (provided, { isFocused, hasValue }) => ({\n transition: 'none',\n display: 'block',\n fontSize: '20px',\n fontFamily: 'Helvetica, Arial, Sans-serif',\n marginRight: '12px',\n }),\n placeholder: (provided, { isFocused }) => ({\n color: isFocused ? colors.white : colors.greyscale[500],\n }),\n menu: (provided) => ({\n ...provided,\n borderRadius: 0,\n padding: 0,\n margin: 0,\n top: 38,\n border: `1px solid ${colors.greyscale[600]}`,\n borderTop: 0,\n boxShadow: 'none',\n }),\n container: (provided) => ({\n width: '100%',\n ...provided,\n }),\n option: (provided, { isDisabled, isFocused, data }) => ({\n ...provided,\n margin: 0,\n background: colors.white,\n fontFamily: 'Arial Bold',\n color: (() => {\n if (isFocused) {\n return data.color ?? colors.darkBlue;\n } else if (isDisabled) {\n return colors.greyscale[200];\n } else {\n return colors.greyscale[500];\n }\n })(),\n fontWeight: 'bold',\n cursor: 'pointer',\n }),\n};\n\nconst DropdownIndicator = (props) => (\n \n ▾\n \n);\n\nconst Select = ({\n options,\n placeholder,\n value,\n valueProp,\n onChange,\n isDisabled,\n isOptionDisabled,\n styles,\n ...rest\n}) => {\n const handleChange = (option) => {\n return valueProp ? onChange(option[valueProp]) : onChange(option);\n };\n const internalValue = valueProp\n ? options.find((o) => o[valueProp] === value)\n : value;\n\n return (\n \n );\n};\n\nSelect.propTypes = {\n value: PropTypes.any,\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any,\n label: PropTypes.string,\n }),\n ).isRequired,\n placeholder: PropTypes.string,\n isDisabled: PropTypes.bool,\n isOptionDisabled: PropTypes.func,\n valueProp: PropTypes.string,\n styles: PropTypes.object,\n};\n\nSelect.defaultProps = {\n value: undefined,\n onChange: () => {},\n placeholder: undefined,\n isDisabled: false,\n isOptionDisabled: () => false,\n styles: undefined,\n};\n\nexport default Select;\n","import styled from 'styled-components';\nimport { bold, h3 } from '../styles/typography';\n\nconst PageSubheading = styled.h3`\n ${h3};\n ${bold};\n color: ${({ theme }) => theme.foreground};\n margin-bottom: 1em;\n width: ${(props) => (props.fullWidth ? '100%' : 'auto')};\n`;\n\nexport default PageSubheading;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PropTypes from 'prop-types';\nimport ReactUSAMap from 'react-usa-map';\n\nimport * as colors from '../styles/colors';\n\nconst StyledContainer = styled.div`\n &.enabled {\n path {\n pointer-events: all;\n }\n path:hover {\n cursor: pointer;\n opacity: 0.5;\n }\n }\n\n svg {\n max-width: 100%;\n }\n`;\n\nconst USAMap = ({ value, onClickState, disabled }) => {\n const handleClick = (event) => {\n if (!disabled) {\n let state = event.target.dataset.name;\n // https://github.com/gabidavila/react-usa-map/issues/43\n if (state === 'DC') {\n state = 'DC2';\n }\n onClickState(state);\n }\n };\n\n const customConfig = {\n [value]: {\n fill: colors.darkBlue,\n },\n };\n\n return (\n \n \n \n );\n};\n\nUSAMap.propTypes = {\n onClickState: PropTypes.func,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nUSAMap.defaultProps = {\n value: undefined,\n disabled: false,\n};\n\nexport default USAMap;\n","import styled from 'styled-components';\nimport * as colors from '../styles/colors';\nimport { h3 } from '../styles/typography';\n\nconst JumboButton = styled.button`\n ${h3}\n cursor: pointer;\n padding: 2rem 6rem;\n font-weight: bold;\n background-color: ${({ theme }) => theme.background};\n color: ${({ theme }) => theme.foreground};\n border: 4px solid ${({ theme }) => theme.accent};\n border-radius: 12px;\n &:disabled {\n cursor: default;\n background-color: ${({ theme }) => theme.disabled};\n border-color: ${colors.white};\n }\n`;\n\nexport default JumboButton;\n","import styled from 'styled-components';\nimport * as colors from '../styles/colors';\nimport * as typography from '../styles/typography';\n\nconst ProductIndicator = styled.div`\n ${typography.bold}\n border: 1px solid ${colors.greyscale[600]};\n background-color: ${(props) => props.backgroundColor};\n color: white;\n min-height: 36px;\n line-height: 36px;\n padding-left: 8px;\n`;\n\nexport default ProductIndicator;\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport qs from 'query-string';\n\nimport { useHistory } from 'react-router-dom';\n\nimport Select from '../components/Select';\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport PageSubheading from '../components/PageSubheading';\nimport USAMap from '../components/USAMap';\nimport JumboButton from '../components/JumboButton';\nimport ProductIndicator from '../components/ProductIndicator';\nimport { device } from '../styles/breakpoints';\nimport { darkTheme } from '../styles/themes';\nimport {\n CHANNEL_OPTIONS,\n STATE_AND_TERRITORY_OPTIONS,\n LIBTAYO_ID,\n} from '../constants';\nimport { getCoverageTitle, getProductById } from '../helpers';\nimport { useAuthContext } from '../providers/AuthProvider';\n\nconst SelectsContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n`;\n\nconst SelectContainer = styled.div`\n flex-basis: 20%;\n flex-grow: 1;\n margin-bottom: 4px;\n padding: 0 6px;\n`;\n\nconst FlexWrapBreak = styled.div`\n flex-basis: 100%;\n height: 0;\n @media ${device.laptop} {\n flex-basis: 0;\n }\n`;\n\nconst ContinueButton = styled(JumboButton).attrs({\n theme: darkTheme,\n})`\n margin-top: 2rem;\n margin-bottom: 1rem;\n padding: 1rem 6rem;\n`;\n\nconst CoverageSelection = () => {\n const history = useHistory();\n const { user } = useAuthContext();\n\n const product = getProductById(LIBTAYO_ID);\n const [usState, setUSState] = useState(null);\n const [channel, setChannel] = useState(null);\n const [indication, setIndication] = useState(null);\n\n const isIndicationSelectionDisabled = !product;\n const isUSStateSelectionDisabled = !channel || !indication;\n const isContinueButtonDisabled = isUSStateSelectionDisabled || !usState;\n\n useEffect(() => {\n const isIndicationAvailable = product?.indications.includes(indication);\n if (!isIndicationAvailable) {\n setIndication(null);\n }\n }, [product]);\n\n const handleClickContinue = () => {\n const params = {\n productId: product.value,\n usState,\n channelId: channel.value,\n indicationId: indication.value,\n };\n // https://github.com/gabidavila/react-usa-map/issues/43\n if (params.usState === 'DC2') {\n params.usState = 'DC';\n }\n history.push(`/coverage/results?${qs.stringify(params)}`);\n };\n\n return (\n \n {getCoverageTitle(user.role)}\n \n \n \n {product?.expandedLabel}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n Choose State\n \n\n \n\n \n Continue\n \n \n );\n};\n\nexport default CoverageSelection;\n","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport * as Icons from './Icons';\nimport Input from './Input';\nimport { linkStyles } from './Link';\nimport * as typography from '../styles/typography';\nimport { boxShadowStandard } from '../styles/constants';\nimport { darkTheme } from '../styles/themes';\n\nconst GoButton = styled.span`\n ${typography.bold};\n cursor: pointer;\n`;\n\nconst ContentWrapper = styled.div`\n box-shadow: ${boxShadowStandard};\n color: ${({ theme }) => theme.text};\n cursor: default;\n display: flex;\n flex-direction: row;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 9;\n`;\nconst FieldsPane = styled.div.attrs({\n theme: darkTheme,\n})`\n background-color: ${({ theme }) => theme.background};\n color: ${({ theme }) => theme.foreground};\n padding: 18px 12px;\n position: relative;\n min-width: 260px;\n`;\nconst SearchPane = styled.form`\n background-color: ${({ theme }) => theme.background};\n padding: 18px 12px;\n width: 220px;\n`;\n\nconst FiltersIcon = styled.div`\n cursor: pointer;\n position: absolute;\n right: 14px;\n top: 8px;\n`;\nconst FieldLabel = styled.div.attrs({\n theme: darkTheme,\n})`\n ${linkStyles};\n ${typography.h6};\n ${typography.bold};\n color: ${(props) => props.selected && props.theme.accent};\n line-height: 2rem;\n width: fit-content;\n`;\n\nconst PolicyFilterMenu = ({ fields, activeFilters, onClose, onSetFilter }) => {\n const [activeField, setActiveField] = useState(null);\n const [filterInputValue, setFilterInputValue] = useState('');\n\n const selectField = (e, value) => {\n setActiveField(value);\n };\n const handleSetFilter = (e) => {\n e?.preventDefault();\n if (!filterInputValue) return;\n\n onSetFilter(activeField, filterInputValue);\n setActiveField(null);\n setFilterInputValue('');\n onClose();\n };\n\n const getFieldSelectedState = (field) => {\n if (activeField) return activeField === field;\n return !!activeFilters[field];\n };\n\n const handleChangeInput = useCallback(\n (e) => setFilterInputValue(e.target.value),\n [setFilterInputValue]\n );\n\n return (\n e.stopPropagation()}>\n {!!activeField && (\n \n GO }\n inputProps={{\n autoFocus: true,\n onChange: handleChangeInput,\n value: filterInputValue,\n }}\n />\n \n )}\n \n {Icons.Filters}\n {fields.map(({ label, value }) => (\n selectField(e, value)}\n selected={getFieldSelectedState(value)}\n >\n {label}\n \n ))}\n \n \n );\n};\n\nPolicyFilterMenu.propTypes = {\n fields: PropTypes.array,\n activeFilters: PropTypes.object,\n onClose: PropTypes.func,\n onSetFilter: PropTypes.func,\n};\n\nexport default PolicyFilterMenu;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { linkStyles } from './Link';\nimport * as typography from '../styles/typography';\nimport * as colors from '../styles/colors';\nimport * as Icons from './Icons';\nimport { ListTitleBar, ListTitleHeader, LIST_PADDING_X } from './List';\nimport ListFilterMenu from './ListFilterMenu';\n\nconst StyledTitleBar = styled(ListTitleBar)`\n align-items: stretch;\n margin-bottom: 24px;\n padding: 0px;\n background-color: ${(props) => props.backgroundColor || colors.darkBlue};\n`;\n\nconst ProductWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\nconst ProductIndicator = styled.div`\n width: ${LIST_PADDING_X};\n height: 100%;\n margin-right: ${LIST_PADDING_X};\n background-color: ${(props) => props.color || 'transparent'};\n`;\nconst FilterControlsWrapper = styled.div`\n align-items: center;\n display: flex;\n justify-content: flex-end;\n margin: 8px ${LIST_PADDING_X};\n & > div {\n margin-left: 16px;\n }\n`;\nconst ClearFiltersButton = styled.div`\n ${linkStyles};\n ${typography.bold};\n color: ${colors.white};\n`;\nconst FiltersIcon = styled.div`\n ${typography.caption};\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n position: relative;\n & svg {\n stroke: ${(props) => props.active && colors.lightYellow};\n }\n`;\n\nconst FilterableListTitleBar = ({\n indicatorColor,\n title,\n backgroundColor,\n isListFiltered,\n filterFields,\n filters,\n onClearFilters,\n onSetFilter,\n}) => {\n const [isFilterMenuOpen, setIsFilterMenuOpen] = useState(false);\n\n return (\n \n \n \n {title}\n \n \n {isListFiltered && (\n \n SHOW ALL\n \n )}\n setIsFilterMenuOpen(!isFilterMenuOpen)}\n >\n {Icons.Filters}\n FILTER\n {isFilterMenuOpen && (\n setIsFilterMenuOpen(false)}\n onClearFilter={onClearFilters}\n onSetFilter={onSetFilter}\n />\n )}\n \n \n \n );\n};\n\nFilterableListTitleBar.propTypes = {\n backgroundColor: PropTypes.string,\n indicatorColor: PropTypes.string,\n title: PropTypes.string.isRequired,\n isListFiltered: PropTypes.bool.isRequired,\n filterFields: PropTypes.array,\n filters: PropTypes.array,\n onClearFilters: PropTypes.func.isRequired,\n onSetFilter: PropTypes.func.isRequired,\n};\n\nexport default FilterableListTitleBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport * as Icons from './Icons';\nimport { SortIcon, DataColumn } from './List';\n\nconst Wrapper = styled(DataColumn)`\n & > div {\n cursor: pointer;\n }\n`;\n\nconst SortableListTitleColumn = ({\n onClick,\n order,\n text,\n width,\n className,\n}) => {\n return (\n \n {order && (\n \n {Icons.ChevronUp}\n \n )}\n
{text}
\n
\n );\n};\n\nSortableListTitleColumn.propTypes = {\n onClick: PropTypes.func,\n order: PropTypes.oneOf(['asc', 'desc', '']),\n text: PropTypes.string,\n width: PropTypes.string,\n className: PropTypes.string,\n};\n\nexport default SortableListTitleColumn;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport * as colors from '../../styles/colors';\nimport { bold } from '../../styles/typography';\nimport {\n getChannelLabelById,\n getIndicationLabelById,\n getProductLabelById,\n} from '../../helpers';\nimport { ListBodyRowContent, IconColumn, DataColumn } from '../List';\nimport { policyPropType } from '../../propTypes';\n\nconst MetaColumn = styled(DataColumn)`\n color: ${colors.darkBlue};\n font-size: 9px;\n`;\n\nconst MetaList = styled.dl`\n text-transform: uppercase;\n margin: 0;\n & > * {\n display: inline-block;\n }\n`;\n\nconst MetaLabel = styled.dt`\n ${bold}\n &:after {\n content: ':';\n }\n`;\n\nconst MetaValue = styled.dd`\n margin: 0 8px 0 2px;\n`;\n\nconst PolicyListRowMeta = ({ policy, showVisibleToPractice }) => {\n return (\n \n {showVisibleToPractice && }\n \n \n \n Product\n {getProductLabelById(policy.productId)}\n\n Channel\n {getChannelLabelById(policy.channelId)}\n\n Indication\n {getIndicationLabelById(policy.indicationId)}\n\n State\n {policy.states.join(', ')}\n \n \n \n );\n};\n\nPolicyListRowMeta.propTypes = {\n policy: policyPropType.isRequired,\n showVisibleToPractice: PropTypes.bool.isRequired,\n};\n\nexport default PolicyListRowMeta;\n","import axios from 'axios';\nimport qs from 'query-string';\nimport FileDownload from 'js-file-download';\n\nimport { useAppContext } from '../providers/AppProvider';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport { useFirebaseContext } from '../providers/FirebaseProvider';\n\nconst hydraApi = axios.create({\n baseURL: process.env.REACT_APP_HYDRA_URL,\n});\n\nconst mapPolicyIds = (policies) =>\n policies.map((policy) => ({\n id: policy.id,\n indicationId: policy.indicationId,\n productId: policy.productId,\n }));\n\nconst mapDocumentLinksToRequests = (documentData, authToken) => {\n const docNames = documentData.map((d) => d.DocumentName);\n const requests = documentData.map(({ DocumentId }) =>\n hydraApi.get(`/document/${DocumentId}?authToken=${authToken}`, {\n responseType: 'blob',\n })\n );\n return { docNames, requests };\n};\n\nexport const usePolicyApi = () => {\n const { user } = useAuthContext();\n const { setGlobalError } = useAppContext();\n const firebase = useFirebaseContext();\n\n const fetchPolicyLinks = async (indication, selections, productName) => {\n try {\n const authToken = await firebase.auth().currentUser.getIdToken();\n const formularyId = selections.map((plan) => plan.formularyId);\n const queryString = qs.stringify({\n formularyId,\n indication,\n authToken,\n productName,\n });\n const { data: res } = await hydraApi.get('/priorauth?' + queryString);\n\n const mappedResults = selections.map((selection) => {\n const match = res.data.find(\n (r) => selection.formularyId === parseInt(r.formularyId)\n );\n if (!match) return selection;\n return { ...selection, docs: match.data };\n });\n return mappedResults;\n } catch (err) {\n console.log(err);\n setGlobalError({\n err: err,\n message: 'The server responded with a error, please try again later.',\n });\n }\n };\n\n const downloadPolicyDocuments = async (documentData) => {\n const authToken = await firebase.auth().currentUser.getIdToken();\n const { docNames, requests } = mapDocumentLinksToRequests(\n documentData,\n authToken\n );\n const responses = await axios.all(requests);\n const docs = responses.map(({ data }, index) => ({\n data,\n name: docNames[index],\n }));\n docs.forEach((d) => FileDownload(d.data, `${d.name}.pdf`));\n };\n\n const updateFavoritePolicies = async (policies) => {\n const mappedPolicies = mapPolicyIds(policies);\n return await firebase.firestore\n .collection('users')\n .doc(user.uid)\n .set({ policiesShownOnHomepage: mappedPolicies }, { merge: true });\n };\n\n const updateVisiblePolicies = async (policies) => {\n const mappedPolicies = mapPolicyIds(policies);\n return await firebase.firestore\n .collection('practices')\n .doc(user.practiceId)\n .set({ policies: mappedPolicies }, { merge: true });\n };\n\n return {\n downloadPolicyDocuments,\n fetchPolicyLinks,\n updateFavoritePolicies,\n updateVisiblePolicies,\n };\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { usePolicyApi } from '../api/policy';\nimport { createStateArrayUtils } from '../helpers';\nimport { useAppContext } from '../providers/AppProvider';\nimport { useAuthContext } from '../providers/AuthProvider';\n\nconst isPolicyEqual = (a, b) =>\n ['id', 'indicationId', 'productId'].every((field) => a[field] === b[field]);\n\nconst isPolicyInCollection = (collection) => (policy) => {\n return collection.some((item) => isPolicyEqual(item, policy));\n};\nconst addPolicyToCollection = (collection, updateFn) => async (policy) => {\n return await updateFn([...collection, policy]);\n};\nconst removePolicyFromCollection = (collection, updateFn) => async (policy) => {\n return await updateFn(collection.filter((p) => !isPolicyEqual(p, policy)));\n};\nconst createCollectionApi = (collection, updateFn) => ({\n add: addPolicyToCollection(collection, updateFn),\n includes: isPolicyInCollection(collection),\n remove: removePolicyFromCollection(collection, updateFn),\n});\n\nconst usePolicySelections = () => {\n const { policies, practice, refetchPractice } = useAppContext();\n const { refetchUser } = useAuthContext();\n const { updateFavoritePolicies, updateVisiblePolicies } = usePolicyApi();\n const [pendingChanges, setPendingChanges] = useState([]);\n\n const pendingChangesUtils = useMemo(\n () => createStateArrayUtils(setPendingChanges, pendingChanges),\n [pendingChanges],\n );\n\n const favoritesApi = useMemo(\n () => createCollectionApi(policies.favorites, updateFavoritePolicies),\n [policies.favorites],\n );\n\n const visibleApi = createCollectionApi(\n policies.visible,\n updateVisiblePolicies,\n );\n\n const toggleFavoritePolicy = async (policy) => {\n pendingChangesUtils.add(policy.id);\n if (!favoritesApi.includes(policy)) {\n if (!visibleApi.includes(policy) && !practice?.allPoliciesVisible) {\n await visibleApi.add(policy);\n await refetchPractice();\n }\n await favoritesApi.add(policy);\n } else {\n await favoritesApi.remove(policy);\n }\n await refetchUser();\n pendingChangesUtils.remove(policy.id);\n };\n\n const toggleVisiblePolicy = async (policy) => {\n pendingChangesUtils.add(policy.id);\n if (!visibleApi.includes(policy)) {\n await visibleApi.add(policy);\n } else {\n if (favoritesApi.includes(policy)) {\n await favoritesApi.remove(policy);\n await refetchUser();\n }\n await visibleApi.remove(policy);\n }\n await refetchPractice();\n pendingChangesUtils.remove(policy.id);\n };\n\n const getIsPending = useCallback(\n (policyId) => pendingChanges.includes(policyId),\n [pendingChanges],\n );\n\n return {\n getIsPending,\n toggleFavoritePolicy,\n toggleVisiblePolicy,\n };\n};\n\nexport default usePolicySelections;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\nimport { useLocation } from 'react-router-dom';\n\nimport * as Icons from '../Icons';\nimport {\n ListBodyRow,\n ListBodyRowContent,\n IconColumn,\n DataColumn,\n IconWrapper,\n} from '../List';\nimport PolicyListRowMeta from './PolicyListRowMeta';\nimport { FIELDS } from './PolicyList.constants';\nimport usePolicySelections from '../../hooks/usePolicySelections';\nimport { policyPropType } from '../../propTypes';\nimport { useAppContext } from '../../providers/AppProvider';\nimport { useAuthContext } from '../../providers/AuthProvider';\n\n// creates a method that we can pass directly into\n// Array.find() to match on id & indication\nconst findPolicyWithIndication = (policy) => (p) =>\n p.id === policy.id &&\n p.indicationId === policy.indicationId &&\n p.productId === policy.productId;\n\nconst PolicyRowIcon = ({ onClick, disabled, icon }) => (\n \n {icon}\n \n);\nPolicyRowIcon.propTypes = {\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n icon: PropTypes.element,\n};\n\nconst PolicyListRow = ({\n product,\n policy,\n showMeta,\n showVisibleToPractice,\n}) => {\n const { policies } = useAppContext();\n const { getIsPending, toggleFavoritePolicy, toggleVisiblePolicy } =\n usePolicySelections();\n const { search } = useLocation();\n const params = qs.parse(search);\n const productId = parseInt(params.productId);\n const { user } = useAuthContext();\n const makeHandleClickIcon = (policy, productId, callback) => (e) => {\n if (getIsPending(policy.id)) return;\n callback(policy, productId);\n };\n\n const isFavorite = policies.favorites.find(findPolicyWithIndication(policy));\n const isVisibleToPractice = policies.visible.find(\n findPolicyWithIndication(policy),\n );\n\n const fields = product?.fields ?? FIELDS;\n\n return (\n \n \n {showVisibleToPractice && (\n \n \n \n )}\n {user.role === 'rbm' ? (\n <>\n ) : (\n \n \n ) : (\n Icons.StarOutlined\n )\n }\n onClick={makeHandleClickIcon(\n policy,\n productId,\n toggleFavoritePolicy,\n )}\n />\n \n )}\n {fields.map(({ columnWidth, value }) => (\n \n {policy[value]}\n \n ))}\n \n\n {showMeta && (\n \n )}\n \n );\n};\n\nPolicyListRow.propTypes = {\n product: PropTypes.object,\n policy: policyPropType.isRequired,\n showMeta: PropTypes.bool,\n showVisibleToPractice: PropTypes.bool.isRequired,\n};\n\nPolicyListRow.defaultProps = {\n showMeta: false,\n};\n\nexport default PolicyListRow;\n","export const filterPolicies = (policies, filters) => {\n if (!Object.values(filters).some(Boolean)) {\n return policies;\n }\n const filteredPolicies = Object.keys(filters).reduce(\n (acc, field) => {\n return acc.filter((p) =>\n p[field]?.toLowerCase().includes(filters[field]?.toLowerCase())\n );\n },\n [...policies]\n );\n\n return filteredPolicies;\n};\n\nexport const filterPoliciesByProductId = (policies, productId) => {\n return policies.filter((policy) => policy.productId === productId);\n};\n","import { sortRecords } from '../../helpers';\n\nconst sortPolicies = (policies, sortBy, order) =>\n sortRecords(policies, sortBy, order);\n\nexport default sortPolicies;\n","import { useState } from 'react';\n\nimport { trimSearchInput } from '../helpers';\n\nconst useTableFilters = (config = {}) => {\n const { allowMultipleFilters = false } = config;\n\n const [filters, setFilters] = useState({});\n\n const clearAllFilters = () => {\n setFilters({});\n };\n const clearFilterForField = (field) => {\n setFilters({\n ...filters,\n [field]: null,\n });\n };\n const setFilterForField = (field, filterVal) => {\n if (allowMultipleFilters) {\n setFilters({\n ...filters,\n [field]: trimSearchInput(filterVal),\n });\n } else {\n setFilters({ [field]: trimSearchInput(filterVal) });\n }\n };\n\n return {\n clearAllFilters,\n clearFilterForField,\n filters,\n setFilterForField,\n };\n};\n\nexport default useTableFilters;\n","import { useState } from 'react';\n\nconst useTableSort = () => {\n const [sortBy, setSortBy] = useState('');\n const [order, setOrder] = useState('');\n\n const setSort = (field) => {\n if (sortBy === field) {\n if (order === 'asc') {\n setOrder('desc');\n } else if (order === 'desc') {\n setOrder('');\n } else {\n setOrder('asc');\n }\n } else {\n setSortBy(field);\n setOrder('asc');\n }\n };\n\n const getSortForField = (field) => {\n return sortBy === field ? order : '';\n };\n\n return {\n getSortForField,\n order,\n setSort,\n sortBy,\n };\n};\n\nexport default useTableSort;\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { FIELDS } from './PolicyList.constants';\nimport { policyPropType } from '../../propTypes';\n\nimport FullWidthWrapper from '../FullWidthWrapper';\nimport LoadingSpinner from '../LoadingSpinner';\nimport FilterableListTitleBar from '../FilterableListTitleBar';\nimport SortableListTitleColumn from '../SortableListTitleColumn';\nimport * as colors from '../../styles/colors';\nimport { useAuthContext } from '../../providers/AuthProvider';\n\nimport {\n List,\n ListBodyRow,\n ListHeaderRow,\n IconColumn,\n LIST_PADDING_X,\n} from '../List';\nimport PolicyListRow from './PolicyListRow';\nimport { filterPolicies, filterPoliciesByProductId } from './filterPolicies';\nimport sortPolicies from './sortPolicies';\nimport * as typography from '../../styles/typography';\nimport useTableFilters from '../../hooks/useTableFilters';\nimport useTableSort from '../../hooks/useTableSort';\nimport { MEDICATION_OPTIONS } from '../../constants';\n\nconst ProductTitle = styled.div`\n margin: 35px calc(${LIST_PADDING_X} * 2) 0;\n color: ${(props) => props.color};\n ${typography.h4};\n ${typography.bold};\n`;\n\nconst PolicyList = ({\n loading,\n noResultsText,\n policies,\n showMeta,\n showVisibleToPractice,\n title,\n product,\n titleBarBackgroundColor,\n}) => {\n const { getSortForField, order, setSort, sortBy } = useTableSort(policies);\n const { clearAllFilters, filters, setFilterForField } = useTableFilters();\n const { user } = useAuthContext();\n const filterFields = product?.fields ?? FIELDS;\n\n const filteredPolicies = useMemo(() => {\n const filteredPolicies = filterPolicies(policies, filters);\n return sortPolicies(filteredPolicies, sortBy, order);\n }, [policies, filters, sortBy, order]);\n const isTableFiltered = useMemo(() => {\n return Object.values(filters).some(Boolean);\n }, [filters]);\n\n useEffect(() => {}, [filters]);\n\n const renderHeaderCell = ({ columnWidth, label, value }) => (\n setSort(value)}\n order={getSortForField(value)}\n text={label}\n width={columnWidth}\n />\n );\n\n const renderTableForProduct = (product, filteredPolicies) => (\n \n \n {showVisibleToPractice && Viewable to Practice}\n {user.role !== 'rbm' && Show on Homepage}\n {product.fields.map(renderHeaderCell)}\n \n {!!filteredPolicies.length &&\n filteredPolicies.map((policy, index) => (\n \n ))}\n {!filteredPolicies.length && noResultsText && (\n \n
{noResultsText}
\n
\n )}\n
\n );\n\n const renderAllTables = () => {\n return MEDICATION_OPTIONS.map((option) => (\n \n {option.expandedLabel}\n {renderTableForProduct(\n option,\n filterPoliciesByProductId(filteredPolicies, option.value),\n )}\n \n ));\n };\n\n return (\n \n \n\n {loading && }\n {!loading && product\n ? renderTableForProduct(product, filteredPolicies)\n : renderAllTables()}\n \n );\n};\n\nPolicyList.propTypes = {\n titleBarBackgroundColor: PropTypes.string,\n loading: PropTypes.bool,\n noResultsText: PropTypes.string,\n policies: PropTypes.arrayOf(policyPropType).isRequired,\n showMeta: PropTypes.bool,\n showVisibleToPractice: PropTypes.bool,\n title: PropTypes.string,\n product: PropTypes.object,\n};\n\nPolicyList.defaultProps = {\n loading: false,\n showMeta: false,\n showVisibleToPractice: true,\n titleBarBackgroundColor: colors.darkBlue,\n};\n\nexport default PolicyList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { bold } from '../styles/typography';\n\nconst QueryParams = styled.dl`\n width: 100%;\n`;\n\nconst QueryParamLabel = styled.dt`\n ${bold}\n display: inline-block;\n margin-right: 0.25rem;\n`;\n\nconst QueryParamValue = styled.dd`\n display: inline-block;\n text-transform: uppercase;\n margin: 0;\n margin-right: 1rem;\n`;\n\nconst QueryParam = ({ label, value }) => (\n \n {label}:\n {value}\n \n);\n\nQueryParam.propTypes = {\n label: PropTypes.string,\n value: PropTypes.any,\n};\n\nexport { QueryParams, QueryParam };\n","import React, { useEffect, useState } from 'react';\nimport { useLocation, Link } from 'react-router-dom';\nimport styled from 'styled-components';\nimport qs from 'query-string';\n\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport PolicyList from '../components/PolicyList';\nimport { ListTextButton } from '../components/List';\nimport { QueryParams, QueryParam } from '../components/QueryParam';\nimport routes from '../constants/routes';\nimport * as colors from '../styles/colors';\n\nimport { useAppContext } from '../providers/AppProvider';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport { SUPER_USER, GENERAL_USER } from '../constants/roles';\nimport {\n decoratePolicyWithIndication,\n getChannelLabelById,\n getIndicationLabelById,\n getProductById,\n getUsStateFullNameFromAbbreviation,\n} from '../helpers';\n\nconst StyledPageHeading = styled(PageHeading)`\n margin-bottom: 0;\n`;\n\nconst PageHeadingSeparator = styled.div`\n &:before {\n content: '|';\n }\n margin: 0 1rem;\n`;\n\nconst PageHeadingWithLink = styled.div`\n width: 100%;\n display: flex;\n align-items: flex-end;\n`;\n\nconst ViewAllPlansLink = styled(Link)`\n text-decoration: underline;\n color: ${colors.darkBlue};\n`;\n\nconst TableControlsRow = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 100%;\n`;\n\nconst SourceText = styled.div`\n margin-top: 1em;\n width: 100%;\n font-size: 12px;\n margin-left: -16px;\n`;\n\nconst NO_RESULTS_TEXT = 'Your current search has no corresponding results.';\n\nconst CoverageResults = () => {\n const { search } = useLocation();\n const params = qs.parse(search);\n\n const [filteredPolicies, setFilteredPolicies] = useState([]);\n const productId = parseInt(params.productId);\n const product = getProductById(productId);\n const usState = params.usState;\n const channelId = parseInt(params.channelId);\n const indicationId = parseInt(params.indicationId);\n\n const { user } = useAuthContext();\n const { isLoading, policies, practice } = useAppContext();\n useEffect(() => {\n const basePolicies =\n user.role !== GENERAL_USER || practice?.allPoliciesVisible\n ? policies.all\n : // visible policies filtered to only those that match the current indication ID\n policies.visible.filter(\n (p) => p.indicationId === parseInt(params.indicationId),\n );\n const mapped = basePolicies.map((p) =>\n decoratePolicyWithIndication(p, parseInt(params.indicationId), productId),\n );\n\n const filtered = [\n (i) => (usState ? i.states.includes(usState) : i),\n (i) => (channelId ? i.channelId === channelId : i),\n // (i) => (productId ? i.products.includes(productId) : i),\n ].reduce((acc, filterFn) => acc.filter(filterFn), mapped);\n setFilteredPolicies(filtered);\n }, [\n channelId,\n usState,\n params.indicationId,\n policies.all,\n policies.visible,\n practice?.allPoliciesVisible,\n user,\n ]);\n\n const showVisibleToPractice =\n user.role === SUPER_USER && !practice?.allPoliciesVisible;\n return (\n \n \n New Query\n \n \n Insurance Coverage: Results\n \n\n \n View All Plans Selected for Practice\n \n \n\n \n \n \n \n \n \n\n \n \n Source: MMIT (Data is updated daily. New policies published within 15\n days.)\n \n \n );\n};\n\nexport default CoverageResults;\n","import React from 'react';\n\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\n\nimport CoverageSelection from './CoverageSelection';\nimport CoverageResults from './CoverageResults';\n\nconst Coverage = () => {\n const { path } = useRouteMatch();\n\n return (\n \n \n \n \n );\n};\n\nexport default Coverage;\n","import styled from 'styled-components';\nimport PageWrapper from './PageWrapper';\nimport { stripedBackgroundStyles } from '../styles/constants';\n\nconst StripedBackgroundPageWrapper = styled(PageWrapper)`\n ${stripedBackgroundStyles}\n`;\n\nexport default StripedBackgroundPageWrapper;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider } from 'styled-components';\n\nimport * as roles from '../constants/roles';\nimport { useAuthContext } from '../providers/AuthProvider';\n\nimport StripedBackgroundPageWrapper from '../components/StripedBackgroundPageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport JumboButton from '../components/JumboButton';\nimport { darkTheme } from '../styles/themes';\nimport { ProductText } from '../styles/constants';\n\nconst HomeCallToActionWrapper = styled.div`\n margin: 2em 0 4em 0;\n text-align: center;\n`;\n\nconst HomeCallToAction = ({ onClickButton }) => {\n const { user } = useAuthContext();\n\n const buttonLabel = {\n [roles.GENERAL_USER]: 'View Available Plans',\n [roles.RBM]: 'Add Plans to Your Favorites',\n [roles.SUPER_USER]: 'Add Plans to Your Practice Portal',\n }[user.role];\n\n return (\n \n \n \n Welcome to the Payer Policy Portal for{' '}\n LIBTAYO!\n \n \n {buttonLabel}\n \n \n \n );\n};\n\nHomeCallToAction.propTypes = {\n onClickButton: PropTypes.func.isRequired,\n};\n\nexport default HomeCallToAction;\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport * as colors from '../styles/colors';\n\nimport HomeCallToAction from './HomeCallToAction';\nimport { ListTextButton } from '../components/List';\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport PolicyList from '../components/PolicyList';\nimport { useAppContext } from '../providers/AppProvider';\nimport { useAuthContext } from '../providers/AuthProvider';\nimport routes from '../constants/routes';\nimport { SUPER_USER } from '../constants/roles';\nimport { ProductText } from '../styles/constants';\n\nconst NO_RESULTS_TEXT =\n 'You currently have no plans marked as favorite. You can favorite any plan in your search results to add them to your homepage.';\n\nconst StyledPageHeading = styled(PageHeading)`\n margin-bottom: 10px;\n text-align: center;\n`;\n\nconst Subheading = styled.div`\n text-align: center;\n color: ${colors.greyscale[600]};\n margin-bottom: 2rem;\n a {\n color: ${colors.darkBlue};\n }\n`;\n\nconst TableControlsRow = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-bottom: 1rem;\n width: 100%;\n`;\n\nconst ViewPlansLink = styled.a`\n text-decoration: underline;\n`;\n\nconst Home = () => {\n const history = useHistory();\n const { firstTimeExperience, isInitializing, isLoading, policies, practice } =\n useAppContext();\n const { user } = useAuthContext();\n const [viewAllPlans, setViewAllPlans] = useState(true);\n\n if (isInitializing) return null;\n if (firstTimeExperience) {\n return (\n {\n history.push(routes.findCoverage);\n }}\n />\n );\n } else {\n const showVisibleToPractice =\n user.role === SUPER_USER && !practice?.allPoliciesVisible;\n return (\n \n \n Welcome to the Payer Policy Portal for{' '}\n LIBTAYO!\n \n {viewAllPlans ? (\n \n setViewAllPlans(!viewAllPlans)}\n >\n View all your saved FAVORITES\n {' '}\n | Below Are All Plans Selected for Practice\n \n ) : (\n \n Below are your saved FAVORITES |{' '}\n setViewAllPlans(!viewAllPlans)}\n >\n View All Plans Selected for Practice\n \n \n )}\n \n New Query\n \n \n \n );\n }\n};\n\nexport default Home;\n","import styled from 'styled-components';\n\nimport Button from '../../components/Button';\nimport Input from '../../components/Input';\nimport { linkStyles } from '../../components/Link';\nimport * as colors from '../../styles/colors';\nimport * as typography from '../../styles/typography';\n\nexport const ErrorText = styled.div`\n ${typography.body};\n color: ${({ theme }) => theme.error};\n width: 400px;\n margin-bottom: 8px;\n`;\n\nexport const LoginBox = styled.form`\n background-color: ${({ theme }) => theme.background};\n outline: 8px solid #004f6f1f;\n border-radius: 16px;\n color: ${({ theme }) => theme.text};\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n margin-bottom: 40px;\n padding: 16px 30px;\n width: 400px;\n & > * {\n margin: 4px 0;\n }\n`;\n\nexport const LoginLabel = styled.div`\n ${typography.regular};\n ${typography.h3};\n color: ${({ theme }) => theme.foreground};\n`;\n\n// override default semantic-ui styles\nexport const LoginInput = styled(Input)`\n width: 100%;\n font-size: 0.875rem;\n padding: 16px;\n`;\n\nexport const ForgotLink = styled.div`\n ${typography.caption};\n line-height: 0.875rem;\n ${(props) => props.onClick && linkStyles};\n cursor: ${(props) => (props.onClick ? 'pointer' : 'normal')};\n`;\nexport const HelpLink = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 100%;\n ${typography.body};\n`;\nexport const LoginButton = styled(Button).attrs({\n type: 'submit',\n})`\n &:disabled {\n background-color: ${colors.fadedBlue};\n }\n`;\nexport const Subheader = styled.div`\n width: 100%;\n`;\nexport const CloseIcon = styled.div`\n ${typography.bold};\n cursor: pointer;\n color: ${({ theme }) => theme.foreground};\n margin-left: auto;\n`;\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport {\n CloseIcon,\n ForgotLink,\n LoginBox,\n LoginButton,\n LoginInput,\n LoginLabel,\n Subheader,\n} from './LoginForm.components';\nimport { email as emailRegex } from '../../constants/regex';\nimport { useAuthContext } from '../../providers/AuthProvider';\n\nconst ForgotPasswordForm = () => {\n const history = useHistory();\n const { sendPasswordResetEmail } = useAuthContext();\n\n const [email, setEmail] = useState('');\n const [submitted, setSubmitted] = useState(false);\n const [resetEmailSent, setResetEmailSent] = useState(false);\n\n const isEmailValid = emailRegex.test(email);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setSubmitted(true);\n if (!isEmailValid) return;\n try {\n await sendPasswordResetEmail(email);\n setResetEmailSent(true);\n } catch (err) {\n // handle \"user not found\" different from other errors\n // to prevent abusing this to fish for valid emails...\n // UNLESS Navisync tells us specifically to do otherwise.\n if (err.code === 'auth/user-not-found') {\n console.log('Email not found');\n setResetEmailSent(true);\n } else {\n console.error(err);\n }\n }\n };\n\n const returnToLogin = () => {\n history.replace('/login');\n };\n\n const showEmailError = submitted && !isEmailValid;\n\n if (!resetEmailSent) {\n return (\n \n ENTER USERNAME (Email)\n setEmail(e.target.value),\n placeholder: 'Email Address',\n type: 'text',\n value: email,\n }}\n />\n Send me reset email.\n Submit\n \n );\n } else {\n return (\n \n X\n Your request has been sent.\n Check your email for reset details.\n \n );\n }\n};\n\nexport default ForgotPasswordForm;\n","import { size } from 'polished';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport * as colors from '../styles/colors';\nimport * as typography from '../styles/typography';\n\nexport const labelPositions = {\n LEFT: 'left',\n RIGHT: 'right',\n};\n\nconst Label = styled.label`\n display: flex;\n align-items: center;\n ${typography.body};\n`;\n\n// we can replace the default unicode checkmark with\n// one from an icon set by using the char code of the checkmark\n// within that set\nconst CheckboxStyled = styled.input`\n ${size('21px')}\n appearance: none;\n background-color: ${colors.fadedBlue};\n border: none;\n border-radius: 1px;\n outline: none;\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: ${(props) => (props.labelPosition === 'left' ? '8px' : '0')};\n margin-right: ${(props) => (props.labelPosition === 'right' ? '8px' : '0')};\n transition: background-color 100ms ease;\n &:after {\n content: '✓';\n display: none;\n color: ${colors.darkBlue};\n font-size: 20px;\n }\n &:checked {\n background-color: ${colors.white};\n &:after {\n display: block;\n }\n }\n`;\n\nconst Checkbox = ({\n label,\n labelComponent: Label,\n labelPosition,\n ...props\n}) => {\n return (\n \n );\n};\n\nCheckbox.propTypes = {\n label: PropTypes.string,\n labelPosition: PropTypes.oneOf(Object.values(labelPositions)),\n labelComponent: PropTypes.elementType,\n};\n\nCheckbox.defaultProps = {\n labelPosition: 'right',\n labelComponent: Label,\n};\n\nexport default Checkbox;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\nimport { ThemeProvider } from 'styled-components';\n\nimport {\n ErrorText,\n ForgotLink,\n HelpLink,\n LoginBox,\n LoginButton,\n LoginInput,\n LoginLabel,\n} from './LoginForm.components';\nimport Checkbox, { labelPositions } from '../../components/Checkbox';\nimport { email as emailRegex } from '../../constants/regex';\nimport { useAuthContext } from '../../providers/AuthProvider';\nimport { darkTheme } from '../../styles/themes';\nimport * as typography from '../../styles/typography';\n\nconst CheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n ${typography.body};\n color: white;\n`;\n\nconst LoginForm = () => {\n const history = useHistory();\n const { clearAuthError, error, signIn } = useAuthContext();\n\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [rememberUser, setRememberUser] = useState(false);\n\n const isFormValid = emailRegex.test(email) && !!password;\n\n const updateField = (setter) => (event) => {\n setter(event.target.value);\n // reset error on user input\n clearAuthError();\n };\n\n const handleForgotPassword = () => {\n history.push('/login/forgot');\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n if (!isFormValid) return;\n await signIn(email, password, rememberUser);\n // the route guards automatically redirect us to\n // the home page once the user is logged in\n };\n\n return (\n \n {error && Login Error}\n \n LOGIN\n setRememberUser(!rememberUser)}\n value={rememberUser}\n />\n \n \n Forgot Password?\n Submit\n \n Need more help? Contact your Oncology Reimbursement Manager\n (ORM).\n \n \n \n );\n};\n\nexport default LoginForm;\n","import React from 'react';\nimport { Route, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { Helmet } from 'react-helmet-async';\n\nimport ForgotPasswordForm from './ForgotPasswordForm';\nimport LoginForm from './LoginForm';\nimport PageFooter from '../../components/PageFooter';\nimport * as typography from '../../styles/typography';\nimport { siteMetadata } from '../../constants/siteMetadata';\nimport { stripedBackgroundStyles, ProductText } from '../../styles/constants';\n\nconst LoginWrapper = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n justify-content: center;\n overflow: auto;\n padding: 24px 16px;\n box-sizing: border-box;\n ${stripedBackgroundStyles}\n`;\n\nconst WelcomeBox = styled.h2`\n color: ${({ theme }) => theme.foreground};\n ${typography.bold};\n ${typography.h2};\n`;\n\nconst Login = () => {\n const { path } = useRouteMatch();\n\n return (\n \n \n \n Welcome to the Payer Policy Portal for{' '}\n LIBTAYO!\n \n \n \n \n \n );\n};\n\nexport default Login;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled, { ThemeProvider } from 'styled-components';\n\nimport PageFooter from '../components/PageFooter';\nimport JumboButton from '../components/JumboButton';\nimport routes from '../constants/routes';\nimport * as colors from '../styles/colors';\nimport { appGutters } from '../styles/constants';\nimport * as typography from '../styles/typography';\nimport { darkTheme } from '../styles/themes';\nimport libtayoLogo from '../assets/images/libtayo_logo.png';\n\nconst StyledPageFooter = styled(PageFooter)`\n margin-top: 4rem;\n`;\n\nconst NotFoundWrapper = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n height: 100%;\n justify-content: center;\n padding: 60px ${appGutters};\n width: 100%;\n box-sizing: border-box;\n`;\n\nconst ImageWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Logo = styled.img`\n margin: 0 35px;\n`;\n\nconst Header = styled.h1`\n ${typography.h1};\n ${typography.bold};\n color: ${colors.darkBlue};\n`;\n\nconst ErrorText = styled.h3`\n ${typography.h5};\n ${typography.bold};\n margin: 5px 0 35px;\n color: ${colors.darkBlue};\n`;\n\nconst NotFound = () => {\n const history = useHistory();\n const goHome = () => {\n history.push(routes.home);\n };\n\n return (\n \n \n \n \n
404 Error
\n Sorry, we cannot find the page you are looking for.\n \n \n Add Plans to Your Practice Portal\n \n \n \n
\n );\n};\n\nexport default NotFound;\n","export default \"data:image/png;base64,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\"","import { padding, rgba } from 'polished';\nimport styled from 'styled-components';\n\nimport Button from '../Button';\nimport Input from '../Input';\nimport PageWrapper from '../PageWrapper';\nimport * as colors from '../../styles/colors';\nimport { pageHorizontalPadding } from '../../styles/constants';\nimport * as typography from '../../styles/typography';\n\nconst innerGutter = 20;\n\nexport const StyledWrapper = styled(PageWrapper)`\n ${padding(32, pageHorizontalPadding, 0)};\n align-items: center;\n & > * {\n margin: 8px 0;\n }\n`;\nconst JumboBox = styled.div`\n border-radius: 16px;\n padding: 16px ${innerGutter}px;\n width: calc(100% - ${innerGutter * 2}px);\n & > * {\n margin-bottom: 8px;\n margin-top: 8px;\n }\n`;\nexport const SelectionContainer = styled.div`\n width: 100%;\n min-height: 150px;\n display: flex;\n`;\nexport const ProductContainer = styled.div`\n width: 280px;\n`;\nexport const SectionLabel = styled.div`\n ${typography.bold};\n ${typography.h6};\n`;\nexport const ProductSelectSectionLabel = styled(SectionLabel)`\n padding-top: 10px;\n`;\nexport const IndicationBox = styled.div`\n margin-left: 80px;\n`;\nexport const RadioSet = styled.div`\n margin-top: 10px;\n margin-left: -6px;\n margin-right: -6px;\n & > * {\n margin-left: 6px;\n margin-right: 6px;\n }\n`;\nexport const FilterControls = styled(JumboBox)`\n background: ${rgba(colors.greyscale[600], 0.07)};\n color: ${colors.greyscale[400]};\n`;\nexport const LetterFilter = styled.span`\n cursor: ${({ enabled }) => (enabled ? 'pointer' : 'default')};\n text-decoration: ${({ active }) => (active ? 'underline' : 'none')};\n font-weight: ${({ active }) => (active ? 'bold' : 'normal')};\n ${typography.regular};\n`;\nexport const LetterFilterSet = styled.div`\n display: flex;\n flex-wrap: wrap;\n margin: 8px -6px;\n & ${LetterFilter} {\n margin: 0 6px;\n }\n`;\n// border needs !important because it can collide with default styling\nexport const SearchBox = styled(Input)`\n border: 3px solid ${colors.greyscale[300]} !important;\n height: 30px;\n padding: 4px 8px;\n`;\nexport const AllResultsContainer = styled.div`\n overflow: auto;\n width: 40%;\n`;\nexport const SelectedResultsContainer = styled.div`\n background-color: ${rgba(colors.greyscale[200], 0.33)};\n overflow: auto;\n width: 60%;\n & > div {\n background-color: ${rgba(colors.white, 0.5)};\n }\n`;\nexport const ResultsWrapper = styled.div`\n display: flex;\n max-height: 300px;\n min-height: 300px;\n padding: 0 ${innerGutter}px;\n width: calc(100% - ${innerGutter * 2}px);\n & > div {\n padding: 4px 12px;\n }\n`;\nexport const SubmitButton = styled(Button)`\n margin-left: auto;\n margin-right: ${innerGutter}px;\n padding-bottom: 10px;\n padding-top: 10px;\n &[disabled] {\n background-color: ${rgba(colors.darkBlue, 0.2)};\n }\n`;\n\nexport const ResultLink = styled.div`\n align-items: center;\n display: flex;\n justify-content: space-between;\n`;\nexport const ResultLinksContainer = styled.div`\n margin-bottom: 100px;\n width: 100%;\n & ${ResultLink} {\n margin: 12px 0;\n }\n`;\nexport const ErrorText = styled.div`\n color: ${({ theme }) => theme.error};\n`;\n","const getFilteredData = (data, { letterFilter, textFilter }) => {\n let filteredData = data;\n\n if (!!letterFilter) {\n filteredData = filteredData.filter(\n (i) => i.name[0].toUpperCase() === letterFilter\n );\n }\n\n if (!!textFilter) {\n filteredData = filteredData.filter((i) =>\n i.name.toUpperCase().includes(textFilter.toUpperCase())\n );\n }\n // this assumes that we are sorting by a property called 'name'\n // be aware of this in case the model for policies or plans ever changes\n filteredData = filteredData.sort((a, b) => a.name.localeCompare(b.name));\n return filteredData;\n};\n\nexport default getFilteredData;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { RadioFilled, RadioOutlined } from '../Icons';\nimport * as typography from '../../styles/typography';\n\nconst IndicationRadioWrapper = styled.div`\n ${typography.bold};\n align-items: center;\n cursor: pointer;\n display: flex;\n & > * {\n margin-right: 8px;\n }\n margin-bottom: 4px;\n`;\n\nconst IndicationRadio = ({ label, active, ...props }) => (\n \n {active ? RadioFilled : RadioOutlined}\n {label}\n \n);\n\nIndicationRadio.propTypes = {\n label: PropTypes.string,\n active: PropTypes.bool,\n};\n\nexport default IndicationRadio;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport * as colors from '../../styles/colors';\nimport * as typography from '../../styles/typography';\n\nconst getControlText = ({ disabled, selected }) => {\n if (disabled && selected) {\n return 'Selected';\n }\n if (!disabled && selected) {\n return 'REMOVE';\n }\n return 'ADD';\n};\n\nconst ResultItemWrapper = styled.div`\n align-items: center;\n color: ${colors.greyscale[500]};\n display: flex;\n justify-content: space-between;\n padding: 10px 12px;\n margin: 4px 0;\n`;\nconst SelectControl = styled.div`\n ${typography.bold};\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n margin-left: 4px;\n text-decoration: ${(props) => (props.disabled ? 'none' : 'underline')};\n`;\n\nconst ResultItem = ({ disabled, label, onSelect, selected }) => {\n const controlText = getControlText({ disabled, selected });\n\n const handleSelect = () => {\n if (disabled) return;\n onSelect();\n };\n\n return (\n \n {label}\n \n {controlText}\n \n \n );\n};\n\nResultItem.propTypes = {\n disabled: PropTypes.bool,\n label: PropTypes.string,\n onSelect: PropTypes.func,\n selected: PropTypes.bool,\n};\n\nexport default ResultItem;\n","import PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { Redirect, Route, useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport {\n AllResultsContainer,\n ErrorText,\n FilterControls,\n IndicationBox,\n LetterFilter,\n LetterFilterSet,\n SelectionContainer,\n ProductContainer,\n RadioSet,\n ResultLink,\n ResultLinksContainer,\n ResultsWrapper,\n SearchBox,\n SectionLabel,\n ProductSelectSectionLabel,\n SelectedResultsContainer,\n StyledWrapper,\n SubmitButton,\n} from './PlanFilterContainer.components';\nimport getFilteredData from './getFilteredData';\nimport IndicationRadio from './IndicationRadio';\nimport PlanItem from './PlanItem';\nimport ProductIndicator from '../ProductIndicator';\nimport Button from '../Button';\nimport { MagnifierLight } from '../Icons';\nimport PageHeading from '../PageHeading';\nimport { usePolicyApi } from '../../api/policy';\nimport routes from '../../constants/routes';\nimport {\n ALPHABET,\n INDICATION_OPTIONS_POLICY_DOWNLOADS,\n LIBTAYO_ID,\n} from '../../constants';\nimport { createStateArrayUtils, getProductById } from '../../helpers';\nimport { useAppContext } from '../../providers/AppProvider';\nimport * as colors from '../../styles/colors';\n\nconst DownloadButton = styled(Button)`\n text-transform: none;\n`;\n\nconst PlanFilterContainer = ({ data, pageLabel }) => {\n const { downloadPolicyDocuments, fetchPolicyLinks } = usePolicyApi();\n const history = useHistory();\n const { path } = useRouteMatch();\n const product = getProductById(LIBTAYO_ID);\n const [indication, setIndication] = useState('');\n const { fetchPlans, plans, setIsLoading } = useAppContext();\n const [letterFilter, setLetterFilter] = useState('');\n const [textFilter, setTextFilter] = useState('');\n // going to add debounce later\n // const [debouncedTextFilter] = useDebounce(textFilter, 500);\n const [selections, setSelections] = useState([]);\n const [pendingDownloads, setPendingDownloads] = useState([]);\n const pendingDownloadsUtils = createStateArrayUtils(\n setPendingDownloads,\n pendingDownloads,\n );\n\n useEffect(() => {\n // only do this when the component is mounted\n fetchPlans();\n }, []);\n\n useEffect(() => {\n const isIndicationAvailable = product?.indications\n ?.map((i) => i.label)\n .includes(indication);\n if (!isIndicationAvailable) {\n setIndication('');\n }\n }, [product]);\n\n const isFormValid = !!indication && !!selections.length;\n const filteredData = getFilteredData(plans, { letterFilter, textFilter });\n\n const renderRadio = (label) => (\n setIndication(label)}\n />\n );\n\n const getIsLetterFilterEnabled = (letter) => {\n return plans.map((i) => i.name.slice(0, 1)).includes(letter);\n };\n const getIsItemSelected = (item) => {\n return selections.find((i) => i.id === item.id);\n };\n\n const toggleSelection = (item) => {\n if (getIsItemSelected(item)) {\n setSelections(selections.filter((i) => i.id !== item.id));\n } else {\n setSelections([...selections, item]);\n }\n };\n\n const toggleLetterFilter = (letter) => {\n if (!getIsLetterFilterEnabled(letter)) return;\n if (letterFilter === letter) {\n setLetterFilter('');\n } else {\n setLetterFilter(letter);\n }\n };\n\n const handleChangeInput = useCallback(\n (e) => setTextFilter(e.target.value),\n [setTextFilter],\n );\n\n const handleSubmitSelection = async () => {\n const selectedIndication = INDICATION_OPTIONS_POLICY_DOWNLOADS.find(\n (o) => o.label === indication,\n );\n if (!selectedIndication) return;\n setIsLoading(true);\n const decoratedSelections = await fetchPolicyLinks(\n selectedIndication.value,\n selections,\n product.label,\n );\n const filteredSelections =\n decoratedSelections?.map((sel) => ({\n ...sel,\n docs:\n sel.docs?.filter((doc) => {\n if (path.includes(routes.findPolicy)) return doc.isPolicy;\n if (path.includes(routes.findPriorAuth)) return doc.isForm;\n return false;\n }) ?? [],\n })) ?? [];\n setSelections(filteredSelections);\n history.push(`${path}/results`);\n setIsLoading(false);\n };\n\n const handleFileDownload = async (docData, index) => {\n if (pendingDownloads.includes(index)) return;\n pendingDownloadsUtils.add(index);\n await downloadPolicyDocuments(docData);\n pendingDownloadsUtils.remove(index);\n };\n\n const handleDownloadButtonText = (path) => {\n if (path.includes('prior-auth'))\n return 'Download Prior Authorization Documents';\n if (path.includes('policy')) return 'Download Medical Policy Documents';\n };\n\n return (\n \n \n Find a {pageLabel}\n \n \n \n {product?.expandedLabel}\n \n \n \n {product ? (\n Select indication:\n ) : (\n \n Please choose a product on the left.\n \n )}\n \n {product?.indications?.map((o) => renderRadio(o.label))}\n \n \n \n \n Select Health Insurance Plan(s)\n \n {ALPHABET.map((letter, index) => (\n
\n toggleLetterFilter(letter)}\n >\n {letter}\n \n {index !== ALPHABET.length - 1 && '|'}\n
\n ))}\n
\n \n
\n \n \n {!letterFilter && !textFilter\n ? null\n : filteredData.map((item, index) => (\n toggleSelection(item)}\n selected={!!getIsItemSelected(item)}\n />\n ))}\n \n \n {selections.map((item, index) => (\n toggleSelection(item)}\n selected\n />\n ))}\n \n \n \n Submit\n \n
\n \n {!selections.length && }\n {pageLabel}: Results\n \n {selections.map((item, index) => (\n \n {item.name}\n {!!item.docs?.length && (\n handleFileDownload(item.docs)}\n textColor={colors.white}\n >\n {handleDownloadButtonText(path)}\n \n )}\n {!item.docs?.length && (\n Documents not available\n )}\n \n ))}\n \n \n
\n );\n};\n\nPlanFilterContainer.propTypes = {\n data: PropTypes.array,\n pageLabel: PropTypes.string,\n};\n\nexport default PlanFilterContainer;\n","import React from 'react';\n\nimport PlanFilterContainer from '../components/PlanFilterContainer';\n\nconst Policy = () => ;\n\nexport default Policy;\n","import React from 'react';\n\nimport PlanFilterContainer from '../components/PlanFilterContainer';\n\nconst PriorAuth = () => (\n \n);\n\nexport default PriorAuth;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Link from '../components/Link';\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\n\nimport { bold } from '../styles/typography';\nimport * as colors from '../styles/colors';\n\nconst TextHeading = styled.h4`\n ${bold}\n margin-bottom: 0;\n`;\n\nconst BoldText = styled.span`\n ${bold}\n`;\n\nconst ColoredBoldText = styled(BoldText)`\n color: ${colors.darkBlue};\n`;\n\nconst SubScript = styled.span`\n font-size: 11px;\n`;\n\nconst EndSubScript = styled.span`\n font-size: 11px;\n padding-right: 4px;\n`;\n\nconst Text = styled.p`\n margin: 0 0 1rem 0;\n`;\n// distinct from page wrapper, which adds the banners,\n// this component wraps the text content of the page\nconst ContentWrapper = styled.div`\n width: 100%;\n`;\nconst LinkBold = styled(Link)`\n ${bold}\n text-decoration: underline;\n`;\n\nconst Resources = () => {\n return (\n \n \n Resources\n\n \n From ensuring your eligible patients have access to LIBTAYO, to\n helping them navigate reimbursement, LIBTAYO Surround®{' '}\n is here to help.\n \n\n What is LIBTAYO Surround?\n \n LIBTAYO Surround is a support program that offers patient support,\n reimbursement assistance, and access solutions.\n \n\n \n Our dedicated team and wide range of resources can help patients\n access LIBTAYO and answer any questions you might have.\n \n\n For more information:\n
    \n
  • \n Call{' '}\n \n 1.877.LIBTAYO\n \n  (1.877.542.8296), Option 1,\n Monday–Friday, 8 AM–8 \n PM\n Eastern time\n
  • \n
  • \n Visit{' '}\n \n https://libtayohcp.com/libtayo-surround-resources#support-tools\n \n
  • \n
  • \n Fax to 1.833.853.8362\n
  • \n
\n \n \n Click here\n {' '}\n to learn more about reimbursement support and download helpful\n resources.\n \n
\n
\n );\n};\n\nexport default Resources;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useFirebaseContext } from '../providers/FirebaseProvider';\n\nimport Link from '../components/Link';\nimport PageHeading from '../components/PageHeading';\nimport PageWrapper from '../components/PageWrapper';\nimport { bold } from '../styles/typography';\n\nconst GUIDE_FILE = 'Libtayo_Payer_Policy_Portal_User_Guide.pdf';\n\nconst ContentWrapper = styled.div`\n width: 100%;\n`;\n\nconst BodyText = styled.p`\n margin: 0px 30px;\n`;\nconst BoldText = styled.p`\n ${bold}\n`;\nconst StyledLink = styled(Link)`\n text-decoration: underline;\n ${bold}\n`;\n\nconst UserGuide = () => {\n const firebase = useFirebaseContext();\n const [url, setUrl] = useState('');\n\n useEffect(() => {\n const storageRef = firebase.storage.ref();\n const guideRef = storageRef.child(`UserGuide/${GUIDE_FILE}`);\n guideRef.getDownloadURL().then((url) => {\n setUrl(url);\n });\n });\n\n return (\n \n \n User Guide\n \n \n Click here\n {' '}\n to download the User Guide for the LIBTAYO Payer Policy Portal. For\n additional questions, please contact your{' '}\n Oncology Reimbursement Manager.\n \n \n \n );\n};\n\nexport default UserGuide;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport Select, { selectStyles } from './Select';\nimport ProductIndicator from './ProductIndicator';\nimport { device } from '../styles/breakpoints';\nimport * as colors from '../styles/colors';\nimport {\n PATHWAY_STATUS_INDICATION_OPTIONS,\n DISABLED_PATHWAY_STATUS_INDICATION_IDS,\n STATE_AND_TERRITORY_OPTIONS,\n} from '../constants';\nimport {\n productPropType,\n indicationPropType,\n usStatePropType,\n} from '../propTypes';\n\nconst SelectsContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n padding-bottom: 130px;\n`;\n\nconst SelectContainer = styled.div`\n flex-basis: 20%;\n flex-grow: 1;\n margin-bottom: 4px;\n padding: 0 6px;\n`;\n\nconst FlexWrapBreak = styled.div`\n flex-basis: 100%;\n height: 0;\n @media ${device.laptop} {\n flex-basis: 0;\n }\n`;\n\n/**\n * Styles indication select to improve differentation between enabled\n * and disabled select options per client request:\n */\nconst pathwayIndicationSelectStyles = {\n ...selectStyles,\n option: (provided, { isDisabled, isFocused, data }) => ({\n ...provided,\n margin: 0,\n backgroundColor: (() => {\n if (isFocused) {\n return colors.greyscale[100];\n } else {\n return colors.white;\n }\n })(),\n color: (() => {\n if (isDisabled) {\n return colors.greyscale[200];\n } else {\n return colors.darkBlue;\n }\n })(),\n fontFamily: 'Arial Bold',\n fontWeight: 'bold',\n cursor: 'pointer',\n }),\n};\n\nconst PathwaySelect = ({\n product,\n indication,\n usState,\n setIndication,\n setUsState,\n}) => {\n const isIndicationSelectionDisabled = !product;\n const isUsStateSelectionDisabled = !indication;\n const isIndicationOptionDisabled = (option) =>\n DISABLED_PATHWAY_STATUS_INDICATION_IDS.includes(option.value);\n\n return (\n \n \n \n {product?.expandedLabel}\n \n \n\n \n \n \n\n \n\n \n \n \n \n );\n};\n\nPathwaySelect.propTypes = {\n product: productPropType,\n indication: indicationPropType,\n usState: usStatePropType,\n setIndication: PropTypes.func.isRequired,\n setUsState: PropTypes.func.isRequired,\n};\n\nexport default PathwaySelect;\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport qs from 'qs';\nimport styled from 'styled-components';\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport PathwaySelect from '../components/PathwaySelect';\nimport JumboButton from '../components/JumboButton';\nimport { darkTheme } from '../styles/themes';\nimport { LIBTAYO_ID } from '../constants';\nimport { getProductById } from '../helpers';\n\nconst ContentWrapper = styled.div`\n width: 100%;\n`;\n\nconst SubmitButton = styled(JumboButton).attrs({\n theme: darkTheme,\n})`\n margin-top: 2rem;\n margin-bottom: 1rem;\n padding: 1rem 6rem;\n`;\n\nconst PathwayStatusSelection = () => {\n const history = useHistory();\n\n const product = getProductById(LIBTAYO_ID);\n const [usState, setUsState] = useState(null);\n const [indication, setIndication] = useState(null);\n\n const isSelectionComplete = product && usState && indication;\n\n const handleSubmit = () => {\n const params = {\n productId: product.value,\n usState,\n indicationId: indication.value,\n };\n\n // @see https://github.com/gabidavila/react-usa-map/issues/43\n if (params.usState === 'DC2') {\n params.usState = 'DC';\n }\n history.push(`/pathway-status/results?${qs.stringify(params)}`);\n };\n\n return (\n \n \n Pathway Status\n \n\n \n\n \n Continue\n \n \n );\n};\n\nexport default PathwayStatusSelection;\n","export const DATA_COLUMN_MARGIN_LEFT = '40px';\n\nexport const FIELDS = [\n {\n columnWidth: '40%',\n label: 'Payer Participant',\n value: 'payerParticipant',\n },\n {\n columnWidth: '40%',\n label: 'Pathway',\n value: 'pathway',\n },\n];\n","import React from 'react';\nimport styled from 'styled-components';\nimport { pathwayStatusPropType } from '../../propTypes';\nimport { FIELDS, DATA_COLUMN_MARGIN_LEFT } from './constants';\nimport { ListBodyRow, ListBodyRowContent, DataColumn } from '../List';\n\nconst PathwayStatusDataColumn = styled(DataColumn)`\n margin-left: ${DATA_COLUMN_MARGIN_LEFT};\n`;\n\nconst PathwayStatusListRow = ({ pathwayStatus }) => {\n return (\n \n \n {FIELDS.map(({ columnWidth, value }) => (\n \n {pathwayStatus[value]}\n \n ))}\n \n \n );\n};\n\nPathwayStatusListRow.propTypes = {\n pathwayStatus: pathwayStatusPropType.isRequired,\n};\n\nexport default PathwayStatusListRow;\n","import React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport FullWidthWrapper from '../FullWidthWrapper';\nimport { ListHeaderRow, ListBodyRow, List } from '../List';\nimport PathwayStatusListRow from './PathwayStatusListRow';\nimport FilterableListTitleBar from '../FilterableListTitleBar';\nimport SortableListTitleColumn from '../SortableListTitleColumn';\nimport LoadingSpinner from '../LoadingSpinner';\nimport { usStatePropType, pathwayStatusPropType } from '../../propTypes';\nimport { getProductById, sortRecords } from '../../helpers';\nimport useTableFilters from '../../hooks/useTableFilters';\nimport useTableSort from '../../hooks/useTableSort';\nimport {\n filterPathwayStatusesByUserFilters,\n isPathwayStatusVisibleForUsState,\n isPathwayStatusVisibleForIndication,\n} from './helpers';\nimport * as colors from '../../styles/colors';\n\nimport { FIELDS, DATA_COLUMN_MARGIN_LEFT } from './constants';\n\nconst PathwayStatusSortableListTitleColumn = styled(SortableListTitleColumn)`\n margin-left: ${DATA_COLUMN_MARGIN_LEFT};\n`;\n\nconst PathwayStatusList = ({\n loading,\n pathwayStatuses,\n productId,\n indicationId,\n usState,\n noResultsText,\n}) => {\n const { getSortForField, order, setSort, sortBy } =\n useTableSort(pathwayStatuses);\n const { clearAllFilters, filters, setFilterForField } = useTableFilters();\n\n const filteredPathwayStatuses = useMemo(() =>\n sortRecords(\n filterPathwayStatusesByUserFilters(pathwayStatuses, filters)\n .filter((pathwayStatus) =>\n isPathwayStatusVisibleForUsState(pathwayStatus, usState),\n )\n .filter((pathwayStatus) =>\n isPathwayStatusVisibleForIndication(pathwayStatus, indicationId),\n ),\n sortBy,\n order,\n ),\n );\n\n const product = getProductById(productId);\n\n const hasResults = filteredPathwayStatuses.length > 0;\n\n const isFiltered = useMemo(() => {\n return Object.values(filters).some(Boolean);\n }, [filters]);\n\n const renderRows = () =>\n filteredPathwayStatuses.map((pathwayStatus) => (\n \n ));\n\n const renderNoResultsText = () => (\n \n
{noResultsText}
\n
\n );\n\n return (\n \n \n\n {loading && }\n {!loading && (\n \n \n {FIELDS.map(({ columnWidth, label, value }) => (\n setSort(value)}\n order={getSortForField(value)}\n text={label}\n width={columnWidth}\n />\n ))}\n \n\n {hasResults ? renderRows() : renderNoResultsText()}\n \n )}\n \n );\n};\n\nPathwayStatusList.propTypes = {\n loading: PropTypes.bool.isRequired,\n pathwayStatuses: PropTypes.arrayOf(pathwayStatusPropType),\n productId: PropTypes.number.isRequired,\n indicationId: PropTypes.number.isRequired,\n usState: usStatePropType,\n noResultsText: PropTypes.string.isRequired,\n};\n\nexport default PathwayStatusList;\n","import {\n PATHWAY_STATUS_INDICATION_IDS,\n PATHWAY_STATUS_POSITION_NOT_REVIEWED,\n} from '../../constants';\n\nexport const filterPathwayStatusesByUserFilters = (\n pathwayStatuses,\n filters,\n) => {\n if (!Object.values(filters).some(Boolean)) {\n return pathwayStatuses;\n }\n\n return Object.keys(filters).reduce(\n (acc, field) =>\n acc.filter((pathwayStatus) =>\n pathwayStatus[field]\n ?.toLowerCase()\n .includes(filters[field]?.toLowerCase()),\n ),\n [...pathwayStatuses],\n );\n};\n\nexport const isPathwayStatusVisibleForUsState = (pathwayStatus, usState) =>\n pathwayStatus.usState === usState;\n\nexport const isPathwayStatusVisibleForIndication = (\n pathwayStatus,\n indicationId,\n) => {\n switch (indicationId) {\n case PATHWAY_STATUS_INDICATION_IDS.ADVANCED_NSCLC_CHEMOTHERAPY:\n return (\n pathwayStatus.indications.chemotherapy.position !==\n PATHWAY_STATUS_POSITION_NOT_REVIEWED\n );\n case PATHWAY_STATUS_INDICATION_IDS.ADVANCED_NSCLC_MONOTHERAPY:\n return (\n pathwayStatus.indications.monotherapy.position !==\n PATHWAY_STATUS_POSITION_NOT_REVIEWED\n );\n default:\n return true;\n }\n};\n","import { useState } from 'react';\nimport { useFirebaseContext } from '../providers/FirebaseProvider';\n\nconst usePathwayStatuses = () => {\n const firebase = useFirebaseContext();\n const [pathwayStatuses, setPathwayStatuses] = useState([]);\n const [pathwayStatusSourceDate, setPathwayStatusSourceDate] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const fetchPathwayStatuses = async () => {\n setLoading(true);\n const snapshot = await firebase.firestore\n .collection('pathwayStatuses')\n .get();\n setPathwayStatuses(\n snapshot.docs.map((d) => ({\n id: d.id, // Include ID so we can set React iterator keys\n ...d.data(),\n })),\n );\n setLoading(false);\n };\n\n const fetchPathwayStatusSourceDate = async () => {\n try {\n const snapshot = await firebase.firestore\n .collection('pathwayStatusDateUpdated')\n .doc('dateUpdated')\n .get();\n const dateUpdated = snapshot.data();\n setPathwayStatusSourceDate(dateUpdated);\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n fetchPathwayStatuses,\n loading,\n pathwayStatuses,\n fetchPathwayStatusSourceDate,\n pathwayStatusSourceDate,\n };\n};\n\nexport default usePathwayStatuses;\n","import React, { useEffect } from 'react';\nimport qs from 'qs';\nimport { useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport PageWrapper from '../components/PageWrapper';\nimport PageHeading from '../components/PageHeading';\nimport PathwayStatusList from '../components/PathwayStatusList';\nimport { ListTextButton } from '../components/List';\nimport { QueryParams, QueryParam } from '../components/QueryParam';\nimport routes from '../constants/routes';\n\nimport usePathwayStatuses from '../hooks/usePathwayStatuses';\n\nimport {\n getPathwayStatusIndicationLabelById,\n getProductById,\n getUsStateFullNameFromAbbreviation,\n} from '../helpers';\n\nconst ContentWrapper = styled.div`\n width: 100%;\n`;\n\nconst PathwayStatusPageHeading = styled(PageHeading)`\n margin-bottom: 0;\n`;\n\nconst SourceText = styled.div`\n margin-top: 1em;\n width: 100%;\n font-size: 12px;\n margin-left: -16px;\n`;\n\nconst TableControlsRow = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 100%;\n margin-bottom: 1em;\n`;\n\nconst NO_RESULTS_TEXT = 'Your current search has no corresponding results.';\nconst sourceText = (dateString) =>\n `The Dedham Group Research (as of ${dateString})`;\n\nconst PathwayStatusResults = () => {\n const { search } = useLocation();\n const params = qs.parse(search, { ignoreQueryPrefix: true });\n const productId = parseInt(params.productId);\n const indicationId = params.indicationId;\n const usState = params.usState;\n const product = getProductById(productId);\n\n const {\n fetchPathwayStatuses,\n pathwayStatuses,\n loading,\n fetchPathwayStatusSourceDate,\n pathwayStatusSourceDate,\n } = usePathwayStatuses();\n\n useEffect(() => {\n fetchPathwayStatuses();\n fetchPathwayStatusSourceDate();\n }, []);\n\n return (\n \n \n \n Pathway Status: Results\n \n \n\n \n \n \n \n \n\n \n New Query\n \n\n \n\n \n Source:{' '}\n {sourceText(\n `${pathwayStatusSourceDate.month} ${pathwayStatusSourceDate.year}`,\n )}\n .\n \n \n );\n};\n\nexport default PathwayStatusResults;\n","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\n\nimport PathwayStatusSelection from './PathwayStatusSelection';\nimport PathwayStatusResults from './PathwayStatusResults';\n\nconst PathwayStatus = () => {\n const { path } = useRouteMatch();\n\n return (\n \n \n \n \n );\n};\n\nexport default PathwayStatus;\n","import React from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport AuthenticatedRoute from './AuthenticatedRoute';\nimport UnauthenticatedRoute from './UnauthenticatedRoute';\n\nimport * as Pages from '../pages';\nimport * as roles from '../constants/roles';\nimport routes from '../constants/routes';\nimport { useAuthContext } from '../providers/AuthProvider';\n\nconst Routes = () => {\n const { user } = useAuthContext();\n const rootRedirect = user?.role === roles.RBM ? routes.admin : routes.home;\n\n return (\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 Routes;\n","import { NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { linkStyles } from '../../components/Link';\nimport * as colors from '../../styles/colors';\nimport * as typography from '../../styles/typography';\nimport {\n appGutters,\n boxShadowStandard,\n headerHeight,\n} from '../../styles/constants';\n\nexport const AppHeaderWrapper = styled.div`\n background-color: ${({ theme }) => theme.background};\n box-shadow: ${boxShadowStandard};\n display: flex;\n z-index: 10;\n // may need to reconsider this because of browser support for sticky\n position: sticky;\n top: 0;\n height: ${headerHeight};\n padding: 0 ${appGutters};\n`;\nexport const ToolbarsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n`;\nexport const LogoWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0px 26px 12px 10px;\n`;\nexport const IconWrapper = styled.div`\n ${linkStyles};\n align-items: center;\n cursor: pointer;\n display: flex;\n position: relative;\n`;\nexport const UsernameWrapper = styled.div`\n align-items: center;\n display: flex;\n & > * {\n margin: 0 8px;\n }\n`;\n\nexport const UserBar = styled.div`\n align-items: center;\n color: ${colors.greyscale[500]};\n display: flex;\n justify-content: flex-end;\n font-size: 0.75rem;\n height: 1.5rem;\n padding: 2px 0;\n & > * {\n margin: 0 16px;\n }\n`;\n\nexport const PrescribingInformationContainer = styled.div`\n width: 140px;\n margin-right: auto;\n`;\n\nexport const NavBar = styled.nav`\n align-items: flex-end;\n background-color: ${({ theme }) => theme.background};\n border-bottom: 6px solid ${({ theme }) => theme.highlight};\n color: ${({ theme }) => theme.foreground};\n display: flex;\n flex-grow: 1;\n font-size: 0.75rem;\n justify-content: flex-end;\n padding-bottom: 12px;\n & > * {\n margin: 0 20px;\n }\n`;\n\nexport const StyledLink = styled(NavLink)`\n ${linkStyles};\n &:hover,\n &:active,\n &.active {\n color: ${({ activeColor, disabled, theme }) =>\n disabled ? theme.disabled : activeColor || theme.foreground};\n ${typography.bold};\n }\n\n // To prevent text from shifting when bold\n &::before {\n display: block;\n content: '${(props) => props.children}';\n height: 0;\n visibility: hidden;\n ${typography.bold};\n }\n`;\n\nexport const IconLink = styled.a`\n ${linkStyles};\n`;\n\nexport const SignOutLink = styled.div`\n ${linkStyles};\n ${typography.bold};\n color: ${({ theme }) => theme.text};\n cursor: pointer;\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { IconLink } from './AppHeader.components';\nimport * as Icons from '../Icons';\nimport * as roles from '../../constants/roles';\nimport { useAppContext } from '../../providers/AppProvider';\nimport { useAuthContext } from '../../providers/AuthProvider';\n\nconst AssistanceLink = ({ superUsers }) => {\n const { user } = useAuthContext();\n const { practice } = useAppContext();\n\n if (!user || user.role === roles.RBM || !practice) return null;\n\n return (\n <>\n NEED ASSISTANCE?  Click here to email your ORM\n \n {Icons.EmailSupport}\n \n \n );\n};\n\nAssistanceLink.propTypes = {\n superUsers: PropTypes.array,\n};\n\nexport default AssistanceLink;\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { padding, size, stripUnit } from 'polished';\n\nimport { boxShadowStandard } from '../styles/constants';\nimport * as typography from '../styles/typography';\nimport { linkStyles } from './Link';\n\nconst TooltipWrapper = styled.div`\n ${padding('12px', '24px')}\n ${(props) => size(props.height, props.width)};\n background-color: ${({ theme }) => theme.background};\n box-shadow: ${boxShadowStandard};\n position: fixed;\n border: 1px solid ${({ theme }) => theme.foreground};\n top: ${(props) => props.top}px;\n /* subtract padding to maintain alignment */\n left: ${(props) => props.left - 48}px;\n z-index: 500;\n`;\n\nconst CloseIcon = styled.div`\n ${linkStyles};\n ${typography.bold};\n cursor: pointer;\n color: ${({ theme }) => theme.foreground};\n position: absolute;\n right: 10px;\n top: 10px;\n`;\n\nexport const POSITIONS_X = {\n LEFT: 'left',\n CENTER: 'center',\n RIGHT: 'right',\n};\nexport const POSITIONS_Y = {\n TOP: 'top',\n CENTER: 'center',\n BOTTOM: 'bottom',\n};\n\nconst calculatePosition = ({ anchorEl, offset, position, height, width }) => {\n const result = { left: 0, top: 0 };\n if (position.x === POSITIONS_X.LEFT) {\n result.left = anchorEl.offsetLeft - width;\n }\n if (position.x === POSITIONS_X.CENTER) {\n result.left = anchorEl.offsetLeft + anchorEl.clientWidth / 2 - width / 2;\n }\n if (position.x === POSITIONS_X.RIGHT) {\n result.left = anchorEl.offsetLeft + anchorEl.clientWidth;\n }\n\n if (position.y === POSITIONS_Y.BOTTOM) {\n result.top = anchorEl.offsetTop + anchorEl.clientHeight;\n }\n if (position.y === POSITIONS_Y.CENTER) {\n result.top = anchorEl.offsetTop + anchorEl.clientHeight / 2 - height / 2;\n }\n if (position.y === POSITIONS_Y.TOP) {\n result.top = anchorEl.offsetTop - height;\n }\n return {\n left: result.left + offset.x,\n top: result.top + offset.y,\n };\n};\n\nconst Tooltip = ({\n anchorEl,\n children,\n className,\n height,\n isOpen,\n offset,\n onClose,\n position,\n width,\n}) => {\n const tooltipRef = useRef(null);\n\n if (!isOpen) return null;\n\n const absolutePosition = calculatePosition({\n anchorEl: anchorEl.current ?? {},\n offset,\n position,\n height: stripUnit(height),\n width: stripUnit(width),\n });\n\n return (\n \n X\n {children}\n \n );\n};\n\nTooltip.propTypes = {\n anchorEl: PropTypes.object,\n children: PropTypes.node,\n className: PropTypes.string,\n height: PropTypes.string,\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n offset: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n }),\n position: PropTypes.shape({\n x: PropTypes.oneOf(['left', 'center', 'right']),\n y: PropTypes.oneOf(['top', 'center', 'bottom']),\n }),\n width: PropTypes.string,\n};\n\nTooltip.defaultProps = {\n offset: {\n x: 0,\n y: 0,\n },\n position: {\n x: 'center',\n y: 'bottom',\n },\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Button from '../Button';\nimport Tooltip from '../Tooltip';\nimport * as typography from '../../styles/typography';\n\nconst Heading = styled.div`\n ${typography.h6};\n ${typography.bold};\n color: ${({ theme }) => theme.foreground};\n`;\n\nconst Body = styled.p`\n font-size: 0.875rem;\n`;\n\nconst SettingsTooltip = ({ anchorEl, isOpen, onClose, superUsers }) => {\n const emailString = superUsers.map((u) => u.email).join(',');\n return (\n \n My Account\n \n If you wish to make changes or have questions about your User Settings,\n please contact your Office Managing User.\n \n \n \n \n \n );\n};\n\nSettingsTooltip.propTypes = {\n anchorEl: PropTypes.object,\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n superUsers: PropTypes.array,\n};\n\nexport default SettingsTooltip;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport * as colors from '../../styles/colors';\nimport * as typography from '../../styles/typography';\nimport Link from '../Link';\nimport { PRESCRIBING_INFORMATION } from '../../constants';\n\nconst PiText = styled.p`\n ${typography.bold};\n color: ${colors.darkBlue};\n`;\nconst PiLink = styled(Link)``;\n\nconst PrescribingInformation = () => {\n return (\n \n Prescribing Information\n \n );\n};\n\nexport default PrescribingInformation;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Link, useHistory } from 'react-router-dom';\nimport { ThemeProvider } from 'styled-components';\n\nimport {\n AppHeaderWrapper,\n IconWrapper,\n LogoWrapper,\n NavBar,\n PrescribingInformationContainer,\n SignOutLink,\n StyledLink,\n ToolbarsWrapper,\n UserBar,\n UsernameWrapper,\n} from './AppHeader.components';\nimport AssistanceLink from './AssistanceLink';\nimport SettingsTooltip from './SettingsTooltip';\nimport * as Icons from '../Icons';\nimport { useUserApi } from '../../api/user';\nimport eyleaLogo from '../../assets/images/LibtayoLogo.png';\nimport routes from '../../constants/routes';\nimport * as roles from '../../constants/roles';\nimport { getCoverageTitle } from '../../helpers';\nimport { useAppContext } from '../../providers/AppProvider';\nimport { useAuthContext } from '../../providers/AuthProvider';\nimport { darkTheme } from '../../styles/themes';\nimport PrescribingInformation from './PrescribingInformation';\n\nconst AppHeader = () => {\n const history = useHistory();\n const { GetUsersFromPractice } = useUserApi();\n const { user, signOut } = useAuthContext();\n const { practice } = useAppContext();\n const settingsIconRef = useRef(null);\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [superUsers, setSuperUsers] = useState([]);\n\n useEffect(() => {\n if (!practice?.id) return;\n const fetchSuperUsers = async () => {\n const allUsers = await GetUsersFromPractice(practice.id);\n const filteredUsers = allUsers.filter((u) => u.role === roles.SUPER_USER);\n setSuperUsers(filteredUsers);\n };\n fetchSuperUsers();\n }, [practice?.id]);\n\n const handleLogOut = async () => {\n await signOut();\n history.push(routes.login);\n };\n\n const handleOpenSettings = () => {\n if (user.role === roles.GENERAL_USER) {\n setIsTooltipOpen(!isTooltipOpen);\n } else {\n history.push(routes.admin);\n }\n };\n\n return (\n \n \n \n \"EYLEA\"\n \n \n \n \n \n \n \n {user && (\n <>\n \n {Icons.User} {user.displayName || user.email}\n \n LOG OUT\n \n {Icons.Cog}\n \n \n )}\n \n \n \n {user && (\n <>\n Home\n \n {getCoverageTitle(user.role)}\n \n\n \n Find a Medical Policy\n \n \n Find a Prior Authorization Form\n \n \n Pathway Status\n \n User Guide\n Resources\n \n )}\n \n \n \n \n \n \n setIsTooltipOpen(false)}\n superUsers={superUsers}\n />\n \n );\n};\n\nexport default AppHeader;\n","export default \"data:image/png;base64,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\"","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { ThemeProvider } from 'styled-components';\nimport Markdown from 'react-markdown';\nimport { padding } from 'polished';\n\nimport { ChevronUp } from './Icons';\nimport { linkStyles } from './Link';\nimport PageFooter from './PageFooter';\nimport PageFooterDisclaimerText from './PageFooterDisclaimerText';\nimport * as FOOTER_CONTENT from '../constants/footerContent';\nimport { PRESCRIBING_INFORMATION } from '../constants';\nimport { darkTheme } from '../styles/themes';\nimport * as typography from '../styles/typography';\nimport { appGutters, footerHeight } from '../styles/constants';\n\nconst PRESCRIBING_INFO_LINK_LIBTAYO = PRESCRIBING_INFORMATION.LIBTAYO.value;\n\nconst AppFooterWrapper = styled.div`\n ${(props) => padding(0, appGutters, props.sticky ? 0 : '16px')};\n background-color: ${({ theme }) => theme.background};\n border-top: 6px solid ${({ theme }) => theme.highlight};\n bottom: 0;\n color: ${({ theme }) => theme.text};\n cursor: ${(props) => (props.isExpanded ? 'auto' : 'pointer')};\n display: flex;\n flex-direction: column;\n height: ${(props) => (props.sticky ? footerHeight : 'fit-content')};\n min-height: ${footerHeight};\n max-height: ${(props) => (props.sticky ? footerHeight : 'fit-content')};\n overflow: ${(props) => (props.sticky ? 'hidden' : 'visible')};\n position: ${(props) => (props.sticky ? 'fixed' : 'relative')};\n scrollbar-gutter: stable;\n z-index: ${(props) => (props.sticky ? 10 : 5)};\n & ul {\n padding-inline-start: 20px;\n & li {\n padding-bottom: 2px;\n }\n }\n & p,\n ul {\n margin-block-start: 0.5em;\n margin-block-end: 0.5em;\n }\n`;\nconst BigChevron = styled.div`\n align-items: center;\n cursor: pointer;\n fill: colors.yellowGreen;\n display: flex;\n padding: 16px 0 0;\n width: fit-content;\n & svg {\n transform: rotate(${(props) => (props.isExpanded ? '180deg' : '0deg')});\n & * {\n fill: ${({ theme }) => theme.accent};\n stroke: ${({ theme }) => theme.accent};\n }\n }\n`;\n\nconst FooterColumns = styled.div`\n display: grid;\n grid-template-columns: 2fr 1fr;\n grid-gap: 2rem;\n`;\n\nconst FooterColumn = styled.div`\n font-size: 0.9rem;\n`;\n\nconst StyledMarkdown = styled(Markdown)`\n h2 {\n font-size: 32px;\n }\n h3 {\n font-size: 28px;\n }\n h4 {\n font-size: 24px;\n }\n h2,\n h3,\n h4 {\n margin: 0 0 0.5rem 0;\n }\n p,\n li {\n font-size: 1rem;\n margin-block: 0.5rem;\n }\n p + h2,\n p + h3,\n p + h4,\n ul + h2,\n ul + h3,\n ul + h4 {\n margin-top: 1rem;\n }\n strong {\n ${typography.bold}\n }\n`;\n\nconst PrescribingInfo = styled.div`\n margin-top: 15px;\n margin-bottom: 8px;\n ${typography.bold};\n color: ${({ theme }) => theme.foreground};\n & > a {\n ${linkStyles};\n text-decoration: underline;\n }\n`;\n\nconst AppFooter = forwardRef(\n ({ className, isExpanded, onToggleExpanded, sticky }, ref) => (\n \n !isExpanded && onToggleExpanded()}\n ref={ref}\n sticky={sticky}\n >\n \n {ChevronUp}\n \n \n \n \n {FOOTER_CONTENT.ISI_COPY_MAIN_MARKDOWN}\n \n\n \n Please see full \n \n Prescribing Information\n \n .\n \n \n \n \n \n {FOOTER_CONTENT.ISI_COPY_SIDEBAR_MARKDOWN}\n \n \n \n \n \n \n ),\n);\n\n// we need this because we're using React.forwardRef()\nAppFooter.displayName = 'AppFooter';\nAppFooter.propTypes = {\n className: PropTypes.string,\n isExpanded: PropTypes.bool,\n onToggleExpanded: PropTypes.func.isRequired,\n sticky: PropTypes.bool,\n};\n\nexport default AppFooter;\n","export const COPY = [\n {\n title: `Indications`,\n eyleaHD: `EYLEA® HD (aflibercept) Injection 8 mg is indicated for the treatment of patients with Neovascular (Wet) Age-Related Macular Degeneration (AMD), Diabetic Macular Edema (DME), and Diabetic Retinopathy (DR).`,\n eylea: `EYLEA® (aflibercept) Injection 2 mg is indicated for the treatment of patients with Neovascular (Wet) Age-Related Macular Degeneration (AMD), Macular Edema following Retinal Vein Occlusion (RVO), Diabetic Macular Edema (DME), and Diabetic Retinopathy (DR).`,\n },\n];\n\nexport const ISI_COPY_SIDEBAR_MARKDOWN = `\n## Indications and Usage\n\nLIBTAYO in combination with platinum‐based chemotherapy is indicated for the first‐line treatment\nof adult patients with non-small cell lung cancer (NSCLC) with no EGFR, ALK or ROS1 aberrations\nand is locally advanced where patients are not candidates for surgical resection or definitive\nchemoradiation OR metastatic.\n\nLIBTAYO as a single agent is indicated for the first-line treatment of adult patients with NSCLC\nwhose tumors have high PD-L1 expression (tumor proportion score [TPS] ≥50%) as determined by an\nFDA-approved test, with no EGFR, ALK or ROS1 aberrations, and is locally advanced where patients\nare not candidates for surgical resection or definitive chemoradiation OR metastatic.\n\nLIBTAYO is indicated for the treatment of patients with metastatic cutaneous squamous cell carcinoma\n(mCSCC) or locally advanced CSCC (laCSCC) who are not candidates for curative surgery or curative\nradiation.\n\nLIBTAYO is indicated for the treatment of patients with locally advanced or metastatic basal cell\ncarcinoma (laBCC or mBCC) who have been previously treated with a hedgehog pathway inhibitor or\nfor whom a hedgehog pathway inhibitor is not appropriate.\n`;\n\nexport const ISI_COPY_MAIN_MARKDOWN = `\n## Important Safety Information\n\n### Warnings and Precautions\n\n#### Severe and Fatal Immune-Mediated Adverse Reactions\n\nImmune-mediated adverse reactions, which may be severe or fatal, can occur in any organ system or\ntissue at any time after starting treatment. While immune-mediated adverse reactions usually occur\nduring treatment, they can also occur after discontinuation. Immune-mediated adverse reactions affecting\nmore than one body system can occur simultaneously. Early identification and management are essential\nto ensuring safe use of PD-1/PD-L1–blocking antibodies. The definition of immune-mediated adverse\nreactions included the required use of systemic corticosteroids or other immunosuppressants and the\nabsence of a clear alternate etiology. Monitor closely for symptoms and signs that may be clinical\nmanifestations of underlying immune-mediated adverse reactions. Evaluate liver enzymes, creatinine,\nand thyroid function at baseline and periodically during treatment. In cases of suspected immune-mediated\nadverse reactions, initiate appropriate workup to exclude alternative etiologies, including infection.\nInstitute medical management promptly, including specialty consultation as appropriate.\n\nWithhold or permanently discontinue LIBTAYO depending on severity of the adverse reaction (see Section 2\nDosage and Administration in the accompanying Full Prescribing Information). In general, if LIBTAYO\nrequires interruption or discontinuation, administer systemic corticosteroid therapy (1 to 2 mg/kg/day\nprednisone or equivalent) until improvement to Grade 1 or less. Upon improvement to Grade 1 or less,\ninitiate corticosteroid taper and continue to taper over at least 1 month. Consider administration of\nother systemic immunosuppressants in patients whose immune-mediated adverse reactions are not controlled\nwith corticosteroids. Toxicity management guidelines for adverse reactions that do not necessarily require\nsystemic steroids (e.g., endocrinopathies and dermatologic reactions) are discussed below.\n\nThe incidence and severity of immune-mediated adverse reactions were similar when LIBTAYO was administered\nas a single agent or in combination with chemotherapy.\n\n**Immune-mediated pneumonitis:** LIBTAYO can cause immune-mediated pneumonitis. In patients treated with\n other PD-1/PD-L1–blocking antibodies, the incidence of pneumonitis is higher in patients who have received\nprior thoracic radiation. Immune-mediated pneumonitis occurred in 2.6% (33/1281) of patients receiving\nLIBTAYO, including Grade 4 (0.3%), Grade 3 (0.6%), and Grade 2 (1.6%). Pneumonitis led to permanent\ndiscontinuation in 1.3% of patients and withholding of LIBTAYO in 1.4% of patients. Systemic corticosteroids\nwere required in all patients with pneumonitis. Pneumonitis resolved in 61% of the 33 patients. Of the\n18 patients in whom LIBTAYO was withheld, 10 reinitiated after symptom improvement; of these, 4/10 (40%)\nhad recurrence of pneumonitis.\n\n**Immune-mediated colitis:** LIBTAYO can cause immune-mediated colitis. The primary component of immune-mediated\ncolitis was diarrhea. Cytomegalovirus (CMV) infection/reactivation has been reported in patients with\ncorticosteroid-refractory immune-mediated colitis treated with PD-1/PD-L1–blocking antibodies. In cases of\ncorticosteroid-refractory immune-mediated colitis, consider repeating infectious workup to exclude alternative\netiologies. Immune-mediated colitis occurred in 2% (25/1281) of patients receiving LIBTAYO, including Grade 3\n(0.8%) and Grade 2 (0.9%). Colitis led to permanent discontinuation in 0.4% of patients and withholding of\nLIBTAYO in 1.2% of patients. Systemic corticosteroids were required in all patients with colitis. Colitis\nresolved in 56% of the 25 patients. Of the 16 patients in whom LIBTAYO was withheld, 6 reinitiated LIBTAYO\nafter symptom improvement; of these, 4/6 (67%) had recurrence.\n\n**Immune-mediated hepatitis:** LIBTAYO can cause immune-mediated hepatitis. Immune-mediated hepatitis occurred\nin 2.4% (31/1281) of patients receiving LIBTAYO, including fatal (<0.1%), Grade 4 (0.3%), Grade 3 (1.6%),\nand Grade 2 (0.2%). Hepatitis led to permanent discontinuation of LIBTAYO in 1.4% of patients and withholding\nof LIBTAYO in 0.7% of patients. Systemic corticosteroids were required in all patients with hepatitis.\nAdditional immunosuppression with mycophenolate was required in 13% (4/31) of these patients. Hepatitis\nresolved in 39% of the 31 patients. Of the 9 patients in whom LIBTAYO was withheld, 5 reinitiated LIBTAYO\nafter symptom improvement; of these, 1/5 (20%) had recurrence.\n\n**Immune-mediated endocrinopathies:**\n* **Adrenal insufficiency:** LIBTAYO can cause primary or secondary adrenal insufficiency. For Grade 2 or\n higher adrenal insufficiency, initiate symptomatic treatment, including hormone replacement as clinically\n indicated. Withhold LIBTAYO depending on severity. Adrenal insufficiency occurred in 0.5% (6/1281)\n of patients receiving LIBTAYO, including Grade 3 (0.5%). Adrenal insufficiency led to permanent\n discontinuation of LIBTAYO in 1 (<0.1%) patient. LIBTAYO was withheld in 1 (<0.1%) patient due\n to adrenal insufficiency and not reinitiated. Systemic corticosteroids were required in 83% (5/6)\n patients with adrenal insufficiency; of these, the majority remained on systemic corticosteroids.\n Adrenal insufficiency had resolved in 17% of the 6 patients\n* **Hypophysitis:** LIBTAYO can cause immune-mediated hypophysitis. Hypophysitis can present with acute\n symptoms associated with mass effect such as headache, photophobia, or visual field defects.\n Hypophysitis can cause hypopituitarism. Initiate hormone replacement as clinically indicated.\n Withhold or permanently discontinue depending on severity. Hypophysitis occurred in 0.5%\n (7/1281) of patients receiving LIBTAYO, including Grade 3 (0.2%) and Grade 2 (0.3%) adverse\n reactions. Hypophysitis led to permanent discontinuation of LIBTAYO in 1 (<0.1%) patient and\n withholding of LIBTAYO in 2 (0.2%) patients. Systemic corticosteroids were required in 86% (6/7)\n of patients with hypophysitis. Hypophysitis resolved in 14% of the 7 patients. Of the 2\n patients in whom LIBTAYO was withheld for hypophysitis, none of the patients reinitiated\n* **Thyroid disorders:** LIBTAYO can cause immune-mediated thyroid disorders. Thyroiditis can present\n with or without endocrinopathy. Hypothyroidism can follow hyperthyroidism. Initiate hormone\n replacement or medical management of hyperthyroidism as clinically indicated. Withhold or\n permanently discontinue LIBTAYO depending on severity\n* **Thyroiditis:** Thyroiditis occurred in 0.6% (8/1281) of patients receiving LIBTAYO, including\n Grade 2 (0.3%) adverse reactions. No patient discontinued LIBTAYO due to thyroiditis.\n Thyroiditis led to withholding of LIBTAYO in 1 (<0.1%) patient. Systemic corticosteroids\n were not required in any patient with thyroiditis. Thyroiditis resolved in 13% of the\n 8 patients. Blood thyroid stimulating hormone increased and blood thyroid stimulating\n hormone decreased have also been reported\n* **Hyperthyroidism:** Hyperthyroidism occurred in 3% (39/1281) of patients receiving LIBTAYO,\n including Grade 3 (<0.1%) and Grade 2 (0.9%). No patient discontinued treatment and LIBTAYO\n was withheld in 7 (0.5%) patients due to hyperthyroidism. Systemic corticosteroids were\n required in 8% (3/39) of patients. Hyperthyroidism resolved in 56% of 39 patients. Of\n the 7 patients in whom LIBTAYO was withheld for hyperthyroidism, 2 patients reinitiated\n LIBTAYO after symptom improvement; of these, none had recurrence of hyperthyroidism\n* **Hypothyroidism:** Hypothyroidism occurred in 7% (87/1281) of patients receiving LIBTAYO,\n including Grade 3 (<0.1%) and Grade 2 (6%). Hypothyroidism led to permanent\n discontinuation of LIBTAYO in 3 (0.2%) patients. Hypothyroidism led to withholding\n of LIBTAYO in 9 (0.7%) patients. Systemic corticosteroids were required in 1.1%\n (1/87) of patients with hypothyroidism. Hypothyroidism resolved in 6% of the 87\n patients. Majority of the patients with hypothyroidism required long-term thyroid\n hormone replacement. Of the 9 patients in whom LIBTAYO was withheld for hypothyroidism,\n 1 reinitiated LIBTAYO after symptom improvement and did not have recurrence of\n hypothyroidism\n* **Type 1 diabetes mellitus, which can present with diabetic ketoacidosis:** Monitor for hyperglycemia\n or other signs and symptoms of diabetes. Initiate treatment with insulin as clinically indicated.\n Withhold LIBTAYO depending on severity. Type 1 diabetes mellitus occurred in <0.1% (1/1281) of patients\n (Grade 4). No patient discontinued treatment due to Type 1 diabetes mellitus. Type 1 diabetes mellitus\n led to withholding of LIBTAYO in 0.1% of patients, treatment was reinitiated after symptom improvement.\n Patient received long-term insulin therapy\n\n**Immune-mediated nephritis with renal dysfunction:** LIBTAYO can cause immune-mediated nephritis. Immune-mediated\nnephritis occurred in 0.7% (9/1281) of patients receiving LIBTAYO, including fatal (<0.1%), Grade 3\n(<0.1%), and Grade 2 (0.5%). Nephritis led to permanent discontinuation in 0.2% of patients and withholding\nof LIBTAYO in 0.4% of patients. Systemic corticosteroids were required in all patients with nephritis.\nNephritis resolved in 78% of the 9 patients. Of the 5 patients in whom LIBTAYO was withheld, 4 reinitiated\nLIBTAYO after symptom improvement; of these, 1/4 (25%) had recurrence.\n\n**Immune-mediated dermatologic adverse reactions:** LIBTAYO can cause immune-mediated rash or dermatitis.\nExfoliative dermatitis, including Stevens-Johnson syndrome (SJS), toxic epidermal necrolysis (TEN),\nand drug rash with eosinophilia and systemic symptoms (DRESS) has occurred with PD-1/PD-L1–blocking antibodies.\nImmune-mediated dermatologic adverse reactions occurred in 1.9% (24/1281) of patients receiving LIBTAYO,\nincluding Grade 3 (0.9%) and Grade 2 (0.8%). Immune-mediated dermatologic adverse reactions led to permanent\ndiscontinuation in 0.2% of patients and withholding of LIBTAYO in 1.3% of patients. Systemic corticosteroids\nwere required in all patients with immune-mediated dermatologic adverse reactions. Immune-mediated dermatologic\nadverse reactions resolved in 71% of the 24 patients. Of the 17 patients in whom LIBTAYO was withheld for\ndermatologic adverse reaction, 13 reinitiated LIBTAYO after symptom improvement; of these, 5/13 (38%) had\nrecurrence of the dermatologic adverse reaction. Topical emollients and/or topical corticosteroids may be\nadequate to treat mild to moderate non-exfoliative rashes.\n\n**Other immune-mediated adverse reactions:** The following clinically significant immune-mediated adverse reactions\noccurred at an incidence of <1% in 1281 patients who received LIBTAYO or were reported with the use of other\nPD-1/PD-L1–blocking antibodies. Severe or fatal cases have been reported for some of these adverse reactions.\n\n* **Cardiac/vascular:** Myocarditis, pericarditis, and vasculitis. Permanently discontinue for Grades 2, 3, or 4 myocarditis\n* **Nervous system:** Meningitis, encephalitis, myelitis and demyelination, myasthenic syndrome/myasthenia gravis\n (including exacerbation), Guillain-Barré syndrome, nerve paresis, and autoimmune neuropathy\n* **Ocular:** Uveitis, iritis, and other ocular inflammatory toxicities. Some cases can be associated with retinal\n detachment. Various grades of visual impairment to include blindness can occur. If uveitis occurs in combination\n with other immune-mediated adverse reactions, consider a Vogt-Koyanagi-Harada–like syndrome, as this may require\n treatment with systemic steroids to reduce the risk of permanent vision loss\n* **Gastrointestinal:** Pancreatitis to include increases in serum amylase and lipase levels, gastritis, duodenitis, stomatitis\n* **Musculoskeletal and connective tissue:** Myositis/polymyositis/dermatomyositis, rhabdomyolysis, and associated\n sequelae including renal failure, arthritis, polymyalgia rheumatica\n* **Endocrine:** Hypoparathyroidism\n* **Other (hematologic/immune):** Hemolytic anemia, aplastic anemia, hemophagocytic lymphohistiocytosis (HLH), systemic\n inflammatory response syndrome, histiocytic necrotizing lymphadenitis (Kikuchi lymphadenitis), sarcoidosis, immune\n thrombocytopenia, solid organ transplant rejection, other transplant (including corneal graft) rejection\n\n#### Infusion-Related Reactions\n\nSevere or life-threatening infusion-related reactions occurred in 0.2% of patients receiving LIBTAYO as a single agent.\nMonitor patients for signs and symptoms of infusion-related reactions. Common symptoms of infusion-related reaction\ninclude nausea, pyrexia, and vomiting. Interrupt or slow the rate of infusion or permanently discontinue LIBTAYO\nbased on severity of reaction.\n\n#### Complications of Allogeneic HSCT\n\nFatal and other serious complications can occur in patients who receive allogeneic hematopoietic stem cell\ntransplantation (HSCT) before or after being treated with a PD-1/PD-L1–blocking antibody. Transplant-related\ncomplications include hyperacute graft-versus-host disease (GVHD), acute GVHD, chronic GVHD, hepatic\nveno-occlusive disease (VOD) after reduced intensity conditioning, and steroid-requiring febrile syndrome\n(without an identified infectious cause). These complications may occur despite intervening therapy between\nPD-1/PD-L1 blockade and allogeneic HSCT. Follow patients closely for evidence of transplant-related complications\nand intervene promptly. Consider the benefit versus risks of treatment with a PD-1/PD-L1–blocking antibody\nprior to or after an allogeneic HSCT.\n\n#### Embryo-Fetal Toxicity\n\nLIBTAYO can cause fetal harm when administered to a pregnant woman due to an increased risk of immune-mediated\nrejection of the developing fetus resulting in fetal death. Advise women of the potential risk to a fetus.\nAdvise females of reproductive potential to use effective contraception during treatment with LIBTAYO and for\nat least 4 months after the last dose.\n\n#### Adverse Reactions\n\n_LIBTAYO as a single agent:_ the most common adverse\nreactions (≥15%) are fatigue, musculoskeletal pain, rash,\ndiarrhea, and anemia\n\n_LIBTAYO in combination with platinum-based chemotherapy:_\nthe most common adverse reactions (≥15%) are alopecia,\nmusculoskeletal pain, nausea, fatigue, peripheral neuropathy, and\ndecreased appetite\n\n#### Use in Specific Populations\n\n* **Lactation:** Because of the potential for serious adverse reactions in breastfed children, advise women not to breastfeed during treatment and for at least 4 months after the last dose of LIBTAYO\n* **Females and males of reproductive potential:** Verify pregnancy status in females of reproductive potential prior to initiating LIBTAYO\n`;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport Button from './Button';\nimport Modal from './Modal';\nimport * as typography from '../styles/typography';\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 50px;\n color: ${({ theme }) => theme.foreground};\n & > * {\n margin: 8px 0;\n }\n`;\nconst Heading = styled.div`\n ${typography.bold};\n ${typography.h4};\n color: ${({ theme }) => theme.error};\n`;\nconst SubHeading = styled.div`\n ${typography.h6};\n`;\n\nconst ErrorModal = ({ heading, isOpen, message, onClose }) => {\n return (\n \n \n {heading}\n {message}\n \n \n \n );\n};\n\nErrorModal.propTypes = {\n heading: PropTypes.string,\n isOpen: PropTypes.bool.isRequired,\n message: PropTypes.string,\n onClose: PropTypes.func,\n};\nErrorModal.defaultProps = {\n heading: 'An error has occurred',\n};\n\nexport default ErrorModal;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport LoadingSpinner from './LoadingSpinner';\n\nconst Overlay = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n width: 100%;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n color: black;\n background: rgba(0, 0, 0, 0.7);\n margin: 0;\n z-index: 800;\n transition: opacity 250ms ease-in;\n opacity: ${(props) => (props.isLoading ? 1 : 0)};\n perspective: 1000px;\n`;\n\nconst LoadingOverlay = ({ loading }) =>\n loading ? (\n \n \n \n ) : null;\n\nLoadingOverlay.propTypes = {\n loading: PropTypes.bool,\n};\n\nexport default LoadingOverlay;\n","import PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { margin, padding, stripUnit } from 'polished';\nimport { isIE } from 'react-device-detect';\nimport { useInView } from 'react-intersection-observer';\n\nimport AppHeader from './AppHeader';\nimport AppFooter from './AppFooter';\nimport ErrorModal from './ErrorModal';\nimport LoadingOverlay from './LoadingOverlay';\nimport { useAppContext } from '../providers/AppProvider';\nimport { calcViewArea } from '../styles/utils';\nimport {\n appGutters,\n footerHeight,\n headerHeight,\n backgroundStyles,\n ISI_SCROLL_THRESHOLD,\n} from '../styles/constants';\n\nconst viewArea = calcViewArea(footerHeight, headerHeight);\nconst ScrollArea = styled.div`\n overflow-y: scroll;\n max-height: ${calcViewArea(headerHeight)};\n`;\nconst AppGutter = styled.div`\n ${backgroundStyles};\n flex-grow: 1;\n min-width: ${appGutters};\n max-width: 100vw;\n`;\nconst AppWrapper = styled.div`\n min-height: ${viewArea};\n display: flex;\n flex-direction: row;\n`;\nconst AppContentArea = styled.div`\n min-height: ${viewArea};\n ${margin(0, stripUnit(appGutters) * -1)};\n ${padding(0, appGutters)};\n z-index: 2;\n width: 100%;\n max-width: calc(100vw - ${stripUnit(appGutters) * 2}px);\n`;\nAppContentArea.displayName = 'AppContentArea';\n\nconst Layout = ({ children }) => {\n const history = useHistory();\n const {\n globalError,\n isInitializing,\n isLoading,\n setFirstTimeExperience,\n setGlobalError,\n } = useAppContext();\n const scrollAreaRef = useRef(null);\n const footerRef = useRef(null);\n const [showStickyFooter, setShowStickyFooter] = useState(true);\n const [prevEntry, setPrevEntry] = useState({});\n const [scrollReturnPoint, setScrollReturnPoint] = useState(0);\n const [inViewRef, internalFooterVisible, entry] = useInView({\n threshold: [0, ISI_SCROLL_THRESHOLD],\n });\n const showIsi =\n history.location.pathname === '/login' || history.location.pathname === '/'\n ? false\n : true;\n\n useEffect(() => {\n if (isIE) return;\n const unsubscribe = history.listen(() => {\n // reset FTE whenever someone routes in case they land on\n // a page other than Home first\n setFirstTimeExperience(false);\n // scroll to top of page when the route changes\n if (!scrollAreaRef || !scrollAreaRef.current) return;\n scrollAreaRef.current.scrollTo({ top: 0 });\n });\n return unsubscribe;\n }, []);\n\n // this effect uses entries from IntersectionObserver to determine which direction\n // a user is scrolling, and uses that to determine how/when to hide or show things\n useEffect(() => {\n if (!entry) return;\n if (showIsi)\n if (prevEntry.intersectionRatio === undefined) {\n setPrevEntry(entry);\n } else {\n const isScrollingDown =\n entry.intersectionRatio > prevEntry.intersectionRatio;\n if (internalFooterVisible) {\n setShowStickyFooter(\n !isScrollingDown && entry.intersectionRatio <= ISI_SCROLL_THRESHOLD,\n );\n } else {\n setShowStickyFooter(true);\n }\n setPrevEntry(entry);\n }\n }, [entry, internalFooterVisible, prevEntry]);\n\n const setFooterRefs = useCallback(\n (node) => {\n footerRef.current = node;\n inViewRef(node);\n },\n [inViewRef],\n );\n\n const handleToggleFooter = () => {\n if (showStickyFooter) {\n setScrollReturnPoint(scrollAreaRef.current.scrollTop);\n footerRef.current.scrollIntoView({ behavior: 'smooth' });\n } else {\n if (isIE) {\n scrollAreaRef.current.scrollIntoView();\n } else {\n scrollAreaRef.current.scrollTo({\n behavior: 'smooth',\n top: scrollReturnPoint,\n });\n setScrollReturnPoint(0);\n }\n }\n };\n\n return (\n
\n \n \n \n \n {!isInitializing && (\n <>\n {children}\n \n \n )}\n \n {showIsi && (\n \n )}\n \n {showStickyFooter && showIsi && (\n \n )}\n {globalError && (\n setGlobalError(null)}\n />\n )}\n \n {/* */}\n
\n );\n};\n\nLayout.propTypes = {\n children: PropTypes.node,\n};\n\nexport default Layout;\n","import React from 'react';\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { ThemeProvider } from 'styled-components';\n\nimport BrowserSupportModal from './components/BrowserSupportModal';\nimport AppProvider from './providers/AppProvider';\nimport AuthProvider from './providers/AuthProvider';\nimport FirebaseProvider from './providers/FirebaseProvider';\nimport GlobalStyle from './styles/GlobalStyle';\nimport { lightTheme } from './styles/themes';\nimport Routes from './routes';\n\nimport Layout from './components/Layout';\n\nfunction App() {\n return (\n \n \n {/* Global Site Tag (gtag.js) - Google Analytics */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import 'core-js';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'intersection-observer';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport * as Sentry from '@sentry/react';\n\nSentry.init({\n dsn: process.env.REACT_APP_NPPW_SENTRY_DSN,\n integrations: [\n new Sentry.BrowserTracing({\n // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n tracePropagationTargets: ['localhost', /^https:\\/\\/yourserver\\.io\\/api/],\n }),\n new Sentry.Replay(),\n ],\n // Performance Monitoring\n tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production!\n // Session Replay\n replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n environment: process.env.REACT_APP_NPPW_ENV,\n});\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}