{"version":3,"sources":["containers/walkthrough/index.js","containers/walkthrough/finish/index.js","containers/walkthrough/single/index.js","containers/admin/new-document/index.js","containers/admin/editor/index.js","containers/admin/uwal/index.js","App.js","containers/home/index.js","containers/latestupdates/index.js","containers/auth/callback/index.js","history.js","containers/auth/auth0-variables.js","routes.js","containers/auth/index.js","index.js"],"names":["String","prototype","includes","search","start","RegExp","TypeError","undefined","this","indexOf","userSelectedContentOptions","projectIssuesObject","titleCase","str","splitStr","toLowerCase","split","length","i","charAt","toUpperCase","substring","join","Walkthrough","_Component","props","_this","Object","classCallCheck","issues","possibleConstructorReturn","getPrototypeOf","call","masterissues","projectIssues","projectAllIssues","projectState","projectCounty","localStorage","getItem","JSON","parse","forEach","key","value","objectName","state","county","projectPotholes","uwalAddressNote","resultsMeta","resultsList","pageContent","savedFormattedAddress","uwalNames","loading","typingTimeout","inherits","createClass","document","title","setState","route","history","replace","concat","auth","logout","react_default","a","createElement","className","Fragment","alt","src","sizes","entries","map","_ref","_ref2","slicedToArray","href","_ref3","_ref4","id","Component","bankruptcy","judgments","foreclosure","chain-of-title","mortgage","associations","entities","real-estate-taxes","estate","marital-and-divorce","WalkthroughFinish","withRouter","createBrowserHistory","window","location","hostname","API","Next","nextDocument","Sidebar","sections","lib","to","pathname","issue","subissue","hash","fromDashboard","name","Report","reportEmail","target","sendingReportStatusMessage","reportSection","isSelectedSection","values","index","reportMessage","isFilledreportMessage","pageTitle","reportState","reportCounty","reportDocument","documentName","sendingReportStatus","sending","handleSubmit","bind","assertThisInitialized","hideShowReportCard","event","hideMe","_this2","preventDefault","persist","_thisComponentReport","dataEmail","dataSections","push","dataPageTitle","dataMessage","AdminTextMessage","AdminHTMLMessage","test","axios","post","data","email","UserTextMessage","UserHTMLMessage","method","headers","Content-Type","then","response","setTimeout","catch","error","_this3","sectionsArray","label","type","onClick","data-dismiss","onSubmit","htmlFor","react_select_es","multi","onChange","apply","arguments","placeholder","options","react_jsx_parser_min_default","jsx","SingleDocument","_Component2","_this4","pageDropdown1","pageDropdown2","showReportCard","showSignup","selectedOptionSection","pageIssue","pageId","hideShowSignup","prevState","documentChosen","reloadHREF","_this5","_thisComponent","sid","body","setAttribute","addEventListener","ev","filesURL","folders","match","params","section","$potholes","stateLocation","countyLocation","stateName","countyName","result","err","console","log","potholesList","links","files","documentNames","sort","b","Subcategory","reformattedDropdown1","obj","issueEncodeSafe","encodeURI","issueSubcategory","file","recordset","linkURLs","redirectTo","documentTitleSplit","documentTitle","finalURL","serverRequest","Cache-Control","responseType","ProblemName","SubcategoryName","StateName","CountyName","checkLogin","parser","DOMParser","decoded","sectionMatch","HTMLtextFinal","repairXML","Content","decodedXML","parseFromString","querySelector","childNodes","$currentTitle","$lastTitle","innerHTML","textContent","sectionInUse","findIndex","p","innerHTMLupdated","XMLSerializer","serializeToString","nextLink","previousLink","completeURL","isNaN","isAuthenticated","$documentStateId","recordsets","StateId","$documentCountyId","CountyId","$holdingText","$role","$subscriptions","userLevel","$userLevel","json","pricingTable","returnedRow","$returnedRowReference","$returnedZone","$ZoneReference","parseInt","unlisten","listen","action","reload","renewSession","listingClass","single_Report","single_Sidebar","clearable","handleChangeLink","single_Next","_ref5","_ref6","statesList","countiesList","issuesList","subIssuesList","getStates","trait","State","getCounties","input","selectedOptionState","getProblems","ProblemId","ProblemType","getSubcategories","selectedOptionProblemId","selectedOptionCounty","subvalue","SubcategoryId","checkDocumentExists","getHighestDocumentID","asyncToGenerator","regenerator_default","mark","_callee2","highestID","wrap","_context2","prev","next","_callee","_context","abrupt","recordsLength","DocumentId","stop","sent","Documents","fieldUpdate","fieldProperty","$name","$value","defineProperty","handleChangeState","forceUpdate","isSelectedState","handleChangeCounty","errorMessageCounty","isSelectedCounty","handleChangeProblemId","isSelectedProblem","handleChangeSubCategoryId","selectedOptionSubCategoryId","DocumentName","ActualDocumentName","DisplayDocumentName","submitMessage","authorized","authorizationMessage","profile","role","highestDocumentID","_this$state","loadOptions","style","display","defaultValue","editorConfiguration","removePlugins","utf8_for_xml","inputStr","getAllDocuments","documentList","EditorComponent","saveDocument","allTheContent","getElementsByClassName","allTheTitles","saveButton","publishDocument","rebuiltContent","e","background","Math","round","documentId","selectedDocument","content","addSection","currentModel","model","newNodeList","newSectionElement","removeSection","sectionNumbertoRemove","reactIsErroring","editing","allContent","currentSessions","selectedDocumentId","handleFieldChange","handleModelChange","componentDidUpdate","nextProps","nextState","open","onWillOpen","_thisEditorComponent","uploadingDocument","numberOfResults","allSections","ckeditor_default","editor","ClassicEditor","config","onInit","Editor","getDocument","handleChangeDocument","selectedOptions","testTest","admin","accept","filesPDFs","filesDOCXs","dropzoneActive","dropzoneActivePDF","session_id","FormData","append","fetch","authorization","process","es","onDrop","f","size","onDropPDF","editor_EditorComponent","nameSearch","clearTimeout","searchString","uwalActionName","getElementById","color","disabled","setName","properValue","border","uwalName","handleUWALaddress","handleUWALname","fillInAddress","handleScriptLoad","autocomplete","google","maps","places","Autocomplete","types","componentRestrictions","country","setFields","addListener","place","getPlace","address_components","formatted_address","arrayed_address","unusedAddressPieces","street_number","neighborhood","locality","long_name","short_name","postal_code","neighborhood_long","send_formatted_address","stringify","send_arrayed_address","get","status","savedArrayedAddress","uwalActionAddress","login","$checkAuth","stringAddress","arrayAddress","removeAttribute","UWALname","stringName","react_load_script_lib_default","url","onLoad","onFocus","geolocate","autoComplete","Autocomplete_default","inputProps","items","getItemValue","item","toString","NameId","Name","onSelect","_this6","renderItem","isHighlighted","renderMenu","App","setItem","changeSearchType","searchType","baseClass","querySelectorAll","authenticated","currentLocalities","requestTimer","_this$props$auth","checkAuth","localities","County","currentLocalitiesPull","hasOwnProperty","query","URLSearchParams","queryPulledAddress","queryPulledAddressPieces","localPulledState","localPulledCounty","potholes","queryPulledState","queryPulledCounty","backupNumber","exact","similar","resultsArrayforChecking","address","similarity","testAuthenticated","loggedIn","uwalNameNote","subPath","backgroundColor","$domain","domain","clearSlate","Link","data-toggle","handleUWAL","onKeyPress","handleKeyPress","nothing","walkthrough_Walkthrough","children","Home","cursor","getPost","LatestUpdates","postUrl","postContent","updatesContent","Callback","createHistory","require","AUTH_CONFIG","clientID","clientSecret","callbackUrl","Auth","auth0","WebAuth","redirectUri","scope","handleAuthentication","getAccessToken","getIdToken","scheduleRenewal","authorize","parseHash","authResult","accessToken","idToken","setSession","idTokenPayload","subscriptionsJSON","expiresAt","expiresIn","Date","getTime","cipherUserData","subscriptions","CryptoAES","encrypt","checkSession","redirect","userProfile","tokenRenewalTimeout","clear","returnTo","origin","timeout","now","interceptors","request","use","_x","Promise","reject","masterIssueList","PropsRoute","component","rest","objectWithoutProperties","Route","assign","render","routeProps","_len","Array","_key","finalProps","React","renderMergedProps","GoogleAnalytics","initialize","pageview","routes","Router","path","callback","src_App","Switch","routes_PropsRoute","UWAL","home","ReactDOM"],"mappings":"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","file":"static/js/main.2eb863df.chunk.js","sourcesContent":["import React, { Component } from 'react';\n\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n\n    if (search instanceof RegExp) {\n      throw TypeError('first argument must not be a RegExp');\n    } \n    if (start === undefined) { start = 0; }\n    return this.indexOf(search, start) !== -1;\n  };\n}\n\n// const history = createBrowserHistory();\n\nvar userSelectedContentOptions = '';\nvar projectIssuesObject = {}\n\nfunction titleCase(str) {\n   var splitStr = str.toLowerCase().split(' ')\n\n   if (str.length > 4) {\n     for (var i = 0; i < splitStr.length; i++) {\n         // You do not need to check if i is larger than splitStr length, as your for does that for you\n         // Assign it back to the array\n         splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1)     \n     }\n\n     splitStr = splitStr.join(' ')\n    } else {\n      splitStr = str.toUpperCase()\n    }\n   // Directly return the joined string\n   return splitStr\n}\n\nexport class Walkthrough extends Component {\n  constructor(props) {\n    super(props);\n\n    // console.log(this.props)\n\n  \tvar issues = this.props.masterissues\n\n   \tuserSelectedContentOptions = localStorage.getItem('userSelectedContentOptions')\n\n   \tvar projectIssues = ''\n   \tvar projectAllIssues = ''\n   \tvar projectState = ''\n   \tvar projectCounty = ''\n\n\t\tif (userSelectedContentOptions) {\n\t\t    userSelectedContentOptions = JSON.parse(userSelectedContentOptions)\n\n\t\t    // This is not great, it creates a new object, checking the selected ones first, then adds to that new object after, then sets the state. \n\t\t    // Has to be better but well, this does work.\n\t\t    issues.forEach(key => {\n\t\t    \t//\n\n\t\t    \tif (userSelectedContentOptions.issues.includes(key.value)) {\n\t\t    \t\t//\n\t\t    \t\tvar objectName = key.value + ' selected'\n\n\t\t    \t\tprojectIssuesObject[objectName] = titleCase(key.value)\n\t\t    \t} else {\n\t\t    \t\t//\n\t\t    \t\tprojectIssuesObject[key.value] = titleCase(key.value)\n\t\t    \t}\n\n\t\t    \treturn ''\n\t\t    }, \n\t\t\t    projectIssues = userSelectedContentOptions.issues,\n\t\t\t    projectAllIssues = projectIssuesObject,\n\t\t\t    projectState = userSelectedContentOptions.state.toLowerCase(),\n\t\t\t    projectCounty = userSelectedContentOptions.county.toLowerCase()\n\n\t\t\t\t//userSelectedContentOptions.issues.forEach( function(issue) {\n\t\t\t\t\t//var objectName = issue + ' selected'\n\t\t\t\t\n\t\t\t\t\t//projectIssuesObject[objectName] = issues[issue]\n\t\t\t\t\t// Actually changed this to just compare to the original array but leaving this just for the moment.\n\t\t\t\t//},    \t\t\n\n\t\t\t\t//)\n\n\t\t\t)\n\t\t} else if (issues) {\n        issues.forEach(key => {\n          projectIssuesObject[key.value] = titleCase(key.value)\n          \n          return ''\n        }, \n          projectAllIssues = projectIssuesObject\n        )\n    }\n\n    // console.log(projectAllIssues)\n\n    projectState = localStorage.getItem('uwalAddress_state')\n    projectCounty = localStorage.getItem('uwalAddress_county')\n    var projectPotholes = localStorage.getItem('potholes')\n    var uwalAddressNote = localStorage.getItem('uwalAddressNote')\n    var resultsMeta = localStorage.getItem('resultsMeta')\n    var resultsList = localStorage.getItem('resultsList')\n\n    this.state = {\n      pageContent: '',\n      projectIssues: projectIssues,\n      projectAllIssues: projectAllIssues,\n      projectState: projectState,\n      projectCounty: projectCounty,\n      projectPotholes: projectPotholes,\n      uwalAddressNote: uwalAddressNote,\n      resultsMeta: JSON.parse(resultsMeta),\n      resultsList: resultsList,\n      savedFormattedAddress: '',\n      value: '',\n      uwalNames: [],\n      loading: false,\n      typingTimeout: 0 \n    }\n\n  }\n\n  componentWillMount() {\n    // var _thisComponent = this\n  }\n\n  componentDidMount() {\n    // var _thisComponent = this\n\n    document.title = \"Titlebox - Start Title Walkthrough\"\n  }\n\n  componentWillReceiveProps(props) {\n    // console.log(props)\n\n    this.setState({\n      projectState: props.projectState,\n      projectCounty: props.projectCounty,\n      projectPotholes: props.projectPotholes,\n      uwalAddressNote: props.uwalAddressNote,\n      resultsMeta: props.resultsMeta,\n      resultsList: props.resultsList\n    })\n  }\n\n  goTo(route) {\n    this.props.history.replace(`/${route}`)\n  }\n\n  logout() {\n    this.props.auth.logout();\n  }\n\n  /*\n  handleKeyPress = (event) => {\n    if (event.key === 'Enter') {\n      console.log(event)\n\n      if (document.querySelectorAll('.pac-item').length) {\n        document.querySelectorAll('.pac-item').forEach(function(e) {\n          console.log(e)\n\n          if (e.length) {\n            console.log(e)\n\n            e.click()\n          }\n        })\n      }\n    }\n  }\n  */\n\n  render() {\n  \tvar projectAllIssues = this.state.projectAllIssues\n    var projectState = this.state.projectState\n    var projectCounty = this.state.projectCounty\n    var projectPotholes = this.state.projectPotholes\n    var uwalAddressNote = this.state.uwalAddressNote\n\n    // console.log('projectAllIssues')\n    // console.log(projectAllIssues)\n    if (projectState === 'FL') {\n      projectAllIssues['HOW TO CLOSE IN STATE'] = 'How To Close In State'\n    }\n\n    // console.log('projectAllIssues')\n    // console.log(projectAllIssues)\n\n    // console.log(projectAllIssues['HOW TO CLOSE IN STATE'])\n    \n\n    // console.log(resultsList)\n\n    // console.log('projectPotholes')\n    // console.log(projectPotholes)\n\n      if (projectPotholes) {\n        projectPotholes = JSON.parse(projectPotholes)\n      } else {\n        projectPotholes = ''\n      }\n\t    \n      return (\n\n      \t\t\t<div className=\"\">\n              { uwalAddressNote ?\n              <div className={\"col-md-6 d-block mx-auto text-center rounded shadow uwalMessage \" + uwalAddressNote }>\n                { uwalAddressNote === 'found' ?\n                  <>\n                    <div className=\"col-md-5\">\n                      <img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/success.png\" sizes=\"(max-width: 108px) 100vw, 108px\" className=\"et-waypoint et_pb_animation_top et-animated\"/> <span>Uh-Oh!</span> \n                    </div>\n\n                    <div className=\"col-md-7\">\n                      <span>This property <strong>has been flagged</strong> and is on the UWAL!</span>\n                    </div>\n                  </>\n                : null }\n                { uwalAddressNote === 'notfound' ?\n                  <>\n                    <div className=\"col-md-5\">\n                      <img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/success.png\" sizes=\"(max-width: 108px) 100vw, 108px\" className=\"et-waypoint et_pb_animation_top et-animated\"/> <span>Success!</span>\n                    </div>\n\n                    <div className=\"col-md-7\">\n                      <span>This property has <strong>NOT</strong> been flagged and is not on the UWAL!</span>\n                    </div>\n                  </>\n                : null }\n                \n                <br className=\"clear\"/>\n              </div>\n              : null }\n\n      \t\t\t  \t<div className=\"row stage\">\n      \t\t\t\t  \t<div className=\"content col-md-12\">\n                    { projectState && projectCounty ?\n                    <nav className=\"col-md-12 d-md-block row\">\n                      <div className=\"row\">\n                        <div className=\"col-md-8 p-6 title-clearance\">\n                          <h2 className=\"subTitle dark-grey text-center\">Title Clearance</h2>                \n                          <ul className=\"list-group d-flex flex-row flex-wrap\">\n                            {Object.entries(projectAllIssues).map(([key, value]) =>\n                              <li className={ 'list-group-item w-45 list-group-item-action nav-link rounded shadow ' + key } key={ key }><a href={ '/documents/' + projectState + '/' + projectCounty + '/' + key.replace(' selected','') }><img alt=\"Union Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/Union-1.png\" className=\"et-waypoint et_pb_animation_top et-animated\"/> { value }</a></li>\n                            )}\n                          </ul>\n                        </div>\n\n                        { projectState && projectCounty && projectPotholes ?\n                          <div className=\"col-md-4 p-6 potholes\">\n                            <h2 className=\"subTitle dark-grey text-center\">Potholes</h2>                \n                            <ul>\n                                {Object.entries(projectPotholes).map(([key, value]) =>\n                                  <li className={ 'nav-link ' + key } key={ key }><a className=\"\" href={ '/documents/' + projectState + '/' + projectCounty + '/potholes/' + value['DocumentName'].replace('/','%2F') + '/' + value['DocumentName'].replace('/','%2F') }> { titleCase(value['DocumentName']) }</a></li>\n                                )}\n                            </ul>\n                          </div>\n                        : null }\n                      </div>\n                    </nav>\n                    : null }\n\n                    <br className=\"clear\" />\n\n      \t\t\t\t  \t\t<div className=\"row\">\n      \t\t\t\t\t    \t<div className=\"col-md-12 titleboxBreakdown\">\n\n\n                        <div id=\"how-it-work\" className=\"et_pb_section et_pb_section_1 et_section_regular     how-it-work\">\n                          <div className=\"et_pb_row et_pb_row_4     row col-md-12 reorient\">\n                             <div className=\"et_pb_column et_pb_column_1_4 et_pb_column_4 et_pb_css_mix_blend_mode_passthrough     col-md-3\">\n                                <div className=\"col-md-12 text-center\">\n                                  <h3 className=\"dark-grey\">How do I get started?</h3>\n\n                                  <div className=\"et_pb_module et_pb_blurb et_pb_blurb_0 works-box et_pb_bg_layout_light et_pb_text_align_left et_pb_text_align_center-phone et_pb_blurb_position_left et_pb_blurb_position_top_phone et_had_animation     bg-white shadow p-3 rounded inner-box-height-80\">\n\n                                     <div className=\"et_pb_blurb_content\">\n                                        <div className=\"\"><span className=\"et_pb_image_wrap\"><img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/Union-1.png\" className=\"et-waypoint et_pb_animation_top et-animated\"/></span></div>\n                                        <div className=\"et_pb_blurb_container\">\n                                           <h4 className=\"et_pb_module_header\"><span>Start with an Address</span></h4>\n                                           <div>\n                                            Enter the address of the property you’re working on in the search bar at the top of this page. \n                                            <br/><br/>\n                                            <ul>\n                                              <li>Green or red will tell you if it’s on the UWAL.</li>\n                                              <li>Check to see Potholes you could fall into on the road to settlement.</li>\n                                              <li>Based on what items need clearance, choose a clearance category on the left to start clearing title.</li>\n                                            </ul>\n                                           </div>\n                                        </div>\n                                     </div>\n                                  </div>\n\n                                  <br/><br/>\n\n                                  {/* <a href=\"\" className=\"video_link p-2\">Watch a Video!</a> */}\n                                </div>\n                             </div>{/* column_1 */}\n\n                             <div className=\"et_pb_column et_pb_column_1_4 et_pb_column_4 et_pb_css_mix_blend_mode_passthrough     col-md-3\">\n                                <div className=\"col-md-12 text-center\">\n                                  <h3 className=\"dark-grey\">How do I clear title with TitleBox?</h3>\n\n                                  <div className=\"et_pb_module et_pb_blurb et_pb_blurb_0 works-box et_pb_bg_layout_light et_pb_text_align_left et_pb_text_align_center-phone et_pb_blurb_position_left et_pb_blurb_position_top_phone et_had_animation     bg-white shadow p-3 rounded inner-box-height-80\">\n                                     <div className=\"et_pb_blurb_content\">\n                                        <div className=\"\"><span className=\"et_pb_image_wrap\"><img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/Union-6.png\" className=\"et-waypoint et_pb_animation_top et-animated\"/></span></div>\n                                        <div className=\"et_pb_blurb_container\">\n                                           <h4 className=\"et_pb_module_header\"><span>Choose your problem</span></h4>\n                                           <p>\n                                            Above this box along the left, there are 10 categories for title clearance. Start with an item on your search that needs to be cleared and choose the appropriate category.\n                                           </p>\n                                        </div>\n                                     </div>\n                                  </div>\n\n                                  <br/><br/>\n\n                                  {/* <a href=\"\" className=\"video_link p-2\">Watch a Video!</a> */}\n                                </div>\n                             </div>{/* column_2 */}\n\n                             <div className=\"et_pb_column et_pb_column_1_4 et_pb_column_4 et_pb_css_mix_blend_mode_passthrough     col-md-3\">\n                                <div className=\"col-md-12 text-center\">\n                                  <h3 className=\"dark-grey\">Check for Potholes!</h3>\n\n                                  <div className=\"et_pb_module et_pb_blurb et_pb_blurb_0 works-box et_pb_bg_layout_light et_pb_text_align_left et_pb_text_align_center-phone et_pb_blurb_position_left et_pb_blurb_position_top_phone et_had_animation     bg-white shadow p-3 rounded inner-box-height-80\">\n\n                                     <div className=\"et_pb_blurb_content\">\n                                        <div className=\"\"><span className=\"et_pb_image_wrap\"><img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/Union-6.png\" className=\"et-waypoint et_pb_animation_top et-animated\"/></span></div>\n                                        <div className=\"et_pb_blurb_container\">\n                                           <h4 className=\"et_pb_module_header\"><span>Close with comfort</span></h4>\n                                           <p>\n                                              Potholes are typically not on your title search, but important things you need to know before you settle and insure. Checking for Potholes is your way to close and insure transactions in areas that you may not be familiar with.\n                                              <br/><br/>\n                                              Potholes can be specific to a property’s state and county. Once you enter an address, the Potholes list appears along the right.\n                                           </p>\n                                        </div>\n                                     </div>\n                                  </div>\n\n                                  <br/><br/>\n\n                                  {/* <a href=\"\" className=\"video_link p-2\">Watch a Video!</a> */}\n                                </div>\n                             </div>{/* column_3 */}\n\n                             <div className=\"et_pb_column et_pb_column_1_4 et_pb_column_4 et_pb_css_mix_blend_mode_passthrough     col-md-3\">\n                                <div className=\"col-md-12 text-center\">\n                                  <h3 className=\"dark-grey\">What&apos;s the UWAL?</h3>\n\n                                  <div className=\"et_pb_module et_pb_blurb et_pb_blurb_0 works-box et_pb_bg_layout_light et_pb_text_align_left et_pb_text_align_center-phone et_pb_blurb_position_left et_pb_blurb_position_top_phone et_had_animation     bg-white shadow p-3 rounded inner-box-height-80\">\n                                     <div className=\"et_pb_blurb_content\">\n                                        <div className=\"\"><span className=\"et_pb_image_wrap\"><img alt=\"Success Icon\" src=\"https://thetitlebox.com/wp-content/uploads/2019/10/Union-5.png\" className=\"et-waypoint et_pb_animation_top et-animated\"/></span></div>\n                                        <div className=\"et_pb_blurb_container\">\n                                           <h4 className=\"et_pb_module_header\"><span>Underwriter Alert List</span></h4>\n                                           <p>\n                                              We’ve gathered thousands of addresses and names that have appeared in emailed alerts from title underwriters and made them searchable. The UWAL is updated daily and is the most comprehensive single source for high-risk properties and people in the title industry.\n                                              <br/><br/>\n                                              To search a name, toggle to Search by Name above the search bar.\n                                           </p>\n                                        </div>\n                                     </div>\n                                  </div>\n\n                                  <br/><br/>\n\n                                  {/* <a href=\"\" className=\"video_link p-2\">Watch a Video!</a> */}\n                                </div>\n                             </div>{/* column_4 */}\n\n                        </div>{/* reorient */}\n                      </div>{/* how-it-work */}\n\n      \t\t\t\t\t    </div>{/* titleboxBreakdown */}\n      \t\t\t\t\t\t</div>{/* row */}\n      \t\t\t    </div>{/* content */}\n      \t\t\t  </div>{/* row */}\n      \t\t\t</div>\n\n      )\n  }\n}\n\nexport default Walkthrough;\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\n//import { createBrowserHistory } from \"history\";\n\n//const history = createBrowserHistory();\n\nvar userSelectedContentOptions = '';\n\nvar projectIssuesObject = {}\n\nvar issues = {\n\t'bankruptcy': \"Bankruptcy\",\n\t'judgments': \"Judgments\",\n\t'foreclosure': \"Foreclosure\",\n\t'chain-of-title': \"Chain of Title\",\n\t'mortgage': \"Mortgage\",\n\t'associations': \"Associations\",\n\t'entities': \"Entities\",\n\t'real-estate-taxes': \"Real Estate Taxes\",\n\t'estate': \"Estate\",\n\t'marital-and-divorce': \"Marriage and Divorce\"\n};\n\nclass WalkthroughFinish extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t   \tvar projectIssues = ''\n\t   \tvar projectAllIssues = ''\n\t   \tvar projectState = ''\n\t   \tvar projectCounty = ''\n\n\t   \tuserSelectedContentOptions = localStorage.getItem('userSelectedContentOptions')\n\n\t\tif (userSelectedContentOptions) {\n\t\t    userSelectedContentOptions = JSON.parse(userSelectedContentOptions)\n\n\t\t    // This is not great, it creates a new object, checking the slected ones first, then adds to that new object after, then sets the state. \n\t\t    // Has to be better but well, this does work.\n\t\t    Object.entries(issues).map(([key, value]) => {\n\t\t    \tif (userSelectedContentOptions.issues.includes(key)) {\n\t\t    \t\t//console.log(key)\n\t\t    \t\tvar objectName = key + ' selected'\n\n\t\t    \t\tprojectIssuesObject[objectName] = value\n\t\t    \t} else {\n\t\t    \t\tprojectIssuesObject[key] = value\n\t\t    \t}\n\n\t\t    \treturn ''\n\t\t    }, \n\t\t\t    projectIssues = userSelectedContentOptions.issues,\n\t\t\t    projectAllIssues = projectIssuesObject,\n\t\t\t    projectState = userSelectedContentOptions.state.toLowerCase(),\n\t\t\t    projectCounty = userSelectedContentOptions.county.toLowerCase()\n\n\t\t\t\t//userSelectedContentOptions.issues.forEach( function(issue) {\n\t\t\t\t\t//var objectName = issue + ' selected'\n\t\t\t\t\n\t\t\t\t\t//projectIssuesObject[objectName] = issues[issue]\n\t\t\t\t\t// Actually changed this to just compare to the original array but leaving this just for the moment.\n\t\t\t\t//},    \t\t\n\n\t\t\t\t//)\n\t\t\t)\n\t\t}\n\n\t\t//console.log(projectIssues)\n\t\t//console.log(projectIssuesObject)\n\n\t    this.state = {\n\t      projectIssues: projectIssues,\n\t      projectAllIssues: projectAllIssues,\n\t      projectState: projectState,\n\t      projectCounty: projectCounty\n\t    }\t\t\n\t}\n\n  \tcomponentDidMount() {\n      document.title = \"Titlebox - Finished Title Walkthrough!\"\n\t}\n\n\trender() {\n\t  \t//var projectIssues = this.state.projectIssues;\n\t  \tvar projectAllIssues = this.state.projectAllIssues;\n\t\tvar projectState = this.state.projectState;\n\t\tvar projectCounty = this.state.projectCounty;\n\n\t    return (\n\t\t\t<div className=\"container\">\n\t\t\t  \t<div className=\"row\">\n\t\t\t\t  \t<nav className=\"col-md-3 d-md-block sidebar\">\n\t\t\t\t  \t\t<div className=\"row first-row\">\n\t\t\t\t\t  \t\t<small className=\"d-block pull-left state-box\">\n\t\t\t\t\t  \t\t\t{ projectState }\n\t\t\t\t\t  \t\t</small>\n\n\t\t\t\t\t  \t\t<small className=\"d-block pull-right county-box\">\n\t\t\t\t\t  \t\t\t{ projectCounty }\n\t\t\t\t\t  \t\t</small>\n\t\t\t\t  \t\t</div>\n\n\t\t\t\t\t\t<ul className=\"nav flex-column\">\n\t\t\t\t\t\t  {Object.entries(projectAllIssues).map(([key, value]) =>\n\t\t\t              \t<li className={ 'nav-link ' + key } key={ key }><a href={ '/documents/' + projectState + '/' + projectCounty + '/' + key.replace(' selected','') }>{ value }</a></li>\n\t\t\t\t\t\t  )}\n\t\t\t            </ul>\n\t\t\t\t  \t</nav>\n\n\t\t\t\t  \t<div className=\"content col-md-9\">\n\t\t\t\t  \t\t<div className=\"row\">\n\t\t\t\t\t    \t<div className=\"col-md-9\">\n\t\t\t\t\t    \t\t<h1>Walkthrough Finished!</h1>\n\n\t\t\t\t\t    \t\t<p>Project complete, nice job clearing all the title issues. Head back to <a href=\"/\">Home</a> to start your next project.</p>\n\t\t\t\t\t    \t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t    </div>\n\t\t\t    </div>\n\t\t\t</div>\n    \t)\n\t}\n}\n\nexport default withRouter(WalkthroughFinish);\n","import React, { Component } from 'react';\r\nimport { createBrowserHistory } from \"history\";\r\nimport JsxParser from 'react-jsx-parser'\r\nimport Select from 'react-select';\r\nimport axios from 'axios';\r\nimport { HashLink as Link } from 'react-router-hash-link';\r\n\r\nimport 'luminous-lightbox/dist/luminous.min';\r\n\r\nconst history = createBrowserHistory();\r\n\r\nvar userSelectedContentOptions = '';\r\n//var projectIssues = '';\r\n\r\nvar projectIssuesObject = {}\r\n\r\nfunction utf8_for_xml(inputStr) {\r\n  return inputStr.replace(/[^\\x20-\\xFF\\x85\\xA0-\\uD7FF\\uE000-\\uFDCF\\uFDE0-\\uFFFD]/gm, '');\r\n}\r\n\r\nvar $domain = window.location.hostname\r\nvar API = '';\r\n\r\nif (window.location.hostname === 'localhost') {\r\n  API = 'http://' + window.location.hostname + ':3001/api';\r\n} else {\r\n  API = 'https://' + window.location.hostname + '/api';\r\n}\r\n\r\n\r\n/*\r\nvar getIssues = (input) => {\r\n  return axios.post(API + `/issues`, {\r\n  \tdata: {\r\n\r\n  \t}\r\n  })\r\n  .then((response) => {\r\n    var issuesList = []\r\n\r\n    //\r\n\r\n    if (response.data.files) {\r\n\t    Object.values(response.data.files.recordsets[0]).forEach(function(trait) {\r\n\t      issuesList.push({ value: trait.ProblemType, label: trait.ProblemType });\r\n\t    });\r\n\t}\r\n    //\r\n    return issuesList;\r\n  }).then((json) => {\r\n    return { options: json };\r\n  });\r\n}\r\n*/\r\n\r\nfunction validateEmail(value) {\r\n    // regex from http://stackoverflow.com/questions/46155/validate-email-address-in-javascript\r\n    var re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n    return re.test(value);\r\n}\r\n\r\nfunction titleCase(str) {\r\n   var splitStr = str.toLowerCase().split(' ')\r\n\r\n   if (str.length > 4) {\r\n     for (var i = 0; i < splitStr.length; i++) {\r\n         // You do not need to check if i is larger than splitStr length, as your for does that for you\r\n         // Assign it back to the array\r\n         splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1)     \r\n     }\r\n\r\n     splitStr = splitStr.join(' ').replace('_', '')\r\n    } else {\r\n      splitStr = str.toUpperCase()\r\n    }\r\n   return splitStr\r\n}\r\n\r\nfunction potholesList(stateLocation, countyLocation, sid) {\r\n  return axios.post(API + `/potholes`, {\r\n      data: {\r\n        sid: sid,\r\n        stateName: stateLocation,\r\n        countyName: countyLocation\r\n      }\r\n    })\r\n    .then((response) => {\r\n      // console.log(response)\r\n\r\n      // return response.data.result.recordset\r\n      return response.data.result\r\n    })\r\n    .catch(err => \r\n      console.log(err)\r\n    )\r\n}\r\n\r\nvar Next = (props) => {\r\n\tvar split = props.nextDocument;\r\n\r\n\tif (split && split.includes('/')) {\r\n\t\tsplit = split.split('/');\r\n\t\tsplit = split[split.length-1]\r\n\t}\r\n\r\n \tif (props.nextDocument) {\r\n    \treturn <a href={ props.nextDocument } className='btn btn-primary float-right next-document'>{ 'Next: ' + split }</a>;\r\n \t} else {\r\n \t\treturn '';\r\n \t}\r\n}\r\n\r\nvar pricingTable = (userLevel) => {\r\n  var $userLevel = userLevel\r\n\r\n  return axios.post(API + `/pricing`, {\r\n    \tmethod: 'HEAD',\r\n        data: {\r\n        \tuserLevel: $userLevel\r\n        }\r\n    })\r\n  .then((response) => {\r\n\r\n    return response\r\n  }).then((json) => {\r\n  \t// console.log(json.data.result.recordsets[0][0])\r\n\r\n    return json.data.result.recordsets[0][0]\r\n  })\r\n}\r\n\r\nvar Sidebar = (props) => {\r\n\t// console.log(props)\r\n\t// console.log(this)\r\n\r\n \tif (props.sections) {\r\n    \treturn ([\r\n\t\t\t<ul className=\"sidebar-sticky\" key=\"sidebar\">\r\n\t\t\t  {Object.entries(props.sections).map(([key, value]) =>\r\n              \t<li className={ 'nav-link ' + key } key={ key }><Link to={{\r\n\t\t\t\t  pathname: '/documents/' + props.state + '/' + props.county + '/' + props.issue + '/' + props.subissue + '/' + props.subissue + '/' + value.href.replace('?', ''),\r\n\t\t\t\t  search: '',\r\n\t\t\t\t  hash: '',\r\n\t\t\t\t  state: { fromDashboard: true }\r\n\t\t\t\t}}>{ value.name.replace(/<(?:.|\\n)*?>/gm, '') }</Link></li>\r\n\t\t\t  )}\r\n            </ul>\r\n    \t]);\r\n \t} else {\r\n \t\treturn '';\r\n \t}\r\n}\r\n\r\nclass Report extends Component {\r\n\tconstructor(props) {\r\n\t    super(props);\r\n\r\n\t    this.state = {\r\n\t      reportEmail: '',\r\n\t      pageTitle: this.props.pageTitle,\r\n\t      reportState: this.props.state,\r\n\t      reportCounty: this.props.county,\r\n\t      reportDocument: this.props.documentName,\r\n\t      reportSection: '',\r\n\t      reportMessage: '',\r\n\t      isSelectedSection: '',\r\n\t      isFilledreportMessage: '',\r\n\t      sendingReportStatus: this.props.sending,\r\n\t      sendingReportStatusMessage: '',\r\n\t  \t};\r\n\r\n\t  \tthis.handleSubmit = this.handleSubmit.bind(this);\r\n\t  \tthis.hideShowReportCard = this.hideShowReportCard.bind(this);\r\n\t}\r\n\r\n\thideShowReportCard(event) {\r\n\t  \tthis.props.hideMe();\r\n\t}\r\n\r\n\thandleSubmit(event) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.persist();\r\n\r\n\t\tvar _thisComponentReport = this\r\n\r\n\t\tvar dataEmail = this.state.reportEmail;\r\n\t\tvar dataSections = [];\r\n\t\tObject.values(this.state.reportSection).forEach( function(index) {\r\n      \t\tdataSections.push(index.value)\r\n      \t}) \r\n      \tdataSections = dataSections.join(', ')\r\n      \tvar dataPageTitle = this.state.pageTitle;\r\n      \tvar dataMessage = this.state.reportMessage;\r\n      \tvar reportState = this.state.reportState;\r\n      \tvar reportCounty = this.state.reportCounty;\r\n      \tvar reportDocument = this.state.reportDocument;\r\n\r\n      \tvar AdminTextMessage = 'State: ' + reportState + ', County: ' + reportCounty + ', Page Title: ' + dataPageTitle + ', Document Name: ' + reportDocument + ' Section: ' + dataSections + ' Message: ' + dataMessage;\r\n      \tvar AdminHTMLMessage = '<p>State: ' + reportState + ', County: ' + reportCounty + ', Page: ' + dataPageTitle + '</p><p>Section: ' + dataSections + '</p><p> Document Name: ' + reportDocument + '</p><p>Message: ' + dataMessage + '<p>';\r\n      \tvar UserTextMessage = 'Thanks for reporting a correction or update to Titlebox! We\\'ll review this quickly and update Titlebox with the right information.';\r\n      \tvar UserHTMLMessage = 'Thanks for reporting a correction or update to Titlebox! We\\'ll review this quickly and update Titlebox with the right information.';\r\n\r\n\r\n\r\n\t    _thisComponentReport.reportSection(this.state.reportSection)\r\n\t    _thisComponentReport.reportMessage(this.state.reportMessage)\r\n\t    _thisComponentReport.reportEmail(this.state.reportEmail)\r\n\r\n        this.setState({\r\n        \tsendingReportStatus: 'sending',\r\n        \tsendingReportStatusMessage: 'Sending... <i className=\"fa fa-loading\"></i>'\r\n        })\r\n\r\n        if (validateEmail(dataEmail) && dataEmail && dataMessage) {        \r\n\t        axios.post(API + `/report`, {\r\n\t            data: {\r\n\t                email: dataEmail,\r\n\t                AdminTextMessage: AdminTextMessage,\r\n\t                AdminHTMLMessage: AdminHTMLMessage,\r\n\t                UserTextMessage: UserTextMessage,\r\n\t                UserHTMLMessage: UserHTMLMessage\r\n\t            },\r\n\t            method: 'HEAD',\r\n\t                  headers: {\r\n\t                    'Content-Type': 'application/json',\r\n\t                  }\r\n\t            })\r\n\t            .then((response) => {\r\n\t                //\r\n\t                //return response;\r\n\r\n\t\t\t        this.setState({\r\n\t\t\t        \tsendingReportStatus: 'success',\r\n\t\t\t        \tsendingReportStatusMessage: 'Thank you! We\\'ll take a look and follow up with you.'\r\n\t\t\t        })\r\n\r\n\t\t\t        setTimeout( function() {\r\n\t\t\t       \t\t_thisComponentReport.hideShowReportCard()\r\n\t\t\t        }, 2000)\r\n\t            }).catch((error) => {\r\n\t                //\r\n\t            });\r\n        } else {\r\n        \tif (!dataEmail) {\r\n\t\t        this.setState({\r\n\t\t        \tsendingReportStatus: 'invalid',\r\n\t\t        \tsendingReportStatusMessage: 'Please enter your email.'\r\n\t\t        })\r\n\t\t    } else {\r\n\t\t        this.setState({\r\n\t\t        \tsendingReportStatus: 'invalid',\r\n\t\t        \tsendingReportStatusMessage: 'Please enter all details.'\r\n\t\t        }) \t\r\n\t\t    }\r\n        } \r\n\t}\r\n\r\n  \treportEmail = (reportEmail) => {\r\n\r\n  \t\tif (typeof reportEmail.target !== \"undefined\") {\r\n\t\t\tthis.setState({ \r\n\t\t\t\treportEmail: reportEmail.target.value \r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (reportEmail) {\r\n\t\t\tthis.setState({ \r\n\t\t\t\tsendingReportStatusMessage: ''\r\n\t\t\t})\r\n\t\t}\r\n  \t}\r\n\r\n  \treportSection = (reportSection) => {\r\n\r\n\r\n\t    if (reportSection.length) {\r\n\t\t\tthis.setState({ \r\n\t\t\t\treportSection: reportSection,\r\n\t\t\t\tisSelectedSection: ''\r\n\t\t\t},\r\n\t      \t\t() => Object.values(this.state.reportSection).forEach( function(index) {\r\n\t      \t\t})\r\n\t    \t)\r\n\r\n\t    }\r\n  \t}\r\n\r\n  \treportMessage = (reportMessage) => {\r\n\r\n\r\n  \t\tif (reportMessage) {\r\n  \t\t\tif (typeof reportMessage.target !== \"undefined\") {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\treportMessage: reportMessage.target.value,\r\n\t\t\t\t\tisFilledreportMessage: ''\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisFilledreportMessage: ''\r\n\t\t\t\t})\t\t\t\t\r\n\t\t\t}\r\n\t    } else {\r\n\t      this.setState({ \r\n\t        isFilledreportMessage: 'invalid'\r\n\t      })\r\n\t    }\r\n  \t}\r\n\r\n\trender () {\r\n\t\tvar isSelectedSection = this.state.isSelectedSection \r\n\t\tvar isFilledreportMessage = this.state.isFilledreportMessage\r\n\t\tvar sendingReportStatus = this.state.sendingReportStatus\r\n\t\tvar sendingReportStatusMessage = this.state.sendingReportStatusMessage\r\n\r\n\t\tvar sectionsArray = []\r\n\t\tthis.props.sections.forEach( function(index) {\r\n\t\t\tsectionsArray.push(\r\n\t\t\t\t{ value: index.name, label: index.name }\r\n\t\t\t)\r\n\t\t})\r\n\t\t\r\n\t \tif (this.props.sections) {\r\n\t            return ([\r\n\t\t            <div className={ \"row clear reportCard \" + sendingReportStatus } key=\"report\">\r\n\t\t                <div className=\"card col-md-12\">\r\n            \t\t\t\t<div className=\"card-header\">\r\n\t\t                    \t<h5 className=\"card-title float-left\">What needs to be updated?</h5>\r\n                   \t\t\t\t<button type=\"button\" className=\"close\" onClick={ this.hideShowReportCard } data-dismiss=\"modal\">&times;</button>\r\n                   \t\t\t</div>\r\n\t\t                    \r\n\t\t                    <div className=\"card-body\">\t\t                        \r\n\t\t                        <form onSubmit={this.handleSubmit}>\r\n\t\t                            <div className=\"form-group\">\r\n\t\t                                <label htmlFor=\"selectSections\" className={ \"selectSections \" + isSelectedSection }>What section(s)?\r\n\t\t\t\t\t\t\t\t             <Select\r\n\t\t\t\t\t\t\t\t                key=\"reportSections\"\r\n\t\t\t\t\t\t\t\t                name=\"reportSections\"\r\n\t\t\t\t\t\t\t\t                value={this.state && this.state.reportSection}\r\n\t\t\t\t\t\t\t\t                multi\r\n\t\t\t                  \t\t\t\t\tonChange={(...args) => this.reportSection(...args)}\r\n\t\t\t\t\t\t\t\t                placeholder=\"Choose sections\"\r\n\t\t\t\t\t\t\t\t                options={sectionsArray}\r\n\t\t\t\t\t\t\t\t                //required\r\n\t\t\t\t\t\t\t\t            />\r\n\r\n            \t\t\t\t\t\t\t\t<small className={ 'selectSectionsMessage' }>Please let us know which section.</small>\r\n\t\t\t\t\t\t\t\t        </label>\r\n\t\t                            </div>\r\n\r\n\t\t                             <div className=\"form-group\">\r\n\t\t                                <label htmlFor=\"textMessage\" className={ \"textMessage \" + isFilledreportMessage }>What needs to be updated?\r\n\t\t\t\t\t\t\t\t             <textarea\r\n\t\t\t\t\t\t\t\t             \tkey=\"reportMessage\"\r\n\t\t\t\t\t\t\t\t             \tname=\"reportMessage\"\r\n\t\t\t\t\t\t\t\t             \tonChange={(...args) => this.reportMessage(...args)}\r\n\t\t\t\t\t\t\t\t             \tclassName=\"form-control\"\r\n\t\t\t\t\t\t\t\t             \t//required\r\n\t\t\t\t\t\t\t\t             \t></textarea>\r\n\r\n            \t\t\t\t\t\t\t\t<small className={ 'reportMessage' }>Please tell us what should be updated.</small>\r\n\t\t\t\t\t\t\t            </label>\r\n\t\t                            </div>\r\n\r\n\t\t\t                        <div className=\"\">\r\n\t\t\t                            <label htmlFor=\"reportEmail\" className=\"backupEmailaddress\">Email address\r\n\t\t\t\t                            <input\r\n\t\t\t\t                                className={ 'form-control col-md-12 float-left ' + this.state.sending }\r\n\t\t\t\t                                placeholder=\"Enter your email...\"\r\n\t\t\t\t                                name=\"reportEmail\"\r\n\t\t\t\t                                key=\"reportEmail\"\r\n\t\t\t\t                                type=\"text\"\r\n\t\t\t\t                                onChange={this.reportEmail}\r\n\t\t\t\t                                //required\r\n\t\t\t\t                            />\r\n\t\t\t                            </label>\r\n\r\n\t\t\t                            <input\r\n\t\t                                    className=\"btn btn-primary col-md-2 float-right form-submit\"\r\n\t\t                                    value=\"Send\"\r\n\t\t                                    type=\"submit\"\r\n\t\t                                />\r\n\r\n            \t\t\t\t\t\t\t<small className={ 'sendingReportStatusMessage' }><JsxParser jsx={ sendingReportStatusMessage }/></small>\r\n\t\t                            </div>\r\n\t\t                        </form>\r\n\t\t                    </div>\r\n\t\t                </div>\r\n\t\t            </div>\r\n\t            ]);\r\n\t \t} else {\r\n\t \t\treturn '';\r\n\t \t}\r\n\t}\r\n}\r\n\r\nexport class SingleDocument extends Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state = {\r\n      pageContent: '',\r\n      pageDropdown1: '',\r\n      pageDropdown2: '',\r\n      pageTitle: '',\r\n      sections: '',\r\n      projectIssues: '',\r\n      projectState: '',\r\n      projectCounty: '',\r\n      showReportCard: false,\r\n      showSignup: false,\r\n      selectedOptionSection: '',\r\n      sending: 'not'\r\n  \t}\r\n\r\n  \tvar issues = this.props.masterissues\r\n\r\n   \tvar projectIssues = ''\r\n   \tvar projectAllIssues = ''\r\n   \tvar projectState = ''\r\n   \tvar projectCounty = ''\r\n\r\n   \tuserSelectedContentOptions = localStorage.getItem('userSelectedContentOptions')\r\n\r\n   \t/*\r\n   \tgetIssues().then(result => {\r\n   \t\t//\r\n   \t})\r\n\t*/\r\n\r\n\r\n\tif (userSelectedContentOptions) {\r\n\t    userSelectedContentOptions = JSON.parse(userSelectedContentOptions)\r\n\r\n\t    // This is not great, it creates a new object, checking the selected ones first, then adds to that new object after, then sets the state. \r\n\t    // Has to be better but well, this does work.\r\n\t    issues.forEach(key => {\r\n\t    \t//\r\n\r\n\t    \tif (userSelectedContentOptions.issues.includes(key.value)) {\r\n\t    \t\t//\r\n\t    \t\tvar objectName = key.value + ' selected'\r\n\r\n\t    \t\tprojectIssuesObject[objectName] = titleCase(key.value)\r\n\t    \t} else {\r\n\t    \t\t//\r\n\t    \t\tprojectIssuesObject[key.value] = titleCase(key.value)\r\n\t    \t}\r\n\r\n\t    \treturn ''\r\n\t    }, \r\n\t\t    projectIssues = userSelectedContentOptions.issues,\r\n\t\t    projectAllIssues = projectIssuesObject,\r\n\t\t    projectState = userSelectedContentOptions.state.toLowerCase(),\r\n\t\t    projectCounty = userSelectedContentOptions.county.toLowerCase()\r\n\r\n\t\t)\r\n\t} else if (issues) {\r\n        issues.forEach(key => {\r\n          projectIssuesObject[key.value] = titleCase(key.value)\r\n          \r\n          return ''\r\n        }, \r\n          projectAllIssues = projectIssuesObject\r\n        )\r\n\t}\r\n\r\n\r\n    this.state = {\r\n      pageContent: '<i className=\"fa fa-spinner fa-pulse\"></i> Loading...',\r\n      projectIssues: projectIssues,\r\n      projectAllIssues: projectAllIssues,\r\n      projectState: projectState,\r\n      projectCounty: projectCounty,\r\n      pageIssue: '',\r\n      pageId: ''\r\n    }\r\n\r\n    this.hideShowReportCard = this.hideShowReportCard.bind(this);\r\n    this.hideShowSignup = this.hideShowSignup.bind(this);\r\n  }\r\n\r\n  hideShowReportCard(event) {\r\n  \tthis.setState(prevState => ({\r\n\t\tshowReportCard: !prevState.showReportCard\r\n\t}))\r\n  }\r\n\r\n  hideShowSignup(event) {\r\n  \tthis.setState(prevState => ({\r\n\t\tshowSignup: !prevState.showSignup\r\n\t}))\r\n  }\r\n\r\n  handleChangeLink(event) {\r\n  \tvar documentChosen = event.value\r\n\r\n\r\n\r\n\thistory.push(documentChosen)\r\n\r\n\tvar reloadHREF = window.location.href\r\n\r\n\twindow.location.href = reloadHREF\r\n  }\r\n\r\n\r\n  componentDidMount() { \r\n    var _thisComponent = this;\r\n    var sid = localStorage.getItem('sid')\r\n\r\n    document.body.setAttribute('oncopy', 'return false');\r\n    document.body.setAttribute('oncut', 'return false');\r\n    document.addEventListener('contextmenu', function(ev) { ev.preventDefault(); return false; }, false);\r\n\r\n    document.title = \"Titlebox\"\r\n\r\n\t// const LOCAL = '/documents/';\r\n\tvar filesURL = API + '/documents/';\r\n\tvar folders = '';\r\n\r\n\tvar state = this.props.match.params.state;\r\n\tvar county = this.props.match.params.county;\r\n\tvar issue = this.props.match.params.issue;\r\n\tvar subissue = this.props.match.params.subissue;\r\n\tvar id = this.props.match.params.id;\r\n\tvar section = this.props.match.params.section;\r\n\r\n\tthis.setState({\r\n\t\tissue: issue,\r\n\t\tsubissue: subissue,\r\n\t\tpageId: id,\r\n\t\tprojectState: state,\r\n\t\tprojectCounty: county\r\n\t})\r\n\r\n\tvar $uwalAddressfromLocal = localStorage.getItem('uwalAddress')\r\n\r\n\tif ($uwalAddressfromLocal) {\r\n\t\tthis.setState({\r\n\t\t\tsavedFormattedAddress: localStorage.getItem('uwalAddress').replace(/\"/gi, '')\r\n\t\t})\r\n\r\n      var $potholes = localStorage.getItem('potholes')\r\n\r\n      if (!$potholes) {\r\n        potholesList(state, county)\r\n        .then((response) => {\r\n          this.setState({ \r\n            // projectPotholes: response\r\n          })\r\n        })\r\n      } else {\r\n\t      this.setState({ \r\n\t        projectPotholes: $potholes\r\n\t      })\r\n      }\r\n\t}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\tif (state)\r\n\t\tfolders += state\r\n\r\n\tif (county)\r\n\t\tfolders += '/' + county\r\n\r\n\tif (issue)\r\n\t\tfolders += '/' + issue\r\n\r\n\t// console.log(subissue)\r\n\r\n\tif (subissue) {\r\n\t\tsubissue = subissue.replace(/__/gi, \" #\").replace(/_/gi, \" \").toUpperCase()\r\n\t\t// subissue = subissue \r\n\r\n\t\tfolders += '/' + subissue\r\n\t}\r\n\r\n\tfilesURL += folders\r\n\r\n\tfilesURL = filesURL.replace(/[^a-z0-9\\/:/.]/gi, '_').toLowerCase()\r\n\r\n    // document.title = \"Titlebox - \" + state.toUpperCase() + \" \" + titleCase(county) + \" \" + titleCase(issue)\r\n\r\n\r\n    // console.log(filesURL)\r\n\r\n\tif (typeof id === 'undefined') {\r\n\t\t_thisComponent.setState({\r\n\t\t\t// pageTitle: titleCase(issue)\r\n\t\t})\r\n\r\n\t\t// console.log(filesURL)\r\n\t\t// console.log(issue)\r\n\t\t// console.log(subissue)\r\n\r\n\t\taxios.post(filesURL, {\r\n                data: {\r\n                \tsid: sid,\r\n                \tissue: issue,\r\n                    subissue: subissue            \r\n                }\r\n\t\t    })\r\n\t\t    .then(function(response) {\r\n\t\t    \tvar links = '<ul className=\"nav flex-column\">'\r\n\t\t    \t//\r\n\t\t    \t//response.data.files.recordset\r\n\r\n\t\t    \t/*\r\n\t\t    \tconsole.log('response')\r\n\t\t    \tconsole.log(response)\r\n\t\t    \tconsole.log(response.data.files.recordsets[0])\r\n\t\t    \tconsole.log(response.data.files.recordsets[2])\r\n\t\t\t\t*/\r\n\r\n\t\t    \tif (response.data.files && response.data.type === 'Judgments') {\r\n\t            \tvar documentNames = response.data.files;\r\n\t\t    \t// if (response.data.files.recordset && response.data.files.recordset.length > 30 && !subissue) {\r\n\t            \t// var documentNames = response.data.files.recordset;\r\n\r\n\t            \tif (response.data.files.length > 1) {\r\n\t\t            \tdocumentNames = documentNames.sort();\r\n\t\t            \tdocumentNames.sort(function(a,b) {return (a.Subcategory > b.Subcategory) ? 1 : ((b.Subcategory > a.Subcategory) ? -1 : 0);} ); \r\n\t\t\t\t\t\tvar reformattedDropdown1 = documentNames.map(obj => { \r\n\t\t\t\t\t\t   var rObj = {}\r\n\t\t\t\t\t\t   var issueEncodeSafe = encodeURI(issue).replace(/\\//gi, \r\n\t\t\t\t\t\t   \t'%2F')\r\n\t\t\t\t\t\t   var issueSubcategory = encodeURI(obj.Subcategory).replace(/\\//gi, \r\n\t\t\t\t\t\t   \t'%2F')\r\n\r\n\t\t\t\t\t\t   \tvar linkURLs = issueEncodeSafe + '/' + issueSubcategory + '/' + issueSubcategory\r\n\r\n\t\t\t            \t// console.log(linkURLs)\r\n\r\n\t\t\t\t\t\t   rObj = { value: linkURLs, label: obj.Subcategory }\r\n\t\t\t\t\t\t   return rObj\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t    \t_thisComponent.setState({\r\n\t\t                \tpageContent: '',\r\n\t\t                \tpageDropdown1: reformattedDropdown1\r\n\t\t            \t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// console.log(response.data.files)\r\n\r\n\t\t\t\t    \tresponse.data.files.forEach( function(file) {\r\n\t\t\t\t    \t\tlinks += '<li className=\"nav-link\"><a href=\"./' + issue + '/' + file.Subcategory + '/' + file.Subcategory + '\">' + titleCase(file.Subcategory) + '</a></li>'\r\n\t\t\t\t    \t})\r\n\t\t\t\t    \tlinks += '</ul>'\r\n\r\n\t\t            \t_thisComponent.setState({\r\n\t\t                \tpageContent: links\r\n\t\t            \t});\r\n\t\t\t\t\t}\r\n\r\n\t            } else if (response.data.files.recordset && subissue && subissue.match(/(\\d+)|^(LT-XX|DR-XX|lt_xx|dr_xx)/g)) {\r\n\r\n\t            \tdocumentNames = response.data.files.recordset;\r\n\r\n\t            \tdocumentNames = documentNames.sort();\r\n\r\n\t            \t// console.log(documentNames)\r\n\r\n\t\t\t\t\treformattedDropdown1 = documentNames.map(obj => { \r\n\t\t\t\t\t   var rObj = {};\r\n\t\t\t\t\t   var linkURLs = obj.Subcategory\r\n\t\t\t\t\t   linkURLs = linkURLs.replace(/\\s+$/, '').replace(/[^a-z0-9\\/:]/gi, '_').toLowerCase() + '/' + obj.Subcategory\r\n\r\n\t\t\t\t\t   rObj = { value: linkURLs, label: obj.Subcategory }\r\n\t\t\t\t\t   return rObj;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t    \t_thisComponent.setState({\r\n\t                \tpageContent: '',\r\n\t                \tpageDropdown1: reformattedDropdown1\t         \r\n\t                });\r\n\t            } else if (response.data.files.recordset && !subissue && response.data.files.recordset.length === 1) {\r\n\t\t\t    \tvar redirectTo = response.data.files.recordset[0].Subcategory + '/' + response.data.files.recordset[0].Subcategory\r\n\t\t\t\t    \tredirectTo = `/documents/` + folders + '/' + redirectTo\r\n\t\t\t    \t//\r\n\t\t\t    \t// var reloadHREF = window.location.href\r\n\r\n\t\t\t    \t_thisComponent.setState({\r\n\t\t\t    \t\tredirectTo\r\n\t\t\t    \t})\r\n\t\t\t    \tresponse.data.files.recordset.forEach( function(file) {\r\n\t\t\t    \t\tlinks += '<li className=\"nav-link\"><a href=\"/documents/' + state + '/' + county + '/' + issue + '/' + file['Subcategory'] + '/' + file['Subcategory'] + '\">' + file['Subcategory'] + '</a></li>'\r\n\t\t\t    \t})\r\n\t\t\t    \tlinks += '</ul>'\r\n\t\t\t\t    \r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: links\r\n\t            \t});\r\n\r\n\t\t\t    \t//history.replace(`/documents/` + folders + '/' + redirectTo );\r\n\t\t\t      \t//window.location.href = `/documents/` + folders + '/' + redirectTo;\r\n\t            } else if (response.data.files.recordset && !subissue) {\r\n\t\t\t    \tresponse.data.files.recordset.forEach( function(file) {\r\n\t\t\t    \t\tlinks += '<li className=\"nav-link\"><a href=\"/documents/' + state + '/' + county + '/' + issue + '/' + file['Subcategory'] + '/' + file['Subcategory'] + '\">' + file['Subcategory'] + '</a></li>'\r\n\t\t\t    \t})\r\n\t\t\t    \tlinks += '</ul>'\r\n\t\t\t\t    \r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: links\r\n\t            \t});\r\n\t            } else if (response.data.files && response.data.type === 'Subissue') {\r\n\t            // } else if (response.data.files.recordset && subissue) {\r\n\t\t\t    \t// response.data.files.recordset.forEach( function(file) {\r\n\r\n\r\n\r\n\t            \tvar documentNames = response.data.files;\r\n\t\t    \t// if (response.data.files.recordset && response.data.files.recordset.length > 30 && !subissue) {\r\n\t            \t// var documentNames = response.data.files.recordset;\r\n\r\n\t            \tif (response.data.files.length > 15) {\r\n\t\t            \tdocumentNames = documentNames.sort();\r\n\t\t            \tdocumentNames.sort(function(a,b) {return (a.Subcategory > b.Subcategory) ? 1 : ((b.Subcategory > a.Subcategory) ? -1 : 0);} ); \r\n\t\t\t\t\t\tvar reformattedDropdown1 = documentNames.map(obj => { \r\n\t\t\t\t\t\t   var rObj = {}\r\n\t\t\t\t\t\t   var issueEncodeSafe = encodeURI(issue).replace(/\\//gi, \r\n\t\t\t\t\t\t   \t'%2F')\r\n\t\t\t\t\t\t   var issueSubcategory = encodeURI(obj.Subcategory).replace(/\\//gi, \r\n\t\t\t\t\t\t   \t'%2F')\r\n\r\n\t\t\t\t\t\t   \tvar linkURLs = issueEncodeSafe + '/' + issueSubcategory + '/' + issueSubcategory\r\n\r\n\t\t\t            \t// console.log(linkURLs)\r\n\r\n\t\t\t\t\t\t   rObj = { value: linkURLs, label: obj.Subcategory }\r\n\t\t\t\t\t\t   return rObj\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t    \t_thisComponent.setState({\r\n\t\t                \tpageContent: '',\r\n\t\t                \tpageDropdown1: reformattedDropdown1\r\n\t\t            \t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// console.log(response.data.files)\r\n\r\n\t\t\t\t    \tresponse.data.files.forEach( function(file) {\r\n\t\t\t    \t\tlinks += '<li className=\"nav-link\"><a href=\"/documents/' + state + '/' + county + '/' + issue + '/' + file['Subcategory'] + '/' + file['Subcategory'] + '\">' + file['Subcategory'] + '</a></li>'\r\n\t\t\t\t    \t})\r\n\t\t\t\t    \tlinks += '</ul>'\r\n\r\n\t\t            \t_thisComponent.setState({\r\n\t\t                \tpageContent: links\r\n\t\t            \t});\r\n\t\t\t\t\t}\r\n\t            } else if (response.data.files) {\r\n\t            \t// Since this is where the subissue listing happens, might be able to have it check for dropdown change.\r\n\t\t\t    \t\r\n\t            \tconsole.log(response.data.files)\r\n\r\n\t\t\t    \tresponse.data.files.forEach( function(file) {\r\n\r\n\t\t\t    \t\tfile = file.replace('.docx', '')\r\n\t\t\t    \t\tlinks += '<li className=\"nav-link\"><a href=\"./' + file + '\">' + titleCase(file) + '</a></li>'\r\n\t\t\t    \t})\r\n\t\t\t    \tlinks += '</ul>'\r\n\t\t\t\t    \r\n\r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: links\r\n\t            \t});\r\n\t            } else {\r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: 'No files found!'\r\n\t            \t});\t    \r\n\t            }\r\n\t\t\t})\r\n\r\n\t} else {\r\n\t    var documentTitleSplit = id.split('-')\r\n\t    var documentTitleSplitLength = documentTitleSplit.length\r\n\t    var documentTitle = documentTitleSplit[documentTitleSplitLength-1]\r\n\r\n\t\t_thisComponent.setState({\r\n\t\t\tpageTitle: documentTitle,\r\n\t\t\tdocumentName: id\r\n\t\t})\r\n\r\n\r\n\t\t\t\tvar finalURL = API + '/read-xml'\r\n\r\n\t\t\t\tsubissue = subissue.replace('_', ' ')\r\n\r\n\t\t\t    _thisComponent.serverRequest = \r\n\t\t\t      axios\r\n\t\t\t        .post(finalURL, {\r\n\t\t\t        \theaders: { 'Cache-Control': 'no-cache' },\r\n\t\t\t        \tresponseType: 'arraybuffer',\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tProblemName: issue,\r\n\t\t\t\t\t\t\tSubcategoryName: subissue,\r\n\t\t\t\t\t\t\tStateName: state,\r\n\t\t\t\t\t\t\tCountyName: county,\r\n\t\t\t\t\t\t\tcheckLogin: 'loggedIn'\r\n\t\t\t\t\t\t}\r\n\t\t\t        })\r\n\t\t\t        .then(function(result) { \r\n\r\n\t\t\t        \tconst parser = new DOMParser()\r\n\r\n\t\t\t\t\t\tvar decoded = result.data\r\n\t\t\t          \tvar sectionMatch = []\r\n\t\t\t          \tvar HTMLtextFinal = ''\r\n\r\n\t\t\t          \t// console.log(result)\r\n\r\n\t\t\t          \tif (decoded && decoded.result && decoded.result.recordset && decoded.result.recordset[0]) {\r\n\t\t\t          \t\tvar repairXML = decoded.result.recordset[0].Content\r\n\t\t\t          \t\tvar repairingNeeded = repairXML.match(/<img (.*)><figcaption/g)\r\n\t\t\t          \t\t// console.log(repairingNeeded)\r\n\t\t\t          \t\tif (repairingNeeded)\r\n\t\t\t          \t\t\trepairXML = repairXML.replace('><figcaption', '></img><figcaption')\r\n\t\t\t\t          \tvar decodedXML = utf8_for_xml(repairXML)\r\n\t\t\t\t\t\t\tdecodedXML = parser.parseFromString(decodedXML, 'text/xml');\r\n\t\t\t\t\t\t\tdecodedXML = decodedXML.querySelector('documentRoot')\r\n\r\n\t\t\t\t\t\t\tfor (var i = 0; i < decodedXML.childNodes.length; i++) {\r\n\t\t\t\t\t\t\t\tif (decodedXML.childNodes[i].querySelector('title')) {\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tvar $currentTitle = decodedXML.childNodes[i].querySelector('title')\r\n\t\t\t\t\t\t\t\t\tvar $currentTitleConformed = ''\r\n\t\t\t\t\t\t\t\t\tvar $lastTitle = ''\r\n\r\n\t\t\t\t\t\t\t\t\t// console.log('$currentTitle')\r\n\t\t\t\t\t\t\t\t\t// console.log($currentTitle)\r\n\r\n\t\t\t\t\t\t\t\t\tif ($currentTitle.innerHTML) {\r\n\t\t\t\t\t                \t$currentTitle \t\t\t= $currentTitle.innerHTML\r\n\t\t\t\t\t                \t$currentTitleConformed \t= $currentTitle.replace('?','').replace(/ /gi, '').replace(/\\s/gi, '').toLowerCase()\r\n\t\t\t\t\t                \tif (i > 0 && decodedXML.childNodes[i-1].querySelector('title'))\r\n\t\t\t\t\t                \t\t$lastTitle \t\t\t\t= decodedXML.childNodes[i-1].querySelector('title').innerHTML\r\n\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t                \t$currentTitle = $currentTitle.textContent\r\n\t\t\t\t\t                \t$currentTitleConformed \t= $currentTitle.replace('?','').replace(/ /gi, '').replace(/\\s/gi, '').toLowerCase()\r\n\t\t\t\t\t                \tif (i > 0 && decodedXML.childNodes[i-1].querySelector('title'))\r\n\t\t\t\t\t                \t\t$lastTitle \t\t\t\t= decodedXML.childNodes[i-1].querySelector('title').textContent\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// console.log('$currentTitle')\r\n\t\t\t\t\t\t\t\t\t// console.log($currentTitle)\r\n\r\n\t\t\t\t\t\t\t\t\t// console.log('$currentTitleConformed')\r\n\t\t\t\t\t\t\t\t\t// console.log($currentTitleConformed)\r\n\r\n\t\t\t\t\t\t\t\t\tif ($lastTitle !== $currentTitle) {\r\n\t\t\t\t\t\t\t\t\t\tsectionMatch.push(\r\n\t\t\t\t\t\t\t\t\t\t\t{ href: $currentTitle.replace(/ /gi, \"\").replace(/[:\\? \\s]/gi,'').toLowerCase(), name: $currentTitle }\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// console.log($currentTitle.replace(/ /gi, \"\").replace(/[:\\? \\s]/gi,'').toLowerCase() + '===' + section)\r\n\t\t\t\t\t\t\t\t\t// console.log(decodedXML.childNodes[0].querySelector('content'))\r\n\r\n\t\t\t\t\t\t\t\t\tif (section) {\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ($currentTitle.replace(/ /gi, \"\").replace(/[:\\? \\s]/gi,'').toLowerCase() === section) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tvar sectionInUse = sectionMatch.findIndex(p => p.href === section)\r\n\t\t\t\t\t\t\t\t\t\t\tvar innerHTMLupdated = ''\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (decodedXML.childNodes[i].querySelector('content').innerHTML) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(new XMLSerializer().serializeToString(decodedXML.childNodes[i].querySelector('content')))\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = decodedXML.childNodes[i].querySelector('content').innerHTML\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(JSON.stringify(decodedXML.childNodes[i].querySelector('content')))\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = new XMLSerializer().serializeToString(decodedXML.childNodes[i].querySelector('content'))\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// if ($domain.indexOf('thetitlebox') > 0) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/tciab.*?i\\/(.*?)\">/gi, \"app.thetitlebox.com/documents/$1\\\"\\>\")\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/api\\/(.*?)\">/gi, \"documents/$1\\\"\\>\")\r\n\t\t\t\t\t\t\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/(\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)/gi, \"mailto:$1\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/mailto:mailto:/gi, \"mailto:\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/href=(\"http)/gi, \"target='_blank' href=$1\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/\\{county\\}/gi, county)\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/%7Bcounty%7D/gi, county)\r\n\r\n\t\t\t\t\t        \t\t\t\tHTMLtextFinal += innerHTMLupdated\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t        \t\t} else if (decodedXML.childNodes[0].querySelector('content')) {\r\n\t\t\t\t\t        \t\t\t// console.log('Go to first')\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ($currentTitle.replace(/ /gi, \"\").replace(/[:\\? \\s]/gi,'').toLowerCase() === sectionMatch[0].href) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tvar sectionInUse = 0\r\n\t\t\t\t\t\t\t\t\t\t\tvar innerHTMLupdated = ''\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (decodedXML.childNodes[i].querySelector('content').innerHTML) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(new XMLSerializer().serializeToString(decodedXML.childNodes[i].querySelector('content')))\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = decodedXML.childNodes[i].querySelector('content').innerHTML\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(JSON.stringify(decodedXML.childNodes[i].querySelector('content')))\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = new XMLSerializer().serializeToString(decodedXML.childNodes[i].querySelector('content'))\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// if ($domain.indexOf('thetitlebox') > 0) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/tciab.*?i\\/(.*?)\">/gi, \"app.thetitlebox.com/documents/$1\\\"\\>\")\r\n\t\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/api\\/(.*?)\">/gi, \"documents/$1\\\"\\>\")\r\n\t\t\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/(\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)/gi, \"mailto:$1\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/mailto:mailto:/gi, \"mailto:\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/href=(\"http)/gi, \"target='_blank' href=$1\")\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/\\{county\\}/gi, county)\r\n\t\t\t\t\t\t\t\t\t\t\tinnerHTMLupdated = innerHTMLupdated.replace(/%7Bcounty%7D/gi, county)\r\n\r\n\t\t\t\t\t        \t\t\t\tHTMLtextFinal += innerHTMLupdated\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t        \t\t}\r\n\t\t\t\t        \t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!sectionInUse)\r\n\t\t\t\t\t\t\t\tsectionInUse = 0\r\n\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t        \t\tif (sectionMatch) {\r\n\t\t\t\t        \t\tvar nextLink = sectionInUse+1\r\n\t\t\t\t        \t\tif (sectionMatch[nextLink])\r\n\t\t\t\t        \t\t\tnextLink = sectionMatch[nextLink].href.replace('?','')\r\n\r\n\t\t\t\t        \t\tvar previousLink = sectionInUse-1\r\n\t\t\t\t        \t\tif (sectionMatch[previousLink])\r\n\t\t\t\t        \t\t\tpreviousLink = sectionMatch[previousLink].href.replace('?','')\r\n\r\n\t\t\t\t        \t\tvar completeURL = '/documents/' + folders + '/' + id + '/'\r\n\r\n\t\t\t\t        \t\tif (isNaN(nextLink)) {\r\n\t\t\t\t        \t\t\tHTMLtextFinal += '<a href=\"' + completeURL + nextLink + '\" className=\"col-md-2 pull-right\">Next</a>' \r\n\t\t\t\t        \t\t}\r\n\r\n\t\t\t\t        \t\tif (isNaN(previousLink)) {\r\n\t\t\t\t        \t\t\tHTMLtextFinal += '<a href=\"' + completeURL + previousLink + '\" className=\"col-md-2 pull-left\">Previous</a>' \r\n\t\t\t\t        \t\t}\r\n\t\t\t        \t\t}\r\n\r\n\t\t\t\t\t\t    const { isAuthenticated } = _thisComponent.props.auth;\r\n\t\t\t\t\t\t\tvar definitelyLoggedin = isAuthenticated()\r\n\r\n\t              \t\t\tvar $documentStateId = String(result.data.result.recordsets[1][0].StateId)\r\n\t              \t\t\tvar $documentCountyId = String(result.data.result.recordsets[1][0].CountyId)\r\n\r\n\r\n\t              \t\t\tvar $holdingText = ''\r\n\t              \t\t\tvar $role = localStorage.getItem('role')\r\n\t              \t\t\tvar $subscriptions = localStorage.getItem('subscriptions')\r\n\r\n\t              \t\t\t// console.log($role)\r\n\r\n\t\t\t        \t\t// console.log('State + County')\r\n\t\t\t        \t\t// console.log($documentStateId + '' + $documentCountyId)\r\n\r\n\t\t\t        \t\t// console.log('subscriptions')\r\n\t\t\t        \t\t// console.log($subscriptions)\r\n\t\t\t        \t\tif ($subscriptions[0] && $subscriptions[0].length > 1 ) {\r\n\t\t\t        \t\t\t$subscriptions = $subscriptions[0]\r\n\t\t\t        \t\t}\r\n\r\n\t\t\t        \t\t// console.log($subscriptions)\r\n\r\n\t              \t\t\tif ($role && $subscriptions && $subscriptions !== 'undefined' && $role !== 'administrator') {\r\n\r\n\t\t\t\t\t\t       \tpricingTable($subscriptions)\r\n\t\t\t\t\t\t        \t.then((returnedRow) => {\r\n\r\n\t\t\t\t\t\t        \t\tif (returnedRow) {\r\n\t\t\t\t\t\t\t        \t\tvar $returnedRowReference = String(returnedRow['ZoneReference'])\r\n\t\t\t\t\t\t\t        \t\tvar $returnedZone = String(returnedRow['Zone'])\r\n\t\t\t\t\t\t\t        \t\tvar $ZoneReference = $documentStateId + $documentCountyId\r\n\t\t\t\t\t\t\t        \t\t$ZoneReference = parseInt($ZoneReference)\r\n\t\t\t\t\t\t\t        \t\t$returnedRowReference = JSON.parse($returnedRowReference)\r\n\r\n\t\t\t\t\t\t\t        \t\t// console.log('returnedRow')\r\n\t\t\t\t\t\t\t        \t\t// console.log(returnedRow)\r\n\r\n\t\t\t\t\t\t\t        \t\t// EXCEPTION Couldn't easily add multiple payment Zones to database\r\n\r\n\r\n                                            if ($returnedRowReference.includes(parseInt($ZoneReference))) {\r\n\t\t\t\t\t\t\t        \t\t\t$holdingText = HTMLtextFinal\r\n\t\t\t\t\t\t\t        \t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$holdingText = '<p>You are currently subscribed to the ' + $returnedZone + ' zone and this county is in another zone. Check <a href=\"https://thetitlebox.com/plans-and-pricing/\">Plans and Pricing.</a></p>'\r\n\t\t\t\t\t\t\t        \t\t}\r\n\t\t\t\t\t\t        \t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t$holdingText = '<p>Couldn\\'t connect to subscription server. Try reloading the page.</p>'\r\n\t\t\t\t\t\t        \t\t}\r\n\r\n\t\t\t\t\t\t        \t\tHTMLtextFinal = $holdingText\r\n\r\n\t\t\t\t\t                \t_thisComponent.setState({\r\n\t\t\t\t\t                    \tpageContent: HTMLtextFinal,\r\n\t\t\t\t\t                    \tsections: sectionMatch\r\n\t\t\t\t\t                \t})\r\n\t\t\t\t\t\t        \t})\r\n\t\t\t\t\t\t        \t.catch((err) => {\r\n\t\t\t\t\t\t        \t\tconsole.log(err)\r\n\t\t\t\t\t\t        \t})\r\n\t\t\t\t\t\t    } else if ($role === 'administrator') {\r\n\t\t\t                \t_thisComponent.setState({\r\n\t\t\t                    \tpageContent: HTMLtextFinal,\r\n\t\t\t                    \tsections: sectionMatch\r\n\t\t\t                \t})\r\n\t\t\t\t\t\t    } else {\r\n\t\t\t\t\t\t\t\t$holdingText = '<p>Subscription not found. Please check <a href=\"https://thetitlebox.com/plans-and-pricing/\">Plans and Pricing.</a></p>'\r\n\r\n\t\t\t        \t\t\tif (!$role || $role == 'undefined' || !$subscriptions) {\r\n\t\t\t        \t\t\t\tsetTimeout(function() {\r\n\t\t\t        \t\t\t\t\twindow.location.href = '//thetitlebox.com/plans-and-pricing/'\r\n\t\t\t        \t\t\t\t}, 2000);\r\n\t\t\t        \t\t\t}\r\n\r\n\t\t\t\t        \t\tHTMLtextFinal = $holdingText\r\n\r\n\t\t\t                \t_thisComponent.setState({\r\n\t\t\t                    \tpageContent: HTMLtextFinal,\r\n\t\t\t                    \tsections: sectionMatch\r\n\t\t\t                \t})\r\n\t\t\t\t\t\t    }\r\n\t\t\t\t\t\t} else {\r\n\t\t                \t_thisComponent.setState({\r\n\t\t                    \tpageContent: 'Content coming soon!',\r\n\t\t                    \tsections: ''\r\n\t\t                \t})\r\n\t\t\t\t\t\t}\r\n\t\t\t        })\r\n\r\n\t\t/*\r\n\t    _thisComponent.serverRequest = \r\n\t      axios\r\n\t        .post(finalURL, {\r\n\t        \theaders: { 'Cache-Control': 'no-cache' },\r\n\t        \tresponseType: 'arraybuffer',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tsid: sid,\r\n\t\t\t\t\tProblemName: issue,\r\n\t\t\t\t\tSubcategoryName: subissue,\r\n\t\t\t\t\tStateName: state,\r\n\t\t\t\t\tCountyName: county,\r\n\t\t\t\t\tSection: section\r\n\t\t\t\t}\r\n\t        })\r\n\t        .then(function(result) { \r\n\r\n\t        \t// console.log('result')\r\n\t        \t// console.log(result)\r\n\r\n\t        \t\r\n\t        \tif (result.data.result && result.data.result.HTMLtextFinal) {\r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: result.data.result.HTMLtextFinal,\r\n\t                \tsections: result.data.result.sectionMatch\r\n\t            \t})\r\n\t        \t} else if (result.data.result) {\r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: result.data.result,\r\n\t                \tsections: ''\r\n\t            \t})\r\n\t        \t} else {\r\n\t            \t_thisComponent.setState({\r\n\t                \tpageContent: 'Could not connect to server, try reloading or contact us if you continue to see this message.',\r\n\t                \tsections: ''\r\n\t            \t})\r\n\t        \t}\r\n\t        \t\r\n\t        })\r\n\t     */\r\n\t        \r\n\t}\r\n\r\n\t/*\r\n    window.addEventListener(\"storage\", function () {\r\n    \twindow.location.reload()\r\n    })\r\n    */\r\n\r\n    var currentURL = window.location.pathname\r\n\r\n    // THIS IS CAUSING LOTS OF ISSUES\r\n    this.unlisten = this.props.history.listen((location, action) => {\r\n      \r\n      // if (action === 'PUSH' || location.pathname.replace(/ /gi, '%20') !== currentURL)\r\n      if (action === 'PUSH')\r\n      \twindow.location.reload()\r\n    });\r\n\r\n\r\n    // THIS IS NEEDED FOR AUTH0!\r\n    const { renewSession } = this.props.auth;\r\n\r\n    if (localStorage.getItem('isLoggedIn') === 'true') {\r\n      renewSession();\r\n    }    \r\n  }\r\n\r\n\r\n  componentWillUnmount() {\r\n      this.unlisten()\r\n  }\r\n\r\n\r\n\r\n\r\n  render() {\r\n  \tvar projectAllIssues = this.state.projectAllIssues\r\n    var projectState = this.state.projectState\r\n    var projectCounty = this.state.projectCounty\r\n    var projectPotholes = this.state.projectPotholes\r\n\r\n    if (projectState === 'FL') {\r\n      projectAllIssues['HOW TO CLOSE IN STATE'] = 'How To Close In State'\r\n    }\r\n\r\n    var nextDocument = this.state.nextDocument\r\n    var pageContent = this.state.pageContent\r\n    var pageDropdown1 = this.state.pageDropdown1\r\n    var pageDropdown2 = this.state.pageDropdown2\r\n\r\n      if (projectPotholes && projectPotholes !== undefined) {\r\n        projectPotholes = JSON.parse(projectPotholes)\r\n      }\r\n\r\n    // var pageIssue = this.state.pageIssue;\r\n    var listingClass = '';\r\n\r\n    if (!this.state.sections) {\r\n    \tlistingClass = 'singleDocument'\r\n    } else {\r\n    \tlistingClass = ''\r\n    }\r\n\r\n    /*\r\n    if (this.state.pageTitle) {\r\n    \tvar pageTitletoDisplay = this.state.pageTitle\r\n    \tpageTitletoDisplay = decodeURI(this.state.pageTitle.replace(/%2F/gi, '/'))\r\n    }\r\n    */\r\n\r\n    return (\r\n\t  <div className=\"\" key=\"overall\">\r\n\r\n\t  \t<div className={ 'row stage ' + this.state.showSignup } key=\"stage\">\r\n\t\t  \t<div className={ 'content ' + listingClass + ' col-md-9'} key=\"content\">\r\n\t\t  \t\t<div className=\"col-md-12\">\r\n\t  \t\t\t\t<h1>{ this.state.issue } \r\n\t  \t\t\t\t{ this.state.documentName ?\r\n\t  \t\t\t\t\t<>\r\n\t  \t\t\t\t\t\t<span className=\"title-arrow\">&#9654;</span> \r\n\t  \t\t\t\t\t\t<span className=\"title-gray\">{ this.state.documentName }</span>\r\n\t  \t\t\t\t\t</>\r\n\t  \t\t\t\t: null }\r\n\t  \t\t\t\t</h1>\r\n\r\n\t  \t\t\t\t{ this.state.sections ? <button className={ 'report ' + this.state.showReportCard } onClick={ this.hideShowReportCard }>Report an <span>Edit or Update</span></button> : null }\r\n\t  \t\t\t\r\n\t  \t\t\t\t<br className=\"clear\" />\r\n\t  \t\t\t</div>\r\n\r\n\t\t\t\t{ this.state.showReportCard ? <Report sending={ this.state.sending } hideMe={ this.hideShowReportCard } pageTitle={ this.state.pageTitle } documentName={ this.state.documentName } sections={ this.state.sections } state={ projectState } county={ projectCounty } /> : null }\r\n\r\n\t\t  \t\t<div className={ pageDropdown1 || pageDropdown2 ? \"row documentarea shadow dropdown\" : \"row documentarea shadow\" }>\r\n\t\t  \t\t\t{ this.state.documentName ?\r\n\t\t\t  \t\t\t<nav className=\"col-md-3\" key=\"sidebar\">\r\n\t\t\t\t    \t\t<Sidebar sections={ this.state.sections } issue={ this.state.issue } subissue={ this.state.subissue } state={ this.state.projectState } county={ this.state.projectCounty } />\r\n\t\t\t\t    \t</nav>\r\n\t\t\t    \t: null }\r\n\r\n\t\t\t    \t<div className=\"col-md-9\" key=\"mainContent\">\r\n\t\t\t    \t\t{ pageDropdown1 || pageDropdown2 ? \r\n\t\t\t\t    \t\t<div>\r\n\t\t\t\t    \t\t\t{ pageDropdown1 ?\r\n\t\t\t\t\t\t        <Select \r\n\t\t\t\t\t\t        \tkey=\"judgmentDocumentsName\"\r\n\t\t\t\t\t\t            name=\"judgmentDocumentsName\"\r\n\t\t\t\t\t\t            clearable={ false }\r\n\t\t\t\t\t\t            onChange={ this.handleChangeLink }\r\n\t\t\t\t\t\t            placeholder=\"Type or Choose by Document Name\"\r\n\t\t\t\t\t                options={ pageDropdown1 }\r\n\t\t\t\t\t\t            className={ 'col-md-10 pull-left' }\r\n\t\t\t\t\t\t        />\r\n\t\t\t\t\t\t        :\r\n\t\t\t\t\t\t        <div/>\r\n\t\t\t\t\t\t    \t}\r\n\t\t\t\t\t        </div>\r\n\t\t\t\t    \t: \r\n\t\t\t\t    \t\t<JsxParser\r\n\t\t\t\t    \t\t\tjsx={ pageContent }\r\n\t\t\t\t    \t\t/>\r\n\t\t\t\t    \t}\r\n\r\n\t\t\t    \t\t<Next nextDocument={ nextDocument } />\r\n\t\t\t    \t</div>\r\n\t\t\t\t</div>\r\n\t\t    </div>\r\n\r\n\t\t  \t<nav className=\"col-md-3 d-md-block\">\r\n\t\t  \t\t<div className=\"col-md-12 sidebar shadow rounded\">\r\n\r\n\t                <h2 className=\"subTitle\">Title Clearance</h2>\r\n\t\t\t\t\t<ul className=\"nav flex-column titlecategories\">\r\n\t\t\t\t\t  {Object.entries(projectAllIssues).map(([key, value]) =>\r\n\t\t              \t<li className={ 'nav-link ' + key } key={ key }><a href={ '/documents/' + projectState + '/' + projectCounty + '/' + key.replace(' selected','').replace('?','') }>{ value }</a></li>\r\n\t\t\t\t\t  )}\r\n\t\t            </ul>\r\n\r\n\t              { projectState && projectCounty && projectPotholes ?\r\n\t              \t<>\r\n\t\t              \t<h2 className=\"subTitle\">Potholes</h2>\r\n\r\n\t\t                <ul className=\"nav flex-column potholes\">\r\n\t\t                    {Object.entries(projectPotholes).map(([key, value]) =>\r\n\t\t                      <li className={ 'nav-link ' + key } key={ key }><a href={ '/documents/' + projectState + '/' + projectCounty + '/potholes/' + value['DocumentName'].replace('/','%2F') + '/' + value['DocumentName'].replace('/','%2F') }>{ titleCase(value['DocumentName']) }</a></li>\r\n\t\t                    )}\r\n\t\t                </ul>\r\n\t                </>\r\n\t              : null }\r\n              \t</div>\r\n\t\t  \t</nav>\t\t  \t\r\n\t    </div>\r\n\t  </div>\r\n    )\r\n  }\r\n}\r\n\r\n/*\r\n{ pageDropdown2 && 1 !== 1 ?\r\n<Select \r\n\tkey=\"judgmentDocumentsNumber\"\r\n    name=\"judgmentDocumentsNumber\"\r\n    clearable={ false }\r\n    onChange={ this.handleChangeLink }\r\n    placeholder=\"Type or Choose by Sample Number\"\r\n    options={ pageDropdown2 }\r\n    className={ 'col-md-6 pull-right' }\r\n/>\r\n:\r\n<div/>\r\n}\r\n*/\r\n\r\nexport default SingleDocument;\r\n","import React, { Component } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Async } from 'react-select';\r\n// import Select from 'react-select'\r\n\r\nimport 'react-select/dist/react-select.css';\r\n\r\nimport 'font-awesome/css/font-awesome.css'\r\n\r\nvar statesList = []\r\nvar countiesList = []\r\nvar issuesList = []\r\nvar subIssuesList = []\r\nvar _thisComponent = this\r\n\r\nvar API = '';\r\n\r\nif (window.location.hostname === 'localhost') {\r\n  API = 'http://' + window.location.hostname + ':3001/api';\r\n} else {\r\n  API = 'https://' + window.location.hostname + '/api';\r\n}\r\n\r\nvar getStates = () => {\r\n\t var sid = localStorage.getItem('sid')\r\n\r\n\t//console.log(input)\r\n\t//console.log(_thisComponent.state.selectedOptionState)\r\n    \r\n      return axios.post(API + `/documents`, {\r\n        data: {\r\n          sid: sid\r\n        }\r\n      })\r\n        .then((response) => {\r\n          // console.log(response)\r\n          //\r\n          statesList.length = 0;\r\n          Object.values(response.data.files.recordset).forEach(function(trait) {\r\n            statesList.push({ value: trait.StateId, label: trait.State });\r\n          });\r\n          return statesList;\r\n        }).then((json) => {\r\n          return { options: json };\r\n        });\r\n}\r\n\r\nvar getCounties = (input) => {\r\n\t var sid = localStorage.getItem('sid')\r\n\r\n\t//console.log(input)\r\n\t//console.log(_thisComponent.state.selectedOptionState)\r\n    \r\n    if (_thisComponent.state.selectedOptionState) {\r\n      return axios.post(API + `/documents/${_thisComponent.state.selectedOptionState.label}`, {\r\n        data: {\r\n          sid: sid\r\n        }\r\n      })\r\n        .then((response) => {\r\n          // console.log(response)\r\n          //\r\n          countiesList.length = 0;\r\n          Object.values(response.data.files.recordset).forEach(function(trait) {\r\n            countiesList.push({ value: trait.CountyId, label: titleCase(trait.county) });\r\n          });\r\n          return countiesList;\r\n        }).then((json) => {\r\n          return { options: json };\r\n        });\r\n    }\r\n}\r\n\r\nvar getProblems = (input) => {\r\n\t var sid = localStorage.getItem('sid')\r\n\r\n      return axios.post(API + `/issues`, {\r\n        data: {\r\n          sid: sid\r\n        }\r\n      })\r\n        .then((response) => {\r\n          // console.log(response)\r\n          //\r\n          issuesList.length = 0;\r\n          Object.values(response.data.files.recordset).forEach(function(trait) {\r\n            issuesList.push({ value: trait.ProblemId, label: titleCase(trait.ProblemType) });\r\n          });\r\n          return issuesList;\r\n        }).then((json) => {\r\n          return { options: json };\r\n        });\r\n}\r\n\r\nvar getSubcategories = (input) => {\r\n\t var sid = localStorage.getItem('sid')\r\n\r\n\t// console.log(input)\r\n\t// console.log(_thisComponent.state)\r\n    \r\n    if (_thisComponent.state.selectedOptionProblemId) {\r\n      return axios.post(API + `/documents/${_thisComponent.state.selectedOptionState.label}/${_thisComponent.state.selectedOptionCounty.label}/${_thisComponent.state.selectedOptionProblemId.label}/subCategory`, {\r\n              data: {\r\n              \tsid: sid, \r\n              \tProblemId: _thisComponent.state.ProblemId,\r\n              \tStateId: _thisComponent.state.StateId,\r\n              \tCountyId: _thisComponent.state.CountyId\r\n              }\r\n          })\r\n        .then((response) => {\r\n          // console.log(response)\r\n          //\r\n          subIssuesList.length = 0;\r\n          Object.values(response.data.files).forEach(function(trait) {\r\n            subIssuesList.push({ subvalue: trait.SubcategoryId, value: trait.SubcategoryId, label: titleCase(trait.Subcategory) });\r\n          });\r\n          return subIssuesList\r\n        }).then((json) => {\r\n          return { options: json }\r\n        })\r\n    }\r\n}\r\n\r\nvar checkDocumentExists = (input) => {\r\n\t var sid = localStorage.getItem('sid')\r\n\r\n\t// console.log(input)\r\n\t// console.log(_thisComponent.state)\r\n    \r\n    if (input) {\r\n\t    return axios.post(API + `/documents/editor`, {\r\n              data: {\r\n              \tsid: sid,\r\n              \tStateId: \t\t_thisComponent.state.StateId,\r\n              \tCountyId: \t\t_thisComponent.state.CountyId,\r\n              \tProblemId: \t\t_thisComponent.state.ProblemId,\r\n              \tSubcategoryId: \tinput\r\n              }\r\n          })\r\n        .then((response) => {\r\n          console.log(response)\r\n\r\n          if (!response.data.error && response.data.files.recordset[0]) {\r\n          \t_thisComponent.setState({\r\n          \t\tcheckDocumentExists: true\r\n          \t})\r\n          }\r\n\r\n          return response\r\n        }).then((json) => {\r\n          return { options: json }\r\n        })\r\n    }\r\n}\r\n\r\n\r\nvar getHighestDocumentID = async() => {\r\n\t var sid = localStorage.getItem('sid')\r\n\t//console.log(input)\r\n\r\n\r\n\tvar highestID = async() => axios.post(API + `/all-documents`, {\r\n        data: {\r\n          sid: sid\r\n        }\r\n\t})\r\n\t.then((response) => {\r\n\t  // console.log(response.data.files.recordset)\r\n\r\n\t  var recordsLength = response.data.files.recordset.length\r\n\r\n\t  // console.log(response.data.files.recordset[recordsLength-1])\r\n\r\n\t  return response.data.files.recordset[recordsLength-1].DocumentId\r\n\t}).then((json) => {\r\n\t  \r\n      return json\r\n    })\r\n\r\n    const id = await highestID()\r\n\r\n\treturn id\r\n}\r\n\r\n\r\nfunction titleCase(str) {\r\n   var splitStr = str.toLowerCase().split(' ');\r\n   for (var i = 0; i < splitStr.length; i++) {\r\n       // You do not need to check if i is larger than splitStr length, as your for does that for you\r\n       // Assign it back to the array\r\n       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     \r\n   }\r\n   // Directly return the joined string\r\n   return splitStr.join(' '); \r\n}\r\n\r\n\r\nclass Documents extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\r\n\t    this.state = {\r\n\t      selectedOptionState: '',\r\n\t      selectedOptionCounty: '',\r\n\t      selectedOptionProblemId: '',\r\n\t      selectedOptionSubCategoryId: '',\r\n\t      isSelectedProblem: '',\r\n\t      isSelectedCounty: '',\r\n    \t  errorMessageCounty: '',\r\n    \t  StateId: '',\r\n    \t  CountyId: '',\r\n    \t  submitMessage: '',\r\n    \t  checkDocumentExists: '',\r\n\t      authorized: true,\r\n\t      authorizationMessage: 'Checking authorization...'\r\n\t    }\r\n\r\n\t    this.handleSubmit = this.handleSubmit.bind(this)\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t_thisComponent = this\r\n\r\n\t    var $role = localStorage.getItem('role') \r\n\r\n\t    if ($role) {\r\n\t      // _thisComponent.setState({ profile: userProfile })\r\n\r\n\t      // console.log('userProfile')\r\n\t      // console.log(localStorage.getItem('profile'))\r\n\r\n\t      const profile = JSON.parse(localStorage.getItem('profile'))\r\n\t      // console.log(profile)\r\n\r\n\t      if ($role !== 'administrator') {\r\n\t    \tthis.setState({\r\n\t    \t\tauthorizationMessage: \"Please log in as administrator.\"\r\n\t    \t})\r\n\t      } else if ($role === 'administrator') {\r\n\t    \tthis.setState({\r\n\t    \t\tauthorizationMessage: \"Logged in.\",\r\n\t    \t\trole: $role\r\n\r\n\t    \t})\r\n\t      }\r\n\r\n\t      _thisComponent.setState({ profile })\r\n\t    }\r\n\r\n\t\tgetHighestDocumentID().then((id) => { \r\n\t\t\tconsole.log(id+1)\r\n\r\n\t    \t_thisComponent.setState({\r\n\t    \t\thighestDocumentID: id,\r\n\t    \t\tDocumentId: id+1\r\n\t    \t})\r\n\t\t})\r\n\r\n\t    const { renewSession } = _thisComponent.props.auth;\r\n\r\n\t    if (localStorage.getItem('isLoggedIn') === 'true') {\r\n\t      renewSession();\r\n\t    }\r\n\t}\r\n\r\n    fieldUpdate = (fieldProperty) => {\r\n    \tvar $name =\t fieldProperty.target.name\r\n    \tvar $value = fieldProperty.target.value\r\n\r\n        this.setState({ \r\n        \t[$name]: $value \r\n        })\r\n\r\n        // console.log($name)\r\n        // console.log($value)\r\n    }\r\n\r\n\thandleSubmit(event, sid) {\r\n\t    event.preventDefault()\r\n\r\n\t \tconsole.log(sid)\r\n\r\n\t    // const data = new FormData(event.target)\r\n\r\n\t    axios.post(API + `/document-creation`, {\r\n\t    \tsid: sid,\r\n\t        data: this.state\r\n\t      })\r\n\t      .then((response) => {\r\n\t      \tthis.setState({\r\n\t      \t\tsubmitMessage: 'New document created, click over to the editor to add content.'\r\n\t      \t})\r\n\r\n\t      \tthis.forceUpdate()\r\n\t      }).catch((response) => {\r\n\t      \tthis.setState({\r\n\t      \t\tsubmitMessage: 'Error creating the document. Refresh and try again.'\r\n\t      \t})\r\n\t        // console.log(response)\r\n\t      })\r\n\r\n\t    // console.log(this.state)\r\n    }\r\n\r\n\thandleChangeState = (selectedOptionState) => {\r\n\t\t// console.log(selectedOptionState)\r\n\r\n\t\tif (selectedOptionState) {\r\n\t\t  this.setState({ \r\n\t\t    selectedOptionState,\r\n\t\t    StateId: selectedOptionState.value\r\n\t\t  })\r\n\r\n\t\t  this.forceUpdate()\r\n\t\t} else {\r\n\t\t  this.setState({ \r\n\t\t    isSelectedState: 'invalid',\r\n\t\t    selectedOptionState\r\n\t\t  })\r\n\t\t}\r\n\t}\r\n\r\n\thandleChangeCounty = (selectedOptionCounty) => {\r\n\t\t// console.log(selectedOptionCounty)\r\n\r\n\t\tif (selectedOptionCounty) {\r\n\t\t  this.setState({ \r\n\t\t    errorMessageCounty: '',\r\n\t\t    selectedOptionCounty,\r\n\t\t    CountyId: selectedOptionCounty.value\r\n\t\t  }\r\n\t\t   //,() => \r\n\t\t  )\r\n\t\t} else if (!_thisComponent.state.selectedOptionState) {\r\n\t\t  this.setState({ \r\n\t\t    isSelectedCounty: 'invalid',\r\n\t\t    errorMessageCounty: 'Add the property\\'s state first!',\r\n\t\t    selectedOptionCounty: ''\r\n\t\t  })\r\n\t\t} else {\r\n\t\t  this.setState({ \r\n\t\t    isSelectedCounty: 'invalid',\r\n\t\t    errorMessageCounty: 'Add the property\\'s county!',\r\n\t\t    selectedOptionCounty: ''\r\n\t\t  })\r\n\t\t}\r\n\t}\r\n\r\n\thandleChangeProblemId = (selectedOptionProblemId) => {\r\n\t\tconsole.log(selectedOptionProblemId)\r\n\r\n\t\tif (selectedOptionProblemId) {\r\n\t\t  this.setState({ \r\n\t\t    selectedOptionProblemId,\r\n\t\t    ProblemId: selectedOptionProblemId.value\r\n\t\t  })\r\n\r\n\t\t  this.forceUpdate()\r\n\t\t} else {\r\n\t\t  this.setState({ \r\n\t\t    isSelectedProblem: 'invalid',\r\n\t\t    selectedOptionProblemId\r\n\t\t  })\r\n\t\t}\r\n\t}\r\n\r\n\thandleChangeSubCategoryId = (selectedOptionSubCategoryId) => {\r\n\t\tconsole.log(selectedOptionSubCategoryId)\r\n\r\n\t\tif (selectedOptionSubCategoryId && selectedOptionSubCategoryId.value) {\r\n\t\t  console.log(selectedOptionSubCategoryId)\r\n\r\n\t\t  this.setState({ \r\n\t\t    selectedOptionSubCategoryId,\r\n\t\t    SubcategoryId: selectedOptionSubCategoryId.value,\r\n\t\t    DocumentName: selectedOptionSubCategoryId.label,\r\n\t\t    ActualDocumentName: selectedOptionSubCategoryId.label,\r\n\t\t    DisplayDocumentName: selectedOptionSubCategoryId.label\r\n\t\t  })\r\n\r\n\t\t  checkDocumentExists(selectedOptionSubCategoryId.value)\r\n\r\n\t\t  this.forceUpdate()\r\n\t\t} else {\r\n\t\t  this.setState({ \r\n\t\t    selectedOptionSubCategoryId\r\n\t\t  })\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\t// var allInputProperties = ['DocumentName','ActualDocumentName','DisplayDocumentName']\r\n\t\t// var allSelectProperties = ['StateId','CountyId']\r\n\r\n\t    var { selectedOptionState, selectedOptionCounty, selectedOptionProblemId, selectedOptionSubCategoryId, highestDocumentID, submitMessage, checkDocumentExists, authorizationMessage } = this.state\r\n\r\n\t    // console.log(highestDocumentID)\r\n\t    // console.log(selectedOptionState)\r\n\r\n        var adminLinks = ['editor','new document','UWAL']\r\n\r\n\t\tif (this.state.role === 'administrator') { \r\n\t\t    return (\r\n\t\t    \t<div className=\"container editor-layout\">\r\n\t\t    \t\t<ul className=\"nav justify-content-center text-center\">\r\n\t\t\t\t\t  {Object.entries(adminLinks).map(([key, value]) =>\r\n\t\t              \t<li className={ 'nav-link col-md-3 ' + key } key={ key }><a href={ '/admin/' + value.replace(' ', '-') }>{ value }</a></li>\r\n\t\t\t\t\t  )}\r\n\t\t\t\t\t</ul>\r\n\r\n\t\t\t\t\t{ checkDocumentExists ?\r\n\t\t\t\t\t\t<p>This document already exists, click over to the editor to update or replace it.</p>\r\n\t\t\t\t\t:\r\n\t\t\t\t    !submitMessage ?\r\n\t                <form onSubmit={ this.handleSubmit }>\r\n\t                \t<p>Start by selecting the State, County, Problem, and then SubCategory for the new document.</p>\r\n\r\n\t                    <div className=\"form-group\">\r\n\t                    \t<br />\r\n\r\n\t                        <label htmlFor=\"StateId\" className=\"col-md-6\">\r\n\t                        \tState\r\n\t                            <Async\r\n\t                                name=\"StateId\"\r\n\t                                placeholder=\"Choose State\"\r\n\t                                value={ selectedOptionState }\r\n\t                \t\t\t\tonChange={ this.handleChangeState }\r\n\t                \t\t\t\tloadOptions={ getStates }\r\n\t\t\t\t                  \tclassName={ 'placeholder' }                \r\n\t                            />\r\n\t                        </label>\r\n\r\n\t                        <br className=\"clear\" />\r\n\r\n\t                        { selectedOptionState ?\r\n\t\t\t\t            <label htmlFor=\"CountyId\" className={ \"col-md-6 \" }>\r\n\t\t\t\t              County:\r\n\r\n\t\t\t\t              <Async\r\n\t\t\t\t                  name=\"CountyId\"\r\n\t\t\t\t                  placeholder=\"Choose County\"\r\n\t\t\t\t                  value={ selectedOptionCounty }\r\n\t\t\t\t                  onChange={ this.handleChangeCounty }\r\n\t\t\t\t                  loadOptions={ getCounties }\r\n\t\t\t\t                  className={ 'placeholder' }                \r\n\t\t\t\t                //required\r\n\t\t\t\t              />\r\n\t\t\t\t            </label>\r\n\t\t\t\t            : null }\r\n\r\n\t\t\t\t            <br className=\"clear\" />\r\n\r\n\t\t\t\t          { selectedOptionCounty ?\r\n\t\t                  <label htmlFor=\"problemId\" className={ \"col-md-6 \" }>\r\n\t\t                    Problem Type:\r\n\r\n\t\t                    <Async\r\n\t\t                        name=\"Problem\"\r\n\t\t                        placeholder=\"Choose Problem\"\r\n\t\t                        value={ selectedOptionProblemId }\r\n\t\t                        onChange={ this.handleChangeProblemId }\r\n\t\t                        loadOptions={ getProblems }\r\n\t\t                        className={ 'placeholder' }                \r\n\t\t                      //required\r\n\t\t                    />\r\n\r\n\t\t                    <small className={ 'text-danger ' } key=\"problemId\"></small>\r\n\t\t                  </label>\r\n\t\t\t\t          : null }\r\n\r\n\t\t\t\t          <br className=\"clear\" />\r\n\r\n\t\t\t\t          { selectedOptionProblemId ?\r\n\t\t                  <label htmlFor=\"SubCategoryId\" className={ \"col-md-6 \" }>\r\n\t\t                    Problem SubCategory:\r\n\r\n\t\t                    <Async\r\n\t\t                        name=\"SubCategory\"\r\n\t\t                        placeholder=\"Choose Problem\"\r\n\t\t                        value={ selectedOptionSubCategoryId }\r\n\t\t                        onChange={ this.handleChangeSubCategoryId }\r\n\t\t                        loadOptions={ getSubcategories }\r\n\t\t                        className={ 'placeholder' }                \r\n\t\t                      //required\r\n\t\t                    />\r\n\r\n\t\t                    <small className={ 'text-danger ' } key=\"SubCategoryId\"></small>\r\n\t\t                  </label>\r\n\t\t                  : null }\r\n\r\n\t\t\t\t          <br className=\"clear\" />\r\n\r\n\t\t                  <label htmlFor=\"DocumentId\" className={ \"col-md-6\" } style={{'display': 'none'}}>\r\n\t\t                    ProblemId:\r\n\r\n\t                        <input\r\n\t                            className=\"form-control\"\r\n\t                            placeholder={ highestDocumentID }\r\n\t                            name=\"problemId\"\r\n\t                            defaultValue={ highestDocumentID }\r\n\t                            type=\"text\"\r\n\t                            onChange={this.fieldUpdate}\r\n\t                        />\r\n\r\n\t\t                  </label>\r\n\r\n\t                        <small className={ 'signupMessage' }></small>\r\n\t                    </div>\r\n\t                    <div className=\"form-group container col-md-6\">\r\n\t                        <input\r\n\t                            className=\"btn btn-primary form-submit col-md-12\"\r\n\t                            value=\"Create Document\"\r\n\t                            type=\"submit\"\r\n\t                        />\r\n\t                    </div>\r\n\t                </form>\r\n\t                : <p>{this.state.submitMessage}</p> }\r\n\r\n\t    \t\t</div>\r\n\t    \t)\r\n    \t} else {\r\n\t    \treturn (\r\n\t    \t\t<div>\r\n\t    \t\t\t<div className=\"nav justify-content-center\">\r\n\t    \t\t\t\t{ authorizationMessage }\r\n\t    \t\t\t</div>\r\n\t    \t\t</div>\r\n\t    \t)\r\n    \t}\r\n\t}\r\n}\r\n\r\nexport default withRouter(Documents)","import React, { Component } from 'react';\n// import { createBrowserHistory } from \"history\";\nimport { withRouter } from 'react-router-dom';\nimport axios from 'axios';\nimport { Async } from 'react-select';\nimport Dropzone from 'react-dropzone'\n// import Script from 'react-load-script';\n// import Cookies from 'js-cookie';\n// import Auth from '../../auth';\n\nimport CKEditor from '@ckeditor/ckeditor5-react';\nimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';\n\nimport 'font-awesome/css/font-awesome.css';\n\n// const history = createBrowserHistory();\n\nconst editorConfiguration = {\n\tremovePlugins: [ \"ImageUpload\" ]\n};\n\nfunction utf8_for_xml(inputStr) {\n  return inputStr.replace(/[^\\x20-\\xFF\\x85\\xA0-\\uD7FF\\uE000-\\uFDCF\\uFDE0-\\uFFFD]/gm, '');\n}\n\nvar API = '';\n\nif (window.location.hostname === 'localhost') {\n  API = 'http://' + window.location.hostname + ':3001/api';\n} else {\n  API = 'https://' + window.location.hostname + '/api';\n}\n\nfunction titleCase(str) {\n   var splitStr = str.toLowerCase().split(' ');\n   for (var i = 0; i < splitStr.length; i++) {\n       // You do not need to check if i is larger than splitStr length, as your for does that for you\n       // Assign it back to the array\n       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     \n   }\n   // Directly return the joined string\n   return splitStr.join(' '); \n}\n\nvar getAllDocuments = (input) => {\n  var sid = localStorage.getItem('sid')\n\n  return axios.post(API + `/all-documents`, {\n\t\tdata: {\n\t\t\tsid: sid\n\t\t}\n    })\n  .then((response) => {\n    var documentList = []\n\n    Object.values(response.data.files.recordsets[0]).forEach(function(trait) {\n      documentList.push({ value: trait.DocumentId, label: trait.ActualDocumentName })\n    });\n\n    return documentList\n  }).then((json) => {\n    return { options: json }\n  })\n}\n\nclass EditorComponent extends Component {\n  constructor (props) {\n    super(props);\n\n    this.state = {\n      reactIsErroring: false,\n   \t  model: '',\n   \t  key: '',\n   \t  editing: '',\n   \t  loading: '',\n   \t  allContent: '',\n      currentSessions: '',\n      selectedDocument: '',\n      documentId: this.props.selectedDocumentId\n    };\n\n    this.handleFieldChange = this.handleFieldChange.bind(this)\n    this.handleModelChange = this.handleModelChange.bind(this)\n    this.componentDidUpdate = this.componentDidUpdate.bind(this)\n    this.removeSection = this.removeSection.bind(this)\n  }\n\n  handleModelChange(model) {\n  \t// console.log(this)\n  \t// console.log(model)\n\n\n\n  \t/*\n    this.setState({\n      model: model\n    });\n    */\n  }\n\n  handleFieldChange(value) {\n\n  }\n\n  componentWillUpdate(nextProps, nextState) {\n  \t// console.log('willdup')\n\n\tif (nextState.open === true && this.state.open === false) {\n\t  this.props.onWillOpen();\n\t}\n  }\n\n  componentDidUpdate(nextProps) {\n\tvar _thisEditorComponent = this\n\tvar sid = localStorage.getItem('sid')\n\n\t// console.log(this.props)\n\t// console.log(nextProps)\n\n\t\tif (this.props !== nextProps) {\n\t\t\t\t// console.log(nextProps)\n\n\t\t\t// console.log(this.props.selectedDocument)\n\n\t\t\tif (this.props.selectedDocument !== '' && !this.props.uploadingDocument) {\n\t\t\t    this.setState({ \n\t\t\t    \tselectedDocument: this.props.selectedDocument\n\t\t\t    })\n\n\n\t\t\t\tvar finalURL = API + '/read-xml-wholedocument'\n\n\t\t\t\t// console.log('Current document')\n\t\t\t\t// console.log(this.props.selectedDocument.label)\n\t\t\t\t// console.log(this.props.selectedDocument.value)\n\n\n\t\t\t\t    this.setState({ \n\t\t\t\t    \tloading: 'Loading Document Sections... (Larger Documents will take a moment, please wait.)'\n\t\t\t\t    })\n\n\t\t\t\t    this.serverRequest = \n\t\t\t\t    \taxios\n\t\t\t\t        .post(finalURL, {\n\t\t\t\t        \theaders: { 'Cache-Control': 'no-cache' },\n\t\t\t\t        \tresponseType: 'arraybuffer',\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tsid: sid,\n\t\t\t\t\t\t\t\tdocumentName: this.props.selectedDocument.label,\n\t\t\t\t\t\t\t\tdocumentId: this.props.selectedDocument.value,\n\t\t\t\t\t\t\t}\n\t\t\t\t        })\n\t\t\t\t        .then(function(result) { \n\t\t\t\t        \tif (result) {\n\t\t\t\t        \t\t// console.log(result)\n\t\t\t\t\t        \tvar numberOfResults = result.data.result.recordset.length-1   \n\n\t\t\t\t\t        \t// console.log(result.data.result)\n\n\t\t\t\t\t        \tif (result.data.result.recordset[0]) {\n\t\t\t\t\t\t\t\t    _thisEditorComponent.setState({ \n\t\t\t\t\t\t\t\t    \tdocumentId: result.data.result.recordset[0].DocumentId\n\t\t\t\t\t\t\t\t    })\n\n\t\t\t\t\t\t\t\t\tconst parser = new DOMParser()\n\n\t\t\t\t\t\t\t\t\tvar allContent = result.data.result.recordset\n\t\t\t\t\t\t\t\t\tvar decoded = result.data.result.recordset[numberOfResults].Content\n\n\t\t\t\t\t\t\t\t\tif (decoded) {\n\t\t\t\t\t\t\t\t\t\tvar decodedXML = utf8_for_xml(decoded)\n\t\t\t\t\t\t\t\t\t    var repairingNeeded = decodedXML.match(/<img (.*)><figcaption/g)\n\t\t\t\t\t\t\t\t\t    if (repairingNeeded)\n\t\t\t\t\t\t\t\t\t      decodedXML = decodedXML.replace('><figcaption', '></img><figcaption')\n\n\t\t\t\t\t\t\t\t\t\tdecodedXML = parser.parseFromString(decodedXML, 'text/xml');\n\t\t\t\t\t\t\t\t\t\tdecodedXML = decodedXML.querySelector('documentRoot').childNodes\n\n\t\t\t\t\t\t\t\t\t\t_thisEditorComponent.setState({\n\t\t\t\t\t\t\t        \t\tallContent: '',\n\t\t\t\t\t\t\t            \tmodel: ''\n\t\t\t\t\t\t\t            })\n\t\t\t\t\t\t\t          \n\t\t\t\t\t\t\t        \t_thisEditorComponent.setState({\n\t\t\t\t\t\t\t        \t\tallContent: allContent,\n\t\t\t\t\t\t\t            \tmodel: decodedXML,\n\t\t\t\t\t\t\t            \tediting: 'yes',\n\t\t\t\t\t\t\t            \tloading: ''\n\t\t\t\t\t\t\t        \t})\n\t\t\t\t\t\t        \t}\n\t\t\t\t\t\t        } else {\n\t\t\t\t\t\t        \tconst parser = new DOMParser()\n\t\t\t\t\t\t        \tdecoded = '<documentRoot><documentSection><title>New Document Title</title><content><div class=\"section\">New Document Content</div></content></documentSection></documentRoot>'\n\n\t\t\t\t\t\t\t\t\tdecodedXML = utf8_for_xml(decoded)\n\t\t\t\t\t\t\t\t\tdecodedXML = parser.parseFromString(decodedXML, 'text/xml');\n\t\t\t\t\t\t\t\t\t// console.log(decodedXML)\n\t\t\t\t\t\t\t\t\tdecodedXML = decodedXML.querySelector('documentRoot').childNodes\n\n\t\t\t\t\t\t\t\t\t// console.log(decodedXML)\n\t\t\t\t\t\t          \n\t\t\t\t\t\t        \t_thisEditorComponent.setState({\n\t\t\t\t\t\t        \t\tallContent: allContent,\n\t\t\t\t\t\t            \tmodel: decodedXML,\n\t\t\t\t\t\t            \tediting: 'yes',\n\t\t\t\t\t\t            \tloading: ''\n\t\t\t\t\t\t        \t})\n\t\t\t\t\t\t        }\n\t\t\t\t        \t}\n\t\t\t\t        })\n\t\t\t\t\n\t\t\t} else {\n\t\t\t    _thisEditorComponent.setState({ \n\t\t\t    \tmodel: '',\n\t\t\t    \tloading: '',\n\t\t\t    \tediting: ''\n\t\t\t    })\n\t\t\t}\n\t\t}\n    }\n\n\tcomponentDidMount(props) {\n  \t\t// console.log('Did Mount Props:')\n  \t\t// console.log(props)\n\t}\n\n\tshouldComponentUpdate(nextProps) {\n\t\t// console.log(nextProps)\n\t\t// console.log(this.state.model.length)\n\n\t\tif (nextProps !== this.state.model.length)\n\t\t\treturn true\n\n\t\t/*\n\t\tconsole.log('Yes, should update:')\n\t\tconsole.log(nextProps)\n\t\tconsole.log(this.state.model.length)\n\n\t\tvar allTheContent = document.getElementsByClassName('ck-content')\n\n\t\tconsole.log(allTheContent.length)\n\n\t\treturn true\n\t\t*/\n\t}\n\n\n\tsaveDocument = saveDocument => {\n\t\tvar finalURL = API + '/text-section-edit'\n\t\tvar sid = localStorage.getItem('sid')\n\n\t\tvar allTheContent =\t\tdocument.getElementsByClassName('ck-content')\n\t\tvar allTheTitles =\t\tdocument.getElementsByClassName('sectionTitle')\n\t\tvar saveButton =\t\tdocument.getElementsByClassName('saveDocument')\n\t\tvar publishDocument =\tdocument.getElementsByClassName('publishDocument')\n\t\tvar rebuiltContent = ''\n\t\tvar action =\t\t\tsaveDocument.target.value\n\n\t\tsaveButton[1].className =\t\t'col-md-12 btn saveDocument btn-disabled'\n\t\tpublishDocument[0].className =\t'col-md-12 btn publishDocument btn-disabled'\n\t\tObject.entries(allTheTitles).map(e => allTheTitles[e[0]].style.background = '#eee' )\n\t\tObject.entries(allTheContent).map(e => allTheContent[e[0]].style.background = '#eee' )\n\n\t\tObject.entries(allTheContent).map(([key, value]) => {\n\t\t\trebuiltContent += '<documentSection sectionNumber=\"section' + Math.round(parseInt(key)+1) + '\">'\n\n\t\t\t\tif (allTheTitles[key])\n\t\t\t\t\trebuiltContent += '<title>' + allTheTitles[key].value + '</title>'\n\t\t\t\trebuiltContent += '<content><div class=\"section\">'\n\t\t\t\t+ value.innerHTML.replace(/&nbsp;/gm,' ').replace(/<br>/gm,'').replace(/<br data-cke-filler=\"true\">/gm,'')\n\t\t\t\t+ '</div></content>'\n\t\t\t\t+ '</documentSection>'\n\n\t\t\t\treturn ''\n\t\t\t}\n\t\t)\n\t\t\n\t\t/*\n\t\tconst parser = new DOMParser()\n\n\t\trebuiltContent = parser.parseFromString(rebuiltContent, 'text/xml');\n\t\t*/\n\n\t\trebuiltContent = '<documentRoot>' + rebuiltContent + '</documentRoot>'\n\n\t    // console.log(this.state.documentId)\n\t\t// console.log(rebuiltContent)\n\n\t\t// console.log(this.state)\n\n\t    this.serverRequest = \n\t      axios\n\t        .post(finalURL, {\n\t        \theaders: { 'Cache-Control': 'no-cache' },\n\t        \tresponseType: 'arraybuffer',\n\t\t\t\tdata: {\n\t\t\t\t\tsid: sid,\n\t\t\t\t\tdocumentId: this.state.selectedDocument.value,\n\t\t\t\t\tcontent: rebuiltContent,\n\t\t\t\t\taction: action\n\t\t\t\t}\n\t        })\n\t        .then(function(result) { \n\n\t        \t// if result all good then reset the workspace\n\n\t\t\t\tsaveButton[1].className = 'col-md-12 btn btn-primary saveDocument'\n\t\t\t\tpublishDocument[0].className = 'col-md-12 btn btn-primary publishDocument'\n\t\t\t\tObject.entries(allTheTitles).map(e => allTheTitles[e[0]].style.background = '#fff')\n\t\t\t\tObject.entries(allTheContent).map(e => allTheContent[e[0]].style.background = '#fff')\n\n\t        \t// console.log(result)\n\t        })\n\t}\t\n\n\taddSection = addSection => {\n\t\tvar currentModel = this.state.model \n\t\tvar newNodeList = []\n\t\tvar newSectionElement = '<documentSection sectionNumber=\"section' + currentModel.length + '\"><title>Title</title><content><div class=\"section\">Content</div></content></documentSection>'\n\t\t//var newSectionElementfromBase = ''\n\t\t//newSectionElementfromBase.createElement(\"documentSection\")\n\n\t\tconst parser = new DOMParser()\n\t\tnewSectionElement = utf8_for_xml(newSectionElement)\n\t\tnewSectionElement = parser.parseFromString(newSectionElement, 'text/xml');\n\t\t\n\t\t// console.log(newSectionElement)\n\t\t// console.log(newSectionElementfromBase)\n\n\t\tObject.entries(currentModel).map(e => {\n\t\t\tnewNodeList[e[0]] = e[1]\n\n\t\t\treturn e[1]\n\t\t})\n\n\t\tnewNodeList.push(newSectionElement.childNodes[0])\n\n\t\tthis.setState({\n\t\t\tmodel: newNodeList \n\t\t})\n\n\n\n\t\t//currentModel.appendChild('<title>New Section Title</title><content>New Section Content</content>')\n\n\t\t/*\n\t\tcurrentModel[currentModel.length] = { documentsection : '<title>New Section Title</title><content>New Section Content</content>' }\n\n\t\tthis.setState({\n\t\t\tmodel: currentModel \n\t\t})\n\n\t\tconsole.log(currentModel)\n\t\tconsole.log(typeof currentModel)\n\t\t*/\n\t}\n\n\tremoveSection = removeSection => {\n\t\tvar originalClass = removeSection.target.className\n\t\tvar sectionNumbertoRemove = originalClass.match(/sectionEditor([0-9]+)/)\n\t\t// console.log(sectionNumbertoRemove)\n\t\tif (sectionNumbertoRemove) {\n\t\t\tsectionNumbertoRemove = parseInt(sectionNumbertoRemove[1])\n\n\t\t\tvar currentModel = this.state.model \n\t\t\tvar newNodeList = []\n\t\t\t//newSectionElementfromBase.createElement(\"documentSection\")\n\t\t\tObject.entries(currentModel).map(e => {\n\t\t\t\tnewNodeList[e[0]] = e[1]\n\n\t\t\t\treturn e[1]\n\t\t\t})\n\n\t\t\t// newNodeList.splice(sectionNumbertoRemove, 1)\n\t\t\tdelete newNodeList[sectionNumbertoRemove]\n\n\t\t\tthis.setState({\n\t\t\t\tmodel: newNodeList \n\t\t\t})\n\n\t\t\tthis.forceUpdate()\n\t\t}\n\t}\n\n  render () {\n  \tvar allSections = this.state.model\n\n    return (\n    \t\t// value.querySelector('.section').innerHTML\n\n    \t\t<div className=\"editorLayout row\">\n\t    \t\t<div className=\"editorSections col-md-8\">\n\t    \t\t\t<div>{ this.state.loading }</div>\n\n\t    \t\t\t{ this.state.editing ? Object.entries(allSections).map(([key, value]) =>\n\t    \t\t\t\t<div className={\"editingSection sectionEditor\"+key} id={\"sectionEditor\"+key} key={\"sectionEditor\"+key}>\n\t    \t\t\t\t\t{ value.querySelector('title') ?\n\t    \t\t\t\t\t<div className=\"removeSection pull-right col-md-1 text-right\" onClick={this.removeSection}><i className={\"fa fa-times sectionEditor\"+key}></i></div>\n\t    \t\t\t\t\t: null }\t\n\n\t    \t\t\t\t\t{ value.querySelector('title') ?\n\t    \t\t\t\t\t<label htmlFor={\"sectionTitle\"+key} className=\"col-md-12\">\n\t    \t\t\t\t\t\tSection Title: \n\t\t    \t\t\t\t\t\t<input className=\"form-control sectionTitle\" name={\"sectionTitle\"+key}\n\t\t    \t\t\t\t\t\t\tkey={ this.state.loading ? 'notLoadedYet' : \"sectionTitle\"+key }\n\t\t    \t\t\t\t\t\t\ttype=\"text\" \n\t\t    \t\t\t\t\t\t\tdefaultValue={value.querySelector('title').innerHTML} />\n\t\t    \t\t\t\t\t\n\t\t    \t\t\t\t</label>\n\t\t    \t\t\t\t: null }\n\n\t\t    \t\t\t\t<div className=\"col-md-12\">\n\t\t    \t\t\t\t\t{ value.querySelector('.section') ?\n\t\t\t    \t\t\t\t<CKEditor\n\t\t\t\t    \t\t\t\teditor={ ClassicEditor }\n\t\t\t\t    \t\t\t\tconfig={ editorConfiguration }\n\t\t\t\t                    data={value.querySelector('.section').innerHTML}\n\t\t\t\t                    onInit={ editor => {\n\t\t\t\t                    } }\n\t\t\t\t                    onChange={this.handleModelChange}\n\t\t\t\t\t            \tkey={\"sectionContent\"+key}\n\t\t\t\t\t            />\n\t\t\t\t\t            : null }\n\t\t\t\t\t        </div>\n\t\t\t\t        </div>\n\t\t            ) : null }\n\t           </div>\n\n\t           <div className=\"editorControl col-md-4\">\n\t           \t\t<div className=\"sticky-top\">\n\t\t           \t\t<br className=\"clear\" />\n\n\t\t                { this.state.editing ? \n\t\t                \t<div className=\"col-md-12\">\n\t\t                \t\t<input type=\"submit\" value=\"Add Section\" className=\"col-md-12 btn btn-primary saveDocument\"  onClick={ this.addSection } />\n\t\t                \t</div>\n\t\t                : null }\n\n\t\t                { this.state.editing ? \n\t\t                \t<div className=\"col-md-12\">\n\t\t                \t\t<input type=\"submit\" value=\"save\" className=\"col-md-12 btn btn-primary saveDocument\"  onClick={ this.saveDocument } />\n\t\t                \t</div>\n\t\t                : null }\n\n\t\t                { this.state.editing ? \n\t\t                \t<div className=\"col-md-12\">\n\t\t                \t\t<input type=\"submit\" value=\"publish\" className=\"col-md-12 btn btn-primary publishDocument\"  onClick={ this.saveDocument } />\n\t\t                \t</div>\n\t\t                : null }\n\t                </div>\n\t           </div>\n\t        </div>\n        )\n  }\n}\n\nclass Editor extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t    this.state = {\n\t      selectedOptionState: '',\n\t      selectedOptionCounty: '',\n\t      selectedOptionProblemId: '',\n\t      selectedOptionSubCategoryId: '',\n\t      isSelectedProblem: '',\n\t      isSelectedCounty: '',\n\t\t  errorMessageCounty: '',\n\t\t  StateId: '',\n\t\t  CountyId: '',\n\t      selectedDocument: '',\n\t      uploadingDocument: false,\n\t      testTest: '',\n\t      admin: '',\n\t      accept: '.docx, .pdf',\n\t      filesPDFs: [],\n\t      filesDOCXs: [],\n\t      dropzoneActive: false,\n\t      dropzoneActivePDF: false,\n\t      session_id: '',\n\t      authorized: true,\n\t      authorizationMessage: 'Checking authorization...'\n\t    }\n\n\t    this.handleChangeDocument = this.handleChangeDocument.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tvar _thisComponent = this\n\n// return inputStr.replace(/[^\\x09\\x0A\\x0D\\x20-\\xFF\\x85\\xA0-\\uD7FF\\uE000-\\uFDCF\\uFDE0-\\uFFFD]/gm, '');\n\n\n\n\t\t/*\n\t\t// This needs to be async (I thought it was...)\n\t    setTimeout( function() {\n\t    \t// console.log(_thisComponent.props)\n\n\t\t    // const { isAuthenticated } = _thisComponent.props.auth;\n\t\t\t// var definitelyLoggedin = isAuthenticated()\n\n\t\t    _thisComponent.setState({ profile: {} })\n\t\t    const { userProfile, getProfile } = _thisComponent.props.auth\n\n\t\t    if (!userProfile) {\n\t\t      getProfile((err, profile) => {\n\t\t        _thisComponent.setState({ profile })\n\n\t\t        // console.log(profile)\n\n\t\t        if (profile && profile.app_metadata && profile.app_metadata.role === 'administrator') {\n\t\t      \t\t_thisComponent.setState({ authorized: true })\n\t\t        } else {\n\t\t      \t\t_thisComponent.setState({\n\t\t      \t\t\tauthorizationMessage: \"Sorry, you're not authorized to edit.\"\n\t\t      \t\t})\n\t\t        }\n\t\t      })\n\n\t\t    } else {\n\t\t      _thisComponent.setState({ profile: userProfile })\n\n\t\t      // console.log(userProfile)\n\t\t    }\n\t    }, 1000)\n\t\t*/\t    \n\n\t\t// console.log('Loading from localStorage instead')\n\n\t    \n\t    var $role = localStorage.getItem('role') \n\n\t    if ($role) {\n\t      // _thisComponent.setState({ profile: userProfile })\n\n\t      // console.log('userProfile')\n\t      // console.log(localStorage.getItem('profile'))\n\n\t      const profile = JSON.parse(localStorage.getItem('profile'))\n\t      // console.log(profile)\n\n\t      if ($role !== 'administrator') {\n\t    \tthis.setState({\n\t    \t\tauthorizationMessage: \"Please log in as administrator.\"\n\t    \t})\n\t      } else if ($role === 'administrator') {\n\t    \tthis.setState({\n\t    \t\tauthorizationMessage: \"Logged in.\",\n\t    \t\trole: $role\n\n\t    \t})\n\t      }\n\n\t      _thisComponent.setState({ profile })\n\t    }\n\n\t    const { renewSession } = _thisComponent.props.auth\n\n\t    if (localStorage.getItem('isLoggedIn') === 'true') {\n\t      renewSession()\n\t    }\n\t}\n\n\tgetStates = () => {\n\t\tvar sid = localStorage.getItem('sid')\n\n\t\t//console.log(input)\n\t\t//console.log(_thisComponent.state.selectedOptionState)\n\t    \n\t      return axios.post(API + `/documents`, {\n\t\t\t\tdata: {\n\t\t\t\t\tsid: sid\n\t\t\t\t}\n\t          })\n\t        .then((response) => {\n\t          // console.log(response)\n\t          //\n\t          var statesList = []\n\t          Object.values(response.data.files.recordset).forEach(function(trait) {\n\t            statesList.push({ value: trait.StateId, label: trait.State });\n\t          });\n\t          return statesList;\n\t        }).then((json) => {\n\t          return { options: json };\n\t        });\n\t}\n\n\tgetCounties = (input) => {\n\t\tvar sid = localStorage.getItem('sid')\n\n\t\t// console.log(input)\n\t\t// console.log(this)\n\t\t// console.log(_thisComponent.state.selectedOptionState)\n\t    \n\t    if (this.state.selectedOptionState) {\n\t      return axios.post(API + `/documents/${this.state.selectedOptionState.label}`, {\n\t\t\t\tdata: {\n\t\t\t\t\tsid: sid\n\t\t\t\t}\n\t          })\n\t        .then((response) => {\n\t          // console.log(response)\n\t          //\n\t          var countiesList = []\n\t          Object.values(response.data.files.recordset).forEach(function(trait) {\n\t            countiesList.push({ value: trait.CountyId, label: titleCase(trait.county) });\n\t          });\n\t          return countiesList;\n\t        }).then((json) => {\n\t          return { options: json };\n\t        });\n\t    }\n\t}\n\n\tgetProblems = (input) => {\n\t\tvar sid = localStorage.getItem('sid')\n\n\t      return axios.post(API + `/issues`, {\n\t\t\t\tdata: {\n\t\t\t\t\tsid: sid\n\t\t\t\t}\n\t          })\n\t        .then((response) => {\n\t          // console.log(response)\n\t          //\n\t          var issuesList = []\n\t          Object.values(response.data.files.recordset).forEach(function(trait) {\n\t            issuesList.push({ value: trait.ProblemId, label: titleCase(trait.ProblemType) });\n\t          });\n\t          return issuesList;\n\t        }).then((json) => {\n\t          return { options: json };\n\t        });\n\t}\n\n\tgetSubcategories = (input) => {\n\t\tvar sid = localStorage.getItem('sid')\n\n\t\t// console.log(input)\n\t\t// console.log(this.state)\n\t    \n\t    if (this.state.selectedOptionProblemId) {\n\t      return axios.post(API + `/documents/${this.state.selectedOptionState.label}/${this.state.selectedOptionCounty.label}/${this.state.selectedOptionProblemId.label}/subCategory`, {\n\t              data: {\n\t              \tsid: sid,\n\t              \tProblemId: this.state.ProblemId,\n\t              \tStateId: this.state.StateId,\n\t              \tCountyId: this.state.CountyId\n\t              }\n\t          })\n\t        .then((response) => {\n\t          // console.log(response.data.files)\n\t          \n\t          var subIssuesList = []\n\t          Object.values(response.data.files).forEach(function(trait) {\n\t            subIssuesList.push({ subvalue: trait.SubcategoryId, value: trait.SubcategoryId, label: titleCase(trait.Subcategory) });\n\t          });\n\t          return subIssuesList\n\t        }).then((json) => {\n\t          return { options: json }\n\t        })\n\t    }\n\t}\n\n\tgetDocument = (input) => {\n\t\tvar sid = localStorage.getItem('sid')\n\n\t\t// console.log(input)\n\t\t// console.log(this.state)\n\t    \n\t      return axios.post(API + `/documents/editor`, {\n\t              data: {\n\t              \tsid: sid,\n\t              \tStateId: \t\tthis.state.StateId,\n\t              \tCountyId: \t\tthis.state.CountyId,\n\t              \tProblemId: \t\tthis.state.ProblemId,\n\t              \tSubcategoryId: \tinput\n\t              }\n\t          })\n\t        .then((response) => {\n\t        \t// console.log(response)\n\t        \t\t\n\t\t\t    var documentList = []\n\n\t\t\t    if (response && response.data.files && response.data.files.recordset[0]) {\n\t\t\t\t    Object.values(response.data.files.recordsets[0]).forEach(function(trait) {\n\t\t\t\t      documentList.push({ value: trait.DocumentId, label: trait.ActualDocumentName })\n\t\t\t\t    });\n\n\t\t\t\t\n\t\t\t\t    this.setState({ \n\t\t\t\t      selectedDocument: documentList[0],\n\t\t\t\t      selectedDocumentId: response.data.files.recordset[0].DocumentId\n\t\t\t\t    })\n\t\t\t    }\n\t\t\t  })\n\t}\n\n\tonDragEnter() {\n\t\tthis.setState({\n\t\t  //dropzoneActive: true\n\t\t});\n\t}\n\n\tonDragLeave() {\n\t\tthis.setState({\n\t\t  //dropzoneActive: false\n\t\t});\n\t}\n\n\tonDragEnterPDF() {\n\t\tthis.setState({\n\t\t  //dropzoneActivePDF: true\n\t\t});\n\t}\n\n\tonDragLeavePDF() {\n\t\tthis.setState({\n\t\t  //dropzoneActivePDF: false\n\t\t});\n\t}\n\n\tonDrop(files) {\n\t\tvar selectedDocument = this.state.selectedDocument\n\n\t\t// console.log(this.state)\n\n\t\tif (selectedDocument) {\n\t\t  //\n\n\t\t  this.setState({\n\t\t    filesDOCXs: files,\n\t\t    dropzoneActive: false,\n\t\t    selectedDocument: ''\n\t\t  })\n\n\t\t  var data = new FormData()\n\t\t  data.append('file', files[0])\n\t\t  data.append('filename', selectedDocument + '.docx')\n\t\t  data.append('directDocumentId', this.state.selectedDocumentId)\n\n\t\t  fetch(API + '/document-update', {\n\t\t    method: 'POST',\n\t\t    headers: {\n\t\t      'authorization': process.env.REACT_APP_API_KEYEXTENDED\n\t\t    },\n\t\t    body: data,\n\t\t  }).then((response) => {\n\t\t  \t// console.log(response)\n\n\t\t  \t/*\n\t\t    response.json().then((body) => {\n\t\t      //this.setState({ imageURL: API + '/document-update' + `${body.file}` });\n\t\t    });\n\t\t    */\n\t\t  })\n\t\t}\n\t}\n\n\tonDropPDF(files) {\n\n\n\t  //\n\n\t  this.setState({\n\t    filesPDFs: files,\n\t    dropzoneActivePDF: false\n\t  })\n\n\t  var data = new FormData()\n\t  data.append('file', files[0])\n\t  data.append('filename', files[0].name)\n\n\t  fetch(API + '/document-update', {\n\t    method: 'POST',\n\t    headers: {\n\t      'authorization': process.env.REACT_APP_API_KEYEXTENDED\n\t    },\n\t    body: data,\n\t  }).then((response) => {\n\t  \tconsole.log(response)\n\t    response.json().then((body) => {\n\t    \tconsole.log(body)\n\t      //this.setState({ imageURL: API + '/document-update' + `${body.file}` });\n\t    })\n\t  })\n\t}\n\n\tapplyMimeTypes(event) {\n\t\tthis.setState({\n\t\t  accept: event.target.value\n\t\t})\n\t}\n\n\thandleChangeDocument = selectedOptions => {\n\t\t// console.log(selectedOptions.value)\n\n\t\t// console.log(selectedOptions)\n\t\tif (selectedOptions) {\n\t\t    this.setState({ \n\t\t      selectedDocument: selectedOptions,\n\t\t      selectedDocumentId: selectedOptions.value\n\t\t    })\n\t    }\n\t}\n\n\thandleChangeState = (selectedOptionState) => {\n\t\t// console.log(selectedOptionState)\n\n\t\t  this.setState({ \n\t\t    selectedOptionCounty: '',\n\t\t    CountyId: ''\n\t\t  })\n\n\t\tif (selectedOptionState) {\n\t\t  this.setState({ \n\t\t    selectedOptionState,\n\t\t    StateId: selectedOptionState.value\n\t\t  })\n\n\t\t  this.forceUpdate()\n\t\t} else {\n\t\t  this.setState({ \n\t\t    isSelectedState: 'invalid',\n\t\t    selectedOptionState,\n\t\t    selectedDocument: '',\n\t\t    selectedDocumentId: ''\n\t\t  })\n\t\t}\n\t}\n\n\thandleChangeCounty = (selectedOptionCounty) => {\n\t\tif (selectedOptionCounty) {\n\t\t  this.setState({ \n\t\t    errorMessageCounty: '',\n\t\t    selectedOptionCounty,\n\t\t    CountyId: selectedOptionCounty.value\n\t\t  }\n\t\t   //,() => \n\t\t  )\n\t\t} else if (!this.state.selectedOptionState) {\n\t\t  this.setState({ \n\t\t    isSelectedCounty: 'invalid',\n\t\t    errorMessageCounty: 'Add the property\\'s state first!',\n\t\t    selectedOptionCounty: ''\n\t\t  })\n\t\t} else {\n\t\t  this.setState({ \n\t\t    isSelectedCounty: 'invalid',\n\t\t    errorMessageCounty: 'Add the property\\'s county!',\n\t\t    selectedOptionCounty: '',\n\t\t    selectedDocument: '',\n\t\t    selectedDocumentId: ''\n\t\t  })\n\t\t}\n\t}\n\n\thandleChangeProblemId = (selectedOptionProblemId) => {\n\t\tif (selectedOptionProblemId) {\n\t\t  this.setState({ \n\t\t    selectedOptionProblemId,\n\t\t    ProblemId: selectedOptionProblemId.value\n\t\t  })\n\n\t\t  this.forceUpdate()\n\t\t} else {\n\t\t  this.setState({ \n\t\t    isSelectedProblem: 'invalid',\n\t\t    selectedOptionProblemId,\n\t\t    selectedDocument: '',\n\t\t    selectedDocumentId: ''\n\t\t  })\n\t\t}\n\t}\n\n\thandleChangeSubCategoryId = (selectedOptionSubCategoryId) => {\n\t\tif (selectedOptionSubCategoryId && selectedOptionSubCategoryId.value) {\n\n\t\t\t// console.log(selectedOptionSubCategoryId)\n\n\t\t  this.setState({ \n\t\t    selectedOptionSubCategoryId,\n\t\t    SubcategoryId: selectedOptionSubCategoryId.value\n\t\t  })\n\n\t\t  this.getDocument(selectedOptionSubCategoryId.value)\n\n\t\t  this.forceUpdate()\n\t\t} else {\n\t\t  this.setState({ \n\t\t    selectedOptionSubCategoryId,\n\t\t    selectedDocument: '',\n\t\t    selectedDocumentId: ''\n\t\t  })\n\t\t}\n\t}\n\n\trender() {\n        var adminLinks = ['editor','new document','UWAL']\n\n\t\tvar { filesPDFs, filesDOCXs, dropzoneActive, dropzoneActivePDF, selectedDocument, authorizationMessage, selectedOptionState, selectedOptionCounty, selectedOptionProblemId, selectedOptionSubCategoryId, highestDocumentID } = this.state\n\n\t    // if (this.state.profile)\n\t    \t// console.log(this.state.profile.app_metadata)\n\n\t    // this.state.profile && this.state.profile.app_metadata.role === 'administrator'\n\n\t\tif (this.state.role === 'administrator') { \n\t\t    return (\n\t\t    \t<div>\n\n\t\t\t    \t<div className=\"container editor-layout\">\n\t\t\t    \t\t<ul className=\"nav justify-content-center text-center\">\n\t\t\t\t\t\t  {Object.entries(adminLinks).map(([key, value]) =>\n\t\t              \t<li className={ 'nav-link col-md-3 ' + key } key={ key }><a href={ '/admin/' + value.replace(' ', '-') }>{ value }</a></li>\n\t\t\t\t\t\t  )}\n\t\t\t\t\t\t</ul>\n\n\t\t\t    \t\t<div>\n\t\t\t\t            <Async\n\t\t\t\t                name=\"selectMultiIssues\"\n\t\t\t\t                value={ selectedDocument }\n\t\t\t\t                placeholder=\"Choose a Document\"\n\t\t\t\t                onChange={ this.handleChangeDocument }\n\t\t\t\t                loadOptions={ getAllDocuments }\n\t\t\t\t                className={ 'placeholder' }\n\t\t\t\t            />\n\n\t\t                \t<p>Start by selecting the State, County, Problem, and then SubCategory to select the document.</p>\n\n\t\t                    <div className=\"form-group\">\n\t\t                    \t<br />\n\n\t\t                        <label htmlFor=\"StateId\" className=\"col-md-6\">\n\t\t                        \tState\n\t\t                            <Async\n\t\t                                name=\"StateId\"\n\t\t                                placeholder=\"Choose State\"\n\t\t                                value={ selectedOptionState }\n\t\t                \t\t\t\tonChange={ this.handleChangeState }\n\t\t                \t\t\t\tloadOptions={ this.getStates }\n\t\t\t\t\t                  \tclassName={ 'placeholder' }                \n\t\t                            />\n\t\t                        </label>\n\n\t\t                        <br className=\"clear\" />\n\n\t\t                        { selectedOptionState ?\n\t\t\t\t\t            <label htmlFor=\"CountyId\" className={ \"col-md-6 \" }>\n\t\t\t\t\t              County:\n\n\t\t\t\t\t              <Async\n\t\t\t\t\t                  name=\"CountyId\"\n\t\t\t\t\t                  placeholder=\"Choose County\"\n\t\t\t\t\t                  value={ selectedOptionCounty }\n\t\t\t\t\t                  onChange={ this.handleChangeCounty }\n\t\t\t\t\t                  loadOptions={ this.getCounties }\n\t\t\t\t\t                  className={ 'placeholder' }                \n\t\t\t\t\t                //required\n\t\t\t\t\t              />\n\t\t\t\t\t            </label>\n\t\t\t\t\t            : null }\n\n\t\t\t\t\t            <br className=\"clear\" />\n\n\t\t\t\t\t          { selectedOptionCounty ?\n\t\t\t                  <label htmlFor=\"problemId\" className={ \"col-md-6 \" }>\n\t\t\t                    Problem Type:\n\n\t\t\t                    <Async\n\t\t\t                        name=\"Problem\"\n\t\t\t                        placeholder=\"Choose Problem\"\n\t\t\t                        value={ selectedOptionProblemId }\n\t\t\t                        onChange={ this.handleChangeProblemId }\n\t\t\t                        loadOptions={ this.getProblems }\n\t\t\t                        className={ 'placeholder' }                \n\t\t\t                      //required\n\t\t\t                    />\n\n\t\t\t                    <small className={ 'text-danger ' } key=\"problemId\"></small>\n\t\t\t                  </label>\n\t\t\t\t\t          : null }\n\n\t\t\t\t\t          <br className=\"clear\" />\n\n\t\t\t\t\t          { selectedOptionProblemId ?\n\t\t\t                  <label htmlFor=\"SubCategoryId\" className={ \"col-md-6 \" }>\n\t\t\t                    Problem SubCategory:\n\n\t\t\t                    <Async\n\t\t\t                        name=\"SubCategory\"\n\t\t\t                        placeholder=\"Choose Problem\"\n\t\t\t                        value={ selectedOptionSubCategoryId }\n\t\t\t                        onChange={ this.handleChangeSubCategoryId }\n\t\t\t                        loadOptions={ this.getSubcategories }\n\t\t\t                        className={ 'placeholder' }                \n\t\t\t                      //required\n\t\t\t                    />\n\n\t\t\t                    <small className={ 'text-danger ' } key=\"SubCategoryId\"></small>\n\t\t\t                  </label>\n\t\t\t                  : null }\n\n\t\t\t\t\t          <br className=\"clear\" />\n\n\t\t\t                  <label htmlFor=\"DocumentId\" className={ \"col-md-6\" } style={{'display': 'none'}}>\n\t\t\t                    ProblemId:\n\n\t\t                        <input\n\t\t                            className=\"form-control\"\n\t\t                            placeholder={ highestDocumentID }\n\t\t                            name=\"problemId\"\n\t\t                            defaultValue={ highestDocumentID }\n\t\t                            type=\"text\"\n\t\t                            onChange={this.fieldUpdate}\n\t\t                        />\n\n\t\t\t                  </label>\n\t\t                    </div>\n\n\t\t\t\t            { this.state.selectedDocument ? \n\t\t\t\t            <div>\n\t\t\t\t\t            <Dropzone\n\t\t\t\t\t              accept=\".docx\"\n\t\t\t\t\t              onDrop={this.onDrop.bind(this)}\n\t\t\t\t\t              // onDragEnter={this.onDragEnter.bind(this)}\n\t\t\t\t\t              // onDragLeave={this.onDragLeave.bind(this)}\n\t\t\t\t\t              className=\"dropZone\"\n\t\t\t\t\t            >\n\t\t\t\t\t              { dropzoneActive && <div>Drop files...</div> }\n\t\t\t\t\t              <div>\n\t\t\t\t\t                <h1>Replace a Document</h1>\n\n\t\t\t\t\t                <h2>Dropped files</h2>\n\t\t\t\t\t                <ul>\n\t\t\t\t\t                  {\n\t\t\t\t\t                    filesDOCXs.map(f => <li key={f.name}>{f.name} - {f.size} bytes</li>)\n\t\t\t\t\t                  }\n\t\t\t\t\t                </ul>\n\n\t\t\t\t\t              </div>\n\t\t\t\t\t            </Dropzone>\n\n\t\t\t\t\t            <Dropzone\n\t\t\t\t\t              accept=\".pdf\"\n\t\t\t\t\t              onDrop={this.onDropPDF.bind(this)}\n\t\t\t\t\t              // onDragEnter={this.onDragEnterPDF.bind(this)}\n\t\t\t\t\t              // onDragLeave={this.onDragLeavePDF.bind(this)}\n\t\t\t\t\t              className=\"dropZone\"\n\t\t\t\t\t            >\n\t\t\t\t\t              { dropzoneActivePDF && <div>Drop files...</div> }\n\t\t\t\t\t              <div>\n\t\t\t\t\t                <h1>Upload a .pdf (to be linked to.)</h1>\n\n\t\t\t\t\t                <h2>Dropped files</h2>\n\t\t\t\t\t                <ul>\n\t\t\t\t\t                  {\n\t\t\t\t\t                    filesPDFs.map(f => <li key={f.name}><a href={ \"/api/\" + f.name }>{f.name}</a> - Link to file: { \"/api/\" + f.name }</li>)\n\t\t\t\t\t                  }\n\t\t\t\t\t                </ul>\n\n\t\t\t\t\t              </div>\n\t\t\t\t\t            </Dropzone>\n\t\t\t\t            </div>\n\t\t\t\t            : null }\n\n\n\n\t\t\t    \t\t\t<EditorComponent selectedDocument={this.state.selectedDocument} selectedDocumentId={this.state.selectedDocumentId} />\n\t\t\t    \t\t</div>\n\t\t    \t\t</div>\n\t    \t\t</div>\n\t    \t)\n    \t} else {\n\t    \treturn (\n\t    \t\t<div>\n\t    \t\t\t<div className=\"nav justify-content-center\">\n\t    \t\t\t\t{ authorizationMessage }\n\t    \t\t\t</div>\n\t    \t\t</div>\n\t    \t)\n    \t}\n\t}\n}\n\nexport default withRouter(Editor);","import React, { Component } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport axios from 'axios'\nimport Autocomplete from 'react-autocomplete'\nimport Script from 'react-load-script';\n\nimport 'react-select/dist/react-select.css';\nimport 'font-awesome/css/font-awesome.css'\n\nvar API = '';\n\nif (window.location.hostname === 'localhost') {\n  API = 'http://' + window.location.hostname + ':3001/api';\n} else {\n  API = 'https://' + window.location.hostname + '/api';\n}\n\nclass Documents extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\n\n\t    this.state = {\n\t      pageContent: '',\n\t      savedFormattedAddress: '',\n\t      value: '',\n\t      uwalNames: [],\n\t      loading: false    \n\t    }\n\n\t    this.handleSubmit = this.handleSubmit.bind(this)\n\t    this.handleUWALaddress = this.handleUWALaddress.bind(this)\n\t    this.handleUWALname = this.handleUWALname.bind(this)\n    \tthis.fillInAddress = this.fillInAddress.bind(this)\n    \tthis.handleScriptLoad = this.handleScriptLoad.bind(this)\n\t}\n\n\t  nameSearch = nameSearch => {\n\t    var _thisComponent = this\n\t    var sid = localStorage.getItem('sid')\n\n\t    if (_thisComponent.state.typingTimeout) {\n\t       clearTimeout(_thisComponent.state.typingTimeout);\n\t    }\n\n\t    _thisComponent.state.typingTimeout = setTimeout(() => {\n\t        // console.log(nameSearch)\n\n\t        return axios.post(API + `/lookup_name`, {\n\t            data: {\n\t              sid: sid,\n\t              searchString: nameSearch\n\t            }\n\t          })\n\t          .then( response => {\n\t            // console.log(response.data.result.recordset)\n\n\t            if (response.data && response.data.result.recordset.length) {\n\t              _thisComponent.setState({ \n\t              \tuwalNames: response.data.result.recordset, \n\t              \tloading: false \n\t              })\n\t            } else {\n\t            \t// console.log(response.data)\n\n\t            \t_thisComponent.setState({ \n\t            \t\tloading: false,\n            \t\t\tuwalActionName: \"insert\" \n\t            \t})\n\n\t    \t\t\tdocument.getElementById('nameAutocomplete').style.color = '#000'\n\t\t\t\t    document.getElementById('nameActiontobeset').innerHTML = 'Add to the UWAL'\n\t\t\t\t    document.getElementById('nameActiontobeset').disabled = false\n\t            }\n\t          })\n\t          .catch(err => \n\t            console.log(err)\n\t          )\n\t        }, 600)\n\t  }\n\n\t  setName = (value, state) => {\n\t    // console.log(value)\n\n\t    var properValue = value.replace('[object Undefined]', '')\n\t    // console.log(properValue)\n\n\t    document.getElementById('nameAutocomplete').style.background = '#fdedee'\n\t    document.getElementById('nameAutocomplete').style.color = '#000'\n\t    document.getElementById('nameAutocomplete').style.border = '1px solid #f53131'\n\t    document.getElementById('nameAutocomplete').value += ' - Found'\n\n\t    document.getElementById('nameActiontobeset').innerHTML = 'Remove from the UWAL'\n\t    document.getElementById('nameActiontobeset').disabled = false\n\n\t    this.setState({ \n\t    \tvalue: properValue + ' - Found', \n\t    \tuwalName: properValue,\n\t    \tuwalNames: [],\n            uwalActionName: \"delete\"\n\t    }) \n\t  }\n\n\thandleScriptLoad() {\n\t\t/*\n\t    var componentForm = {\n\t      street_number: 'short_name',\n\t      route: 'long_name',\n\t      locality: 'long_name',\n\t      administrative_area_level_1: 'short_name',\n\t      country: 'long_name',\n\t      postal_code: 'short_name'\n\t    };\n\t    */\n\n\t    // var searchForm = document.getElementById('home-form');\n\n\t    // Create the autocomplete object, restricting the search predictions to\n\t    // geographical location types.\n\n\t    /*global google*/ // To disable any eslint 'google not defined' errors\n\t    this.autocomplete = new google.maps.places.Autocomplete(\n\t        document.getElementById('google_autocomplete'), \n\t        {\n\t          types: ['geocode'],\n\t          componentRestrictions: {'country': 'us'}\n\t    });\n\n\t    // Avoid paying for data that you don't need by restricting the set of\n\t    // place fields that are returned to just the address components.\n\t    this.autocomplete.setFields(['address_component']);\n\n\t    // When the user selects an address from the drop-down, populate the\n\t    // address fields in the form.\n\t    this.autocomplete.addListener('place_changed', this.fillInAddress);\n\n\t    // Bias the autocomplete object to the user's geographical location,\n\t    // as supplied by the browser's 'navigator.geolocation' object.\n\t    function geolocate() {\n\t      if (navigator.geolocation) {\n\t        navigator.geolocation.getCurrentPosition(function(position) {\n\t          var geolocation = {\n\t            lat: position.coords.latitude,\n\t            lng: position.coords.longitude\n\t          };\n\t          var circle = new google.maps.Circle(\n\t              {center: geolocation, radius: position.coords.accuracy});\n\t          this.autocomplete.setBounds(circle.getBounds());\n\t        });\n\t      }\n\t    }\n\t}\n\n\tfillInAddress() {\n      // Get the place details from the autocomplete object.\n      var place = this.autocomplete.getPlace();\n\n      // console.log(place.address_components);\n      // console.log(typeof place.address_components);\n\n      if (typeof place.address_components != \"undefined\") {\n        /*\n        for (var component in componentForm) {\n          // document.getElementById(component).value = '';\n          document.getElementById(component).disabled = false;\n        }\n\n        // Get each component of the address from the place details,\n        // and then fill-in the corresponding field on the form.\n        for (var i = 0; i < place.address_components.length; i++) {\n          var addressType = place.address_components[i].types[0];\n          if (componentForm[addressType]) {\n            var val = place.address_components[i][componentForm[addressType]];\n            document.getElementById(addressType).value = val;\n          }\n        }\n        */\n\n        // console.log(place)\n\n        var formatted_address = '';\n        var arrayed_address = {};\n        var unusedAddressPieces = [\"country\", \"administrative_area_level_2\", \"postal_code_suffix\", \"neighborhood\", \"neighborhood\"];\n\n        for (var i = 0; i < place.address_components.length; i++) {\n          // !place.address_components[i].types.includes('country') && \n          // console.log(place.address_components[i].types.includes(\"country\"))\n\n          // console.log(place.address_components)\n\n          if (!unusedAddressPieces.includes(place.address_components[i].types[0]) && i !== place.address_components.length-1) {\n\n            if (place.address_components[i].types.includes('street_number')) {\n              arrayed_address.street_number = place.address_components[i];\n            }\n\n            if (place.address_components[i].types.includes('neighborhood')) {\n              arrayed_address.neighborhood = place.address_components[i];\n            }\n\n            if (place.address_components[i].types.includes('locality')) {\n              formatted_address += '– ';\n              arrayed_address.locality = place.address_components[i];\n            }\n\n            if (place.address_components[i].types.includes('route')) {\n              formatted_address += place.address_components[i].long_name;\n\n              arrayed_address.route = place.address_components[i];\n            } else {\n              formatted_address += place.address_components[i].short_name;\n            }\n            \n            if (place.address_components[i].types.includes('locality')) {\n              formatted_address += ',';             \n            }\n\n            if (!place.address_components[i].types.includes('postal_code')) {\n              formatted_address += ' ';\n\n              arrayed_address.postal_code = place.address_components[i];\n            }\n          }\n\n          if (place.address_components[i].types.includes('neighborhood_long')) {\n            arrayed_address.neighborhood_long = place.address_components[i];\n          }\n\n          if (place.address_components[i].types.includes('administrative_area_level_1')) {\n            arrayed_address.state = place.address_components[i];\n          }\n\n          if (place.address_components[i].types.includes('administrative_area_level_2')) {\n            arrayed_address.county = place.address_components[i]['short_name'].replace(' County', '');\n          }\n\n          if (place.address_components[i].types.includes('postal_code')) {\n            arrayed_address.postal_code = place.address_components[i];\n          }\n        }\n\n        document.getElementById('searchString').value = formatted_address;\n        var send_formatted_address = formatted_address;\n\n        // console.log(arrayed_address);\n\n        document.getElementById('searchArray').value = JSON.stringify(arrayed_address);\n        var send_arrayed_address = JSON.stringify(arrayed_address);\n\n\n        // console.log(arrayed_address)\n        // console.log(arrayed_address['street_number'])\n\n        if (arrayed_address['street_number'] && send_formatted_address !== null && send_arrayed_address !== null) {\n          return axios.get(API + \"/lookup?searchString=\" + send_formatted_address + \"&searchArray=\" + send_arrayed_address, {})\n            .then((response) => {\n              \n              // console.log(response)\n              // console.log(arrayed_address.state)\n              // console.log(arrayed_address.locality)\n\n              // var currentLocalities = [\"Philadelphia\", \"Montgomery\", \"Bucks\", \"Chester\", \"Delaware\"] \n\n              // var queryPulledState = arrayed_address.state['short_name']\n              // var queryPulledCounty = arrayed_address.county\n\n              // REPLACE - with class\n              if (response.data.status === 'found') {\n                  document.getElementById('google_autocomplete').style.background = '#fdedee'\n                  document.getElementById('google_autocomplete').style.color = '#000'\n                  document.getElementById('google_autocomplete').style.border = '1px solid #f53131'\n                  document.getElementById('google_autocomplete').value += ' - Already Found on the UWAL'\n\n                  document.getElementById('addressActiontobeset').innerHTML = 'Remove from UWAL'\n                  document.getElementById('addressActiontobeset').disabled = false\n\n                  // console.log(arrayed_address.state)\n                  // console.log(arrayed_address.locality)\n\n                  var savedFormattedAddress = JSON.stringify(send_formatted_address).replace(/\"/gi, '')\n\n                  this.setState({ \n                    savedFormattedAddress: savedFormattedAddress,\n                    savedArrayedAddress: send_arrayed_address,\n                    uwalActionAddress: \"delete\"\n                  })\n\n              } else {\n                  document.getElementById('google_autocomplete').style.background = '#edfdf2'\n                  document.getElementById('google_autocomplete').style.color = '#000'\n                  document.getElementById('google_autocomplete').style.border = '1px solid #31f566'\n                  document.getElementById('google_autocomplete').value += ' - Not Already on the UWAL'\n\n                  // console.log(arrayed_address.state)\n                  // console.log(arrayed_address)\n                  // console.log(arrayed_address.locality)\n\n                  document.getElementById('addressActiontobeset').innerHTML = 'Add to the UWAL'\n                  document.getElementById('addressActiontobeset').disabled = false\n\n                  var savedFormattedAddress = JSON.stringify(send_formatted_address).replace(/\"/gi, '')\n                  // console.log(savedFormattedAddress)\n                  // var countyAvailable = currentLocalities.includes(arrayed_address.county)\n\n                  this.setState({ \n                    savedFormattedAddress: savedFormattedAddress,\n                    savedArrayedAddress: send_arrayed_address,\n                    uwalActionAddress: \"insert\"\n                  })\n\n                  // if (!currentLocalities.includes(countyAvailable)) {\n                    // countyAvailable = \"Broader PA\"\n                  // }\n              }\n            }).then((json) => {\n              // return { options: json };\n            });\n        }\n      }\n    }\n\n\tcomponentDidMount() {\n\t    var _thisComponent = this\n\n\t    document.title = \"Titlebox - Start Title Walkthrough\"\n\n\t    const { login } = _thisComponent.props.auth;\n\n    // login()\n\n\t    var $checkAuth = localStorage.getItem('isLoggedIn')\n\n\t    if ($checkAuth === undefined || $checkAuth === null) {\n\t      login()\n\t    } else if ($checkAuth) {\n\t      var $role = localStorage.getItem('role')\n\t      // var $subscriptions = localStorage.getItem('subscriptions')\n\n\t      this.setState({\n\t      \trole: $role\n\t      })\n\n\t      // console.log($role)\n\t      // console.log($subscriptions)\n\n\t      if (!$role)\n\t        window.location.href = '//thetitlebox.com'\n\t    }\n\n    \t// console.log( $checkAuth )\n\n\n\t    const { renewSession } = _thisComponent.props.auth;\n\n\t    if (localStorage.getItem('isLoggedIn') === 'true') {\n\t      renewSession();\n\t    }\n\t}\n\n    fieldUpdate = (fieldProperty) => {\n    \tvar $name =\t fieldProperty.target.name\n    \tvar $value = fieldProperty.target.value\n\n        this.setState({ \n        \t[$name]: $value \n        })\n\n        // console.log($name)\n        // console.log($value)\n    }\n\n\thandleSubmit(event) {\n\t    event.preventDefault()\n\n\t    // const data = new FormData(event.target)\n\n\t    axios.post(API + `/document-creation`, {\n\t        data: this.state\n\t      })\n\t      .then((response) => {\n\t      \tthis.setState({\n\t      \t\tsubmitMessage: 'New document created, click over to the editor to add content.'\n\t      \t})\n\n\t      \tthis.forceUpdate()\n\t      }).catch((response) => {\n\t      \tthis.setState({\n\t      \t\tsubmitMessage: 'Error creating the document. Refresh and try again.'\n\t      \t})\n\t        // console.log(response)\n\t      })\n\n\t    // console.log(this.state)\n    }\n\n\n\n\thandleUWALaddress(event) {\n\t    event.preventDefault()\n\t    var sid = localStorage.getItem('sid')\n\n\t    // console.log(this.state.savedFormattedAddress)\n\n\t    if (this.state.savedFormattedAddress) {\n\t\t    axios.post(API + `/change_UWAL`, {\n\t\t        data: {\n\t\t        \tsid: sid,\n\t\t        \tstringAddress: this.state.savedFormattedAddress,\n\t\t        \tarrayAddress: this.state.savedArrayedAddress,\n\t\t        \ttype: 'address',\n\t\t        \taction: this.state.uwalActionAddress\n\t\t        }\n\t\t      })\n\t\t      .then((response) => {\n\t\t      \t// console.log(response)\n\n\t\t      \tif (response.data.result === 'success') {\n\t\t      \t\tdocument.getElementById('google_autocomplete').value = ''\n\t\t\t\t\tdocument.getElementById('google_autocomplete').removeAttribute('style')\n\t\t      \t\tdocument.getElementById('addressActiontobeset').innerHTML = 'Updated'\n\n\t\t      \t\tsetTimeout(function() {\n\t                \tdocument.getElementById('addressActiontobeset').innerHTML = 'Enter an Address'\n\t\t\t\t\t\tdocument.getElementById('addressActiontobeset').disabled = true\n\t\t\t\t\t}, 1000)\n\t\t\t\t}\n\t\t      }).catch((response) => {\n\t\t      \t// if (response)\n\t\t      \t\t// console.log(response)\n\t\t      })\n\t    }\n\t}\n\n\thandleUWALname(event) {\n\t    event.preventDefault()\n\t    var sid = localStorage.getItem('sid')\n\n\t    // console.log(event.target)\n\t    // console.log(this.state)\n\n\t    if (this.state.UWALname || this.state.value) {\n\t\t    axios.post(API + `/change_UWAL`, {\n\t\t        data: {\n\t\t        \tsid: sid,\n\t\t        \tstringName: this.state.uwalName,\n\t\t        \tvalue: this.state.value,\n\t\t        \ttype: 'name',\n\t\t        \taction: this.state.uwalActionName\n\t\t        }\n\t\t      })\n\t\t      .then((response) => {\n\t\t      \tif (response.data.result === 'success') {\n\t\t      \t\tthis.setState({value: ''})\n\t\t      \t\tdocument.getElementById('nameAutocomplete').removeAttribute('style')\n\t\t      \t\tdocument.getElementById('nameActiontobeset').innerHTML = 'Updated'\n\n\t\t      \t\tsetTimeout(function() {\n\t                \tdocument.getElementById('nameActiontobeset').innerHTML = 'Enter a Name'\n\t\t\t\t\t\tdocument.getElementById('nameActiontobeset').disabled = true\n\t\t\t\t\t}, 1000)\n\t\t      \t}\n\t\t      }).catch((response) => {\n\t\t      \t// if (response)\n\t\t      \t\t// console.log(response)\n\t\t      })\n\t    }\n\t}\n\n\trender() {\n\t\tvar allInputProperties = ['DocumentName','ActualDocumentName','DisplayDocumentName']\n\t\t// var allSelectProperties = ['StateId','CountyId']\n\n\t    var { authorizationMessage } = this.state\n\n        var adminLinks = ['editor','new document','UWAL']\n\n\t\tif (this.state.role === 'administrator') { \n\t\t    return (\n\t\t    \t<div className=\"container editor-layout\">\n\t\t    \t\t<ul className=\"nav justify-content-center text-center\">\n\t\t\t\t\t  {Object.entries(adminLinks).map(([key, value]) =>\n\t\t              \t<li className={ 'nav-link col-md-3 ' + key } key={ key }><a href={ '/admin/' + value.replace(' ', '-') }>{ value }</a></li>\n\t\t\t\t\t  )}\n\t\t\t\t\t</ul>\n\n\t\t\t\t    <Script \n\t\t\t          url=\"https://maps.googleapis.com/maps/api/js?key=AIzaSyA4HjZ_0bgGjWP5hnAYzBb09ef0cYTnLqU&libraries=places\"\n\t\t\t          onLoad={this.handleScriptLoad}\n\t\t\t        />\n\n\t\t\t          <form className=\"sub-form col-md-12 pull-right\" id=\"home-form\" onSubmit={ this.handleUWALaddress }>\n\n\t\t\t            <div className=\"input-group col-md-8 pull-left\"> \n\t\t\t              <input id=\"google_autocomplete\" placeholder=\"Enter Address\" onFocus={this.geolocate} type=\"text\" className=\"form-control input-lg\" autoComplete=\"off\" />\n\n\t\t\t              <input type=\"hidden\" name=\"searchString\" id=\"searchString\" />\n\t\t\t              <input type=\"hidden\" name=\"searchArray\" id=\"searchArray\" />\n\n\t\t\t            </div>\n\n\t\t\t            <span className=\"input-group-btn col-md-4 pull-right\">\n\t\t\t            \t<button type=\"submit\" className=\"btn btn-primary\" disabled={true} id=\"addressActiontobeset\">Enter an Address</button>\n\t\t\t            </span>\n\t\t\t          </form>\n\n\t\t\t          <form className=\"sub-form col-md-12\" id=\"name-form\" onSubmit={ this.handleUWALname }>\n\n\t\t\t            <div className=\"input-group col-md-8 pull-left\"> \n\t\t                    <Autocomplete\n\t\t                      value={this.state.value}\n\t\t                      inputProps={{ id: 'nameAutocomplete', className: 'form-control input-lg', placeholder: \"Enter Name\" }}\n\t\t                      items={this.state.uwalNames}\n\t\t                      getItemValue={(item) => toString(item.NameId) + item.Name}\n\t\t                      onSelect={this.setName}\n\t\t                      onChange={(event, value) => {\n\t\t                        this.setState({ value, loading: true })\n\n\t\t                        var _this = this\n\n\t\t                        if (value.length > 2) {\n\t\t                          setTimeout( function() {\n\t\t                            _this.nameSearch(value, (items) => {\n\t\t                              this.setState({ uwalNames: items, loading: false })\n\t\t                            })\n\t\t                          }, 100)\n\t\t                        } else {\n\t\t                          this.setState({ uwalNames: [], loading: false })\n\t\t                        }\n\t\t                      }}\n\t\t                      renderItem={(item, isHighlighted) => (\n\t\t                        item && item.Name && item.NameId && toString(item.NameId) ?\n\t\t                          <div key={toString(item.NameId) + item.Name} className={toString(item.NameId) + item.Name} style={{ background: isHighlighted ? 'lightgray' : 'white' }}>\n\t\t                            {item.Name}\n\t\t                          </div>\n\t\t                        :\n\t\t                          null                 \n\t\t                      )}\n\t\t                      renderMenu={(items, value) => (\n\t\t                        <div className={value ? 'menu starting' : 'menu'}>\n\t\t                          {value === '' ? (\n\t\t                            <div className=\"item\"></div>\n\t\t                          ) : this.state.loading ? (\n\t\t                            <div className=\"item\">Loading...</div>\n\t\t                          ) : items.length === 0 && value.includes('Found') ? (\n\t\t                            <div className=\"item\">Start a new search.</div>\n\t\t                          ) : items.length === 0 ? (\n\t\t                            <div className=\"item\">No matches for {value}</div>\n\t\t                          ) : items}\n\t\t                        </div>\n\t\t                      )}\n\t\t                    />\n\n\n\n\t\t\t            </div>\n\n\t\t\t              <span className=\"input-group-btn col-md-4 pull-right\">\n\t\t\t                  <button type=\"submit\" className=\"btn btn-primary\" disabled={true} id=\"nameActiontobeset\">Enter a Name</button>\n\t\t\t              </span>\n\t\t\t          </form>\n\n\t    \t\t</div>\n\t    \t)\n    \t} else {\n\t    \treturn (\n\t    \t\t<div>\n\t    \t\t\t<div className=\"nav justify-content-center\">\n\t    \t\t\t\t{ authorizationMessage }\n\t    \t\t\t</div>\n\t    \t\t</div>\n\t    \t)\n    \t}\n\t}\n}\n\nexport default withRouter(Documents)","import React, { Component } from 'react'\r\nimport {Link} from 'react-router-dom'\r\nimport Autocomplete from 'react-autocomplete'\r\nimport {Walkthrough} from './containers/walkthrough'\r\nimport {SingleDocument} from './containers/walkthrough/single'\r\n\r\nimport Script from 'react-load-script';\r\nimport axios from 'axios';\r\n/*\r\nimport Zendesk from \"react-zendesk\";\r\nconst ZENDESK_KEY = \"194e49e3-d98a-403e-ac3b-eda0f08dc118\";\r\n\r\nconst setting = {\r\n  color: {\r\n    theme: \"#000\"\r\n  },\r\n  launcher: {\r\n    chatLabel: {\r\n      \"en-US\": \"Need Help\"\r\n    }\r\n  },\r\n  contactForm: {\r\n    fields: [\r\n      { id: \"description\", prefill: { \"*\": \"Description\" } }\r\n    ]\r\n  },\r\n\r\n};\r\n*/\r\n\r\nvar API = '';\r\n\r\nif (window.location.hostname === 'localhost') {\r\n  API = 'http://' + window.location.hostname + ':3001/api';\r\n} else {\r\n  API = 'https://' + window.location.hostname + '/api';\r\n}\r\n\r\nif (!String.prototype.includes) {\r\n  String.prototype.includes = function(search, start) {\r\n    'use strict';\r\n\r\n    if (search instanceof RegExp) {\r\n      throw TypeError('first argument must not be a RegExp');\r\n    } \r\n    if (start === undefined) { start = 0; }\r\n    return this.indexOf(search, start) !== -1;\r\n  };\r\n}\r\n\r\nfunction potholesList(stateLocation, countyLocation, sid) {\r\n  return axios.post(API + `/potholes`, {\r\n      data: {\r\n        sid: sid,\r\n        stateName: stateLocation,\r\n        countyName: countyLocation\r\n      }\r\n    })\r\n    .then((response) => {\r\n      // console.log(response)\r\n\r\n      // return response.data.result.recordset\r\n      return response.data.result\r\n    })\r\n    .catch(err => \r\n      console.log(err)\r\n    )\r\n}\r\n\r\nfunction currentLocalitiesPull(sid) {\r\n  return axios.post(API + `/documents-available`, {\r\n      data: {\r\n        sid: sid\r\n      }\r\n    })\r\n    .then((response) => {\r\n      var localities = [];\r\n\r\n      for (var key in response.data.result.recordset) {\r\n          // console.log(key)\r\n          localities.push(response.data.result.recordset[key].County)\r\n\r\n          if (response.data.result.recordset[key].County === 'ALLCOUNTIES')\r\n            localities.push(response.data.result.recordset[key].State)\r\n      }\r\n\r\n      return localities\r\n    })\r\n    .catch(err => \r\n      console.log(err)\r\n    )\r\n}\r\n\r\nclass App extends Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    // console.log(this.props)\r\n\r\n    localStorage.setItem('uwalNameNote', '')\r\n\r\n    var projectIssues = ''\r\n    var projectAllIssues = ''\r\n    var projectState = ''\r\n    var projectCounty = ''\r\n\r\n\r\n    // console.log(issues)\r\n\r\n    this.state = {\r\n      pageContent: '',\r\n      projectIssues: projectIssues,\r\n      projectAllIssues: projectAllIssues,\r\n      projectState: projectState,\r\n      projectCounty: projectCounty,\r\n      savedFormattedAddress: '',\r\n      value: '',\r\n      uwalNames: [],\r\n      loading: false,\r\n      authenticated: false, \r\n      typingTimeout: 0,\r\n      currentLocalities: []\r\n    }\r\n\r\n    this.requestTimer = 5\r\n\r\n    this.handleScriptLoad = this.handleScriptLoad.bind(this)\r\n    this.fillInAddress = this.fillInAddress.bind(this)\r\n    this.nameSearch = this.nameSearch.bind(this)\r\n  }\r\n\r\n  componentDidMount() {\r\n    const { renewSession, login } = this.props.auth\r\n\r\n    var pathname = window.location.pathname\r\n    var checkAuth = localStorage.getItem('isLoggedIn')\r\n    var sid = ''\r\n\r\n    // console.log(pathname)\r\n\r\n    currentLocalitiesPull(sid)\r\n    .then((response) => {\r\n      this.setState({ \r\n        currentLocalities: response\r\n      })\r\n    })\r\n\r\n    if (pathname !== '/auth/callback') {\r\n      if (localStorage.getItem('isLoggedIn') === 'true') {\r\n        renewSession()\r\n        sid = localStorage.getItem('sid')\r\n      } else if (checkAuth === undefined || checkAuth === null || !checkAuth) {\r\n        login()\r\n      }\r\n    } else {\r\n      renewSession()\r\n    }\r\n\r\n    // console.log(this.props)\r\n\r\n    this.setState({\r\n      searchType: 'address'\r\n    })\r\n\r\n    if (this.props.hasOwnProperty('search')) {\r\n      const query = new URLSearchParams(this.props.location.search);\r\n      var queryPulledAddress = query.get('searchString')\r\n      var queryPulledAddressPieces = query.get('searchArray')\r\n      var savedFormattedAddress = ''\r\n      savedFormattedAddress = localStorage.getItem('uwalAddress')\r\n      if (savedFormattedAddress) {\r\n        savedFormattedAddress = savedFormattedAddress.replace(/\"/g, '')\r\n\r\n        var localPulledState = localStorage.getItem('uwalAddress_state')\r\n        var localPulledCounty = localStorage.getItem('uwalAddress_county')\r\n      \r\n        this.setState({ \r\n          savedFormattedAddress: savedFormattedAddress,\r\n          projectState: localPulledState,\r\n          projectCounty: localPulledCounty\r\n        })\r\n\r\n        var potholes = localStorage.getItem('potholes')\r\n\r\n        if (!potholes) {\r\n          potholesList(localPulledState, localPulledCounty, sid)\r\n          .then((response) => {\r\n            this.setState({ \r\n              // projectPotholes: response\r\n            })\r\n          })\r\n        } else {\r\n            this.setState({ \r\n              projectPotholes: potholes\r\n            })\r\n        }\r\n\r\n      } else if (queryPulledAddress && queryPulledAddressPieces) {  \r\n        queryPulledAddressPieces = JSON.parse(queryPulledAddressPieces)\r\n        var queryPulledState = queryPulledAddressPieces.state['short_name']\r\n        var queryPulledCounty = queryPulledAddressPieces.locality['short_name']\r\n\r\n        localStorage.setItem('uwalAddress', queryPulledAddress)\r\n        // projectState: localStorage.setItem('uwalAddress_state', queryPulledState)\r\n        // projectCounty: localStorage.setItem('uwalAddress_county', queryPulledCounty)\r\n\r\n        this.setState({ \r\n          savedFormattedAddress: queryPulledAddress,\r\n          projectState: queryPulledState,\r\n          projectCounty: queryPulledCounty\r\n        })\r\n\r\n        // console.log(queryPulledState + queryPulledCounty)\r\n\r\n        var potholes = localStorage.getItem('potholes')\r\n\r\n        if (!potholes) {\r\n          potholesList(localPulledState, localPulledCounty, sid)\r\n          .then((response) => {\r\n            this.setState({ \r\n              // projectPotholes: response\r\n            })\r\n          })\r\n        } else {\r\n            this.setState({ \r\n              projectPotholes: potholes\r\n            })\r\n        }   \r\n      }\r\n\r\n      this.setState({\r\n        searchType: 'address'\r\n      })\r\n    }\r\n  }\r\n\r\n    handleScriptLoad() {\r\n        /*\r\n        var componentForm = {\r\n          street_number: 'short_name',\r\n          route: 'long_name',\r\n          locality: 'long_name',\r\n          administrative_area_level_1: 'short_name',\r\n          country: 'long_name',\r\n          postal_code: 'short_name'\r\n        };\r\n        */\r\n\r\n        // Create the autocomplete object, restricting the search predictions to\r\n        // geographical location types.\r\n\r\n        /*global google*/ // To disable any eslint 'google not defined' errors\r\n        this.autocomplete = new google.maps.places.Autocomplete(\r\n            document.getElementById('google_autocomplete'), \r\n            {\r\n              types: ['geocode'],\r\n              componentRestrictions: {'country': 'us'}\r\n        });\r\n\r\n        // Avoid paying for data that you don't need by restricting the set of\r\n        // place fields that are returned to just the address components.\r\n        this.autocomplete.setFields(['address_component']);\r\n\r\n        // When the user selects an address from the drop-down, populate the\r\n        // address fields in the form.\r\n        this.autocomplete.addListener('place_changed', this.fillInAddress);\r\n\r\n        // Bias the autocomplete object to the user's geographical location,\r\n        // as supplied by the browser's 'navigator.geolocation' object.\r\n        function geolocate() {\r\n          if (navigator.geolocation) {\r\n            navigator.geolocation.getCurrentPosition(function(position) {\r\n              var geolocation = {\r\n                lat: position.coords.latitude,\r\n                lng: position.coords.longitude\r\n              };\r\n              var circle = new google.maps.Circle(\r\n                  {center: geolocation, radius: position.coords.accuracy});\r\n              this.autocomplete.setBounds(circle.getBounds());\r\n            });\r\n          }\r\n        }\r\n    }\r\n\r\n    fillInAddress() {\r\n      // Get the place details from the autocomplete object.\r\n      var place = this.autocomplete.getPlace()\r\n      var backupNumber = document.getElementById('google_autocomplete').value\r\n      backupNumber = backupNumber.split(' ')\r\n\r\n      // console.log(place.address_components);\r\n      // console.log(typeof place.address_components);\r\n\r\n      if (typeof place.address_components != \"undefined\") {\r\n        /*\r\n        for (var component in componentForm) {\r\n          // document.getElementById(component).value = '';\r\n          document.getElementById(component).disabled = false;\r\n        }\r\n\r\n        // Get each component of the address from the place details,\r\n        // and then fill-in the corresponding field on the form.\r\n        for (var i = 0; i < place.address_components.length; i++) {\r\n          var addressType = place.address_components[i].types[0];\r\n          if (componentForm[addressType]) {\r\n            var val = place.address_components[i][componentForm[addressType]];\r\n            document.getElementById(addressType).value = val;\r\n          }\r\n        }\r\n        */\r\n\r\n        var formatted_address = '';\r\n        var savedFormattedAddress = '';\r\n        var arrayed_address = {};\r\n        var unusedAddressPieces = [\"country\", \"administrative_area_level_2\", \"postal_code_suffix\", \"neighborhood\", \"neighborhood\"];\r\n\r\n        for (var i = 0; i < place.address_components.length; i++) {\r\n          // !place.address_components[i].types.includes('country') && \r\n          // console.log(place.address_components[i].types.includes(\"country\"))\r\n\r\n          // console.log(place.address_components)\r\n\r\n          if (!unusedAddressPieces.includes(place.address_components[i].types[0]) && i !== place.address_components.length-1) {\r\n\r\n            if (place.address_components[i].types.includes('street_number')) {\r\n              arrayed_address.street_number = place.address_components[i];\r\n            }\r\n\r\n            if (!arrayed_address.street_number) {\r\n              arrayed_address.street_number = backupNumber\r\n            }\r\n\r\n            if (place.address_components[i].types.includes('neighborhood')) {\r\n              arrayed_address.neighborhood = place.address_components[i];\r\n            }\r\n\r\n            if (place.address_components[i].types.includes('locality')) {\r\n              formatted_address += '– ';\r\n              arrayed_address.locality = place.address_components[i];\r\n            }\r\n\r\n            if (place.address_components[i].types.includes('route')) {\r\n              formatted_address += place.address_components[i].long_name;\r\n\r\n              arrayed_address.route = place.address_components[i];\r\n            } else {\r\n              formatted_address += place.address_components[i].short_name;\r\n            }\r\n            \r\n            if (place.address_components[i].types.includes('locality')) {\r\n              formatted_address += ',';             \r\n            }\r\n\r\n            if (!place.address_components[i].types.includes('postal_code')) {\r\n              formatted_address += ' ';\r\n\r\n              arrayed_address.postal_code = place.address_components[i];\r\n            }\r\n          }\r\n\r\n          if (place.address_components[i].types.includes('neighborhood_long')) {\r\n            arrayed_address.neighborhood_long = place.address_components[i];\r\n          }\r\n\r\n          if (place.address_components[i].types.includes('administrative_area_level_1')) {\r\n            arrayed_address.state = place.address_components[i];\r\n          }\r\n\r\n          if (place.address_components[i].types.includes('administrative_area_level_2')) {\r\n            arrayed_address.county = place.address_components[i]['short_name'].replace(' County', '');\r\n          }\r\n\r\n          if (place.address_components[i].types.includes('postal_code')) {\r\n            arrayed_address.postal_code = place.address_components[i];\r\n          }\r\n        }\r\n\r\n        document.getElementById('searchString').value = formatted_address;\r\n        var send_formatted_address = formatted_address;\r\n\r\n        // console.log(arrayed_address);\r\n\r\n        document.getElementById('searchArray').value = JSON.stringify(arrayed_address);\r\n        var send_arrayed_address = JSON.stringify(arrayed_address);\r\n\r\n\r\n        // console.log(send_formatted_address)\r\n        // console.log(send_arrayed_address)\r\n\r\n        var currentLocalities = this.state.currentLocalities\r\n\r\n        if (send_formatted_address !== null && send_arrayed_address !== null) {\r\n          document.querySelector('.fa.marker-icon').className = 'fa fa-spinner fa-pulse fa-3x fa-fw marker-icon'\r\n          var sid = localStorage.getItem('sid')\r\n\r\n          return axios.get(API + \"/lookup?searchString=\" + send_formatted_address + \"&searchArray=\" + send_arrayed_address, {})\r\n            .then((response) => {\r\n              \r\n              // console.log(arrayed_address.state)\r\n              // console.log(arrayed_address.locality)\r\n\r\n              // var currentLocalities = [\"Philadelphia\", \"Montgomery\", \"Bucks\", \"Chester\", \"Delaware\"] \r\n              // currentLocalities = [\"PA\", \"NJ\"] \r\n\r\n              var queryPulledState = arrayed_address.state['short_name']\r\n              var queryPulledCounty = arrayed_address.county\r\n              var resultsMeta = { exact: 0, similar: 0 }\r\n              var resultsList = ''\r\n              var resultsArrayforChecking = []\r\n\r\n              document.querySelector('.fa.marker-icon').className = 'fa fa-map-marker marker-icon'\r\n\r\n              // console.log(response)\r\n\r\n              // REPLACE - with class\r\n              if (response.data.status === 'found') {\r\n                  document.getElementById('google_autocomplete').value += ''\r\n\r\n                  for (var result = 0; result < response.data.result.length; result++) {\r\n\r\n                    if(!resultsArrayforChecking.includes(response.data.result[result].address)) {\r\n                      // console.log(resultsArrayforChecking)\r\n\r\n                      resultsArrayforChecking[result] = response.data.result[result].address\r\n\r\n                      resultsList += '' + response.data.result[result].address + ''\r\n\r\n                      // console.log(response)\r\n\r\n                      if (response.data.result[result].similarity === 'exact') {\r\n                        resultsMeta.exact = resultsMeta.exact + 1\r\n                      } else {\r\n                        resultsMeta.similar = resultsMeta.similar + 1\r\n                      }\r\n                    }\r\n                  }\r\n\r\n\r\n                  savedFormattedAddress = JSON.stringify(send_formatted_address).replace(/\"/gi, '')\r\n\r\n                  localStorage.setItem('uwalAddressNote', 'found')\r\n                  localStorage.setItem('uwalAddress', savedFormattedAddress)\r\n\r\n                  //if (arrayed_address.state['short_name'] === 'PA' || currentLocalities.includes(arrayed_address.county)) {\r\n\r\n                  // console.log('currentLocalities if Found')\r\n                  // console.log(currentLocalities)\r\n                  // console.log('Check state too')\r\n                  // console.log(arrayed_address.state)                  \r\n\r\n                  if (\r\n                    (arrayed_address.county && currentLocalities.includes(arrayed_address.county.toUpperCase())) \r\n                      || \r\n                    (arrayed_address.state && currentLocalities.includes(arrayed_address.state['short_name']))\r\n                  ) {\r\n                    localStorage.setItem('uwalAddress_state', arrayed_address.state['short_name'])\r\n                    localStorage.setItem('uwalAddress_county', arrayed_address.county)\r\n\r\n                    this.setState({ \r\n                      savedFormattedAddress: savedFormattedAddress,\r\n                      projectState: queryPulledState,\r\n                      projectCounty: queryPulledCounty\r\n                    })\r\n                  } else {\r\n                    localStorage.setItem('uwalAddress_state', '')\r\n                    localStorage.setItem('uwalAddress_county', '')\r\n\r\n                    this.setState({ \r\n                      savedFormattedAddress: '',\r\n                      projectState: '',\r\n                      projectCounty: ''\r\n                    })\r\n                  }\r\n\r\n\r\n                  potholesList(queryPulledState, queryPulledCounty, sid) \r\n                  .then((response) => {\r\n                    // console.log(arrayed_address.state)\r\n                    // console.log(arrayed_address.locality)\r\n\r\n                    // console.log(resultsList)\r\n\r\n                    localStorage.setItem('potholes', JSON.stringify(response))\r\n                    localStorage.setItem('resultsMeta', JSON.stringify(resultsMeta))\r\n                    localStorage.setItem('resultsList', resultsList)\r\n\r\n                    this.setState({ \r\n                      projectPotholes: JSON.stringify(response)\r\n                    })\r\n\r\n                    if (resultsMeta.exact) {\r\n                      this.setState({ \r\n                        uwalAddressNote: 'found',\r\n                        resultsMeta: resultsMeta,\r\n                        resultsList: resultsList\r\n                      })\r\n\r\n                      localStorage.setItem('uwalAddressNote', 'found')\r\n                    } else {\r\n                      this.setState({ \r\n                        uwalAddressNote: 'notfound',\r\n                        resultsMeta: resultsMeta,\r\n                        resultsList: resultsList\r\n                      })\r\n\r\n                      localStorage.setItem('uwalAddressNote', 'notfound')\r\n                    }\r\n\r\n                    // console.log(window.location.pathname)\r\n\r\n                    if (window.location.pathname !== '/')\r\n                      window.location.href = '/'\r\n                  })\r\n\r\n                  // console.log(arrayed_address)\r\n              } else if (response.data.status === 'notfound') {\r\n\r\n\r\n                  savedFormattedAddress = JSON.stringify(send_formatted_address).replace(/\"/gi, '')\r\n\r\n                  localStorage.setItem('uwalAddressNote', 'notfound')\r\n                  localStorage.setItem('uwalAddress', savedFormattedAddress)\r\n                  \r\n                  //if (arrayed_address.state['short_name'] === 'PA' || currentLocalities.includes(arrayed_address.county)) {\r\n                    \r\n                  // console.log('currentLocalities NOT Found')\r\n                  // console.log(currentLocalities)\r\n                  // console.log('Check state too')\r\n                  // console.log(arrayed_address)                  \r\n\r\n                  if (\r\n                    (arrayed_address.county && currentLocalities.includes(arrayed_address.county.toUpperCase())) \r\n                      || \r\n                    (arrayed_address.state && currentLocalities.includes(arrayed_address.state['short_name']))\r\n                  ) {\r\n                    localStorage.setItem('uwalAddress_state', arrayed_address.state['short_name'])\r\n                    localStorage.setItem('uwalAddress_county', arrayed_address.county)\r\n\r\n                    this.setState({ \r\n                      savedFormattedAddress: savedFormattedAddress,\r\n                      projectState: queryPulledState,\r\n                      projectCounty: queryPulledCounty\r\n                    })\r\n                  } else {\r\n                    localStorage.setItem('uwalAddress_state', '')\r\n                    localStorage.setItem('uwalAddress_county', '')\r\n\r\n                    this.setState({ \r\n                      savedFormattedAddress: '',\r\n                      projectState: '',\r\n                      projectCounty: ''\r\n                    })\r\n                  }\r\n\r\n                  this.setState({ \r\n                    uwalAddressNote: 'notfound'\r\n                  })\r\n\r\n\r\n                  potholesList(queryPulledState, queryPulledCounty, sid) \r\n                  .then((response) => {\r\n                    // console.log(arrayed_address.state)\r\n                    // console.log(arrayed_address)\r\n                    // console.log(arrayed_address.locality)\r\n\r\n                    localStorage.setItem('potholes', JSON.stringify(response))   \r\n                    localStorage.setItem('resultsMeta', JSON.stringify(resultsMeta))\r\n                    localStorage.setItem('uwalAddressNote', 'notfound')\r\n                    localStorage.setItem('resultsList', resultsList)\r\n                 \r\n                    this.setState({ \r\n                      projectPotholes: JSON.stringify(response), \r\n                      uwalAddressNote: 'notfound',\r\n                      resultsMeta: resultsMeta\r\n                    })\r\n\r\n                    if (window.location.pathname !== '/')\r\n                      window.location.href = '/'\r\n                  })  \r\n\r\n                  // console.log(arrayed_address)\r\n              } else {\r\n                document.getElementById('google_autocomplete').value += ''\r\n\r\n                localStorage.setItem('uwalAddress_state', '')\r\n                localStorage.setItem('uwalAddress_county', '')\r\n                localStorage.setItem('uwalAddress', '')\r\n              }\r\n            }).then((json) => {\r\n              // return { options: json };\r\n            });\r\n        }\r\n      }\r\n    }\r\n\r\n  nameSearch = nameSearch => {\r\n    var _thisComponent = this\r\n\r\n    if (_thisComponent.state.typingTimeout) {\r\n       clearTimeout(_thisComponent.state.typingTimeout);\r\n    }\r\n\r\n    _thisComponent.state.typingTimeout = setTimeout(() => {\r\n        // console.log(nameSearch)\r\n        var sid = localStorage.getItem('sid')\r\n\r\n        return axios.post(API + `/lookup_name` , {\r\n            data: {\r\n              sid: sid,\r\n              searchString: nameSearch\r\n            }\r\n          })\r\n          .then( response => {\r\n            // console.log(response.data.result.recordset)\r\n\r\n            if (response.data && response.data.result.recordset.length) {\r\n              _thisComponent.setState({ uwalNames: response.data.result.recordset, loading: false })\r\n            } else {\r\n              _thisComponent.setState({ \r\n                loading: false \r\n              })\r\n            }\r\n          })\r\n          .catch(err => \r\n            console.log(err)\r\n          )\r\n        }, 600)\r\n  }\r\n\r\n  setName = (value, state) => {\r\n    // console.log(value)\r\n\r\n    var properValue = value.replace('[object Undefined]', '')\r\n    // console.log(properValue)\r\n\r\n    localStorage.setItem('uwalNameNote', 'found')\r\n\r\n    this.setState({ value: properValue + ' - Found', uwalNames: [] }) \r\n  }\r\n\r\n  changeSearchType = changeSearchType => {\r\n    // console.log(changeSearchType.target.value)\r\n\r\n    var _this = this\r\n\r\n    this.setState({ \r\n      searchType: changeSearchType.target.value\r\n    })\r\n\r\n    var baseClass = 'col-md-6 uwal-buttons ' + changeSearchType.target.value\r\n\r\n    document.querySelectorAll('.uwal-buttons').forEach(function(e) {\r\n      e.className = e.className.replace('active', '')\r\n    })\r\n    document.querySelector('.uwal-buttons.' + changeSearchType.target.value).className = baseClass + ' active'\r\n\r\n    if (changeSearchType.target.value === 'address') \r\n      setTimeout(function() {\r\n        _this.handleScriptLoad()\r\n      }, 100);\r\n  }\r\n\r\n\r\n  goTo(route) {\r\n    this.props.history.replace(`/${route}`)\r\n  }\r\n\r\n  login() {\r\n    this.props.auth.login()\r\n  }\r\n\r\n  logout() {\r\n    this.props.auth.logout()\r\n  }\r\n\r\n  nothing(e) {\r\n    e.preventDefault()\r\n  }\r\n\r\n  clearSlate(e) {\r\n    e.preventDefault()\r\n\r\n    localStorage.setItem('potholes', '')\r\n    localStorage.setItem('uwalAddress_state', '')\r\n    localStorage.setItem('uwalAddress_county', '')\r\n    localStorage.setItem('uwalAddress', '')\r\n    localStorage.setItem('uwalAddressNote', '')\r\n\r\n    window.location.href = '/'\r\n  }\r\n\r\n  renewToken() {\r\n    const { renewSession } = this.props.auth\r\n\r\n    renewSession()\r\n  }\r\n\r\n  render() {\r\n    const { isAuthenticated } = this.props.auth\r\n    var { savedFormattedAddress } = this.props\r\n    const testAuthenticated = isAuthenticated()\r\n\r\n    // console.log(this.props)\r\n\r\n    const loggedIn = localStorage.getItem('isLoggedIn')\r\n    var role = ''\r\n        role = localStorage.getItem('role')\r\n    savedFormattedAddress = localStorage.getItem('uwalAddress')\r\n    var uwalAddressNote = this.state.uwalAddressNote\r\n    var uwalNameNote = localStorage.getItem('uwalNameNote')\r\n\r\n    /*\r\n    const renderMergedProps = (component, ...rest) => {\r\n      const finalProps = Object.assign({}, ...rest);\r\n      return (\r\n        React.createElement(component, finalProps)\r\n      );\r\n    }\r\n\r\n    const PropsRoute = ({ component, ...rest }) => {\r\n      return (\r\n        <Route {...rest} render={routeProps => {\r\n          return renderMergedProps(component, routeProps, rest);\r\n        }}/>\r\n      );\r\n    }\r\n    */\r\n\r\n    var pathname = window.location.pathname\r\n    var subPath = pathname.split('/')\r\n\r\n    // console.log(pathname)\r\n    // console.log(subPath[1])\r\n\r\n    // console.log(window.location.pathname)\r\n    // className=\"d-flex flex-column flex-md-row align-items-center bg-white border-bottom box-shadow\"\r\n\r\n    // console.log(testAuthenticated)\r\n\r\n    if (testAuthenticated === true) {\r\n      document.body.style.backgroundColor = \"#ffffff\"\r\n    }\r\n\r\n    var $domain = this.props.domain\r\n\r\n    // console.log(pathname)\r\n    //console.log($domain)\r\n\r\n    return (\r\n      <div>\r\n        { testAuthenticated === true && pathname !== \"/auth/callback\" ?\r\n        <div>\r\n          { subPath[1] !== \"admin\" ?\r\n          <Script \r\n            url=\"https://maps.googleapis.com/maps/api/js?key=AIzaSyA4HjZ_0bgGjWP5hnAYzBb09ef0cYTnLqU&libraries=places\"\r\n            onLoad={this.handleScriptLoad}\r\n          />\r\n          : null }\r\n\r\n          <header>       \r\n            <div className=\"col-md-12\">\r\n              <a href=\"/\" className=\"my-0 mr-md-auto font-weight-normal\" onClick={ this.clearSlate }>\r\n                <img className=\"logo-nav\" alt=\"logo-nav\" src=\"//thetitlebox.com/wp-content/uploads/2019/10/logo.png\"/>\r\n              </a>\r\n\r\n              <nav className=\"my-2 my-md-0 mrBack to Walkthrough-md-3 pull-right\">            \r\n                { window.location.pathname !== '/' ?\r\n                  <Link to=\"/\" className=\"p-2\"><i className=\"fa fa-home\"></i>Home</Link>\r\n                : null }\r\n\r\n                {\r\n                  !loggedIn && (\r\n                      <Link\r\n                        id=\"qsLoginBtn\"\r\n                        to=\"\"\r\n                        className=\"p-2\"\r\n                        onClick={this.login.bind(this)}\r\n                      >\r\n                        Log In\r\n                      </Link>\r\n                    )\r\n                }\r\n\r\n                {\r\n                  loggedIn && (\r\n                    <a\r\n                      id=\"AccountBtn\"\r\n                      href=\"https://thetitlebox.com/my-account/edit-account/\"\r\n                      className=\"p-2\"\r\n                    >\r\n                      My Account \r\n                    </a> \r\n                  )\r\n                }\r\n\r\n                {\r\n                  loggedIn && (\r\n                    <Link\r\n                      id=\"qsLogoutBtn\"\r\n                      to=\"\"\r\n                      className=\"p-2\"\r\n                      onClick={this.logout.bind(this)}\r\n                    >\r\n                      Log Out\r\n                    </Link>\r\n                  )\r\n                }\r\n\r\n                {\r\n                  role === 'administrator' && $domain.indexOf('app.thetitlebox') < 1 && (\r\n                      <Link to=\"/admin/editor\" className=\"p-2\">Admin</Link>\r\n                    )\r\n                }\r\n              </nav>\r\n            </div>\r\n\r\n\r\n\r\n            <div className=\"col-md-12 search-area\">\r\n              { subPath[1] !== \"admin\" ?\r\n              <div onChange={this.changeSearchType} className=\"btn-group btn-group-toggle col-md-6 d-block mx-auto text-center\" data-toggle=\"buttons\">\r\n                <label className=\"col-sm-6 col-md-6 uwal-buttons address active\">Search by Address  <input type=\"radio\" value=\"address\" name=\"searchType\"/></label>\r\n                <label className=\"col-sm-6 col-md-6 uwal-buttons name\">Search by Name     <input type=\"radio\" value=\"name\" name=\"searchType\"/></label>\r\n              </div>\r\n              : null }\r\n\r\n              { this.state.searchType === \"address\" && subPath[1] !== \"admin\" ? \r\n              <form className=\"sub-form col-lg-12\" id=\"home-form\" onSubmit={ this.handleUWAL }>\r\n\r\n                <div className=\"input-group col-6 d-block mx-auto\"> \r\n                  <i className=\"fa fa-map-marker marker-icon\"></i>\r\n                  <input id=\"google_autocomplete\" placeholder=\"Enter Address\" onFocus={this.geolocate} onKeyPress={this.handleKeyPress} type=\"text\" className={\"form-control input-lg col-md-12 shadow \" + uwalAddressNote } defaultValue={ savedFormattedAddress } autoComplete=\"off\" />\r\n\r\n                  <input type=\"hidden\" name=\"searchString\" id=\"searchString\" />\r\n                  <input type=\"hidden\" name=\"searchArray\" id=\"searchArray\" />\r\n\r\n                  <span className=\"input-group-btn\">\r\n                      <button type=\"submit\" className=\"btn search-button-address\" onClick={ this.nothing }>Search!</button>\r\n                  </span>\r\n\r\n                </div>\r\n\r\n              </form>\r\n              : null }\r\n\r\n              { this.state.searchType === \"name\" ? \r\n              <form className=\"col-md-12 sub-form\" id=\"name-form\" onSubmit={ this.nothing }>\r\n                <div className=\"input-group col-6 d-block mx-auto\">\r\n                  <i className=\"fa fa-list\"></i> \r\n                  <Autocomplete\r\n                    value={this.state.value}\r\n                    inputProps={{ id: 'nameAutocomplete', className: 'form-control input-lg ' + uwalNameNote, placeholder: \"Enter Name\" }}\r\n                    items={this.state.uwalNames}\r\n                    getItemValue={(item) => toString(item.NameId) + item.Name}\r\n                    onSelect={this.setName}\r\n                    onChange={(event, value) => {\r\n                      this.setState({ value, loading: true })\r\n\r\n                      var _this = this\r\n\r\n                      if (value.length > 2) {\r\n                        setTimeout( function() {\r\n                          _this.nameSearch(value, (items) => {\r\n                            this.setState({ uwalNames: items, loading: false })\r\n                          })\r\n                        }, 100)\r\n                      } else {\r\n                        this.setState({ uwalNames: [], loading: false })\r\n                      }\r\n                    }}\r\n                    renderItem={(item, isHighlighted) => (\r\n                      item && item.Name && item.NameId && toString(item.NameId) ?\r\n                        <div key={toString(item.NameId) + item.Name} className={toString(item.NameId) + item.Name} style={{ background: isHighlighted ? 'lightgray' : 'white' }}>\r\n                          {item.Name}\r\n                        </div>\r\n                      :\r\n                        null                 \r\n                    )}\r\n                    renderMenu={(items, value) => (\r\n                      <div className={value ? 'menu starting' : 'menu'}>\r\n                        {value === '' ? (\r\n                          <div className=\"item\"></div>\r\n                        ) : this.state.loading ? (\r\n                          <div className=\"item\">Loading...</div>\r\n                        ) : items.length === 0 && value.includes('Found') ? (\r\n                          <div className=\"item\">Start a new search.</div>\r\n                        ) : items.length === 0 ? (\r\n                          <div className=\"item\">No matches for {value}</div>\r\n                        ) : items}\r\n                      </div>\r\n                    )}\r\n                  />\r\n\r\n                  <span className=\"input-group-btn\">\r\n                      <button type=\"submit\" className=\"btn search-button-name\">Search!</button>\r\n                  </span>\r\n                </div>\r\n              </form>\r\n              : null }\r\n            </div>\r\n\r\n            <div className=\"latest-update-button\">\r\n              <a href=\"/latestupdates\">\r\n                LATEST UPDATES\r\n              </a>\r\n            </div>\r\n\r\n          </header>\r\n\r\n          { pathname === \"/\" ?\r\n            <Walkthrough masterissues={this.props.masterissues} projectState={this.state.projectState} projectCounty={this.state.projectCounty} projectPotholes={this.state.projectPotholes} uwalAddressNote={this.state.uwalAddressNote} resultsMeta={this.state.resultsMeta} resultsList={this.state.resultsList} auth={this.props.auth}  />\r\n          : null }\r\n\r\n          { (subPath[1] && subPath[1] === \"documents\") || (subPath[1] && subPath[1] === \"admin\") || pathname === \"/latestupdates\" ?\r\n            this.props.children\r\n          : null }\r\n\r\n        </div>\r\n      : null }\r\n      </div>\r\n    )\r\n  }\r\n}\r\n\r\nexport default App;","import React, { Component } from 'react';\nimport { HashLink as Link } from 'react-router-hash-link';\n\nclass Home extends Component {\n  login() {\n    this.props.auth.login();\n  }\n\n  logout() {\n    this.props.auth.logout();\n  }\n\n  componentDidMount() {\n    const { renewSession } = this.props.auth;\n\n    if (localStorage.getItem('isLoggedIn') === 'true') {\n      renewSession();\n    }\n  }\n\n  render() {\n    const { isAuthenticated } = this.props.auth;\n    // console.log( isAuthenticated() )\n\n    return (\n      <div className=\"container\">\n        {\n          isAuthenticated() && (\n              <h4>\n                You are logged in! &nbsp;\n                  <Link\n                    to=\"\"\n                    id=\"qsLogoutBtn\"\n                    className=\"btn-margin\"\n                    onClick={this.logout.bind(this)}\n                  >Log Out</Link>\n              </h4>\n            )\n        }\n        {\n          !isAuthenticated() && (\n              <div className=\"col-md-6\">\n                <br />\n\n                <h4>Welcome to Titlebox!</h4>\n                <p>Click here to confirm your &nbsp;\n                  <Link\n                    to=\"\"\n                    style={{ cursor: 'pointer' }} \n                    onClick={this.login.bind(this)} \n                    className=\"text-primary\">Log In</Link> \n                    &nbsp; to continue to the app.\n                </p>\n              </div>\n            )\n        }\n      </div>\n    );\n  }\n}\n\nexport default Home;\n","import React, { Component } from 'react';\n\nconst appUrl = \"https://thetitlebox.com/wp-json/wp/v2/\";\nconst getPost = `${appUrl}pages/?include[]=11423`;\n\nexport class LatestUpdates extends Component {\n  constructor(props) {\n    super(props)\n  }\n\n  componentDidMount() {\n    /*\n    const { renewSession } = this.props.auth;\n\n    if (localStorage.getItem('isLoggedIn') === 'true') {\n      renewSession();\n    }\n    */\n\n    let postUrl = `${getPost}`;\n    fetch(postUrl)\n      .then(data => data.json())\n      .then(data => {\n          var postContent = data[0].content['rendered']\n          // postContent = JSON.stringify(postContent)\n          // postContent = postContent.toString()\n\n          this.setState({\n             updatesContent: postContent\n          })\n\n          document.querySelector('.contentContainer').innerHTML = postContent\n\n          // console.log(postContent)\n      })\n  }\n\n  render() {\n    // const { isAuthenticated } = this.props.auth;\n    // console.log( isAuthenticated() )\n\n    return (\n      <div className=\"col-md-8 p-6 d-block mx-auto contentContainer\">\n        <i className=\"fa fa-spinner fa-pulse\"></i> Loading...\n      </div>\n    )\n  }\n}\n\nexport default LatestUpdates;\n","import React, { Component } from 'react';\r\n// import loading from './loading.svg';\r\n\r\nclass Callback extends Component {\r\n  render() {\r\n    return (\r\n      <div className=\"loading\">\r\n        Loading...\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default Callback;\r\n","import createHistory from 'history/createBrowserHistory'\r\n\r\nexport default createHistory()\r\n","require('dotenv').config()\n\nexport const AUTH_CONFIG = {\n  domain: process.env.REACT_APP_auth0_domain,\n  clientID: process.env.REACT_APP_auth0_clientID,\n  clientSecret: process.env.REACT_APP_auth0_clientSecret,\n  callbackUrl: process.env.REACT_APP_callbackUrl + '/auth/callback'\n}\n","import React from 'react';\r\nimport { Route, Router, Switch } from 'react-router-dom';\r\nimport Walkthrough from './containers/walkthrough';\r\nimport WalkthroughFinish from './containers/walkthrough/finish';\r\nimport SingleDocument from './containers/walkthrough/single';\r\nimport axios from 'axios';\r\n\r\nimport Documents from './containers/admin/new-document';\r\n// import MultipleEdit from './containers/admin/multipleedit';\r\nimport Editor from './containers/admin/editor';\r\n// import Reset from './containers/admin/reset';\r\nimport UWAL from './containers/admin/uwal';\r\n// import Potholes from './containers/admin/potholes';\r\n// import Admin from './containers/admin';\r\n// import SearchArea from './containers/searcharea';\r\n\r\nimport GoogleAnalytics from 'react-ga';\r\n\r\nimport App from './App';\r\n// import Profile from './Profile';\r\n\r\nimport Home from './containers/home';\r\nimport LatestUpdates from './containers/latestupdates';\r\nimport Callback from './containers/auth/callback';\r\nimport Auth from './containers/auth';\r\nimport history from './history';\r\n\r\nconst auth = new Auth()\r\n\r\nlet $environment = process.env.NODE_ENV\r\nlet $domain = window.location.href\r\n\r\naxios.interceptors.request.use( async(config) => {\r\n  let accessToken = process.env.REACT_APP_API_KEYEXTENDED\r\n\r\n  if (accessToken) {\r\n    config.headers['authorization'] = `${accessToken}`\r\n    config.headers['Content-Type'] = 'application/json'\r\n    config.headers['Cache-Control'] = 'cache'\r\n\r\n    return config\r\n  }\r\n\r\n}, function (error) {\r\n  return Promise.reject(error)\r\n})\r\n\r\nconst handleAuthentication = ({location}) => {\r\n  if (/access_token|id_token|error/.test(location.hash)) {\r\n    auth.handleAuthentication()\r\n\r\n    // console.log(auth)\r\n  }\r\n}\r\n\r\nvar masterIssueList = [\r\n  {value: \"BANKRUPTCY\", label: \"BANKRUPTCY\"},\r\n  {value: \"JUDGMENTS\", label: \"JUDGMENTS\"},\r\n  {value: \"FORECLOSURE\", label: \"FORECLOSURE\"},\r\n  {value: \"CHAIN OF TITLE\", label: \"CHAIN OF TITLE\"},\r\n  {value: \"MORTGAGES\", label: \"MORTGAGES\"},\r\n  {value: \"ASSOCIATIONS AND COMMUNITIES\", label: \"ASSOCIATIONS AND COMMUNITIES\"},\r\n  {value: \"ENTITIES\", label: \"ENTITIES\"},\r\n  {value: \"REAL ESTATE TAXES\", label: \"REAL ESTATE TAXES\"},\r\n  {value: \"ESTATES\", label: \"ESTATES\"},\r\n  {value: \"MARRIAGE AND DIVORCE\", label: \"MARRIAGE AND DIVORCE\"}\r\n]\r\n\r\nconst renderMergedProps = (component, ...rest) => {\r\n  const finalProps = Object.assign({}, ...rest);\r\n  return (\r\n    React.createElement(component, finalProps)\r\n  );\r\n}\r\n\r\nconst PropsRoute = ({ component, ...rest }) => {\r\n  return (\r\n    <Route {...rest} render={routeProps => {\r\n      return renderMergedProps(component, routeProps, rest);\r\n    }}/>\r\n  );\r\n}\r\n\r\nif ($environment !== 'development') {\r\n  GoogleAnalytics.initialize('UA-122705774-1')\r\n  GoogleAnalytics.pageview(window.location.pathname + window.location.search)\r\n} else {\r\n  console.log($domain)\r\n  console.log($domain.indexOf('app.thetitlebox'))\r\n  console.log($environment)\r\n}\r\n\r\nexport const makeMainRoutes = () => {\r\n\r\n  \r\n\r\n  return (\r\n      <Router history={history}>\r\n        <>\r\n          <Route path=\"/auth/callback\" render={(props) => {\r\n            handleAuthentication(props);\r\n            return <Callback {...props} /> \r\n          }}/>\r\n\r\n          <App auth={auth} masterissues={ masterIssueList } domain={ $domain }>\r\n\r\n            <div className=\"workspace\">\r\n              <main>\r\n                {$domain.indexOf('app.thetitlebox') < 1 ?\r\n                  <Switch>\r\n                    <PropsRoute path=\"/admin/new-document\"            component={ Documents }     auth={auth} />\r\n                    <PropsRoute path=\"/admin/editor/:documenttoedit\"  component={ Editor }        auth={auth} />\r\n                    <PropsRoute path=\"/admin/editor\"                  component={ Editor }        auth={auth} />\r\n                    <PropsRoute path=\"/admin/uwal\"                    component={ UWAL }          auth={auth} />\r\n\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue/:id/:section\"  component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue/:id\"           component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue\"               component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue\"                         component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county\"                                component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state\"                                        component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                  \r\n                    <PropsRoute path=\"/latestupdates\"  component={ LatestUpdates }       masterissues={ masterIssueList }  auth={auth} />\r\n                    \r\n                    <PropsRoute path=\"/\"               component={ Walkthrough }         masterissues={ masterIssueList }  auth={auth} />\r\n\r\n                  </Switch>\r\n                : \r\n                  <Switch>\r\n                    <Route path=\"/signin\" render={(props) => <Home auth={auth} {...props} />} />\r\n\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue/:id/:section\"  component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue/:id\"           component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue/:subissue\"               component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county/:issue\"                         component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state/:county\"                                component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                    <PropsRoute path=\"/documents/:state\"                                        component={ SingleDocument } masterissues={ masterIssueList } auth={auth} />\r\n                  \r\n                    <PropsRoute path=\"/latestupdates\"  component={ LatestUpdates }       masterissues={ masterIssueList }  auth={auth} />\r\n\r\n                    <Route path=\"/walkthrough/finish\"  component={ WalkthroughFinish }   masterissues={ masterIssueList }  auth={auth} />\r\n                    <PropsRoute path=\"/\"               component={ Walkthrough }         masterissues={ masterIssueList }  auth={auth} />\r\n                  </Switch>\r\n                }\r\n              </main>\r\n            </div>\r\n          </App>\r\n        </>\r\n      </Router>\r\n  );\r\n}\r\n","import history from '../../history';\r\nimport auth0 from 'auth0-js';\r\nimport CryptoAES from 'crypto-js/aes';\r\nimport { AUTH_CONFIG } from './auth0-variables';\r\n\r\nexport default class Auth {\r\n  accessToken;\r\n  idToken;\r\n  expiresAt;\r\n  userProfile;\r\n  tokenRenewalTimeout;\r\n\r\n  auth0 = new auth0.WebAuth({\r\n    domain: AUTH_CONFIG.domain,\r\n    clientID: AUTH_CONFIG.clientID,\r\n    clientSecret: AUTH_CONFIG.clientSecret,\r\n    redirectUri: AUTH_CONFIG.callbackUrl,\r\n    responseType: 'token id_token',\r\n    scope: 'openid profile'\r\n  });\r\n\r\n  constructor() {\r\n    this.login = this.login.bind(this);\r\n    this.logout = this.logout.bind(this);\r\n    this.handleAuthentication = this.handleAuthentication.bind(this);\r\n    this.isAuthenticated = this.isAuthenticated.bind(this);\r\n    this.getAccessToken = this.getAccessToken.bind(this);\r\n    this.getIdToken = this.getIdToken.bind(this);\r\n    this.renewSession = this.renewSession.bind(this);\r\n    // this.getProfile = this.getProfile.bind(this);\r\n    this.scheduleRenewal();\r\n  }\r\n\r\n  login() {\r\n    this.auth0.authorize();\r\n  }\r\n\r\n  handleAuthentication() {\r\n    this.auth0.parseHash((err, authResult) => {\r\n      if (authResult && authResult.accessToken && authResult.idToken) {\r\n        this.setSession(authResult);\r\n\r\n        history.replace('/')\r\n      } else if (err) {\r\n        history.replace('/')\r\n        // console.log(err);\r\n        // alert(`Error: ${err.error}. Check the console for further details.`);\r\n      }\r\n    });\r\n  }\r\n\r\n  getAccessToken() {\r\n    return this.accessToken;\r\n  }\r\n\r\n  getIdToken() {\r\n    return this.idToken;\r\n  }\r\n\r\n  setSession(authResult) {\r\n    // Set isLoggedIn flag in localStorage\r\n    var role = authResult.idTokenPayload['https://formfunction.io/role']\r\n    var subscriptionsJSON = authResult.idTokenPayload['https://formfunction.io/subscriptions']\r\n    var orderID = authResult.idTokenPayload['https://formfunction.io/order_key']\r\n\r\n    // Set the time that the access token will expire at\r\n    let expiresAt = (authResult.expiresIn * 10080) + new Date().getTime()\r\n    this.accessToken = authResult.accessToken\r\n    this.idToken = authResult.idToken\r\n    this.expiresAt = expiresAt\r\n\r\n    var cipherUserData = {\r\n      \"role\" : role,\r\n      \"subscriptions\" : subscriptionsJSON[0],\r\n      \"expiresAt\" : expiresAt,\r\n      \"idToken\" : authResult.idToken,      \r\n    }\r\n    cipherUserData = JSON.stringify(cipherUserData)\r\n    cipherUserData = CryptoAES.encrypt(cipherUserData, process.env.REACT_APP_API_KEYSIMPLE)\r\n\r\n    localStorage.setItem('isLoggedIn', 'true')\r\n    localStorage.setItem('sid', cipherUserData)\r\n\r\n    localStorage.setItem('role', role)\r\n    localStorage.setItem('subscriptions', subscriptionsJSON[0])\r\n\r\n    role = localStorage.getItem('role')\r\n    var subscriptions = localStorage.getItem('subscriptions')\r\n\r\n\r\n    // navigate to the home route\r\n    // console.log(history.location.pathname)\r\n    this.scheduleRenewal()\r\n\r\n    /* if is domain!\r\n    if (orderID && orderID.includes('wc')) {\r\n      console.log('redirect')\r\n      console.log('https://app.thetitlebox.com' + history.location.pathname)\r\n      window.location.href = 'https://app.thetitlebox.com' + history.location.pathname\r\n    }\r\n    */\r\n\r\n    if (!role || role === 'undefined') {\r\n      this.logout('redirect')\r\n    } else if (history.location.pathname === '/auth/callback') {\r\n      history.replace('/')\r\n    } else {\r\n      history.replace(history.location.pathname)\r\n    }\r\n  }\r\n\r\n  renewSession() {\r\n    this.auth0.checkSession({}, (err, authResult) => {\r\n       if (authResult && authResult.accessToken && authResult.idToken) {\r\n         this.setSession(authResult)\r\n       } else if (err) {\r\n         this.logout();\r\n         // console.log(err);\r\n         // alert(`Could not get a new token (${err.error}: ${err.error_description}).`);\r\n       }\r\n    })\r\n  }\r\n\r\n  /*\r\n  getProfile(cb) {\r\n    if (this.accessToken) {\r\n      this.auth0.client.userInfo(this.accessToken, (err, profile) => {\r\n        if (profile) {\r\n          this.userProfile = profile\r\n\r\n          request.post({\r\n              url: 'https://formfunctionio.auth0.com/oauth/token',\r\n              form: {\r\n                grant_type : 'client_credentials',\r\n                client_id : AUTH_CONFIG.clientID,\r\n                client_secret : AUTH_CONFIG.clientSecret,\r\n                audience : 'https://formfunctionio.auth0.com/api/v2/'\r\n              }\r\n            },\r\n            (err, response, body) => {\r\n              var $access_token = body\r\n              $access_token = JSON.parse($access_token)\r\n              $access_token = $access_token.access_token\r\n\r\n              axios.get('https://formfunctionio.auth0.com/api/v2/users/' + profile.sub, {\r\n                    headers: { \r\n                      authorization: 'Bearer ' + $access_token \r\n                    }\r\n                  })\r\n                .then(function(response) {\r\n                  // console.log(response)\r\n\r\n                  profile.app_metadata = response.data.app_metadata\r\n\r\n                  cb(err, profile);\r\n                })\r\n                .catch(function(err) {\r\n                  console.log(err)\r\n                })\r\n            }\r\n          )\r\n\r\n          \r\n          cb(err, profile)\r\n\r\n          axios.get('https://formfunctionio.auth0.com/api/v2/users/' + profile.sub, {\r\n                headers: { \r\n                  authorization: 'Bearer ' + this.accessToken \r\n                }\r\n              })\r\n            .then(function(response) {\r\n              // console.log(response)\r\n\r\n              profile.app_metadata = response.data.app_metadata\r\n\r\n              cb(err, profile);\r\n            })\r\n            .catch(function(err) {\r\n              console.log(err)\r\n            })\r\n         \r\n        }\r\n        \r\n      })\r\n    }\r\n    } else {\r\n      history.replace('/signin');\r\n    } \r\n  }\r\n  */\r\n\r\n  logout(redirect) {\r\n    // Remove tokens and expiry time\r\n    this.accessToken = null;\r\n    this.idToken = null;\r\n    this.expiresAt = 0;\r\n\r\n    // Remove user profile\r\n    this.userProfile = null;\r\n\r\n    // var redirect = redirect\r\n\r\n    // Clear token renewal\r\n    clearTimeout(this.tokenRenewalTimeout)\r\n\r\n    // Remove isLoggedIn flag from localStorage\r\n    localStorage.clear()\r\n\r\n    if (redirect) {\r\n      this.auth0.logout({\r\n        returnTo: \"https://thetitlebox.com/checkout\"\r\n      })\r\n    } else {\r\n      this.auth0.logout({\r\n        // returnTo: \"https://thetitlebox.com/newfeatturesandcontent\"\r\n        returnTo: window.location.origin\r\n      })\r\n    }\r\n    \r\n    /*\r\n    if (redirect) {\r\n      // navigate to the home route\r\n      history.replace('//localhost')\r\n    } else {\r\n      history.replace('/')\r\n    }\r\n    */\r\n  }\r\n\r\n  isAuthenticated() {\r\n    // Check whether the current time is past the\r\n    // access token's expiry time\r\n    let expiresAt = this.expiresAt;\r\n    return new Date().getTime() < expiresAt;\r\n  }\r\n\r\n  scheduleRenewal() {\r\n    let expiresAt = this.expiresAt;\r\n    const timeout = expiresAt - Date.now();\r\n    if (timeout > 0) {\r\n      this.tokenRenewalTimeout = setTimeout(() => {\r\n        this.renewSession();\r\n      }, timeout);\r\n    }\r\n  }\r\n\r\n  getExpiryDate() {\r\n    return JSON.stringify(new Date(this.expiresAt));\r\n  }\r\n}\r\n","// import React from 'react';\n// import { render } from 'react-dom';\n// import { Provider } from 'react-redux';\n// import { Router } from 'react-router-dom'\n// import store from './store';\n// import App from './containers/app';\n// import HttpsRedirect from 'react-https-redirect';\n// import history from './history';\n// import './js/bootstrap.min.js';\n\nimport 'sanitize.css/sanitize.css';\nimport './index.css';\n\n\nimport 'react-app-polyfill/ie9';\nimport 'react-app-polyfill/ie11';\nimport \"core-js/stable\";\n\nimport ReactDOM from 'react-dom';\nimport { makeMainRoutes } from './routes';\n\nconst routes = makeMainRoutes();\n\nReactDOM.render(\n  routes,\n  document.getElementById('root')\n);\n\n"],"sourceRoot":""}