{"version":3,"sources":["C:/src/bail-calculator/assets/copy/Privacy.js","C:/src/bail-calculator/assets/copy/Terms.js","C:/src/bail-calculator/web-build/register-service-worker.js","C:/src/bail-calculator/assets/icons/loading.png","C:/src/bail-calculator/assets/images/Vera_WhiteonRed.png","C:/src/bail-calculator/assets/images/Vera_WhiteonGray.png","C:/src/bail-calculator/assets/images/cover.png","C:/src/bail-calculator/src/components/AppLoading.web.js","C:/src/bail-calculator/src/helpers/AssetsCaching.web.js","C:/src/bail-calculator/src/config/colors.js","C:/src/bail-calculator/src/layout/Flex.js","C:/src/bail-calculator/src/components/InputScroll.js","C:/src/bail-calculator/src/layout/WebCompatibleOverlay.js","C:/src/bail-calculator/src/layout/OverlayScroll.js","C:/src/bail-calculator/src/config/Styles.js","C:/src/bail-calculator/src/layout/Paragraph.js","C:/src/bail-calculator/src/views/assessment/About/AboutSection.js","C:/src/bail-calculator/src/views/assessment/About/Glossary.js","C:/src/bail-calculator/src/layout/ScreenContainer.js","C:/src/bail-calculator/src/navigators/leftHeaderHoc.js","C:/src/bail-calculator/src/navigators/makeScrollable.js","C:/src/bail-calculator/src/navigators/singleNavigator.js","C:/src/bail-calculator/src/reducer.js","C:/src/bail-calculator/src/veraRedux.js","C:/src/bail-calculator/src/components/ActionResponder.js","C:/src/bail-calculator/src/components/LabelIcon.js","C:/src/bail-calculator/src/layout/Strip.js","C:/src/bail-calculator/src/layout/Section.js","C:/src/bail-calculator/src/views/assessment/Terms.js","C:/src/bail-calculator/src/views/assessment/TermsOverlay.js","C:/src/bail-calculator/src/views/assessment/Cover.js","C:/src/bail-calculator/src/components/Link.js","C:/src/bail-calculator/src/views/assessment/About/Background.js","C:/src/bail-calculator/src/views/assessment/About/FAQ.js","C:/src/bail-calculator/src/views/assessment/About/Acknowledgments.js","C:/src/bail-calculator/src/views/assessment/Info.js","C:/src/bail-calculator/src/layout/NavigationStrip.js","C:/src/bail-calculator/src/navigators/linearNavigator.js","C:/src/bail-calculator/src/navigators/RightHeader.js","C:/src/bail-calculator/src/navigators/veraNavigator.js","C:/src/bail-calculator/src/components/Question.js","C:/src/bail-calculator/src/components/VeraButton.js","C:/src/bail-calculator/src/components/YesNoQuestion.js","C:/src/bail-calculator/src/sharedFields.js","C:/src/bail-calculator/src/views/assets/AssetsHead.js","C:/src/bail-calculator/src/hooks/useErrorState.js","C:/src/bail-calculator/src/components/CurrencyInput.js","C:/src/bail-calculator/src/components/OptioinalInput.js","C:/src/bail-calculator/src/components/HookedOptionalInput.js","C:/src/bail-calculator/src/views/assets/AssetsInput.js","C:/src/bail-calculator/src/views/assets/AssetsSummary.js","C:/src/bail-calculator/src/views/benefits/BenefitHead.js","C:/src/bail-calculator/src/config/helpText.js","C:/src/bail-calculator/src/views/benefits/BenefitsInput.js","C:/src/bail-calculator/src/views/benefits/BenefitsSummary.js","C:/src/bail-calculator/src/views/benefits/ExpectedBenefits.js","C:/src/bail-calculator/src/views/expenses/ExpensesHead.js","C:/src/bail-calculator/src/views/expenses/ExpensesInput.js","C:/src/bail-calculator/src/views/expenses/ExpensesSummary.js","C:/src/bail-calculator/src/views/income/ExpectedIncome.js","C:/src/bail-calculator/src/views/income/IncomeHead.js","C:/src/bail-calculator/src/components/VeraSelect.js","C:/src/bail-calculator/src/views/income/IncomeInput.js","C:/src/bail-calculator/src/views/income/IncomeSummary.js","C:/src/bail-calculator/src/views/intro/TopCharge.js","C:/src/bail-calculator/src/views/summary/SummaryItem.js","C:/src/bail-calculator/src/views/summary/BailSummary.js","C:/src/bail-calculator/src/views/summary/SectionSummaryItem.js","C:/src/bail-calculator/src/views/summary/SectionSummary.js","C:/src/bail-calculator/src/sectionNames.js","C:/src/bail-calculator/src/veraWizard.js","C:/src/bail-calculator/src/components/DrawerSubmenu.js","C:/src/bail-calculator/src/App.js","C:/src/bail-calculator/src/index.native.js"],"names":["module","exports","navigator","window","addEventListener","serviceWorker","register","scope","then","info","catch","error","console","styles","StyleSheet","create","container","flex","alignItems","justifyContent","padding","emptyFunc","AppLoading","React","Component","componentDidMount","startAsync","onError","onFinish","this","props","successCb","errorCb","Promise","resolve","render","autoHideSplash","others","View","style","ActivityIndicator","size","cacheAssets","cachedFonts","cacheFont","name","link","styleBody","document","createElement","type","styleSheet","cssText","appendChild","createTextNode","head","cacheFonts","fonts","jobs","fontName","push","all","flexDirection","Flex","children","row","rowReverse","col","colReverse","start","end","center","spaceBetween","rest","computedStyle","flatten","propTypes","PropTypes","node","isRequired","ViewPropTypes","bool","defaultProps","InputScroll","scrollTo","remaining","contentSize","setContentSize","useState","layoutSize","setLayoutSize","enabled","setEnabled","ref","useRef","ref2","useEffect","Platform","OS","current","flashScrollIndicators","Boolean","scrollToPosition","innerRef","r","indicatorStyle","persistentScrollbar","enableOnAndroid","scrollEnabled","onContentSizeChange","x","y","onLayout","e","nativeEvent","layout","height","maxHeight","undefined","number","WebCompatibleOverlay","RenderedOverlay","overlayStyle","borderStyle","zIndex","display","isVisible","header","textAlign","marginBottom","body","footer","marginTop","OverlayScroll","containerStyle","bodyStyle","headerStyle","footerStyle","title","condensed","large","onBackdropPress","onCancel","onComplete","completeTitle","cancelTitle","width","fullScreen","computedHeaderStyle","computedFooterStyle","computedBodyStyle","computedContainerStyle","borderColor","borderWidth","margin","ScrollSection","overflowX","overflowY","accessibilityViewIsModal","accessibilityRole","h4","color","onPress","object","onButtonClick","func","string","oneOfType","text","fontSize","colors","customStyles","alignContent","line","flexWrap","headerText","fontWeight","alignSelf","optionalCheck","primaryText","lineHeight","secondaryText","inputSection","drawerLabel","subItemLabel","marginLeft","marginRight","primary","backgroundColor","helper","no","Math","floor","defaultSpacing","Paragraph","condensedSpacing","largeSpacing","TextNative","paragraph","borderBottomColor","borderBottomWidth","AboutSection","headingStyle","terms","term","definition","termHeading","definitionStyle","termHeadingStyle","Term","Fragment","accessibilityLabel","Text","Glossary","map","item","index","key","paddingLeft","paddingRight","paddingTop","paddingBottom","flexGrow","flexShrink","mapStateToPropsHoc","state","useFields","field","form","getContainedScreen","NavigationStrip","glossaryEvents","ScreenContainer","forwardRef","glossary","setGlossary","onGlossary","useCallback","value","on","off","test","userAgent","maxWidth","navigation","displayName","constructor","hoistNonReactStatics","mapStateToProps","mapDispatchToProps","connect","leftHeaderHoc","goBack","backTitleVisible","getSection","dangerouslyGetParent","getParam","makeScrollable","scrollUpdater","scrollProps","ScrollableComponent","setScrollTo","section","setSection","addListener","RenderedComponent","position","scrollSection","contentContainerStyle","shape","createSingleNavigator","Screen","containerHoc","scrollable","containedScreen","createStackNavigator","screen","navigationOptions","extraOptions","headerTitle","headerLeft","SET_FORM","SET_FORM_CALCULATED","SET_FORM_CLEAR","trackedFields","backingStore","Proxy","get","obj","prop","store","set","Error","getField","calculation","defaultValue","curriedForm","bind","setField","tracked","Object","prototype","hasOwnProperty","call","calculatedValue","setForm","payload","initialized","permute","permuteHook","dispatch","useReduxState","initialValue","getState","valueHook","useReduxMemo","deps","setFormCalculated","useMemo","dep","resetState","ActionResponder","TouchableWithoutFeedback","onClick","disabled","cursor","leftIcon","rightIcon","LabelIcon","iconRight","accessibilityHint","condensedFlex","largeFlex","Toolbar","computedFlexStyle","Section","headerTextStyle","computedheaderTextStyle","rules","softbreak","getUniqueID","Info","Terms","Privacy","navigate","popToTop","TermsOverlay","BG_IMAGE","require","LOGO","bgImage","top","left","image","logo","Cover","showAgree","setShowAgree","agreed","setAgreed","AsyncStorage","getItem","onresize","closeDrawer","agree","answer","setItem","toString","setParams","drawerLockMode","ImageBackground","resizeMode","source","imageStyle","accessible","Strip","toggleDrawer","Linking","openURL","Image","params","textDecorationLine","Link","href","NativeText","Background","questions","question","answerStyle","questionStyle","Question","FAQ","Acknowledgments","faqLayoutTop","setFaqLayoutTop","backgroundLayoutTop","setBackgroundLayoutTop","glossaryLayoutTop","setGlossaryLayoutTop","acknowledgmentsLayoutTop","setAcknowledgmentsLayoutTop","setter","hilight","NavigationItem","selected","itemStyle","textStyle","states","accessibilityStates","getNavAreas","navigationAreas","length","area","InjectedNavigationStrip","nav","getSectionMap","NEXT","getSectionName","routeName","split","slice","join","createLinearNavigator","screens","config","previousPath","stackScreens","headScreens","screenMap","headOrder","group","entry","path","sectionLink","reviewable","furthestSection","reviewingSection","reviewSection","sectionName","addSectionState","routes","route","currentSectionName","defaultGetStateForAction","router","getStateForAction","getStateForActionWithSection","action","defaultState","skipScreen","showScreen","mapState","getSectionNumber","findIndex","StackActions","POP_TO_TOP","NavigationActions","BACK","newState","furthest","max","pop","NAVIGATE","PUSH","headRoute","navigateSectionHead","curScreen","curRoute","navigateNext","endsWith","newScreenRoute","label","RightHeader","largeContainer","subHeader","privacy","buttons","subTitle","subHeaderStyle","buttonGroupStyle","privacyNote","computedButtonGroupStyle","computedSubHeaderStyle","showHelp","setShowHelp","button","VeraButton","secondary","disableOverride","setOverride","computedButtonStyle","computedTitleStyle","buttonStyle","titleStyle","event","setTimeout","propDefaults","YesButton","NoButton","YesNoQuestion","onYes","onNo","formatter","Intl","NumberFormat","getLocale","currency","toCurrency","format","AssetsHead","setReceiveAssets","useErrorState","fields","setValueMap","valueMap","hasError","setValue","defaultInputColor","errorStyle","inputStyle","currencyRegEx","CurrencyInput","onChangeText","inputContainerStyle","errorMessage","placeholderTextColor","perMonth","setHasError","onValidateChangeText","match","computedInputStyle","computedInputContainerStyle","computedErrorStyle","computedErrorMessage","placeholder","returnKeyType","keyboardType","autoCorrect","OptionalInput","defaultChecked","helpText","helpTitle","checked","setChecked","focused","setFocused","inputContainer","focus","checkedColor","HookedOptionalInput","hook","remainder","parsed","Number","isNaN","array","AssetsInput","hooks","setFieldError","punc","AssetsSummary","assets","assetsTotal","reduce","total","BenefitHead","setReceiveBenefits","setExpectBenefits","TANF","UNEMPLOYMENT","SS","SSD","SSI","UNSECURED_BOND","PARTIALLY_SECURED_BOND","OTHER","BenefitsInput","will","BenefitsSummary","benefits","benefitsTotal","ExpectBenefits","ExpensesHead","setReceiveExpenses","ExpensesInput","ExpensesSummary","expenses","expensesTotal","ExpectedIncome","setReceiveIncome","setExpectIncome","IncomeHead","dropDown","picker","VeraSelect","selectedValue","options","onSubmitEditing","SelectInput","mode","labelStyle","v","i","Picker","onValueChange","Item","any","arrayOf","inputControl","textStyles","IncomeInput","setSelectedValue","selectedType","setSelectedType","income","setIncome","input","setInput","computedTextStyle","IncomeSummary","incomeTotal","TopCharge","setTopCharge","subtitle","rightTitle","TitleWithHelp","SummaryItem","amount","useTitle","subtitleStyle","rightTitleStyle","bottomDivider","isMobileBrowser","summary","description","BailSummary","felony","cashReccomendation","partiallySecured","chargeFactor","credit","creditReccomendation","usecured","bailBlurb","bondHelpTitle","bondHelpText","SectionSummaryItem","chevron","defaultValues","SectionSummary","review","Wizard","initialRouteName","transformed","defaultVeraOptions","remainingConfig","transform","useLeftHeader","veraOptions","entryScreen","headerRight","emit","headerBackTitle","mapStateHoc","tranformScreen","currentTransform","screenConfig","composedConfig","createVeraNavigator","ExpectedBenefits","titleLabel","DrawerSubMenu","screenReaderEnabled","setScreenReaderEnabled","AccessibilityInfo","reader","fetch","done","isEnabled","activeSection","extraLabelStyle","items","aboutItems","ContentComponent","getLabel","scene","tintColor","reducer","createDrawerNavigator","About","Home","contentComponent","contentOptions","overlayColor","MainRoot","createAppContainer","reset","reduxCreateStore","MainRootRedux","AppContainer","super","isReady","_loadAssetsAsync","imageAssets","fontAssets","FontAwesome","Ionicons","Entypo","SimpleLineIcons","MaterialIcons","MaterialCommunityIcons","setState","registerRootComponent","App"],"mappings":"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","file":"static/js/app.e67758a9.chunk.js","sourcesContent":["/* eslint-disable max-len */\r\nmodule.exports =\r\n`Last modified: 10/24/2019\r\n\r\n*Introduction*\r\n\r\nVera Institute of Justice, Inc. (\"**Vera**\" or \"**We**\") respects your privacy\r\nand is committed to protecting it through our compliance with this policy. This\r\npolicy describes:\r\n\r\n-   The types of information we may collect or that you may provide when you\r\n    download, install, access, or use the Vera Ability to Pay Calculator\r\n    Application (the \"**App**\").\r\n\r\n-   Our practices for collecting, using, maintaining, protecting, and disclosing\r\n    that information.\r\n\r\nThis policy applies only to information we collect in this App. This policy DOES\r\nNOT apply to information that:\r\n\r\n-   We collect offline or on any Vera websites; or\r\n\r\n-   You provide to or is collected by any third party (see *Third-Party\r\n    Information Collection*).\r\n\r\nOur website and these other third parties have their own privacy policies, which\r\nwe encourage you to read before providing information on or through them.\r\n\r\nPlease read this policy carefully. If you do not agree with our policies and\r\npractices, do not download or use this App. By downloading or using this App,\r\nyou agree to this privacy policy. This policy may change from time to time (see\r\n*Changes to Our Privacy Policy*). Your continued use of this App after we revise\r\nthis policy means you accept those changes, so please check the policy\r\nperiodically for updates.\r\n\r\n*Children Under the Age of 13*\r\n\r\nThe App is not intended for children under 13 years of age, and we do not\r\nknowingly collect personal information from children under 13. If we learn we\r\nhave collected or received personal information from a child under 13 without\r\nverification of parental consent, we will delete that information. If you\r\nbelieve we might have any information from or about a child under 13, please\r\ncontact us at\r\n[abilitytopay@vera.org](mailto:abilitytopay\\\\@vera.org?subject=Ability%20To%20Pay%20App).\r\n\r\n*Information We Collect and How We Collect It*\r\n\r\nWe collect information from and about users of our App:\r\n\r\n-   Directly from you when you provide it to us.\r\n\r\n-   Automatically when you use the App.\r\n\r\n*Information You Provide to Us*\r\n\r\n-   We may also ask you for information when you report a problem with the App.\r\n\r\n-   We may collect records and copies of your correspondence (including email\r\n    addresses and phone numbers), if you contact us.\r\n\r\n-   The data that you input into the App for calculation purposes is used by the\r\n    App solely for the purpose of making the calculation. We do not access or\r\n    store any such data, or use it for any other purpose. You represent and\r\n    warrant that you have obtained informed consent from any individual whose\r\n    data you input into the App.\r\n\r\n*Automatic Information Collection*\r\n\r\nWhen you download, access, and use the App, it may use technology to\r\nautomatically collect:\r\n\r\n-   **Usage Details.** When you access and use the App, we will only store or\r\n    collect data regarding your agreement or non-agreement to the user terms.\r\n\r\nIf you do not want us to collect this information, do not download the App or\r\ndelete it from your device.\r\n\r\n*Information Collection Technologies*\r\n\r\nThe technologies we use for automatic information collection may include:\r\n\r\n-   **Cookies (or mobile cookies).** A cookie is a small file placed on your\r\n    smartphone. It may be possible to refuse to accept mobile cookies by\r\n    activating the appropriate setting on your smartphone. However, if you\r\n    select this setting you may be unable to access certain parts of our App.\r\n\r\n-   **Web Beacons.** Pages of the App [and our emails] may contain small\r\n    electronic files known as web beacons (also referred to as clear gifs, pixel\r\n    tags, and single-pixel gifs) that permit the Vera, for example, to count\r\n    users who have visited those pages [or opened an email] and for other\r\n    related app statistics (for example, recording the popularity of certain app\r\n    content and verifying system and server integrity).\r\n\r\n*Third-Party Information Collection*\r\n\r\nWhen you use the App or its content, certain third parties may use automatic\r\ninformation collection technologies to collect information about you or your\r\ndevice. These third parties may include analytics companies, your mobile device\r\nmanufacturer, or your mobile service provider.\r\n\r\nThese third parties may use tracking technologies to collect information about\r\nyou when you use this app. The information they collect may be associated with\r\nyour personal information or they may collect information, including personal\r\ninformation, about your online activities over time and across different\r\nwebsites, apps, and other online services websites. They may use this\r\ninformation to provide you with interest-based (behavioral) advertising or other\r\ntargeted content.\r\n\r\n**We do not control these third parties' tracking technologies or how they may\r\nbe used.** If you have any questions about an advertisement or other targeted\r\ncontent, you should contact the responsible provider directly.\r\n\r\n*How We Use Your Information*\r\n\r\nWe use information that we collect about you or that you provide to us,\r\nincluding any personal information, to:\r\n\r\n-   Provide you with the App and its contents so that you can perform a bail\r\n    assessment calculation.\r\n\r\n-   Notify you when App updates are available.\r\n\r\n*Disclosure of Your Information*\r\n\r\nWe may disclose aggregated information about our users as we reasonably\r\ndetermine.\r\n\r\nIn addition, we may disclose information that we collect or you provide:\r\n\r\n-   For any purpose disclosed by us when you provide the information.\r\n\r\n-   With your consent.\r\n\r\n-   To comply with any court order, law, or legal process, including to respond\r\n    to any government or regulatory request.\r\n\r\n*Data Security*\r\n\r\nUnfortunately, the transmission of information via the internet and mobile\r\nplatforms is not completely secure, and we cannot guarantee the security of your\r\ninformation transmitted through our App. As noted, we will not store or use such\r\ninformation except as provided herein. Any transmission of personal or other\r\ninformation is at your own risk.\r\n\r\n*Changes to Our Privacy Policy*\r\n\r\nWe may update our privacy policy from time to time. If we make material changes\r\nto how we treat our users' information, we will post the new privacy policy on\r\nthis page.\r\n\r\n*Contact Information*\r\n\r\nTo ask questions or comment about this privacy policy and our privacy practices,\r\ncontact us at:\r\n\r\n[abilitytopay@vera.org](mailto:abilitytopay\\\\@vera.org?subject=Ability%20To%20Pay%20App).`;\r\n","module.exports =\r\n`This Mobile Application End User License Agreement (\"**Agreement**\") is a\r\nbinding agreement between you (\"**End User**\" or \"**you**\") and Vera Institute\r\nof Justice, Inc. (\"**Company**\"). This Agreement governs your use of the Ability\r\nto Pay Calculator Application (including all related documentation, the\r\n\"**Application**\"). The Application is licensed, not sold, to you.\r\n\r\nBY DOWNLOADING, INSTALLING, USING, AND/OR PROVIDING INFORMATION TO OR THROUGH\r\nTHE APPLICATION, YOU (A) ACKNOWLEDGE THAT YOU HAVE READ AND UNDERSTAND THIS\r\nAGREEMENT; (B) REPRESENT THAT YOU ARE 18 YEARS OF AGE OR OLDER; AND (C) ACCEPT\r\nTHIS AGREEMENT AND AGREE THAT YOU ARE LEGALLY BOUND BY ITS TERMS. IF YOU DO NOT\r\nAGREE TO THESE TERMS, DO NOT DOWNLOAD THE APPLICATION.\r\n\r\n1.  *License Grant*. Subject to the terms of this Agreement, Company grants you\r\n    a limited, non-exclusive, and nontransferable license to download, install,\r\n    and use the Application for your use on a single mobile device owned or\r\n    otherwise controlled by you (\"**Mobile Device**\") strictly in accordance\r\n    with the Application's documentation.\r\n\r\n2.  *License Restrictions*. Licensee shall not:\r\n\r\n    1.  copy the Application, except as expressly permitted by this license;\r\n\r\n    2.  modify, translate, adapt, or otherwise create derivative works or\r\n        improvements, whether or not patentable, of the Application;\r\n\r\n    3.  reverse engineer, disassemble, decompile, decode, or otherwise attempt\r\n        to derive or gain access to the source code of the Application or any\r\n        part thereof;\r\n\r\n    4.  remove, delete, alter, or obscure any trademarks or any copyright,\r\n        trademark, patent, or other intellectual property or proprietary rights\r\n        notices from the Application, including any copy thereof; or\r\n\r\n    5.  rent, lease, lend, sell, sublicense, assign, distribute, publish,\r\n        transfer, or otherwise make available the Application, or any features\r\n        or functionality of the Application, to any third party for any reason,\r\n        including by making the Application available on a network where it is\r\n        capable of being accessed by more than one device at any time.\r\n\r\n3.  *Reservation of Rights*. You acknowledge and agree that the Application is\r\n    provided under license, and not sold, to you. You do not acquire any\r\n    ownership interest in the Application under this Agreement, or any other\r\n    rights thereto other than to use the Application in accordance with the\r\n    license granted, and subject to all terms, conditions, and restrictions,\r\n    under this Agreement. Company reserves and shall retain its entire right,\r\n    title, and interest in and to the Application, including all copyrights,\r\n    trademarks, and other intellectual property rights therein or relating\r\n    thereto, except as expressly granted to you in this Agreement.\r\n\r\n4.  *Collection and Use of Your Information*. You acknowledge that you may\r\n    provide certain information about yourself or third parties as a condition\r\n    to downloading, installing, or using the Application or certain of its\r\n    features or functionality. All information we collect through or in\r\n    connection with this Application is subject to our Privacy Policy below. By\r\n    downloading, installing, using, and providing information to or through this\r\n    Application, you (i) consent to all actions taken by us with respect to your\r\n    information in compliance with the Privacy Policy; and (ii) represent and\r\n    warrant that you have obtained lawful informed consent from any third party\r\n    whose information you provide.\r\n\r\n5.  *Geographic Restrictions*. The Content and Services are based in the state\r\n    of New York in the United States and provided for access and use only by\r\n    persons located in the United States. You acknowledge that you may not be\r\n    able to access all or some of the Content and Services outside of the United\r\n    States and that access thereto may not be legal by certain persons or in\r\n    certain countries. If you access the Content and Services from outside the\r\n    United States, you are responsible for compliance with local laws.\r\n\r\n6.  *Updates*. Company may from time to time in its sole discretion develop and\r\n    provide Application updates, which may include upgrades, bug fixes, patches,\r\n    other error corrections, and/or new features (collectively, including\r\n    related documentation, \"**Updates**\"). Updates may also modify or delete in\r\n    their entirety certain features and functionality. You agree that Company\r\n    has no obligation to provide any Updates or to continue to provide or enable\r\n    any particular features or functionality. Based on your Mobile Device\r\n    settings, when your Mobile Device is connected to the internet either:\r\n\r\n    1.  the Application will automatically download and install all available\r\n        Updates; or\r\n\r\n    2.  you may receive notice of or be prompted to download and install\r\n        available Updates.\r\n\r\nYou shall promptly download and install all Updates and acknowledge and agree\r\nthat the Application or portions thereof may not properly operate should you\r\nfail to do so. You further agree that all Updates will be deemed part of the\r\nApplication and be subject to all terms and conditions of this Agreement.\r\n\r\n1.  *Third-Party Materials*. The Application may display, include, or make\r\n    available third-party content (including data, information, applications,\r\n    and other products, services, and/or materials) or provide links to\r\n    third-party websites or services, including through third-party advertising\r\n    (\"**Third-Party Materials**\"). You acknowledge and agree that Company is not\r\n    responsible for Third-Party Materials, including their accuracy,\r\n    completeness, timeliness, validity, copyright compliance, legality, decency,\r\n    quality, or any other aspect thereof. Company does not assume and will not\r\n    have any liability or responsibility to you or any other person or entity\r\n    for any Third-Party Materials. Third-Party Materials and links thereto are\r\n    provided solely as a convenience to you, and you access and use them\r\n    entirely at your own risk and subject to such third parties' terms and\r\n    conditions.\r\n\r\n2.  *Term and Termination*.\r\n\r\n    1.  The term of Agreement commences when you download the\r\n        Application/acknowledge your acceptance and will continue in effect\r\n        until terminated by you or Company as set forth in this Section 9.\r\n\r\n    2.  You may terminate this Agreement by deleting the Application and all\r\n        copies thereof from your Mobile Device.\r\n\r\n    3.  Company may terminate this Agreement at any time without notice. In\r\n        addition, this Agreement will terminate immediately and automatically\r\n        without any notice if you violate any of the terms and conditions of\r\n        this Agreement.\r\n\r\n    4.  Upon termination:\r\n\r\n        1.  all rights granted to you under this Agreement will also terminate;\r\n            and\r\n\r\n        2.  you must cease all use of the Application and delete all copies of\r\n            the Application from your Mobile Device and account.\r\n\r\n    5.  Termination will not limit any of Company's rights or remedies at law or\r\n        in equity.\r\n\r\n3.  *Disclaimer of Warranties*. THE APPLICATION IS PROVIDED TO LICENSEE \"AS IS\"\r\n    AND WITH ALL FAULTS AND DEFECTS WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM\r\n    EXTENT PERMITTED UNDER APPLICABLE LAW, COMPANY, ON ITS OWN BEHALF AND ON\r\n    BEHALF OF ITS AFFILIATES AND ITS AND THEIR RESPECTIVE LICENSORS AND SERVICE\r\n    PROVIDERS, EXPRESSLY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS, IMPLIED,\r\n    STATUTORY, OR OTHERWISE, WITH RESPECT TO THE APPLICATION, INCLUDING ALL\r\n    IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,\r\n    TITLE, AND NON-INFRINGEMENT, AND WARRANTIES THAT MAY ARISE OUT OF COURSE OF\r\n    DEALING, COURSE OF PERFORMANCE, USAGE, OR TRADE PRACTICE. WITHOUT LIMITATION\r\n    TO THE FOREGOING, COMPANY PROVIDES NO WARRANTY OR UNDERTAKING, AND MAKES NO\r\n    REPRESENTATION OF ANY KIND THAT THE APPLICATION WILL MEET YOUR REQUIREMENTS,\r\n    ACHIEVE ANY INTENDED RESULTS, BE COMPATIBLE, OR WORK WITH ANY OTHER\r\n    SOFTWARE, APPLICATIONS, SYSTEMS, OR SERVICES, OPERATE WITHOUT INTERRUPTION,\r\n    MEET ANY PERFORMANCE OR RELIABILITY STANDARDS, OR BE ERROR-FREE, OR THAT ANY\r\n    ERRORS OR DEFECTS CAN OR WILL BE CORRECTED.\r\n\r\nSOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED\r\nWARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER,\r\nSO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.\r\n\r\n1.  *Limitation of Liability*. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE\r\n    LAW, IN NO EVENT WILL COMPANY OR ITS AFFILIATES, OR ANY OF ITS OR THEIR\r\n    RESPECTIVE LICENSORS OR SERVICE PROVIDERS, HAVE ANY LIABILITY ARISING FROM\r\n    OR RELATED TO YOUR USE OF OR INABILITY TO USE THE APPLICATION OR THE CONTENT\r\n    AND SERVICES FOR:\r\n\r\n    1.  PERSONAL INJURY, PROPERTY DAMAGE, LOST PROFITS, COST OF SUBSTITUTE GOODS\r\n        OR SERVICES, LOSS OF DATA, LOSS OF GOODWILL, BUSINESS INTERRUPTION,\r\n        COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER CONSEQUENTIAL, INCIDENTAL,\r\n        INDIRECT, EXEMPLARY, SPECIAL, OR PUNITIVE DAMAGES.\r\n\r\n    2.  DIRECT DAMAGES IN AMOUNTS THAT IN THE AGGREGATE EXCEED THE AMOUNT\r\n        ACTUALLY PAID BY YOU FOR THE APPLICATION.\r\n\r\nTHE FOREGOING LIMITATIONS WILL APPLY WHETHER SUCH DAMAGES ARISE OUT OF BREACH OF\r\nCONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE AND REGARDLESS OF WHETHER\r\nSUCH DAMAGES WERE FORESEEABLE OR COMPANY WAS ADVISED OF THE POSSIBILITY OF SUCH\r\nDAMAGES. SOME JURISDICTIONS DO NOT ALLOW CERTAIN LIMITATIONS OF LIABILITY SO\r\nSOME OR ALL OF THE ABOVE LIMITATIONS OF LIABILITY MAY NOT APPLY TO YOU.\r\n\r\n1.  *Indemnification*. You agree to indemnify, defend, and hold harmless Company\r\n    and its officers, directors, employees, agents, affiliates, successors, and\r\n    assigns from and against any and all losses, damages, liabilities,\r\n    deficiencies, claims, actions, judgments, settlements, interest, awards,\r\n    penalties, fines, costs, or expenses of whatever kind, including reasonable\r\n    attorneys' fees, arising from or relating to your use or misuse of the\r\n    Application or your breach of this Agreement, including but not limited to\r\n    the content you submit or make available through this Application.\r\n\r\n2.  *Severability*. If any provision of this Agreement is illegal or\r\n    unenforceable under applicable law, the remainder of the provision will be\r\n    amended to achieve as closely as possible the effect of the original term\r\n    and all other provisions of this Agreement will continue in full force and\r\n    effect; provided, however, that if any fundamental term or provision of this\r\n    Agreement is invalid, illegal, or unenforceable, the remainder of this\r\n    Agreement shall be unenforceable.\r\n\r\n3.  *Governing Law*. This Agreement is governed by and construed in accordance\r\n    with the internal laws of the State of New York without giving effect to any\r\n    choice or conflict of law provision or rule. Any legal suit, action, or\r\n    proceeding arising out of or related to this Agreement or the Application\r\n    shall be instituted exclusively in the federal courts of the United States\r\n    or the courts of the State of New York in each case located in New York, NY.\r\n    You waive any and all objections to the exercise of jurisdiction over you by\r\n    such courts and to venue in such courts.\r\n\r\n4.  *Entire Agreement*. This Agreement and our Privacy Policy constitute the\r\n    entire agreement between you and Company with respect to the Application and\r\n    supersede all prior or contemporaneous understandings and agreements,\r\n    whether written or oral, with respect to the Application.\r\n\r\n5.  *Waiver*. No failure to exercise, and no delay in exercising, on the part of\r\n    either party, any right or any power hereunder shall operate as a waiver\r\n    thereof, nor shall any single or partial exercise of any right or power\r\n    hereunder preclude further exercise of that or any other right hereunder. In\r\n    the event of a conflict between this Agreement and any applicable purchase\r\n    or other terms, the terms of this Agreement shall govern.`;\r\n","/* eslint-env browser */\n\nif ('serviceWorker' in navigator) {\n  window.addEventListener('load', function() {\n    navigator.serviceWorker\n      .register('/expo-service-worker.js', { scope: '/' })\n      .then(function(info) {\n        // console.info('Registered service-worker', info);\n      })\n      .catch(function(error) {\n        console.info('Failed to register service-worker', error);\n      });\n  });\n}\n","module.exports = __webpack_public_path__ + \"static/media/loading.fb10b2ec.png\";","module.exports = __webpack_public_path__ + \"static/media/Vera_WhiteonRed.bbfb784e.png\";","module.exports = __webpack_public_path__ + \"static/media/Vera_WhiteonGray.60e7c745.png\";","module.exports = __webpack_public_path__ + \"static/media/cover.fb10b2ec.png\";","/* eslint-disable */\r\nimport React from 'react';\r\nimport {View, StyleSheet, ActivityIndicator} from 'react-native';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    flex: 1,\r\n    alignItems: 'center',\r\n    justifyContent: 'center',\r\n    padding: 10,\r\n  },\r\n});\r\n\r\nconst emptyFunc = () => null;\r\n\r\nexport default class AppLoading extends React.Component {\r\n  componentDidMount() {\r\n    const {startAsync, onError, onFinish} = this.props;\r\n\r\n    const successCb = onFinish || emptyFunc;\r\n    const errorCb = onError || emptyFunc;\r\n\r\n    return !startAsync ? successCb() : Promise.resolve(startAsync())\r\n        .then(successCb)\r\n        .catch(errorCb);\r\n  }\r\n\r\n  render() {\r\n    const {startAsync, onError, onFinish, autoHideSplash, ...others} = this.props;\r\n    return (\r\n      <View style={styles.container}>\r\n        <ActivityIndicator size={'large'} {...others} />\r\n      </View>\r\n    );\r\n  }\r\n}\r\n","export const cacheAssets = () => Promise.resolve(null);\r\n\r\nconst cachedFonts = {};\r\nconst cacheFont = (name, link) => {\r\n  const styleBody = `@font-face { src: url(${link}); font-family: ${name}; }`;\r\n  const style = document.createElement('style');\r\n  style.type = 'text/css';\r\n  if (style.styleSheet) {\r\n    style.styleSheet.cssText = styleBody;\r\n  } else {\r\n    style.appendChild(document.createTextNode(styleBody));\r\n  }\r\n  document.head.appendChild(style);\r\n  cachedFonts[name] = link;\r\n};\r\n\r\nexport const cacheFonts = (fonts) => {\r\n  const jobs = [];\r\n  // eslint-disable-next-line guard-for-in\r\n  for (const fontName in fonts) {\r\n    if (!cachedFonts[fontName]) {\r\n      jobs.push(cacheFont(fontName, fonts[fontName]));\r\n    }\r\n  }\r\n  return Promise.all(jobs);\r\n};\r\n","export default {\r\n  veraRed: '#ef4136',\r\n  primary: '#BCBDBC',\r\n  darkGray: '#4D4E56',\r\n  lightGray: '#bcbdbc',\r\n  lightestGray: '#F2F2F2',\r\n  white: '#f7f7f7',\r\n  error: '#f59089',\r\n};\r\n","import React from 'react';\r\nimport {StyleSheet, View, ViewPropTypes} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    flex: 1,\r\n    flexDirection: 'row',\r\n    justifyContent: 'flex-start',\r\n  },\r\n});\r\n\r\nconst Flex = (props) => {\r\n  const {\r\n    children,\r\n    style,\r\n    row,\r\n    rowReverse,\r\n    col,\r\n    colReverse,\r\n    start,\r\n    end,\r\n    center,\r\n    spaceBetween,\r\n    ...rest\r\n  } = props;\r\n\r\n  const computedStyle = StyleSheet.flatten([\r\n    styles.container,\r\n    style && style,\r\n    row && {flexDirection: 'row'},\r\n    rowReverse && {flexDirection: 'row-reverse'},\r\n    col && {flexDirection: 'column'},\r\n    colReverse && {flexDirection: 'column-reverse'},\r\n    start && {justifyContent: 'flex-start'},\r\n    end && {justifyContent: 'flex-end'},\r\n    center && {justifyContent: 'center'},\r\n    spaceBetween && {justifyContent: 'space-between'},\r\n  ]);\r\n\r\n  return (\r\n    <View style={computedStyle} {...rest}>\r\n      {children}\r\n    </View>\r\n  );\r\n};\r\n\r\nFlex.propTypes = {\r\n  children: PropTypes.node.isRequired,\r\n  style: ViewPropTypes.style,\r\n  row: PropTypes.bool,\r\n  rowReverse: PropTypes.bool,\r\n  col: PropTypes.bool,\r\n  colReverse: PropTypes.bool,\r\n  start: PropTypes.bool,\r\n  end: PropTypes.bool,\r\n  center: PropTypes.bool,\r\n  spaceBetween: PropTypes.bool,\r\n};\r\n\r\nFlex.defaultProps = {\r\n  row: false,\r\n  rowReverse: false,\r\n  col: false,\r\n  colReverse: false,\r\n  start: false,\r\n  end: false,\r\n  center: false,\r\n  spaceBetween: false,\r\n};\r\n\r\nexport default Flex;\r\n\r\n\r\n","import React, {useRef, useEffect, useState} from 'react';\r\nimport {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view';\r\nimport PropTypes from 'prop-types';\r\nimport {Platform} from '@unimodules/core';\r\n\r\nconst InputScroll = ({children, scrollTo, ...remaining}) => {\r\n  const [contentSize, setContentSize] = useState(0);\r\n  const [layoutSize, setLayoutSize] = useState(0);\r\n  const [enabled, setEnabled] = useState(false);\r\n\r\n  const ref = useRef();\r\n  const ref2 = useRef();\r\n\r\n  useEffect(() => {\r\n    if (enabled && Platform.OS === 'ios') {\r\n      ref.current.flashScrollIndicators();\r\n    }\r\n  }, [ref.current, enabled]);\r\n\r\n  useEffect(() => {\r\n    setEnabled(Boolean(contentSize && layoutSize && contentSize > layoutSize));\r\n  }, [contentSize, layoutSize]);\r\n\r\n  useEffect(() => {\r\n    if (ref2.current && enabled) {\r\n      ref2.current.scrollToPosition(0, scrollTo);\r\n    }\r\n  }, [ref2.current, enabled, scrollTo]);\r\n\r\n  const onSize = (x, y) => {\r\n    setContentSize(y);\r\n  };\r\n\r\n  const onLayout = (e) => {\r\n    setLayoutSize(e.nativeEvent.layout.height);\r\n  };\r\n\r\n  return (\r\n    <KeyboardAwareScrollView\r\n      ref={ref2}\r\n      innerRef={(r) => (ref.current = r)}\r\n      indicatorStyle='white'\r\n      persistentScrollbar={enabled}\r\n      enableOnAndroid={enabled}\r\n      scrollEnabled={enabled}\r\n      onContentSizeChange={onSize}\r\n      onLayout={onLayout}\r\n      style={{maxHeight: Platform.OS === 'web' ? '50vh' : undefined}}\r\n      {...remaining}\r\n    >\r\n      {children}\r\n    </KeyboardAwareScrollView>\r\n  );\r\n};\r\n\r\nInputScroll.propTypes = {\r\n  children: PropTypes.node,\r\n  scrollTo: PropTypes.number,\r\n};\r\n\r\nexport default InputScroll;\r\n","import React from 'react';\nimport { Overlay } from 'react-native-elements';\nimport { Platform } from 'react-native';\n\nconst WebCompatibleOverlay = props => {\n  const RenderedOverlay = (\n    <Overlay overlayStyle={{ borderStyle: 'none' }} {...props} />\n  );\n\n  return Platform.OS === 'web' ? (\n    <div style={{ zIndex: 9999, display: props.isVisible ? 'block' : 'none' }}>\n      {RenderedOverlay}\n    </div>\n  ) : (\n    { RenderedOverlay }\n  );\n};\n\nexport default WebCompatibleOverlay;\n","import React from 'react';\r\nimport { StyleSheet, View, ViewPropTypes, Platform } from 'react-native';\r\nimport { Text, Button } from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport Flex from './Flex';\r\n\r\nimport InputScroll from '../components/InputScroll';\r\nimport WebCompatibleOverlay from './WebCompatibleOverlay';\r\n\r\nconst defaultPadding = 16;\r\nconst condensedPadding = 8;\r\nconst largePadding = 32;\r\n\r\nconst defaultHeight = '40%';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    padding: defaultPadding,\r\n    height: '100%',\r\n  },\r\n  header: {\r\n    textAlign: 'center',\r\n    marginBottom: defaultPadding,\r\n  },\r\n  body: {},\r\n  footer: {\r\n    height: 40,\r\n    marginTop: defaultPadding,\r\n  },\r\n});\r\n\r\nconst OverlayScroll = props => {\r\n  const {\r\n    children,\r\n    containerStyle,\r\n    bodyStyle,\r\n    headerStyle,\r\n    footerStyle,\r\n    title,\r\n    condensed,\r\n    large,\r\n    isVisible,\r\n    onBackdropPress,\r\n    onCancel,\r\n    onComplete,\r\n    completeTitle,\r\n    cancelTitle,\r\n    height,\r\n    width,\r\n    fullScreen,\r\n    indicatorStyle,\r\n    ...rest\r\n  } = props;\r\n\r\n  const computedHeaderStyle = StyleSheet.flatten([\r\n    styles.header,\r\n    headerStyle,\r\n    condensed && { marginBottom: condensedPadding },\r\n    large && { marginBottom: largePadding },\r\n  ]);\r\n\r\n  const computedFooterStyle = StyleSheet.flatten([\r\n    styles.footer,\r\n    footerStyle,\r\n    condensed && { marginTop: condensedPadding },\r\n    large && { marginTop: largePadding },\r\n  ]);\r\n\r\n  const computedBodyStyle = StyleSheet.flatten([styles.body, bodyStyle]);\r\n\r\n  const computedContainerStyle = StyleSheet.flatten([\r\n    styles.container,\r\n    containerStyle,\r\n    Platform.OS === 'web' && {\r\n      borderStyle: 'solid',\r\n      borderColor: 'gray',\r\n      borderWidth: 1,\r\n      height: 'calc(100% + 2px)',\r\n      margin: -1,\r\n      width: 'calc(100% + 2px)',\r\n    },\r\n    condensed && { padding: condensedPadding },\r\n    large && { padding: largePadding },\r\n  ]);\r\n\r\n  const computedHeight = '100vh';\r\n\r\n  const ScrollSection =\r\n    Platform.OS === 'web' ? (\r\n      <div\r\n        style={{\r\n          overflowX: 'hidden',\r\n          overflowY: 'auto',\r\n          maxHeight: 'calc(100vh - 88px)',\r\n        }}\r\n      >\r\n        {children}\r\n      </div>\r\n    ) : (\r\n      <InputScroll indicatorStyle={indicatorStyle} style={computedBodyStyle}>\r\n        {children}\r\n      </InputScroll>\r\n    );\r\n\r\n  return (\r\n    <WebCompatibleOverlay\r\n      accessibilityViewIsModal={isVisible}\r\n      height={computedHeight}\r\n      width={width}\r\n      onBackdropPress={onBackdropPress}\r\n      isVisible={isVisible}\r\n      fullScreen={Platform.OS === 'web' || fullScreen}\r\n      overlayStyle={{ padding: 0 }}\r\n    >\r\n      <View style={computedContainerStyle} {...rest}>\r\n        {title && (\r\n          <Text accessibilityRole=\"header\" style={computedHeaderStyle} h4>\r\n            {title}\r\n          </Text>\r\n        )}\r\n        {ScrollSection}\r\n        <View style={computedFooterStyle}>\r\n          <Flex end={!cancelTitle} spaceBetween={Boolean(cancelTitle)}>\r\n            {cancelTitle && (\r\n              <Button\r\n                accessibilityRole=\"button\"\r\n                color=\"#ef4136\"\r\n                onPress={onCancel}\r\n                title={cancelTitle}\r\n                type=\"clear\"\r\n              />\r\n            )}\r\n            <Button\r\n              accessibilityRole=\"button\"\r\n              onPress={onComplete}\r\n              title={completeTitle}\r\n              type=\"clear\"\r\n            />\r\n          </Flex>\r\n        </View>\r\n      </View>\r\n    </WebCompatibleOverlay>\r\n  );\r\n};\r\n\r\nOverlayScroll.propTypes = {\r\n  children: PropTypes.node.isRequired,\r\n  containerStyle: ViewPropTypes.style,\r\n  bodyStyle: ViewPropTypes.style,\r\n  headerStyle: PropTypes.object,\r\n  footerStyle: ViewPropTypes.style,\r\n  condensed: PropTypes.bool,\r\n  large: PropTypes.bool,\r\n  onButtonClick: PropTypes.func,\r\n  title: PropTypes.string,\r\n  isVisible: PropTypes.bool,\r\n  onBackdropPress: PropTypes.func,\r\n  onComplete: PropTypes.func,\r\n  completeTitle: PropTypes.string.isRequired,\r\n  onCancel: PropTypes.func,\r\n  cancelTitle: PropTypes.string,\r\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n  fullScreen: PropTypes.bool.isRequired,\r\n  indicatorStyle: PropTypes.string,\r\n};\r\n\r\nOverlayScroll.defaultProps = {\r\n  condensed: false,\r\n  large: false,\r\n  fullScreen: false,\r\n  completeTitle: 'Done',\r\n};\r\n\r\nexport default OverlayScroll;\r\n","import {StyleSheet} from 'react-native';\r\nimport colors from '../config/colors';\r\n\r\nconst text = {\r\n  fontSize: 20,\r\n  color: colors.white,\r\n  textAlign: 'center',\r\n};\r\n\r\nexport const customStyles = StyleSheet.create({\r\n  body: {\r\n    justifyContent: 'center',\r\n    alignContent: 'center',\r\n    marginTop: 20,\r\n  },\r\n  line: {\r\n    flexDirection: 'row',\r\n    marginTop: 30,\r\n    justifyContent: 'center',\r\n    flexWrap: 'wrap',\r\n    alignContent: 'flex-start',\r\n  },\r\n  header: {\r\n    marginTop: 20,\r\n    marginBottom: 20,\r\n    flexDirection: 'row',\r\n    justifyContent: 'center',\r\n  },\r\n  headerText: {\r\n    ...text,\r\n    fontSize: 25,\r\n    fontWeight: 'bold',\r\n    alignSelf: 'center',\r\n  },\r\n  optionalCheck: {\r\n    flex: 1,\r\n    flexDirection: 'row',\r\n    justifyContent: 'flex-start',\r\n  },\r\n  primaryText: {\r\n    ...text,\r\n    fontSize: 24,\r\n    alignSelf: 'center',\r\n    justifyContent: 'center',\r\n    lineHeight: 28,\r\n  },\r\n  secondaryText: {\r\n    ...text,\r\n    fontSize: 21,\r\n    alignSelf: 'center',\r\n    justifyContent: 'flex-start',\r\n  },\r\n  inputSection: {\r\n    flexDirection: 'row',\r\n    justifyContent: 'center',\r\n    alignContent: 'center',\r\n  },\r\n  drawerLabel: {\r\n    margin: 16,\r\n    fontWeight: 'bold',\r\n  },\r\n  subItemLabel: {\r\n    marginLeft: 24,\r\n    marginRight: 16,\r\n    marginTop: 8,\r\n    marginBottom: 8,\r\n    fontWeight: 'bold',\r\n    fontSize: 12,\r\n  },\r\n});\r\n\r\nexport const customStrip = StyleSheet.create({\r\n  height: 54,\r\n  marginTop: 24,\r\n});\r\n\r\nexport const customButtons = StyleSheet.create({\r\n  primary: {\r\n    height: 50,\r\n    width: 120,\r\n    alignSelf: 'center',\r\n    backgroundColor: colors.primary,\r\n  },\r\n  title: {\r\n    fontWeight: 'bold',\r\n  },\r\n  helper: {},\r\n  no: {\r\n    height: 50,\r\n    width: 120,\r\n    alignSelf: 'center',\r\n    justifyContent: 'space-around',\r\n    margin: 20,\r\n  },\r\n});\r\n","import React from 'react';\r\nimport {StyleSheet, Text as TextNative} from 'react-native';\r\nimport {Text} from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst defaultSpacing = 8;\r\nconst condensedSpacing = 4;\r\nconst largeSpacing = 16;\r\n\r\nconst styles = StyleSheet.create({\r\n  text: {\r\n    marginTop: defaultSpacing,\r\n    marginBottom: Math.floor(defaultSpacing / 2),\r\n  },\r\n});\r\n\r\nconst Paragraph = (props) => {\r\n  const {\r\n    style,\r\n    children,\r\n    condensed,\r\n    large,\r\n    ...rest\r\n  } = props;\r\n\r\n  const computedStyle = StyleSheet.flatten([\r\n    styles.text,\r\n    style,\r\n    condensed && {\r\n      marginTop: condensedSpacing,\r\n      marginBottom: Math.floor(condensedSpacing / 2),\r\n    },\r\n    large && {\r\n      marginTop: largeSpacing,\r\n      marginBottom: Math.floor(largeSpacing / 2),\r\n    },\r\n  ]);\r\n\r\n  return (\r\n    <Text style={computedStyle} {...rest}>\r\n      {children}\r\n    </Text>\r\n  );\r\n};\r\n\r\nParagraph.propTypes = {\r\n  children: PropTypes.node,\r\n  style: TextNative.propTypes.style,\r\n  condensed: PropTypes.bool,\r\n  large: PropTypes.bool,\r\n};\r\n\r\nParagraph.defaultProps = {\r\n  condensed: false,\r\n  large: false,\r\n};\r\n\r\nexport default Paragraph;\r\n","import React from 'react';\r\nimport {StyleSheet, View} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport {customStyles} from '../../../config/Styles';\r\nimport Paragraph from '../../../layout/Paragraph';\r\n\r\nconst styles = StyleSheet.create({\r\n  paragraph: {\r\n    borderBottomColor: '#ccc',\r\n    borderBottomWidth: 2,\r\n  },\r\n});\r\n\r\nconst AboutSection = ({children, title, ...rest}) => {\r\n  const headingStyle = StyleSheet.flatten([\r\n    customStyles.headerText,\r\n    styles.paragraph,\r\n  ]);\r\n\r\n  return (\r\n    <View {...rest}>\r\n      <Paragraph\r\n        accessibilityRole='header'\r\n        style={headingStyle}\r\n        large>\r\n        {title}\r\n      </Paragraph>\r\n      {children}\r\n    </View>\r\n  );\r\n};\r\n\r\nAboutSection.propTypes = {\r\n  children: PropTypes.node.isRequired,\r\n  title: PropTypes.node.isRequired,\r\n};\r\n\r\nexport default AboutSection;\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport AboutSection from './AboutSection';\r\nimport {StyleSheet, Text} from 'react-native';\r\nimport {customStyles} from '../../../config/Styles';\r\nimport Paragraph from '../../../layout/Paragraph';\r\n\r\n/* eslint-disable max-len */\r\nconst terms = [\r\n  {\r\n    term: 'Appearance Bond',\r\n    definition: 'When a person uses their own money to secure their pretrial release from jail.',\r\n  },\r\n  {\r\n    term: 'Arraignment',\r\n    definition: 'A court proceeding where a person charged with a crime is formally advised of those charges.',\r\n  },\r\n  {\r\n    term: 'Asset',\r\n    definition: 'Money or property that a person owns and controls.',\r\n  },\r\n  {\r\n    term: 'Bail',\r\n    definition: 'Money or property posted that is held as insurance that a person will return for future hearings.',\r\n  },\r\n  {\r\n    term: 'Cash assistance',\r\n    definition: 'Cash benefits provided by the government. Examples include Temporary Assistance for Needy Families (TANF) and Safety Net Assistance (SNA).',\r\n  },\r\n  {\r\n    term: 'Cash Bond',\r\n    definition: 'Cash paid to a court to cover the total amount of bail.',\r\n  },\r\n  {\r\n    term: 'Cash in pocket',\r\n    definition: 'Cash on one’s person, physically and immediately available.',\r\n  },\r\n  {\r\n    term: 'Checking account',\r\n    definition: 'A type of bank account from which money can be withdrawn via check, a debit card, or a cash withdrawal.',\r\n  },\r\n  {\r\n    term: 'Credit card',\r\n    definition: 'A card used to pay for expenses without cash or immediately liquid money. A person’s line of credit is determined by their use of credit and their credit card company.',\r\n  },\r\n  {\r\n    term: 'Expenses',\r\n    definition: 'Cost required to pay for something, like bills for housing or money spent on food.',\r\n  },\r\n  {\r\n    term: 'Felony',\r\n    definition: 'A serious criminal charge punishable by more than one year in jail.',\r\n  },\r\n  {\r\n    term: 'Income from employment',\r\n    definition: 'Income earned by working a job, or from retirement or pension plans. ',\r\n  },\r\n  {\r\n    term: 'Income from benefits',\r\n    definition: 'Income received via public assistance and monetary benefits.',\r\n  },\r\n  {\r\n    term: 'Insurance company bail bond',\r\n    definition: 'Also known as a bail bond. Bail that is guaranteed and tendered by private, for-profit bail bond agencies.',\r\n  },\r\n  {\r\n    term: 'Misdemeanor',\r\n    definition: 'A criminal charge punishable by up to one year in jail.',\r\n  },\r\n  {\r\n    term: 'Monetary benefits',\r\n    definition: 'Public assistance that has a cash value and can be used like cash to make payments for a variety of expenses.',\r\n  },\r\n  {\r\n    term: 'No ability to pay',\r\n    definition: 'When a person has no financial income, or their financial obligations exceed their income, such that payment of any amount of bail would cause undue hardship.',\r\n  },\r\n  {\r\n    term: 'Partially secured bond',\r\n    definition: 'Also known as a deposit bond. Bail that is secured by a deposit of money with a court, usually between one to ten percent of the total bail amount.',\r\n  },\r\n  {\r\n    term: 'Regular monthly expenses',\r\n    definition: 'Expenses or bills a person anticipates paying on a monthly basis, including rent, transportation, student loans, or groceries, among others.',\r\n  },\r\n  {\r\n    term: 'Release on recognizance',\r\n    definition: 'Also known as a personal recognizance bond. When a person is released pretrial without the need to pay any money bail at all.',\r\n  },\r\n  {\r\n    term: 'Social Security Disability (SSD)',\r\n    definition: 'Benefits paid to people who have a disability that prevents them from working before reaching retirement age.',\r\n  },\r\n  {\r\n    term: 'Social Security Income',\r\n    definition: 'Benefits paid to people who worked but are now retired.',\r\n  },\r\n  {\r\n    term: 'Supplemental Security Income (SSI)',\r\n    definition: 'Monetary benefits paid to people with limited income who are older than 65, blind, or disabled.',\r\n  },\r\n  {\r\n    term: 'Surety Bond',\r\n    definition: 'A promise by a family member or friend to pay all or part of the bail if a person fails to appear in court or otherwise violates the release conditions.',\r\n  },\r\n  {\r\n    term: 'Unemployment income',\r\n    definition: 'Monetary benefits paid as a result of unemployment.',\r\n  },\r\n  {\r\n    term: 'Unsecured bond',\r\n    definition: 'Bail with dollar amount assigned that is only paid to the court if the person fails to appear in court or otherwise violates the release conditions.',\r\n  },\r\n];\r\n  /* eslint-enable max-len */\r\n\r\nconst styles = StyleSheet.create({\r\n  paragraph: {\r\n    textAlign: 'left',\r\n    width: '100%',\r\n  },\r\n  termHeading: {\r\n    fontWeight: '900',\r\n  },\r\n});\r\n\r\nconst definitionStyle = StyleSheet.flatten([\r\n  customStyles.secondaryText,\r\n  styles.paragraph,\r\n]);\r\n\r\nconst termHeadingStyle = StyleSheet.flatten([\r\n  styles.termHeading,\r\n]);\r\n\r\nconst Term = ({term, definition}) => (\r\n  <React.Fragment>\r\n    <Paragraph\r\n      accessibilityLabel={`${term} is: ${definition}`}\r\n      style={definitionStyle}\r\n      large>\r\n      <Text\r\n        style={termHeadingStyle}>\r\n        {term}\r\n      </Text>&#8195;\r\n      {definition}\r\n    </Paragraph>\r\n  </React.Fragment>\r\n);\r\n\r\nTerm.propTypes = {\r\n  term: PropTypes.string.isRequired,\r\n  definition: PropTypes.string.isRequired,\r\n};\r\n\r\nconst Glossary = (props) => {\r\n  return (\r\n    <AboutSection title='Glossary' {...props}>\r\n      {terms.map( (item, index) => (\r\n        <Term key={index} term={item.term} definition={item.definition} />\r\n      ))}\r\n    </AboutSection>\r\n  );\r\n};\r\n\r\nexport default Glossary;\r\n","import React, { useEffect, useState, useCallback } from 'react';\r\nimport { Platform, StyleSheet, View } from 'react-native';\r\nimport { connect } from 'react-redux';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport PropTypes from 'prop-types';\r\nimport colors from '../config/colors';\r\nimport Flex from './Flex';\r\n\r\nimport OverlayScroll from '../layout/OverlayScroll';\r\nimport Glossary from '../views/assessment/About/Glossary';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    height: Platform.OS === 'web' ? 'calc(100vh - 64px)' : undefined,\r\n    padding: Platform.OS === 'web' ? 16 : undefined,\r\n    width: '100%',\r\n    backgroundColor: colors.darkGray,\r\n  },\r\n  body: {\r\n    paddingLeft: '10%',\r\n    paddingRight: '10%',\r\n    paddingTop: 20,\r\n    paddingBottom: 10,\r\n    flexGrow: 1,\r\n    flexShrink: 1,\r\n    flex: 1,\r\n  },\r\n});\r\n\r\nexport const mapStateToPropsHoc = Component => state => {\r\n  const props = {};\r\n\r\n  if (Component.useFields) {\r\n    for (const field of Component.useFields) {\r\n      props[field] = state.form[field];\r\n    }\r\n  }\r\n\r\n  return props;\r\n};\r\n\r\nconst mapDispatchToPropsHoc = Component => state => {\r\n  return {\r\n    // do nothing, no implementation\r\n  };\r\n};\r\n\r\nconst getContainedScreen = NavigationStrip => (Component, glossaryEvents) => {\r\n  const ScreenContainer = React.forwardRef((props, ref) => {\r\n    const [glossary, setGlossary] = useState(false);\r\n\r\n    const onGlossary = useCallback(value => setGlossary(value), [setGlossary]);\r\n    useEffect(() => {\r\n      if (glossaryEvents) {\r\n        glossaryEvents.on('showGlossary', onGlossary);\r\n        return () => glossaryEvents.off('showGlossary', onGlossary);\r\n      }\r\n    }, [onGlossary, glossaryEvents]);\r\n\r\n    return (\r\n      <View style={styles.container}>\r\n        <OverlayScroll\r\n          containerStyle={{\r\n            backgroundColor: colors.darkGray,\r\n            maxHeight:\r\n              Platform.OS === 'web' ? 'calc(100vh - 100px)' : undefined,\r\n          }}\r\n          isVisible={glossary}\r\n          onBackdropPress={() => setGlossary(false)}\r\n          onComplete={() => setGlossary(false)}\r\n          indicatorStyle=\"white\"\r\n          fullScreen\r\n          footerStyle={{\r\n            height: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n              navigator.userAgent\r\n            )\r\n              ? 100\r\n              : 40,\r\n          }}\r\n        >\r\n          <Glossary />\r\n        </OverlayScroll>\r\n        <View style={{ margin: 'auto', maxWidth: 800, height: '100%' }}>\r\n          <Flex col>\r\n            <Component ref={ref} style={styles.body} {...props} />\r\n            {NavigationStrip && (\r\n              <NavigationStrip navigation={props.navigation} />\r\n            )}\r\n          </Flex>\r\n        </View>\r\n      </View>\r\n    );\r\n  });\r\n\r\n  const displayName =\r\n    Component.displayName ||\r\n    (typeof Component === 'function' && Component.name) ||\r\n    (typeof Component === 'object' && Component.constructor.name);\r\n\r\n  ScreenContainer.displayName = `Contained<${displayName}>`;\r\n  hoistNonReactStatics(ScreenContainer, Component);\r\n\r\n  ScreenContainer.propTypes = {\r\n    navigation: PropTypes.object.isRequired,\r\n  };\r\n\r\n  const mapStateToProps = mapStateToPropsHoc(Component);\r\n  const mapDispatchToProps = mapDispatchToPropsHoc(Component);\r\n\r\n  return connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n  )(ScreenContainer);\r\n};\r\n\r\nexport default getContainedScreen;\r\n","import React from 'react';\r\nimport {Platform} from 'react-native';\r\nimport {HeaderBackButton} from 'react-navigation';\r\n\r\nconst leftHeaderHoc = (navigation) => {\r\n  const LeftHeader = (props) =>\r\n    <HeaderBackButton\r\n      onPress={() => navigation.goBack(null)}\r\n      title= {Platform.OS === 'ios' ? 'Back' : ''}\r\n      backTitleVisible={Platform.OS === 'ios'} />;\r\n  return LeftHeader;\r\n};\r\n\r\nexport default leftHeaderHoc;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { ViewPropTypes, Platform } from 'react-native';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport PropTypes from 'prop-types';\r\nimport InputScroll from '../components/InputScroll';\r\n\r\nconst getSection = navigation =>\r\n  navigation && navigation.dangerouslyGetParent().getParam('section');\r\n\r\nconst makeScrollable = (Component, scrollUpdater, scrollProps) => {\r\n  const ScrollableComponent = React.forwardRef(({ style, ...props }, ref) => {\r\n    const [scrollTo, setScrollTo] = useState();\r\n    const [section, setSection] = useState(getSection(props.navigation));\r\n\r\n    const scrollDelegate = position => {\r\n      setScrollTo(position);\r\n    };\r\n\r\n    useEffect(() => {\r\n      props.navigation.addListener('didFocus', () => {\r\n        setSection(getSection(props.navigation));\r\n      });\r\n\r\n      if (scrollUpdater) {\r\n        scrollUpdater.on('scroll', section => setSection(section));\r\n      }\r\n    }, []);\r\n\r\n    const RenderedComponent = (\r\n      <Component\r\n        ref={ref}\r\n        {...props}\r\n        scrollTo={scrollDelegate}\r\n        scrollSection={section}\r\n      />\r\n    );\r\n\r\n    return Platform.OS === 'web' ? (\r\n      <div\r\n        style={{\r\n          overflowX: 'hidden',\r\n          overflowY: 'auto',\r\n          flexGrow: 1,\r\n        }}\r\n      >\r\n        {RenderedComponent}\r\n      </div>\r\n    ) : (\r\n      <InputScroll\r\n        contentContainerStyle={{ flexGrow: 1 }}\r\n        style={style}\r\n        scrollTo={scrollTo}\r\n        {...scrollProps}\r\n      >\r\n        {RenderedComponent}\r\n      </InputScroll>\r\n    );\r\n  });\r\n\r\n  const displayName =\r\n    Component.displayName ||\r\n    (typeof Component === 'function' && Component.name) ||\r\n    (typeof Component === 'object' && Component.constructor.name);\r\n\r\n  ScrollableComponent.displayName = `Scrollable<${displayName}>`;\r\n  hoistNonReactStatics(ScrollableComponent, Component);\r\n\r\n  ScrollableComponent.propTypes = {\r\n    style: ViewPropTypes.style,\r\n    navigation: PropTypes.shape({\r\n      addListener: PropTypes.func.isRequired,\r\n    }),\r\n  };\r\n\r\n  return ScrollableComponent;\r\n};\r\n\r\nexport default makeScrollable;\r\n","import {createStackNavigator} from 'react-navigation';\nimport getContainedScreen from '../layout/ScreenContainer';\nimport leftHeaderHoc from './leftHeaderHoc';\nimport makeScrollable from './makeScrollable';\n\nconst createSingleNavigator =\n  (Screen, title, scrollUpdater, containerHoc, scrollProps) => {\n    const scrollable = makeScrollable(Screen, scrollUpdater, scrollProps);\n\n    const containedScreen = !containerHoc ?\n      getContainedScreen()(scrollable)\n      : containerHoc(scrollable);\n\n    return createStackNavigator(\n        {\n          Screen: {\n            screen: containedScreen,\n            navigationOptions: ({navigation}) => {\n              const extraOptions = containedScreen.navigationOptions ?\n                containedScreen.navigationOptions(navigation) : {};\n              return ({\n                headerTitle: title,\n                headerLeft: leftHeaderHoc(navigation),\n                ...extraOptions,\n              });\n            },\n          },\n        },\n    );\n  };\n\nexport default createSingleNavigator;\n","export const SET_FORM = 'bail-app/form/set';\r\nexport const SET_FORM_CALCULATED = 'bail-app/form/calculate';\r\nexport const SET_FORM_CLEAR = 'bail-app/form/clear';\r\n\r\n// trackedFields maps all fields to the calculations which they\r\n// comprise. It will be used to automated updating calcuations\r\n// whenever a field changes and it has been part of a calculation\r\n// We put wrap the tracking object in a proxy in an enclosure to\r\n// limit munging the state, and we expose a reset() method. Without\r\n// the need for reset, \"const trackedFields = {};\" would suffice.\r\nconst trackedFields = (function() {\r\n  let backingStore = {};\r\n  const wrapper = {\r\n    get store() {\r\n      return backingStore;\r\n    },\r\n  };\r\n\r\n  const handler = {\r\n    get: (obj, prop) =>\r\n      prop === 'reset'\r\n        ? () => {\r\n            backingStore = {};\r\n          }\r\n        : obj.store[prop],\r\n    set: (obj, prop, value) => {\r\n      if (prop === 'reset') {\r\n        throw new Error('Cannot overwrite reset');\r\n      }\r\n\r\n      obj.store[prop] = value;\r\n      return true;\r\n    },\r\n  };\r\n\r\n  return new Proxy(wrapper, handler);\r\n})();\r\n\r\n// getField returns a field value from the state's form\r\n// we pass this function as a callback to calulation,\r\n// with all parameters except \"field, defaultValue\" applied\r\nconst getField = form => key => calculation => (field, defaultValue) => {\r\n  if (!trackedFields[field]) {\r\n    trackedFields[field] = {};\r\n  }\r\n\r\n  if (!trackedFields[field][key]) {\r\n    // it is import to curry the form here so that when\r\n    // setField will re-compute the transactions, we\r\n    // will use the current form state, and NOT what is in\r\n    // our closure here for getField\r\n    trackedFields[field][key] = curriedForm =>\r\n      calculation.bind(null, getField(curriedForm)(key)(calculation));\r\n  }\r\n\r\n  const value = form[field];\r\n\r\n  return value === undefined ? defaultValue : value;\r\n};\r\n\r\nconst setField = form => field => value => {\r\n  form[field] = value;\r\n  if (trackedFields[field]) {\r\n    for (const tracked in trackedFields[field]) {\r\n      if (Object.prototype.hasOwnProperty.call(trackedFields[field], tracked)) {\r\n        if (trackedFields[field][tracked]) {\r\n          // update the calculation with the stored computation,\r\n          // passing the current state's form\r\n          const calculatedValue = trackedFields[field][tracked](form)();\r\n          setField(form)(tracked)(calculatedValue);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  return form[field];\r\n};\r\n\r\nexport default function reducer(state = { form: {} }, action) {\r\n  const { ...form } = state.form;\r\n\r\n  switch (action.type) {\r\n    case SET_FORM:\r\n      if (action.payload) {\r\n        for (const key in action.payload) {\r\n          if (Object.prototype.hasOwnProperty.call(action.payload, key)) {\r\n            setField(form)(key)(action.payload[key]);\r\n          }\r\n        }\r\n      }\r\n\r\n      return { ...state, form };\r\n    case SET_FORM_CALCULATED:\r\n      if (action.payload) {\r\n        for (const key in action.payload) {\r\n          if (Object.prototype.hasOwnProperty.call(action.payload, key)) {\r\n            const calculation = action.payload[key];\r\n            // perform the calculation. calls to the getField callback\r\n            // will register each gotten field with this calculation\r\n            // to enable auto-recalculation\r\n            const value = calculation(getField(form)(key)(calculation));\r\n            setField(form)(key)(value);\r\n          }\r\n        }\r\n      }\r\n      return { ...state, form };\r\n    case SET_FORM_CLEAR:\r\n      trackedFields.reset();\r\n      return { form: {} };\r\n    default:\r\n      return state;\r\n  }\r\n}\r\n\r\nexport function setForm(key, value) {\r\n  return {\r\n    type: SET_FORM,\r\n    payload: {\r\n      [key]: value,\r\n    },\r\n  };\r\n}\r\n\r\nexport function setFormCalculated(key, calculation) {\r\n  return {\r\n    type: SET_FORM_CALCULATED,\r\n    payload: {\r\n      [key]: calculation,\r\n    },\r\n  };\r\n}\r\n\r\nexport function setFormClear() {\r\n  return {\r\n    type: SET_FORM_CLEAR,\r\n  };\r\n}\r\n","import {useState, useMemo} from 'react';\r\nimport {createStore as reduxCreateStore} from 'redux';\r\nimport {setForm, setFormCalculated, setFormClear} from './reducer';\r\n\r\nlet store;\r\nlet initialized = {};\r\n\r\nconst permute = (key) => (permuteHook) => (value) => {\r\n  store.dispatch(setForm(key, value));\r\n  return permuteHook(value);\r\n};\r\n\r\nexport function useReduxState(key, initialValue) {\r\n  if (!initialized[key]) {\r\n    store.dispatch(setForm(key, initialValue));\r\n    initialized[key] = true;\r\n  } else {\r\n    initialValue = getState().form[key];\r\n  }\r\n\r\n  const [valueHook, permuteHook] = useState(initialValue);\r\n\r\n  return [valueHook, permute(key)(permuteHook)];\r\n}\r\n\r\nexport function useReduxMemo(key, calculation, deps) {\r\n  if (!initialized[key]) {\r\n    store.dispatch(setFormCalculated(key, calculation));\r\n    initialized[key] = true;\r\n  }\r\n\r\n  const form = getState().form;\r\n\r\n  return useMemo( () => form[key],\r\n      deps.map(\r\n          (dep) => form[dep],\r\n      ));\r\n}\r\n\r\nexport function createStore(reducer) {\r\n  store = reduxCreateStore(reducer);\r\n  return store;\r\n}\r\n\r\nexport function getState() {\r\n  return store && store.getState();\r\n}\r\n\r\nexport function resetState() {\r\n  initialized = {};\r\n  store.dispatch(setFormClear());\r\n}\r\n","import React from 'react';\r\nimport {Platform, StyleSheet, View} from 'react-native';\r\nimport {TouchableWithoutFeedback} from 'react-native-gesture-handler';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ActionResponder = (props) => {\r\n  const Component = Platform.OS === 'web' ? View : TouchableWithoutFeedback;\r\n  const onClick =\r\n    Platform.OS === 'web' && !props.onClick && !props.disabled\r\n      ? props.onPress\r\n      : undefined;\r\n\r\n  const computedStyle = StyleSheet.flatten([\r\n    (props.onClick || onClick) && {cursor: 'pointer'},\r\n    props.disabled && {cursor: 'not-allowed'},\r\n    props.styles,\r\n  ]);\r\n\r\n  return <Component onClick={onClick} {...props} style={computedStyle} />;\r\n};\r\n\r\nActionResponder.propTypes = {\r\n  disabled: PropTypes.bool,\r\n  onClick: PropTypes.func,\r\n  onPress: PropTypes.func,\r\n  styles: PropTypes.object,\r\n};\r\n\r\nexport default ActionResponder;\r\n","import React from 'react';\r\nimport {StyleSheet, View, ViewPropTypes} from 'react-native';\r\nimport {Icon} from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport Flex from '../layout/Flex';\r\nimport ActionResponder from './ActionResponder';\r\n\r\nconst condensedMargin = 4;\r\nconst defaultMargin = 8;\r\nconst largeMargin = 16;\r\n\r\nconst styles = StyleSheet.create({\r\n  leftIcon: {\r\n    marginRight: defaultMargin,\r\n    marginLeft: 0,\r\n  },\r\n  rightIcon: {\r\n    marginRight: 0,\r\n    marginLeft: defaultMargin,\r\n  },\r\n  container: {\r\n    padding: 4,\r\n    cursor: 'pointer',\r\n  },\r\n});\r\n\r\nconst LabelIcon = (props) => {\r\n  const {\r\n    children,\r\n    style,\r\n    containerStyle,\r\n    condensed,\r\n    large,\r\n    iconRight,\r\n    size,\r\n    onPress,\r\n    accessibilityRole,\r\n    accessibilityLabel,\r\n    accessibilityHint,\r\n    ...remaining\r\n  } = props;\r\n\r\n  const computedStyle = StyleSheet.flatten([\r\n    styles.leftIcon,\r\n    iconRight && styles.rightIcon,\r\n    style && style,\r\n    condensed &&\r\n      (iconRight\r\n        ? {marginLeft: condensedMargin}\r\n        : {marginRight: condensedMargin}),\r\n    large &&\r\n      (iconRight ? {marginLeft: largeMargin} : {marginRight: largeMargin}),\r\n  ]);\r\n\r\n  const computedContainerStyle = StyleSheet.flatten([\r\n    styles.container,\r\n    containerStyle,\r\n  ]);\r\n\r\n  return (\r\n    <ActionResponder\r\n      style={computedContainerStyle}\r\n      onPress={onPress}\r\n      accessibilityRole={accessibilityRole || (onPress ? 'button' : 'text')}\r\n      accessibilityLabel={accessibilityLabel}\r\n      accessibilityHint={accessibilityHint}\r\n    >\r\n      <View style={{height: size}}>\r\n        <Flex rowReverse={iconRight} start={!iconRight} end={iconRight}>\r\n          <Icon containerStyle={computedStyle} size={size} {...remaining} />\r\n\r\n          <View style={{height: size}}>\r\n            {children && (\r\n              <Flex col center>\r\n                {children}\r\n              </Flex>\r\n            )}\r\n          </View>\r\n        </Flex>\r\n      </View>\r\n    </ActionResponder>\r\n  );\r\n};\r\n\r\nLabelIcon.propTypes = {\r\n  children: PropTypes.node,\r\n  style: ViewPropTypes.style,\r\n  containerStyle: ViewPropTypes.style,\r\n  condensed: PropTypes.bool,\r\n  large: PropTypes.bool,\r\n  iconRight: PropTypes.bool,\r\n  size: PropTypes.number,\r\n  onPress: PropTypes.func,\r\n  accessibilityRole: PropTypes.string,\r\n  accessibilityLabel: PropTypes.string,\r\n  accessibilityHint: PropTypes.string,\r\n};\r\n\r\nLabelIcon.defaultProps = {\r\n  iconRight: false,\r\n  condensed: false,\r\n  large: false,\r\n  size: 32,\r\n};\r\n\r\nexport default LabelIcon;\r\n","import React from 'react';\r\nimport {StyleSheet, View, ViewPropTypes} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport Flex from './Flex';\r\n\r\nconst defaultPaddingH = 20;\r\nconst defaultPaddingV = 10;\r\n\r\nconst condensedPaddingH = 10;\r\nconst condensedPaddingV = 5;\r\n\r\nconst largePaddingH = 40;\r\nconst largePaddingV = 20;\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    width: '100%',\r\n  },\r\n  flex: {\r\n    paddingRight: defaultPaddingH,\r\n    paddingLeft: defaultPaddingH,\r\n    paddingTop: defaultPaddingV,\r\n    paddingBottom: defaultPaddingV,\r\n  },\r\n  condensedFlex: {\r\n    paddingRight: condensedPaddingH,\r\n    paddingLeft: condensedPaddingH,\r\n    paddingTop: condensedPaddingV,\r\n    paddingBottom: condensedPaddingV,\r\n  },\r\n  largeFlex: {\r\n    paddingRight: largePaddingH,\r\n    paddingLeft: largePaddingH,\r\n    paddingTop: largePaddingV,\r\n    paddingBottom: largePaddingV,\r\n  },\r\n});\r\n\r\nconst Toolbar = (props) => {\r\n  const {\r\n    children,\r\n    style,\r\n    condensed,\r\n    large,\r\n    ...rest\r\n  } = props;\r\n\r\n  const computedStyle = StyleSheet.flatten([\r\n    style,\r\n    styles.container,\r\n  ]);\r\n\r\n  const computedFlexStyle = StyleSheet.flatten([\r\n    styles.flex,\r\n    condensed && styles.condensedFlex,\r\n    large && styles.largeFlex,\r\n  ]);\r\n\r\n  return (\r\n    <View style={computedStyle} {...rest}>\r\n      <Flex style={computedFlexStyle} spaceBetween >\r\n        {children}\r\n      </Flex>\r\n    </View>\r\n  );\r\n};\r\n\r\nToolbar.propTypes = {\r\n  children: PropTypes.node,\r\n  style: ViewPropTypes.style,\r\n  condensed: PropTypes.bool,\r\n  large: PropTypes.bool,\r\n};\r\n\r\nToolbar.defaultProps = {\r\n  condensed: false,\r\n  large: false,\r\n};\r\n\r\nexport default Toolbar;\r\n","import React from 'react';\r\nimport {StyleSheet, View, ViewPropTypes} from 'react-native';\r\nimport {Text} from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport {customStyles} from '../config/Styles';\r\n\r\nconst Section = (props) => {\r\n  const {\r\n    containerStyle,\r\n    headerStyle,\r\n    headerTextStyle,\r\n    bodyStyle,\r\n    title,\r\n    children,\r\n    ...rest\r\n  } = props;\r\n\r\n  const computedHeaderStyle = StyleSheet.flatten([\r\n    customStyles.header,\r\n    headerStyle,\r\n  ]);\r\n\r\n  const computedheaderTextStyle = StyleSheet.flatten([\r\n    customStyles.headerText,\r\n    headerTextStyle,\r\n  ]);\r\n\r\n  const computedBodyStyle = StyleSheet.flatten([\r\n    customStyles.body,\r\n    bodyStyle,\r\n  ]);\r\n\r\n  return (\r\n    <View style={containerStyle} {...rest}>\r\n      {title &&\r\n      <View style={computedHeaderStyle}>\r\n        <Text\r\n          accessibilityRole='header'\r\n          style={computedheaderTextStyle}>\r\n          {title}\r\n        </Text>\r\n      </View>\r\n      }\r\n      <View style={computedBodyStyle}>\r\n        {children}\r\n      </View>\r\n    </View>\r\n  );\r\n};\r\n\r\nSection.propTypes = {\r\n  children: PropTypes.node.isRequired,\r\n  containerStyle: ViewPropTypes.style,\r\n  headerStyle: ViewPropTypes.style,\r\n  headerTextStyle: PropTypes.object,\r\n  bodyStyle: ViewPropTypes.style,\r\n  title: PropTypes.string,\r\n};\r\n\r\nexport default Section;\r\n","/* eslint-disable max-len */\r\nimport React from 'react';\r\nimport {View, Text} from 'react-native';\r\nimport Markdown, {getUniqueID} from 'react-native-markdown-renderer';\r\nimport PropTypes from 'prop-types';\r\nimport Section from '../../layout/Section';\r\nimport Privacy from '../../../assets/copy/Privacy';\r\nimport Terms from '../../../assets/copy/Terms';\r\n\r\nconst rules = {\r\n  // eslint-disable-next-line react/display-name\r\n  softbreak: () => <Text key={getUniqueID()}> </Text>,\r\n};\r\n\r\nconst Info = () => {\r\n  return (\r\n    <View>\r\n      <Section\r\n        headerTextStyle={{color: 'black'}}\r\n        title='Vera Bail Assessment Calculator Mobile App End User License Agreement'>\r\n        <Markdown rules={rules}>\r\n          {Terms}\r\n        </Markdown>\r\n      </Section>\r\n      <Section\r\n        headerTextStyle={{color: 'black'}}\r\n        title='Vera Bail Assessment Calculator Mobile App Privacy Policy'>\r\n        <Markdown rules={rules}>\r\n          {Privacy}\r\n        </Markdown>\r\n      </Section>\r\n    </View>\r\n  );\r\n};\r\n\r\nInfo.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    popToTop: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default Info;\r\n","/* eslint-disable max-len */\nimport React from 'react';\nimport OverlayScroll from '../../layout/OverlayScroll';\nimport Terms from './Terms';\n\nconst TermsOverlay = props => {\n  return (\n    <OverlayScroll\n      fullScreen\n      cancelTitle=\"Disagree\"\n      completeTitle=\"Agree\"\n      indicatorStyle=\"black\"\n      footerStyle={{\n        height: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n          navigator.userAgent\n        )\n          ? 100\n          : 40,\n      }}\n      {...props}\n    >\n      <Terms />\n    </OverlayScroll>\n  );\n};\n\nexport default TermsOverlay;\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n  AsyncStorage,\r\n  Image,\r\n  ImageBackground,\r\n  StyleSheet,\r\n  Text,\r\n  View,\r\n  Platform,\r\n} from 'react-native';\r\nimport LabelIcon from '../../components/LabelIcon';\r\nimport Strip from '../../layout/Strip';\r\nimport TermsOverlay from './TermsOverlay';\r\nimport { Linking } from 'expo';\r\nimport ActionResponder from '../../components/ActionResponder';\r\n\r\nconst BG_IMAGE = require('../../../assets/icons/loading.png');\r\nconst LOGO = require('../../../assets/images/Vera_WhiteonRed.png');\r\n\r\nconst styles = StyleSheet.create({\r\n  bgImage: {\r\n    flex: 1,\r\n    top: 0,\r\n    left: 0,\r\n    width: '100%',\r\n    height: '100%',\r\n    justifyContent: 'center',\r\n    alignItems: 'center',\r\n    backgroundColor: '#ef4136',\r\n  },\r\n  image: {\r\n    backgroundColor: '#ef4136',\r\n  },\r\n  text: {\r\n    color: 'white',\r\n  },\r\n  logo: {\r\n    flexGrow: 1,\r\n    height: 34,\r\n    marginLeft: 25,\r\n    marginRight: 25,\r\n  },\r\n});\r\n\r\nconst Cover = ({ navigation }) => {\r\n  const [showAgree, setShowAgree] = useState(false);\r\n  const [agreed, setAgreed] = useState();\r\n\r\n  useEffect(() => {\r\n    AsyncStorage.getItem('@eula').then(value => {\r\n      setAgreed(value === 'true');\r\n      setShowAgree(value !== 'true');\r\n    });\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    if (Platform.OS === 'web') {\r\n      // HACK: hooking up action to close the drawer on resize\r\n      // we are doing it here simply because the navigator is in scope\r\n      // and we are guaranteed to not have a drawer before this component\r\n      // loads\r\n      window.onresize = () => navigation.closeDrawer();\r\n    }\r\n  }, []);\r\n\r\n  const agree = answer => {\r\n    AsyncStorage.setItem('@eula', Boolean(answer).toString()).then(() => {\r\n      setShowAgree(false);\r\n      setAgreed(answer);\r\n      navigation.setParams({\r\n        drawerLockMode: answer ? 'unlocked' : 'locked-closed',\r\n      });\r\n    });\r\n  };\r\n\r\n  const onPress = () => {\r\n    if (agreed) {\r\n      navigation.navigate('Wizard');\r\n    } else {\r\n      setShowAgree(true);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <ImageBackground\r\n      resizeMode=\"center\"\r\n      source={BG_IMAGE}\r\n      style={styles.bgImage}\r\n      imageStyle={styles.image}\r\n      accessible\r\n      accessibilityLabel=\"Ability to Pay Calculator\"\r\n      accessibilityRole=\"header\"\r\n    >\r\n      <TermsOverlay\r\n        isVisible={showAgree}\r\n        onComplete={() => agree(true)}\r\n        onCancel={() => agree(false)}\r\n      />\r\n      <View\r\n        style={{\r\n          width: '100%',\r\n          flex: 1,\r\n          flexDirection: 'column',\r\n          justifyContent: 'flex-end',\r\n        }}\r\n      >\r\n        <Strip style={{ height: 54 }}>\r\n          {agreed && (\r\n            <LabelIcon\r\n              name=\"menu\"\r\n              type=\"MaterialCommunityIcons\"\r\n              color=\"white\"\r\n              onClick={() => navigation.toggleDrawer()}\r\n              onPress={() => navigation.toggleDrawer()}\r\n              accessibilityHint=\"Open drawer menu\"\r\n            />\r\n          )}\r\n          <ActionResponder\r\n            style={styles.logo}\r\n            onClick={() => Linking.openURL('https://www.vera.org')}\r\n            onPress={() => Linking.openURL('https://www.vera.org')}\r\n            accessibilityRole=\"image\"\r\n            accessibilityLabel=\"Vera Institute of Justice\"\r\n            accessibilityHint=\"Navigate to Vera homepage\"\r\n          >\r\n            <Image style={{ width: 160, height: 34 }} source={LOGO} />\r\n          </ActionResponder>\r\n          <LabelIcon\r\n            name=\"ios-arrow-forward\"\r\n            type=\"ionicon\"\r\n            color=\"white\"\r\n            onPress={onPress}\r\n            iconRight\r\n          >\r\n            <Text style={styles.text}>\r\n              {agreed ? 'Start' : 'User Agreement'}\r\n            </Text>\r\n          </LabelIcon>\r\n        </Strip>\r\n      </View>\r\n    </ImageBackground>\r\n  );\r\n};\r\n\r\nCover.use;\r\n\r\nCover.navigationOptions = ({ navigation }) => {\r\n  return {\r\n    header: null,\r\n    drawerLockMode: navigation.state.params\r\n      ? navigation.state.params.drawerLockMode\r\n      : undefined,\r\n  };\r\n};\r\n\r\nCover.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    toggleDrawer: PropTypes.func,\r\n    setParams: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default Cover;\r\n","import React from 'react';\r\nimport {StyleSheet, Text as NativeText} from 'react-native';\r\nimport {Text} from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport {Linking} from 'expo';\r\n\r\nconst styles = StyleSheet.create({\r\n  link: {\r\n    color: '#2196f3',\r\n    textDecorationLine: 'underline',\r\n  },\r\n});\r\n\r\nconst Link = ({href, children, style, onPress, ...rest}) => {\r\n  const computedStyle = StyleSheet.flatten([styles.link, style]);\r\n\r\n  return (\r\n    <Text\r\n      accessibilityRole='link'\r\n      style={computedStyle}\r\n      onPress={href ? () => Linking.openURL(href) : onPress}\r\n      {...rest}\r\n    >\r\n      {children}\r\n    </Text>\r\n  );\r\n};\r\n\r\nLink.propTypes = {\r\n  children: PropTypes.node,\r\n  href: PropTypes.string,\r\n  style: NativeText.propTypes.style,\r\n  onPress: PropTypes.func,\r\n};\r\n\r\nexport default Link;\r\n","import React from 'react';\r\nimport {StyleSheet} from 'react-native';\r\nimport AboutSection from './AboutSection';\r\nimport {customStyles} from '../../../config/Styles';\r\nimport Paragraph from '../../../layout/Paragraph';\r\nimport Link from '../../../components/Link';\r\n\r\nconst styles = StyleSheet.create({\r\n  paragraph: {\r\n    textAlign: 'left',\r\n    width: '100%',\r\n  },\r\n});\r\n\r\nconst Background = (props) => {\r\n  const style = StyleSheet.flatten([\r\n    customStyles.secondaryText,\r\n    styles.paragraph,\r\n  ]);\r\n\r\n\r\n  return (\r\n    <AboutSection title='Background' {...props}>\r\n      <Paragraph style={style} large>\r\n        The Vera Institute of Justice seeks to urgently build and\r\n        improve justice systems that ensure fairness, promote safety,\r\n        and strengthen communities.\r\n      </Paragraph>\r\n      <Paragraph style={style} large>\r\n        One of Vera&apos;s core priorities is bail reform&mdash;ending\r\n        the use of money bail and reducing the number of people in jail.\r\n        As we work towards this goal, we recognize that the vast majority\r\n        of courts across the country still use money bail without any\r\n        real consideration of how much a person can afford. We created\r\n        an ability to pay calculator app to estimate the amount and form of\r\n        bail a person can afford if bail is set. The app consists of\r\n        approximately 30 questions and provides a dollar amount and form,\r\n        such as cash, an unsecured bond, credit card bail, or partially\r\n        secured/deposit bond. This information can influence the bail decision\r\n        and ensure that affordable bail is set. Anyone can use the app,\r\n        including judges, defense attorneys, pretrial services staff, friends\r\n        and family members of the accused, and the accused themselves. The\r\n        information you provide as you answer the app’s questions should\r\n        reflect the financial circumstances—income from employment or benefits,\r\n        assets, and obligations such as rent, food, childcare, and\r\n        transportation&ndash;of the person paying bail, whether that is the\r\n        person accused of a crime or a friend or family member. Please answer\r\n        all questions as accurately as possible so that the bail calculation is\r\n        a realistic reflection of your ability to pay.\r\n\r\n        Please contact&#8201;\r\n        <Link\r\n          href='mailto:abilitytopay@vera.org?subject=Ability%20to%20Pay%20App'>\r\n          abilitytopay@vera.org\r\n        </Link>&#8201;\r\n       with any questions or feedback about the app or project.\r\n      </Paragraph>\r\n    </AboutSection>\r\n  );\r\n};\r\n\r\nexport default Background;\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport AboutSection from './AboutSection';\r\nimport {StyleSheet} from 'react-native';\r\nimport {customStyles} from '../../../config/Styles';\r\nimport Paragraph from '../../../layout/Paragraph';\r\n\r\n/* eslint-disable max-len */\r\nconst questions = [\r\n  {\r\n    question: 'Who should use this calculator?',\r\n    answer: 'This app is a tool designed to help provide more information about a person’s ability to pay bail. Anybody can use this app: attorneys, pretrial services agencies, or family members. In the scenario that bail might be set on somebody you know, whether that person is a client or a family member, this app calculates that person’s ability to pay bail so that judges know exactly what amount of bail would be reasonable to afford. ',\r\n  },\r\n  {\r\n    question: 'How will my answers be used?',\r\n    answer: 'Your privacy is a top priority. Any information provided to the calculator will only be used to determine a person’s ability to pay bail. The data will not be saved. Once you close out of the app, the data is erased.',\r\n  },\r\n  {\r\n    question: 'Should children and dependents be included in this calculation?',\r\n    answer: 'If the respondent is financially responsible for children and dependents, yes. If a person uses their income from employment or benefits to pay for the care of others, then those expenses should be reported to accurately account for money coming in and money going out. ',\r\n  },\r\n  {\r\n    question: 'How does ability to pay factor into bail decisions?',\r\n    answer: 'Most states have laws that require the courts to consider a person’s financial circumstances when setting a money bail amount. However, courts rarely, if ever, ask how much a person can afford before setting bail. There have been lawsuits—in Houston, San Francisco, St. Louis, and dozens of other cities—challenging how courts set bail without taking into account a person’s ability to pay. As a result, many courts are changing their bail practices to individually consider a person’s financial circumstances. A new bail law in New York is the first in the country to require judges to not only consider a person’s ability to pay and whether setting an amount of bail will cause undue hardship but also requiring judges to set unsecured and partially secured bonds as an option. ',\r\n  },\r\n];\r\n  /* eslint-enable max-len */\r\n\r\nconst styles = StyleSheet.create({\r\n  paragraph: {\r\n    textAlign: 'left',\r\n    width: '100%',\r\n  },\r\n  question: {\r\n    fontWeight: 'bold',\r\n  },\r\n});\r\n\r\nconst answerStyle = StyleSheet.flatten([\r\n  customStyles.secondaryText,\r\n  styles.paragraph,\r\n]);\r\n\r\nconst questionStyle = StyleSheet.flatten([\r\n  customStyles.secondaryText,\r\n  styles.paragraph,\r\n  styles.question,\r\n]);\r\n\r\nconst Question = ({question, answer}) => (\r\n  <React.Fragment>\r\n    <Paragraph style={questionStyle}>\r\n      {question}\r\n    </Paragraph>\r\n    <Paragraph style={answerStyle}>\r\n      {answer}\r\n    </Paragraph>\r\n  </React.Fragment>\r\n);\r\n\r\nQuestion.propTypes = {\r\n  question: PropTypes.string.isRequired,\r\n  answer: PropTypes.string.isRequired,\r\n};\r\n\r\nconst FAQ = (props) => {\r\n  return (\r\n    <AboutSection title='Frequently Asked Questions' {...props}>\r\n      {questions.map( (item, index) => (\r\n        <Question key={index} question={item.question} answer={item.answer} />\r\n      ))}\r\n    </AboutSection>\r\n  );\r\n};\r\n\r\nexport default FAQ;\r\n","import React from 'react';\r\nimport {StyleSheet} from 'react-native';\r\nimport AboutSection from './AboutSection';\r\nimport Link from '../../../components/Link';\r\nimport {customStyles} from '../../../config/Styles';\r\nimport Paragraph from '../../../layout/Paragraph';\r\n\r\nconst styles = StyleSheet.create({\r\n  paragraph: {\r\n    textAlign: 'left',\r\n    width: '100%',\r\n  },\r\n});\r\n\r\nconst Acknowledgments = (props) => {\r\n  const style = StyleSheet.flatten([\r\n    customStyles.secondaryText,\r\n    styles.paragraph,\r\n  ]);\r\n\r\n\r\n  return (\r\n    <AboutSection title='Acknowledgments' {...props}>\r\n      <Paragraph style={style} large>\r\n        The Vera Institute is proud to partner with Unloop to create the\r\n        ability to pay bail calculator app. Founded in Seattle in 2015,\r\n        Unloop provides learning and employment opportunities in coding\r\n        for people leaving prison. Vera is deeply grateful to Unloop for\r\n        their development of this app, their commitment to providing\r\n        opportunities for people involved in the justice system, and their\r\n        dedication to justice.\r\n      </Paragraph>\r\n      <Paragraph style={style} large>\r\n        To learn more about Unloop and support their work, visit&#8201;\r\n        <Link href='https://www.un-loop.org/'>\r\n          their website\r\n        </Link>.\r\n      </Paragraph>\r\n    </AboutSection>\r\n  );\r\n};\r\n\r\nexport default Acknowledgments;\r\n","import React, {useEffect, useState} from 'react';\r\nimport {\r\n  Image,\r\n  View,\r\n} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport Background from './About/Background';\r\nimport Glossay from './About/Glossary';\r\nimport FAQ from './About/FAQ';\r\nimport Acknowledgments from './About/Acknowledgments';\r\n\r\nconst LOGO = require('../../../assets/images/Vera_WhiteonGray.png');\r\n\r\nconst Info = ({scrollTo, scrollSection}) => {\r\n  const [faqLayoutTop, setFaqLayoutTop] = useState();\r\n  const [backgroundLayoutTop, setBackgroundLayoutTop] = useState();\r\n  const [glossaryLayoutTop, setGlossaryLayoutTop] = useState();\r\n  const [acknowledgmentsLayoutTop, setAcknowledgmentsLayoutTop] = useState();\r\n\r\n  const onLayout = (setter) => (e) => {\r\n    setter(e.nativeEvent.layout.y);\r\n  };\r\n\r\n  useEffect(() => {\r\n    switch (scrollSection) {\r\n      case 'Background':\r\n        if (backgroundLayoutTop !== undefined) {\r\n          scrollTo(backgroundLayoutTop);\r\n        }\r\n        return;\r\n      case 'FAQ':\r\n        if (faqLayoutTop !== undefined) {\r\n          scrollTo(faqLayoutTop);\r\n        }\r\n        return;\r\n      case 'Glossary':\r\n        if (glossaryLayoutTop !== undefined) {\r\n          scrollTo(glossaryLayoutTop);\r\n        }\r\n        return;\r\n      case 'Acknowledgments':\r\n        if (acknowledgmentsLayoutTop !== undefined) {\r\n          scrollTo(acknowledgmentsLayoutTop);\r\n        }\r\n        return;\r\n      default:\r\n        return;\r\n    }\r\n  }, [scrollSection,\r\n    faqLayoutTop !== undefined &&\r\n    backgroundLayoutTop &&\r\n    glossaryLayoutTop &&\r\n    acknowledgmentsLayoutTop]);\r\n\r\n  // TODO: fix the padding hack (need to figure out why the\r\n  // KeyboardAvoidingScrollView pushed the content down/ won't\r\n  // scroll all the way)\r\n  return (\r\n    <View style={{paddingBottom: 50}}>\r\n      <Image\r\n        style={{width: 160, height: 34}}\r\n        source={LOGO} />\r\n      <Background onLayout={onLayout(setBackgroundLayoutTop)} />\r\n      <FAQ onLayout={onLayout(setFaqLayoutTop)} />\r\n      <Glossay onLayout={onLayout(setGlossaryLayoutTop)} />\r\n      <Acknowledgments onLayout={onLayout(setAcknowledgmentsLayoutTop)} />\r\n    </View>\r\n  );\r\n};\r\n\r\nInfo.propTypes = {\r\n  scrollTo: PropTypes.func,\r\n  scrollSection: PropTypes.string,\r\n};\r\n\r\nexport default Info;\r\n","import React from 'react';\r\nimport { StyleSheet, View, Platform } from 'react-native';\r\nimport { Text } from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport Flex from './Flex';\r\nimport ActionResponder from '../components/ActionResponder';\r\nimport colors from '../config/colors';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    height: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n      navigator.userAgent\r\n    )\r\n      ? 104\r\n      : 64,\r\n  },\r\n  body: {\r\n    padding: 12,\r\n  },\r\n  item: {\r\n    paddingTop: 12,\r\n    paddingLeft: 6,\r\n    paddingRight: 6,\r\n  },\r\n  text: {\r\n    fontSize: Platform.OS === 'web' ? 18 : undefined,\r\n  },\r\n  hilight: {\r\n    color: colors.white,\r\n    fontWeight: 'bold',\r\n  },\r\n  primary: {\r\n    color: colors.white,\r\n  },\r\n  disabled: {\r\n    borderColor: colors.lightGray,\r\n    color: colors.lightGray,\r\n  },\r\n});\r\n\r\nconst NavigationItem = ({ navigate, name, selected, disabled }) => {\r\n  const itemStyle = StyleSheet.flatten([\r\n    styles.item,\r\n    disabled && { cursor: 'not-allowed' },\r\n  ]);\r\n\r\n  const textStyle = StyleSheet.flatten([\r\n    styles.text,\r\n    selected ? styles.hilight : styles.primary,\r\n    disabled && styles.disabled,\r\n  ]);\r\n\r\n  let states = [];\r\n  if (disabled) {\r\n    states.push('disabled');\r\n  }\r\n  if (selected) {\r\n    states.push('selected');\r\n  }\r\n\r\n  if (states === []) {\r\n    states = undefined;\r\n  }\r\n\r\n  return (\r\n    <View style={styles.body}>\r\n      <ActionResponder\r\n        style={itemStyle}\r\n        onPress={navigate}\r\n        disabled={disabled}\r\n        accessibilityHint=\"Jump to section\"\r\n        accessibilityStates={states}\r\n      >\r\n        <Text style={textStyle}>{name}</Text>\r\n      </ActionResponder>\r\n    </View>\r\n  );\r\n};\r\n\r\nNavigationItem.propTypes = {\r\n  navigate: PropTypes.func,\r\n  name: PropTypes.string.isRequired,\r\n  selected: PropTypes.bool,\r\n  disabled: PropTypes.bool,\r\n};\r\n\r\nconst NavigationStrip = ({ getNavAreas, navigation }) => {\r\n  const navigationAreas = getNavAreas(navigation);\r\n\r\n  return (\r\n    <View style={styles.container}>\r\n      <Flex center>\r\n        {navigationAreas.length != 0 &&\r\n          navigationAreas.map((area, index) => (\r\n            <NavigationItem key={index} {...area} />\r\n          ))}\r\n      </Flex>\r\n    </View>\r\n  );\r\n};\r\n\r\nNavigationStrip.propTypes = {\r\n  getNavAreas: PropTypes.func.isRequired,\r\n  navigation: PropTypes.object,\r\n};\r\n\r\nconst injectNavAreas = (Component, getNavAreas) => {\r\n  const mergeProps = props =>\r\n    React.createElement(Component, Object.assign({ getNavAreas }, props));\r\n  return mergeProps;\r\n};\r\n\r\nconst InjectedNavigationStrip = injectNavAreas(NavigationStrip, nav => {\r\n  return nav.state.getSectionMap(nav.push.bind(nav));\r\n});\r\n\r\nexport default InjectedNavigationStrip;\r\n","import {createStackNavigator,\r\n  NavigationActions,\r\n  StackActions} from 'react-navigation';\r\n\r\nconst SEP_CHAR = '/';\r\n\r\nexport const NEXT = '@@next';\r\nexport const SECTION_HEAD = '@@section_head';\r\n\r\nconst getSectionName = (routeName) => {\r\n  if (!routeName) {\r\n    return '';\r\n  }\r\n\r\n  return routeName.split(SEP_CHAR).slice(0, -1).join(SEP_CHAR);\r\n};\r\n\r\nexport const createLinearNavigator = (screens, config, getState) => {\r\n  const stackScreens = {};\r\n  const headScreens = {};\r\n  const screenMap = {};\r\n  const headOrder = [];\r\n\r\n  let previousPath;\r\n  for (const group in screens) {\r\n    if (Object.prototype.hasOwnProperty.call(screens, group)) {\r\n      for (const entry of screens[group].screens) {\r\n        if (previousPath) screenMap[previousPath] = entry.path;\r\n        previousPath = entry.path;\r\n\r\n        if (screens[group].sectionLink && !headScreens[group]) {\r\n          headScreens[group] = entry;\r\n          headOrder.push(group);\r\n        }\r\n\r\n        entry.section = group;\r\n        entry.reviewable = screens[group].sectionLink;\r\n\r\n        stackScreens[entry.path] = entry;\r\n      }\r\n    }\r\n  }\r\n\r\n  const navigator = createStackNavigator(stackScreens, config);\r\n\r\n  let furthestSection = -1;\r\n  const getSectionMap = (currentSectionName) => (navigate) => {\r\n    return headOrder.map((header, index) => ({\r\n      name: header,\r\n      selected: currentSectionName === header,\r\n      disabled: index > furthestSection,\r\n      navigate: () => navigate(headScreens[header].path),\r\n    }));\r\n  };\r\n\r\n  let reviewingSection = '';\r\n  const reviewSection = (sectionName) => (navigate) => {\r\n    reviewingSection = sectionName;\r\n    navigate(headScreens[sectionName].path);\r\n  };\r\n\r\n  const addSectionState = (state, routeName) => {\r\n    if ( state && state.routes && state.routes.length) {\r\n      const route = state.routes[state.routes.length - 1];\r\n      const current = getSectionName(routeName || route.routeName);\r\n      route.getSectionMap = getSectionMap(current);\r\n      route.reviewSection = reviewSection;\r\n    }\r\n\r\n    return state;\r\n  };\r\n\r\n  const defaultGetStateForAction =\r\n    navigator.router.getStateForAction;\r\n\r\n  const getStateForActionWithSection = (action, state) => {\r\n    const defaultState = defaultGetStateForAction(action, state);\r\n    return addSectionState(defaultState, action.routeName);\r\n  };\r\n\r\n  const skipScreen = (screen) => {\r\n    if (!screen) {\r\n      return false;\r\n    }\r\n\r\n    if (reviewingSection !== '' &&\r\n      screen.reviewable &&\r\n      screen.section !== reviewingSection) {\r\n      return true;\r\n    }\r\n\r\n    if (screen.showScreen &&\r\n      !screen.showScreen(\r\n          screen.mapState(getState()))) {\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  };\r\n\r\n  const getSectionNumber = (routeName) => {\r\n    const sectionName = getSectionName(routeName);\r\n    const index = headOrder.findIndex((value) => value === sectionName);\r\n    return index;\r\n  };\r\n\r\n  const navigateNext = (action, state) => {\r\n    let curRoute = state.routes[state.routes.length - 1].routeName;\r\n    let curScreen;\r\n\r\n    do {\r\n      action.routeName = screenMap[curRoute];\r\n      curRoute = action.routeName;\r\n      curScreen = stackScreens[action.routeName];\r\n    } while (skipScreen(curScreen));\r\n\r\n    if (!curScreen || curScreen.section !== reviewingSection) {\r\n      reviewingSection = ''; // done reviewing\r\n    }\r\n\r\n    const index = getSectionNumber(action.routeName);\r\n    if (index > furthestSection) {\r\n      furthestSection = index;\r\n    }\r\n\r\n    return action.routeName ?\r\n      getStateForActionWithSection(action, state) : null;\r\n  };\r\n\r\n  const popToTop = (action, state) => {\r\n    furthestSection = -1;\r\n\r\n    return getStateForActionWithSection(action, state);\r\n  };\r\n\r\n  const pop = (action, state) => {\r\n    const newState = getStateForActionWithSection(action, state);\r\n    const furthest = Math.max(...newState.routes.map(\r\n        (route) => getSectionNumber(route.routeName)\r\n    ));\r\n\r\n    furthestSection = furthest;\r\n\r\n    return newState;\r\n  };\r\n\r\n  const navigateSectionHead = (action, state) => {\r\n    const headRoute = getSectionName(\r\n        state.routes[state.routes.length - 1].routeName\r\n    );\r\n\r\n    if (!headScreens[headRoute]) {\r\n      return null;\r\n    }\r\n\r\n    reviewingSection = '';\r\n\r\n    action.routeName = headScreens[headRoute].path;\r\n    return getStateForActionWithSection(action, state);\r\n  };\r\n\r\n  // Following pattern at: https://reactnavigation.org/docs/en/routers.html\r\n  navigator.router.getStateForAction = (action, state) => {\r\n    if (action.type === StackActions.POP_TO_TOP) {\r\n      return popToTop(action, state);\r\n    }\r\n\r\n    if (action.type === NavigationActions.BACK) {\r\n      return pop(action, state);\r\n    }\r\n\r\n    if (!state ||\r\n      !state.routes ||\r\n      !state.routes.length ||\r\n      (action.type !== NavigationActions.NAVIGATE\r\n        && action.type !== StackActions.PUSH)\r\n    ) {\r\n      return getStateForActionWithSection(action, state);\r\n    }\r\n\r\n    switch (action.routeName) {\r\n      case SECTION_HEAD:\r\n        return navigateSectionHead(action, state);\r\n      case NEXT:\r\n        return navigateNext(action, state);\r\n    }\r\n\r\n    if (action.routeName.endsWith(SEP_CHAR)) {\r\n      const newScreenRoute = headScreens[action.routeName.slice(0, -1)];\r\n      if (newScreenRoute && newScreenRoute.path) {\r\n        action.routeName = newScreenRoute.path;\r\n      }\r\n    }\r\n\r\n    return getStateForActionWithSection(action, state);\r\n  };\r\n\r\n  return navigator;\r\n};\r\n","import React, { useState } from 'react';\r\nimport { StyleSheet } from 'react-native';\r\nimport Link from '../components/Link';\r\nimport OverlayScroll from '../layout/OverlayScroll';\r\nimport Glossary from '../views/assessment/About/Glossary';\r\nimport colors from '../config/colors';\r\n\r\nconst styles = StyleSheet.create({\r\n  label: {\r\n    paddingRight: 8,\r\n    textDecorationLine: 'none',\r\n    fontWeight: 'bold',\r\n  },\r\n});\r\n\r\nconst RightHeader = ({ onGlossary }) => {\r\n  const [glossary, setGlossary] = useState(false);\r\n\r\n  return (\r\n    <React.Fragment>\r\n      <OverlayScroll\r\n        containerStyle={{ backgroundColor: colors.darkGray }}\r\n        isVisible={glossary}\r\n        onBackdropPress={() => setGlossary(false)}\r\n        onComplete={() => setGlossary(false)}\r\n        indicatorStyle=\"white\"\r\n        fullScreen\r\n      >\r\n        <Glossary />\r\n      </OverlayScroll>\r\n      <Link\r\n        style={styles.label}\r\n        onPress={() => onGlossary()}\r\n        accessibilityRole=\"button\"\r\n      >\r\n        Glossary\r\n      </Link>\r\n    </React.Fragment>\r\n  );\r\n};\r\n\r\nexport default RightHeader;\r\n","import React from 'react';\nimport { Platform } from 'react-native';\nimport { createLinearNavigator } from './linearNavigator';\nexport { NEXT, SECTION_HEAD } from './linearNavigator';\nimport leftHeaderHoc from './leftHeaderHoc';\nimport RightHeader from './RightHeader';\nimport makeScrollable from './makeScrollable';\nimport glossaryEvents from 'tiny-emitter/instance';\n\nconst SEP_CHAR = '/';\n\nconst tranformScreen = defaultVeraOptions => useLeftHeader => (\n  entry,\n  path,\n  group\n) => {\n  const veraOptions = Object.assign({}, defaultVeraOptions, entry.veraOptions);\n  const entryScreen = veraOptions.makeScrollable\n    ? makeScrollable(entry.screen)\n    : entry.screen;\n\n  const Screen = veraOptions.containerHoc\n    ? veraOptions.containerHoc(entryScreen, glossaryEvents)\n    : entryScreen;\n\n  return {\n    screen: Screen,\n    path,\n    navigationOptions:\n      entry.screen.navigationOptions ||\n      (({ navigation }) => ({\n        title: entry.title || group,\n        headerLeft: useLeftHeader ? leftHeaderHoc(navigation) : undefined,\n        headerRight: (\n          <RightHeader\n            onGlossary={() => glossaryEvents.emit('showGlossary', true)}\n          />\n        ),\n        headerBackTitle: Platform.OS === 'ios' ? 'Back' : ' ',\n      })),\n    mapState: veraOptions.mapStateHoc(entry.screen),\n    showScreen: entry.screen.showScreen,\n  };\n};\n\nexport const createVeraNavigator = (screens, config, getState) => {\n  const transformed = {};\n  const { defaultVeraOptions, ...remainingConfig } = config;\n  let initialRouteName;\n\n  const transform = tranformScreen(defaultVeraOptions);\n  let currentTransform = transform(true);\n  for (const group of screens) {\n    for (const entry of group.screens) {\n      const path = `${group.name}${SEP_CHAR}${entry.name}`;\n\n      const screenConfig = currentTransform(entry, path, group.name);\n\n      if (!initialRouteName) {\n        initialRouteName = path;\n        currentTransform = transform(false);\n      }\n\n      if (!transformed[group.name]) {\n        transformed[group.name] = {\n          screens: [],\n          sectionLink: group.sectionLink !== false,\n        };\n      }\n\n      transformed[group.name].screens.push(screenConfig);\n    }\n  }\n\n  const composedConfig = Object.assign(\n    {},\n    { initialRouteName },\n    remainingConfig\n  );\n\n  const navigator = createLinearNavigator(\n    transformed,\n    composedConfig,\n    getState\n  );\n\n  return navigator;\n};\n","import React, {useState} from 'react';\r\nimport {Text, StyleSheet, View, ViewPropTypes} from 'react-native';\r\nimport Link from '../components/Link';\r\nimport {customStyles} from '../config/Styles';\r\nimport PropTypes from 'prop-types';\r\nimport OverlayScroll from '../layout/OverlayScroll';\r\nimport colors from '../config/colors';\r\nimport Paragraph from '../layout/Paragraph';\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    height: 300,\r\n  },\r\n  largeContainer: {\r\n    height: 400,\r\n  },\r\n  body: {\r\n    flex: 1,\r\n    flexDirection: 'column',\r\n    justifyContent: 'space-around',\r\n    alignItems: 'center',\r\n  },\r\n  header: {\r\n    flexShrink: 1,\r\n  },\r\n  subHeader: {\r\n    flexShrink: 1,\r\n  },\r\n  privacy: {\r\n    fontSize: 14,\r\n  },\r\n  buttons: {},\r\n});\r\n\r\nconst Question = (props) => {\r\n  const {\r\n    children,\r\n    title,\r\n    subTitle,\r\n    containerStyle,\r\n    bodyStyle,\r\n    headerStyle,\r\n    subHeaderStyle,\r\n    buttonGroupStyle,\r\n    privacyNote,\r\n  } = props;\r\n\r\n  const computedContainerStyle = StyleSheet.flatten([\r\n    subTitle || privacyNote ? styles.largeContainer : styles.container,\r\n    containerStyle,\r\n  ]);\r\n\r\n  const computedBodyStyle = StyleSheet.flatten([styles.body, bodyStyle]);\r\n\r\n  const computedHeaderStyle = StyleSheet.flatten([styles.header, headerStyle]);\r\n\r\n  const computedButtonGroupStyle = StyleSheet.flatten([\r\n    styles.buttons,\r\n    buttonGroupStyle,\r\n  ]);\r\n\r\n  const computedSubHeaderStyle = StyleSheet.flatten([\r\n    styles.subHeader,\r\n    subHeaderStyle,\r\n  ]);\r\n\r\n  const [showHelp, setShowHelp] = useState(false);\r\n\r\n  return (\r\n    <View style={computedContainerStyle}>\r\n      <OverlayScroll\r\n        title='Privacy'\r\n        completeTitle='Done'\r\n        onComplete={() => setShowHelp(false)}\r\n        onBackdropPress={() => setShowHelp(false)}\r\n        isVisible={showHelp}\r\n        containerStyle={{\r\n          padding: 20,\r\n          backgroundColor: colors.darkGray,\r\n        }}\r\n        headerStyle={{\r\n          color: 'white',\r\n        }}\r\n      >\r\n        <Paragraph style={{color: 'white'}}>\r\n          Your privacy is a top priority. Any information provided to the\r\n          calculator will only be used to determine a person&apos;s ability to\r\n          pay bail. The data will not be saved. Once you close out of the app,\r\n          your data is erased.\r\n        </Paragraph>\r\n      </OverlayScroll>\r\n\r\n      <View style={computedBodyStyle}>\r\n        <View style={computedHeaderStyle}>\r\n          <Text style={customStyles.headerText} accessibilityRole='header'>\r\n            {title}\r\n          </Text>\r\n        </View>\r\n        {subTitle && (\r\n          <View style={computedSubHeaderStyle}>\r\n            <Text style={customStyles.secondaryText}>{subTitle}</Text>\r\n          </View>\r\n        )}\r\n        <View style={computedButtonGroupStyle}>{children}</View>\r\n        <View accessibilityViewIsModal={showHelp} style={{paddingTop: 10}}>\r\n          {privacyNote && (\r\n            <Link style={styles.privacy} onPress={() => setShowHelp(true)}>\r\n              Is this private?\r\n            </Link>\r\n          )}\r\n        </View>\r\n      </View>\r\n    </View>\r\n  );\r\n};\r\n\r\nQuestion.propTypes = {\r\n  children: PropTypes.node.isRequired,\r\n  title: PropTypes.string.isRequired,\r\n  subTitle: PropTypes.string,\r\n  style: ViewPropTypes.style,\r\n  containerStyle: ViewPropTypes.style,\r\n  bodyStyle: ViewPropTypes.style,\r\n  headerStyle: ViewPropTypes.style,\r\n  subHeaderStyle: ViewPropTypes.style,\r\n  buttonGroupStyle: ViewPropTypes.style,\r\n  privacyNote: PropTypes.bool,\r\n};\r\n\r\nexport default Question;\r\n","import React, { useState } from 'react';\r\nimport {StyleSheet, ViewPropTypes} from 'react-native';\r\nimport {Button} from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport colors from '../config/colors';\r\n\r\nconst styles = StyleSheet.create({\r\n  button: {\r\n    margin: 10,\r\n    height: 50,\r\n    width: 120,\r\n    alignSelf: 'center',\r\n  },\r\n  primary: {\r\n    backgroundColor: 'white',\r\n    borderColor: colors.primary,\r\n  },\r\n  title: {\r\n    fontWeight: 'bold',\r\n    color: colors.darkGray,\r\n  },\r\n  no: {\r\n    backgroundColor: 'white',\r\n    borderColor: colors.primary,\r\n  },\r\n});\r\n\r\nconst VeraButton = (props) => {\r\n  const {secondary, style, onPress, disabled, ...remaining} = props;\r\n  const [disableOverride, setOverride] = useState(false)\r\n\r\n  const handleOnPress = (event) => {\r\n    setTimeout(() => setOverride(false), 500)\r\n    setOverride(true)  \r\n    onPress(event);\r\n  }\r\n  const computedButtonStyle = StyleSheet.flatten([\r\n    styles.button,\r\n    secondary ? styles.no : styles.primary,\r\n    style,\r\n  ]);\r\n\r\n  const computedTitleStyle = StyleSheet.flatten([\r\n    styles.title,\r\n  ]);\r\n\r\n  const states = props.disabled ? ['disabled'] : undefined;\r\n\r\n  return (\r\n    <Button\r\n      type={secondary ? 'outline' : 'solid' }\r\n      buttonStyle={computedButtonStyle}\r\n      titleStyle={computedTitleStyle}\r\n      accessibilityRole='button'\r\n      disabled={disabled || disableOverride}\r\n      onPress={handleOnPress}\r\n      accessibilityStates={states}\r\n      {...remaining} />\r\n  );\r\n};\r\n\r\nVeraButton.propTypes = {\r\n  secondary: PropTypes.bool,\r\n  style: ViewPropTypes.style,\r\n  disabled: PropTypes.bool,\r\n};\r\n\r\nVeraButton.propDefaults = {\r\n  secondary: false,\r\n};\r\n\r\nexport default VeraButton;\r\n\r\nexport const YesButton = (props) => (\r\n  <VeraButton title='Yes' {...props} />\r\n);\r\n\r\nexport const NoButton = (props) => (\r\n  <VeraButton secondary title='No' {...props} />\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Question from './Question';\r\nimport {YesButton, NoButton} from './VeraButton';\r\n\r\nconst YesNoQuestion = ({onYes, onNo, ...remaining}) => {\r\n  return (\r\n    <Question {...remaining}>\r\n      <YesButton\r\n        onPress={onYes}\r\n      />\r\n      <NoButton\r\n        onPress={onNo}\r\n      />\r\n    </Question>\r\n  );\r\n};\r\n\r\nYesNoQuestion.propTypes = {\r\n  onYes: PropTypes.func,\r\n  onNo: PropTypes.func,\r\n};\r\n\r\nexport default YesNoQuestion;\r\n","\r\nimport {Platform} from 'react-native';\r\n\r\nexport const TOP_CHARGE_FELONY = 'top-charge-felony';\r\n\r\nexport const HOURS_WORKED = 'hours-worked';\r\nexport const INCOME_RATE = 'income-rate';\r\nexport const INCOME_TOTAL = 'income-total';\r\nexport const SELECTED_TYPE = 'selected-type';\r\nexport const RECEIVE_ASSETS = 'receive-assets';\r\nexport const RECEIVE_BENEFITS = 'receive-benefits';\r\nexport const RECEIVE_EXPENSES = 'receive-expenses';\r\nexport const RECEIVE_INCOME = 'receive-income';\r\nexport const EXPECT_INCOME = 'expect-income';\r\n\r\nexport const ASSETS_CASH_HOME_VALUE = 'assets-cash-home-value';\r\nexport const ASSETS_CASH_PERSON_VALUE = 'assets-cash-person-value';\r\nexport const ASSETS_CHECKING_VALUE = 'assets-checking-value';\r\nexport const ASSETS_CREDIT_VALUE= 'assets-credit-value';\r\nexport const ASSETS_SAVINGS_VALUE = 'assets-savings-value';\r\nexport const ASSETS_TOTAL = 'assets-total';\r\n\r\nexport const BENEFITS_TANF_VALUE = 'benefits-tanf';\r\nexport const BENEFITS_UNEMPLOYMENT_VALUE = 'benefits-unemployment';\r\nexport const BENEFITS_SSI_VALUE = 'benefits-ssi';\r\nexport const BENEFITS_SSD_VALUE = 'benefits-ssd';\r\nexport const BENEFITS_SS_VALUE = 'benefits-ss';\r\nexport const BENEFITS_OTHER_VALUE = 'benefits-other';\r\nexport const BENEFITS_TOTAL = 'benefits-total';\r\nexport const EXPECT_BENEFITS = 'expect-benefits';\r\n\r\nexport const EXPENSES_HOUSING_VALUE = 'expenses-housing-value';\r\nexport const EXPENSES_ELECTRIC_GAS_VALUE = 'expenses-electric-gas-value';\r\nexport const EXPENSES_FOOD_VALUE = 'expenses-food-value';\r\nexport const EXPENSES_TRANSPORTATION_VALUE = 'expenses-transportation-value';\r\nexport const EXPENSES_PHONE_VALUE = 'expenses-phone-value';\r\nexport const EXPENSES_INTERNET_TV_VALUE = 'expenses-internet-tv-value';\r\nexport const EXPENSES_LOANS_VALUE = 'expenses-loans-value';\r\nexport const EXPENSES_CHILD_VALUE = 'expenses-child-value';\r\nexport const EXPENSES_MEDICAL_VALUE = 'expenses-medical-value';\r\nexport const EXPENSES_OTHER_VALUE = 'expenses-other-value';\r\nexport const EXPENSES_TOTAL = 'expenses-total';\r\n\r\nexport const DISPOSABLE_INCOME = 'disposable-income';\r\nexport const INCOME_FACTOR = 'income-factor';\r\nexport const CASH_FACTOR = 'cash-factor';\r\nexport const CASH_RECCOMENDATION = 'case-reccomendation';\r\nexport const PARTIALLY_SECURED = 'patially-secured';\r\nexport const CREDIT_RECCOMENDATION = 'credit-reccomendation';\r\nexport const CREDIT_FACTOR = 'credit-factor';\r\n\r\nif (Platform.OS === 'android') {\r\n  require('intl');\r\n  require('intl/locale-data/jsonp/en-US');\r\n}\r\n\r\nconst getLocale = () => {\r\n  if (Platform.OS === 'android') {\r\n    return 'en-US'; // only supporting en-US for android\r\n  }\r\n\r\n  return undefined;\r\n};\r\n\r\nconst formatter =\r\n  new Intl.NumberFormat(getLocale(), {style: 'currency', currency: 'USD'});\r\n\r\nexport const toCurrency = (number) => {\r\n  return formatter.format(number);\r\n};\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {RECEIVE_ASSETS} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst AssetsHead = (props) => {\r\n  const [, setReceiveAssets] = useReduxState(RECEIVE_ASSETS);\r\n  return (\r\n    <YesNoQuestion\r\n      // eslint-disable-next-line max-len\r\n      title=\"Do you have money in a savings or checking account, cash at home, cash in pocket, or a credit card?\"\r\n      onYes={() => {\r\n        setReceiveAssets(true);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setReceiveAssets(false);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n    />\r\n  );\r\n};\r\n\r\nAssetsHead.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default AssetsHead;\r\n","import {useState} from 'react';\r\n\r\n\r\nconst useErrorState = (fields) => {\r\n  const setValueMap = {};\r\n  const valueMap = {};\r\n\r\n  let hasError = false;\r\n  for (const field of fields) {\r\n    const [value, setValue] = useState(false);\r\n    setValueMap[field] = setValue;\r\n    valueMap[field] = value;\r\n\r\n    hasError = hasError || value;\r\n  }\r\n\r\n  const setFieldError = (field) => (value) => setValueMap[field](value);\r\n\r\n  return [valueMap, setFieldError, hasError];\r\n};\r\n\r\nexport default useErrorState;\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport { StyleSheet, Text, ViewPropTypes, Platform } from 'react-native';\r\nimport { Input } from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport colors from '../config/colors';\r\n\r\nconst defaultInputColor = colors.darkGray;\r\nconst styles = StyleSheet.create({\r\n  errorStyle: {},\r\n  inputStyle: {\r\n    textAlign: 'center',\r\n    color: defaultInputColor,\r\n    width: '100%',\r\n  },\r\n});\r\n\r\nconst defaultErrorMessage = 'Invalid amount';\r\n\r\nconst currencyRegEx = /^\\d+(\\.\\d{2})?$/;\r\n\r\nconst CurrencyInput = React.forwardRef((props, ref) => {\r\n  const {\r\n    onChangeText,\r\n    onError,\r\n    inputStyle,\r\n    inputContainerStyle,\r\n    errorStyle,\r\n    errorMessage,\r\n    color,\r\n    placeholderTextColor,\r\n    perMonth,\r\n    ...remaining\r\n  } = props;\r\n\r\n  const [hasError, setHasError] = useState(false);\r\n\r\n  const onValidateChangeText = useCallback(\r\n    text => {\r\n      setHasError(text && !text.match(currencyRegEx));\r\n      return onChangeText && onChangeText(text);\r\n    },\r\n    [currencyRegEx, onChangeText]\r\n  );\r\n\r\n  useEffect(() => {\r\n    onError && onError(hasError);\r\n  }, [hasError]);\r\n\r\n  const computedInputStyle = StyleSheet.flatten([\r\n    styles.inputStyle,\r\n    inputStyle,\r\n    color && { color: color },\r\n  ]);\r\n\r\n  const computedInputContainerStyle = StyleSheet.flatten([\r\n    inputContainerStyle,\r\n    hasError && { borderColor: colors.veraRed },\r\n  ]);\r\n\r\n  const computedErrorStyle = StyleSheet.flatten([\r\n    styles.errorStyle,\r\n    errorStyle,\r\n  ]);\r\n\r\n  const computedErrorMessage = errorMessage || defaultErrorMessage;\r\n  const placeholder = perMonth ? '0.00 per month' : '0.00';\r\n\r\n  return (\r\n    <Input\r\n      ref={ref}\r\n      errorMessage={hasError ? computedErrorMessage : undefined}\r\n      errorStyle={computedErrorStyle}\r\n      placeholder={placeholder}\r\n      returnKeyType=\"done\"\r\n      keyboardType={Platform.OS === 'web' ? undefined : 'decimal-pad'}\r\n      autoCorrect={false}\r\n      inputStyle={computedInputStyle}\r\n      inputContainerStyle={computedInputContainerStyle}\r\n      onChangeText={onValidateChangeText}\r\n      placeholderTextColor={placeholderTextColor || color || defaultInputColor}\r\n      {...remaining}\r\n    />\r\n  );\r\n});\r\n\r\nCurrencyInput.displayName = 'CurrencyInput';\r\n\r\nCurrencyInput.propTypes = {\r\n  onChangeText: PropTypes.func,\r\n  onError: PropTypes.func,\r\n  inputStyle: Text.propTypes.style,\r\n  inputContainerStyle: ViewPropTypes.style,\r\n  errorMessage: PropTypes.string,\r\n  errorStyle: Text.propTypes.style,\r\n  color: PropTypes.string,\r\n  placeholderTextColor: PropTypes.string,\r\n  perMonth: PropTypes.bool,\r\n};\r\n\r\nCurrencyInput.defaultProps = {\r\n  perMonth: true,\r\n};\r\n\r\nexport default CurrencyInput;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { StyleSheet, View, Platform } from 'react-native';\r\nimport { CheckBox } from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport { customStyles } from '../config/Styles';\r\nimport colors from '../config/colors';\r\nimport LabelIcon from './LabelIcon';\r\nimport OverlayScroll from '../layout/OverlayScroll';\r\nimport Paragraph from '../layout/Paragraph';\r\nimport CurrencyInput from './CurrencyInput';\r\n\r\nconst OptionalInput = props => {\r\n  const {\r\n    title,\r\n    defaultChecked,\r\n    fullScreen,\r\n    helpText,\r\n    helpTitle,\r\n    onChangeText,\r\n    ...remaining\r\n  } = props;\r\n\r\n  const [checked, setChecked] = useState(Boolean(defaultChecked));\r\n  const [focused, setFocused] = useState(false);\r\n\r\n  const ref = useRef();\r\n\r\n  const handlePress = () => {\r\n    setChecked(!checked);\r\n    setFocused(!checked);\r\n  };\r\n\r\n  const styles = StyleSheet.create({\r\n    container: {\r\n      flexDirection: 'row',\r\n      alignItems: 'center',\r\n      backgroundColor: colors.darkGray,\r\n    },\r\n    inputContainer: {\r\n      backgroundColor: colors.white,\r\n      marginLeft: '15%',\r\n      marginRight: '15%',\r\n      marginTop: 10,\r\n      marginBottom: 10,\r\n    },\r\n    errorStyle: {\r\n      marginLeft: '15%',\r\n      marginRight: '15%',\r\n      color: colors.error,\r\n      borderColor: 'white',\r\n    },\r\n  });\r\n\r\n  const [showHelp, setShowHelp] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (focused) {\r\n      ref.current.focus();\r\n    }\r\n  }, [focused]);\r\n\r\n  useEffect(() => {\r\n    if (!checked) {\r\n      onChangeText('');\r\n    }\r\n  }, [checked]);\r\n\r\n  return (\r\n    <View>\r\n      {helpTitle && (\r\n        <OverlayScroll\r\n          title={helpTitle}\r\n          completeTitle=\"Done\"\r\n          onComplete={() => setShowHelp(false)}\r\n          onBackdropPress={() => setShowHelp(false)}\r\n          isVisible={showHelp}\r\n          containerStyle={{\r\n            padding: 20,\r\n            backgroundColor:\r\n              Platform.OS === 'web' ? '#373737' : colors.darkGray,\r\n          }}\r\n          headerStyle={{\r\n            color: 'white',\r\n          }}\r\n        >\r\n          <Paragraph style={{ color: 'white' }}>{helpText}</Paragraph>\r\n        </OverlayScroll>\r\n      )}\r\n      <View style={styles.container}>\r\n        <CheckBox\r\n          accessibilityHint={`checkbox is ${checked ? 'checked' : 'unchecked'}`}\r\n          containerStyle={customStyles.optionalCheck}\r\n          checked={checked}\r\n          checkedColor={colors.darkGray}\r\n          onPress={handlePress}\r\n          textStyle={{ marginRight: 16 }}\r\n          title={title}\r\n        />\r\n        {helpTitle && helpText && (\r\n          <LabelIcon\r\n            accessibilityLabel=\"help\"\r\n            accessibilityHint={`what is '${title}'?`}\r\n            name=\"help\"\r\n            size={20}\r\n            color={colors.white}\r\n            onPress={() => setShowHelp(true)}\r\n          />\r\n        )}\r\n      </View>\r\n      {checked && (\r\n        <CurrencyInput\r\n          inputContainerStyle={styles.inputContainer}\r\n          errorStyle={styles.errorStyle}\r\n          ref={ref}\r\n          onChangeText={onChangeText}\r\n          placeholderTextColor={colors.lightGray}\r\n          {...remaining}\r\n          {...(Platform.OS !== 'web'\r\n            ? { accessibilityHint: `Enter value for field: ${title}` }\r\n            : {})}\r\n        />\r\n      )}\r\n    </View>\r\n  );\r\n};\r\n\r\nOptionalInput.propTypes = {\r\n  title: PropTypes.string,\r\n  defaultChecked: PropTypes.bool,\r\n  helpText: PropTypes.string,\r\n  helpTitle: PropTypes.string,\r\n  onChangeText: PropTypes.func,\r\n};\r\n\r\nexport default OptionalInput;\r\n","import React, {useState} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport OptionalInput from './OptioinalInput';\r\n\r\nconst HookedOptionalInput = ({hook, ...remainder}) => {\r\n  const [value, setValue] = useState(\r\n    hook[0] === undefined ? '' : hook[0].toString()\r\n  );\r\n\r\n  return (\r\n    <OptionalInput\r\n      defaultChecked={Boolean(hook[0])}\r\n      value={value}\r\n      onChangeText={\r\n        (text) => {\r\n          const parsed = Number(text);\r\n          hook[1](isNaN(parsed) ? undefined : parsed);\r\n          setValue(text);\r\n        }\r\n      }\r\n      {...remainder}\r\n    />\r\n  );\r\n};\r\n\r\nHookedOptionalInput.propTypes = {\r\n  hook: PropTypes.array,\r\n};\r\n\r\nexport default HookedOptionalInput;\r\n","import React from 'react';\r\nimport {Text, View, ViewPropTypes} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport Button from '../../components/VeraButton';\r\nimport {customStyles} from '../../config/Styles';\r\nimport useErrorState from '../../hooks/useErrorState';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport HookedOptionalInput from '../../components/HookedOptionalInput';\r\nimport InputScroll from '../../components/InputScroll';\r\nimport {RECEIVE_ASSETS,\r\n  ASSETS_CASH_HOME_VALUE,\r\n  ASSETS_CASH_PERSON_VALUE,\r\n  ASSETS_CHECKING_VALUE,\r\n  ASSETS_CREDIT_VALUE,\r\n  ASSETS_SAVINGS_VALUE,\r\n} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst AssetsInput = ({navigation, style}) => {\r\n  const hooks = {\r\n    [ASSETS_CASH_HOME_VALUE]: useReduxState(ASSETS_CASH_HOME_VALUE, false),\r\n    [ASSETS_CASH_PERSON_VALUE]: useReduxState(ASSETS_CASH_PERSON_VALUE, false),\r\n    [ASSETS_CHECKING_VALUE]: useReduxState(ASSETS_CHECKING_VALUE, false),\r\n    [ASSETS_CREDIT_VALUE]: useReduxState(ASSETS_CREDIT_VALUE, false),\r\n    [ASSETS_SAVINGS_VALUE]: useReduxState(ASSETS_SAVINGS_VALUE, false),\r\n  };\r\n\r\n  const [, setFieldError, hasError] = useErrorState([\r\n    ASSETS_CASH_HOME_VALUE,\r\n    ASSETS_CASH_PERSON_VALUE,\r\n    ASSETS_CHECKING_VALUE,\r\n    ASSETS_CREDIT_VALUE,\r\n    ASSETS_SAVINGS_VALUE,\r\n  ]);\r\n\r\n  return (\r\n    <View style={style}>\r\n      <View style={customStyles.header}>\r\n        <Text\r\n          accessibilityRole='header'\r\n          style={customStyles.headerText}>\r\n        Which assets do you have?\r\n        </Text>\r\n      </View>\r\n      <InputScroll>\r\n        <HookedOptionalInput\r\n          key={ASSETS_CHECKING_VALUE}\r\n          title='A checking account'\r\n          onError={setFieldError(ASSETS_CHECKING_VALUE)}\r\n          hook={hooks[ASSETS_CHECKING_VALUE]}\r\n          perMonth={false}\r\n        />\r\n        <HookedOptionalInput\r\n          key={ASSETS_SAVINGS_VALUE}\r\n          title='A savings account'\r\n          onError={setFieldError(ASSETS_SAVINGS_VALUE)}\r\n          hook={hooks[ASSETS_SAVINGS_VALUE]}\r\n          perMonth={false}\r\n        />\r\n        <HookedOptionalInput\r\n          key={ASSETS_CASH_HOME_VALUE}\r\n          title='Cash at home'\r\n          onError={setFieldError(ASSETS_CASH_HOME_VALUE)}\r\n          hook={hooks[ASSETS_CASH_HOME_VALUE]}\r\n          perMonth={false}\r\n        />\r\n        <HookedOptionalInput\r\n          key={ASSETS_CASH_PERSON_VALUE}\r\n          title='Cash in your pocket'\r\n          onError={setFieldError(ASSETS_CASH_PERSON_VALUE)}\r\n          hook={hooks[ASSETS_CASH_PERSON_VALUE]}\r\n          perMonth={false}\r\n        />\r\n        <HookedOptionalInput\r\n          key={ASSETS_CREDIT_VALUE}\r\n          title='A credit card'\r\n          onError={setFieldError(ASSETS_CREDIT_VALUE)}\r\n          hook={hooks[ASSETS_CREDIT_VALUE]}\r\n          perMonth={false}\r\n        />\r\n      </InputScroll>\r\n      <Button\r\n        secondary\r\n        title='Select'\r\n        disabled={hasError}\r\n        onPress={() => navigation.push(NEXT)} />\r\n    </View>\r\n  );\r\n};\r\n\r\nAssetsInput.useFields = [\r\n  RECEIVE_ASSETS,\r\n];\r\n\r\nAssetsInput.showScreen = (props) => props[RECEIVE_ASSETS];\r\n\r\nAssetsInput.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.punc,\r\n  }),\r\n  style: ViewPropTypes.style,\r\n};\r\n\r\nexport default AssetsInput;\r\n","import React from 'react';\r\nimport {NEXT, SECTION_HEAD} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {\r\n  RECEIVE_ASSETS,\r\n  ASSETS_CASH_HOME_VALUE,\r\n  ASSETS_CASH_PERSON_VALUE,\r\n  ASSETS_CHECKING_VALUE,\r\n  ASSETS_CREDIT_VALUE,\r\n  ASSETS_SAVINGS_VALUE,\r\n  ASSETS_TOTAL,\r\n  toCurrency,\r\n} from '../../sharedFields';\r\nimport {useReduxMemo} from '../../veraRedux';\r\n\r\nconst AssetsSummary = (props) => {\r\n  const assets = [\r\n    ASSETS_CASH_HOME_VALUE,\r\n    ASSETS_CASH_PERSON_VALUE,\r\n    ASSETS_CHECKING_VALUE,\r\n    ASSETS_SAVINGS_VALUE,\r\n  ];\r\n\r\n  const assetsTotal = useReduxMemo(\r\n      ASSETS_TOTAL,\r\n      (getField) => {\r\n        if (!getField(RECEIVE_ASSETS)) {\r\n          return 0;\r\n        }\r\n\r\n        const total = assets.reduce(\r\n            (total, field) => {\r\n              return total + (getField(field) || 0);\r\n            }, 0\r\n        );\r\n        return total;\r\n      },\r\n      [...assets, RECEIVE_ASSETS]);\r\n\r\n  const text =\r\n    `You have ${toCurrency(assetsTotal)} in assets,\r\nand ${toCurrency(props[ASSETS_CREDIT_VALUE])} in credit. `;\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title={text}\r\n      subTitle=\"Does this sound right?\"\r\n      onYes={() => {\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        props.navigation.navigate(SECTION_HEAD);\r\n      }} />\r\n  );\r\n};\r\n\r\nAssetsSummary.useFields = [\r\n  RECEIVE_ASSETS,\r\n  ASSETS_CREDIT_VALUE,\r\n];\r\n\r\nAssetsSummary.showScreen = (props) => props[RECEIVE_ASSETS];\r\n\r\nAssetsSummary.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default AssetsSummary;\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport {RECEIVE_BENEFITS, EXPECT_BENEFITS} from '../../sharedFields';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst BenefitHead = (props) => {\r\n  const [, setReceiveBenefits] = useReduxState(RECEIVE_BENEFITS);\r\n  const [, setExpectBenefits] = useReduxState(EXPECT_BENEFITS);\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title=\"Do you currently receive income from benefits?\"\r\n      onYes={() => {\r\n        setReceiveBenefits(true);\r\n        setExpectBenefits(false);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setReceiveBenefits(false);\r\n        props.navigation.push(NEXT);\r\n      }} />\r\n  );\r\n};\r\n\r\nBenefitHead.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default BenefitHead;\r\n","/* eslint-disable max-len */\r\n\r\nexport const TANF = {\r\n  title: 'Cash Assistance',\r\n  text: 'Cash benefits provided by the government. Examples include Temporary Assistance for Needy Families (TANF) and Safety Net Assistance (SNA).',\r\n};\r\n\r\nexport const UNEMPLOYMENT = {\r\n  title: 'Unemployment',\r\n  text: 'Benefits paid as a result of unemployment.',\r\n};\r\n\r\nexport const SS = {\r\n  title: 'Social Security Income',\r\n  text: 'Benefits paid to people who are retired.',\r\n};\r\n\r\nexport const SSD = {\r\n  title: 'Social Security Disability',\r\n  text: 'Benefits paid to people who have a disability that prevents them from working before reaching retirement age.',\r\n};\r\n\r\nexport const SSI = {\r\n  title: 'Supplemental Security Income',\r\n  text: 'Benefits paid to people with limited income who are older than 65, blind, or disabled.',\r\n};\r\n\r\nexport const UNSECURED_BOND = {\r\n  title: 'Unsecured Bond',\r\n  text: 'Unsecured bond with no payment to the court.',\r\n};\r\n\r\nexport const PARTIALLY_SECURED_BOND = {\r\n  title: 'Partially Secured Bond',\r\n  text: 'Partially secured with 10% payment to the court.',\r\n};\r\n\r\nexport const OTHER = {\r\n  title: 'Other Benefits',\r\n  text: 'Any other public benefits for which you receive cash or a check.',\r\n};\r\n\r\n","import React from 'react';\r\nimport {Text, View, ViewPropTypes} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport {customStyles} from '../../config/Styles';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport VeraButton from '../../components/VeraButton';\r\nimport * as helpText from '../../config/helpText';\r\nimport useErrorState from '../../hooks/useErrorState';\r\nimport {\r\n  EXPECT_BENEFITS,\r\n  RECEIVE_BENEFITS,\r\n  BENEFITS_OTHER_VALUE,\r\n  BENEFITS_SS_VALUE,\r\n  BENEFITS_SSD_VALUE,\r\n  BENEFITS_SSI_VALUE,\r\n  BENEFITS_TANF_VALUE,\r\n  BENEFITS_UNEMPLOYMENT_VALUE,\r\n} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\nimport HookedOptionalInput from '../../components/HookedOptionalInput';\r\nimport InputScroll from '../../components/InputScroll';\r\n\r\nconst BenefitsInput = ({navigation, style, ...props}) => {\r\n  const hooks = {\r\n    [BENEFITS_OTHER_VALUE]: useReduxState(BENEFITS_OTHER_VALUE),\r\n    [BENEFITS_SS_VALUE]: useReduxState(BENEFITS_SS_VALUE),\r\n    [BENEFITS_SSD_VALUE]: useReduxState(BENEFITS_SSD_VALUE),\r\n    [BENEFITS_SSI_VALUE]: useReduxState(BENEFITS_SSI_VALUE),\r\n    [BENEFITS_TANF_VALUE]: useReduxState(BENEFITS_TANF_VALUE),\r\n    [BENEFITS_UNEMPLOYMENT_VALUE]:\r\n      useReduxState(BENEFITS_UNEMPLOYMENT_VALUE),\r\n  };\r\n\r\n  const [, setFieldError, hasError] = useErrorState([\r\n    BENEFITS_OTHER_VALUE,\r\n    BENEFITS_SS_VALUE,\r\n    BENEFITS_SSD_VALUE,\r\n    BENEFITS_SSI_VALUE,\r\n    BENEFITS_TANF_VALUE,\r\n    BENEFITS_UNEMPLOYMENT_VALUE,\r\n  ]);\r\n\r\n  const will = props[EXPECT_BENEFITS] ? 'will' : 'do';\r\n  return (\r\n    <View style={style}>\r\n      <View style={customStyles.header}>\r\n        <Text\r\n          accessibilityRole='header'\r\n          style={customStyles.headerText}>\r\n          Which benefits {will} you receive?\r\n        </Text>\r\n      </View>\r\n      <InputScroll>\r\n        <HookedOptionalInput\r\n          key={BENEFITS_TANF_VALUE}\r\n          title='Cash assistance, like TANF'\r\n          helpText={helpText.TANF.text}\r\n          helpTitle={helpText.TANF.title}\r\n          onError={setFieldError(BENEFITS_TANF_VALUE)}\r\n          hook={hooks[BENEFITS_TANF_VALUE]}\r\n        />\r\n\r\n        <HookedOptionalInput\r\n          key={BENEFITS_UNEMPLOYMENT_VALUE}\r\n          title='Unemployment income'\r\n          helpText={helpText.UNEMPLOYMENT.text}\r\n          helpTitle={helpText.UNEMPLOYMENT.title}\r\n          onError={setFieldError(BENEFITS_UNEMPLOYMENT_VALUE)}\r\n          hook={hooks[BENEFITS_UNEMPLOYMENT_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={BENEFITS_SSI_VALUE}\r\n          title='Supplemental Security Income (SSI)'\r\n          helpText={helpText.SSI.text}\r\n          helpTitle={helpText.SSI.title}\r\n          onError={setFieldError(BENEFITS_SSI_VALUE)}\r\n          hook={hooks[BENEFITS_SSI_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={BENEFITS_SSD_VALUE}\r\n          title='Social Security Disability (SSD/SSDI)'\r\n          helpText={helpText.SSD.text}\r\n          helpTitle={helpText.SSD.title}\r\n          onError={setFieldError(BENEFITS_SSD_VALUE)}\r\n          hook={hooks[BENEFITS_SSD_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={BENEFITS_SS_VALUE}\r\n          title='Social Security'\r\n          helpText={helpText.SS.text}\r\n          helpTitle={helpText.SS.title}\r\n          onError={setFieldError(BENEFITS_SS_VALUE)}\r\n          hook={hooks[BENEFITS_SS_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={BENEFITS_OTHER_VALUE}\r\n          helpText={helpText.OTHER.text}\r\n          helpTitle={helpText.OTHER.title}\r\n          onError={setFieldError(BENEFITS_OTHER_VALUE)}\r\n          title='Other income from benefits'\r\n          hook={hooks[BENEFITS_OTHER_VALUE]}\r\n        />\r\n      </InputScroll>\r\n      <VeraButton\r\n        secondary\r\n        title='Select'\r\n        disabled={hasError}\r\n        onPress={() => navigation.push(NEXT)} />\r\n    </View>\r\n  );\r\n};\r\n\r\nBenefitsInput.useFields = [\r\n  EXPECT_BENEFITS,\r\n  RECEIVE_BENEFITS,\r\n];\r\n\r\nBenefitsInput.showScreen =\r\n  (props) => props[RECEIVE_BENEFITS] || props[EXPECT_BENEFITS];\r\n\r\nBenefitsInput.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n  style: ViewPropTypes.style,\r\n};\r\n\r\nexport default BenefitsInput;\r\n","import React from 'react';\r\nimport {NEXT, SECTION_HEAD} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {\r\n  EXPECT_BENEFITS,\r\n  RECEIVE_BENEFITS,\r\n  BENEFITS_OTHER_VALUE,\r\n  BENEFITS_SS_VALUE,\r\n  BENEFITS_SSD_VALUE,\r\n  BENEFITS_SSI_VALUE,\r\n  BENEFITS_TANF_VALUE,\r\n  BENEFITS_TOTAL,\r\n  BENEFITS_UNEMPLOYMENT_VALUE,\r\n  toCurrency,\r\n} from '../../sharedFields';\r\nimport {useReduxMemo} from '../../veraRedux';\r\n\r\nconst BenefitsSummary = (props) => {\r\n  const benefits = [\r\n    BENEFITS_OTHER_VALUE,\r\n    BENEFITS_SS_VALUE,\r\n    BENEFITS_SSD_VALUE,\r\n    BENEFITS_SSI_VALUE,\r\n    BENEFITS_TANF_VALUE,\r\n    BENEFITS_UNEMPLOYMENT_VALUE,\r\n  ];\r\n\r\n  const benefitsTotal = useReduxMemo(\r\n      BENEFITS_TOTAL,\r\n      (getField) => {\r\n        if (!getField(RECEIVE_BENEFITS)\r\n          && !getField(EXPECT_BENEFITS)) {\r\n          return 0;\r\n        }\r\n\r\n        const total = benefits.reduce(\r\n            (total, field) => {\r\n              return total + (getField(field) || 0);\r\n            }, 0\r\n        );\r\n        return total;\r\n      },\r\n      [...benefits, EXPECT_BENEFITS, RECEIVE_BENEFITS]);\r\n\r\n  const will = props[EXPECT_BENEFITS] ? 'will ' : '';\r\n  // eslint-disable-next-line max-len\r\n  const text = `You ${will}receive about ${toCurrency(benefitsTotal)} in benefits each month.`;\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title={text}\r\n      subTitle=\"Does this sound right?\"\r\n      onYes={() => {\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        props.navigation.navigate(SECTION_HEAD);\r\n      }} />\r\n  );\r\n};\r\n\r\nBenefitsSummary.useFields = [\r\n  EXPECT_BENEFITS,\r\n  RECEIVE_BENEFITS,\r\n];\r\n\r\nBenefitsSummary.showScreen =\r\n  (props) => props[RECEIVE_BENEFITS] || props[EXPECT_BENEFITS];\r\n\r\nBenefitsSummary.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default BenefitsSummary;\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport {EXPECT_BENEFITS, RECEIVE_BENEFITS} from '../../sharedFields';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst ExpectBenefits = (props) => {\r\n  const [, setExpectBenefits] = useReduxState(EXPECT_BENEFITS);\r\n  const [, setReceiveBenefits] = useReduxState(RECEIVE_BENEFITS);\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title=\"Do you expect to receive income from benefits in the next 30 days?\"\r\n      onYes={() => {\r\n        setExpectBenefits(true);\r\n        setReceiveBenefits(false);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setExpectBenefits(false);\r\n        props.navigation.push(NEXT);\r\n      }} />\r\n  );\r\n};\r\n\r\nExpectBenefits.useFields = [\r\n  RECEIVE_BENEFITS,\r\n];\r\n\r\nExpectBenefits.showScreen = (props) => !props[RECEIVE_BENEFITS];\r\n\r\nExpectBenefits.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default ExpectBenefits;\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {RECEIVE_EXPENSES} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst ExpensesHead = (props) => {\r\n  const [, setReceiveExpenses] = useReduxState(RECEIVE_EXPENSES);\r\n  return (\r\n    <YesNoQuestion\r\n      title=\"Do you have monthly expenses such as rent, groceries, etc.?\"\r\n      onYes={() => {\r\n        setReceiveExpenses(true);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setReceiveExpenses(false);\r\n        props.navigation.push(NEXT);\r\n      }} />\r\n  );\r\n};\r\n\r\nExpensesHead.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default ExpensesHead;\r\n","import React from 'react';\r\nimport {Text, View, ViewPropTypes} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport {customStyles} from '../../config/Styles';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport HookedOptionalInput from '../../components/HookedOptionalInput';\r\nimport {RECEIVE_EXPENSES,\r\n  EXPENSES_CHILD_VALUE,\r\n  EXPENSES_ELECTRIC_GAS_VALUE,\r\n  EXPENSES_FOOD_VALUE,\r\n  EXPENSES_HOUSING_VALUE,\r\n  EXPENSES_INTERNET_TV_VALUE,\r\n  EXPENSES_LOANS_VALUE,\r\n  EXPENSES_MEDICAL_VALUE,\r\n  EXPENSES_OTHER_VALUE,\r\n  EXPENSES_PHONE_VALUE,\r\n  EXPENSES_TRANSPORTATION_VALUE,\r\n} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\nimport InputScroll from '../../components/InputScroll';\r\nimport VeraButton from '../../components/VeraButton';\r\nimport useErrorState from '../../hooks/useErrorState';\r\n\r\nconst ExpensesInput = ({navigation, style}) => {\r\n  const hooks = {\r\n    [EXPENSES_CHILD_VALUE]: useReduxState(EXPENSES_CHILD_VALUE),\r\n    [EXPENSES_ELECTRIC_GAS_VALUE]:\r\n      useReduxState(EXPENSES_ELECTRIC_GAS_VALUE),\r\n    [EXPENSES_FOOD_VALUE]: useReduxState(EXPENSES_FOOD_VALUE),\r\n    [EXPENSES_HOUSING_VALUE]: useReduxState(EXPENSES_HOUSING_VALUE),\r\n    [EXPENSES_INTERNET_TV_VALUE]: useReduxState(EXPENSES_INTERNET_TV_VALUE),\r\n    [EXPENSES_LOANS_VALUE]: useReduxState(EXPENSES_LOANS_VALUE),\r\n    [EXPENSES_MEDICAL_VALUE]: useReduxState(EXPENSES_MEDICAL_VALUE),\r\n    [EXPENSES_OTHER_VALUE]: useReduxState(EXPENSES_OTHER_VALUE),\r\n    [EXPENSES_PHONE_VALUE]: useReduxState(EXPENSES_PHONE_VALUE),\r\n    [EXPENSES_TRANSPORTATION_VALUE]:\r\n      useReduxState(EXPENSES_TRANSPORTATION_VALUE),\r\n  };\r\n\r\n  const [, setFieldError, hasError] = useErrorState([\r\n    EXPENSES_CHILD_VALUE,\r\n    EXPENSES_ELECTRIC_GAS_VALUE,\r\n    EXPENSES_FOOD_VALUE,\r\n    EXPENSES_HOUSING_VALUE,\r\n    EXPENSES_INTERNET_TV_VALUE,\r\n    EXPENSES_LOANS_VALUE,\r\n    EXPENSES_MEDICAL_VALUE,\r\n    EXPENSES_OTHER_VALUE,\r\n    EXPENSES_PHONE_VALUE,\r\n    EXPENSES_TRANSPORTATION_VALUE,\r\n  ]);\r\n\r\n  return (\r\n    <View style={style}>\r\n      <View style={customStyles.header}>\r\n        <Text\r\n          accessibilityRole='header'\r\n          style={customStyles.headerText}>\r\n          Which expenses do you have?\r\n        </Text>\r\n      </View>\r\n      <InputScroll>\r\n        <HookedOptionalInput\r\n          key={EXPENSES_HOUSING_VALUE}\r\n          title='Housing'\r\n          onError={setFieldError(EXPENSES_HOUSING_VALUE)}\r\n          hook={hooks[EXPENSES_HOUSING_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_ELECTRIC_GAS_VALUE}\r\n          title='Electric/Gas'\r\n          onError={setFieldError(EXPENSES_ELECTRIC_GAS_VALUE)}\r\n          hook={hooks[EXPENSES_ELECTRIC_GAS_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_FOOD_VALUE}\r\n          title='Food and groceries'\r\n          onError={setFieldError(EXPENSES_FOOD_VALUE)}\r\n          hook={hooks[EXPENSES_FOOD_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_TRANSPORTATION_VALUE}\r\n          title='Transportation'\r\n          onError={setFieldError(EXPENSES_TRANSPORTATION_VALUE)}\r\n          hook={hooks[EXPENSES_TRANSPORTATION_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_INTERNET_TV_VALUE}\r\n          title='Internet, TV, Phone'\r\n          onError={setFieldError(EXPENSES_INTERNET_TV_VALUE)}\r\n          hook={hooks[EXPENSES_INTERNET_TV_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_LOANS_VALUE}\r\n          title='Loan (Student/Car/etc...)'\r\n          onError={setFieldError(EXPENSES_LOANS_VALUE)}\r\n          hook={hooks[EXPENSES_LOANS_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_CHILD_VALUE}\r\n          title='Child Support'\r\n          onError={setFieldError(EXPENSES_CHILD_VALUE)}\r\n          hook={hooks[EXPENSES_CHILD_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_MEDICAL_VALUE}\r\n          title='Medical Bills'\r\n          onError={setFieldError(EXPENSES_MEDICAL_VALUE)}\r\n          hook={hooks[EXPENSES_MEDICAL_VALUE]}\r\n        />\r\n        <HookedOptionalInput\r\n          key={EXPENSES_OTHER_VALUE}\r\n          title='Other Major Expenses'\r\n          onError={setFieldError(EXPENSES_OTHER_VALUE)}\r\n          hook={hooks[EXPENSES_OTHER_VALUE]}\r\n        />\r\n      </InputScroll>\r\n      <VeraButton\r\n        secondary\r\n        title='Select'\r\n        disabled={hasError}\r\n        onPress={() => navigation.push(NEXT)} />\r\n    </View>\r\n  );\r\n};\r\n\r\nExpensesInput.useFields = [\r\n  RECEIVE_EXPENSES,\r\n];\r\n\r\nExpensesInput.showScreen = (props) => props[RECEIVE_EXPENSES];\r\n\r\nExpensesInput.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n  style: ViewPropTypes.style,\r\n};\r\n\r\nexport default ExpensesInput;\r\n","import React from 'react';\r\nimport {NEXT, SECTION_HEAD} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {RECEIVE_EXPENSES,\r\n  EXPENSES_CHILD_VALUE,\r\n  EXPENSES_ELECTRIC_GAS_VALUE,\r\n  EXPENSES_FOOD_VALUE,\r\n  EXPENSES_HOUSING_VALUE,\r\n  EXPENSES_INTERNET_TV_VALUE,\r\n  EXPENSES_LOANS_VALUE,\r\n  EXPENSES_MEDICAL_VALUE,\r\n  EXPENSES_OTHER_VALUE,\r\n  EXPENSES_PHONE_VALUE,\r\n  EXPENSES_TOTAL,\r\n  EXPENSES_TRANSPORTATION_VALUE,\r\n  toCurrency,\r\n} from '../../sharedFields';\r\nimport {useReduxMemo} from '../../veraRedux';\r\n\r\nconst ExpensesSummary = (props) => {\r\n  const expenses = [\r\n    EXPENSES_CHILD_VALUE,\r\n    EXPENSES_ELECTRIC_GAS_VALUE,\r\n    EXPENSES_FOOD_VALUE,\r\n    EXPENSES_HOUSING_VALUE,\r\n    EXPENSES_INTERNET_TV_VALUE,\r\n    EXPENSES_LOANS_VALUE,\r\n    EXPENSES_MEDICAL_VALUE,\r\n    EXPENSES_OTHER_VALUE,\r\n    EXPENSES_PHONE_VALUE,\r\n    EXPENSES_TRANSPORTATION_VALUE,\r\n  ];\r\n\r\n  const expensesTotal = useReduxMemo(\r\n      EXPENSES_TOTAL,\r\n      (getField) => {\r\n        if (!getField(RECEIVE_EXPENSES)) {\r\n          return 0;\r\n        }\r\n\r\n        const total = expenses.reduce(\r\n            (total, field) => {\r\n              return total + (getField(field) || 0);\r\n            }, 0\r\n        );\r\n        return total;\r\n      },\r\n      [...expenses, RECEIVE_EXPENSES]);\r\n\r\n  const text = `You have ${toCurrency(expensesTotal)} in expenses per month.`;\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title={text}\r\n      subTitle=\"Does this sound right?\"\r\n      onYes={() => {\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        props.navigation.navigate(SECTION_HEAD);\r\n      }} />\r\n  );\r\n};\r\n\r\nExpensesSummary.useFields = [\r\n  RECEIVE_EXPENSES,\r\n];\r\n\r\nExpensesSummary.showScreen = (props) => props[RECEIVE_EXPENSES];\r\n\r\nExpensesSummary.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default ExpensesSummary;\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {EXPECT_INCOME, RECEIVE_INCOME} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\n\r\nconst ExpectedIncome = (props) => {\r\n  const [, setReceiveIncome] = useReduxState(RECEIVE_INCOME);\r\n  const [, setExpectIncome] = useReduxState(EXPECT_INCOME);\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title=\r\n        \"Do you expect to receive income from employment in the next 30 days?\"\r\n      onYes={() => {\r\n        setExpectIncome(true);\r\n        setReceiveIncome(false);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setExpectIncome(false);\r\n        props.navigation.push(NEXT);\r\n      }} />\r\n  );\r\n};\r\n\r\nExpectedIncome.useFields = [\r\n  RECEIVE_INCOME,\r\n];\r\n\r\nExpectedIncome.showScreen = (props) => !props[RECEIVE_INCOME];\r\n\r\nExpectedIncome.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default ExpectedIncome;\r\n","import React from 'react';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {EXPECT_INCOME, RECEIVE_INCOME} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\n\r\nconst IncomeHead = (props) => {\r\n  const [, setReceiveIncome] = useReduxState(RECEIVE_INCOME);\r\n  const [, setExpectIncome] = useReduxState(EXPECT_INCOME);\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title=\"Do you currently receive income from employment?\"\r\n      onYes={() => {\r\n        setReceiveIncome(true);\r\n        setExpectIncome(false);\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        setReceiveIncome(false);\r\n        props.navigation.push(NEXT);\r\n      }} />\r\n  );\r\n};\r\n\r\nIncomeHead.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default IncomeHead;\r\n","import React from 'react';\r\nimport { Platform, StyleSheet, Picker } from 'react-native';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nconst styles = StyleSheet.create({\r\n  dropDown: {\r\n    backgroundColor: 'white',\r\n    padding: Platform.OS === 'ios' ? 10 : 0,\r\n  },\r\n  picker: {\r\n    marginBottom: 8,\r\n    marginLeft: 8,\r\n    marginTop: -7,\r\n    maxHeight: 42,\r\n  },\r\n});\r\n\r\nconst VeraSelect = ({ selectedValue, options, onSubmitEditing, ...rest }) => {\r\n  if (Platform.OS !== 'web') {\r\n    const SelectInput = require('react-native-select-input-ios');\r\n    return (\r\n      <SelectInput\r\n        style={styles.dropDown}\r\n        mode=\"dropdown\"\r\n        value={selectedValue}\r\n        labelStyle={{ fontSize: 14, color: 'black' }}\r\n        options={options.map((v, i) => ({ value: i, label: v }))}\r\n        {...rest}\r\n      />\r\n    );\r\n  }\r\n\r\n  return (\r\n    <Picker\r\n      style={styles.picker}\r\n      onValueChange={value => onSubmitEditing && onSubmitEditing(value)}\r\n      {...rest}\r\n    >\r\n      {options.map((v, i) => (\r\n        <Picker.Item key={i} label={v} value={i} />\r\n      ))}\r\n    </Picker>\r\n  );\r\n};\r\n\r\nVeraSelect.propTypes = {\r\n  selectedValue: PropTypes.any,\r\n  onSubmitEditing: PropTypes.func,\r\n  options: PropTypes.arrayOf(PropTypes.any),\r\n};\r\n\r\nexport default VeraSelect;\r\n","import React, { useState } from 'react';\r\nimport { Platform, StyleSheet, Text, View } from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport CurrencyInput from '../../components/CurrencyInput';\r\nimport VeraButton from '../../components/VeraButton';\r\nimport { customStyles } from '../../config/Styles';\r\nimport { NEXT } from '../../navigators/veraNavigator';\r\nimport {\r\n  INCOME_RATE,\r\n  EXPECT_INCOME,\r\n  RECEIVE_INCOME,\r\n  SELECTED_TYPE,\r\n} from '../../sharedFields';\r\nimport { useReduxState } from '../../veraRedux';\r\nimport colors from '../../config/colors';\r\nimport VeraSelect from '../../components/VeraSelect';\r\n\r\nconst earnPrompt = 'How much do you earn?';\r\nconst expectPrompt = 'How much do you expect to earn?';\r\nconst earnInlinePrompt = 'In total, I make';\r\nconst expectInlinePrompt = 'In total, I will make';\r\n\r\nconst styles = StyleSheet.create({\r\n  inputContainer: {\r\n    width: 120,\r\n    alignSelf: 'flex-start',\r\n    marginTop: -7,\r\n    marginBottom: 9,\r\n  },\r\n  inputControl: {\r\n    backgroundColor: colors.white,\r\n  },\r\n  textStyles: {\r\n    alignSelf: 'flex-start',\r\n  },\r\n  dropDown: {\r\n    backgroundColor: 'white',\r\n    padding: Platform.OS === 'ios' ? 10 : 0,\r\n  },\r\n  errorStyle: {\r\n    color: colors.error,\r\n  },\r\n});\r\n\r\nconst options = ['week', 'month', 'year'];\r\n\r\nconst IncomeInput = props => {\r\n  const [selectedValue, setSelectedValue] = useState(0);\r\n  const [selectedType, setSelectedType] = useReduxState(SELECTED_TYPE, 'week');\r\n  const [income, setIncome] = useReduxState(INCOME_RATE);\r\n  const [input, setInput] = useState(\r\n    income === undefined ? '' : income.toString()\r\n  );\r\n  const [hasError, setHasError] = useState(false);\r\n\r\n  const computedTextStyle = StyleSheet.flatten([\r\n    customStyles.secondaryText,\r\n    styles.textStyles,\r\n  ]);\r\n\r\n  const computedInputStyle = StyleSheet.flatten([\r\n    Platform.OS === 'web' && {\r\n      width: '100%',\r\n      marginLeft: -24,\r\n      paddingLeft: 24,\r\n    },\r\n  ]);\r\n\r\n  return (\r\n    <View>\r\n      <View style={customStyles.header}>\r\n        <Text style={customStyles.headerText}>\r\n          {props[RECEIVE_INCOME] ? earnPrompt : expectPrompt}\r\n        </Text>\r\n      </View>\r\n      <View style={customStyles.line}>\r\n        <Text style={computedTextStyle}>\r\n          {props[RECEIVE_INCOME] ? earnInlinePrompt : expectInlinePrompt}\r\n        </Text>\r\n        <CurrencyInput\r\n          containerStyle={styles.inputContainer}\r\n          inputStyle={computedInputStyle}\r\n          inputContainerStyle={styles.inputControl}\r\n          placeholder=\"0.00\"\r\n          errorMessage=\"Error\"\r\n          errorStyle={styles.errorStyle}\r\n          value={input}\r\n          onChangeText={text => {\r\n            const parsed = Number(text);\r\n            setIncome(isNaN(parsed) ? undefined : parsed);\r\n            setInput(text);\r\n          }}\r\n          onError={setHasError}\r\n          leftIcon={{\r\n            type: 'material',\r\n            name: 'attach-money',\r\n            containerStyle: { marginLeft: Platform.OS === 'web' ? -15 : 0 },\r\n          }}\r\n        />\r\n        <Text style={computedTextStyle}>per</Text>\r\n        <VeraSelect\r\n          selectedValue={selectedValue}\r\n          options={options}\r\n          onSubmitEditing={value => {\r\n            setSelectedType(options[value]);\r\n            setSelectedValue(value);\r\n          }}\r\n        />\r\n      </View>\r\n\r\n      <View style={customStyles.body}>\r\n        <VeraButton\r\n          secondary\r\n          disabled={hasError || !income}\r\n          title=\"Select\"\r\n          onPress={() => {\r\n            props.navigation.push(NEXT, {\r\n              selectedType,\r\n            });\r\n          }}\r\n        />\r\n      </View>\r\n    </View>\r\n  );\r\n};\r\n\r\nIncomeInput.useFields = [EXPECT_INCOME, RECEIVE_INCOME];\r\n\r\nIncomeInput.showScreen = props => {\r\n  return props[RECEIVE_INCOME] || props[EXPECT_INCOME];\r\n};\r\n\r\nIncomeInput.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default IncomeInput;\r\n","import React from 'react';\r\nimport {\r\n  EXPECT_INCOME,\r\n  INCOME_RATE,\r\n  INCOME_TOTAL,\r\n  RECEIVE_INCOME,\r\n  SELECTED_TYPE,\r\n  toCurrency,\r\n} from '../../sharedFields';\r\nimport {NEXT, SECTION_HEAD} from '../../navigators/veraNavigator';\r\nimport PropTypes from 'prop-types';\r\nimport YesNoQuestion from '../../components/YesNoQuestion';\r\nimport {useReduxMemo} from '../../veraRedux';\r\n\r\nconst IncomeSummary = (props) => {\r\n  const incomeTotal = useReduxMemo(\r\n      INCOME_TOTAL,\r\n      (getField) => {\r\n        if (!getField(RECEIVE_INCOME)\r\n          && !getField(EXPECT_INCOME)) {\r\n          return 0;\r\n        }\r\n\r\n        const income = getField(INCOME_RATE);\r\n        const type = getField(SELECTED_TYPE);\r\n\r\n        switch (type) {\r\n          case 'week':\r\n            return income * 52 / 12;\r\n          case 'month':\r\n            return income;\r\n          case 'year':\r\n            return income / 12;\r\n        }\r\n      },\r\n      [EXPECT_INCOME, RECEIVE_INCOME, INCOME_RATE, SELECTED_TYPE]\r\n  );\r\n\r\n  const will = props[EXPECT_INCOME] ? 'will ' : '';\r\n  const text = `You ${will}make about ${toCurrency(incomeTotal)} per month,\r\n    and roughly ${toCurrency(incomeTotal * 12)} per year.`;\r\n\r\n  return (\r\n    <YesNoQuestion\r\n      title={text}\r\n      subTitle=\"Does this sound right?\"\r\n      onYes={() => {\r\n        props.navigation.push(NEXT);\r\n      }}\r\n      onNo={() => {\r\n        props.navigation.navigate(SECTION_HEAD);\r\n      }} />\r\n  );\r\n};\r\n\r\nIncomeSummary.useFields = [\r\n  EXPECT_INCOME,\r\n  RECEIVE_INCOME,\r\n];\r\n\r\nIncomeSummary.showScreen = (props) =>\r\n  props[RECEIVE_INCOME] || props[EXPECT_INCOME];\r\n\r\nIncomeSummary.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    push: PropTypes.func,\r\n    popToTop: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default IncomeSummary;\r\n","import React from 'react';\r\nimport {StyleSheet} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport Question from '../../components/Question';\r\nimport VeraButton from '../../components/VeraButton';\r\nimport {NEXT} from '../../navigators/veraNavigator';\r\nimport {TOP_CHARGE_FELONY} from '../../sharedFields';\r\nimport {useReduxState} from '../../veraRedux';\r\n\r\nconst styles = StyleSheet.create({\r\n  button: {\r\n    width: 160,\r\n  },\r\n});\r\n\r\nconst TopCharge = (props) => {\r\n  const [, setTopCharge] = useReduxState(TOP_CHARGE_FELONY);\r\n\r\n  return (\r\n    <Question\r\n      title=\"Is the most serious charge a felony or misdemeanor?\" >\r\n      <VeraButton\r\n        title='Misdemeanor'\r\n        onPress={() => {\r\n          setTopCharge(false);\r\n          props.navigation.push(NEXT);\r\n        }}\r\n        style={styles.button} />\r\n      <VeraButton\r\n        title='Felony'\r\n        secondary\r\n        onPress={() => {\r\n          setTopCharge(true);\r\n          props.navigation.push(NEXT);\r\n        }}\r\n        style={styles.button} />\r\n    </Question>\r\n  );\r\n};\r\n\r\nTopCharge.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    push: PropTypes.func,\r\n  }),\r\n};\r\n\r\nexport default TopCharge;\r\n","import React, { useState } from 'react';\r\nimport { Platform, StyleSheet, Text, View } from 'react-native';\r\nimport { ListItem } from 'react-native-elements';\r\nimport PropTypes from 'prop-types';\r\nimport { toCurrency } from '../../sharedFields';\r\nimport LabelIcon from '../../components/LabelIcon';\r\nimport colors from '../../config/colors';\r\nimport OverlayScroll from '../../layout/OverlayScroll';\r\nimport Paragraph from '../../layout/Paragraph';\r\n\r\nconst styles = StyleSheet.create({\r\n  subtitle: {\r\n    fontSize: 10,\r\n  },\r\n  rightTitle: {\r\n    width: 150,\r\n    textAlign: 'right',\r\n  },\r\n});\r\n\r\nconst TitleWithHelp = ({ title, helpText, helpTitle, ...rest }) => (\r\n  <LabelIcon name=\"help\" size={20} color={colors.veraRed} iconRight {...rest}>\r\n    <Text>{title}</Text>\r\n  </LabelIcon>\r\n);\r\n\r\nTitleWithHelp.propTypes = {\r\n  title: PropTypes.string,\r\n  helpText: PropTypes.string,\r\n  helpTitle: PropTypes.string,\r\n};\r\n\r\nconst SummaryItem = ({\r\n  title,\r\n  subtitle,\r\n  amount,\r\n  helpText,\r\n  helpTitle,\r\n  ...remainder\r\n}) => {\r\n  const [showHelp, setShowHelp] = useState(false);\r\n\r\n  const useTitle =\r\n    helpText && helpTitle ? (\r\n      <TitleWithHelp\r\n        title={title}\r\n        helpText={helpText}\r\n        helpTitle={helpTitle}\r\n        onPress={() => setShowHelp(true)}\r\n      />\r\n    ) : (\r\n      title\r\n    );\r\n\r\n  return (\r\n    <View>\r\n      <OverlayScroll\r\n        title={helpTitle}\r\n        completeTitle=\"Done\"\r\n        onComplete={() => setShowHelp(false)}\r\n        onBackdropPress={() => setShowHelp(false)}\r\n        isVisible={showHelp}\r\n        containerStyle={{\r\n          padding: 20,\r\n          backgroundColor: Platform.OS === 'web' ? '#373737' : colors.darkGray,\r\n        }}\r\n        headerStyle={{\r\n          color: 'white',\r\n        }}\r\n      >\r\n        <Paragraph style={{ color: 'white' }}>{helpText}</Paragraph>\r\n      </OverlayScroll>\r\n      <ListItem\r\n        accessibilityRole=\"button\"\r\n        accessibilityHint=\"Revise responses\"\r\n        title={useTitle}\r\n        subtitle={subtitle}\r\n        subtitleStyle={styles.subtitle}\r\n        rightTitle={`${toCurrency(amount)}`}\r\n        rightTitleStyle={styles.rightTitle}\r\n        bottomDivider\r\n        {...remainder}\r\n      />\r\n    </View>\r\n  );\r\n};\r\n\r\nSummaryItem.propTypes = {\r\n  title: PropTypes.string.isRequired,\r\n  subtitle: PropTypes.string,\r\n  amount: PropTypes.number.isRequired,\r\n  helpText: PropTypes.string,\r\n  helpTitle: PropTypes.string,\r\n};\r\n\r\nexport default SummaryItem;\r\n","import React from 'react';\r\nimport { StyleSheet, Text, View, ViewPropTypes, Platform } from 'react-native';\r\nimport PropTypes from 'prop-types';\r\nimport InputScroll from '../../components/InputScroll';\r\nimport VeraButton from '../../components/VeraButton';\r\nimport * as helpText from '../../config/helpText';\r\nimport { customStyles } from '../../config/Styles';\r\nimport {\r\n  ASSETS_CREDIT_VALUE,\r\n  ASSETS_TOTAL,\r\n  BENEFITS_TOTAL,\r\n  CASH_FACTOR,\r\n  CASH_RECCOMENDATION,\r\n  CREDIT_RECCOMENDATION,\r\n  DISPOSABLE_INCOME,\r\n  EXPENSES_TOTAL,\r\n  INCOME_FACTOR,\r\n  INCOME_TOTAL,\r\n  PARTIALLY_SECURED,\r\n  TOP_CHARGE_FELONY,\r\n  CREDIT_FACTOR,\r\n  EXPECT_INCOME,\r\n  EXPECT_BENEFITS,\r\n  RECEIVE_INCOME,\r\n  RECEIVE_BENEFITS,\r\n} from '../../sharedFields';\r\nimport { useReduxMemo, resetState } from '../../veraRedux';\r\nimport SummaryItem from './SummaryItem';\r\nimport WebCompatibleOverlay from '../../layout/WebCompatibleOverlay';\r\n\r\nconst isMobileBrowser = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n  navigator.userAgent\r\n);\r\n\r\nconst styles = StyleSheet.create({\r\n  container: {\r\n    height: '100%',\r\n  },\r\n  body: {\r\n    flex: 1,\r\n    maxHeight: isMobileBrowser ? 'calc(100% - 60px)' : undefined,\r\n    flexDirection: 'column',\r\n    justifyContent: 'space-around',\r\n    alignItems: 'stretch',\r\n  },\r\n  header: {\r\n    flexShrink: 1,\r\n  },\r\n  summary: {\r\n    flexShrink: 1,\r\n    maxHeight: isMobileBrowser ? 220 : Platform.OS === 'web' ? 300 : 240,\r\n    marginTop: 10,\r\n    marginBottom: 10,\r\n  },\r\n  description: {},\r\n  button: {\r\n    width: 170,\r\n  },\r\n});\r\n\r\nconst BailSummary = ({ navigation, style, ...props }) => {\r\n  const computedContainerStyle = StyleSheet.flatten([styles.container, style]);\r\n\r\n  useReduxMemo(\r\n    DISPOSABLE_INCOME,\r\n    getField => {\r\n      return (\r\n        getField(INCOME_TOTAL, 0) +\r\n        getField(BENEFITS_TOTAL, 0) -\r\n        getField(EXPENSES_TOTAL, 0)\r\n      );\r\n    },\r\n    [INCOME_TOTAL, BENEFITS_TOTAL, EXPENSES_TOTAL]\r\n  );\r\n\r\n  useReduxMemo(\r\n    INCOME_FACTOR,\r\n    getField => {\r\n      const income = getField(DISPOSABLE_INCOME, 0);\r\n      if (income < 100) {\r\n        return 0.1;\r\n      } else if (income < 200) {\r\n        return 0.15;\r\n      } else if (income < 300) {\r\n        return 0.2;\r\n      } else if (income < 500) {\r\n        return 0.25;\r\n      } else {\r\n        return 0.33;\r\n      }\r\n    },\r\n    [DISPOSABLE_INCOME]\r\n  );\r\n\r\n  useReduxMemo(\r\n    CASH_FACTOR,\r\n    getField => {\r\n      const assets = getField(ASSETS_TOTAL, 0);\r\n      const felony = getField(TOP_CHARGE_FELONY);\r\n\r\n      if (assets < 100) {\r\n        return felony ? 0.66 : 0.25;\r\n      } else if (assets < 200) {\r\n        return felony ? 0.685 : 0.275;\r\n      } else if (assets < 300) {\r\n        return felony ? 0.71 : 0.3;\r\n      } else if (assets < 500) {\r\n        return felony ? 0.735 : 0.325;\r\n      } else {\r\n        return felony ? 0.75 : 0.35;\r\n      }\r\n    },\r\n    [ASSETS_TOTAL, TOP_CHARGE_FELONY]\r\n  );\r\n\r\n  const cashReccomendation = useReduxMemo(\r\n    CASH_RECCOMENDATION,\r\n    getField => getField(CASH_FACTOR) * getField(ASSETS_TOTAL, 0),\r\n    [ASSETS_TOTAL, CASH_FACTOR]\r\n  );\r\n\r\n  const partiallySecured = useReduxMemo(\r\n    PARTIALLY_SECURED,\r\n    getField => {\r\n      const felony = getField(TOP_CHARGE_FELONY);\r\n      let chargeFactor = felony ? 9 : 5;\r\n      if (!getField(RECEIVE_BENEFITS) && !getField(RECEIVE_INCOME)) {\r\n        chargeFactor--;\r\n      }\r\n\r\n      return (\r\n        chargeFactor * getField(INCOME_FACTOR) * getField(DISPOSABLE_INCOME) +\r\n        getField(CASH_RECCOMENDATION)\r\n      );\r\n    },\r\n    [\r\n      EXPECT_INCOME,\r\n      EXPECT_BENEFITS,\r\n      INCOME_FACTOR,\r\n      DISPOSABLE_INCOME,\r\n      CASH_RECCOMENDATION,\r\n      TOP_CHARGE_FELONY,\r\n    ]\r\n  );\r\n\r\n  useReduxMemo(\r\n    CREDIT_FACTOR,\r\n    getField => {\r\n      const felony = getField(TOP_CHARGE_FELONY);\r\n      const credit = getField(ASSETS_CREDIT_VALUE, 0);\r\n\r\n      if (credit < 250) {\r\n        return felony ? 0.6 : 0.25;\r\n      } else if (credit < 500) {\r\n        return felony ? 0.65 : 0.2;\r\n      } else if (credit < 750) {\r\n        return felony ? 0.7 : 0.25;\r\n      } else if (credit < 1000) {\r\n        return felony ? 0.75 : 0.3;\r\n      } else {\r\n        return felony ? 0.8 : 0.35;\r\n      }\r\n    },\r\n    [TOP_CHARGE_FELONY, ASSETS_CREDIT_VALUE]\r\n  );\r\n\r\n  const creditReccomendation = useReduxMemo(\r\n    CREDIT_RECCOMENDATION,\r\n    getField => getField(CREDIT_FACTOR) * getField(ASSETS_CREDIT_VALUE, 0),\r\n    [CREDIT_FACTOR, ASSETS_CREDIT_VALUE]\r\n  );\r\n\r\n  const NoPay = () => (\r\n    <View style={styles.summary}>\r\n      <Text style={customStyles.secondaryText}>No ability to pay.</Text>\r\n    </View>\r\n  );\r\n\r\n  const usecured = !props[RECEIVE_INCOME] && !props[RECEIVE_BENEFITS];\r\n  const bailBlurb = usecured ? 'unsecured' : 'partially secured';\r\n  const bondHelpTitle = usecured\r\n    ? helpText.UNSECURED_BOND.title\r\n    : helpText.PARTIALLY_SECURED_BOND.title;\r\n  const bondHelpText = usecured\r\n    ? helpText.UNSECURED_BOND.text\r\n    : helpText.PARTIALLY_SECURED_BOND.text;\r\n\r\n  const Pay = () => (\r\n    <InputScroll style={styles.summary}>\r\n      {cashReccomendation > 0 && (\r\n        <SummaryItem title=\"Cash\" amount={cashReccomendation} />\r\n      )}\r\n      {partiallySecured > 0 && (\r\n        <SummaryItem\r\n          title=\"Bond\"\r\n          helpText={bondHelpText}\r\n          helpTitle={bondHelpTitle}\r\n          subtitle={bailBlurb}\r\n          amount={partiallySecured}\r\n        />\r\n      )}\r\n      {creditReccomendation > 0 && (\r\n        <SummaryItem title=\"Credit\" amount={creditReccomendation} />\r\n      )}\r\n    </InputScroll>\r\n  );\r\n\r\n  const startOver = () => {\r\n    resetState();\r\n    navigation.popToTop();\r\n  };\r\n\r\n  return (\r\n    <View style={computedContainerStyle}>\r\n      <View style={styles.body}>\r\n        <View style={styles.header}>\r\n          <Text accessibilityRole=\"header\" style={customStyles.headerText}>\r\n            We&apos;ve calculated your ability to pay bail as:\r\n          </Text>\r\n        </View>\r\n        {partiallySecured > 0 ||\r\n        cashReccomendation > 0 ||\r\n        creditReccomendation > 0 ? (\r\n          <Pay />\r\n        ) : (\r\n          <NoPay />\r\n        )}\r\n        <View style={styles.buttons}>\r\n          <VeraButton\r\n            secondary\r\n            style={styles.button}\r\n            title=\"New Calculation\"\r\n            onPress={() => startOver()}\r\n          />\r\n        </View>\r\n      </View>\r\n    </View>\r\n  );\r\n};\r\n\r\nBailSummary.useFields = [\r\n  ASSETS_TOTAL,\r\n  BENEFITS_TOTAL,\r\n  EXPECT_BENEFITS,\r\n  EXPECT_INCOME,\r\n  EXPENSES_TOTAL,\r\n  INCOME_TOTAL,\r\n  RECEIVE_INCOME,\r\n  RECEIVE_BENEFITS,\r\n];\r\n\r\nBailSummary.propTypes = {\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func,\r\n    push: PropTypes.func,\r\n    popToTop: PropTypes.func,\r\n  }),\r\n  style: ViewPropTypes.style,\r\n};\r\n\r\nexport default BailSummary;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport SummaryItem from './SummaryItem';\r\nimport ActionResponder from '../../components/ActionResponder';\r\n\r\nconst SectionSummaryItem = ({title, amount, perMonth, onPress}) => (\r\n  <ActionResponder\r\n    onPress={onPress}\r\n    accessible\r\n    accessibilityRole='button'\r\n    accessibilityHint='Revise responses'\r\n  >\r\n    <SummaryItem\r\n      title={title}\r\n      subtitle={perMonth && 'per month'}\r\n      amount={amount}\r\n      chevron\r\n    />\r\n  </ActionResponder>\r\n);\r\n\r\nSectionSummaryItem.propTypes = {\r\n  title: PropTypes.string.isRequired,\r\n  amount: PropTypes.number.isRequired,\r\n  perMonth: PropTypes.bool,\r\n  onPress: PropTypes.func,\r\n};\r\n\r\nSectionSummaryItem.defaultValues = {\r\n  perMonth: false,\r\n};\r\n\r\nexport default SectionSummaryItem;\r\n","import React from 'react';\nimport { Platform, StyleSheet, Text, View, ViewPropTypes } from 'react-native';\nimport PropTypes from 'prop-types';\nimport SectionSummaryItem from './SectionSummaryItem';\nimport InputScroll from '../../components/InputScroll';\nimport VeraButton from '../../components/VeraButton';\nimport { customStyles } from '../../config/Styles';\nimport { NEXT } from '../../navigators/veraNavigator';\nimport {\n  ASSETS_TOTAL,\n  BENEFITS_TOTAL,\n  EXPENSES_TOTAL,\n  INCOME_TOTAL,\n} from '../../sharedFields';\nimport {\n  IncomeSection,\n  BenefitsSection,\n  ExpensesSection,\n  AssetsSection,\n} from '../../sectionNames';\n\nconst isMobileBrowser = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n  navigator.userAgent\n);\n\nconst styles = StyleSheet.create({\n  container: {\n    height: '100%',\n  },\n  body: {\n    flex: 1,\n    maxHeight: isMobileBrowser ? 'calc(100% - 60px)' : undefined,\n    flexDirection: 'column',\n    justifyContent: 'space-around',\n    alignItems: 'stretch',\n  },\n  header: {\n    flexShrink: 1,\n  },\n  summary: {\n    flexShrink: 1,\n    maxHeight: isMobileBrowser ? 220 : Platform.OS === 'web' ? 300 : 240,\n    marginTop: 10,\n    marginBottom: 10,\n  },\n  description: {},\n  buttons: {},\n});\n\nconst SectionSummary = ({ navigation, style, ...props }) => {\n  const computedContainerStyle = StyleSheet.flatten([styles.container, style]);\n\n  const review = section => () => {\n    navigation.state.reviewSection(section)(navigation.push.bind(navigation));\n  };\n\n  return (\n    <View style={computedContainerStyle}>\n      <View style={styles.body}>\n        <View style={styles.header}>\n          <Text style={customStyles.headerText} accessibilityRole=\"header\">\n            According to what we have discussed, you have about:\n          </Text>\n        </View>\n        <InputScroll style={styles.summary}>\n          <SectionSummaryItem\n            title=\"Income\"\n            amount={props[INCOME_TOTAL] || 0}\n            onPress={review(IncomeSection)}\n            perMonth\n          />\n          <SectionSummaryItem\n            title=\"Benefits\"\n            amount={props[BENEFITS_TOTAL] || 0}\n            onPress={review(BenefitsSection)}\n            perMonth\n          />\n          <SectionSummaryItem\n            title=\"Assets\"\n            amount={props[ASSETS_TOTAL] || 0}\n            onPress={review(AssetsSection)}\n          />\n          <SectionSummaryItem\n            title=\"Expenses\"\n            amount={props[EXPENSES_TOTAL] || 0}\n            onPress={review(ExpensesSection)}\n            perMonth\n          />\n        </InputScroll>\n        <View style={styles.description}>\n          <Text style={customStyles.primaryText}>\n            Please revise your responses if this does not look correct.\n          </Text>\n        </View>\n        <View style={styles.buttons}>\n          <VeraButton\n            secondary\n            title=\"Submit\"\n            onPress={() => navigation.push(NEXT)}\n          />\n        </View>\n      </View>\n    </View>\n  );\n};\n\nSectionSummary.useFields = [\n  ASSETS_TOTAL,\n  BENEFITS_TOTAL,\n  EXPENSES_TOTAL,\n  INCOME_TOTAL,\n];\n\nSectionSummary.propTypes = {\n  navigation: PropTypes.shape({\n    navigate: PropTypes.func,\n    push: PropTypes.func,\n    state: PropTypes.shape({\n      reviewSection: PropTypes.func.isRequired,\n    }),\n  }),\n  style: ViewPropTypes.style,\n  helpText: PropTypes.string,\n  helpTitle: PropTypes.string,\n};\n\nexport default SectionSummary;\n","export const IncomeSection = 'Income';\r\nexport const BenefitsSection = 'Benefits';\r\nexport const AssetsSection = 'Assets';\r\nexport const ExpensesSection = 'Expenses';\r\n","import React from 'react';\r\nimport { Text } from 'react-native';\r\nimport { customStyles } from './config/Styles';\r\nimport NavigationStrip from './layout/NavigationStrip';\r\nimport getContainedScreen, {\r\n  mapStateToPropsHoc,\r\n} from './layout/ScreenContainer';\r\nimport { createVeraNavigator } from './navigators/veraNavigator';\r\nimport { getState } from './veraRedux';\r\nimport AssetsHead from './views/assets/AssetsHead';\r\nimport AssetsInput from './views/assets/AssetsInput';\r\nimport AssetsSummary from './views/assets/AssetsSummary';\r\nimport BenefitHead from './views/benefits/BenefitHead';\r\nimport BenefitsInput from './views/benefits/BenefitsInput';\r\nimport BenefitsSummary from './views/benefits/BenefitsSummary';\r\nimport ExpectedBenefits from './views/benefits/ExpectedBenefits';\r\nimport ExpensesHead from './views/expenses/ExpensesHead';\r\nimport ExpensesInput from './views/expenses/ExpensesInput';\r\nimport ExpensesSummary from './views/expenses/ExpensesSummary';\r\nimport ExpectedIncome from './views/income/ExpectedIncome';\r\nimport IncomeHead from './views/income/IncomeHead';\r\nimport IncomeInput from './views/income/IncomeInput';\r\nimport IncomeSummary from './views/income/IncomeSummary';\r\nimport TopCharge from './views/intro/TopCharge';\r\nimport BailSummary from './views/summary/BailSummary';\r\nimport SectionSummary from './views/summary/SectionSummary';\r\nimport {\r\n  IncomeSection,\r\n  BenefitsSection,\r\n  AssetsSection,\r\n  ExpensesSection,\r\n} from './sectionNames';\r\nimport colors from './config/colors';\r\n\r\nconst Wizard = createVeraNavigator(\r\n  [\r\n    {\r\n      name: '',\r\n      sectionLink: false,\r\n      screens: [\r\n        {\r\n          screen: TopCharge,\r\n          name: 'top-charge',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: IncomeSection,\r\n      screens: [\r\n        {\r\n          screen: IncomeHead,\r\n          name: 'income-head',\r\n        },\r\n        {\r\n          screen: ExpectedIncome,\r\n          name: 'expected-income',\r\n        },\r\n        {\r\n          screen: IncomeInput,\r\n          name: 'income-input',\r\n        },\r\n        {\r\n          screen: IncomeSummary,\r\n          name: 'summary',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: BenefitsSection,\r\n      screens: [\r\n        {\r\n          screen: BenefitHead,\r\n          name: 'benefit-head',\r\n        },\r\n        {\r\n          screen: ExpectedBenefits,\r\n          name: 'expected-benefits',\r\n        },\r\n        {\r\n          screen: BenefitsInput,\r\n          name: 'benefits-input',\r\n          veraOptions: {\r\n            makeScrollable: false,\r\n          },\r\n        },\r\n        {\r\n          screen: BenefitsSummary,\r\n          name: 'benefits-summary',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: AssetsSection,\r\n      screens: [\r\n        {\r\n          screen: AssetsHead,\r\n          name: 'assets-head',\r\n        },\r\n        {\r\n          screen: AssetsInput,\r\n          name: 'assets-input',\r\n          veraOptions: {\r\n            makeScrollable: false,\r\n          },\r\n        },\r\n        {\r\n          screen: AssetsSummary,\r\n          name: 'assets-summary',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: ExpensesSection,\r\n      screens: [\r\n        {\r\n          screen: ExpensesHead,\r\n          name: 'expenses-head',\r\n        },\r\n        {\r\n          screen: ExpensesInput,\r\n          name: 'expense-sinput',\r\n          veraOptions: {\r\n            makeScrollable: false,\r\n          },\r\n        },\r\n        {\r\n          screen: ExpensesSummary,\r\n          name: 'expenses-summary',\r\n        },\r\n      ],\r\n    },\r\n    {\r\n      name: 'Calculation',\r\n      sectionLink: false,\r\n      screens: [\r\n        {\r\n          screen: SectionSummary,\r\n          name: 'section-summary',\r\n          veraOptions: {\r\n            containerHoc: getContainedScreen(),\r\n            makeScrollable: false,\r\n          },\r\n        },\r\n        {\r\n          screen: BailSummary,\r\n          name: 'bail-summary',\r\n          veraOptions: {\r\n            containerHoc: getContainedScreen(),\r\n            makeScrollable: false,\r\n          },\r\n        },\r\n      ],\r\n    },\r\n  ],\r\n  {\r\n    defaultVeraOptions: {\r\n      containerHoc: getContainedScreen(NavigationStrip),\r\n      mapStateHoc: mapStateToPropsHoc,\r\n      makeScrollable: true,\r\n    },\r\n    navigationOptions: () => ({\r\n      title: 'test',\r\n      drawerLabel: drawerLabel,\r\n    }),\r\n  },\r\n  getState\r\n);\r\n\r\nconst drawerLabel = () => (\r\n  <Text\r\n    style={[\r\n      customStyles.drawerLabel,\r\n      {\r\n        color: colors.veraRed,\r\n        fontSize: 16,\r\n        marginTop: 32,\r\n      },\r\n    ]}\r\n  >\r\n    Calculate ability to pay\r\n  </Text>\r\n);\r\n\r\nexport default Wizard;\r\n","import React, {useEffect, useState} from 'react';\r\nimport {\r\n  Text,\r\n  View,\r\n  StyleSheet,\r\n  AccessibilityInfo,\r\n  Platform,\r\n} from 'react-native';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst styles = StyleSheet.create({\r\n  titleLabel: {\r\n    margin: 16,\r\n    marginTop: 8,\r\n    marginBottom: 8,\r\n    fontWeight: 'bold',\r\n  },\r\n  subItemLabel: {\r\n    paddingLeft: 24,\r\n    paddingRight: 16,\r\n    paddingTop: 8,\r\n    paddingBottom: 8,\r\n    fontWeight: 'bold',\r\n    fontSize: 14,\r\n  },\r\n});\r\n\r\nconst DrawerSubMenu = (props) => {\r\n  const navigate = (section) => {\r\n    props.navigation.navigate('About', {section});\r\n    props.navigation.closeDrawer();\r\n\r\n    if (props.scrollUpdater) {\r\n      props.scrollUpdater.emit('scroll', section);\r\n    }\r\n  };\r\n\r\n  const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);\r\n\r\n  if (Platform.OS !== 'web') {\r\n    useEffect(() => {\r\n      AccessibilityInfo.addEventListener('change', (reader) =>\r\n        setScreenReaderEnabled(reader)\r\n      );\r\n      AccessibilityInfo.fetch().done((isEnabled) => {\r\n        setScreenReaderEnabled(isEnabled);\r\n      });\r\n    }, []);\r\n  }\r\n\r\n  return (\r\n    <View accessibilityLabel='About'>\r\n      <View>\r\n        <Text\r\n          style={[\r\n            styles.titleLabel,\r\n            !props.activeSection && {color: props.color},\r\n            props.labelStyle,\r\n            props.extraLabelStyle,\r\n          ]}\r\n        >\r\n          {props.title}\r\n        </Text>\r\n      </View>\r\n      {!screenReaderEnabled &&\r\n        props.items.map((item, index) => (\r\n          <View key={index}>\r\n            <Text\r\n              onPress={() => navigate(item)}\r\n              style={[\r\n                props.labelStyle,\r\n                styles.subItemLabel,\r\n                props.activeSection &&\r\n                  props.activeSection === item &&\r\n                  props.color && {color: props.color},\r\n                props.extraLabelStyle,\r\n              ]}\r\n            >\r\n              {item}\r\n            </Text>\r\n          </View>\r\n        ))}\r\n    </View>\r\n  );\r\n};\r\n\r\nDrawerSubMenu.propTypes = {\r\n  color: PropTypes.string,\r\n  labelStyle: PropTypes.object,\r\n  extraLabelStyle: PropTypes.object,\r\n  title: PropTypes.string.isRequired,\r\n  items: PropTypes.arrayOf(PropTypes.string),\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func.isRequired,\r\n    closeDrawer: PropTypes.func.isRequired,\r\n  }).isRequired,\r\n  activeSection: PropTypes.string,\r\n  scrollUpdater: PropTypes.object,\r\n};\r\n\r\nexport default DrawerSubMenu;\r\n","import React from 'react';\r\nimport { View, Platform } from 'react-native';\r\nimport {\r\n  createAppContainer,\r\n  createDrawerNavigator,\r\n  DrawerItems,\r\n} from 'react-navigation';\r\nimport { Provider } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport AppLoading from './components/AppLoading';\r\nimport { cacheAssets, cacheFonts } from './helpers/AssetsCaching';\r\nimport createSingleNavigator from './navigators/singleNavigator';\r\nimport reducer from './reducer';\r\nimport { createStore } from './veraRedux';\r\nimport Cover from './views/assessment/Cover';\r\nimport Info from './views/assessment/Info';\r\nimport Terms from './views/assessment/Terms';\r\nimport Wizard from './veraWizard';\r\nimport DrawerSubMenu from './components/DrawerSubmenu';\r\nimport scrollUpdater from 'tiny-emitter/instance';\r\n\r\nconst aboutItems = ['Background', 'FAQ', 'Glossary', 'Acknowledgments'];\r\n\r\nconst ContentComponent = props => {\r\n  const getLabel = scene => {\r\n    if (scene.route.key === 'About') {\r\n      return (\r\n        <DrawerSubMenu\r\n          items={aboutItems}\r\n          title={scene.route.key}\r\n          color={scene.tintColor}\r\n          labelStyle={props.labelStyle}\r\n          extraLabelStyle={props.extraLabelStyle}\r\n          navigation={props.navigation}\r\n          activeSection={\r\n            scene.route && scene.route.params && scene.route.params.section\r\n          }\r\n          scrollUpdater={scrollUpdater}\r\n        />\r\n      );\r\n    }\r\n\r\n    return props.getLabel(scene);\r\n  };\r\n\r\n  return <DrawerItems {...props} getLabel={getLabel} />;\r\n};\r\n\r\nContentComponent.propTypes = {\r\n  labelStyle: PropTypes.object,\r\n  extraLabelStyle: PropTypes.object,\r\n  navigation: PropTypes.shape({\r\n    navigate: PropTypes.func.isRequired,\r\n  }).isRequired,\r\n  getLabel: PropTypes.func.isRequired,\r\n};\r\n\r\nconst termsContainerHoc = Component => {\r\n  const TermsContainer = props => (\r\n    <View\r\n      style={{\r\n        padding: 16,\r\n        height: Platform.OS === 'web' ? 'calc(100vh - 64px)' : undefined,\r\n      }}\r\n    >\r\n      <Component {...props} />\r\n    </View>\r\n  );\r\n\r\n  return TermsContainer;\r\n};\r\n\r\nconst navigator = createDrawerNavigator(\r\n  {\r\n    Wizard: Wizard,\r\n    About: createSingleNavigator(Info, 'About', scrollUpdater),\r\n    Terms: createSingleNavigator(\r\n      Terms,\r\n      'Terms and Conditions',\r\n      undefined,\r\n      termsContainerHoc,\r\n      { indicatorStyle: 'black' }\r\n    ),\r\n    Home: {\r\n      screen: Cover,\r\n    },\r\n  },\r\n  {\r\n    initialRouteName: 'Home',\r\n    contentComponent: ContentComponent,\r\n    contentOptions: {\r\n      labelStyle: {\r\n        fontSize: 16,\r\n      },\r\n    },\r\n    overlayColor: Platform.OS === 'web' ? 'rgba(8, 8, 8, 0.6)' : undefined,\r\n  }\r\n);\r\n\r\nconst MainRoot = createAppContainer(navigator);\r\n\r\nconst store = createStore(reducer);\r\n\r\nconst MainRootRedux = props => (\r\n  <Provider store={store}>\r\n    <MainRoot />\r\n  </Provider>\r\n);\r\n\r\nexport default class AppContainer extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n    this.state = {\r\n      isReady: false,\r\n    };\r\n  }\r\n\r\n  /* eslint-disable max-len */\r\n  async _loadAssetsAsync() {\r\n    const imageAssets = cacheAssets([require('../assets/images/cover.png')]);\r\n\r\n    const fontAssets = cacheFonts({\r\n      FontAwesome: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/FontAwesome.ttf'),\r\n      Ionicons: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Ionicons.ttf'),\r\n      Entypo: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/Entypo.ttf'),\r\n      SimpleLineIcons: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/SimpleLineIcons.ttf'),\r\n      MaterialIcons: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialIcons.ttf'),\r\n      MaterialCommunityIcons: require('../node_modules/@expo/vector-icons/build/vendor/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf'),\r\n    });\r\n    /* eslint-enable max-len */\r\n\r\n    await Promise.all([imageAssets, fontAssets]);\r\n  }\r\n\r\n  render() {\r\n    if (!this.state.isReady) {\r\n      return (\r\n        <AppLoading\r\n          startAsync={this._loadAssetsAsync}\r\n          onFinish={() => this.setState({ isReady: true })}\r\n        />\r\n      );\r\n    }\r\n\r\n    return <MainRootRedux />;\r\n  }\r\n}\r\n","import App from './App';\r\nimport { AsyncStorage } from 'react-native';\r\nimport { registerRootComponent } from 'expo';\r\nimport { activateKeepAwake } from 'expo-keep-awake';\r\n\r\n// eslint-disable-next-line no-undef\r\nif (__DEV__) {\r\n  activateKeepAwake();\r\n  AsyncStorage.clear();\r\n}\r\n\r\nregisterRootComponent(App);\r\n"],"sourceRoot":""}