{"version":3,"sources":["images/ic_arrow_right_blue.svg","auth/UserPool.js","ui/util/FormatLabel.js","images/ic_pencil_blue.svg","ui/custom/Spinner.js","auth/Account.js","images/ic_add.svg","ui/analytic/component/PropertyDropdownUI.js","images/ic_alert.svg","images/ic_refresh_blue.svg","ui/analytic/component/TimeRangePickerUI.js","ui/analytic/component/TimeRangeDropdownUI.js","images/ic_refresh_greenbox.svg","ui/analytic/component/CustomMonthDropdownUI.js","ui/analytic/component/CustomYearDropdownUI.js","ui/analytic/component/PropertyCustomTimeUI.js","ui/analytic/component/PropertyTimeUI.js","ui/analytic/chart/OneGauge.js","ui/analytic/chart/OneGaugeValues.js","ui/analytic/component/SystemGauge.js","ui/analytic/component/SystemOverviewUI.js","ui/analytic/TimeSeriesModule.js","images/ic_status_green.svg","images/ic_property.svg","ui/analytic/chart/TimeSeriesZoom.js","ui/analytic/chart/Analytics.js","ui/analytic/component/AnalyticsModuleUI.js","ui/analytic/chart/TimeSeriesAMChart.js","ui/analytic/component/TimeSeriesAMChartsUI.js","config.js","styles/colors.js","images/ic_arrow_right_white.svg","images/ic_arrow_down_white.svg","api/Endpoints.js","images/LOGO_ALT.svg","images/ic_check_circle.svg","images/bg_bluePipes.png","images/eye.svg","ui/util/VaildatorStrings.js","ui/custom/ValidatorStyles.js","ui/form/ResetPasswordForm.js","images/eye_blue.svg","ui/form/ResetPasswordCodeForm.js","ui/form/RecoveryCodeForm.js","ui/layout/ResetPassword.js","ui/util/StringUtil.js","images/ic_arrow_right.svg","ui/form/CreateAccountForm.js","ui/layout/CreateAccount.js","images/IsoRender_menu.png","images/ic_arrow_right_green.svg","images/ic_close.svg","ui/popup/LogoutPopup.js","ui/navbar/SideNav.js","images/ic_help.svg","images/ic_dashboard.svg","images/ic_dashboard_active.png","images/ic_dashboard_white.svg","images/ic_account.svg","images/ic_account_active.svg","images/ic_account_white.svg","images/ic_logout.svg","images/ic_logout_active.svg","images/ic_logout_white.svg","images/ic_wingnuts.svg","images/ic_wingnuts_active.svg","images/ic_wingnuts_white.svg","images/ic_property_active.svg","images/ic_property_white.svg","images/ic_notification.svg","images/ic_notification_active.svg","images/ic_notification_white.svg","ui/navbar/NavBar.js","images/ic_help_green.svg","images/ic_arrow_back.svg","ui/popup/RemoveWingnutPopup.js","ui/popup/RemoveWingnutSuccessPopup.js","ui/popup/LeaveChangesSavedPopup.js","ui/popup/LeavePagePopup.js","ui/popup/SaveConfigPopup.js","ui/popup/SaveOrAbandonPopup.js","ui/popup/SaveConfigErrorPopup.js","ui/popup/DiscardConfigPopup.js","ui/popup/DeletePropertyPopup.js","ui/popup/DeletePropertyPopupSuccess.js","ui/popup/UnlinkPropertyPopup.js","ui/popup/UnlinkPropertySuccessPopup.js","ui/popup/PopupContainer.js","images/ic_error.svg","images/ic_verified.svg","images/ic_viewer.svg","styles/fonts.js","ui/users/new_user_modal/InviteNewUser.js","ui/users/new_user_modal/InviteSentSuccess.js","ui/users/new_user_modal/ChangePlan.js","ui/users/new_user_modal/InviteUserRouter.js","ui/navbar/Header.js","images/ic_success.svg","ui/form/AccountDetailsForm.js","ui/form/ChangeEmailForm.js","ui/form/ChangePassword.js","ui/layout/EditAccount.js","ui/notification/NotificationDefaults.js","ui/notification/NotificationSaveDiscard.js","ui/layout/Account.js","images/ic_search.svg","images/ic_status_red.svg","images/ic_status_purple.svg","images/ic_status_yellow.svg","ui/wingnuts/WingnutStatus.enum.js","images/ic_eye_off.svg","ui/wingnuts/WingnutStatusCard.js","ui/wingnuts/WingnutController.js","ui/wingnuts/WingnutTable.js","images/ic_status_green_dull.svg","images/ic_status_red_dull.svg","images/ic_status_purple_dull.svg","images/ic_status_yellow_dull.svg","images/ic_arrows_sort.svg","ui/wingnuts/ScreenSize.enum.js","ui/wingnuts/WingnutTableStructure.js","ui/wingnuts/WingnutOverview.js","ui/wingnuts/StatusDetailsDisconnected.js","ui/wingnuts/StatusDetailsUnconfigured.js","ui/wingnuts/StatusDetailsUnlinked.js","ui/wingnuts/StatusDetailsLive.js","images/ic_settings.svg","ui/wingnuts/WingnutConfigTabHeaderItem.js","ui/wingnuts/WingnutConfigTabHeader.js","images/ic_settings_blue.svg","ui/wingnuts/WingnutConfigSensorSelect.js","ui/wingnuts/WingnutSensorConfigFormCell.js","ui/wingnuts/WingnutConfiguration.js","ui/wingnuts/WingnutDetails.js","ui/form/AddWingnutForm.js","ui/form/HelpForm.js","ui/wingnuts/AddWingnut.js","images/ic_link.svg","images/ic_link_off.svg","ui/wingnuts/WingnutDetailsCard.js","ui/wingnuts/PropertyDetailsCard.js","ui/properties/AddressSearch.js","ui/properties/AddProperty.js","ui/properties/AddPropertyConfirm.js","ui/properties/AddPropertySuccess.js","ui/properties/AddPropertyContainer.js","ui/wingnuts/LinkWingnutSelectProperty.js","ui/wingnuts/LinkWingnutHeader.js","ui/wingnuts/LinkWingnutToProperty.js","ui/popup/SkipConfigPopup.js","ui/wingnuts/AddWingnutSuccess.js","images/ic_portfolio.svg","images/ic_cities.svg","ui/properties/PropertyStatusCard.js","ui/properties/PropertyController.js","ui/properties/PropertyTable.js","images/ic_alert_blue_light.svg","images/ic_notification_blue.svg","ui/notification/ToggleTriState.js","ui/properties/PropertyTableStructure.js","ui/properties/PropertyOverview.js","images/ic_arrow_right_green_fill.svg","ui/properties/EditPropertyDetails.js","ui/notification/NotificationEmployeeSelect.js","ui/notification/SensorCellAlertError.js","ui/notification/SensorCell.js","ui/notification/NotificationConfiguration.js","ui/notification/NotificationNoConfiguration.js","images/ic_phone.svg","images/ic_email.svg","images/ic_phone_blue.svg","images/ic_email_blue.svg","ui/notification/EmployeeCell.js","ui/notification/NotificationEmployee.js","ui/notification/NotificationDetails.js","images/ic_refresh.svg","ui/properties/AlertCard.js","ui/properties/Alerts.js","ui/notification/NotificationThresholds.js","ui/properties/PropertyDetail.js","ui/wingnuts/LinkPropertySelectWingnut.js","ui/wingnuts/LinkPropertyHeader.js","ui/wingnuts/LinkPropertyToWingnut.js","ui/analytic/component/WingnutDetailsUI.js","ui/analytic/WingnutDetailsModule.js","ui/analytic/PropertyTimeData.js","ui/analytic/SystemOverview.js","ui/analytic/component/CustomTimeZoneDropdownUI.js","ui/analytic/component/CustomTimeUI.js","ui/analytic/CustomTimeModule.js","ui/analytic/PropertyHeader.js","ui/layout/Dashboard.js","ui/analytic/component/GetTimeZone.js","images/Ellipse_crop.svg","images/wingnut-UI-mockup.png","ui/home/LandingPage.js","images/ic_SaveMoney.svg","images/ic_PreventFailures.svg","images/ic_OptimizeSystems.svg","ui/home/Features.js","images/Tech.svg","images/IsoRender.svg","images/ic_arrowRight.svg","images/Ellipse_hardware.png","images/IsoRender_medium.svg","images/IsoRender_small.svg","ui/home/Hardware.js","images/DataPoints_scroll.png","images/DataPoints_scroll2.png","images/DataPoints_scroll3.png","ui/home/MarqueeSlider.js","ui/home/Sliders.js","images/ic_tool.svg","images/ic_shield.svg","images/ic_bulb.svg","images/ic_lock.svg","images/ic_dot_red.svg","images/ic_dot_yellow.svg","images/ic_dot_purple.svg","images/ic_dot_green.svg","images/Wingnut_interface.svg","ui/home/Details.js","images/Devices.svg","images/ic_dot_grey.svg","ui/home/TechSpecs.js","images/Tech_horizontal.svg","ui/home/ContactUs.js","ui/home/ContactForm.js","images/Logo_symbol.svg","images/ic_arrowUp.svg","ui/home/Footer.js","images/ic_close_green.svg","ui/form/LoginForm.js","ui/layout/LoginModal.js","ui/home/HomeLayout.js","ui/layout/Help.js","images/ic_back.svg","ui/form/PrivacyPolicy.js","ui/form/TermsOfService.js","ui/layout/LoginStatic.js","auth/ProtectedRoute.js","ui/notification/NotificationController.js","ui/notification/NotificationTable.js","ui/notification/NotificationTableStructure.js","ui/notification/NotificationOverview.js","ui/users/UsersController.js","ui/users/UsersTable.js","ui/users/edit_user_modal/ChangeUser.js","ui/users/edit_user_modal/ChangeUserSuccess.js","ui/users/edit_user_modal/DeleteUser.js","ui/users/edit_user_modal/ChangeUserRouter.js","ui/users/UsersTableStructure.js","ui/users/UsersOverview.js","AppRouter.js","App.js","api/Auth.js","index.js","images/ic_launch_green.svg","ui/util/CleanUUID.js"],"names":["CognitoUserPool","UserPoolId","process","ClientId","FormatLabel","string","formattedString","replace","charAt","toUpperCase","slice","SpinnerContainer","styled","div","_templateObject","_taggedTemplateLiteral","StyledSpinner","Spinner","_templateObject2","COLORS","White","StyledRelativeSpinner","_templateObject3","ButtonSpinner","_templateObject4","DarkButtonSpinner","_templateObject5","AccountContext","createContext","Account","props","history","useHistory","location","useLocation","useEffect","async","Auth","currentSession","loginAuth","push","logoutAuth","error","checkSession","_jsx","Provider","value","authenticate","username","password","setRemember","signIn","then","user","challengeName","catch","err","console","getSession","Promise","resolve","reject","Pool","getCurrentUser","session","attributes","getUserAttributes","results","attribute","Name","Value","logout","signOut","localStorage","clear","authenticateChangeEmail","Username","Password","CognitoUser","authDetails","AuthenticationDetails","authenticateUser","onSuccess","data","onFailure","newPasswordRequired","children","fuzzyOptions","threshold","keys","PropertyDropdownUI","isSelected","setIsSelected","useState","customUUID","setCustomUUID","isHovering","setIsHovering","selectedProperty","setSelectedProperty","searchOptions","setSearchOptions","fuseSearch","Fuse","searchValue","setSearchValue","useContext","isAuth","setIsAuth","_ref","mapRawData","Object","params","length","id","String","item","find","key","undefined","loadProperty","map","label","concat","externalId","config","name","filterOptions","filter","search","s","getIndex","docs","Container","WingnutDetails","onMouseEnter","e","onMouseLeave","StyledSelect","dropdownGap","keepOpen","clearable","propertyDetails","placeholder","onChange","checkIfUUID","options","values","inputRenderer","_ref2","state","methods","inputRef","Input","autoComplete","event","enterSearchValue","target","hidden","ref","style","cursor","color","fontSize","fontWeight","searchable","border","borderRadius","paddingLeft","fontFamily","media","lessThan","between","greaterThan","Select","_templateObject6","Secondary","_templateObject7","_templateObject8","_templateObject9","HighlightMedium","input","_templateObject10","TimeRangePickerUI","ExampleCustomInput","forwardRef","onClick","_jsxs","CustomDateButton","padding","className","ButtonText","Icon","src","IconPencil","loadDate","date","dateToCheck","today","Date","getFullYear","getMonth","getDate","checkIfDateIsToday","lockTo24H","freshDate","loadCustomDate","getTime","loadZero24HourDate","DatePicker","wrapperClassName","selected","endTime","timeInputLabel","maxDate","disabled","placeholderText","withPortal","disabledKeyboardNavigation","timeFormat","timeIntervals","dateFormat","scrollableMonthYearDropdown","customInput","button","p","img","TimeRangeDropdownUI","selectedTimeRange","setSelectedTimeRange","isLoading","isLocked24H","onSelected","loadFirstRecord","incrementTime","loadTimeRange","TimeRangeDetails","contentRenderer","customContentRenderer","dropdownHeight","dropdownPosition","_templateObject11","CustomMonthDropdownUI","selectedYear","month","setData","setupOptions","firstMonth","firstYear","currentMonth","reverse","year","endIndex","findIndex","option","PropertyCustomTimeUI","selectedMonth","setSelectedMonth","setSelectedYear","dateSelected","setDateSelected","OuterContainer","DateContainer","Dropdown","DropdownTitle","CustomYearDropdownUI","BtnApply","display","background","Green","Primary","applyCustomDate","loadCustomMonth","ButtonText2","HighlightLight","_templateObject12","PropertyTimeUI","isRefresh","setIsRefresh","isRefreshAlertHovering","setIsRefreshAlertHovering","isLocalTime","setIsLocalTime","time","setTime","firstRecordDate","setFirstRecordDate","setFirstMonth","setFirstYear","setIsLoading","linkedWingnuts","jwt","getIdToken","getJwtToken","init","headers","Authorization","response","API","get","success","timestamp","padStart","intervalId","setInterval","clearInterval","formatTime","timezone","formattedTime","Intl","DateTimeFormat","hour","minute","hour12","timeZone","format","minuteAndPeriod","split","startsWith","substring","localTimeZoneFormatted","offset","hours","Math","floor","abs","formatTimeZone","getTimezoneOffset","localTime","resolvedOptions","targetTime","propertyTimeZone","TopContainer","HeaderContainer","HeaderTextContainer","marginRight","setUserTime","updateTimeZone","HeaderText","Subheader","setPropertyTime","height","UtilityContainer","MiniSpinnerContainer","animation","reloadProperty","setTimeout","IconRefresh","marginLeft","width","isCustomRange","alignSelf","marginTop","applyTimeRange","isTimeRange","applyNewTimeRange","isNewTime","GreyUnavailable","NoWingnutContainer","NoWingnutText","Link","to","textDecoration","BtnLinkWingnut","h2","h4","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","_templateObject19","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_templateObject33","_templateObject34","_templateObject35","_templateObject36","OneGauge","React","Component","constructor","super","updateData","roundedPercent","lastValue","this","Number","upperLimit","toFixed","series","chart","type","offsetY","sparkline","enabled","foreColor","states","normal","hover","active","allowMultipleDataPointsSelection","plotOptions","radialBar","startAngle","endAngle","hollow","size","colors","track","strokeWidth","margin","dataLabels","show","fill","grid","top","labels","componentWillReceiveProps","nextProps","setState","render","GaugeContainer","Chart","LabelContainer","HeaderText2","unit","OneGaugeValues","TextContainer","Title","min","NaN","InfoText","average","max","h3","SystemGauge","WidgetContainer","opacity","isDataLoading","SystemOverview","boilerPressureData","boilerTemperatureData","hotWaterTemperatureData","EmptyText","TimeSeriesModule","chart1Loaded","setChart1Loaded","chart2Loaded","setChart2Loaded","chart3Loaded","setChart3Loaded","stateChunk1","setStateChunk1","stateChunk2","setStateChunk2","stateChunk3","setStateChunk3","stateChunk4","setStateChunk4","chunk1","setChunk1","chunk2","setChunk2","chunk3","setChunk3","chunk4","setChunk4","stateData","setStateData","analyticData","setAnalyticData","isOpen","setIsOpen","log","refresh","multiDataLoad","loadAnalyticData","startTime","loadChartData","loadStateData","totalDuration","chunkDuration","chunk1Start","chunk1End","chunk2Start","chunk2End","chunk3Start","chunk3End","chunk4Start","chunk4End","finalChunk4End","stitchData","chunks","stitchedData","forEach","chunk","containsKeywords","array","keywords","some","element","keyword","includes","chart1","chart2","chart3","chartURL","stateURL","analyticURL","Card","LeftContainer","justifyContent","position","TimeSeriesAMChartsUI","chartLoaded","NoDataText","CardHeader","ColumnContainer","RowContainer","TextContainer2","Title2","InfoText2","HhmmText","Line","CycleHeader","Analytics","analytics","convertToTime","milliseconds","seconds","minutes","roundedSeconds","toString","cycle_count","min_cycle_on_time","average_cycle_on_time","max_cycle_on_time","total_cycle_on_time","average_cycle_time","min_cycle_off_time","average_cycle_off_time","max_cycle_off_time","total_cycle_off_time","AnalyticsModuleUI","index","groupIntervals","timeUnit","count","chartLineColors","am5","TimeSeriesAMChart","setChart1","root1","setRoot1","XAxis1","setXAxis1","YAxis1","setYAxis1","rightYAxis1","setRightYAxis1","state1","setState1","scrollbar","sbxAxis","sbyAxis","setChart2","root2","setRoot2","XAxis2","setXAxis2","YAxis2","setYAxis2","rightYAxis2","setRightYAxis2","state2","setState2","setChart3","root3","setRoot3","XAxis3","setXAxis3","YAxis3","setYAxis3","rightYAxis3","setRightYAxis3","state3","setState3","createChart","root","new","setThemes","am5themes_Animated","container","am5xy","panX","panY","maxTooltipDistanceBy","pinchZoomX","arrangeTooltips","title","unshift","text","textAlign","fontStyle","x","centerX","centerY","paddingTop","paddingBottom","axisTheme","rule","setAll","set","behavior","lineX","lineY","numberFormatter","orientation","startGrip","endGrip","fillOpacity","cornerRadiusTR","cornerRadiusBR","cornerRadiusTL","cornerRadiusBL","xAxes","groupData","groupCount","baseInterval","renderer","opposite","strokeOpacity","yAxes","xAxis","tooltip","yAxis","rightYAxis","template","adapters","add","html","valueYField","valueXField","minDistance","appear","on","syncAxes","chartsToSync","targetChart","targetAxis","_skipSync","start","end","each","axis","sourceChart","syncCursors","dispose","temperatureData","loadChart","currentPressureData","XAxis","YAxis","yLabel","zoomOut","oldDataSets","removeIndex","rotation","y","TileBlue","yAxis2","temperatureMin","temperatureMax","minMaxTemperature","findMinMax","Infinity","pressureMin","pressureMax","minMaxPressure","currentMin","currentMax","minMaxCurrent","dataItem","scrollbarSeries","i","chartLabels","bottomAxesContainer","getUnits","dataSeries","labelText","pointerOrientation","showTooltipOn","fills","visible","dataContext","newText","updatedData","transformData","legend","useDefaultMarker","valueLabels","lowestMin","POSITIVE_INFINITY","highestMax","NEGATIVE_INFINITY","ceil","setTemperatureData","setCurrentPressureData","chartStateData","setChartStateData","temperatureSets","currentPressureSets","dataSet","minMax","shift","sortedTemps","sortByLabel","sortedCurrentPressure","dataSets","sortedStats","arr","sort","a","b","propA","toLowerCase","propB","ErrorOrange","module","exports","global","PROD_MODE","Base","HighlightDark","Red","endpoints","endpoint","service","region","ValidatorStrings","ResetPasswordStrings","WingnutValidatorStrings","EmailValidatorStrings","PhoneValidatorStrings","HelpValidatorStrings","ServerStrings","ErrorContainer","Error","EmptyError","SuccessContainer","SuccessIcon","SuccessIcon2","Success","EmptySuccess","ResetPasswordForm","_errors$email","register","handleSubmit","reset","formState","errors","isSubmitSuccessful","useForm","reValidateMode","showSpinner","setShowSpinner","setDisabled","validatorError","setValidatorError","Form","onSubmit","email","forgotPassword","d","setEmail","goToStepNumber","noValidate","Label","required","maxLength","pattern","BtnInstructions","form","ResetPasswordCodeForm","_errors$newPassword","_errors$confirmPasswo","getValues","newPasswordShown","setNewPasswordShown","confirmPasswordShown","setConfirmPasswordShown","confirmPassword","code","newPassword","InputContainer","validate","emailEqual","EyeIcon","toggleNewPasswordVisiblity","Image2","ImageBlueEye","toggleConfirmPasswordVisiblity","Image","BtnConfirmPassword","RecoveryCodeForm","_errors$code","setCode","ResetPassword","arguments","step","val","Grid","Logo","EmptyIcon","CopyContainer","Blurb","marginBottom","FormContainer","BtnBack","BtnBackToLogin","h1","formatPhoneNumber","phoneNumber","removeNonNumbers","CheckboxContainer","LblCheckbox","Checkbox","Button","CheckboxError","IconArrow","Conditions","CreateAccountForm","_errors$firstName","_errors$lastName","_errors$phoneNumber","_errors$password","_errors$agreeToTerms","passwordShown","setPasswordShown","serverError","setServerError","checked","setChecked","formattedPhoneNumber","signUp","given_name","firstName","family_name","lastName","phone_number","company","companyId","updateSuccess","finally","readOnly","minLength","togglePasswordVisiblity","flexDirection","agreeToTerms","Image3","SubContainer","MiniBlurb","BtnHaveAccount","BtnLogin","CreateAccount","isSuccess","componentDidMount","getSearchParamsToken","uuid","URLSearchParams","withRouter","BtnClose","CloseIcon","WingnutIcon","ButtonContainer","ButtonTextNo","ButtonTextYes","LogoutPopup","isHoveringYes","setIsHoveringYes","closePopup","ImgClose","ImgAlert","setLogout","backgroundColor","SideNav","isCollapsed","setIsCollapsed","hoverDashboard","setHoverDashboard","hoverAccount","setHoverAccount","hoverWingnut","setHoverWingnut","hoverProperty","setHoverProperty","hoverNotification","setHoverNotification","hoverUsers","setHoverUsers","hoverLogout","setHoverLogout","isModalOpen","setIsModalOpen","isAdmin","setIsAdmin","selectDashboard","selectAccount","selectWingnut","selectProperty","selectNotification","selectUsers","selectLogout","pathname","selectLogin","getUUIDFromPath","window","innerWidth","Modal","onRequestClose","customStyles","contentLabel","SideNavContainer","ProSidebar","collapsed","Header","Menu","iconShape","MenuItem","toggleSidebar","icon","FAIcon","MenuItemContainer","Body","MenuText","Footer","Box","ImgWingut","ImgWingnut","LookingText","Image6","LinkContainer","Copyright","library","prefix","iconName","content","left","right","bottom","transform","overlay","zIndex","MenuItemContainer2","HelpContainer","HelpIcon","NavBar","expanded","setExpanded","Navbar","bg","variant","expand","Brand","MediaQuery","maxWidth","HelpImage","Toggle","boxShadow","Collapse","Nav","Image2_Selected","Image2_Hover","Image3_Selected","Image3_Hover","Image5_Selected","Image5_Hover","Image5","Image6_Selected","Image6_Hover","Image4_Selected","Image4_Hover","Image4","BtnNo","RemoveWingnutPopup","del","wingnutUUID","setSuccess","removeWingnut","RemoveWingnutSuccessPopup","closeAction","ImgCheckmark","ChangesSaved","goToNextTab","NoButtonText","LeavePagePopup","LeavePage","discardChanges","SaveConfigPopup","saveDisabled","saveAll","alertArray","setError","BtnDiscard","SaveOrAbandonPopup","discardAll","SaveConfigErrorPopup","DiscardChangesPopup","DeletePropertyPopup","propertyUUID","removeProperty","BottomContainer","DeletePropertySuccessPopup","UnlinkPropertyPopup","body","propertyId","post","UnlinkPropertySuccessPopup","PopupContainer","setIsSuccess","isError","setIsError","popupNumber","RemoveWingnutPopupSuccess","LeaveChangesSavedPopup","DiscardConfigPopup","H1","H2","H3","BodyLarge","BodySmall","FieldText","InviteNewUser","selectedRole","setSelectedRole","companyName","setCompanyName","handleChange","role","StyledBodySmall","Stack","StackRow","ImgVerified","ImgAccount","ImgViewer","invite","refreshTable","inviteSuccess","message","_templateObject37","_templateObject38","_templateObject39","_templateObject40","_templateObject41","_templateObject42","InviteSentSuccess","ImgCheck","ChangePlan","ImgError","InviteUserRouter","inviteFlow","setInviteFlow","firstLoad","setFirstLoad","getCompanySeats","seats","seatsUsed","changePlan","backToInvite","isHoveringBack","setIsHoveringBack","isInviteModalOpen","setIsInviteModalOpen","itemUUID","heading","modal","showBack","showButton","buttonText","buttonIcon","buttonDestination","buttonTransparent","pathUUID","cleanUUIDFromPath","getCompany","getWingnutId","getPropertyName","path","selection","pathURL","getDashboardDate","formattedDate","isNaN","dayOfWeek","toLocaleDateString","weekday","monthAndDay","day","daySuffix","dayOfMonth","monthAndYear","TitleContainer","goBack","ArrowIconRight","ImgArrowBack","BackText","HeaderContainer2","HeaderLine","HeaderDate","ModeText","minWidth","ButtonTransparent","ButtonTransparentText","SectionContainer","AccountDetailsForm","_errors$newFirstName","_errors$newLastName","_errors$newPhoneNumbe","timer","clearTimeout","newFirstName","newLastName","newPhoneNumber","currentAuthenticatedUser","updateUserAttributes","updateForm","formattedNumber","ErrorImage","ChangeEmailForm","_errors$newEmail","CognitoUserAttribute","newEmail","updateAttributes","ChangePassword","_errors$currentPasswo","currentPasswordShown","setCurrentPasswordShown","changePassword","currentPassword","result","toggleCurrentPasswordVisiblity","EditAccount","trimNumber","NotificationDefaults","thresholdStatus","minValue","maxValue","userMinValue","userMaxValue","NotificationSaveDiscard","didConfigChange","setDidConfigChange","setPopupNumber","wingnutDetails","setWingnutDetails","setSaveDisabled","errorArray","setErrorArray","activeChange","saveAllPopup","showSavePopup","discardAllPopup","showPopup","saveOrAbandonPopup","number","resetPopupState","didPushSaveData","willRefreshData","SaveConfigContainer","triggerDiscardAllPopup","SaveConfig","triggerSaveAllPopup","BtnText","isDisconnected","setIsDisconnected","isUnlinked","setIsUnlinked","isUnconfigured","setIsUnconfigured","isConfigOpen","setIsConfigOpen","isDesktopSize","useMediaQuery","query","ConfigHeaderContainer","ConfigContainer","toggleConfig","document","getElementById","scrollIntoView","ConfigRightContainer","ArrowIcon","ImgArrowDown","ImgArrowRightWhite","SaveConfigContainerMobile","SaveConfigMobile","BtnTextMobile","ButtonText2Mobile","WingnutStatus","Enum","Live","IconStatusLive","Disconnected","IconStatusDisconnected","Unlinked","IconStatusUnlinked","Unconfigured","IconStatusUnconfigured","StatusCard","StatusIcon","CardTextContainer","CardNumber","EyeButton","WingnutStatusCard","activeStatus","setActiveStatus","allOff","setAllOff","wingnutState","status","wingnutCount","toggleStatus","ImgEyeActive","ImgEye","ImgEyeOff","SearchContainer","SearchBarContainer","SearchContainerTop","SearchBar","SearchIcon","StatusContainer","StatusPair","StatusPairRight","ResultContainer","SearchText","ResultHeader","_templateObject43","_templateObject44","_templateObject45","ResultNumber","_templateObject46","_templateObject47","_templateObject48","_templateObject49","WingnutController","countStatus","total","tableData","live","disconnected","unlinked","unconfigured","onInputChange","ImgSearch","Table","columns","columnsToHide","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","useTable","initialState","hiddenColumns","useSortBy","headerGroup","getHeaderGroupProps","column","getHeaderProps","getSortByToggleProps","row","getRowProps","cells","cell","getCellProps","serial","original","propertyName","portfolio","address","ScreenSize","Large","Medium","Small","WingnutTableStructure","basicSort","useMemo","rowA","rowB","columnId","desc","addressSort","streetAddress","statusSort","aId","bId","tableColumns","HeaderDiv","Text","BtnIcon","SortIcon","IconSort","accessor","sortType","Cell","CellDiv","ContentDiv","IconLaunch","StaticText","EmptyCellDiv","visibility","city","provinceState","country","postalZip","CellStatusDiv","IconActive","IconActiveDull","IconDisconnected","IconDisconnectedDull","IconUnconfigured","IconUnconfiguredDull","IconUnlinked","IconUnlinkedDull","screenSize","Styles","WingnutTable","headerHeight","rowHeight","h5","WingnutOverview","showData","getWingnuts","componentWillUnmount","componentDidUpdate","prevProps","prevState","filterData","searchForWingnut","fuzzySearch","wingnutStatus","setWingnutStatus","latestPost","DateTime","utc","apiDateTime","fromFormat","diff","sensors","setupTable","mappedData","_item$property","_item$property2","_item$property3","_item$property4","parseInt","property","StatusDetailsDisconnected","ImgRed","StatusDetailsUnconfigured","ImgYellow","setConfigOpen","StatusDetailsUnlinked","ImgPurple","justifySelf","StatusDetailsLive","ImgGreen","TabContainer","WingnutConfigTabHeaderItem","setSelected","onHandleClick","inputText","sensorText","WingnutConfigTabHeader","thermistor","setInputTab","transducer","general","relay","onSelectedValue","clearInput","selectedValue","localAlert","HeaderNumber","IconContainer","AlertIcon","SubHeaderContainer","BodyContainer","ConfirmContainer","BtnConfirm","WingnutSensorConfigFormCell","schema","isCellHovering","setIsCellHovering","isButtonHovering","setIsButtonHovering","configuredSensor","setConfiguredSensor","clearAll","setClearAll","disableClear","setDisableClear","setLocalAlert","selectedType","setSelectedType","selectedLabel","setSelectedLabel","selectedNumber","setSelectedNumber","numberOptions","setNumberOptions","buildKey","keyData","leading","keyNumber","confirmSensorChange","sensor","removeAlert","updateSensor","alert","checkAlert","alertSignal","getSelectedType","types","getSelectedLabel","getSelectedNumber","fullList","usedNumbers","sl","indexOf","num","buildConfigurationTitle","_getSelectedLabel$","_getSelectedNumber$","_getSelectedType$","ImgArrowRight","CustomSelect","addAlert","unsavedChanges","loadSelectedType","loadSelectedNumber","loadSelectedLabel","WingnutConfiguration","schemaConfig","setUnsavedChanges","nextTab","setNextTab","tabSwitch","tab","trackCurrentTab","setUnsavedChangesStatus","saved","configChange","setupIsTabOpen","currentTab","isTabOpen","setTab","totalConfigurations","thermistorInputs","transducerInputs","generalPurposeInputs","Wingnut","match","setIsTabOpen","setSchemaConfig","setRefresh","setAlertArray","setAlertSignal","childKey","setChildKey","setCurrentTab","isJustDesktopSize","myRef","useRef","handleClickOutside","current","contains","addEventListener","removeEventListener","runSensorValidator","setConfigured","prev","cancelled","typeList","labelList","relaySenseInputs","finalResult","currentLoopInputs","words","numbers","parsedWords","gpioInputs","getSchema","openConfig","getWingnutDetails","DetailsContainer","createdAt","WingnutDetailsRight","ImgProperty","ConfigParent","pointerEvents","SaveConfigMobileContainer","SaveConfig2","bool","change","addId","prevAlertArray","removeId","Set","uniqueArray","Array","from","localArray","splice","checkId","_templateObject50","_templateObject51","_templateObject52","_templateObject53","_templateObject54","_templateObject55","_templateObject56","_templateObject57","_templateObject58","_templateObject59","_templateObject60","_templateObject61","_templateObject62","_templateObject63","_templateObject64","_templateObject65","_templateObject66","_templateObject67","_templateObject68","_templateObject69","_templateObject70","_templateObject71","_templateObject72","_templateObject73","AddWingnutForm","_errors$uuid","setValue","wingnutId","test","preventDefault","shouldDelete","substr","nativeEvent","onUUIDChange","prototype","idx","rem","str","Textarea","textarea","HelpForm","_errors$message","fetch","method","mode","Accept","JSON","stringify","fullname","DateText","AddWingnut","WingnutIcon2","LinkWingnutDetails","onLeftSide","hasProperty","PropertyDetailsCard","google","AddressSearch","selectAddress","defaultValue","setAddress","PlacesAutocomplete","onSelect","placeId","suggestion","formattedSuggestion","mainText","place","geocodeByPlaceId","streetNumber","address_components","c","street","province","postalCode","newAddress","long_name","short_name","trim","getInputProps","suggestions","getSuggestionItemProps","loading","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","borderLeft","borderRight","borderBottom","description","Input2","Input3","AddProperty","_errors$propertyName","_errors$externalId","_errors$portfolio","_errors$street","_errors$city","_errors$country","_errors$provinceState","_errors$postalZipCode","propertyData","trigger","clearErrors","isValid","defaultValues","validateExternalId","token","linkView","externalIdError","loadFormData","postalZipCode","BtnEdit","AddPropertyConfirm","isEditHovering","setIsEditHovering","confirm","backToEdit","BlurbText","BtnProperty","AddWingnutSuccess","AddPropertyContainer","showConfirm","setShowConfirm","showSuccess","setShowSuccess","setPropertyUUID","setPropertyData","AddPropertySuccess","payload","assests","done","LinkWingnutSelectProperty","BtnAddProperty","AddIcon","ImgAdd","toggleAddProperty","pressLinkProperty","linkProperty","LinkWingnutHeader","LinkWingnutToProperty","properties","setProperties","getProperties","hasProp","hasOwnProperty","EmptyContainer","WingnutDetailsCard","Connected","NotConnected","addProperty","UnlinkProperty","BtnConfigure","SkipConfigPopup","PropertyStatusCard","PropertyOverview","ImgPortfolio","countPortfolio","portfolios","port","ImgCities","countCities","cities","hasWingnuts","countPropertyStatus","notificationId","entityStatus","alarmState","ToggleTriState","toggle","setToggle","disable","updateToggle","ToggleContainer","ToggleWrapper","Switch","SwitchRadio","SwitchDiv","SwitchSelection","span","PropertyTableStructure","portfolioSort","linkedWingnutsSort","alarmStateSort","notificationEnableSort","propertyIdDisplay","WingnutDiv","LinkedWingnut","IconWingnut","HiddenText","HeaderAlertIcon","IconAlertBlue","CellAlertDiv","IconAlert","HeaderNotificationIcon","IconNotification","CellToggleChildDiv","newConfig","PropertyTable","notificationData","areTogglesLoading","didMerge","getNotificationToggles","mergeData","notifications","toggleProperties","notification","newProperty","searchForProperty","alarms","mappedNotifications","translateToggle","PropertyController","InputDisabled","ButtonCancel","EditPropertyDetails","_errors$name","_errors$city2","editOpen","updatePropertyDetails","assets","editProperty","propertyIdValidation","protfolio","NotificationEmployeeSelect","setInput","viewEmployeeIds","viewEmployees","addEmployee","IconAlertSm","SensorCellAlertError","alertValue","SensorCell","minError","setMinError","maxError","setMaxError","minRangeError","setMinRangeError","maxRangeError","setMaxRangeError","setUserMinValue","setUserMaxValue","userToggle","setUserToggle","setButtonHovering","inAlert","breachCount","showLabel","configChanged","SectionHeader","SearchTitle","NotificationConfiguration","sensorDefaults","setSensorDefaults","alertLabels","setAlertLabels","saveConfiguration","newThresholds","recipients","thresholds","notificationDetails","willRefreshAlerts","updateCurrentThresholds","minOrMax","errorName","isActiveChange","localToggles","updatedSensorDefaults","alerts","sensorDefault","breaches","NotificationNoConfiguration","isLinked","InstructionText","WingnutContainer","BtnWingnut","BtnText2","BtnLink","EmployeeCell","employee","setEmployee","EmployeeContainer","EmployeeTextContainer","NameText","InfoTextContainerMobile","InfoTextContainer","togglePhoneNotification","setPhone","notifyByPhone","ImgPhone","ImgPhoneDark","toggleEmailNotification","notifyByEmail","ImgEmail","ImgEmailDark","removeEmployee","NotificationEmployee","employees","setEmployees","setViewEmployees","setRecipients","setNotificationDetails","selectDisabled","setSelectDisabled","mappedEmployees","showEmployee","pop","phone","notifyBySlack","getNotifications","getAllEmployees","filteredEmployees","recipient","localViewEmployees","updateConfiguration","removeEmployeeFromView","localEmployees","updatedEmployees","filteredViewEmployees","setEmailNotification","setPhoneNotification","newRecipients","emailRecipient","phoneRecipient","updateRecipients","TitleText","NotificationDetails","masterToggle","setMasterToggle","isConfigured","setIsConfigured","setIsLinked","setPropertyId","wingnut","_createElement","refreshKey","NoConfiguration","AlertCard","rounded","TempText","formatUnit","BtnOpen","toggleNotificationDetails","Alerts","isFirstLoad","setIsFirstLoad","interval","updateBreaches","filterAlerts","getAlertDetails","currentThresholds","filteredAlerts","alertKey","newAlerts","updateAlerts","currentTime","toLocaleTimeString","UpdateText","IconRefreshBlue","AlertContainer","NotificationThresholds","isEditNotificationHovering","setIsEditNotificationHovering","setThresholds","activeThresholds","setActiveThresholds","setActiveChange","setRefreshKey","setSaveAll","setSaveAllPopup","setDiscardAllPopup","setSaveOrAbandonPopup","fetchedSensorDefaults","sensorIndex","notificationDefault","thresholdKeys","thresholdKey","newState","obj","EditDetailsContainer","shouldToggleMenu","isEditNotificationOpen","RightContainer","PropertyDetail","setPropertyDetails","setAlerts","setBreaches","setCurrentThresholds","setNotificationId","isEditOpen","setIsEditOpen","setIsEditNotificationOpen","formSubmitted","setFormSubmitted","isPropertyHovering","setIsPropertyHovering","isLinkedWingnutHovering","setIsLinkedWingnutHovering","isRemoveButtonHovering","setIsRemoveButtonHovering","refreshAlerts","setRefreshAlerts","getPropertyDetails","open","getNotificationDetails","DetailsInfo","IconProperty","DetailCell","DetailTextCell","BtnEditProperty","openEditPropertyDetails","BtnWingnutContainer","WingnutTag","styles","WingnutLabel","BtnRemoveProperty","ButtonPropertyText","_templateObject74","_templateObject75","_templateObject76","_templateObject77","_templateObject78","_templateObject79","_templateObject80","_templateObject81","_templateObject82","_templateObject83","_templateObject84","_templateObject85","_templateObject86","_templateObject87","_templateObject88","_templateObject89","_templateObject90","_templateObject91","_templateObject92","_templateObject93","_templateObject94","_templateObject95","_templateObject96","_templateObject97","_templateObject98","_templateObject99","_templateObject100","_templateObject101","_templateObject102","_templateObject103","_templateObject104","_templateObject105","LinkPropertySelectWingnut","selectedWingnut","setSelectedWingnut","enableLinkButton","linkWingnut","PropertyIcon","LinkPropertyHeader","wingnuts","setWingnuts","WingnutDetailsUI","formatDate","dateWithoutMicroseconds","toISOString","toLocaleString","wingnutModel","wingnutSoftwareVersion","wingnutHardwareVersion","lastBoot","WingnutDetailsModule","toggleChart","PropertyTimeData","setBoilerPressureData","setBoilerTemperatureData","setHotWaterTemperatureData","isLoadingPressure","setIsLoadingPressure","isLoadingTemperature","setIsLoadingTemperature","isLoadingHotWater","setIsLoadingHotWater","loadPressure","loadTemperature","loadHotWater","SystemOverviewUI","PropertyHeader","isGoToPropertyHovering","setIsGoToPropertyHovering","Dashboard","sensorLabels","setSensorLabels","setTimeZone","setOffset","setIncrementTime","setStartTime","setEndTime","setIsLocked24H","isCustomDate","setIsCustomDate","setIsTimeRange","setIsNewTime","setIsCustomRange","isDefaultLoad","setIsDefaultLoad","setName","setExternalId","updateSelectedTab","tabIndex","newTimeZone","freshEndTime","freshStartTime","localOffset","offsetDifference","getTimeZoneOffset","moment","tz","utcOffset","discoverTimeZone","entries","geocodeByAddress","lat","lng","geometry","timezoneData","now","apiUrl","json","timezoneLabel","timeZoneId","offsetHours","rawOffset","dstOffset","offsetSign","offsetAbs","GetTimezoneFromLatLng","toggleModule","TestContainer","newEndTimeInSeconds","startUTCMilliseconds","UTC","startOfNextMonth","endUTCMilliseconds","BtnTab","BottomLeftInvertedRadius","BottomRightInvertedRadius","group","boilerLabels","LeftInfoContainer","BtnContainer","Ellipse","RightInfoContainer","LandingImg","LandingPage","Aos","openModal","CardMiddle","Features","Icon1","Icon2","Icon3","TechImg","SpecSheetContainer","BtnSpecSheet","ImgContainer","HardwareImg2","Hardware","activeClass","spy","smooth","duration","SliderImage","MarqueeSlider","Photos","Photos2","Photos3","Marquee","velocity","direction","TickerContainer","Sliders","move","resizeEvent","Event","dispatchEvent","bind","DetailRow","SingleDetailContainer","BulletPointContainer","IconBullet","BulletText","Details","IconBullet1","IconBullet2","IconBullet3","Icon4","IconBullet4","ImgWingnutInterface","Line2","SpecsContainer","SpecsColumn","TechSpecs","ContactUs","ContactCard","ContactForm","LogoSymbol","LoginForm","BtnForgotPassword","LoginModal","closeModal","GridContainer","setAppElement","HomeLayout","afterOpenModal","onAfterOpen","Help","PrivacyPolicy","componentWillMount","Interweave","TermsOfService","LoginStatic","ProtectedRoute","auth","component","rest","Route","Redirect","NotificationMenu","NotificationTableStructure","EditIcon","updateTableCell","NotificationTable","NotificationOverview","searchForNotification","NotificationController","setSeats","SeatsUsedContainer","isLoggedInEmail","setIsLoggedInEmail","isLoggedIn","ChangeUserPopup","_props$userDetails","_props$userDetails4","_props$userDetails5","_props$userDetails6","_props$userDetails7","isHoveringDelete","setIsHoveringDelete","userDetails","StackColumn","gap","_props$userDetails2","_props$userDetails3","updateUser","userId","new_role","toChangeSuccess","DangerButton","toDeleteUser","DeleteUser","url","backToChange","ChangeUserRouter","popup","ChangeUser","ChangeUserSuccess","UsersTableStructure","isChangeModalOpen","setIsChangeModalOpen","isDeleteModalOpen","setIsDeleteModalOpen","setUserDetails","loggedInUserEmail","setLoggedInUserEmail","closeChangePopup","closeDeletePopup","TypeIcon","UserIcon","IconUser","AdminIcon","IconVerified","EditUser","openDeletePopup","details","openChangePopup","UsersTable","UsersOverview","getUsers","closeInvitePopup","isInviteOpen","openInvitePopup","loggedInEmail","context","searchForUser","endsWith","_this$state$data","UsersController","contextType","PageContainer","RightPanel","ContentPanel","NavBarContainer","AppRouter","AccountSettings","exact","WingnutDetail","PropertyLink","Notification","Amplify","configure","identityPoolId","userPoolId","userPoolWebClientId","ApiEndpoints","App","Router","Reset","ReactDOM","join"],"mappings":"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","file":"static/js/main.0207c924.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/ic_arrow_right_blue.f1f0f27f.svg\";","import { CognitoUserPool } from \"amazon-cognito-identity-js\"\n\n\n//---------PROD\n// General Settings and App Client Settings\nconst poolData = {\n UserPoolId: process.env.REACT_APP_COGNITO_USER_POOL_ID,\n ClientId: process.env.REACT_APP_COGNITO_CLIENT_ID\n}\n\nexport default new CognitoUserPool(poolData)\n","\n\n export const FormatLabel = (string) => {\n // add space before capitals\n var formattedString = string.replace(/([a-z])([A-Z])/g, '$1 $2');\n\n // capitalize first word\n var capitalFormattedString = formattedString.charAt(0).toUpperCase() + formattedString.slice(1);\n\n // add space before numbers\n return capitalFormattedString.replace(/.{1}$/,' $&');\n }","export default __webpack_public_path__ + \"static/media/ic_pencil_blue.ff4ab2eb.svg\";","import { Spinner } from \"react-bootstrap\"\nimport styled from \"styled-components\"\nimport { COLORS } from \"../../styles/colors\"\n\nexport const SpinnerContainer = styled.div`\n/* border: 1px dashed blue; */\n display: flex;\n justify-content: center;\n margin-top: 2px;\n\n`\n\nexport const StyledSpinner = styled(Spinner)`\n position: fixed;\n color: ${COLORS.White};\n`\n\nexport const StyledRelativeSpinner = styled(Spinner)`\n position: relative;\n color: ${COLORS.White};\n`\n\n// Inside Button\nexport const ButtonSpinner = styled(Spinner)`\n /* position: fixed; */\n color: ${COLORS.White};\n width: 12px;\n height: 12px;\n margin-left: 10px;\n`\n\n// Inside Button\nexport const DarkButtonSpinner = styled(Spinner)`\n /* position: fixed; */\n color: black;\n width: 12px;\n height: 12px;\n margin-left: 10px;\n`","import React, { createContext, useEffect } from \"react\"\nimport { CognitoUser, AuthenticationDetails } from \"amazon-cognito-identity-js\"\nimport Pool from \"./UserPool\"\nimport { useHistory, useLocation } from \"react-router-dom\"\nimport { Auth } from \"aws-amplify\"\n\nconst AccountContext = createContext()\n\nconst Account = (props) => {\n const history = useHistory()\n const location = useLocation()\n\n const getSession = async () => {\n return await new Promise((resolve, reject) => {\n const user = Pool.getCurrentUser()\n if (user) {\n user.getSession(async (err, session) => {\n if (err) {\n reject()\n } else {\n const attributes = await new Promise((resolve, reject) => {\n user.getUserAttributes((err, attributes) => {\n if (err) {\n reject(err)\n } else {\n const results = {}\n\n for (let attribute of attributes) {\n const { Name, Value } = attribute\n \n // parse this custom json field\n if(Name === \"custom:company\"){\n results[\"company\"] = Value\n }\n \n if(Name === \"custom:role\"){\n if (Value === \"admin\"){\n results[\"isAuth\"] = true\n results[\"isAdmin\"] = true\n } else if (Value === \"write\"){\n results[\"isAuth\"] = true\n results[\"isAdmin\"] = false\n } else {\n results[\"isAuth\"] = false\n results[\"isAdmin\"] = false\n }\n }\n\n results[Name] = Value\n }\n resolve(results)\n }\n })\n })\n resolve({ user, ...session, ...attributes })\n }\n })\n } else {\n reject()\n }\n })\n }\n\n const authenticate = async (username, password, setRemember) => {\n return Auth.signIn(username, password)\n .then((user) => {\n if (user.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n props.logoutAuth()\n return user\n }\n props.loginAuth()\n return user\n })\n .catch((err) => {\n console.error(\"onFailure \", err)\n props.logoutAuth()\n throw err\n })\n }\n\n const authenticateChangeEmail = async (Username, Password) => {\n return await new Promise((resolve, reject) => {\n const user = new CognitoUser({ Username, Pool })\n\n const authDetails = new AuthenticationDetails({\n Username,\n Password,\n })\n\n user.authenticateUser(authDetails, {\n onSuccess: (data) => {\n resolve(data)\n },\n onFailure: (err) => {\n console.error(\"onFailure \", err)\n reject(err)\n },\n newPasswordRequired: (data) => {\n resolve(data)\n },\n })\n })\n }\n\n useEffect(() => {\n const checkSession = async () => {\n try {\n const session = await Auth.currentSession();\n if(session){\n props.loginAuth()\n history.push(location)\n } else {\n props.logoutAuth()\n }\n } catch (error) {\n props.logoutAuth()\n }\n };\n\n checkSession()\n }, []);\n\n const logout = () => {\n const user = Pool.getCurrentUser()\n if (user) {\n props.logoutAuth()\n user.signOut()\n localStorage.clear();\n history.push(\"/\")\n }\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nexport { Account, AccountContext }\n","export default __webpack_public_path__ + \"static/media/ic_add.5a8fc1e0.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgProperty from \"./../../../images/ic_property.svg\"\nimport ImgAdd from \"./../../../images/ic_add.svg\"\nimport Select from \"react-dropdown-select\"\nimport Fuse from \"fuse.js\"\nimport { DarkButtonSpinner } from \"../../custom/Spinner\"\nimport { COLORS } from \"../../../styles/colors\"\nimport { useHistory } from 'react-router-dom'\nimport { checkIfUUID } from \"./../../util/CleanUUID\"\n\nconst fuzzyOptions = {\n threshold: 0.1,\n keys: [\"config.name\", \"externalId\"],\n}\n\nexport default function PropertyDropdownUI(props) {\n\n const { data } = props\n const history = useHistory();\n\n const [isSelected, setIsSelected] = useState(false)\n const [customUUID, setCustomUUID] = useState({})\n const [isHovering, setIsHovering] = useState(false)\n const [selectedProperty, setSelectedProperty] = useState(null)\n const [searchOptions, setSearchOptions] = useState([])\n const fuseSearch = new Fuse(data, fuzzyOptions)\n const [searchValue, setSearchValue] = useState(\"\")\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n}, [])\n\n useEffect(() => {\n setSearchOptions(mapRawData(data))\n }, [data])\n\n useEffect(() => {\n if(Object.keys(props.params).length !== 0){\n setCustomUUID(props.params)\n }\n }, [props.params])\n\n useEffect(() => {\n if(Object.keys(customUUID).length !== 0 && searchOptions.length !== 0){\n\n const id = String(customUUID.id)\n const item = searchOptions.find(item => { \n if(item.key === id){\n return true\n }\n })\n\n if(item !== undefined){\n setSelectedProperty(item)\n props.loadProperty(item)\n setIsSelected(true)\n }\n\n }\n\n }, [searchOptions])\n\n const mapRawData = (data) => {\n const options = data.map((item) => ({\n key: item.id,\n label: `${item.externalId} - ${item.config.name}`,\n value: item.id,\n }))\n return options\n }\n\n const filterOptions = (filter) => {\n if (filter) {\n setSearchOptions(mapRawData(fuseSearch.search(filter).map((s) => s.item)))\n } else {\n setSearchOptions(mapRawData(fuseSearch.getIndex().docs))\n }\n }\n\n const enterSearchValue = (value) => {\n setSearchValue(value)\n filterOptions(value)\n }\n\n const onSelected = (item) => {\n if (item[0]) {\n setSelectedProperty(item[0])\n props.loadProperty(item[0])\n setIsSelected(true)\n if(Object.keys(customUUID).length !== 0){\n\n // only if a property UUID is present, not if it's a custom timestamp\n if(checkIfUUID(customUUID.id) === true){\n history.push(`/portal/dashboard/0`) \n } \n }\n setCustomUUID({})\n\n // setSearchOptions(mapRawData(fuseSearch.getIndex().docs)) // What was this doing?\n } else {\n setSelectedProperty(null)\n props.loadProperty(null)\n setIsSelected(false)\n setSearchValue(\"\")\n filterOptions(\"\")\n }\n }\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}>\n onSelected(value)}\n options={searchOptions}\n values={selectedProperty ? [selectedProperty] : []}\n inputRenderer={\n ({ props, state, methods, inputRef }) => ( \n enterSearchValue(event.target.value)}\n hidden={selectedProperty ? true: false} \n placeholder=\"Select or search for a property\" \n ref={inputRef} \n style={{ cursor: 'pointer', color: COLORS.White, fontSize: \"18px\", fontWeight: \"300\"}} \n /> \n )\n }\n searchable={true}\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n fontWeight: \"300\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"18px\"\n }}\n />\n
\n
\n
\n )\n\n}\n\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n`\n\n// default color\n\nconst WingnutDetails = styled.div`\n /* border: 1px dashed red; */\n border-radius: 10px;\n /* box-sizing: border-box; */\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n width: 300px;\n ${media.lessThan(\"743px\")`\n max-width: 300px;\n min-width: 270px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* height: 350px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n width: 384px;\n margin-bottom: 10px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 100%; */\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear {\n /* border: 1px red dashed; */\n height: 28px;\n :hover {\n color: ${COLORS.White};\n }\n }\n .react-dropdown-select-dropdown-handle {\n /* border: 1px red dashed; */\n color: ${COLORS.White};\n height: 20px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n /* height: 60px; */\n font-size: 16px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: red;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n`\n\nconst Input = styled.input`\nbackground: transparent;\nborder: none;\noutline: none;\nwidth: 100%;\n/* width: 384px; */\n/* height: 100%; */\ncolor: ${COLORS.White};\n/* font-family: \"Roboto Condensed\", sans-serif; */\n`;\n","export default __webpack_public_path__ + \"static/media/ic_alert.ff1f31a2.svg\";","export default __webpack_public_path__ + \"static/media/ic_refresh_blue.92eef0cf.svg\";","import React, { useState, useEffect, forwardRef } from 'react';\nimport media from \"styled-media-query\"\nimport DatePicker from 'react-datepicker'\nimport IconPencil from './../../../images/ic_pencil_blue.svg'\nimport styled from 'styled-components';\nimport \"react-datepicker/dist/react-datepicker.css\"\nimport \"./TimeRangePickerUI.css\";\nimport { COLORS } from '../../../styles/colors';\nimport { useHistory } from 'react-router-dom'\n\n\nexport default function TimeRangePickerUI(props) {\n\n // https://codesandbox.io/s/react-datepicker-custominput-sample-forked-fizf4j?file=/src/App.tsx;\n\n const [isSelected, setIsSelected] = useState(false)\n const history = useHistory();\n \n const ExampleCustomInput = forwardRef(({ value, onClick }, ref) => (\n\n \n {value}\n \n \n ));\n\n const checkIfDateIsToday = (dateToCheck) => {\n\n const today = new Date(); \n \n if (dateToCheck.getFullYear() === today.getFullYear() && \n dateToCheck.getMonth() === today.getMonth() && \n dateToCheck.getDate() === today.getDate()) {\n return true\n } else {\n return false\n }\n\n }\n\n const loadDate = (date) => {\n\n if(checkIfDateIsToday(date)){\n props.lockTo24H(false)\n var freshDate = new Date()\n props.loadCustomDate(freshDate)\n setIsSelected(true)\n history.push(`/portal/dashboard/${freshDate.getTime()}`)\n } else {\n props.lockTo24H(true)\n props.loadZero24HourDate(date)\n setIsSelected(true)\n }\n }\n\n return (\n \n loadDate(date)} \n timeInputLabel=\"Time:\"\n maxDate={new Date()}\n disabled={false} \n placeholderText=\"Click to select a date\"\n // minTime={new Date().setHours(0, 0, 0, 0)}\n // maxTime={new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHour(), now.getMinute(), now.getSecond())}\n // showTimeSelect\n withPortal\n disabledKeyboardNavigation\n timeFormat=\"HH:mm\"\n timeIntervals={60}\n // dateFormat=\"MM/dd/yyyy h:mm aa\"\n dateFormat=\"MM/dd/yyyy\"\n scrollableMonthYearDropdown\n customInput={}\n />\n \n\n \n\n\n {/* -------------START DATEPICKER */}\n {/* props.loadStartTime(date)} \n onChangeRaw={(e) => handleChangeRaw(e)}\n timeInputLabel=\"Time:\"\n maxDate={new Date()}\n disabled={true} \n // minTime={new Date().setHours(0, 0, 0, 0)}\n // maxTime={new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHour(), now.getMinute(), now.getSecond())}\n showTimeSelect\n disabledKeyboardNavigation\n timeFormat=\"HH:mm\"\n timeIntervals={60}\n dateFormat=\"MM/dd/yyyy h:mm aa\"\n showMonthDropdown\n showYearDropdown\n scrollableMonthYearDropdown\n /> */}\n\n\n {/* -------------END DATEPICKER */}\n {/* props.loadEndTime(date)} \n timeInputLabel=\"Time:\"\n maxDate={new Date()}\n disabled={true} \n // minTime={new Date().setHours(0, 0, 0, 0)}\n // maxTime={new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHour(), now.getMinute(), now.getSecond())}\n showTimeSelect\n disabledKeyboardNavigation\n timeFormat=\"HH:mm\"\n timeIntervals={60}\n dateFormat=\"MM/dd/yyyy h:mm aa\"\n showMonthDropdown\n showYearDropdown\n scrollableMonthYearDropdown\n /> */}\n\n\n\n \n );\n}\n\n\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n width: 100%;\n display: flex;\n flex-direction: row;\n /* justify-items: space-between; */\n\n`\n\nconst CustomDateButton = styled.button`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 360px;\n height: 45px;\n background: #1A2B4A;\n border-radius: 8px;\n border: none;\n padding: 12px;\n :hover{\n padding: 11px;\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n max-width: 300px;\n min-width: 270px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px; \n `}\n`;\n\nconst ButtonText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 100;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n color: #4C628C;\n :hover{\n padding: 0px;\n border: none;\n }\n`;\n\nconst Icon = styled.img`\n width: 24px;\n height: 24px;\n :hover{\n padding: 0px;\n border: none;\n }\n /* margin-right: 5px; */\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport Select from \"react-dropdown-select\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../../styles/colors\"\n\n// Next steps: Format time range date, query data based on times\n\nexport default function TimeRangeDropdownUI(props) {\n\n const [isSelected, setIsSelected] = useState(false)\n const [selectedTimeRange, setSelectedTimeRange] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n // const [keepOpen, setKeepOpen] = useState(false)\n\n const customContentRenderer = () => (\n
\n {selectedTimeRange ? selectedTimeRange : \"Select time\"}\n
\n );\n\n const options = [\n // {key: 0, value: 0, label:()},\n // {key: 0, value: 1, label:(Apply Custom Range)},\n // {key: 1, value: 900, label: \"Last 15 minutes\" }, \n // {key: 2, value: 1800, label: \"Last 30 minutes\" },\n // {key: 3, value: 3600, label: \"Last 1 hour\" },\n // {key: 4, value: 7200, label: \"Last 2 hours\" },\n // {key: 5, value: 43200, label: \"Last 12 hours\" },\n {key: 6, value: 86400, label: \"Last 24 hours\" },\n\n {key: 7, value: 259200, label: \"Last 3 days\" },\n {key: 8, value: 604800, label: \"Last 1 week\" },\n {key: 9, value: 1209600, label: \"Last 2 week\" },\n // {key: 10, value: 1814400, label: \"Last 3 week\" },\n {key: 11, value: 2419200, label: \"Last 4 week\" },\n {key: 0, value: 0, label: \"Custom\" },\n ];\n\n useEffect(()=>{\n if(props.isLoading === true && (selectedTimeRange === null || props.isLocked24H === true)){\n const item = [{key: 6, value: 86400, label: \"Last 24 hours\" }]\n onSelected(item)\n } else if (props.isLocked24H === true){\n const item = [{key: 6, value: 86400, label: \"Last 24 hours\" }]\n onSelected(item)\n }\n }, [props.isLoading, props.isLocked24H])\n \n const onSelected = (item) => {\n if (item[0]) {\n\n if(item[0].label === \"Custom\"){\n props.loadFirstRecord()\n } \n\n const incrementTime = item[0].value\n props.loadTimeRange(incrementTime)\n setSelectedTimeRange(`${item[0].label}`) \n \n setIsSelected(true)\n } else {\n setSelectedTimeRange(null)\n setIsSelected(false)\n }\n }\n\n // data.stopPropagation()??\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n onSelected(value)}\n options={options}\n values={[]}\n dropdownHeight=\"500px\"\n dropdownPosition=\"bottom\"\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n color: COLORS.White,\n fontWeight: \"100\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"16px\"\n }}\n />\n
\n
\n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n`\n\nconst CustomText = styled.p`\n color: ${COLORS.White};\n font-weight: 100,\n padding-left: 12px,\n font-family: \"Roboto Condensed\",\n font-size: 16px;\n`;\n\nconst TimeRangeDetails = styled.div`\n border-radius: 10px;\n /* box-sizing: border-box; */\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n width: 300px;\n ${media.lessThan(\"743px\")`\n /* padding-bottom: 27px; */\n /* padding-right: 0px; */\n /* width: 100%; */\n max-width: 300px;\n min-width: 270px;\n /* height: 350px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* height: 350px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n width: 384px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n /* margin-top: 15px; */\n\n ${media.lessThan(\"744px\")`\n /* width: 90%; */\n height: 55px;\n margin-bottom: 10px;\n `}\n ${media.between(\"medium\", \"large\")`\n\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear{\n \n }\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: ${COLORS.White};\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n\n`\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n /* height: 500px; */\n /* left: 454px; */\n /* top: 390px; */\n /* background: #1A2B4A; */\n /* border: 1px solid #A1ADC2; */\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n`;","export default __webpack_public_path__ + \"static/media/ic_refresh_greenbox.08cd50f9.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport Select from \"react-dropdown-select\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../../styles/colors\"\n\n// Next steps: Format time range date, query data based on times\n\nexport default function CustomMonthDropdownUI(props) {\n\n const [isSelected, setIsSelected] = useState(false)\n const [selectedTimeRange, setSelectedTimeRange] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n // const [keepOpen, setKeepOpen] = useState(false)\n\n\n const customContentRenderer = () => (\n
\n {selectedTimeRange ? selectedTimeRange : \"Select month\"}\n
\n );\n\n const setupOptions = () => {\n const options = [\n {key: 0, value: 0, label: \"January\" },\n {key: 1, value: 1, label: \"February\" },\n {key: 2, value: 2, label: \"March\" },\n {key: 3, value: 3, label: \"April\" },\n {key: 4, value: 4, label: \"May\" },\n {key: 5, value: 5, label: \"June\" },\n {key: 6, value: 6, label: \"July\" },\n {key: 7, value: 7, label: \"August\" },\n {key: 8, value: 8, label: \"September\" },\n {key: 9, value: 9, label: \"October\" },\n {key: 10, value: 10, label: \"November\" },\n {key: 11, value: 11, label: \"December\" },\n ];\n\n if(props.firstMonth && props.firstYear && props.selectedYear ){\n\n if(props.selectedYear === props.firstYear){ // If user selects first year of data all months may not be available\n\n const currentMonth = new Date().getMonth() + 1 // +1 so we always get a one month spread\n\n if(currentMonth > props.firstMonth){\n return options.slice(props.firstMonth, currentMonth).reverse() // If current month bigger then start month, just show range between\n } else {\n return options.slice(props.firstMonth, 12).reverse() // If current month smaller then start month, want range from first month -> end of year \n }\n\n } else if(props.selectedYear === new Date().getFullYear()){ // If user selects current year not all months may not be available\n // If selected year \n return options.slice(0, new Date().getMonth() + 1).reverse() \n } else {\n // All other cases\n return options.slice(0, 12).reverse() //Otherwise all months should be available\n }\n\n } else {\n return options.slice(0, 0) \n }\n \n }\n\n useEffect(()=>{\n setSelectedTimeRange() \n }, [props.selectedYear])\n \n const onSelected = (item) => {\n if (item[0]) {\n const month = item[0].value\n props.setData(month)\n setSelectedTimeRange(`${item[0].label}`) \n setIsSelected(true)\n } else {\n setSelectedTimeRange(null)\n setIsSelected(false)\n }\n }\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n onSelected(value)}\n options={setupOptions()}\n values={[]}\n dropdownHeight=\"500px\"\n dropdownPosition=\"bottom\"\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n color: COLORS.White,\n fontWeight: \"100\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"16px\"\n }}\n />\n
\n
\n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n`\n\nconst CustomText = styled.p`\n color: ${COLORS.White};\n font-weight: 100,\n padding-left: 12px,\n font-family: \"Roboto Condensed\",\n font-size: 16px;\n`;\n\n {/*
*/}\n\nconst TimeRangeDetails = styled.div`\n border-radius: 10px;\n /* box-sizing: border-box; */\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n width: 180px;\n /* border: 1px white solid; */\n ${media.lessThan(\"743px\")`\n /* padding-bottom: 27px; */\n /* padding-right: 0px; */\n /* width: 100%; */\n max-width: 180px;\n min-width: 150px;\n /* height: 350px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* height: 350px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n width: 384px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n /* margin-top: 15px; */\n\n ${media.lessThan(\"744px\")`\n /* width: 90%; */\n height: 55px;\n margin-bottom: 10px;\n `}\n ${media.between(\"medium\", \"large\")`\n\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear{\n \n }\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: ${COLORS.White};\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n\n`\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n /* height: 500px; */\n /* left: 454px; */\n /* top: 390px; */\n /* background: #1A2B4A; */\n /* border: 1px solid #A1ADC2; */\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport Select from \"react-dropdown-select\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../../styles/colors\"\n\n// Next steps: Format time range date, query data based on times\n\nexport default function CustomMonthDropdownUI(props) {\n\n const [isSelected, setIsSelected] = useState(false)\n const [selectedTimeRange, setSelectedTimeRange] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n // const [keepOpen, setKeepOpen] = useState(false)\n\n\n const customContentRenderer = () => (\n
\n {selectedTimeRange ? selectedTimeRange : \"Select year\"}\n
\n );\n\n const setupOptions = () => {\n\n // Account for future years? 2024, 2025?\n\n const options = [\n { key: 6, value: 2024, label: \"2024\" },\n { key: 5, value: 2023, label: \"2023\" },\n { key: 4, value: 2022, label: \"2022\" },\n { key: 3, value: 2021, label: \"2021\" },\n { key: 2, value: 2020, label: \"2020\" },\n { key: 1, value: 2019, label: \"2019\" },\n { key: 0, value: 2018, label: \"2018\" },\n ];\n \n const endIndex = options.findIndex(option => option.value === props.firstYear ? props.firstYear : 0);\n \n if (endIndex === -1) {\n return options.slice(0, 0);\n }\n // Slice the array from the found index\n return options.slice(0, endIndex + 1 );\n }\n \n const onSelected = (item) => {\n if (item[0]) {\n if(item[0].key === -1){\n // Calendar picker, do nothing\n } else if(item[0].key === -2){\n // Apply Custom Date Range\n // setSelectedTimeRange(`${props.startTime} : ${props.endTime}`)\n \n } else {\n\n const year = item[0].value\n props.setData(year)\n setSelectedTimeRange(`${item[0].label}`) \n }\n setIsSelected(true)\n } else {\n setSelectedTimeRange(null)\n setIsSelected(false)\n }\n }\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n onSelected(value)}\n options={setupOptions()}\n values={[]}\n dropdownHeight=\"500px\"\n dropdownPosition=\"bottom\"\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n color: COLORS.White,\n fontWeight: \"100\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"16px\"\n }}\n />\n
\n
\n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n`\n\nconst CustomText = styled.p`\n color: ${COLORS.White};\n font-weight: 100,\n padding-left: 12px,\n font-family: \"Roboto Condensed\",\n font-size: 16px;\n`;\n\n {/*
*/}\n\nconst TimeRangeDetails = styled.div`\n border-radius: 10px;\n /* box-sizing: border-box; */\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n width: 180px;\n /* border: 1px white solid; */\n ${media.lessThan(\"743px\")`\n /* padding-bottom: 27px; */\n /* padding-right: 0px; */\n /* width: 100%; */\n max-width: 180px;\n min-width: 150px;\n /* height: 350px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* height: 350px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n width: 384px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n /* margin-top: 15px; */\n\n ${media.lessThan(\"744px\")`\n /* width: 90%; */\n height: 55px;\n margin-bottom: 10px;\n `}\n ${media.between(\"medium\", \"large\")`\n\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear{\n \n }\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: ${COLORS.White};\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n\n`\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n /* height: 500px; */\n /* left: 454px; */\n /* top: 390px; */\n /* background: #1A2B4A; */\n /* border: 1px solid #A1ADC2; */\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../../styles/colors\"\nimport { Link } from \"react-router-dom\"\nimport CustomMonthDropdownUI from \"./CustomMonthDropdownUI\"\nimport CustomYearDropdownUI from \"./CustomYearDropdownUI\"\n\nexport default function PropertyCustomTimeUI(props) {\n\n const [selectedMonth, setSelectedMonth] = useState()\n const [selectedYear, setSelectedYear] = useState()\n const [dateSelected, setDateSelected] = useState(false)\n\n const applyCustomDate = () => {\n if(dateSelected){\n props.loadCustomMonth(selectedMonth, selectedYear)\n setDateSelected(false)\n }\n }\n\n const setMonth = (month) => {\n setSelectedMonth(month)\n }\n\n const setYear = (year) => {\n setSelectedYear(year)\n setSelectedMonth()\n }\n\n useEffect(()=>{\n if(selectedMonth !== undefined && selectedYear !== undefined){\n setDateSelected(true)\n } else {\n setDateSelected(false)\n }\n }, [selectedMonth, selectedYear])\n\n return (\n \n \n \n Year\n \n \n \n Month\n \n \n \n \n \n \n APPLY\n \n \n \n )\n}\n\nconst OuterContainer = styled.div`\n/* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst DateContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst Dropdown = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n margin-right: 10px;\n`;\n\nconst DropdownTitle = styled.p`\n /* border: 1px yellow dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightLight};\n`;\n\nconst BtnApply = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n align-self: flex-end;\n /* padding: 14px 40px; */\n gap: 9px;\n background: ${COLORS.Green};\n width: 140px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n margin-right: 20px;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n margin-bottom: 0px;\n `}\n`;\n\nconst ButtonText2 = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Primary};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport IconLaunch from \"./../../../images/ic_launch_green.svg\"\nimport ImgGreen from \"./../../../images/ic_status_green.svg\"\nimport { Link } from \"react-router-dom\"\nimport { COLORS } from \"./../../../styles/colors\"\nimport PropertyDropdownUI from \"./PropertyDropdownUI\"\nimport TimeRangeDropdownUI from \"./TimeRangeDropdownUI\"\nimport { useMediaQuery } from 'react-responsive'\nimport TimeRangePickerUI from \"./TimeRangePickerUI\"\nimport IconRefreshBlue from \"./../../../images/ic_refresh_blue.svg\";\nimport IconRefresh from \"./../../../images/ic_refresh_greenbox.svg\";\nimport { StyledRelativeSpinner } from \"./../../custom/Spinner\"\nimport { ColorSet } from \"@amcharts/amcharts5\"\nimport PropertyCustomTimeUI from \"./PropertyCustomTimeUI\"\n\nexport default function PropertyTimeUI(props) {\n\n const [isRefresh, setIsRefresh] = useState(false)\n const [isRefreshAlertHovering, setIsRefreshAlertHovering] = useState(false)\n const [isLocalTime, setIsLocalTime] = useState(true)\n const [time, setTime] = useState(new Date());\n const [firstRecordDate, setFirstRecordDate] = useState(\"\");\n const [firstMonth, setFirstMonth] = useState();\n const [firstYear, setFirstYear] = useState();\n const [isLoading, setIsLoading] = useState(false)\n\n\n useEffect(() => {\n loadFirstRecord()\n }, [props.propertyDetails]);\n\n const loadFirstRecord = async () => {\n\n if(props.propertyDetails && props.propertyDetails.linkedWingnuts.length !== 0){\n setIsLoading(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n const response = await API.get('FrontendAPI-analytics', `/firstrecord?firstRecordId=${props.propertyDetails.id}`, init)\n \n if (response.success) {\n\n // returned object is [{propertyId: \"84bd1a5d-9700-4387-b092-ef81aec551c2\", time: \"2023-03-08 17:36:42.000000000\"}]\n\n if(response.data[0]){\n // Assuming the timestamp is in a format that JavaScript's Date can parse\n const timestamp = new Date(response.data[0].time);\n const month = String(timestamp.getMonth()).padStart(2, '0');\n var year = timestamp.getFullYear();\n\n // Tinsel Town 2023-03-08 17:36:42.000000000\n // Brewery lands - 2023-03-15 21:37:08.000000000\n // console.log(\"timestamp\", timestamp)\n // console.log(\"month\", month)\n // Load in variables\n setFirstRecordDate(timestamp)\n setFirstMonth(month);\n setFirstYear(year);\n setIsLoading(false);\n }\n\n } else {\n setIsLoading(false)\n setFirstRecordDate(\"\")\n setFirstMonth();\n setFirstYear();\n }\n } else {\n setIsLoading(false)\n setFirstRecordDate(\"\")\n setFirstMonth();\n setFirstYear();\n }\n }\n\n const manualRefresh = () => {\n if(props.propertyDetails !== null){\n setIsRefresh(true)\n setIsRefreshAlertHovering(false)\n setFirstRecordDate(\"\")\n setFirstMonth()\n setFirstYear()\n props.reloadProperty()\n setTimeout(() => {\n setIsRefresh(false)\n }, 1000)\n }\n }\n\n const setUserTime = () => {\n setIsLocalTime(true)\n props.updateTimeZone(Intl.DateTimeFormat().resolvedOptions().timeZone)\n }\n\n const setPropertyTime = () => {\n setIsLocalTime(false)\n props.updateTimeZone(props.propertyTimeZone && props.propertyTimeZone.value)\n }\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n setTime(new Date());\n }, 60000); // Update every minute\n\n return () => clearInterval(intervalId); // Clear interval on component unmount\n }, []);\n\n\n const formatTime = (date, timezone) => {\n let formattedTime = new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n timeZone: timezone\n }).format(date);\n\n // Adjust hour formatting\n let [hour, minuteAndPeriod] = formattedTime.split(':');\n if (hour.startsWith('0')) {\n hour = hour.substring(1);\n }\n formattedTime = `${hour}:${minuteAndPeriod}`;\n\n // Changing AM/PM to lowercase\n formattedTime = formattedTime.replace('AM', 'am').replace('PM', 'pm');\n return formattedTime;\n };\n\n // Format timezone to GMT±0 format\n const formatTimeZone = (offset) => {\n const hours = Math.floor(Math.abs(offset) / 60);\n return `GMT${offset >= 0 ? '+' : '-'}${hours}`;\n };\n\n const localOffset = time.getTimezoneOffset();\n const localTimeZoneFormatted = formatTimeZone(-localOffset); // getTimezoneOffset() returns the difference in minutes opposite to what we usually see\n const localTime = formatTime(time, Intl.DateTimeFormat().resolvedOptions().timeZone);\n const targetTime = formatTime(time, props.propertyTimeZone && props.propertyTimeZone.value);\n\n const applyTimeRange = () => {\n if(props.isTimeRange == true){\n props.applyNewTimeRange()\n }\n }\n\n return (\n \n \n\n {props.propertyDetails ?\n \n\n \n {localTime}\n {`USER TIME (${localTimeZoneFormatted})`}\n \n\n \n {targetTime}\n {`PROPERTY TIME ${props.propertyTimeZone ? props.propertyTimeZone.offset : ''}`}\n \n\n \n :
\n }\n\n { props.propertyDetails || props.isLoading ? \n \n {props.isLoading \n ? \n : {\n if(props.propertyDetails){\n setIsRefreshAlertHovering(true)\n }\n }}\n onMouseLeave={(e) => {\n setIsRefreshAlertHovering(false)\n }}\n onClick={()=>{manualRefresh()}} \n src={isRefreshAlertHovering ? IconRefresh : IconRefresh} \n style={{marginLeft: -2, width: 32, height: 32, cursor: props.propertyDetails ? 'pointer' : null}} /> \n }\n\n \n :\n null\n } \n\n \n \n \n \n Property\n \n \n \n Time Range\n \n \n\n {props.isCustomRange ? \n isLoading ? \n
\n \n
\n :\n \n\n :\n \n APPLY\n \n \n }\n \n\n\n
\n {\n props.propertyDetails && props.propertyDetails.linkedWingnuts.length === 0 \n ? \n \n No Wingnuts currently linked to this Property. You must link a wingnut to start collecting data.\n \n \n \n LINK WINGNUT\n \n \n \n \n : null\n }\n\n\n \n )\n}\n\n\n const OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n `\n\nconst TopContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n width: 100%;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-bottom: 21px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n margin-right: 0px;\n margin-bottom: 15px;\n /* justify-content: space-between; */\n `}\n`\n\nconst HeaderTextContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nconst UtilityContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n /* height: 30px; */\n /* justify-content: center; */\n ${media.lessThan(\"743px\")`\n margin-bottom: 20px;\n `}\n`;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 600;\n font-size: 31px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Subheader = styled.h4`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 12.13px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n margin-top: 6px;\n`;\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n max-width: 1440px;\n margin-right: 30px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n /* flex-direction: column; */\n `}\n `\n\nconst Dropdown = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n margin-right: 10px;\n`;\n\nconst DateContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst DropdownTitle = styled.p`\n /* border: 1px yellow dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightLight};\n`;\n\nconst DropdownPlaceholder = styled.div`\n background: #1A2B4A;\n width: 384px;\n height: 45px;\n /* border: 1px solid #A1ADC2; */\n border-radius: 8px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n border: none;\n /* border: 1px yellow dashed; */\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: row;\n width: 130px;\n height: 20px;\n padding: 0px;\n background: transparent;\n margin-top: 7px;\n /* cursor: pointer;; */\n color: ${COLORS.White};\n /* :hover {\n color: #63C085;\n } */\n ${media.lessThan(\"743px\")`\n margin-bottom: 15px;\n margin-left: -10px;\n `}\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 10px;\n height: 10px;\n margin-right: 6px;\n position: relative;\n`\n\nconst ButtonText = styled.p`\n /* border: 1px blue dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n color: ${COLORS.White};\n /* :hover {\n color: #63C085;\n } */\n`\n\nconst NoWingnutContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n`;\n\nconst NoWingnutText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n`;\n\nconst BtnLinkWingnut = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n background: ${COLORS.Green};\n width: 193px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n margin-right: 20px;\n margin-top: 16px;\n :hover {\n }\n`;\n\nconst BtnApply = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n /* padding: 14px 40px; */\n gap: 9px;\n background: ${COLORS.Secondary};\n border: 1px solid #63C085;\n width: 140px;\n height: 40px;\n /* border: none; */\n border-radius: 30px;\n margin-right: 20px;\n margin-top: 20px;\n :hover {\n }\n`;\n\nconst BtnSet = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: transparent;\n height: 40px;\n border: none;\n border-radius: 30px;\n :hover {\n }\n`;\n\nconst ButtonText2 = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Primary};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst ButtonSetText = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Green};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: left;\n margin-top: 10px;\n width: 100%;\n /* height: 500px; */\n /* left: 454px; */\n /* top: 390px; */\n /* background: #1A2B4A; */\n /* border: 1px dashed red; */\n /* margin-top: 15px; \n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);\n border-radius: 8px; */\n`;\n\nconst MiniSpinnerContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n width: 35px;\n height: 35px;\n /* justify-content: center; */\n /* align-self: center; */\n /* margin-bottom: 35px; */\n margin-right: 5px;\n`","import React, { Component } from 'react';\nimport Chart from 'react-apexcharts'\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../../styles/colors\"\n\nexport default class OneGauge extends React.Component {\n constructor(props) {\n super(props);\n\n var lastValue = null\n var percent = 0\n var roundedPercent = 0\n\n if(this.props.data.lastValue && this.props.data.lastValue !== \"none\" ){\n lastValue = Number(this.props.data.lastValue)\n } else {\n lastValue = null\n }\n\n percent = lastValue / this.props.upperLimit * 100\n roundedPercent = percent.toFixed(1)\n \n this.state = {\n lastValue: lastValue,\n series: [roundedPercent],\n options: {\n chart: {\n type: 'radialBar',\n offsetY: -20,\n sparkline: {\n enabled: true\n },\n foreColor: `red`,\n fontFamily: '\"Roboto Condensed\", sans-serif'\n },\n states: {\n normal: {\n filter: {\n type: 'none',\n value: 0,\n }\n },\n hover: {\n filter: {\n type: 'none',\n value: 0,\n }\n },\n active: {\n allowMultipleDataPointsSelection: false,\n filter: {\n type: 'none',\n value: 0,\n }\n },\n },\n plotOptions: {\n radialBar: {\n startAngle: -90,\n endAngle: 90,\n hollow: {\n // margin: 0,\n size: '55%',\n // background: '#fff',\n },\n colors: ['#645CAA'],\n track: {\n background: COLORS.Primary,\n strokeWidth: '97%',\n margin: 5, // margin is in pixels\n \n },\n dataLabels: {\n show: false,\n name: {\n show: false\n },\n value: {\n offsetY: -2,\n fontSize: '22px'\n }\n }\n }\n },\n fill: {\n type: 'solid',\n colors: [COLORS.Green],\n },\n grid: {\n padding: {\n top: -10\n }\n },\n \n labels: ['Live'],\n },\n };\n }\n\n updateData = () => {\n\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.data !== nextProps.data) {\n if(nextProps.data !== null && nextProps.data!== undefined ){\n\n var lastValue = null\n var percent = 0\n var roundedPercent = 0\n\n if(nextProps.data.lastValue && nextProps.data.lastValue !== \"none\" ){\n lastValue = Number(nextProps.data.lastValue)\n }\n\n percent = lastValue / this.props.upperLimit * 100\n roundedPercent = percent.toFixed(1)\n\n this.setState({\n lastValue: lastValue,\n series: [roundedPercent]\n })\n } \n } \n }\n\n render() {\n\n return (\n \n \n \n \n \n \n {0}\n {`${this.props.upperLimit}`}\n \n \n { this.props.data && this.props.data.lastValue && this.props.data.lastValue !== \"none\" && this.state.lastValue !== null\n ? {`${this.state.lastValue} ${this.props.unit}`}\n : No Data\n }\n \n )\n }\n }\n\n const Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n `;\n\n\n\n const LabelContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 248px;\n height: 50px;\n margin-left: 30px;\n margin-top: -60px;\n ${media.lessThan(\"743px\")`\n margin-top: -40px;\n `}\n `;\n\n const LabelContainer2 = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n height: 50px;\n width: 235px;\n margin-left: 25px;\n margin-top: -20px;\n `;\n\n\n const HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 15.9022px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n text-align: center;\n color: ${COLORS.HighlightMedium};\n `\n\n const HeaderText2 = styled.h2`\n /* border: 1px red dashed; */\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 600;\n font-size: 36.3478px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n /* margin-left: 113px; */\n margin-top: -70px;\n `\n\n const GaugeContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 50px;\n margin-bottom: 50px;\n ${media.lessThan(\"743px\")`\n margin-bottom: 40px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 20px;\n margin-bottom: 50px;\n `}\n `;\n\n const NoWingnutText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n margin-left: 115px;\n margin-top: -65px;\n margin-bottom: 15px;\n `;\n\n","import React from 'react'\nimport { COLORS } from \"./../../../styles/colors\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\n\nexport default function OneGaugeValues(props) {\n\n return (\n \n \n Minimum\n { props.data && props.data.min !== \"none\" && props.data.min !== undefined && props.data.min !== NaN \n ? {`${props.data.min} ${props.unit}`}\n : No Data\n }\n \n \n Average\n { props.data && props.data.average !== \"none\" && props.data.average !== undefined && props.data.average !== NaN \n ? {`${props.data.average} ${props.unit}`}\n : No Data\n }\n \n \n Maximum\n { props.data && props.data.max !== \"none\" && props.data.max !== undefined && props.data.max !== NaN \n ? {`${props.data.max} ${props.unit}`}\n : No Data\n }\n \n\n\n \n )\n}\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-right: 10px;\n padding-left: 10px;\n margin-top: 30px;\n max-width: 300px;\n`;\n\nconst TextContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n `}\n`\n\n const Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 9px;\n `\n\n const InfoText = styled.h2`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 23.8533px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n `\n\nconst NoWingnutText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport IconLaunch from \"./../../../images/ic_launch_green.svg\"\nimport ImgGreen from \"./../../../images/ic_status_green.svg\"\nimport { Link } from \"react-router-dom\"\nimport { COLORS } from \"../../../styles/colors\"\nimport OneGauge from \"../chart/OneGauge\"\nimport OneGaugeValues from \"../chart/OneGaugeValues\"\n// import OneCandlestick from \"../chart/OneCandlestick\"\n// import OneBoxPlot from \"../chart/OneBoxPlot\"\n\nexport default function SystemGauge(props) {\n\n return (\n \n {props.label}\n \n \n \n )\n}\n\nconst WidgetContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n background-color: #15233F;\n border-radius: 4px;\n width: 349px;\n height: 447px;\n padding: 22px;\n padding-top: 40px;\n padding-bottom: 20px;\n margin-right: 20px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n /* flex-wrap: wrap; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* flex-wrap: wrap; */\n `}\n`\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 15px;\n margin-top: 10px;\n margin-left: 25px;\n text-align: center;\n max-width: 250px;\n`\n\nconst EmptyText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`;\n\n\n\n\n\n\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport IconLaunch from \"./../../../images/ic_launch_green.svg\"\nimport ImgGreen from \"./../../../images/ic_status_green.svg\"\nimport { Link } from \"react-router-dom\"\nimport { COLORS } from \"../../../styles/colors\"\nimport OneGauge from \"../chart/OneGauge\"\nimport SystemGauge from \"./SystemGauge\"\nimport OneGaugeValues from \"../chart/OneGaugeValues\"\n// import OneCandlestick from \"../chart/OneCandlestick\"\n// import OneBoxPlot from \"../chart/OneBoxPlot\"\n\nexport default function SystemOverview(props) {\n\n return (\n \n \n\n {props.propertyDetails !== null && props.propertyDetails.linkedWingnuts.length !== 0\n ? \n \n \n\n \n\n \n\n \n : Please select a property to see data\n }\n\n \n \n )\n}\n\n const OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-left: 20px;\n `\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-self: center;\n margin-top: 10px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n /* justify-content: center; */\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst WidgetContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n background-color: #15233F;\n border-radius: 4px;\n width: 349px;\n height: 447px;\n padding: 22px;\n padding-top: 40px;\n padding-bottom: 20px;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n flex-wrap: wrap;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n `}\n`\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 15px;\n margin-top: 10px;\n margin-left: 25px;\n text-align: center;\n max-width: 250px;\n`\n\nconst EmptyText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport Icon from \"./../../images/ic_alert.svg\";\n// import AlertCard from \"./AlertCard\";\nimport { SpinnerContainer, StyledRelativeSpinner } from \"../custom/Spinner\"\nimport PropertyTimeUI from \"./component/PropertyTimeUI\"\nimport PrimaryTempsUI from \"./component/SystemOverviewUI\"\nimport TimeSeriesAMChartsUI from \"./component/TimeSeriesAMChartsUI\"\n\n\nexport default function TimeSeriesModule(props) {\n\n const [chart1Loaded, setChart1Loaded] = useState(false)\n const [chart2Loaded, setChart2Loaded] = useState(false)\n const [chart3Loaded, setChart3Loaded] = useState(false)\n\n const [stateChunk1, setStateChunk1] = useState()\n const [stateChunk2, setStateChunk2] = useState()\n const [stateChunk3, setStateChunk3] = useState()\n const [stateChunk4, setStateChunk4] = useState()\n\n const [chunk1, setChunk1] = useState()\n const [chunk2, setChunk2] = useState()\n const [chunk3, setChunk3] = useState()\n const [chunk4, setChunk4] = useState()\n\n const [data, setData] = useState()\n const [stateData, setStateData] = useState()\n const [analyticData, setAnalyticData] = useState()\n const [isLoading, setIsLoading] = useState(false)\n\n const [isHovering, setIsHovering] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n // if(data){\n console.log(\"V2.1 SHOULD KICKOFF LOAD CYCLE\", props.refresh)\n setData()\n setStateData()\n setAnalyticData()\n multiDataLoad()\n loadAnalyticData()\n setChunk1()\n setChunk2()\n setChunk3()\n setChunk4()\n setStateChunk1()\n setStateChunk2()\n setStateChunk3()\n setStateChunk4()\n setChart1Loaded(false)\n setChart2Loaded(false)\n setChart3Loaded(false)\n setIsLoading(true)\n setIsOpen(false)\n // } \n }, [props.refresh])\n\n const multiDataLoad = () => {\n\n console.log(\"FIRST REQUEST DATE\", props.startTime, new Date(props.startTime))\n console.log(\"LAST REQUEST DATE\", props.endTime, new Date(props.endTime))\n // console.log(\"props.incrementTime\", props.incrementTime )\n\n if (props.incrementTime !== 2419200 && props.incrementTime !== 1209600 && props.incrementTime !== 0){\n loadChartData(0, props.startTime, props.endTime) // Calls not needing split\n loadStateData(0, props.startTime, props.endTime)\n } else {\n\n // Calculate the total duration and the duration of each chunk\n const totalDuration = props.endTime - props.startTime;\n const chunkDuration = Math.floor(totalDuration / 4);\n\n // Define the end timestamp for week 1\n const chunk1Start = props.startTime;\n const chunk1End = chunk1Start + chunkDuration - 1000;\n\n const chunk2Start = chunk1End + 1;\n const chunk2End = chunk2Start + chunkDuration - 1000;\n\n const chunk3Start = chunk2End + 1;\n const chunk3End = chunk3Start + chunkDuration - 1000;\n\n const chunk4Start = chunk3End + 1;\n const chunk4End = chunk4Start + chunkDuration - 1000;\n\n // Ensure that the end of week 4 doesn't exceed the original endTime\n const finalChunk4End = chunk4End > props.endTime ? props.endTime : chunk4End;\n\n // Print the start timestamps for each week and the end timestamp for week 1\n // console.log(\"Fetch Chunk 1 Start:\", new Date(chunk1Start), \"Chunk 1 End:\", new Date(chunk1End));\n // console.log(\"Fetch Chunk 2 Start:\", new Date(chunk2Start), \"Chunk 2 End:\", new Date(chunk2End));\n // console.log(\"Fetch Chunk 3 Start:\", new Date(chunk3Start), \"Chunk 3 End:\", new Date(chunk3End));\n // console.log(\"Fetch Chunk 4 Start:\", new Date(chunk4Start), \"Chunk 4 End:\", new Date(finalChunk4End));\n\n loadChartData(1, chunk1Start, chunk1End)\n loadChartData(2, chunk2Start, chunk2End)\n loadChartData(3, chunk3Start, chunk3End)\n loadChartData(4, chunk4Start, finalChunk4End)\n\n loadStateData(1, chunk1Start, chunk1End)\n loadStateData(2, chunk2Start, chunk2End)\n loadStateData(3, chunk3Start, chunk3End)\n loadStateData(4, chunk4Start, finalChunk4End)\n } \n\n }\n\n // chunks = [chunk1, chunk2, chunk3, chunk4]\n function stitchData(chunks) {\n // Initialize an object to hold the stitched data\n const stitchedData = {};\n \n // Iterate over each chunk\n chunks.forEach(chunk => {\n // Iterate over each label in the chunk\n Object.keys(chunk).forEach(label => {\n // If the label doesn't exist in the stitchedData, initialize it with an empty array\n if (!stitchedData[label]) {\n stitchedData[label] = [];\n }\n // Concatenate the current chunk's data to the stitchedData under the label\n stitchedData[label] = stitchedData[label].concat(chunk[label].reverse());\n });\n });\n \n return stitchedData;\n }\n\n function isFirstLabelTimestampsOrdered(data) {\n // Get the first label key in the object\n const firstLabel = Object.keys(data)[0];\n \n // Get the array for the first label\n const timeSeries = data[firstLabel];\n \n // Check that each timestamp is greater than the one before it\n for (let i = 1; i < timeSeries.length; i++) {\n if (timeSeries[i][0] < timeSeries[i - 1][0]) {\n // If a timestamp is less than the one before, the order is incorrect\n return false;\n }\n }\n \n // If all timestamps are in the correct order, return true\n return true;\n }\n \n\n useEffect(() => {\n if (chunk1 !== undefined && chunk2 !== undefined && chunk3 !== undefined && chunk4 !== undefined) {\n // console.log(\"GOT 4 CHUNKS - START STITCH DATA\")\n const data = stitchData([chunk1, chunk2, chunk3, chunk4]);\n setData(data); \n // console.log(\"GOT 4 CHUNKS - END STITCH DATA\")\n // console.log(\"IS MAIN DATA ORDERED\", isFirstLabelTimestampsOrdered(data))\n\n if(Object.keys(data).length > 0){\n setIsOpen(true)\n } else {\n setIsLoading(false)\n }\n }\n }, [chunk1, chunk2, chunk3, chunk4])\n\n useEffect(() => {\n if (stateChunk1 !== undefined && stateChunk2 !== undefined && stateChunk3 !== undefined && stateChunk4 !== undefined) {\n // console.log(\"GOT 4 CHUNKS - START STITCH DATA\")\n const data = stitchData([stateChunk1, stateChunk2, stateChunk3, stateChunk4]);\n // console.log(\"GOT 4 CHUNKS - END STITCH DATA\")\n // console.log(\"IS STATE DATA ORDERED\", isFirstLabelTimestampsOrdered(data))\n setStateData(data); \n // setIsOpen(true) \n }\n}, [stateChunk1, stateChunk2, stateChunk3, stateChunk4])\n\n useEffect(() => {\n\n let labels = [];\n\n if (data && stateData) {\n labels = [...Object.keys(data), ...Object.keys(stateData)];\n } else if (data) {\n labels = [...Object.keys(data)];\n } else if (stateData) {\n labels = [...Object.keys(stateData)];\n }\n\n function containsKeywords(array, keywords) {\n return array.some(element => keywords.some(keyword => element.includes(keyword)));\n }\n\n const chart1 = containsKeywords(labels, ['Temperature'])\n const chart2 = containsKeywords(labels, ['Pressure', 'Current'])\n const chart3 = containsKeywords(labels, ['State'])\n\n if(chart1 && chart2 && chart3){\n if (chart1Loaded === true && chart2Loaded === true && chart3Loaded === true) {\n setIsLoading(false);\n }\n } else if (chart1 && chart2){\n if (chart1Loaded === true && chart2Loaded === true) {\n setIsLoading(false);\n }\n } else if (chart1 && chart3){\n if (chart1Loaded === true && chart3Loaded === true) {\n setIsLoading(false);\n }\n } else if (chart2 && chart3){\n if (chart2Loaded === true && chart3Loaded === true) {\n setIsLoading(false);\n }\n } else if (chart1){\n if (chart1Loaded === true) {\n setIsLoading(false);\n }\n } else if (chart2){\n if (chart2Loaded === true) {\n setIsLoading(false);\n }\n } else if(chart3){\n if (chart3Loaded === true) {\n setIsLoading(false);\n }\n } \n\n }, [chart1Loaded, chart2Loaded, chart3Loaded])\n\n const chartLoaded = (id) => {\n // console.log(`CHART ${id} LOADED :)`)\n if(id === 1){\n setChart1Loaded(true)\n } else if (id === 2){\n setChart2Loaded(true)\n } else if (id === 3){\n setChart3Loaded(true)\n }\n }\n\n const loadChartData = async (id, startTime, endTime) => {\n\n if(props.propertyDetails){\n // console.time(`${props.chartURL}`);\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n const response = await API.get('FrontendAPI-analytics', `/${props.chartURL}?uuid=${props.propertyDetails.id}&startTime=${startTime}&endTime=${endTime}&offset=${props.offset}`, init)\n // console.log(\"response\", response)\n if(response === undefined){\n setIsLoading(false)\n } else {\n\n if (response.success) {\n\n switch (id) {\n case 0:\n // console.log(\"SINGLE TEMP/PRESS/CURRENT API CALL RETURNED DATA\")\n setData(response.data)\n if(Object.keys(response.data).length > 1){\n setIsOpen(true)\n } else {\n setIsLoading(false)\n }\n\n // packageSize(response.data, props.chartURL) // dev\n break;\n case 1:\n setChunk1(response.data)\n // console.log(\"CHUNK 1 RETURNED DATA\")\n break;\n case 2:\n // console.log(\"CHUNK 2 RETURNED DATA\")\n setChunk2(response.data)\n break;\n case 3:\n // console.log(\"CHUNK 3 RETURNED DATA\")\n setChunk3(response.data)\n break;\n case 4:\n // console.log(\"CHUNK 4 RETURNED DATA\")\n setChunk4(response.data)\n break;\n }\n } else {\n console.log(\"Failed to load chart data\")\n setIsLoading(false)\n }\n }\n }\n }\n\n const loadStateData = async (id, startTime, endTime) => {\n if(props.propertyDetails){\n // console.time(`${props.stateURL}`);\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}`},\n }\n const response = await API.get('FrontendAPI-analytics', `/${props.stateURL}?uuid=${props.propertyDetails.id}&startTime=${startTime}&endTime=${endTime}&offset=${props.offset}`, init)\n\n if (response.success) {\n setStateData(response.data) // MAIN DATA LOAD HERE\n if (response.success) {\n switch (id) {\n case 0:\n // console.log(\"SINGLE STATE API CALL RETURNED DATA\")\n setStateData(response.data)\n // packageSize(response.data, props.chartURL) // dev\n break;\n case 1:\n setStateChunk1(response.data)\n // console.log(\"STATE CHUNK 1 RETURNED DATA\")\n break;\n case 2:\n // console.log(\"STATE CHUNK 2 RETURNED DATA\")\n setStateChunk2(response.data)\n break;\n case 3:\n // console.log(\"STATE CHUNK 3 RETURNED DATA\")\n setStateChunk3(response.data)\n break;\n case 4:\n // console.log(\"STATE CHUNK 4 RETURNED DATA\")\n setStateChunk4(response.data)\n break;\n }\n } else {\n console.log(\"Failed to load state chart data\")\n setIsLoading(false)\n }\n }\n }\n }\n\n const loadAnalyticData = async () => {\n if(props.propertyDetails){\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n } \n const response = await API.get('FrontendAPI-analytics', `/${props.analyticURL}?uuid=${props.propertyDetails.id}&startTime=${props.startTime}&endTime=${props.endTime}&offset=${props.offset}`, init)\n \n if (response.success) {\n setAnalyticData(response.data)\n }\n }\n }\n\n const packageSize = (data, url) => {\n\n const fileSize = data\n const jsonString = JSON.stringify(fileSize);\n const bytes = Buffer.from(jsonString).length;\n const kilobytes = bytes / 1024;\n const megabytes = kilobytes / 1024;\n\n let points = Object.values(data)\n\n if(points.length > 0){\n // console.log(`<---------- TIME TO LOAD ------>`)\n // console.timeEnd(`${url}`)\n\n var keyCount = Object.keys(data).length\n\n // console.log(\"Points per label\", points[0].length, ' x ', keyCount, 'labels = ', (points[0].length * keyCount), \"total\" )\n // console.log(`Package size is: ${megabytes.toFixed(2)} MB`);\n // console.log(`Package has ${keyCount} labels`)\n // console.log(\"data\", data)\n }\n\n }\n\n return (\n // \n \n \n \n \n { isLoading\n ? \n : null\n }\n \n \n {\n\n // \n\n isOpen\n ? \n : !isLoading \n ? No Data\n : null\n }\n\n \n \n )\n}\n\n// key={props.refresh === false ? 0 : 1} \n\n// { isFirstLoad || data === undefined\n// ? \n// : Object.keys(data).length === 0 \n// ? null\n// : null\n// }\n\nconst NoDataText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n margin-left: 10px;\n padding-bottom: 10px;\n`;\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n width: 100%;\n margin-top: -16px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n margin-bottom: 15px;\n background: #0e1c36;\n border-radius: 10px;\n min-height: 68px;\n /* padding: 20px; */\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n`;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n /* line-height: 84.5%; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n height: 30px;\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`","export default __webpack_public_path__ + \"static/media/ic_status_green.fe162dc0.svg\";","export default __webpack_public_path__ + \"static/media/ic_property.d055c863.svg\";","\nimport React, { Component } from 'react';\nimport ReactApexChart from 'react-apexcharts'\nimport styled from \"styled-components\"\n\n\nexport default class TimeSeriesZoom extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n \n series: [{\n name: 'Total Views',\n data: generateDayWiseTimeSeries(0, 18)\n }, {\n name: 'Unique Views',\n data: generateDayWiseTimeSeries(1, 18)\n }],\n options: {\n chart: {\n type: \"area\",\n height: 300,\n foreColor: \"#999\",\n stacked: true,\n dropShadow: {\n enabled: true,\n enabledSeries: [0],\n top: -2,\n left: 2,\n blur: 5,\n opacity: 0.06\n }\n },\n colors: ['#00E396', '#0090FF'],\n stroke: {\n curve: \"smooth\",\n width: 3\n },\n dataLabels: {\n enabled: false\n },\n \n markers: {\n size: 0,\n strokeColor: \"#fff\",\n strokeWidth: 3,\n strokeOpacity: 1,\n fillOpacity: 1,\n hover: {\n size: 6\n }\n },\n xaxis: {\n type: \"datetime\",\n axisBorder: {\n show: false\n },\n axisTicks: {\n show: false\n }\n },\n yaxis: {\n labels: {\n offsetX: 14,\n offsetY: -5\n },\n tooltip: {\n enabled: true\n }\n },\n grid: {\n padding: {\n left: -5,\n right: 5\n }\n },\n tooltip: {\n x: {\n format: \"dd MMM yyyy\"\n },\n },\n legend: {\n position: 'top',\n horizontalAlign: 'left'\n },\n fill: {\n type: \"solid\",\n fillOpacity: 0.7\n }\n }\n } \n }\n \n\n render() {\n return (\n \n \n \n \n\n );\n }\n }\n // chatGPT\n function generateDayWiseTimeSeries(s, count) {\n var values = [ [4,3,10,9,29,19,25,9,12,7,19,5,13,9,17,2,7,5],\n [2,3,8,7,22,16,23,7,11,5,12,5,10,4,15,2,6,2]\n ];\n var series = [];\n var x = new Date(\"2023-01-01\").getTime();\n var dayInMs = 86400000;\n for (var i = 0; i < count; i++) {\n series.push([x, values[s][i]]);\n x += dayInMs;\n }\n return series;\n }\n\n // function generateDayWiseTimeSeries(s, count) {\n // var values = [[\n // 4,3,10,9,29,19,25,9,12,7,19,5,13,9,17,2,7,5\n // ], [\n // 2,3,8,7,22,16,23,7,11,5,12,5,10,4,15,2,6,2\n // ]];\n // var i = 0;\n // var series = [];\n // var x = new Date(\"11 Nov 2012\").getTime();\n // while (i < count) {\n // series.push([x, values[s][i]]);\n // x += 86400000;\n // i++;\n // }\n // return series;\n // }\n\n const Container = styled.div`\n display: flex;\n flex-direction: column;\n `;\n\n\n\n ","import React from 'react'\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../../styles/colors\"\nimport {FormatLabel} from \"./../../util/FormatLabel\"\n\nconst Card = styled.div`\n display: flex;\n flex-direction: column;\n background: #17253E;\n border-radius: 4px;\n max-width: 457px;\n padding-top: 21px;\n padding-bottom: 27px;\n padding-left: 31px;\n padding-right: 31px;\n margin-right: 18px;\n margin-bottom: 18px;\n`;\n\nconst CardHeader = styled.h3`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 22px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: #FFFFFF;\n`;\n\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n max-width: 1440px;\n ${media.lessThan(\"743px\")`\n `}\n `\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst ColumnContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n border-left: 2px solid #1A2B4A;\n padding-left: 12px;\n padding-top: 10px;\n padding-bottom: 10px;\n ${media.lessThan(\"743px\")`\n border-left: none;\n padding-left: 0px;\n `}\n`\n\nconst RowContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst TextContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n min-width: 116px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst TextContainer2 = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n min-width: 66px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Title = styled.h3`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n`\n\nconst Title2 = styled.h3`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n`\n\nconst InfoText = styled.h2`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 22px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText2 = styled.h2`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n`\n\nconst HhmmText = styled.h2`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 100;\n font-size: 14px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n`\n\nconst Line = styled.div`\n border: 1px solid #1A2B4A;\n`;\n\nconst CycleHeader = styled.h3`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.White};\n margin-bottom: 6px;\n`;\n\n\nexport default function Analytics(props) {\n\n const {analytics} = props\n\n const convertToTime = (milliseconds) => {\n const seconds = milliseconds / 1000\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = seconds % 60;\n const roundedSeconds = remainingSeconds.toFixed(0)\n \n if(hours === 0 && minutes === 0 && roundedSeconds != 0){\n return `>${hours.toString().padStart(2, '0') + ':'}${minutes.toString().padStart(2, '0')}`\n } else {\n return`${hours.toString().padStart(2, '0') + ':'}${minutes.toString().padStart(2, '0')}`\n }\n\n };\n\n return (\n \n \n {FormatLabel(analytics.label)}\n hh:mm\n \n {/* Cycle Count Row */}\n \n\n \n Cycle Count\n {analytics.cycle_count}\n \n\n \n Cycle On Time\n \n \n Min\n {convertToTime(analytics.min_cycle_on_time)}\n \n \n Avg\n {convertToTime(analytics.average_cycle_on_time)}\n \n \n Max\n {convertToTime(analytics.max_cycle_on_time)}\n \n \n Total\n {convertToTime(analytics.total_cycle_on_time)}\n \n \n \n\n \n\n \n {/* Avg. Cycle Time Row */}\n \n\n \n Avg. Cycle Time\n {convertToTime(analytics.average_cycle_time)}\n \n\n \n Cycle Off Time\n \n \n Min\n {convertToTime(analytics.min_cycle_off_time)}\n \n \n Avg\n {convertToTime(analytics.average_cycle_off_time)}\n \n \n Max\n {convertToTime(analytics.max_cycle_off_time)}\n \n \n Total\n {convertToTime(analytics.total_cycle_off_time)}\n \n \n \n\n \n\n \n )\n\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport IconLaunch from \"./../../../images/ic_launch_green.svg\"\nimport ImgGreen from \"./../../../images/ic_status_green.svg\"\nimport { Link } from \"react-router-dom\"\nimport { COLORS } from \"../../../styles/colors\"\nimport Analytics from \"../chart/Analytics\"\n\nconst NoDataText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n`;\n\nexport default function AnalyticsModuleUI(props) {\n\n return (\n \n \n {\n props.analyticData && props.analyticData.length > 0 \n ? {`${props.label} Analytics`}\n : null\n }\n \n \n {props.analyticData && props.analyticData.length > 0 ? (\n props.analyticData.map((analytics, index) => {\n if (analytics.label !== \"adjusted_time\") {\n return ;\n }\n return null;\n })\n ) : (\n No Data\n )}\n \n\n\n\n \n \n )\n}\n\n\n\n const OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n /* height: 300px; */\n `\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n /* margin-bottom: 21px; */\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n /* margin-right: 0px; */\n `}\n`\n\nconst WidgetContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n width: 100%;\n align-items: center;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n `}\n`\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 20px;\n`\n\nconst EmptyText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`;\n","import React, { useEffect, useState } from 'react';\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport * as am5 from \"@amcharts/amcharts5\";\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\nimport { COLORS } from \"./../../../styles/colors\"\nimport am5themes_Animated from \"@amcharts/amcharts5/themes/Animated\";\nimport { Switch } from 'react-router-dom';\n\n\nvar groupIntervals = [\n { timeUnit: \"millisecond\", count: 1 },\n { timeUnit: \"millisecond\", count: 10 },\n { timeUnit: \"millisecond\", count: 100 },\n { timeUnit: \"second\", count: 1 },\n { timeUnit: \"second\", count: 10 },\n\n { timeUnit: \"minute\", count: 1 }, \n { timeUnit: \"minute\", count: 5 }, \n { timeUnit: \"minute\", count: 10 },\n { timeUnit: \"minute\", count: 15 }, \n\n { timeUnit: \"hour\", count: 1 },\n { timeUnit: \"day\", count: 1 },\n { timeUnit: \"week\", count: 1 },\n { timeUnit: \"month\", count: 1 },\n { timeUnit: \"year\", count: 1 }\n]\n\n\n\nconst oldChartLineColors = [\n \"#63C085\", // green light\n \"#4AB2FB\", // blue light\n \"#7D5EA8\", // purple light\n \"#FBAC21\", // yellow light\n \"#F15C5D\", // red light\n \"#3F7754\", // green med\n \"#32678C\", // blue med\n \"#5D477B\", // purple med\n \"#B87F1A\", // yellow med\n \"#862424\", // red med\n \"#2C4736\", // green dark\n \"#1D3140\", // blue dark\n \"#3498db\", // dodger blue\n \"#9b59b6\", // medium purple\n \"#34495e\", // dark slate gray\n \"#f1c40f\", // highlighter yellow\n \"#e74c3c\", // watermelon red\n \"#95a5a6\", // storm cloud gray\n \"#ecf0f1\", // platinum gray\n \"#16a085\" // dark cyan green\n];\n\nconst chartLineColors = [\n am5.color(\"#63C085\"), // green light\n am5.color(\"#4AB2FB\"), // blue light\n am5.color(\"#7D5EA8\"), // purple light\n am5.color(\"#FBAC21\"), // yellow light\n am5.color(\"#F15C5D\"), // red light\n am5.color(\"#3F7754\"), // green med\n am5.color(\"#32678C\"), // blue med\n am5.color(\"#5D477B\"), // purple med\n am5.color(\"#B87F1A\"), // yellow med\n am5.color(\"#862424\"), // red med\n am5.color(\"#2C4736\"), // green dark\n am5.color(\"#1D3140\"), // blue dark\n am5.color(\"#3498db\"), // dodger blue \n am5.color(\"#9b59b6\"), // medium purple\n am5.color(\"#34495e\"), // dark slate gray\n am5.color(\"#f1c40f\"), // highlighter yellow\n am5.color(\"#e74c3c\"), // watermelon red\n am5.color(\"#95a5a6\"), // storm cloud gray\n am5.color(\"#ecf0f1\"), // platinum gray\n am5.color(\"#16a085\"), // dark cyan green\n]\n\nexport default function TimeSeriesAMChart(props) {\n\n \n const [chart1, setChart1] = useState()\n const [root1, setRoot1] = useState()\n const [XAxis1, setXAxis1] = useState()\n const [YAxis1, setYAxis1] = useState()\n const [rightYAxis1, setRightYAxis1] = useState()\n const [state1, setState1] = useState({scrollbar: null, sbxAxis: null, sbyAxis: null})\n \n const [chart2, setChart2] = useState()\n const [root2, setRoot2] = useState()\n const [XAxis2, setXAxis2] = useState()\n const [YAxis2, setYAxis2] = useState()\n const [rightYAxis2, setRightYAxis2] = useState()\n const [state2, setState2] = useState({scrollbar: null, sbxAxis: null, sbyAxis: null})\n \n const [chart3, setChart3] = useState()\n const [root3, setRoot3] = useState()\n const [XAxis3, setXAxis3] = useState()\n const [YAxis3, setYAxis3] = useState()\n const [rightYAxis3, setRightYAxis3] = useState()\n const [state3, setState3] = useState({scrollbar: null, sbxAxis: null, sbyAxis: null})\n\n const fps = 100 // Frames Per Second -> The smaller the number, the less resources charts will use, at the expense of smoothness of animations\n\n useEffect(() => {\n // setRoot1()\n // setRoot2()\n // setRoot3()\n\n function createChart(id) {\n // console.log(\"START CREATE CHART \", id)\n var root = am5.Root.new(`chart${props.id}${id}`); \n\n // https://www.amcharts.com/docs/v5/concepts/themes/\n root.setThemes([am5themes_Animated.new(root)]);\n \n \n // root.fps = fps; // SET FRAMES PER SECOND\n\n // // https://www.amcharts.com/docs/v5/charts/stock-chart/#Instantiating_the_chart\n var chart = root.container.children.push(\n am5xy.XYChart.new(root, {\n panX: false,\n panY: false,\n // wheelX: \"panX\",;\n // wheelY: \"zoomXY\", // zoomXY at same time\n maxTooltipDistanceBy: \"y\",\n pinchZoomX:true,\n arrangeTooltips: true\n })\n );\n\n var title = ''\n\n if(id == 1){\n title = `${props.label} Temperatures`\n } else if(id == 2){\n title = `${props.label} Pumps`\n } else if(id == 3){\n title = `${props.label} States`\n } \n\n chart.children.unshift(am5.Label.new(root, {\n text: title,\n fontSize: 28,\n fill: `${COLORS.White}`,\n fontWeight: \"400\",\n textAlign: \"left\",\n fontFamily: 'Blinker',\n fontStyle: 'normal',\n x: am5.percent(0),\n centerX: am5.percent(0),\n // y: am5.percent(50),\n centerY: am5.percent(70),\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: -10\n }));\n\n const axisTheme = am5.Theme.new(root);\n axisTheme.rule(\"AxisLabel\").setAll({\n fill: am5.color(COLORS.HighlightLight),\n fontSize: \"10px\",\n fontFamily: \"Roboto Condensed\",\n fontWeight: \"400\",\n });\n root.setThemes([\n axisTheme\n ]);\n\n // Added for advanced zoom functionality \n let cursor = chart.set(\"cursor\", am5xy.XYCursor.new(root, {\n behavior: \"zoomX\"\n }));\n cursor.lineX.set(\"visible\", true);\n cursor.lineY.set(\"visible\", true);\n \n // // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/\n root.numberFormatter.set(\"numberFormat\", \"#,###.00\");\n\n // https://www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/\n let scrollbar = am5xy.XYChartScrollbar.new(root, {\n orientation: \"horizontal\",\n height: 40,\n marginTop: 20,\n });\n\n chart.set(\"scrollbarX\", scrollbar);\n scrollbar.startGrip.set(\"scale\", 0.8);\n scrollbar.endGrip.set(\"scale\", 0.8);\n\n scrollbar.get(\"background\").setAll({\n // fill: am5.color(0x000000),\n fillOpacity: 0.1,\n cornerRadiusTR: 5,\n cornerRadiusBR: 5,\n cornerRadiusTL: 5,\n cornerRadiusBL: 5\n });\n\n //----------------------Aggregating for snapshot needed??\n let sbxAxis = scrollbar.chart.xAxes.push(\n am5xy.DateAxis.new(root, {\n groupData: true,\n groupCount: 2500,\n baseInterval: { timeUnit: \"second\", count: 1 },\n groupIntervals: groupIntervals,\n renderer: am5xy.AxisRendererX.new(root, {\n opposite: false,\n strokeOpacity: 0\n })\n })\n );\n\n let sbyAxis = scrollbar.chart.yAxes.push(\n am5xy.ValueAxis.new(root, {\n renderer: am5xy.AxisRendererY.new(root, {})\n })\n );\n\n\n //--------Aggregating by library wired up here\n var xAxis = chart.xAxes.push(am5xy.DateAxis.new(root, {\n // maxDeviation: 0.2,\n // https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping // Aggregation\n groupData: true,\n groupCount: 2500,\n baseInterval: { timeUnit: \"second\", count: 1 },\n groupIntervals: groupIntervals,\n strokeOpacity: 0.0,\n strokeWidth: 2,\n renderer: am5xy.AxisRendererX.new(root, {}),\n tooltip: am5.Tooltip.new(root, {\n // fill: am5.color(COLORS.HighlightLight),\n fontSize: \"0.938\",\n // fontFamily: \"Roboto Condensed\",\n // fontWeight: \"400\",\n })\n }));\n \n var yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {\n renderer: am5xy.AxisRendererY.new(root, {}),\n }));\n\n yAxis.set('width', 35)\n\n // Create the right Y-axis for the second data type\n let rightYAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {\n renderer: am5xy.AxisRendererY.new(root, { opposite: true }) // Set to true to draw the axis on the opposite side\n }));\n\n // rightYAxis.set('width', 160)\n\n\n if(id !== 2){\n rightYAxis.get(\"renderer\").labels.template.adapters.add(\"html\", function(html, target) {\n return \"
20
\";\n });\n }\n\n // Make a single empty line for setup config -- figure out how to not need to do this\n var series = chart.series.push(\n am5xy.LineSeries.new(root, {\n name: \"Series\",\n xAxis: xAxis,\n yAxis: yAxis,\n valueYField: \"value\",\n valueXField: \"date\",\n minDistance: 0\n }));\n\n series.data.setAll([]);\n\n // Animation\n series.appear(1000);\n chart.appear(1000, 100);\n\n // scrollbar.disabled = true // hide scrollbar? Not working\n\n // --------------------------- Set up syncing\n xAxis.on(\"start\", function() {\n syncAxes(chart);\n });\n xAxis.on(\"end\", function() {\n syncAxes(chart);\n });\n\n if(id == 1){\n setState1({scrollbar: scrollbar, sbxAxis: sbxAxis, sbyAxis: sbyAxis})\n setXAxis1(xAxis)\n setYAxis1(yAxis)\n setRightYAxis1(rightYAxis)\n setRoot1(root) \n setChart1(chart) \n } else if(id == 2){\n setState2({scrollbar: scrollbar, sbxAxis: sbxAxis, sbyAxis: sbyAxis})\n setXAxis2(xAxis)\n setYAxis2(yAxis)\n setRightYAxis2(rightYAxis)\n setRoot2(root) \n setChart2(chart) \n } else if (id == 3){\n setState3({scrollbar: scrollbar, sbxAxis: sbxAxis, sbyAxis: sbyAxis})\n setXAxis3(xAxis)\n setYAxis3(yAxis)\n setRightYAxis3(rightYAxis)\n setRoot3(root) \n setChart3(chart) \n } \n // console.log(\"END CREATE CHART \", id)\n return chart\n\n } // End method\n\n am5.addLicense(process.env.REACT_APP_AMCHARTS5_KEY);\n\n var chartsToSync = [];\n chartsToSync.push(createChart(1));\n chartsToSync.push(createChart(2));\n chartsToSync.push(createChart(3));\n\n am5.array.each(chartsToSync, function(sourceChart) {\n var syncCursors = [];\n am5.array.each(chartsToSync, function(targetChart) {\n if (targetChart !== sourceChart) {\n syncCursors.push(targetChart.get(\"cursor\"));\n }\n });\n sourceChart.get(\"cursor\").set(\"syncWith\", syncCursors);\n });\n \n // LINKED ZOOM\n function syncAxes(targetChart) {\n var targetAxis = targetChart.xAxes.getIndex(0);\n if (targetAxis._skipSync != true) {\n var start = targetAxis.get(\"start\");\n var end = targetAxis.get(\"end\");\n am5.array.each(chartsToSync, function(chart) {\n if (chart != targetChart) {\n var axis = chart.xAxes.getIndex(0);\n axis._skipSync = true;\n axis.setAll({\n start: start,\n end: end\n })\n axis._skipSync = false;\n }\n });\n }\n }\n }, []);\n\n useEffect(() => { \n return () => {\n if(root1 !== undefined){\n // console.log(\"ROOT 1 DISPOSED\")\n root1.dispose()\n chart1.dispose()\n setState1({scrollbar: null, sbxAxis: null, sbyAxis: null})\n setChart1()\n setRoot1()\n setXAxis1()\n setYAxis1()\n setRightYAxis1()\n }\n };\n }, [root1]);\n\n useEffect(() => { \n return () => {\n if(root2 !== undefined){\n // console.log(\"ROOT 2 DISPOSED\")\n root2.dispose()\n chart2.dispose()\n setState2({scrollbar: null, sbxAxis: null, sbyAxis: null})\n setChart2()\n setRoot2()\n setXAxis2()\n setYAxis2()\n setRightYAxis2()\n }\n };\n }, [root2]);\n\n useEffect(() => { \n return () => {\n if(root3 !== undefined){ \n // console.log(\"ROOT 3 DISPOSED\")\n setState3({scrollbar: null, sbxAxis: null, sbyAxis: null})\n root3.dispose()\n chart3.dispose()\n setChart3()\n setRoot3()\n setXAxis3()\n setYAxis3()\n setRightYAxis3()\n }\n };\n }, [root3]);\n // Reference Docs for linking Tooltip and Zoom\n // https://www.amcharts.com/docs/v5/tutorials/syncing-axis-zooms-across-multiple-charts/\n // https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/\n\n\n //------------------------------------------DATA LOAD\n\n useEffect(() => {\n if(props.temperatureData != undefined && props.temperatureData != null && chart1 != undefined && chart1 != null){\n if(props.temperatureData.length > 0){\n // printDates(props.temperatureData, \"Temperature Data\")\n // console.log(\"Temperature Data----->\", props.temperatureData)\n loadChart(1, props.temperatureData, root1, chart1, XAxis1, YAxis1, state1.scrollbar, state1.sbxAxis, state1.sbyAxis, 'Temperature (°F)')\n // chart1.xAxes.getIndex(0).zoom({ start: 0, end: 1});\n \n }\n } \n }, [props.temperatureData])\n\n useEffect(() => {\n if(props.currentPressureData != undefined && props.currentPressureData != null && chart2 != undefined && chart2 != null){\n if(props.currentPressureData.length > 0){\n // printDates(props.currentPressureData, \"Current Pressure Data\")\n loadChart(2, props.currentPressureData, root2, chart2, XAxis2, YAxis2, state2.scrollbar, state2.sbxAxis, state2.sbyAxis, 'Pressure (PSI)')\n }\n } \n }, [props.currentPressureData])\n\n useEffect(() => {\n if(props.stateData != undefined && props.stateData != null && chart3 != undefined && chart3 != null){\n if(props.stateData.length > 0){\n // printDates(props.stateData, \"State Data\")\n loadChart(3, props.stateData, root3, chart3, XAxis3, YAxis3, state3.scrollbar, state3.sbxAxis, state3.sbyAxis, 'State (ON/OFF)')\n }\n } \n }, [props.stateData])\n\n\n const loadChart = (id, data, root, chart, XAxis, YAxis, scrollbar, sbxAxis, sbyAxis, yLabel) => {\n\n if(chart && data){\n // console.log(\"START LOAD CHART \", id)\n chart.zoomOut()\n const oldDataSets = chart.series.values\n\n if(oldDataSets.length !== 0){\n do {\n chart.series.removeIndex(0).dispose();\n }\n while (oldDataSets.length !== 0); \n }\n\n //--------------------------------------------------------Toggle timeZone\n // root.timezone = am5.Timezone.new(props.timeZone); // Adds way to much latency\n // root.utc = true\n\n YAxis.children.push(am5.Label.new(root, {\n text: yLabel,\n rotation: -90, // Rotate the label by -90 degrees\n x: am5.percent(-20),\n y: am5.percent(50),\n centerX: am5.percent(50),\n centerY: am5.percent(50),\n fontWeight: \"300\",\n fontSize: 12,\n fontFamily: 'Roboto Condensed',\n fill: am5.color(COLORS.HighlightLight) \n }));\n\n if(id == 1){\n rightYAxis1.children.push(am5.Label.new(root, {\n text: yLabel,\n rotation: -90, // Rotate the label by -90 degrees\n x: am5.percent(-20),\n y: am5.percent(50), // Adjust right label here?\n centerX: am5.percent(50),\n centerY: am5.percent(50),\n fontWeight: \"300\",\n fontSize: 12,\n fontFamily: 'Roboto Condensed',\n fill: am5.color(COLORS.TileBlue) \n }));\n }\n\n if(id == 2){\n rightYAxis2.children.push(am5.Label.new(root, {\n text: \"Current (Amps)\",\n rotation: -90, // Rotate the label by -90 degrees\n x: am5.percent(-20),\n y: am5.percent(50), // Adjust right label here?\n centerX: am5.percent(50),\n centerY: am5.percent(50),\n fontWeight: \"300\",\n fontSize: 12,\n fontFamily: 'Roboto Condensed',\n fill: am5.color(COLORS.HighlightLight) \n }));\n }\n\n if(id == 3){\n rightYAxis3.children.push(am5.Label.new(root, {\n text: yLabel,\n rotation: -90, // Rotate the label by -90 degrees\n x: am5.percent(-20),\n y: am5.percent(50), // Adjust right label here?\n centerX: am5.percent(50),\n centerY: am5.percent(50),\n fontWeight: \"300\",\n fontSize: 12,\n fontFamily: 'Roboto Condensed',\n fill: am5.color(COLORS.TileBlue) \n }));\n }\n\n // console.log(\"chartData\", data)\n\n if(id === 1){\n //temp\n let yAxis = chart.yAxes.getIndex(0);\n let yAxis2 = chart.yAxes.getIndex(1);\n\n let temperatureMin = 50\n let temperatureMax = 210\n let minMaxTemperature = findMinMax(data, 'Temperature')\n\n if(minMaxTemperature.min !== Infinity){\n if(minMaxTemperature.min < temperatureMin){\n temperatureMin = minMaxTemperature.min\n }\n }\n if(minMaxTemperature.max !== Infinity && minMaxTemperature.max !== -Infinity && minMaxTemperature.min !== minMaxTemperature.max ){\n if(minMaxTemperature.max > temperatureMax){\n temperatureMax = minMaxTemperature.max\n }\n }\n\n // console.log(\"TempMinMax\", temperatureMin, temperatureMax)\n yAxis.set(\"extraMin\", 0);\n yAxis.set(\"extraMax\", 0);\n yAxis.set(\"min\", temperatureMin);\n yAxis.set(\"max\", temperatureMax);\n yAxis.set(\"strictMinMax\", true)\n\n yAxis2.set(\"min\", 0);\n yAxis2.set(\"max\", 20);\n yAxis2.set(\"fill\", am5.color(COLORS.TileBlue))\n } else if(id === 2){\n let yAxis = chart.yAxes.getIndex(0);\n let yAxis2 = chart.yAxes.getIndex(1);\n\n //------------------------------------\n\n let pressureMin = 0\n let pressureMax = 60\n let minMaxPressure = findMinMax(data, 'Pressure')\n\n if(minMaxPressure.min !== Infinity){\n if(minMaxPressure.min < pressureMin){\n pressureMin = minMaxPressure.min\n }\n }\n if(minMaxPressure.max !== Infinity && minMaxPressure.max !== -Infinity && minMaxPressure.min !== minMaxPressure.max ){\n if(minMaxPressure.max > pressureMax){\n pressureMax = minMaxPressure.max\n }\n }\n\n // console.log(\"PressureMinMax\", pressureMin, pressureMax)\n yAxis.set(\"extraMin\", 0);\n yAxis.set(\"extraMax\", 0);\n yAxis.set(\"min\", pressureMin);\n yAxis.set(\"max\", pressureMax);\n yAxis.set(\"strictMinMax\", true)\n\n //-----------------------------------\n let currentMin = 0\n let currentMax = 20\n let minMaxCurrent = findMinMax(data, 'Current')\n\n if(minMaxCurrent.min !== Infinity){\n if(minMaxCurrent.min < currentMin){\n currentMin = minMaxCurrent.min\n }\n }\n if(minMaxCurrent.max !== Infinity && minMaxCurrent.max !== -Infinity && minMaxCurrent.min !== minMaxCurrent.max ){\n if(minMaxCurrent.max > currentMax){\n currentMax = minMaxCurrent.max\n }\n }\n\n // console.log(\"CurrentMinMax\", currentMin, currentMax)\n yAxis2.set(\"extraMin\", 0);\n yAxis2.set(\"extraMax\", 0);\n yAxis2.set(\"min\", currentMin);\n yAxis2.set(\"max\", currentMax); \n yAxis.set(\"strictMinMax\", true)\n //------------------------------------\n \n } else if (id === 3){\n let yAxis = chart.yAxes.getIndex(0);\n let yAxis2 = chart.yAxes.getIndex(1);\n // Changes State Chart Y-Axis to OFF/ON\n yAxis.get(\"renderer\").labels.template.adapters.add(\"text\", function(text, target) {\n if (target.dataItem) {\n // Use exact comparison for 0 and 1 to avoid rounding issues\n let value = target.dataItem.get(\"value\");\n if (value === 1) {\n return \"ON\";\n } else if (value === 0) {\n return \"OFF\";\n }\n }\n // Return the original text for other values\n return \"\";\n });\n\n yAxis.set(\"min\", 0);\n yAxis.set(\"max\", 1); \n yAxis2.set(\"min\", 0);\n yAxis2.set(\"max\", 20);\n yAxis.set(\"strictMinMax\", true);\n } \n\n const scrollbarSeries = scrollbar.chart.series.values;\n\n for (var i = scrollbarSeries.length - 1; i >= 0; i--) {\n if (i !== 0) { // Assuming you want to keep the first series\n scrollbarSeries[i].dispose(); // Dispose the series\n }\n }\n\n const chartLabels = chart.bottomAxesContainer.children\n\n for (var i = 0; i < chartLabels.length; i++) {\n if(i != 0){\n chart.bottomAxesContainer.children.removeIndex(i).dispose();\n }\n }\n\n // To get consistent colors\n const colors = chartLineColors.slice(0, data.length); \n chart.get(\"colors\").set(\"colors\", colors);\n\n const getUnits = () => {\n\n var label = ''\n\n if(id == 1){\n label = \"\\u00b0F\"\n } else if (id == 2){\n label = \"Amps\"\n } else if (id == 3){\n label = \"\"\n } else {\n label = ''\n }\n return label \n }\n\n var dataSeries = []\n\n for (var i = 0; i < data.length; i++) {\n\n var series = null\n\n if(id === 3){\n\n series = chart.series.push(\n\n am5xy.StepLineSeries.new(root, {\n name: data[i].name,\n xAxis: XAxis,\n yAxis: id == 2 && data[i].name.includes('Current') ? rightYAxis2 : YAxis,\n valueYField: \"value\",\n valueXField: \"date\",\n minDistance: 1,\n // fill: am5.color(0xabcdef),\n // locationX: 0.75,\n // legendValueText: `{valueY} \\u2103`,\n tooltip: am5.Tooltip.new(root, {\n labelText: `{valueY} ${getUnits()}`,\n pointerOrientation: \"horizontal\",\n showTooltipOn: \"click\"\n // fontSize: 12,\n // fontWeight: \"400\",\n // fill: am5.color(COLORS.HighlightLight),\n // fontFamily: \"Roboto Condensed\",\n // labelText: \"[bold]{name}[/]\\n{valueX.formatDate()}: {valueY}\"\n })\n }));\n\n series.fills.template.setAll({\n fill: series.get(\"stroke\"),\n fillOpacity: 1.0, \n visible: true\n })\n\n } else {\n series = chart.series.push(\n\n am5xy.LineSeries.new(root, {\n name: data[i].name,\n xAxis: XAxis,\n yAxis: id == 2 && data[i].name.includes('Current') ? rightYAxis2 : YAxis,\n valueYField: \"value\",\n valueXField: \"date\",\n minDistance: 1,\n // legendValueText: `{valueY} \\u2103`,\n tooltip: am5.Tooltip.new(root, {\n labelText: `{valueY} ${getUnits()}`,\n pointerOrientation: \"horizontal\",\n showTooltipOn: \"click\"\n // fontSize: 12,\n // fontWeight: \"400\",\n // fill: am5.color(COLORS.HighlightLight),\n // fontFamily: \"Roboto Condensed\",\n // labelText: \"[bold]{name}[/]\\n{valueX.formatDate()}: {valueY}\"\n })\n }));\n }\n\n dataSeries.push(series)\n // console.log(\"dataSeries count\", dataSeries.length)\n\n // Custom tooltip detailing\n if(id == 2){\n if(data[i].name.includes('Pressure')){\n series.get(\"tooltip\").label.adapters.add(\"text\", function(text, target) {\n if (target.dataItem) {\n let value = target.dataItem.get(\"valueY\");\n return `${value} PSI`;\n }\n return text;\n });\n } else {\n series.get(\"tooltip\").label.adapters.add(\"text\", function(text, target) {\n if (target.dataItem) {\n let value = target.dataItem.get(\"valueY\");\n return `${value} Amps`;\n }\n return text;\n });\n }\n } else if(id === 3){ \n series.get(\"tooltip\").label.adapters.add(\"text\", function(text, target, key) {\n if (target.dataItem && target.dataItem.dataContext) {\n let value = target.dataItem.dataContext.value;\n let newText = value === 1 ? \"ON\" : \"OFF\";\n text = text.replace(\"{valueY}\", newText);\n }\n return text;\n });\n } \n\n // chart.get(\"colors\").set(\"background\", [\n // am5.color(\"#63C085\"), // green light\n // ]);\n \n var localData = data[i].data // full \n var updatedData = {}\n\n \n updatedData = transformData(localData); \n series.data.setAll(updatedData);\n\n //-------------------------------------------Load Scrollbar with data\n let scrollBarData = scrollbar.chart.series.push(\n am5xy.LineSeries.new(root, {\n xAxis: sbxAxis,\n yAxis: sbyAxis,\n valueYField: \"value\",\n valueXField: \"date\",\n })\n );\n\n scrollBarData.data.setAll(updatedData);;\n }\n\n // Zoom chart all the way out\n chart.zoomOut()\n \n // Tooltip to jump between points\n chart.get(\"cursor\").set(\"xAxis\", XAxis);\n chart.get(\"cursor\").set(\"snapToSeriesBy\", \"x\");\n\n if(dataSeries.length != 0){\n chart.get(\"cursor\").set(\"snapToSeries\", [dataSeries[0]]);\n }\n\n if(id != 1){\n scrollbar.set('visible', false)\n } \n\n\n //----------\n\n let legend = chart.bottomAxesContainer.children.push(am5.Legend.new(root, {\n visible: true,\n paddingTop: 0,\n paddingTop: 10,\n useDefaultMarker: true,\n x: am5.percent(0),\n centerX: am5.percent(0),\n centerY: am5.percent(70),\n }));\n legend.data.setAll(chart.series.values);\n legend.valueLabels.template.set(\"forceHidden\", true);\n\n // Some legend styling\n legend.labels.template.setAll({\n fontSize: 15,\n fill: am5.color(COLORS.White),\n fontFamily: \"Roboto Condensed\",\n fontWeight: \"500\",\n });\n\n // console.log(\"END LOAD CHART \", id)\n\n props.chartLoaded(id)\n } \n } \n\n // TODO: Round up to nearest decimal\n function transformData(data) {\n return data.map(([date, value]) => ({\n date,\n value\n }));\n }\n\n function findMinMax(data, label){\n\n let lowestMin = Number.POSITIVE_INFINITY; // Start with the highest possible number\n let highestMax = Number.NEGATIVE_INFINITY; // Start with the lowest possible number\n\n data.forEach(item => {\n if(item.name.includes(label)){\n if (item.min < lowestMin) {\n lowestMin = item.min; // Update lowestMin if the current item's min is lower\n }\n if (item.max > highestMax) {\n highestMax = item.max; // Update highestMax if the current item's max is higher\n }\n }\n });\n\n lowestMin = Math.floor(lowestMin / 10) * 10;\n highestMax = Math.ceil(highestMax / 10) * 10;\n\n return {\n min: lowestMin,\n max: highestMax\n }\n }\n \n return (\n
\n {\n props.temperatureData ?\n 0 ? 'block' : 'none'}}>\n
\n
\n : null\n }\n\n {\n props.currentPressureData && props.temperatureData ?\n 0 ? 'block' : 'none'}}>\n
\n
\n : null\n }\n\n {\n props.stateData ? \n 0 ? 'block' : 'none'}}>\n
\n
\n : null\n }\n\n\n
\n );\n}\n\nconst Card = styled.div`\n/* border: 1px red dashed; */\ndisplay: flex;\nflex-direction: column;\nbackground: #17253E;\nborder-radius: 4px;\npadding: 20px;\nmargin-bottom: 20px;\npadding-bottom: 10px;\nmargin-right: 20px;\n/* margin-top: 33px; */\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../../styles/colors\"\nimport TimeSeriesZoom from \"../chart/TimeSeriesZoom\"\nimport { SpinnerContainer, StyledSpinner } from \"./../../custom/Spinner\"\nimport {FormatLabel} from \"../../util/FormatLabel\"\nimport AnalyticsModuleUI from \"./AnalyticsModuleUI\"\n\nimport TimeSeriesAMChart from \"../chart/TimeSeriesAMChart\"\n\nexport default function TimeSeriesAMChartsUI(props) {\n\n const [temperatureData, setTemperatureData] = useState([])\n const [currentPressureData, setCurrentPressureData] = useState([])\n const [chartStateData, setChartStateData] = useState([])\n\n // FULL CHART DATA\n useEffect(() => {\n // console.log(\"START PROCESS TEMP PRESS CURRENT CHART DATA\")\n const temperatureSets = []\n const currentPressureSets = []\n\n if(props.data !== undefined && props.data !== null ){\n const dataLabels = Object.keys(props.data)\n\n\n // // For logging\n // if(props.data[dataLabels[0]] !== undefined){\n // if (props.incrementTime !== 2419200 && props.incrementTime !== 1209600 && props.incrementTime !== 0){\n // var dataLength = props.data[dataLabels[0]].length\n // console.log(\"FIRST RETURN DATA\", new Date(props.data[dataLabels[0]][dataLength - 1][0]))\n // console.log(\"LAST RETURN DATA\", new Date(props.data[dataLabels[0]][0][0]))\n // } else {\n // var dataLength = props.data[dataLabels[0]].length\n // console.log(\"FIRST RETURN DATA\", new Date(props.data[dataLabels[0]][0][0]))\n // console.log(\"LAST RETURN DATA\", new Date(props.data[dataLabels[0]][dataLength - 1][0]))\n // }\n // }\n \n dataLabels.forEach((label)=>{\n\n const dataSet = {\n name: FormatLabel(label),\n data: props.incrementTime !== 2419200 && props.incrementTime !== 1209600 && props.incrementTime !== 0 ? props.data[label].reverse() : props.data[label]\n }\n\n var minMax = dataSet.data.shift()\n\n if(minMax != null){\n dataSet.min = minMax[0]\n dataSet.max = minMax[1]\n }\n\n if(label.includes('Pressure') || label.includes('Current')){\n currentPressureSets.push(dataSet)\n } else {\n temperatureSets.push(dataSet)\n }\n\n })\n }\n\n const sortedTemps = sortByLabel(temperatureSets)\n const sortedCurrentPressure = sortByLabel(currentPressureSets)\n\n // if(sortedTemps[0] !== null && sortedTemps[0] !== undefined && sortedCurrentPressure[0] !== null && sortedCurrentPressure[0] !== undefined){\n // setTemperatureData([sortedTemps[0]])\n // setCurrentPressureData([sortedCurrentPressure[0]])\n // } else {\n setTemperatureData(sortedTemps)\n setCurrentPressureData(sortedCurrentPressure)\n // }\n\n\n // console.log(\"END PROCESS TEMP PRESS CURR CHART DATA\")\n }, [props.data]) \n\n // FULL STATE DATA \n useEffect(() => {\n\n const dataSets = []\n\n if(props.stateData !== undefined && props.stateData !== null ){\n // console.log(\"START PROCESS STATE CHART DATA\")\n const dataLabels = Object.keys(props.stateData)\n \n dataLabels.forEach((label)=>{\n\n const dataSet = {\n name: FormatLabel(label),\n data: props.incrementTime !== 2419200 && props.incrementTime !== 1209600 && props.incrementTime !== 0 ? props.stateData[label].reverse() : props.stateData[label]\n }\n\n dataSet.data.shift() // remove first item minMax [null, null]\n dataSets.push(dataSet)\n })\n }\n \n const sortedStats = sortByLabel(dataSets)\n \n setChartStateData(sortedStats)\n // console.log(\"END PROCESS STATE CHART DATA\")\n }, [props.stateData]) \n\n\n const sortByLabel = (arr) => {\n return arr.sort((a, b) => {\n const propA = a['name'].toLowerCase();\n const propB = b['name'].toLowerCase();\n if (propA < propB) {\n return -1;\n }\n if (propA > propB) {\n return 1;\n }\n return 0;\n });\n }\n \n return (\n \n \n\n \n\n \n \n \n \n )\n}\n\n\n const OuterContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-left: 20px;\n `\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n margin-bottom: 21px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst EmptyText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`;\n\nconst ModeText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.ErrorOrange};\n padding-top: 10px;\n padding-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n max-width: 95%;\n text-wrap: wrap;\n text-align: center;\n\n `}\n`\n","module.exports = global.config = {\n PROD_MODE: false \n};\n\n// Toggle PROD/DEV manually in Auth / Endpoints, UserPool","export const COLORS = {\n Base : \"#041129\",\n Primary : \"#0A1934\",\n Secondary : \"#1A2B4A\", \n HighlightDark : \"#1A2740\",\n HighlightMedium : \"#4C628C\",\n HighlightLight : \"#A1ADC2\",\n White: \"#FFFFFF\",\n ErrorOrange: \"#F15C5D\",\n GreyUnavailable: \"#B6B6B6\",\n Green: \"#63C085\",\n Red: \"#FF0000\",\n TileBlue: \"#15223F\"\n}","export default __webpack_public_path__ + \"static/media/ic_arrow_right_white.b9d287fb.svg\";","export default __webpack_public_path__ + \"static/media/ic_arrow_down_white.2c7e458d.svg\";","/**\n * List of endpoints available to the React app. Unauthenticated endpoints are available to use\n * without authorization. Authenticated endpoints require a Bearer token to be passed in the header,\n * for example:\n *\n * import { API, Auth } from \"aws-amplify\"\n * ...\n * const jwtToken = (await Auth.currentSession()).getIdToken().getJwtToken()\n * API.get(\"FrontendAPI-dashboards\", \"\", {\n * headers: { Authorization: `Bearer ${jwtToken}` }\n * })\n *\n * See examples/ for example responses\n */\n\n\nconst endpoints = [\n // ==== Unauthenticated endpoints ====\n {\n name: \"FrontendAPI-users\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/users`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n {\n name: \"FrontendAPI-schema\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/wingnuts/schema`,\n },\n // ===== Authenticated endpoints =====\n /**\n * Dashboards endpoint for fetching dashboards. List of available routes:\n *\n * - GET /v1/dashboards - returns a list of dashboard IDs\n * - GET /v1/dashboards/{UUID} - returns an embed URL for the specified UUID if the user has\n * permissions to view the dashboard.\n * * Required - 2 query string parameters\n * * jwtToken - the JWT token used to authenticate\n * * payloadSub - the payload sub of the ID token of the current session from\n * (await Auth.currentSession()).getIdToken().payload.sub\n */\n {\n name: \"FrontendAPI-dashboards\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/dashboards`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n /**\n * Properties endpoint for fetching and updating properties. List of available routes:\n * - GET /v1/properties - returns a list of properties and their linked wingnuts\n * - GET /v1/properties/{UUID} - returns details for the specified UUID\n * - POST /v1/properties - creates a new property\n * * Request - {\n * externalId: String,\n * config: {\n * name: String,\n * address: String,\n * assets: {}, // Unused for now\n * portfolio: String\n * }\n * }\n * - POST /v1/properties/{UUID} - updates an existing property\n * * Request - {\n * externalId: String,\n * config: {\n * name: String,\n * address: String,\n * assets: {}, // Unused for now\n * portfolio: String\n * }\n * }\n * - DELETE /v1/properties{UUID} - removes an existing property\n * * Not yet implemented\n */\n\n {\n name: \"FrontendAPI-properties\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/properties`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n /**\n * Wingnuts endpoint for fetching and updating wingnuts. List of available routes:\n *\n * - GET /v1/wingnuts - returns a list of wingnuts and their properties\n * - GET /v1/wingnuts/{UUID} - returns wingnut details and its property if the user has access\n * - POST /v1/wingnuts - adds a wingnut to the user's company\n * * Request - {\n * wingnutId: String // UUID of wingnut\n * }\n * - POST /v1/wingnuts/{UUID} - updates fields of a wingnut\n * * Request - {\n * alarmsEnabled: Boolean,\n * sensors: {\n * String: { // Key is the name of the input, e.g. \"AN1\"\n * label: String,\n * type: String,\n * alarmEnabled: Boolean,\n * alarmThresholds: [{\n * type: String,\n * value: Float\n * }]\n * }\n * }\n * }\n * - POST /v1/wingnuts/{UUID}/link - links/unlinks a wingnut to a property.\n * * Request - {\n * propertyId: String // UUID of property, empty string to unlink\n * }\n */\n {\n name: \"FrontendAPI-wingnuts\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/wingnuts`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n /**\n * Notifications endpoint for fetching and updating notifications. List of available routes:\n * \n * - GET /v1/notifications - returns a list of notifications for the user's company\n * - GET /v1/notifications?propertyId={UUID} - returns the notification for a property\n * - GET /v1/notifications/{UUID} - returns a notification with specified UUID\n * - POST /v1/notifications - create a notification (TBD)\n * - POST /v1/notifications/{UUID} - update a notification\n * * Request - {\n * entityStatus: String // \"enabled\" or \"disabled\"\n * config: {\n * thresholds: {\n * [key: String]: { // key is the sensor label\n * min: Float,\n * max: Float,\n * thresholdStatus: String, // \"enabled\" or \"disabled\"\n * recipients: [\n * {\n * type: String, // \"slack\", \"sms\", or \"email\"\n * value: String // endpoint, phone number (+10001112222), or email respectively\n * }\n * ]\n * }\n * }\n * }\n * }\n */\n {\n name: \"FrontendAPI-notifications\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/notifications`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n\n {\n name: \"FrontendAPI-thresholds\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/thresholds`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n\n {\n name: \"FrontendAPI-companies\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/companies`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n\n {\n name: \"FrontendAPI-analytics\",\n endpoint: `https://fe.${process.env.REACT_APP_API_ZONENAME}/v1/analytics`,\n service: \"lambda\",\n region: `${process.env.REACT_APP_API_REGION}`,\n },\n\n]\n\nexport default endpoints\n\n\n\n","export default __webpack_public_path__ + \"static/media/LOGO_ALT.93cd2c83.svg\";","export default __webpack_public_path__ + \"static/media/ic_check_circle.b82c2b88.svg\";","export default __webpack_public_path__ + \"static/media/bg_bluePipes.026d5431.png\";","export default __webpack_public_path__ + \"static/media/eye.bb623504.svg\";","export const ValidatorStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"Email must be valid\"\n case \"emailEqual\":\n return \"Passwords must match\"\n case \"validate\":\n return \"Invalid phone number format\"\n case \"externalIdInvalid\": \n return \"Property ID is already in use\";\n default:\n return \"General Validation Error\"\n }\n}\n\nexport const ResetPasswordStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"This field requires 6 numeric characters\"\n case \"emailEqual\":\n return \"Passwords must match\"\n case \"validate\":\n return \"Invalid phone number format\"\n default:\n return \"General Validation Error\"\n }\n}\n\nexport const WingnutValidatorStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"Email must be valid\"\n case \"emailEqual\":\n return \"Passwords must match\"\n case \"validate\":\n return \"Invalid UUID format\"\n default:\n return \"General Validation Error\"\n }\n}\n\n\nexport const EmailValidatorStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"Email must be valid\"\n case \"emailEqual\":\n return \"Emails must match\"\n case \"validate\":\n return \"Invalid phone number format\"\n case \"invite\":\n return \"This user already exists\"\n default:\n return \"General Validation Error\"\n }\n}\n\nexport const PhoneValidatorStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"Phone number must not contain letters\"\n case \"emailEqual\":\n return \"Passwords must match\"\n case \"validate\":\n return \"Invalid phone number format\"\n default:\n return \"General Validation Error\"\n }\n}\n\nexport const HelpValidatorStrings = (text) => {\n\n switch (text) {\n case \"required\":\n return \"This field is required\"\n case \"maxLength\":\n return \"This field has hit its 300 max character limit\"\n case \"minLength\":\n return \"This field requires at least 10 characters\"\n case \"pattern\":\n return \"Phone number must not contain letters\"\n case \"emailEqual\":\n return \"Passwords must match\"\n case \"validate\":\n return \"Invalid phone number format\"\n default:\n return \"General Validation Error\"\n }\n}\n\nexport const ServerStrings = (text) => {\n\n switch (text) {\n case \"NotAuthorizedException\":\n return \"Incorrect email or password, please try again\"\n case \"LimitExceededException\":\n return \"Attempt limit exceeded, please try after some time\"\n case \"AliasExistsException\":\n return \"An account with the given email already exists\"\n case \"UserNotConfirmedException\":\n return \"Email is not confirmed\"\n case \"UsernameExistsException\":\n return \"An account with the given email already exists\"\n case \"InvalidParameterException\":\n return \"Invalid phone number format. Should be 123-123-1234\"\n case \"InvalidPasswordException\":\n return \"Password must be 8 characters, 1 number, 1 special character, 1 uppercase, 1 lowercase\"\n case \"ExpiredCodeException\":\n return \"Invalid code provided, please contact an admin\"\n case \"CodeMismatchException\":\n return \"Invalid code provided, please contact an admin\"\n case \"InvalidWingnut\":\n return \"Invalid wingnut ID provided, please check UUID\"\n default:\n return \"General Server Error\"\n }\n}\n","import styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\n\nexport const ErrorContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-content: center;\n /* align-self: center; */\n /* margin-bottom: 10px; */\n /* width: auto; */\n`\n\nexport const Icon = styled.img`\n width: 15px;\n height: 15px;\n margin-right: 6px;\n margin-top: 2px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport const Error = styled.p`\n /* border: 1px blue dashed; */\n height: 16px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 129.5%;\n color: ${COLORS.White};\n flex: none;\n margin-top: 5px;\n margin-bottom: 5px;\n ${media.lessThan(\"743px\")`\n width: 90%;\n `}\n ${media.between(\"744px\", \"large\")`\n\n `}\n`\n\nexport const EmptyError = styled(Error)`\n /* border: 1px blue dashed; */\n height: 0px;\n`\n\nexport const SuccessContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-content: center;\n height: 36px;\n align-self: center;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n`\n\nexport const SuccessIcon = styled.img`\n width: 20px;\n height: 20px;\n margin-right: 13px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport const SuccessIcon2 = styled(SuccessIcon)`\n ${media.lessThan(\"743px\")`\n margin-left: 0px\n `}\n ${media.between(\"744px\", \"large\")`\n margin-left: 20px;\n `}\n ${media.greaterThan(\"large\")`\n margin-left: 20px;\n `}\n`\n\nexport const Success = styled.p`\n /* border: 1px blue dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n width: 90%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nexport const EmptySuccess = styled(Success)`\n /* border: 1px blue dashed; */\n /* margin-bottom: 50px; */\n height: 36px;\n height: 0px;\n`\n","import React, { useState, useContext } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"./../custom/Spinner\"\nimport { ValidatorStrings, ServerStrings } from \"./../util/VaildatorStrings\"\nimport { ErrorContainer, Icon, Error, EmptyError } from \"./../custom/ValidatorStyles\"\nimport Pool from \"./../../auth/UserPool\"\nimport { CognitoUser } from \"amazon-cognito-identity-js\"\nimport { ProSidebar } from \"react-pro-sidebar\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function ResetPasswordForm(props) {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession } = useContext(AccountContext)\n const [showSpinner, setShowSpinner] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [validatorError, setValidatorError] = useState(null)\n\n const onSubmit = async (data) => {\n setDisabled(true)\n setShowSpinner(true)\n\n const getUser = () => {\n return new CognitoUser({\n Username: data.email.toLowerCase(),\n Pool,\n })\n }\n\n getUser().forgotPassword({\n onSuccess: (d) => {\n setValidatorError(null)\n setShowSpinner(false)\n setDisabled(false)\n props.setEmail(data.email)\n props.goToStepNumber(1)\n },\n onFailure: (err) => {\n console.log(\"Error\", err)\n setValidatorError(ServerStrings(err.name))\n setShowSpinner(false)\n setDisabled(false)\n },\n })\n }\n\n return (\n \n {showSpinner && }\n
\n \n\n ()[\\]\\\\.,;:\\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,}))$/, })}\n style={{ border: errors.email ? \"1px solid #D25353\" : null, paddingLeft: errors.email ? '9px' : null }}\n />\n {errors.email ? {ValidatorStrings(errors.email?.type)} : }\n\n \n SEND RECOVERY LINK\n \n \n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px red dashed;; */\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n /* justify-self: center; */\n width: auto;\n align-self: center;\n ${media.lessThan(\"743px\")`\n width: 90%;\n\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: 384px;\n display: flex;\n flex-direction: column;\n justify-self: center;\n margin-top: 71px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n width: 384px;\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 14px;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n /* margin-top: 16px; */\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n height: 45px;\n padding-left: 10px;\n outline: none;\n border: none;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n color: ${COLORS.White};\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnInstructions = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 206px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 14px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 38px;\n color: ${COLORS.Base};\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`","export default __webpack_public_path__ + \"static/media/eye_blue.009ce925.svg\";","import React, { useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport ImageBlueEye from \"./../../images/eye_blue.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"./../custom/Spinner\"\nimport { ErrorContainer, Icon, Error, EmptyError } from \"./../custom/ValidatorStyles\"\nimport Pool from \"./../../auth/UserPool\"\nimport { CognitoUser } from \"amazon-cognito-identity-js\"\nimport { ValidatorStrings, ServerStrings } from \"./../util/VaildatorStrings\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function ResetPasswordCodeForm(props) {\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [showSpinner, setShowSpinner] = useState(false)\n const [newPasswordShown, setNewPasswordShown] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [confirmPasswordShown, setConfirmPasswordShown] = useState(false)\n const [validatorError, setValidatorError] = useState(null)\n\n const toggleNewPasswordVisiblity = () => {\n setNewPasswordShown(newPasswordShown ? false : true)\n }\n\n const toggleConfirmPasswordVisiblity = () => {\n setConfirmPasswordShown(confirmPasswordShown ? false : true)\n }\n\n const onSubmit = async (data) => {\n setShowSpinner(true)\n setDisabled(true)\n\n const getUser = () => {\n return new CognitoUser({\n Username: props.email.toLowerCase(), \n Pool,\n })\n }\n\n getUser().confirmPassword(props.code, data.newPassword, {\n onSuccess(data) {\n setValidatorError(null)\n setShowSpinner(false)\n setDisabled(false)\n reset({ newPassword: \"\", confirmPassword: \"\" })\n props.goToStepNumber(3)\n },\n onFailure(err) {\n console.log(\"Error\", err)\n setValidatorError(ServerStrings(err.name))\n setShowSpinner(false)\n setDisabled(false)\n },\n })\n }\n\n return (\n \n {showSpinner && }\n
\n\n\n \n
\n {\" \"}\n \n value === getValues().confirmPassword },})}\n style={{ border: errors.newPassword ? \"1px solid #D25353\" : null, paddingLeft: errors.newPassword ? '9px' : null }}\n />\n \n {\" \"}\n
\n {errors.newPassword ? {ValidatorStrings(errors.newPassword?.type)} : }\n \n
\n {\" \"}\n \n value === getValues().newPassword },})}\n style={{ border: errors.confirmPassword ? \"1px solid #D25353\" : null, paddingLeft: errors.confirmPassword ? '9px' : null }}\n />\n \n {\" \"}\n
\n {errors.confirmPassword ? (\n {ValidatorStrings(errors.confirmPassword?.type)}\n ) : validatorError ? (\n \n \n {validatorError}\n \n ) : (\n \n )}\n \n CONFIRM NEW PASSWORD\n \n \n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n width: auto;\n align-self: center;\n /* margin-top: 28px; */\n ${media.lessThan(\"743px\")`\n width: 90%;\n\n `}\n`\n\nconst InputContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 100%;\n`\n\nconst EyeIcon = styled.img`\n /* border: 1px red dashed; */\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -50px;\n /* margin-top: 46px;\n margin-bottom: 8px; */\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: 384px;\n display: flex;\n flex-direction: column;\n justify-self: center;\n margin-top: 26px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n width: 384px;\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n /* margin-top: 6px; */\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Blinker\", sans-serif;\n padding-left: 10px;\n font-style: normal;\n font-size: 15px;\n letter-spacing: 0.1em;\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n \n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnConfirmPassword = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 211px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 14px;\n /* line-height: 129.5%; */\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 33px;\n color: ${COLORS.Base};\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 206px;\n height: 50px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: transparent;\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 14px;\n color: ${COLORS.White};\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 13px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`","import React, { useState, useContext } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"./../custom/Spinner\"\nimport { ResetPasswordStrings, ServerStrings } from \"./../util/VaildatorStrings\"\nimport { ErrorContainer, Icon, Error, EmptyError } from \"./../custom/ValidatorStyles\"\nimport Pool from \"./../../auth/UserPool\"\nimport { CognitoUser } from \"amazon-cognito-identity-js\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function RecoveryCodeForm(props) {\n\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession } = useContext(AccountContext)\n const [showSpinner, setShowSpinner] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [validatorError, setValidatorError] = useState(null)\n\n const onSubmit = async (data) => {\n setValidatorError(null)\n setShowSpinner(false)\n setDisabled(false)\n props.setCode(data.code)\n props.goToStepNumber(2)\n }\n\n return (\n \n {showSpinner && }\n
\n\n \n {errors.code ? {ResetPasswordStrings(errors.code?.type)} : }\n \n SUBMIT\n \n \n
\n )\n}\n\n\nconst Container = styled.div`\n /* border: 1px red dashed;; */\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n /* justify-self: center; */\n width: auto;\n align-self: center;\n ${media.lessThan(\"743px\")`\n width: 90%;\n\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: 384px;\n display: flex;\n flex-direction: column;\n justify-self: center;\n ${media.lessThan(\"743px\")`\n width: 100%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n width: 384px;\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 14px;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n margin-top: 16px;\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n height: 45px;\n padding-left: 10px;\n margin-top: 72px;\n outline: none;\n border: none;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n color: ${COLORS.White};\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnInstructions = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 206px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 14px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 39px;\n color: ${COLORS.Base};\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/LOGO_ALT.svg\"\nimport Image2 from \"./../../images/ic_check_circle.svg\"\nimport ImageBg2 from \"./../../images/bg_bluePipes.png\"\nimport ResetPasswordForm from \"./../form/ResetPasswordForm\"\nimport ResetPasswordCodeForm from \"./../form/ResetPasswordCodeForm\"\nimport { Link } from \"react-router-dom\"\nimport RecoveryCodeForm from \"../form/RecoveryCodeForm\"\nimport { COLORS } from \"../../styles/colors\"\n\nexport default class ResetPassword extends Component {\n state = {\n step: 0,\n code: \"\",\n email: \"\"\n }\n\n setEmail = (val) => {\n this.setState({ email: val })\n }\n\n setCode = (val) => {\n this.setState({ code: val })\n }\n\n goToStepNumber = (val) => {\n this.setState({ step: val })\n }\n\n render() {\n return (\n \n \n \n\n {this.state.step === 3 ? : }\n\n {(() => {\n switch (this.state.step) {\n case 0:\n return (\n \n Reset Password\n Enter your account email and we'll send you a recovery link\n \n )\n case 1:\n return(\n \n Enter Recovery Code\n Check your email for a recovery code\n \n )\n case 2:\n return(\n \n Reset your Password\n \n )\n case 3:\n return(\n \n Success!\n Your password has been successfully changed\n \n )\n default:\n return null;\n }\n })()}\n\n\n {(() => {\n switch (this.state.step) {\n case 0:\n return (\n \n \n \n BACK\n \n \n );\n case 1:\n return (\n \n \n \n );\n case 2:\n return (\n \n \n (this.goToStepNumber(1))}>BACK\n \n );\n case 3:\n return (\n \n \n LOG IN\n \n \n );\n default:\n return null;\n }\n })()}\n\n \n \n )\n }\n}\n\nconst Grid = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n height: 100%;\n flex-direction: column;\n padding-top: 230px;\n padding-bottom: 100px;\n align-content: center;\n justify-self: center;\n\n ${media.lessThan(\"743px\")`\n width: 100%;\n padding-top: 66px;\n `}\n`\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 456px;\n flex-direction: column;\n align-self: center;\n align-content: center;\n ${media.lessThan(\"743px\")`\n width: 95%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 456px;\n `}\n`\n\nconst CopyContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n align-self: center;\n align-content: center;\n ${media.lessThan(\"743px\")`\n width: 95%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 456px;\n `}\n`\n\nconst Logo = styled.img`\n width: 202px;\n height: 57px;\n align-self: center;\n margin-bottom: 15px;\n transition-duration: 0.5s;\n :hover {\n transform: scale(1.2);\n }\n `\n\nconst Icon = styled.img`\n/* border: 1px red dashed; */\n width: 25px;\n height: 25px;\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-top: 46px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst EmptyIcon = styled.div`\n width: 35px;\n height: 35px;\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-bottom: 8px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: 600;\n font-size: 28px;\n line-height: 25.2%;\n letter-spacing: -1%;\n margin-bottom: 19px;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Blurb = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n font-style: normal;\n font-size: 18px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n width: 300px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 206px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: transparent;\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 14px;\n color: ${COLORS.White};\n /* line-height: 129.5%; */\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBackToLogin = styled(BtnBack)`\n background: #63c085;\n width: 218px;\n color: ${COLORS.Base};\n`\n\nconst SuccessContainer = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst FormContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n`","export function formatPhoneNumber(phoneNumber) {\n const removeNonNumbers = phoneNumber.replace(/[^0-9]/g, \"\")\n if (removeNonNumbers.length === 11) {\n return `+${removeNonNumbers}`\n } else {\n return `+1${removeNonNumbers}`\n }\n}\n","export default __webpack_public_path__ + \"static/media/ic_arrow_right.dd954e0e.svg\";","import { Auth } from \"aws-amplify\"\nimport { useEffect, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport \"react-phone-number-input/style.css\"\nimport { Link, useHistory } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport { formatPhoneNumber } from \"../util/StringUtil\"\nimport Image2 from \"./../../images/eye.svg\"\nimport ImageBlueEye from \"./../../images/eye_blue.svg\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport Image3 from \"./../../images/ic_arrow_right.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"./../custom/Spinner\"\nimport { EmptyError, Error, ErrorContainer, Icon } from \"./../custom/ValidatorStyles\"\nimport { PhoneValidatorStrings, ServerStrings, ValidatorStrings } from \"./../util/VaildatorStrings\"\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n width: auto;\n align-self: center;\n margin-top: 36px;\n ${media.lessThan(\"743px\")`\n width: 90%;\n `}\n`\n\nconst Form = styled.form`\n width: 384px;\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 384px;\n `}\n`\n\nconst Label = styled.label`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n`\n\nconst CheckboxContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-content: center;\n margin-top: 56px;\n align-self: center;\n`\n\nconst LblCheckbox = styled.label`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n align-self: center;\n text-align: center;\n color: ${COLORS.White};\n`\n\nconst InputContainer = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n`\n\nconst EyeIcon = styled.img`\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -50px;\n`\n\nconst Input = styled.input`\n width: 100%;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 45px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 45px;\n `}\n`\n\nconst Checkbox = styled.input`\n border: 1px solid ${COLORS.White};\n box-sizing: border-box;\n border-radius: 3px;\n margin-right: 14px;\n width: 20px;\n height: 20px;\n background: transparent;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 233px;\n height: 45px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 30px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 13px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: #0c182f;\n transition-duration: 0.5s;\n :hover {\n color: ${COLORS.Base};\n }\n`\n\nconst CheckboxError = styled(Error)\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n`\n\nconst Conditions = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n margin-left: 5px;\n margin-right: 5px;\n font-size: 17px;\n line-height: 129.5%;\n align-self: center;\n text-align: center;\n color: ${COLORS.White};\n text-decoration-line: underline;\n`\n\nexport default function CreateAccountForm(props) {\n const history = useHistory()\n\n const {\n register,\n handleSubmit,\n getValues,\n onChange,\n formState: { errors },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [showSpinner, setShowSpinner] = useState(false)\n const [passwordShown, setPasswordShown] = useState(false)\n const [confirmPasswordShown, setConfirmPasswordShown] = useState(false)\n const [serverError, setServerError] = useState(null)\n const [disabled, setDisabled] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n const [checked, setChecked] = useState(false)\n\n const togglePasswordVisiblity = () => {\n setPasswordShown(passwordShown ? false : true)\n }\n\n const toggleConfirmPasswordVisiblity = () => {\n setConfirmPasswordShown(confirmPasswordShown ? false : true)\n }\n\n useEffect(() => {\n if (onChange) {\n onChange(checked)\n }\n }, [checked])\n\n const onSubmit = async (data) => {\n setServerError(null)\n setShowSpinner(true)\n setShowSpinner(true)\n setDisabled(true)\n\n const formattedPhoneNumber = formatPhoneNumber(data.phoneNumber)\n Auth.signUp({\n username: props.email,\n password: data.password,\n attributes: {\n given_name: data.firstName,\n family_name: data.lastName,\n phone_number: formattedPhoneNumber,\n \"custom:uuid\": props.id,\n \"custom:company\": props.company,\n \"custom:companyId\": props.companyId,\n },\n })\n .then((user) => {\n setServerError(null)\n props.updateSuccess()\n setTimeout(function () {\n history.push(\"/login\")\n }, 3000)\n })\n .catch((err) => {\n console.error(err)\n setServerError(ServerStrings(err.name))\n })\n .finally(() => {\n setShowSpinner(false)\n setDisabled(false)\n })\n }\n\n return (\n \n {showSpinner && }\n
\n \n \n {errors.email ? {ValidatorStrings(errors.email?.type)} : }\n\n \n \n {errors.firstName ? {ValidatorStrings(errors.firstName?.type)} : }\n\n \n \n {errors.lastName ? {ValidatorStrings(errors.lastName?.type)} : }\n\n \n \n {errors.phoneNumber ? {PhoneValidatorStrings(errors.phoneNumber?.type)} : }\n\n \n
\n {\" \"}\n \n value === getValues().confirmPassword },\n })}\n style={{\n border: errors.password ? \"1px solid #D25353\" : null,\n paddingLeft: errors.password ? \"9px\" : null,\n }}\n />\n \n {\" \"}\n
\n {errors.password ? {ValidatorStrings(errors.password?.type)} : }\n\n \n
\n {\" \"}\n \n value === getValues().password },\n })}\n style={{\n border: errors.confirmPassword ? \"1px solid #D25353\" : null,\n paddingLeft: errors.confirmPassword ? \"9px\" : null,\n }}\n />\n \n {\" \"}\n
\n {errors.confirmPassword ? (\n {ValidatorStrings(errors.confirmPassword?.type)}\n ) : serverError ? (\n \n \n {serverError}\n \n ) : (\n \n )}\n\n \n
\n setChecked(!checked)}\n type='checkbox'\n name='agreeToTerms'\n {...register(\"agreeToTerms\", { required: true })}\n />\n I agree with the\n \n Terms\n \n and \n \n Privacy\n \n
\n {errors.agreeToTerms ? (\n {ValidatorStrings(errors.agreeToTerms?.type)}\n ) : (\n \n )}\n
\n\n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n CREATE ACCOUNT\n \n \n \n
\n )\n}\n","import { API } from \"aws-amplify\"\nimport React, { Component } from \"react\"\nimport { Link, withRouter } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport Image2 from \"./../../images/ic_check_circle.svg\"\nimport Image from \"./../../images/LOGO_ALT.svg\"\nimport CreateAccountForm from \"./../form/CreateAccountForm\"\n\nconst Grid = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n height: 100%;\n flex-direction: column;\n align-content: center;\n justify-self: center;\n padding-top: 70px;\n padding-bottom: 60px;\n overflow: none;\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: auto;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: auto;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Container = styled.div`\n /* border: 2px green dashed; */\n display: flex;\n width: 456px;\n flex-direction: column;\n align-self: center;\n justify-content: center;\n align-content: center;\n ${media.lessThan(\"743px\")`\n width: 95%;\n\n `}\n`\n\nconst SubContainer = styled.div`\n /* border: 2px green dashed; */\n display: flex;\n flex-direction: column;\n align-self: center;\n justify-content: center;\n align-content: center;\n ${media.lessThan(\"743px\")`\n width: 95%;\n\n `}\n`\n\nconst Logo = styled.img`\n width: 202px;\n height: 57px;\n align-self: center;\n transition-duration: 0.5s;\n :hover {\n transform: scale(1.2);\n }\n`\n\nconst Icon = styled.img`\n width: 35px;\n height: 35px;\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-top: 46px;\n margin-bottom: 8px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst EmptyIcon = styled.div`\n width: 35px;\n height: 35px;\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: 600;\n font-size: 32px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n font-size: 25px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Blurb = styled(Title)`\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 84.5%;\n text-align: center;\n letter-spacing: -0.01em;\n margin-top: 15px;\n ${media.lessThan(\"743px\")`\n font-size: 18px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BlurbHighlight = styled(Blurb)`\n font-weight: bold;\n`\n\nconst MiniBlurb = styled(Blurb)`\n font-size: 18px;\n`\n\nconst BtnHaveAccount = styled.button`\n background: transparent;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 300;\n font-size: 14px;\n line-height: 130%;\n cursor: pointer;\n text-align: center;\n text-decoration-line: underline;\n opacity: 0.5;\n margin-top: 10px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst BtnLogin = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: center;\n width: 259px;\n height: 50px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 65px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nclass CreateAccount extends Component {\n state = {\n isLoading: true,\n isSuccess: false,\n id: \"\",\n email: \"\",\n company: \"\",\n companyId: \"\",\n }\n\n componentDidMount = () => {\n this.getSearchParamsToken()\n .then((uuid) => {\n return API.get(\"FrontendAPI-users\", `/${uuid}`)\n })\n .then((response) => {\n const { uuid, email, company, companyId } = response\n this.setState({\n isLoading: false,\n id: uuid,\n email,\n company,\n companyId,\n })\n })\n .catch((error) => {\n console.log(\"Error\", error)\n this.props.history.push(\"/\")\n })\n }\n\n getSearchParamsToken = () => {\n return new Promise((resolve, reject) => {\n const params = new URLSearchParams(this.props.location.search)\n const uuid = params.get(\"token\")\n if (uuid) {\n resolve(uuid)\n } else {\n reject(\"Token not valid\")\n }\n })\n }\n\n updateSuccess = () => {\n this.setState({ isSuccess: true })\n }\n\n render() {\n return (\n \n \n \n\n {this.state.isSuccess ? : }\n\n {this.state.isSuccess ? \"Success!\" : this.state.company}\n\n {this.state.isSuccess ? (\n \n Account created for\n {this.state.email}\n\n \n LOG IN\n \n \n ) : this.state.isLoading ? (\n \n ) : (\n \n Account Creation for {this.state.email}\n \n \n Already have an account? Log in\n \n \n )}\n \n \n )\n }\n}\n\nexport default withRouter(CreateAccount)\n","export default __webpack_public_path__ + \"static/media/IsoRender_menu.ff8217dc.png\";","export default __webpack_public_path__ + \"static/media/ic_arrow_right_green.40ee6b95.svg\";","export default __webpack_public_path__ + \"static/media/ic_close.bbe8ec84.svg\";","import React, { Link, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-bottom: 30px;\n `}\n ${media.greaterThan(\"large\")`\n padding-bottom: 30px;\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n justify-content: center;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 17px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n margin-top: 43px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonTextNo = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst ButtonTextYes = styled(ButtonTextNo)`\n color: black;\n`\n\nexport default function LogoutPopup(props) {\n const [isHoveringYes, setIsHoveringYes] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n \n \n Are you sure you want to log out?\n \n {\n setIsHoveringYes(true)\n }}\n onMouseLeave={(e) => {\n setIsHoveringYes(false)\n }}\n onClick={props.setLogout}\n style={{ opacity: isHoveringYes == true ? \"80%\" : \"100%\" }}\n >\n YES\n \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n onClick={props.closePopup}\n style={{ backgroundColor: isHovering == true ? COLORS.Secondary : \"transparent\" }}\n >\n No\n \n \n \n \n )\n}\n","import React, { useState, useContext, useEffect } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { Link, useLocation } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { ProSidebar, Menu, MenuItem } from \"react-pro-sidebar\"\nimport \"./SideNav.scss\"\nimport Image from \"./../../images/LOGO_ALT.svg\"\nimport Image6 from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgWingnut from \"./../../images/IsoRender_menu.png\"\nimport { library } from \"@fortawesome/fontawesome-svg-core\"\nimport { FontAwesomeIcon as FAIcon } from \"@fortawesome/react-fontawesome\"\nimport Modal from \"react-modal\"\nimport LogoutPopup from \"./../popup/LogoutPopup\"\nimport { COLORS } from \"../../styles/colors\"\nimport { getUUIDFromPath } from \"../util/CleanUUID\"\n\nexport default function SideNav() {\n const [isCollapsed, setIsCollapsed] = useState(true)\n const [isHovering, setIsHovering] = useState(false)\n\n const [hoverDashboard, setHoverDashboard] = useState(false)\n const [hoverAccount, setHoverAccount] = useState(false)\n const [hoverWingnut, setHoverWingnut] = useState(false)\n const [hoverProperty, setHoverProperty] = useState(false)\n const [hoverNotification, setHoverNotification] = useState(false)\n const [hoverUsers, setHoverUsers] = useState(false)\n const [hoverLogout, setHoverLogout] = useState(false)\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n const [isAdmin, setIsAdmin ] = useState(false)\n const { getSession } = useContext(AccountContext)\n \n useEffect(() => {\n getSession().then(({ isAdmin }) => {\n setIsAdmin(isAdmin)\n })\n }, [])\n\n const [state, setState] = useState({\n selectDashboard: true,\n selectAccount: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n selectLogout: false,\n })\n\n var location = useLocation()\n const { logout } = useContext(AccountContext)\n\n const toggleSidebar = () => {\n setIsCollapsed(!isCollapsed)\n }\n\n useEffect(() => {\n var pathname = location.pathname.substring(8)\n\n switch (pathname) {\n case \"dashboard/0\":\n return setState({\n selectDashboard: true,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"account\":\n return setState({\n selectDashboard: false,\n selectAccount: true,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"wingnut\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: true,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case `wingnut/detail/${getUUIDFromPath(location.pathname)}`:\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: true,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"notification\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: true,\n selectUsers: false,\n })\n case \"property\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: true,\n selectNotification: false,\n selectUsers: false,\n })\n case \"users\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: true,\n })\n case `property/detail/${getUUIDFromPath(location.pathname)}`:\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: true,\n selectNotification: false,\n selectUsers: false,\n })\n }\n }, [location])\n\n useEffect(() => {\n const width = window.innerWidth\n if (window.innerWidth > 1170) {\n setIsCollapsed(false)\n }\n }, [])\n\n const closePopup = () => {\n setIsModalOpen(false)\n }\n\n return (\n
\n \n \n \n\n \n \n \n \n
\n \n }\n >\n \n \n \n \n \n
\n \n \n {\n setHoverDashboard(true)\n }}\n onMouseLeave={(e) => {\n setHoverDashboard(false)\n }}\n icon={\n \n }\n >\n {\n setState({\n selectDashboard: true,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n }}\n >\n \n DASHBOARD\n \n \n \n \n\n {\n setHoverAccount(true)\n }}\n onMouseLeave={(e) => {\n setHoverAccount(false)\n }}\n icon={\n \n }\n >\n {\n setState({\n selectDashboard: false,\n selectAccount: true,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n }}\n >\n \n ACCOUNT\n \n \n \n \n\n {\n setHoverWingnut(true)\n }}\n onMouseLeave={(e) => {\n setHoverWingnut(false)\n }}\n icon={\n \n }\n >\n {\n setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: true,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n }}\n >\n \n WINGNUTS\n \n \n \n \n\n {\n setHoverProperty(true)\n }}\n onMouseLeave={(e) => {\n setHoverProperty(false)\n }}\n icon={\n \n }\n >\n {\n setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: true,\n selectNotification: false,\n selectUsers: false,\n })\n }}\n >\n \n PROPERTIES\n \n \n \n \n\n {/* ----------------------- ADMIN USER FEATURE */}\n {\n setHoverUsers(true)\n }}\n onMouseLeave={(e) => {\n setHoverUsers(false)\n }}\n icon={\n \n }\n >\n {\n setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: true,\n })\n }}\n >\n \n USERS\n \n \n \n \n\n \n\n setIsModalOpen(true)}\n onMouseEnter={(e) => {\n setHoverLogout(true)\n }}\n onMouseLeave={(e) => {\n setHoverLogout(false)\n }}\n icon={\n \n }\n >\n {\n setState({ selectDashboard: false, selectAccount: false, selectLogin: true })\n }}\n >\n \n LOG OUT\n \n \n \n \n \n
\n\n {isCollapsed ? null : (\n
\n \n \n Looking for help with your Wingnut ?\n \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n \n \n CONTACT US\n \n \n \n \n \n \n Terms & Conditions\n \n & \n \n Privacy Policy\n \n \n Wingnut IoT Inc.\n
\n )}\n
\n
\n
\n
\n )\n}\n\n// Below code takes .svg's and adds them to FontAwesome library to use them in the Pro-Nav-Bar\n\n\nvar faBurger = {\n prefix: \"fas\",\n iconName: \"burger\",\n icon: [\n 12,\n 11,\n [],\n \"f0000\",\n \"M1 10.5C0.45 10.5 0 10.95 0 11.5C0 12.05 0.45 12.5 1 12.5L17 12.5C17.55 12.5 18 12.05 18 11.5C18 10.95 17.55 10.5 17 10.5H1ZM1 5.5L17 5.5C17.55 5.5 18 5.95 18 6.5C18 7.05 17.55 7.5 17 7.5L1 7.5C0.45 7.5 0 7.05 0 6.5C0 5.95 0.45 5.5 1 5.5ZM1 0.5L17 0.5C17.55 0.5 18 0.95 18 1.5C18 2.05 17.55 2.5 17 2.5L1 2.5C0.45 2.5 0 2.05 0 1.5C0 0.95 0.45 0.5 1 0.5Z\",\n ],\n}\nlibrary.add(faBurger)\n\nvar faDashBoard = {\n prefix: \"fas\",\n iconName: \"dashboard\",\n icon: [\n 19,\n 18,\n [],\n \"f0000\",\n \"M10.5 20C11.875 20 13 18.875 13 17.5V2.5C13 1.125 11.875 0 10.5 0C9.125 0 8 1.125 8 2.5V17.5C8 18.875 9.125 20 10.5 20ZM3 20C4.375 20 5.5 18.875 5.5 17.5V12.5C5.5 11.125 4.375 10 3 10C1.625 10 0.5 11.125 0.5 12.5V17.5C0.5 18.875 1.625 20 3 20ZM15.5 17.5V8.75C15.5 7.375 16.625 6.25 18 6.25C19.375 6.25 20.5 7.375 20.5 8.75V17.5C20.5 18.875 19.375 20 18 20C16.625 20 15.5 18.875 15.5 17.5Z\",\n ],\n}\nlibrary.add(faDashBoard)\n\nvar faAccount = {\n prefix: \"fas\",\n iconName: \"account\",\n icon: [\n 16,\n 15,\n [],\n \"f0000\",\n \"M12 4C12 6.21 10.21 8 8 8C5.79 8 4 6.21 4 4C4 1.79 5.79 0 8 0C10.21 0 12 1.79 12 4ZM0 14C0 11.34 5.33 10 8 10C10.67 10 16 11.34 16 14V15C16 15.55 15.55 16 15 16H1C0.45 16 0 15.55 0 15V14Z\",\n ],\n}\nlibrary.add(faAccount)\n\nvar faWingnuts = {\n prefix: \"fas\",\n iconName: \"wingnuts\",\n icon: [\n 19,\n 15,\n [],\n \"f0000\",\n \"M8.02535 6.223C7.22151 5.92094 5.54147 0.706306 4.93858 0.722204C2.01258 0.801696 0.830932 2.39153 0.62997 3.1626C0.52547 3.59185 2.08492 6.21504 3.78104 7.99565C4.66725 8.9769 5.7859 9.72529 7.03664 10.1737C7.71476 10.2457 8.39639 10.2802 9.07839 10.2771H12.8243C13.5385 10.2846 14.2525 10.2501 14.9626 10.1737C16.2148 9.72379 17.3357 8.97573 18.2262 7.99565C19.9223 6.21504 21.4818 3.59185 21.3692 3.1626C21.1683 2.36768 19.9866 0.777848 17.0686 0.722204C16.4577 0.722204 14.7616 5.92094 13.9819 6.223H8.02535Z\",\n ],\n}\nlibrary.add(faWingnuts)\n\nvar faProperty = {\n prefix: \"fas\",\n iconName: \"property\",\n icon: [\n 13,\n 14,\n [],\n \"f0000\",\n \"M6.33146 13.1064V8.93971H9.6648V13.1064C9.6648 13.5647 10.0398 13.9397 10.4981 13.9397H12.9981C13.4565 13.9397 13.8315 13.5647 13.8315 13.1064V7.27305H15.2481C15.6315 7.27305 15.8148 6.79805 15.5231 6.54805L8.55646 0.273047C8.2398 -0.0102865 7.75646 -0.0102865 7.4398 0.273047L0.473129 6.54805C0.189795 6.79805 0.364795 7.27305 0.748129 7.27305H2.1648V13.1064C2.1648 13.5647 2.5398 13.9397 2.99813 13.9397H5.49813C5.95646 13.9397 6.33146 13.5647 6.33146 13.1064Z\",\n ],\n}\nlibrary.add(faProperty)\n\nvar faNotification = {\n prefix: \"fas\",\n iconName: \"notification\",\n icon: [\n 14,\n 12,\n [],\n \"f0000\",\n \"M15.001 9.45833V13.625L16.076 14.7C16.601 15.225 16.226 16.125 15.4844 16.125H4.50935C3.76769 16.125 3.40102 15.225 3.92602 14.7L5.00102 13.625V9.45833C5.00102 6.89167 6.35935 4.75833 8.75102 4.19167V3.625C8.75102 2.93333 9.30935 2.375 10.001 2.375C10.6927 2.375 11.251 2.93333 11.251 3.625V4.19167C13.6344 4.75833 15.001 6.9 15.001 9.45833ZM11.6677 16.9583C11.6677 17.875 10.9177 18.625 10.001 18.625C9.07602 18.625 8.33435 17.875 8.33435 16.9583H11.6677Z\",\n ],\n}\nlibrary.add(faNotification)\n\nvar faUsersGroup = {\n prefix: \"fas\", \n iconName: \"users-group\", \n icon: [\n 14,\n 13,\n [], \n \"f002\",\n \"M9.15801 6.66602C9.15801 8.04935 8.04967 9.16602 6.66634 9.16602C5.28301 9.16602 4.16634 8.04935 4.16634 6.66602C4.16634 5.28268 5.28301 4.16602 6.66634 4.16602C8.04967 4.16602 9.15801 5.28268 9.15801 6.66602ZM15.8247 6.66602C15.8247 8.04935 14.7163 9.16602 13.333 9.16602C11.9497 9.16602 10.833 8.04935 10.833 6.66602C10.833 5.28268 11.9497 4.16602 13.333 4.16602C14.7163 4.16602 15.8247 5.28268 15.8247 6.66602ZM6.66634 10.8327C4.72467 10.8327 0.833008 11.8077 0.833008 13.7493V14.9993C0.833008 15.4577 1.20801 15.8327 1.66634 15.8327H11.6663C12.1247 15.8327 12.4997 15.4577 12.4997 14.9993V13.7493C12.4997 11.8077 8.60801 10.8327 6.66634 10.8327ZM12.5247 10.8743C12.8163 10.8493 13.0913 10.8327 13.333 10.8327C15.2747 10.8327 19.1663 11.8077 19.1663 13.7493V14.9993C19.1663 15.4577 18.7913 15.8327 18.333 15.8327H14.0163C14.108 15.5743 14.1663 15.291 14.1663 14.9993V13.7493C14.1663 12.5243 13.508 11.5993 12.558 10.9077C12.5555 10.9052 12.553 10.9019 12.5502 10.8983C12.5439 10.89 12.5363 10.8802 12.5247 10.8743Z\", // Path data\n ],\n};\n\nlibrary.add(faUsersGroup);\n\n\nvar faPieChart = {\n prefix: \"fas\",\n iconName: \"pie-chart\", \n icon: [\n 20, \n 20, \n [], \n \"f001\", \n \"M9.23535 17.3495C9.23535 17.8828 8.74368 18.2828 8.22702 18.1662C4.50202 17.3328 1.73535 13.9912 1.73535 9.99951C1.73535 6.00785 4.50202 2.66618 8.22702 1.83285C8.74368 1.71618 9.23535 2.11618 9.23535 2.64951V17.3495ZM10.927 2.64951V8.32451C10.927 8.78285 11.302 9.15785 11.7604 9.15785H17.4187C17.952 9.15785 18.352 8.66618 18.2354 8.14118C17.527 5.00785 15.0687 2.54118 11.9437 1.83285C11.4187 1.71618 10.927 2.11618 10.927 2.64951ZM10.927 17.3495V11.6745C10.927 11.2162 11.302 10.8412 11.7687 10.8328H17.427C17.952 10.8328 18.3604 11.3328 18.2437 11.8495C17.5354 14.9828 15.077 17.4578 11.9437 18.1662C11.4187 18.2828 10.927 17.8828 10.927 17.3495Z\", // Path data\n ],\n};\n\nlibrary.add(faPieChart);\n\nvar faLogout = {\n prefix: \"fas\",\n iconName: \"logout\",\n icon: [\n 19,\n 18,\n [],\n \"f0000\",\n \"M5 3H19C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V16C3 15.45 3.45 15 4 15C4.55 15 5 15.45 5 16V18C5 18.55 5.45 19 6 19H18C18.55 19 19 18.55 19 18V6C19 5.45 18.55 5 18 5H6C5.45 5 5 5.45 5 6V8C5 8.55 4.55 9 4 9C3.45 9 3 8.55 3 8V5C3 3.9 3.89 3 5 3ZM15.79 12.7L12.2 16.29C11.81 16.68 11.18 16.68 10.79 16.29C10.41 15.91 10.4 15.27 10.79 14.88L12.67 13H4C3.45 13 3 12.55 3 12C3 11.45 3.45 11 4 11H12.67L10.79 9.11C10.4 8.72 10.4 8.09 10.79 7.7C10.9768 7.51275 11.2305 7.40751 11.495 7.40751C11.7595 7.40751 12.0132 7.51275 12.2 7.7L15.79 11.29C16.18 11.68 16.18 12.31 15.79 12.7Z\",\n ],\n}\nlibrary.add(faLogout)\n\nconst SideNavContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n opacity: 0.9; // this allows the sidenav to dim when modal\n`\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n height: 100vh;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\n\nconst SubContainer = styled.div`\n /* border: 1px yellow dashed; */\n`\n\nconst LinkContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 200px;\n`\n\nconst Header = styled.div`\n /* border: 1px yellow dashed; */\n height: auto;\n margin-top: 10px;\n /* margin-bottom: 30px; */\n`\n\nconst Body = styled.div`\n /* border: 1px blue dashed; */\n`\n\nconst Footer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n height: auto;\n align-content: flex-end;\n display: flex;\n flex-direction: column;\n margin-bottom: 10px;\n`\n\nconst Logo = styled.img`\n width: 94px;\n height: 27px;\n align-self: center;\n /* transition-duration: 0.5s;\n :hover{\n transform: scale(1.2);\n } */\n`\n\nconst FaviconLogo = styled.img`\n width: 45px;\n height: 45px;\n /* transition-duration: 0.5s;\n :hover{\n transform: scale(1.2);\n } */\n`\n\nconst MenuItemContainer = styled.div`\n /* border: 1px red dashed; */\n /* height: 40px; */\n display: flex;\n flex-direction: row;\n /* align-content: center; */\n`\n\nconst Icon = styled.img`\n width: 20px;\n height: 20px;\n /* margin-right: 10px; */\n align-self: center;\n color: ${COLORS.White};\n`\n\nconst IconBurger = styled(Icon)`\n width: 18px;\n height: 12px;\n`\n\nconst MenuText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n /* line-height: 129.5%; */\n /* align-self: center; */\n display: flex;\n /* align-items: center; */\n letter-spacing: 0.05em;\n text-transform: uppercase;\n margin-top: 6px;\n`\n\nconst Line = styled.div`\n width: 80%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 14px;\n margin-left: 20px;\n`\n\nconst Box = styled.div`\n background: #4ab2fb;\n border-radius: 11px;\n width: 176px;\n height: 158.21px;\n align-self: center;\n align-content: center;\n`\n\nconst Conditions = styled.p`\n margin-top: 20px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 11px;\n line-height: 130%;\n text-decoration-line: underline;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst Copyright = styled.p`\n text-align: center;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 10px;\n line-height: 130%;\n color: ${COLORS.HighlightMedium};\n margin-top: 7px;\n`\n\nconst ImgWingut = styled.img`\n width: 136.79px;\n height: 97px;\n margin-top: -30px;\n align-self: center;\n margin-left: 20px;\n`\n\nconst LookingText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.Base};\n margin-left: 17px;\n margin-top: 5px;\n`\n\nconst Button = styled.div`\n display: flex;\n flex-direction: row;\n width: auto;\n height: auto;\n border: none;\n background: transparent;\n color: ${COLORS.White};\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n line-height: 129.5%;\n /* text-align: center; */\n letter-spacing: 0.05em;\n margin-left: 17px;\n margin-top: 8px;\n ${media.lessThan(\"medium\")`\n align-self: flex-start;\n `}\n ${media.between(\"medium\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 13px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n transition-duration: 0.5s;\n margin-right: 20px;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"medium\")`\n `}\n ${media.between(\"medium\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}","export default __webpack_public_path__ + \"static/media/ic_help.ebad797a.svg\";","export default __webpack_public_path__ + \"static/media/ic_dashboard.1a885c84.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAYAAABiS3YzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAESSURBVHgB7ZRRasJAEIZnNm2fPUKPYC/QxhvYnsBiC76JPopCRMRXffNB9AjiCVZPoEfwBvpszI4zQSFEccUlD4I/DExm8n/sbmaDYFFF995DNBNOfQJYvVH4PSwE62seZYPu0UwFKDkC5EN8ndg8ViivLp8q+TaPFXqPHgf6Ao4q6Y7voVeVHCkajAqtuRP0OG46/pwsQlX8190Pp+3vYF9K1yIgP4MzpVy8/fKiVwUyQVxC7I+/Gm1wkCrrTpGBfc5zEkgU/PHhg4PUhRsD5oZbcxUKGegJzQDK1PlZ0cNl4jHdXyZWlO6ReJX8AJBMm0drK8FzWht9NmentyJSvwS0Onp0ROHPqZfwbiTYWxfvAezxY+oeb0utAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/ic_dashboard_white.18271773.svg\";","export default __webpack_public_path__ + \"static/media/ic_account.50e66ffc.svg\";","export default __webpack_public_path__ + \"static/media/ic_account_active.eb8c695e.svg\";","export default __webpack_public_path__ + \"static/media/ic_account_white.9b2c7402.svg\";","export default __webpack_public_path__ + \"static/media/ic_logout.682549bf.svg\";","export default __webpack_public_path__ + \"static/media/ic_logout_active.94334770.svg\";","export default __webpack_public_path__ + \"static/media/ic_logout_white.d45db999.svg\";","export default __webpack_public_path__ + \"static/media/ic_wingnuts.812fc745.svg\";","export default __webpack_public_path__ + \"static/media/ic_wingnuts_active.9d1747c7.svg\";","export default __webpack_public_path__ + \"static/media/ic_wingnuts_white.ac7a0eeb.svg\";","export default __webpack_public_path__ + \"static/media/ic_property_active.3c298b0b.svg\";","export default __webpack_public_path__ + \"static/media/ic_property_white.736b3546.svg\";","export default __webpack_public_path__ + \"static/media/ic_notification.5eb2a2bb.svg\";","export default __webpack_public_path__ + \"static/media/ic_notification_active.16d343f1.svg\";","export default __webpack_public_path__ + \"static/media/ic_notification_white.6b682163.svg\";","import React, { useState, useContext, useEffect } from \"react\"\nimport { Nav, Navbar, NavDropdown } from \"react-bootstrap\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { Link, useLocation } from \"react-router-dom\"\nimport MediaQuery from \"react-responsive\"\nimport Button from \"react-bootstrap/Button\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/LOGO_ALT.svg\"\nimport HelpImage from \"./../../images/ic_help.svg\"\nimport Image2 from \"./../../images/ic_dashboard.svg\"\nimport Image2_Selected from \"./../../images/ic_dashboard_active.png\"\nimport Image2_Hover from \"./../../images/ic_dashboard_white.svg\"\nimport Image3 from \"./../../images/ic_account.svg\"\nimport Image3_Selected from \"./../../images/ic_account_active.svg\"\nimport Image3_Hover from \"./../../images/ic_account_white.svg\"\nimport Image4 from \"./../../images/ic_logout.svg\"\nimport Image4_Selected from \"./../../images/ic_logout_active.svg\"\nimport Image4_Hover from \"./../../images/ic_logout_white.svg\"\nimport Image5 from \"./../../images/ic_wingnuts.svg\"\nimport Image5_Selected from \"./../../images/ic_wingnuts_active.svg\"\nimport Image5_Hover from \"./../../images/ic_wingnuts_white.svg\"\nimport Image6 from \"./../../images/ic_property.svg\"\nimport Image6_Selected from \"./../../images/ic_property_active.svg\"\nimport Image6_Hover from \"./../../images/ic_property_white.svg\"\nimport Image7 from \"./../../images/ic_notification.svg\"\nimport Image7_Selected from \"./../../images/ic_notification_active.svg\"\nimport Image7_Hover from \"./../../images/ic_notification_white.svg\"\nimport Modal from \"react-modal\"\nimport LogoutPopup from \"./../popup/LogoutPopup\"\nimport { COLORS } from \"../../styles/colors\"\nimport { getUUIDFromPath } from \"../util/CleanUUID\"\n\nconst Container = styled.div`\n background: ${COLORS.Primary};\n padding-top: 26px;\n padding-left: 29px;\n`\n\nconst LinkContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: start;\n`\n\nconst Logo = styled.img`\n width: 94px;\n height: 27px;\n align-self: center;\n /* transition-duration: 0.5s;\n :hover{\n transform: scale(1.2);\n } */\n`\n\nconst MenuItemContainer = styled.div`\n /* border: 1px red dashed; */\n height: 40px;\n display: flex;\n flex-direction: row;\n align-content: center;\n`\n\nconst MenuItemContainer2 = styled(MenuItemContainer)`\n margin-top: 46px;\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 16px;\n height: 16px;\n margin-right: 16px;\n align-self: center;\n color: ${COLORS.White};\n`\n\nconst HelpContainer = styled.div`\n display: flex;\n flex-direction: row;\n`\n\nconst HelpIcon = styled.img`\n width: 25px;\n height: 25px;\n align-self: right;\n margin-right: 10px;\n`\n\nconst MenuText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 13px;\n line-height: 129.5%;\n align-self: center;\n display: flex;\n align-items: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n /* text-decoration: none; */\n`\n\nconst Line = styled.div`\n width: 30%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 14px;\n margin-right: 30px;\n`\n\nconst Conditions = styled.p`\n margin-top: 20px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 11px;\n line-height: 130%;\n text-decoration-line: underline;\n color: ${COLORS.White};\n /* align-self: center; */\n`\n\nconst Copyright = styled.p`\n /* text-align: center; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 10px;\n line-height: 130%;\n color: ${COLORS.HighlightMedium};\n margin-top: 7px;\n margin-bottom: 7px;\n`\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n\nexport default function NavBar() {\n const [expanded, setExpanded] = useState(false)\n\n const [hoverDashboard, setHoverDashboard] = useState(false)\n const [hoverAccount, setHoverAccount] = useState(false)\n const [hoverWingnut, setHoverWingnut] = useState(false)\n const [hoverProperty, setHoverProperty] = useState(false)\n const [hoverNotification, setHoverNotification] = useState(false)\n const [hoverUsers, setHoverUsers] = useState(false)\n const [hoverLogout, setHoverLogout] = useState(false)\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { logout } = useContext(AccountContext)\n var location = useLocation()\n\n const [isAdmin, setIsAdmin ] = useState(false)\n const { getSession } = useContext(AccountContext)\n \n useEffect(() => {\n getSession().then(({ isAdmin }) => {\n setIsAdmin(isAdmin)\n })\n }, [])\n \n const [state, setState] = useState({\n selectDashboard: true,\n selectAccount: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n selectLogout: false,\n })\n\n const closePopup = () => {\n setIsModalOpen(false)\n }\n\n useEffect(() => {\n var pathname = location.pathname.substring(8)\n\n switch (pathname) {\n case \"dashboard/0\":\n return setState({\n selectDashboard: true,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"account\":\n return setState({\n selectDashboard: false,\n selectAccount: true,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"wingnut\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: true,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case `wingnut/detail/${getUUIDFromPath(location.pathname)}`:\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: true,\n selectProperty: false,\n selectNotification: false,\n selectUsers: false,\n })\n case \"notification\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: true,\n selectUsers: false,\n })\n case \"property\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: true,\n selectNotification: false,\n selectUsers: false,\n })\n case \"users\":\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: false,\n selectNotification: false,\n selectUsers: true,\n })\n case `property/detail/${getUUIDFromPath(location.pathname)}`:\n return setState({\n selectDashboard: false,\n selectAccount: false,\n selectLogin: false,\n selectWingnut: false,\n selectProperty: true,\n selectNotification: false,\n selectUsers: false,\n })\n }\n }, [location])\n\n return (\n
\n \n \n \n\n \n \n \n \n {\"\"}\n \n\n \n \n \n \n \n \n\n setExpanded(expanded ? false : \"expanded\")}\n aria-controls='responsive-navbar-nav'\n style={{ marginRight: 30, border: \"none\", boxShadow: \"none\" }}\n />\n \n\n \n \n \n \n \n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/ic_help_green.5f117ead.svg\";","export default __webpack_public_path__ + \"static/media/ic_arrow_back.3fe1303c.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport { API, Auth } from \"aws-amplify\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 240px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 21px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n align-self: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n /* margin-top: 73px; */\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n opacity: 1;\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function RemoveWingnutPopup(props) {\n\n const [isHovering, setIsHovering] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n const [disabled, setDisabled] = useState(false)\n\n\n const removeWingnut = async () => {\n setShowSpinner(true)\n setDisabled(true)\n const payload = {}\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` }\n }\n try {\n const response = await API.del('FrontendAPI-wingnuts', `/${props.wingnutUUID}`, init)\n if (response.success) {\n setShowSpinner(false)\n setDisabled(false)\n props.setSuccess()\n }\n } catch (error) {\n setShowSpinner(false)\n setDisabled(false)\n props.closePopup()\n }\n }\n\n return (\n \n \n \n \n \n \n \n Remove Wingnut?\n Related Wingnut data will be lost. This can't be undone\n \n \n\n \n\n \n NO\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgCheckmark from \"./../../images/ic_check_circle.svg\"\nimport {useHistory} from 'react-router-dom';\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 240px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 58px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n /* border: 1px yellow dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n align-self: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n /* margin-top: 73px; */\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n align-self: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n /* margin-top: 28px; */\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function RemoveWingnutSuccessPopup(props) {\n const history = useHistory()\n const [isHovering, setIsHovering] = useState(false)\n\n const closeAction = () => {\n props.closePopup()\n history.push(\"/portal/wingnut\")\n }\n\n return (\n \n \n \n \n \n \n \n Wingnut successfully removed\n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgCheckmark from \"./../../images/ic_check_circle.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 250px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 52px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n width: 300px;\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function ChangesSaved(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n \n \n \n Changes saved\n \n \n \n \n CLOSE\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 320px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 250px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 32px;\n align-self: center;\n /* margin-top: 8px; */\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n width: 300px;\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n /* flex-wrap: wrap; */\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 180px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1.0;\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`\n\nconst NoButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function LeavePagePopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n // not being called anymore but could change back\n const saveAllChanges = async () => {\n props.saveAll()\n if (props.alertArray && props.alertArray.length){\n props.closePopup()\n } else {\n props.setSuccess()\n }\n }\n\n const LeavePage = () => {\n props.discardChanges()\n props.goToNextTab()\n\n }\n\n return (\n \n \n \n \n \n \n \n Abandon Changes?\n All unsaved changes will be lost\n \n \n \n \n BACK TO CONFIGURATION\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n align-self: center;\n height: 100%;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n padding-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 32px;\n align-self: center;\n /* margin-top: 8px; */\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n width: 300px;\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 73px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n :hover {\n opacity: 0.8;\n }\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1.0;\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function SaveConfigPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n const saveAll = () => {\n\n props.saveAll()\n \n if (props.alertArray && props.alertArray.length){\n props.setError()\n } else {\n setTimeout(() => {\n props.closePopup()\n }, 500)\n }\n }\n\n return (\n \n \n \n \n \n \n Save configuration?\n Your changes will be saved\n\n \n \n \n NO\n \n \n\n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 300px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n align-self: center;\n height: 100%;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n padding-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 32px;\n align-self: center;\n /* margin-top: 8px; */\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n width: 300px;\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 73px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n :hover {\n opacity: 0.8;\n }\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnDiscard = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1.0;\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function SaveOrAbandonPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n const saveAll = () => {\n\n props.saveAll()\n \n if (props.alertArray && props.alertArray.length){\n props.setError()\n } else {\n setTimeout(() => {\n props.closePopup()\n }, 500)\n }\n }\n\n const discardAll = () => {\n props.discardAll()\n props.closePopup()\n }\n\n return (\n \n \n \n \n \n \n Save or Discard Configuration?\n {/* Your changes will be saved */}\n\n \n \n \n DISCARD\n \n \n\n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n align-self: center;\n height: 100%;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n padding-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 32px;\n align-self: center;\n /* margin-top: 8px; */\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n /* width: 300px; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 73px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function SaveConfigErrorPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n \n \n Incomplete Configuration\n All fields must be selected for active sensor configurations\n \n \n\n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n align-self: center;\n height: 100%;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n padding-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 32px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n width: 300px;\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n align-self: center;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 73px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function DiscardChangesPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n const discardAll = () => {\n props.discardAll()\n\n setTimeout(() => {\n props.closePopup()\n }, 500)\n }\n\n return (\n \n \n \n \n \n \n Discard changes?\n Your changes will be discarded\n \n \n \n NO\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 250px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-right: 17px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 41px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n /* margin-top: 62px; */\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n width: 150px;\n :hover {\n opacity: 1.0;\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function DeletePropertyPopup(props) {\n\n const [disabled, setDisabled] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n\n const removeProperty = async () => {\n const payload = {}\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` }\n }\n\n setDisabled(true)\n setShowSpinner(true)\n\n try {\n const response = await API.del('FrontendAPI-properties', `/${props.propertyUUID}`, init)\n if (response.success) {\n props.setSuccess()\n setDisabled(false)\n setShowSpinner(false)\n }\n } catch (error) {\n setDisabled(false)\n setShowSpinner(false)\n props.closePopup()\n }\n }\n\n return (\n \n \n \n \n \n \n \n Remove Property?\n Related Property data will be lost. This cannot be undone\n \n \n\n \n\n {/* */}\n\n \n NO\n \n\n \n \n \n )\n}\n","import React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgCheckmark from \"./../../images/ic_check_circle.svg\"\nimport {useHistory} from 'react-router-dom';\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 250px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 58px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n /* border: 1px yellow dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst BottomContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n align-self: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function DeletePropertySuccessPopup(props) {\n const history = useHistory()\n const [isHovering, setIsHovering] = useState(false)\n\n const closeAction = () => {\n props.closePopup()\n history.push(\"/portal/property\")\n }\n\n return (\n \n \n \n \n \n \n \n Property successfully removed\n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n padding-bottom: 50px;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 240px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 41px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n width: 150px;\n :hover {\n opacity: 1;\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function UnlinkPropertyPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n const removeProperty = async () => {\n const payload = {}\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: { propertyId: \"\" }\n }\n const response = await API.post('FrontendAPI-wingnuts', `/${props.wingnutUUID}/link`, init)\n if (response.success) {\n props.setSuccess()\n }\n }\n\n return (\n \n \n \n \n \n \n \n Unlink Property?\n Related Property data will be lost. This cannot be undone\n \n \n \n \n NO\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgCheckmark from \"./../../images/ic_check_circle.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n height: 340px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n height: 240px;\n justify-content: space-between;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 50px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n /* border: 1px yellow dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n`\n\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n align-self: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function UnlinkPropertySuccessPopup(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n \n \n \n Property successfully removed\n \n \n \n \n )\n}\n","import React, { useState } from \"react\"\nimport RemoveWingnutPopup from \"./../popup/RemoveWingnutPopup\"\nimport RemoveWingnutPopupSuccess from \"./../popup/RemoveWingnutSuccessPopup\"\nimport LeaveChangesSavedPopup from \"./../popup/LeaveChangesSavedPopup\"\nimport LeavePagePopup from \"./../popup/LeavePagePopup\"\nimport SaveConfigPopup from \"./../popup/SaveConfigPopup\"\nimport SaveOrAbandonPopup from \"./../popup/SaveOrAbandonPopup\"\nimport SaveConfigErrorPopup from \"./../popup/SaveConfigErrorPopup\"\nimport DiscardConfigPopup from \"./../popup/DiscardConfigPopup\"\nimport DeletePropertyPopup from \"./DeletePropertyPopup\"\nimport DeletePropertySuccessPopup from \"./DeletePropertyPopupSuccess\"\nimport UnlinkPropertyPopup from \"./UnlinkPropertyPopup\"\nimport UnlinkPropertySuccessPopup from \"./UnlinkPropertySuccessPopup\"\n\nexport default function PopupContainer(props) {\n const [isSuccess, setIsSuccess] = useState(false)\n const [isError, setIsError] = useState(false)\n\n const setSuccess = () => {\n setIsSuccess(true)\n }\n\n const setError = () => {\n setIsError(true)\n }\n\n switch (props.popupNumber) {\n case 0:\n return isSuccess ? (\n \n ) : (\n \n )\n case 1:\n return isSuccess ? (\n \n ) : (\n \n )\n case 2:\n return isSuccess ? (\n \n ) : (\n \n )\n case 3:\n return isSuccess ? (\n \n ) : (\n \n )\n case 4:\n return isError ? (\n \n ) : (\n \n )\n case 5:\n return (\n \n )\n case 6:\n return (\n \n )\n case 7:\n return isError ? (\n \n ) : (\n \n )\n default:\n return null\n }\n}\n\n","export default __webpack_public_path__ + \"static/media/ic_error.d4840f8d.svg\";","export default __webpack_public_path__ + \"static/media/ic_verified.b2060908.svg\";","export default __webpack_public_path__ + \"static/media/ic_viewer.e2bba864.svg\";","import styled from \"styled-components\";\nimport { COLORS } from \"./colors\";\n\n// Desktop & Tablet\n\nexport const Title = styled.h1`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 600;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n`;\n\nexport const H1 = styled.h1`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 600;\n font-size: 31px;\n line-height: 90%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`;\n\nexport const H2 = styled.h2`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 26px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`;\n\nexport const H3 = styled.h3`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 22px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`;\n\nexport const Subheader = styled.h4`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 15px;\n line-height: 130%;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n`;\n\nexport const BodyLarge = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 130%;\n color: #fff;\n`;\n\nexport const BodySmall = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 130%;\n`;\n\nexport const FieldText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 129.5%;\n color: ${COLORS.White};\n`;\n\nexport const ButtonText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`;\n\nexport const Label = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n /* text-transform: capitalize; */\n color: ${COLORS.HighlightLight};\n`;\n\nexport const TableText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 100%;\n letter-spacing: -0.01em;\n`;\n\nexport const LinkText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n`;\n\n\n\n\n// Mobile\n\nexport const TitleMobile = styled.h1`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 600;\n font-size: 30px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n`;\n\nexport const H1Mobile = styled.h1`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 600;\n font-size: 25px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n`;\n\nexport const H2Mobile = styled.h2`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 22px;\n line-height: 110%;\n letter-spacing: -0.01em;\n`;\n\nexport const H3Mobile = styled.h3`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 110%;\n letter-spacing: -0.01em;\n`;\n\nexport const SubheaderMobile = styled.h4`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 130%;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n`;\n\nexport const BodyLargeMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 130%;\n`;\n\nexport const BodySmallMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 130%;\n`;\n\nexport const FieldTextMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 129.5%;\n`;\n\nexport const ButtonTextMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 700;\n font-size: 15px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n`;\n\nexport const LabelMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n`;\n\nexport const TableTextMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 15px;\n line-height: 100%;\n letter-spacing: -0.01em;\n`;\n\nexport const LinkTextMobile = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 17px;\n line-height: 129.5%;\n`;","import React, { Link, useState, useContext, useEffect } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { useForm } from \"react-hook-form\"\nimport Image3 from \"./../../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../../images/ic_close.svg\"\nimport ImgCheck from \"./../../../images/ic_check_circle.svg\"\nimport ImgError from \"./../../../images/ic_error.svg\"\nimport ImgAccount from \"./../../../images/ic_account_white.svg\"\nimport ImgVerified from \"./../../../images/ic_verified.svg\"\nimport ImgViewer from \"./../../../images/ic_viewer.svg\"\nimport ImgProperty from \"./../../../images/ic_property.svg\"\nimport { COLORS } from \"../../../styles/colors\"\nimport { BodySmall, FieldText, H1, H2, H3 } from \"../../../styles/fonts\"\nimport { API, Auth } from \"aws-amplify\"\nimport { EmailValidatorStrings, ServerStrings } from \"./../../util/VaildatorStrings\"\nimport { DarkButtonSpinner } from \"./../../custom/Spinner\"\nimport { AccountContext } from \"./../../../auth/Account\"\nimport {\n ErrorContainer,\n Icon,\n Error,\n EmptyError,\n SuccessContainer,\n SuccessIcon,\n SuccessIcon2,\n Success,\n EmptySuccess,\n} from \"./../../custom/ValidatorStyles\"\n\n\nexport default function InviteNewUser(props) {\n\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n setError,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [isHoveringYes, setIsHoveringYes] = useState(false)\n const [selectedRole, setSelectedRole] = useState(\"read\"); \n const [companyName, setCompanyName] = useState(); \n const [disabled, setDisabled] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n const { getSession } = useContext(AccountContext)\n\n useEffect(() => {\n getSession().then(({ company }) => {\n setCompanyName(company)\n })\n }, [])\n\n const handleChange = (role) => {\n setSelectedRole(role); \n };\n\n const onSubmit = async (data) => {\n\n setDisabled(true)\n setShowSpinner(true)\n\n const invite = {\n email: data.email,\n company: companyName,\n role: selectedRole\n }\n\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: invite\n }\n\n API.post('FrontendAPI-companies', '/invite', init)\n .then((response) => {\n if (response.success) {\n props.refreshTable()\n props.inviteSuccess()\n } else {\n console.log(\"Call Failed\", response)\n }\n })\n .catch((err) => {\n console.error(err)\n setError('email', {\n type: \"invite\",\n message: 'Something went wrong with username',\n });\n })\n .finally(() => {\n setShowSpinner(false)\n setDisabled(false)\n })\n }\n\n return (\n \n

Invite new user

\n \n Please enter a valid email address of the user you would like to invite\n \n \n \n handleChange(\"admin\")}\n type='checkbox' />\n \n \n Admin\n \n \n \n handleChange(\"write\")}\n type='checkbox' />\n \n \n Editor\n \n \n \n handleChange(\"read\")}\n type='checkbox' />\n \n \n Viewer\n \n \n \n\n\n
\n ()[\\]\\\\.,;:\\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,}))$/,\n })}\n style={{ border: errors.email ? \"1px solid #D25353\" : null, paddingLeft: errors.email ? '9px' : null }}\n />\n {errors.email ? {EmailValidatorStrings(errors.email?.type)} : }\n\n \n \n \n \n
\n\n )\n}\n\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 705px;\n height: 466px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n /* justify-content: center; */\n width: auto;\n height: 100%;\n margin-left: 10px;\n margin-right: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-bottom: 30px;\n width: 650px;\n `}\n ${media.greaterThan(\"large\")`\n padding-bottom: 30px;\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-self: center;\n ${media.lessThan(\"743px\")`\n /* padding: 10px; */\n /* width: 350px; */\n /* width: auto; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-right: 17px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n /* width: 16px; */\n /* height: 16px; */\n /* margin-bottom: 17px; */\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst Checkbox = styled.input`\n border: 1px solid ${COLORS.White};\n box-sizing: border-box;\n border-radius: 3px;\n margin-right: 10px;\n width: 20px;\n height: 20px;\n background: transparent;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 50px;\n gap: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column-reverse;\n gap: 5px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 237px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonTextNo = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst ButtonTextYes = styled(ButtonTextNo)`\n color: ${COLORS.Base};\n`\n\nconst StackColumn = styled.div`\n /* border: 1px yellow dashed; */\n display: flex; \n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n align-self: center;\n gap: 0;\n `;\n\nconst StackRow = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n`;\n\nconst Stack = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n gap: 45px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n gap: 16px;\n align-items: start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n /* width: 500px; */\n display: flex;\n flex-direction: column;\n margin-top: 63px;\n /* margin-right: 83px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n`\n\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n /* max-width: 378px; */\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n align-self: center;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 100%; */\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledBodySmall = styled(BodySmall)`\n ${media.lessThan(\"743px\")`\n /* width: 330px; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n","import React, { Link, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { useForm } from \"react-hook-form\"\nimport Image3 from \"./../../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../../images/ic_close.svg\"\nimport ImgCheck from \"./../../../images/ic_check_circle.svg\"\nimport ImgError from \"./../../../images/ic_error.svg\"\nimport ImgAccount from \"./../../../images/ic_account_white.svg\"\nimport ImgVerified from \"./../../../images/ic_verified.svg\"\nimport ImgViewer from \"./../../../images/ic_viewer.svg\"\nimport ImgProperty from \"./../../../images/ic_property.svg\"\nimport { COLORS } from \"../../../styles/colors\"\nimport { BodySmall, FieldText, H1, H2, H3 } from \"../../../styles/fonts\"\nimport { API, Auth } from \"aws-amplify\"\n\n\n\nexport default function InviteSentSuccess(props) {\n\n const [isHoveringYes, setIsHoveringYes] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n\n const handleChange = (role) => {\n // setSelectedRole(role); \n };\n\n return (\n \n\n {/* -----------------------------Invite Sent Successfully */}\n \n \n

\n Your invite has been successfully sent\n

\n \n \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n onClick={props.closePopup}\n style={{ backgroundColor: isHovering == true ? COLORS.Secondary : \"transparent\", width: '205px' }}\n >\n CLOSE\n \n\n\n {/* {\n setIsHoveringYes(true)\n }}\n onMouseLeave={(e) => {\n setIsHoveringYes(false)\n }}\n style={{ opacity: isHoveringYes == true ? \"80%\" : \"100%\", width: '205px' }}\n >\n ADD NEW USER\n */}\n\n \n \n
\n\n
\n\n )\n}\n\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 705px;\n height: 466px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n /* justify-content: center; */\n width: auto;\n height: 100%;\n margin-left: 10px;\n margin-right: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-bottom: 30px;\n width: 650px;\n `}\n ${media.greaterThan(\"large\")`\n padding-bottom: 30px;\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-self: center;\n ${media.lessThan(\"743px\")`\n /* padding: 10px; */\n /* width: 350px; */\n /* width: auto; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-right: 17px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n /* width: 16px; */\n /* height: 16px; */\n /* margin-bottom: 17px; */\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst Checkbox = styled.input`\n border: 1px solid ${COLORS.White};\n box-sizing: border-box;\n border-radius: 3px;\n margin-right: 10px;\n width: 20px;\n height: 20px;\n background: transparent;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 50px;\n gap: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column-reverse;\n gap: 5px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 237px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonTextNo = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst ButtonTextYes = styled(ButtonTextNo)`\n color: ${COLORS.Base};\n`\n\nconst StackColumn = styled.div`\n /* border: 1px yellow dashed; */\n display: flex; \n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n align-self: center;\n gap: 0;\n `;\n\nconst StackRow = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n`;\n\nconst Stack = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n gap: 45px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n gap: 16px;\n align-items: start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n /* width: 500px; */\n display: flex;\n flex-direction: column;\n margin-top: 63px;\n /* margin-right: 83px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n`\n\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n /* max-width: 378px; */\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n align-self: center;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 100%; */\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledBodySmall = styled(BodySmall)`\n ${media.lessThan(\"743px\")`\n /* width: 330px; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;","import React, { Link, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { useForm } from \"react-hook-form\"\nimport Image3 from \"./../../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../../images/ic_close.svg\"\nimport ImgCheck from \"./../../../images/ic_check_circle.svg\"\nimport ImgError from \"./../../../images/ic_error.svg\"\nimport ImgAccount from \"./../../../images/ic_account_white.svg\"\nimport ImgVerified from \"./../../../images/ic_verified.svg\"\nimport ImgViewer from \"./../../../images/ic_viewer.svg\"\nimport ImgProperty from \"./../../../images/ic_property.svg\"\nimport { COLORS } from \"../../../styles/colors\"\nimport { BodySmall, FieldText, H1, H2, H3 } from \"../../../styles/fonts\"\nimport { API, Auth } from \"aws-amplify\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 705px;\n height: 466px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n /* justify-content: center; */\n width: auto;\n height: 100%;\n margin-left: 10px;\n margin-right: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-bottom: 30px;\n width: 650px;\n `}\n ${media.greaterThan(\"large\")`\n padding-bottom: 30px;\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-self: center;\n ${media.lessThan(\"743px\")`\n /* padding: 10px; */\n /* width: 350px; */\n /* width: auto; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-right: 17px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n /* width: 16px; */\n /* height: 16px; */\n /* margin-bottom: 17px; */\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-items: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\nconst Checkbox = styled.input`\n border: 1px solid ${COLORS.White};\n box-sizing: border-box;\n border-radius: 3px;\n margin-right: 10px;\n width: 20px;\n height: 20px;\n background: transparent;\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 50px;\n gap: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column-reverse;\n gap: 5px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 237px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonTextNo = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst ButtonTextYes = styled(ButtonTextNo)`\n color: ${COLORS.Base};\n`\n\nconst StackColumn = styled.div`\n /* border: 1px yellow dashed; */\n display: flex; \n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n align-self: center;\n gap: 0;\n `;\n\nconst StackRow = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n`;\n\nconst Stack = styled.div`\n /* border: 1px red dashed; */\n display: flex; \n flex-direction: row;\n justify-content: start;\n align-items: center;\n gap: 45px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n gap: 16px;\n align-items: start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n /* width: 500px; */\n display: flex;\n flex-direction: column;\n margin-top: 63px;\n /* margin-right: 83px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n`\n\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 384px;\n /* max-width: 378px; */\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n align-self: center;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 100%; */\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledBodySmall = styled(BodySmall)`\n ${media.lessThan(\"743px\")`\n /* width: 330px; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nexport default function ChangePlan(props) {\n\n const [isHovering, setIsHovering] = useState(false)\n const [isHoveringYes, setIsHoveringYes] = useState(false)\n\n return (\n \n\n {/* -----------------------------Change Plan */}\n \n \n

\n You don’t have any more seats available on your plan\n

\n

Please upgrade your plan to add more users

\n \n \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n onClick={props.closePopup}\n style={{ backgroundColor: isHovering == true ? COLORS.Secondary : \"transparent\", width: '205px' }}\n >\n CLOSE\n \n\n {/* {\n setIsHoveringYes(true)\n }}\n onMouseLeave={(e) => {\n setIsHoveringYes(false)\n }}\n style={{ opacity: isHoveringYes == true ? \"80%\" : \"100%\", width: '205px' }}\n >\n CHANGE MY PLAN\n */}\n\n \n
\n\n
\n\n )\n}\n","import React, { useState, useEffect, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgClose from \"./../../../images/ic_close.svg\"\nimport { COLORS } from \"../../../styles/colors\"\nimport InviteNewUser from './InviteNewUser'\nimport InviteSentSuccess from './InviteSentSuccess'\nimport ChangePlan from './ChangePlan'\nimport { API, Auth } from \"aws-amplify\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 705px;\n height: 476px;\n display: flex;\n flex-direction: column;\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n /* justify-content: center; */\n width: auto;\n height: 100%;\n margin-left: 10px;\n margin-right: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding-bottom: 30px;\n width: 650px;\n `}\n ${media.greaterThan(\"large\")`\n padding-bottom: 30px;\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nexport default function InviteUserRouter(props) {\n\n const [inviteFlow, setInviteFlow] = useState()\n const [firstLoad, setFirstLoad] = useState(false)\n\n useEffect(() => {\n if(firstLoad == false){\n getCompanySeats()\n setFirstLoad(true)\n }\n }, [])\n\n const getCompanySeats = async (data) => {\n \n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` }\n }\n \n API.get('FrontendAPI-companies', '/details', init)\n .then((response) => {\n if (response.success) {\n if(response.data && response.data.config && response.data.config.seats){\n if(props.seatsUsed >= response.data.config.seats){\n setInviteFlow(2)\n } else {\n setInviteFlow(0)\n }\n }\n }\n })\n .catch((err) => {\n console.error(err)\n })\n }\n\n const inviteSuccess = () => {\n setInviteFlow(1)\n }\n\n const changePlan = () => {\n setInviteFlow(2)\n }\n\n const backToInvite = () => {\n setInviteFlow(0)\n }\n\n\n return (\n \n \n \n \n\n {/* -----------------------------Change User & Enter Email */}\n\n {(() => {\n switch (inviteFlow) {\n case 0:\n return \n case 1:\n return ;\n case 2:\n return \n default:\n return null;\n }\n })()}\n \n \n\n )\n}\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport { Link, useHistory, useLocation } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport MediaQuery from \"react-responsive\"\nimport Image from \"./../../images/ic_help_green.svg\"\nimport ImgArrowBack from \"./../../images/ic_arrow_back.svg\"\nimport Modal from \"react-modal\"\nimport PopupContainer from \"./../popup/PopupContainer\"\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\nimport { cleanUUIDFromPath, getUUIDFromPath } from \"../util/CleanUUID\"\nimport InviteUserRouter from \"../users/new_user_modal/InviteUserRouter\"\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n\nexport default function Header(props) {\n const history = useHistory()\n var location = useLocation()\n\n const [isHovering, setIsHovering] = useState(false)\n const [isHoveringBack, setIsHoveringBack] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [isInviteModalOpen, setIsInviteModalOpen] = useState(false)\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n const [state, setState] = useState({\n itemUUID: \"\",\n heading: \"Dashboard\",\n modal: false,\n date: \"\",\n showBack: true,\n showButton: true,\n buttonText: \"SUBMIT\",\n buttonIcon: false,\n buttonDestination: \"\",\n popupNumber: null,\n buttonTransparent: false\n })\n\n // So dev can manually pull token from UI\n const getToken = async () => {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n\n if(process.env.REACT_APP_API_DOMAIN !== \"prod\"){\n console.log(\"TOKEN\", jwt)\n }\n }\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n useEffect(() => {\n var pathUUID = getUUIDFromPath(location.pathname);\n var pathname = cleanUUIDFromPath(location.pathname);\n\n switch (pathname) {\n case \"help\":\n return setState({ heading: \"Help\", showBack: true, showButton: false, popupNumber: null })\n case `dashboard/${pathUUID}`:\n getCompany()\n return\n case \"account\":\n return setState({\n heading: \"Account Settings\",\n showBack: false,\n showButton: true,\n buttonText: \"HELP\",\n buttonIcon: true,\n buttonDestination: \"/portal/help\",\n popupNumber: null,\n buttonTransparent: true,\n })\n case \"wingnut\":\n return setState({\n heading: \"Wingnuts Overview\",\n showBack: false,\n showButton: isAuth ? true : false,\n buttonText: \"ADD WINGNUT\",\n buttonIcon: false,\n buttonDestination: \"/portal/wingnut/add\",\n popupNumber: null,\n buttonTransparent: false,\n })\n case \"wingnut/detail\":\n getWingnutId()\n return\n case \"wingnut/add\":\n return setState({ heading: \"Add Wingnut\", showBack: true, showButton: false, popupNumber: null })\n case \"wingnut/link\":\n return setState({ heading: \"Link Wingnut\", showBack: true, showButton: false, popupNumber: null })\n case \"property\":\n return setState({\n heading: \"Properties Overview\",\n showBack: false,\n showButton: isAuth ? true : false,\n buttonText: \"ADD PROPERTY\",\n buttonIcon: false,\n buttonDestination: \"/portal/property/add\",\n popupNumber: null,\n buttonTransparent: false,\n })\n case \"property/add\":\n return setState({ heading: \"Add Property\", showBack: true, showButton: false, popupNumber: null })\n case \"property/link\":\n return setState({ heading: \"Link Wingnut\", showBack: true, showButton: false, popupNumber: null })\n case \"property/detail\":\n getPropertyName()\n return\n case \"notification\":\n return setState({ heading: \"Notifications\", showBack: false, showButton: false, popupNumber: null })\n case \"notification/edit\":\n return setState({ heading: \"Notifications\", showBack: true, showButton: false, popupNumber: null })\n case \"users\":\n return setState({\n heading: \"Users\",\n showBack: true,\n showButton: false,\n popupNumber: null\n })\n }\n }, [location])\n\n\n\n const getCompany = async (pathURL) => {\n // time should be in the URL as 1683255098000\n const { company } = await getSession()\n\n var path = \"\"\n var date = \"\"\n\n if(pathURL !== undefined){\n path = pathURL.substring(8).split(\"/\")\n } else {\n path = location.pathname.substring(8).split(\"/\")\n }\n\n const selection = path[path.length - 1]\n\n if(selection.length > 11){\n date = getDashboardDate(selection)\n } else {\n date = getDashboardDate()\n }\n\n setState({\n heading: `${company}`,\n date: `${date}`,\n showBack: false,\n showButton: true,\n buttonText: \"HELP\",\n buttonIcon: true,\n buttonDestination: \"/portal/help\",\n popupNumber: null,\n buttonTransparent: true,\n })\n }\n\n const getDashboardDate = (time) => {\n var date = null\n var formattedDate = ''\n\n if(time !== undefined && !isNaN(time)){\n date = new Date(Number(time));\n\n const monthAndYear = date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' }).toUpperCase();\n formattedDate = `${monthAndYear}`; // Output: \"MARCH 2023\"\n\n } else {\n date = new Date(); \n const dayOfWeek = date.toLocaleDateString('en-US', { weekday: 'long' }).toUpperCase();\n const monthAndDay = date.toLocaleDateString('en-US', { month: 'long', day: 'numeric' }).toUpperCase();\n \n // Get the day suffix (e.g. \"th\")\n const daySuffix = (() => {\n const dayOfMonth = date.getDate();\n if (dayOfMonth >= 11 && dayOfMonth <= 13) {\n return 'th';\n }\n switch (dayOfMonth % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n })();\n \n formattedDate = `${dayOfWeek}, ${monthAndDay}${daySuffix}`; // Output: \"THURSDAY, MARCH 24th\"\n }\n \n return formattedDate\n }\n\n const getPropertyName = async () => {\n setState({\n itemUUID: \"\",\n heading: \"\",\n date: \"\",\n showBack: false,\n showButton: false,\n buttonText: \"\",\n buttonIcon: false,\n buttonDestination: false,\n popupNumber: null,\n buttonTransparent: false,\n })\n\n var path = location.pathname.substring(8).split(\"/\")\n const uuid = path[path.length - 1]\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n const response = await API.get('FrontendAPI-properties', `/${uuid}`, init)\n if (response.success) {\n\n setState({\n itemUUID: uuid,\n heading: response.data.config.name,\n date: \"\",\n showBack: false,\n showButton: isAuth ? true : false,\n buttonText: \"PROPERTY DASHBOARD\",\n buttonIcon: false,\n buttonDestination: `/portal/dashboard/${response.data.id}`,\n popupNumber: null,\n buttonTransparent: false\n })\n }\n }\n\n const getWingnutId = async () => {\n setState({\n itemUUID: \"\",\n heading: \"\",\n date: \"\",\n showBack: false,\n showButton: false,\n buttonText: \"\",\n buttonIcon: false,\n buttonDestination: false,\n popupNumber: null,\n buttonTransparent: false,\n })\n\n var path = location.pathname.substring(8).split(\"/\")\n const uuid = path[path.length - 1]\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n const response = await API.get('FrontendAPI-wingnuts', `/${uuid}`, init)\n if (response.success) {\n setState({\n itemUUID: uuid,\n heading: `Wingnut ${response.data.externalId}`,\n date: \"\",\n showBack: true,\n showButton: isAuth ? true : false,\n buttonText: \"REMOVE WINGNUT\",\n buttonIcon: false,\n buttonDestination: `/portal/wingnut/detail/${uuid}`,\n popupNumber: 0,\n buttonTransparent: true,\n })\n }\n \n }\n\n const closePopup = () => {\n setIsOpen(false)\n }\n\n return (\n
\n \n \n \n\n \n \n \n {state.showBack ? \n {\n setIsHoveringBack(true)\n }}\n onMouseLeave={(e) => {\n setIsHoveringBack(false)\n }}\n onClick={history.goBack} >\n \n \n Back\n \n \n : \n null}\n\n \n {state.heading}\n {\n state.date && state.date.length !== 0 \n ? \n : null\n }\n \n {state.date}\n \n\n {process.env.REACT_APP_API_NAME}\n \n\n \n {state.showButton ? (\n \n {state.buttonTransparent ? \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n onClick={(e) => {\n setIsHovering(false)\n if (state.popupNumber != null) {\n setIsOpen(true)\n }\n }}\n >\n {state.buttonIcon ? : null}\n \n {state.buttonText}\n \n \n :\n }\n \n ) : null}\n \n\n \n {state.showButton ? (\n \n {state.buttonTransparent ? \n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n onClick={(e) => {\n setIsHovering(false)\n if (state.popupNumber != null) {\n setIsOpen(true)\n }\n }}\n >\n {state.buttonIcon ? : null}\n\n \n {state.buttonText}\n \n \n :\n \n }\n \n ) : null}\n \n\n \n \n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n background-color: ${COLORS.Base};\n height: 100px;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n /* margin-bottom: 20px; */\n ${media.lessThan(\"743px\")`\n align-content: center;\n height: 100%;\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-content: center;\n /* margin-bottom: 20px; */\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n align-content: center;\n justify-content: center;\n `}\n`\n\nconst HeaderContainer2 = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-content: center;\n /* margin-bottom: 20px; */\n ${media.lessThan(\"743px\")`\n /* flex-direction: column; */\n /* align-content: center; */\n justify-content: center;\n `}\n`\n\nconst TitleContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-top: 20px;\n ${media.lessThan(\"743px\")`\n align-content: center;\n width: 100%;\n /* align-self: center; */\n `}\n`\n\nconst HeaderText = styled.h2`\nfont-family: 'Blinker';\nfont-style: normal;\nfont-weight: 600;\nfont-size: 28px;\nline-height: 84.5%;\ndisplay: flex;\nalign-items: center;\nletter-spacing: -0.01em;\ncolor: #FFFFFF;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n /* max-width: 95%; */\n /* text-wrap: wrap; */\n /* text-align: center; */\n /* margin-top: 10px; */\n `}\n`\n\nconst HeaderLine = styled.h2`\n border: 1px solid #4C628C;\n height: 28px;\n margin-left: 14px;\n margin-right: 14px;\n/* transform: rotate(90deg); */\n`\n\nconst HeaderDate = styled.h2`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 15px;\n line-height: 130%;\n display: flex;\n align-items: center;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: #FFFFFF;\n`\n\nconst ModeText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.ErrorOrange};\n padding-top: 10px;\n padding-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n max-width: 95%;\n text-wrap: wrap;\n text-align: center;\n\n `}\n`\n\nconst BackText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n color: ${COLORS.HighlightMedium};\n margin-bottom: 10px;\n cursor: pointer;\n transform: translateZ(1px);\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n margin-top: 20px;\n /* width: 175px; */\n padding-left: 40px;\n padding-right: 40px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: ${COLORS.Green};\n color: ${COLORS.White};\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n text-align: center;\n letter-spacing: 0.05em;\n margin-right: 30px;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonTransparent = styled(Button)`\n background: transparent;\n :hover {\n opacity: 1;\n background: ${COLORS.Secondary};\n }\n`;\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 15px;\n height: 15px;\n margin-right: 9px;\n margin-bottom: 2.5px;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.div`\n /* border: 1px red dashed; */\n height: 25px;\n display: flex;\n flex-direction: row;\n align-content: center;\n cursor: pointer;\n margin-bottom: 5px;\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n align-self: center;\n `}\n`;\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n color: black;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n /* margin-top: 3px; */\n /* line-height: 130%; */\n`;\n\nconst ButtonTransparentText = styled(ButtonText)`\n color: ${COLORS.White};\n`;\n\nconst ArrowIconRight = styled.img`\n width: auto;\n height: 16px;\n margin-right: 5px; \n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n `}\n ${media.greaterThan(\"large\")`\n align-self: center;\n `}\n`","export default __webpack_public_path__ + \"static/media/ic_success.2be48295.svg\";","import { Auth } from \"aws-amplify\"\nimport React, { useEffect, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport { formatPhoneNumber } from \"../util/StringUtil\"\nimport ErrorImage from \"./../../images/ic_alert.svg\"\nimport Image from \"./../../images/ic_success.svg\"\nimport { ButtonSpinner } from \"./../custom/Spinner\"\nimport {\n EmptyError,\n EmptySuccess,\n Error,\n ErrorContainer,\n Icon,\n Success,\n SuccessContainer,\n SuccessIcon2,\n} from \"./../custom/ValidatorStyles\"\nimport { PhoneValidatorStrings, ServerStrings, ValidatorStrings } from \"./../util/VaildatorStrings\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n width: auto;\n margin-top: 20px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px red dashed; */\n /* width: 500px; */\n display: flex;\n flex-direction: column;\n /* margin-top: 46px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-top: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n`\n\nconst HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 20px;\n`\n\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n /* margin-top: 6px; */\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n max-width: 378px;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n width: 133px;\n height: 40px;\n border: 1px #63c085 solid;\n background: transparent;\n cursor: pointer;\n border-radius: 36px;\n text-align: center;\n transition-duration: 0.5s;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-bottom: 18px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n /* border: 1px red dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconSuccess = styled.img`\n width: 20;\n height: 20px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SectionContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nexport default function AccountDetailsForm(props) {\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [showSpinner, setShowSpinner] = useState(false)\n const [serverError, setServerError] = useState(null)\n const [success, setSuccess] = useState(false)\n const [disabled, setDisabled] = useState(false)\n\n const onSubmit = async (data) => {\n const { newFirstName, newLastName, newPhoneNumber } = data\n if (newFirstName || newLastName || newPhoneNumber) {\n setServerError(null)\n setSuccess(false)\n setDisabled(true)\n setShowSpinner(true)\n\n const formattedPhoneNumber = formatPhoneNumber(newPhoneNumber)\n await Auth.currentAuthenticatedUser()\n .then((user) => {\n const { firstName, lastName, phoneNumber } = props\n return Auth.updateUserAttributes(user, {\n given_name: newFirstName ? newFirstName : firstName,\n family_name: newLastName ? newLastName : lastName,\n phone_number: newPhoneNumber ? formattedPhoneNumber : phoneNumber,\n })\n })\n .then((response) => {\n setServerError(null)\n setShowSpinner(false)\n setSuccess(true)\n setDisabled(false)\n reset({ newFirstName: \"\", newLastName: \"\", newPhoneNumber: \"\" })\n props.updateForm()\n })\n .catch((err) => {\n setServerError(ServerStrings(err.name))\n setShowSpinner(false)\n setSuccess(false)\n setDisabled(false)\n })\n }\n }\n\n useEffect(() => {\n if (success) {\n const timer = setTimeout(() => {\n setSuccess(false)\n }, 2000)\n return () => clearTimeout(timer)\n }\n }, [success])\n\n return (\n \n
\n Account Details\n \n \n \n {errors.newFirstName ? {ValidatorStrings(errors.newFirstName?.type)} : }\n\n \n \n {errors.newLastName ? {ValidatorStrings(errors.newLastName?.type)} : }\n\n \n \n {errors.newPhoneNumber ? (\n {PhoneValidatorStrings(errors.newPhoneNumber?.type)}\n ) : serverError ? (\n \n \n {serverError}\n \n ) : (\n \n )}\n \n\n \n \n {success ? (\n \n \n Your settings have been saved!\n \n ) : (\n \n )}\n \n
\n
\n )\n}\n\n// https://codesandbox.io/s/showhide-password-on-toggle-in-react-hooks-95qcz?file=/src/App.js:1079-1084\n// https://dev.to/detoner777/show-hide-password-on-toggle-in-react-hooks-1lph\n","import React, { useState, useContext, useEffect } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { CognitoUserAttribute } from \"amazon-cognito-identity-js\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image3 from \"./../../images/ic_success.svg\"\nimport ImageBlueEye from \"./../../images/eye_blue.svg\"\nimport { ButtonSpinner } from \"./../custom/Spinner\"\nimport { EmailValidatorStrings, ServerStrings } from \"./../util/VaildatorStrings\"\nimport {\n ErrorContainer,\n Icon,\n Error,\n EmptyError,\n SuccessContainer,\n SuccessIcon,\n SuccessIcon2,\n Success,\n EmptySuccess,\n} from \"./../custom/ValidatorStyles\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n width: auto;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n /* width: 500px; */\n display: flex;\n flex-direction: column;\n margin-top: 41px;\n /* margin-right: 83px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n`\n\nconst InputContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 100%;\n`\n\nconst EyeIcon = styled.img`\n /* border: 1px red dashed; */\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -50px;\n /* margin-top: 46px;\n margin-bottom: 8px; */\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n max-width: 378px;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n margin-top: 10px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 133px;\n height: 40px;\n border: 1px solid #63c085;\n background: transparent;\n border-radius: 30px;\n color: ${COLORS.White};\n cursor: pointer;\n text-align: center;\n transition-duration: 0.5s;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-bottom: 18px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function ChangeEmailForm() {\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession, authenticateChangeEmail } = useContext(AccountContext)\n const [success, setSuccess] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n const [passwordShown, setPasswordShown] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [serverError, setServerError] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n\n const togglePasswordVisiblity = () => {\n setPasswordShown(passwordShown ? false : true)\n }\n\n const onSubmit = async (data) => {\n setServerError(null)\n setDisabled(true)\n setSuccess(false)\n setShowSpinner(true)\n\n getSession().then(({ user, email }) => {\n authenticateChangeEmail(email, data.password)\n .then(() => {\n const attributes = [new CognitoUserAttribute({ Name: \"email\", Value: data.newEmail })]\n\n user.updateAttributes(attributes, (err, results) => {\n if (err) {\n console.log(\"Error\", err)\n setServerError(ServerStrings(err.name))\n setShowSpinner(false)\n setSuccess(false)\n setDisabled(false)\n } else {\n reset({ email: \"\", newEmail: \"\", password: \"\" })\n setServerError(null)\n setSuccess(true)\n setShowSpinner(false)\n setDisabled(false)\n }\n })\n })\n .catch((err) => {\n setServerError(ServerStrings(err.name))\n setShowSpinner(false)\n setSuccess(false)\n setDisabled(false)\n })\n })\n }\n\n useEffect(() => {\n if (success) {\n const timer = setTimeout(() => {\n setSuccess(false)\n }, 2000)\n return () => clearTimeout(timer)\n }\n }, [success])\n\n return (\n \n
\n Change Email\n \n value === getValues().newEmail },pattern:\n /^(([^<>()[\\]\\\\.,;:\\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,}))$/,\n })}\n style={{ border: errors.email ? \"1px solid #D25353\" : null, paddingLeft: errors.email ? '9px' : null }}\n />\n {errors.email ? {EmailValidatorStrings(errors.email?.type)} : }\n\n \n value === getValues().email }, pattern:\n /^(([^<>()[\\]\\\\.,;:\\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,}))$/,\n })}\n style={{ border: errors.newEmail ? \"1px solid #D25353\" : null, paddingLeft: errors.newEmail ? '9px' : null }}\n />\n {errors.newEmail ? {EmailValidatorStrings(errors.newEmail?.type)} : }\n\n \n
\n {\" \"}\n \n \n \n {\" \"}\n
\n {errors.password ? (\n {EmailValidatorStrings(errors.password?.type)}\n ) : serverError ? (\n \n \n {serverError}\n \n ) : (\n \n )}\n \n \n {success ? (\n \n \n Your settings have been saved!\n \n ) : (\n \n )}\n \n \n
\n )\n}\n\n// https://codesandbox.io/s/showhide-password-on-toggle-in-react-hooks-95qcz?file=/src/App.js:1079-1084\n// https://dev.to/detoner777/show-hide-password-on-toggle-in-react-hooks-1lph\n","import React, { useState, useContext, useEffect } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/ic_alert.svg\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image3 from \"./../../images/ic_success.svg\"\nimport ImageBlueEye from \"./../../images/eye_blue.svg\"\nimport { ButtonSpinner } from \"./../custom/Spinner\"\nimport { ValidatorStrings, ServerStrings } from \"./../util/VaildatorStrings\"\nimport {\n ErrorContainer,\n Icon,\n Error,\n EmptyError,\n SuccessContainer,\n SuccessIcon,\n SuccessIcon2,\n Success,\n EmptySuccess,\n} from \"./../custom/ValidatorStyles\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n width: auto;\n margin-bottom: 30px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n\n `}\n`\n\nconst InputContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 100%;\n`\n\nconst EyeIcon = styled.img`\n /* border: 1px red dashed; */\n align-self: center;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -50px;\n /* margin-top: 46px;\n margin-bottom: 8px; */\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n /* width: 500px; */\n display: flex;\n margin-top: 20px;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n flex-direction: column;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 49px;\n /* width: 384px; */\n `}\n`\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n /* margin-top: 6px; */\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n max-width: 378px;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 10px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 133px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: transparent;\n color: ${COLORS.White};\n cursor: pointer;\n text-align: center;\n transition-duration: 0.5s;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-bottom: 18px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n :hover {\n }\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function ChangePassword() {\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession } = useContext(AccountContext)\n const [showSpinner, setShowSpinner] = useState(false)\n const [currentPasswordShown, setCurrentPasswordShown] = useState(false)\n const [newPasswordShown, setNewPasswordShown] = useState(false)\n const [confirmPasswordShown, setConfirmPasswordShown] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [validatorError, setValidatorError] = useState(null)\n const [success, setSuccess] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n\n const toggleCurrentPasswordVisiblity = () => {\n setCurrentPasswordShown(currentPasswordShown ? false : true)\n }\n\n const toggleNewPasswordVisiblity = () => {\n setNewPasswordShown(newPasswordShown ? false : true)\n }\n\n const toggleConfirmPasswordVisiblity = () => {\n setConfirmPasswordShown(confirmPasswordShown ? false : true)\n }\n\n const onSubmit = async (data) => {\n setShowSpinner(true)\n setValidatorError(null)\n setSuccess(false)\n setDisabled(true)\n\n getSession().then(({ user }) => {\n user.changePassword(data.currentPassword, data.newPassword, (err, result) => {\n if (err) {\n console.error(err)\n setValidatorError(ServerStrings(err.name))\n setShowSpinner(false)\n setSuccess(false)\n setDisabled(false)\n } else {\n reset({ currentPassword: \"\", newPassword: \"\", confirmPassword: \"\" })\n setValidatorError(null)\n setSuccess(true)\n setShowSpinner(false)\n setDisabled(false)\n }\n })\n })\n }\n\n useEffect(() => {\n if (success) {\n const timer = setTimeout(() => {\n setSuccess(false)\n }, 2000)\n return () => clearTimeout(timer)\n }\n }, [success])\n\n return (\n \n
\n Change Password\n \n
\n {\" \"}\n \n \n \n {\" \"}\n
\n {errors.currentPassword ? {ValidatorStrings(errors.currentPassword?.type)} : }\n \n
\n {\" \"}\n \n value === getValues().confirmPassword },})}\n style={{ border: errors.newPassword ? \"1px solid #D25353\" : null, paddingLeft: errors.newPassword ? '9px' : null }}\n />\n \n {\" \"}\n
\n {errors.newPassword ? {ValidatorStrings(errors.newPassword?.type)} : }\n \n
\n {\" \"}\n \n value === getValues().newPassword },})}\n style={{ border: errors.confirmPassword ? \"1px solid #D25353\" : null, paddingLeft: errors.confirmPassword ? '9px' : null }}\n />\n \n {\" \"}\n
\n {errors.confirmPassword ? (\n {ValidatorStrings(errors.confirmPassword?.type)}\n ) : validatorError ? (\n \n \n {validatorError}\n \n ) : (\n \n )}\n \n \n {success ? (\n \n \n Your settings have been saved!\n \n ) : (\n \n )}\n \n \n
\n )\n}\n\n// https://codesandbox.io/s/showhide-password-on-toggle-in-react-hooks-95qcz?file=/src/App.js:1079-1084\n// https://dev.to/detoner777/show-hide-password-on-toggle-in-react-hooks-1lph\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport AccountDetailsForm from \"../form/AccountDetailsForm\"\nimport ChangeEmailForm from \"../form/ChangeEmailForm\"\nimport ChangePassword from \"../form/ChangePassword\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: flex-start\n margin-bottom: 50px;\n margin-top: -7px;\n padding: 20px;\n background-color: #0e1c36;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: 100%;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n `}\n`\n\nconst FormContainer = styled.div`\n /* border: 1px yellow dashed; */\n width: 40%;\n min-width: 379px;\n display: flex;\n flex-direction: column;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n min-width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n width: 100%;\n `}\n`\n\n\nexport default function EditAccount() {\n const { getSession } = useContext(AccountContext)\n\n const [state, setState] = useState({\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n phoneNumber: \"\",\n formattedNumber: \"\",\n })\n\n useEffect(() => {\n updateForm()\n }, [])\n\n const updateForm = () => {\n getSession().then(({ email, given_name, family_name, phone_number }) => {\n // Format the phone number for the update account screen\n const trimNumber = phone_number.slice(2)\n const formattedNumber = `(${trimNumber.substring(0, 3)}) ${trimNumber.substring(3, 6)} ${trimNumber.substring(6,10)}`\n\n setState({\n email: email,\n firstName: given_name,\n lastName: family_name,\n phoneNumber: phone_number,\n formattedNumber: formattedNumber,\n })\n })\n }\n\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n","\n\nconst NotificationDefaults = [\n {\n key: \"outdoorTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null\n },\n {\n key: \"mechanicalRoomTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 115, \n min: \"50 °F\", \n max: \"115 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n },\n {\n key: \"mechanicalRoomCombustionAirTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n },\n {\n key: \"boilerSupplyHeaderTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 130, \n maxValue: 200, \n min: \"130 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n },\n {\n key: \"boilerReturnHeaderTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\",\n userMinValue: null,\n userMaxValue: null, \n unit: \"°F\" \n },\n {\n key: \"boilerExhaustTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 400, \n min: \"50 °F\", \n max: \"400 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"boilerInletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"boilerOutletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 130, \n maxValue: 200, \n min: \"130 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"hotWaterTankSupplyHeaderTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 80, \n maxValue: 160, \n min: \"80 °F\", \n max: \"160 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"hotWaterTankReturnHeaderTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"hotWaterTankExhaustTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 400, \n min: \"50 °F\", \n max: \"400 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"hotWaterTankInletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"hotWaterTankOutletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 80, \n maxValue: 160, \n min: \"80 °F\", \n max: \"160 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"indirectTankInletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 130, \n maxValue: 200, \n min: \"130°F\", \n max: \"200°F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"indirectTankOutletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 100, \n maxValue: 200, \n min: \"100 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"roomTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 115, \n min: \"50 °F\", \n max: \"115 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"supplyLineTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 130, \n maxValue: 200, \n min: \"130 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"returnLineTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"storageTankInletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"storageTankOutletTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"bypassLineTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"heatingCoilLineTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"sideStreamFilterTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"makeUpWaterTemperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 50, \n maxValue: 200, \n min: \"50 °F\", \n max: \"200 °F\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"°F\" \n }, \n {\n key: \"temperature\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"systemPumpCurrent\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0 A\", \n max: \"999 A\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"Amps\" \n }, \n {\n key: \"boilerPumpCurrent\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0 A\", \n max: \"999 A\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"Amps\" \n }, \n {\n key: \"recirculationPumpCurrent\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0 A\", \n max: \"999 A\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"Amps\" \n }, \n {\n key: \"indirectTankPumpCurrent\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0 A\", \n max: \"999 A\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"Amps\" \n }, \n {\n key: \"storageTankPumpCurrent\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0 A\", \n max: \"999 A\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"Amps\" \n }, \n {\n key: \"current\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"boilerSystemPressure\",\n label: \"\",\n thresholdStatus: null,\n minValue: 10, \n maxValue: 80, \n min: \"10 PSI\", \n max: \"80 PSI\", \n userMinValue: null,\n userMaxValue: null,\n unit: \"PSI\" \n }, \n {\n key: \"door\", \n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"window\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"occupancy\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"leak\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"onOff\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"systemAquastatState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"boilerAquastatState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"hotWaterTankAquastatState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"boilerLowLimitState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"hotWaterTankHighLimitState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"hotWaterTankLowLimitState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"?\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"boilerControlRelayState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"hotWaterTankControlRelayState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"systemPumpcontrolRelayState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"boilerPumpControlRelayState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\",\n userMinValue: null,\n userMaxValue: null, \n unit: null \n }, \n {\n key: \"recirculationPumpControlRelayState\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }, \n {\n key: \"state\",\n label: \"\",\n thresholdStatus: null,\n minValue: 0, \n maxValue: 999, \n min: \"0\",\n max: \"999\", \n userMinValue: null,\n userMaxValue: null,\n unit: null \n }\n ]\n\n export default NotificationDefaults","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport NotificationDefaults from './NotificationDefaults'\nimport Modal from \"react-modal\"\nimport PopupContainer from \"../popup/PopupContainer\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function NotificationSaveDiscard(props) {\n\n const [didConfigChange, setDidConfigChange] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [popupNumber, setPopupNumber] = useState(4)\n const [wingnutDetails, setWingnutDetails] = useState()\n // const [refresh, setRefresh] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n const [saveDisabled, setSaveDisabled] = useState(false)\n const [errorArray, setErrorArray] = useState([])\n \n\n useEffect(() => {\n setDidConfigChange(props.activeChange)\n }, [props.activeChange])\n\n useEffect(() => {\n if(props.saveAllPopup === true){\n showSavePopup()\n } else {\n setShowSpinner(false)\n }\n }, [props.saveAllPopup])\n\n useEffect(() => {\n if(props.discardAllPopup === true){\n showPopup(5)\n }\n }, [props.discardAllPopup])\n\n useEffect(() => {\n if(props.saveOrAbandonPopup === true){\n showPopup(7)\n } \n }, [props.saveOrAbandonPopup])\n\n const showSavePopup = () => {\n if(errorArray && errorArray.length !== 0){\n showPopup(6)\n } else {\n showPopup(4)\n }\n }\n\n const showPopup = (number) => {\n setPopupNumber(number)\n setIsOpen(true)\n }\n\n const closePopup = () => {\n setIsOpen(false)\n props.resetPopupState()\n }\n\n\n // Passed into the Popup\n const saveConfiguration = async () => {\n setShowSpinner(true)\n setTimeout(() => {\n props.didPushSaveData()\n setShowSpinner(false)\n }, 1000)\n}\n\n const discardChanges = () => {\n setDidConfigChange(false)\n props.willRefreshData();\n setShowSpinner(true)\n setTimeout(() => {\n setShowSpinner(false)\n }, 1000)\n }\n\n \n\n return (\n\n \n \n \n \n\n \n \n DISCARD CHANGES\n \n \n SAVE CONFIGURATION\n \n \n \n )\n\n}\n\n\nconst OuterContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n align-content: center;\n margin-right: 22px; \n /* min-height: 1400px; */\n`;\n\nconst SaveConfigContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n /* margin-right: 20px; */\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst SaveConfigContainerMobile = styled(SaveConfigContainer)`\n /* border: 1px red dashed; */\n background: #0e1c36;\n height: 60px;\n margin-top: -10px;\n padding-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n height: 10px;\n `}\n`;\n\nconst SaveConfig = styled.button`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n width: 241px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n background: none;\n align-self: center;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SaveConfigMobile = styled(SaveConfig)`\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst BtnText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: flex;\n `}\n`\n\nconst BtnTextMobile = styled(BtnText)`\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n z-index: 10;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: flex;\n `}\n `;\n\n const ButtonText2Mobile = styled(ButtonText2)`\n margin-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n `;\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n }\n\n\n // const setError = (isError, label, minOrMax) => {\n // const errorName = label + minOrMax\n\n // if(isError === true){\n // // add error\n // if(errorArray.some(error => error === errorName)){\n // // error already been set\n // } else {\n // setErrorArray([...errorArray, errorName])\n // }\n\n // } else {\n // // remove error\n // let localArray = errorArray\n\n // if(localArray.length !== 0){\n // let index = localArray.findIndex(error => {\n // return error === errorName\n // })\n // localArray.splice(index, 1)\n // setErrorArray(localArray)\n // }\n // }\n // }","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport AccountDetailsForm from \"../form/AccountDetailsForm\"\nimport ChangeEmailForm from \"../form/ChangeEmailForm\"\nimport ChangePassword from \"../form/ChangePassword\"\nimport EditAccount from \"./EditAccount\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\nimport NotificationSaveDiscard from \"../notification/NotificationSaveDiscard\"\n\n\nexport default function Account() {\n\n const [isHovering, setIsHovering] = useState(false)\n const [isDisconnected, setIsDisconnected] = useState(false)\n const [isUnlinked, setIsUnlinked] = useState(false)\n const [isUnconfigured, setIsUnconfigured] = useState(true)\n const [isConfigOpen, setIsConfigOpen] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const setConfigOpen = () => {\n setIsConfigOpen(true)\n }\n\n const setConfigured = () => {\n setIsUnconfigured(false)\n setIsConfigOpen(false)\n }\n\n const closePopup = () => {\n setIsOpen(false)\n }\n\n const { getSession } = useContext(AccountContext)\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n\n const [state, setState] = useState({\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n phoneNumber: \"\",\n formattedNumber: \"\",\n })\n\n useEffect(() => {\n updateForm()\n }, [])\n\n\n const toggleConfig = () => {\n if(isConfigOpen){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('navbar');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n setIsConfigOpen(false)\n }, 400)\n } else {\n setIsConfigOpen(true)\n setTimeout(() => {\n const element = document.getElementById('edit');\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n }\n\n const updateForm = () => {\n getSession().then(({ email, given_name, family_name, phone_number }) => {\n // Format the phone number for the update account screen\n const trimNumber = phone_number.slice(2)\n const formattedNumber = `(${trimNumber.substring(0, 3)}) ${trimNumber.substring(3, 6)} ${trimNumber.substring(\n 6,\n 10\n )}`\n\n setState({\n email: email,\n firstName: given_name,\n lastName: family_name,\n phoneNumber: phone_number,\n formattedNumber: formattedNumber,\n })\n })\n }\n\n return (\n \n \n \n {state.email}\n {/* */}\n First Name\n {state.firstName}\n Last Name\n {state.lastName}\n Email\n {state.email}\n Phone Number\n {state.formattedNumber}\n {/* */}\n \n\n \n {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}>\n Edit Account Details \n \n \n \n \n \n \n \n \n {/*----SAVE MOBILE----*/}\n \n \n SAVE CONFIGURATION\n \n DISCARD CHANGES\n \n\n {isConfigOpen ?\n \n :\n null\n }\n\n \n \n )\n }\n\n\n const OuterContainer = styled.div`\n /* border: 1px transparent dashed; */\n display: flex;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n margin-top: 30px;\n `}\n `\n\n const Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 1440px;\n margin-right: 30px;\n /* margin-top: 20px; */\n margin-bottom: 50px;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n `\n\n const TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n /* width: 439px; */\n background-color: #0e1c36;\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n margin-bottom: 10px;\n padding: 20px;\n /* width: 100%; */\n ${media.lessThan(\"743px\")`\n width: 100%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n `}\n `\n\n const Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightMedium};\n margin-bottom: 2px;\n margin-top: 6px;\n `\n\n const HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n `\n\n const HeaderText2 = styled(HeaderText)`\n color: ${COLORS.White};\n align-self: center;\n `;\n\n const Line = styled.div`\n width: 100%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 21px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n /* width: 90% */\n margin-right: 0px;\n `}\n `\n\n const Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 9px;\n `\n\n const InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 1px;\n `\n\n const ChangeContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 90%;\n `}\n `\n\n\n const ConfigHeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-content: center;\n /* padding: 20px; */\n background-color: #0e1c36;\n border-radius: 10px;\n min-height: 68px;\n `\n\nconst ConfigContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n`;\n\n const ConfigRightContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n `\n\n const ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n `\n\n const BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background: transparent;\n cursor: pointer;\n text-align: center;\n margin-right: 15px;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n /* margin-bottom: 50px; */\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n /* margin-bottom: 50px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\n const ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n `\n\n const SaveConfigContainerMobile = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n /* margin-right: 20px; */\n background: #0e1c36;\n height: 60px;\n margin-top: -10px;\n padding-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n flex-wrap: wrap;\n min-height: 120px;\n padding-top: 20px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n height: 10px;\n `}\n`;\n\nconst SaveConfigMobile = styled.button`\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n width: 241px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n background: none;\n align-self: center;\n transition-duration: 0.5s;\n margin-right: 20px;\n :hover {\n opacity: 0.8; \n }\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n \nconst BtnTextMobile = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\n const ButtonText2Mobile = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n `;\n // ","export default __webpack_public_path__ + \"static/media/ic_search.a54ea157.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_red.15d6ba89.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_purple.dec9f8db.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_yellow.d211c032.svg\";","import Enum from \"enum\"\nimport IconStatusLive from \"./../../images/ic_status_green.svg\"\nimport IconStatusDisconnected from \"./../../images/ic_status_red.svg\"\nimport IconStatusUnlinked from \"./../../images/ic_status_purple.svg\"\nimport IconStatusUnconfigured from \"./../../images/ic_status_yellow.svg\"\n\nconst WingnutStatus = new Enum({\n Live: IconStatusLive,\n Disconnected: IconStatusDisconnected,\n Unlinked: IconStatusUnlinked,\n Unconfigured: IconStatusUnconfigured,\n})\n\nexport default WingnutStatus\n","export default __webpack_public_path__ + \"static/media/ic_eye_off.354e0f50.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgEyeActive from \"./../../images/eye.svg\"\nimport ImgEyeOff from \"./../../images/ic_eye_off.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst StatusCard = styled.div`\n /* border: 1px red dashed; */\n width: 287px;\n height: 70px;\n /* min-width: 340px; */\n /* max-width: 380px; */\n /* min-height: 85px; */\n /* max-height: 90px; */\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n align-self: flex-end;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 17px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 90%;\n margin-bottom: 11px;\n `}\n ${media.between(\"744px\", \"large\")`\n min-width: 300px;\n max-width: 300px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-left: 20px;\n margin-right: 20px;\n align-self: center;\n`\n\nconst CardTextContainer = styled.div`\n /* border: 1px yellow dashed; */\n /* width: 144px; */\n display: flex;\n flex-direction: column;\n`\n\nconst CardHeader = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 2px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 12pt;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst CardNumber = styled.h1`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 32px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n text-transform: capitalize;\n color: ${COLORS.White};\n`\n\nconst EyeButton = styled.button`\n display: flex;\n width: 42px;\n height: 42px;\n border: 1px solid ${COLORS.Secondary};\n box-sizing: border-box;\n border-radius: 5px;\n background: #0e1c36;\n align-content: center;\n justify-content: center;\n margin-right: 15px;\n `\n\nconst EyeIcon = styled.img`\n /* border: 1px dashed red; */\n /* padding: 0.5px; */\n /* margin-top: 1px; */\n width: 24px;\n height: auto;\n align-self: center;\n justify-self: center;\n`\n\nexport default function WingnutStatusCard(props) {\n const [activeStatus, setActiveStatus] = React.useState(false)\n const [isHovering, setIsHovering] = React.useState(false)\n const [allOff, setAllOff] = React.useState(true)\n\n const toggleStatus = () => {\n setActiveStatus(!activeStatus)\n // tell Overview a status has been toggled\n props.toggleStatus(props.status)\n }\n\n useEffect(() => {\n if(props.wingnutState){\n if (!props.wingnutState.Live && !props.wingnutState.Disconnected && !props.wingnutState.Unlinked && !props.wingnutState.Unconfigured) {\n setAllOff(true)\n } else {\n setAllOff(false)\n }\n }\n })\n\n return (\n \n \n \n \n {props.status.key} Wingnuts\n {props.wingnutCount}\n \n \n\n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n style={{ background: activeStatus ? COLORS.Secondary : isHovering ? COLORS.Secondary : null }}\n >\n \n \n\n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport ImgSearch from \"./../../images/ic_search.svg\"\nimport WingnutStatus from \"./WingnutStatus.enum\"\nimport WingnutStatusCard from \"./WingnutStatusCard\"\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n background-color: ${COLORS.Base};\n height: auto;\n margin-bottom: 10px;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n max-height: 840px;\n align-items: center;\n margin-bottom: 0px;\n padding-top: 23px;\n margin-right: 0px;\n justify-content: center;\n flex-direction: column-reverse;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column-reverse;\n height: auto;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: auto;\n max-width: 1500px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: row;\n width: 90%;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchBarContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n align-self: center;\n width: 100%;\n`\nconst SearchContainerTop = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n width: 400px;\n ${media.lessThan(\"743px\")`\n margin-top: 10px;\n align-content: center;\n max-width: 400px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 10px;\n width: 90%;\n max-width: 400px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\nconst SearchBar = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n height: 50px;\n /* min-width: 300px; */\n /* max-width: 500px; */\n outline: none;\n border: 1px solid ${COLORS.White};\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Primary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :focus {\n outline: ${COLORS.White};\n border: 2px solid ${COLORS.White};\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchIcon = styled.img`\n /* border: 1px red dashed; */\n height: 20px;\n width: 20px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -40px;\n margin-top: 15px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n max-width: 800px;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: auto;\n min-width: 360px;\n margin-bottom: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 90%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusPair = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: flex-end;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: auto;\n align-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 8.5px;\n flex-direction: column;\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 8.5px;\n `}\n`\n\nconst StatusPairRight = styled(StatusPair)`\n ${media.between(\"744px\", \"large\")`\n margin-left: 8.5px;\n `}\n ${media.greaterThan(\"large\")`\n margin-left: 8.5px;\n `}\n\n`;\n\nconst CardHeader = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightMedium};\n`\n\n\nconst ResultContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n margin-top: 16px;\n margin-bottom: 16px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 20px;\n margin-left: 20px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchText = styled(CardHeader)`\n font-size: 14px;\n padding-top: 10px;\n ${media.lessThan(\"743px\")`\n font-size: 12px;\n text-align: center;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 12px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ResultHeader = styled(CardHeader)`\n font-size: 14px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ResultNumber = styled(CardHeader)`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\n\nexport default function WingnutController(props) {\n const countStatus = (status) => {\n var total = 0\n props.tableData.forEach((data) => {\n if (data.status.live && status === WingnutStatus.Live) {\n total += 1\n }\n if (data.status.disconnected && status === WingnutStatus.Disconnected) {\n total += 1\n }\n if (data.status.unlinked && status === WingnutStatus.Unlinked) {\n total += 1\n }\n if (data.status.unconfigured && status === WingnutStatus.Unconfigured) {\n total += 1\n }\n })\n return total\n }\n\n return (\n \n \n \n \n \n \n \n Search by city name, wingnut serial number, property name, etc.\n \n \n Showing\n {props.tableData.length} Results\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { useTable, useSortBy } from \"react-table\"\nimport { COLORS } from \"../../styles/colors\"\n\nfunction Table({ columns, data, columnsToHide }) {\n // Use the state and functions returned from useTable to build your UI\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable(\n {\n columns,\n data,\n initialState: {\n hiddenColumns: columnsToHide,\n },\n },\n useSortBy\n )\n\n // Render the UI for your table\n return (\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n {column.render(\"Header\")}\n \n ))}\n \n ))}\n \n \n {rows.map((row, i) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell) => {\n return (\n \n ) // YES\n })}\n \n )\n })}\n \n
\n {cell.render(\"Cell\", {\n serial: row.original.serial,\n uuid: row.original.uuid,\n propertyName: row.original.propertyName,\n portfolio: row.original.portfolio,\n propertyId: row.original.propertyId,\n propertyUUID: row.original.propertyUUID,\n address: row.original.address,\n status: row.original.status\n })}\n
\n )\n}\n\nexport default Table\n","export default __webpack_public_path__ + \"static/media/ic_status_green_dull.63defab9.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_red_dull.af24d2d3.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_purple_dull.f49b0820.svg\";","export default __webpack_public_path__ + \"static/media/ic_status_yellow_dull.a27ab0f7.svg\";","export default __webpack_public_path__ + \"static/media/ic_arrows_sort.02c9560b.svg\";","import Enum from \"enum\"\nimport IconStatusLive from \"./../../images/ic_status_green.svg\"\nimport IconStatusDisconnected from \"./../../images/ic_status_red.svg\"\nimport IconStatusUnlinked from \"./../../images/ic_status_yellow.svg\"\nimport IconStatusUnconfigured from \"./../../images/ic_status_purple.svg\"\n\n//large - 1171 - 1800\n//medium - 768 - 1170\n//small - 0 - 767\n\nconst ScreenSize = new Enum({\n Large: [1171, 1800],\n Medium: [768, 1170],\n Small: [0, 767],\n})\n\nexport default ScreenSize\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport MediaQuery from \"react-responsive\"\nimport MakeData from \"./MakeData\"\nimport WingnutTable from \"./WingnutTable\"\nimport IconLaunch from \"./../../images/ic_launch_green.svg\"\n\nimport IconActive from \"./../../images/ic_status_green.svg\"\nimport IconActiveDull from \"./../../images/ic_status_green_dull.svg\"\nimport IconDisconnected from \"./../../images/ic_status_red.svg\"\nimport IconDisconnectedDull from \"./../../images/ic_status_red_dull.svg\"\nimport IconUnlinked from \"./../../images/ic_status_purple.svg\"\nimport IconUnlinkedDull from \"./../../images/ic_status_purple_dull.svg\"\nimport IconUnconfigured from \"./../../images/ic_status_yellow.svg\"\nimport IconUnconfiguredDull from \"./../../images/ic_status_yellow_dull.svg\"\n\nimport IconSort from \"./../../images/ic_arrows_sort.svg\"\nimport { useHistory } from \"react-router-dom\"\nimport { Link } from \"react-router-dom\"\nimport ScreenSize from \"./ScreenSize.enum\"\nimport { COLORS } from \"../../styles/colors\"\n\n\n\n// Handle the highlevel table construction\nfunction WingnutTableStructure(props) {\n const history = useHistory()\n\n const handleSerialClick = (e, row) => {\n // history.push('/portal/account')\n }\n\n const handlePropertyNameClick = (e, row) => {\n }\n\n const handlePropertyIdClick = (e, row) => {\n }\n\n const handleSortClick = (e, row) => {\n }\n\n //----------------------------------------Custom Sort Functions\n const basicSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original[columnId]\n const b = rowB.original[columnId]\n if(a > b) return 1\n if (b > a) return -1\n return 0\n }\n}, [])\n\nconst addressSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original[columnId] ? rowA.original[columnId].streetAddress : \"0\"\n const b = rowB.original[columnId] ? rowB.original[columnId].streetAddress : \"0\"\n if (a > b) return 1\n if (b > a) return -1\n return 0\n }\n}, [])\n\n const statusSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n\n if (rowA.original[columnId] == undefined || rowB.original[columnId] == undefined) {\n return 0; // Return 0 to indicate no change in order\n }\n \n const a = rowA.original[columnId];\n const b = rowB.original[columnId];\n const aId = rowA.original.uuid\n const bId = rowB.original.uuid\n\n // Custom sorting logic based on the 'status' object\n if (a.disconnected !== b.disconnected) {\n return a.disconnected ? -1 : 1;\n }\n if (a.live !== b.live) {\n return a.live ? -1 : 1;\n }\n if (a.unconfigured !== b.unconfigured) {\n return a.unconfigured ? -1 : 1;\n }\n if (a.unlinked !== b.unlinked) {\n return a.unlinked ? -1 : 1;\n }\n\n if (aId > bId) return -1\n if (bId > aId) return 1\n\n return 0;\n }\n }, [])\n\n // Pickup and drop columns here based on screen size?\n const tableColumns = React.useMemo(\n () => [\n {\n Header: (\n handleSortClick(e, row)}>\n Serial\n \n \n \n \n ),\n accessor: \"serial\",\n sortType: basicSort,\n // maxWidth: 101,\n // minWidth: 99,\n width: '10%',\n Cell: (props) => {\n return (\n \n \n \n handleSerialClick(e, row)}>\n \n \n {props.serial}\n \n \n \n )\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n UUID\n \n \n \n \n ),\n accessor: \"uuid\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '25%',\n Cell: (props) => {\n return(\n \n {props.uuid}\n \n )\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n Property Name\n \n \n \n \n ),\n accessor: \"propertyName\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '20%',\n Cell: (props) => {\n return (props.propertyUUID ? (\n \n \n \n handlePropertyNameClick(e, row)}>\n \n \n {props.propertyName}\n \n \n \n ) : ())\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n Portfolio\n \n \n \n \n ),\n accessor: \"portfolio\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '10%',\n Cell: (props) => {\n return (\n \n {props.portfolio ? props.portfolio : \"-\" }\n \n )\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n PropertyId\n \n \n \n \n ),\n accessor: \"propertyId\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '5%',\n Cell: (props) => {\n return (\n props.propertyUUID ? (\n \n \n \n handlePropertyIdClick(e, row)}>\n \n \n {props.propertyId}\n \n \n \n ) : ()\n )\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n Address\n \n \n \n \n ),\n accessor: \"address\",\n sortType: addressSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '30%',\n Cell: (props) => {\n return (\n \n {props.address ? `${props.address.streetAddress} ${props.address.city} ${props.address.provinceState} ${props.address.country} ${props.address.postalZip}` : \"-\" }\n \n )\n },\n },\n {\n Header: (\n handleSortClick(e, row)}>\n Status\n \n \n \n \n ),\n accessor: \"status\",\n sortType: statusSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '10%',\n Cell: (props) => {\n return (\n \n \n \n \n \n \n )\n },\n },\n ],\n []\n )\n\n const hiddenColumns = (screenSize) => {\n // serial, uuid, propertyName, portfolio, propertyId, address, status\n var columnsToHide = []\n if (screenSize === ScreenSize.Medium) {\n // propertyId, propertyName, portfolio, linkedWingnuts, status\n columnsToHide = [\"address\", \"propertyId\"]\n }\n if (screenSize === ScreenSize.Small) {\n // propertyId, propertyName, status\n columnsToHide = [\"address\", \"portfolio\", \"uuid\"]\n }\n return columnsToHide\n }\n\n return (\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n )\n}\n\nexport default WingnutTableStructure\n\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n overflow: auto;\n height: 100%;\n width: 100%;\n background-color: ${COLORS.Base};\n margin-top: 0px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-top: 0px; \n height: 50%;\n padding-left: 16px; \n padding-right: 16px; \n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 20px;\n width: 98%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Styles = styled.div`\n color: ${COLORS.White};\n overflow: none;\n\n table {\n border-spacing: 0;\n\n thead {\n ${\"\" /* These styles are required for a scrollable body to align with the header properly */}\n overflow-y: auto;\n overflow-x: hidden;\n\n // Below create a fixed header\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n tbody {\n ${\"\" /* These styles are required for a scrollable table body */}\n overflow-y: scroll;\n overflow-x: hidden;\n }\n\n tr {\n :last-child {\n td {\n border-bottom: 1;\n }\n }\n }\n\n th,\n td {\n margin: 0;\n border-bottom: 1px solid ${COLORS.HighlightDark};\n :last-child {\n border-right: 0;\n }\n }\n }\n`\nconst HeaderDiv = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding-left: 5px;\n /* height: auto; */\n height: 45px;\n`\n\nconst CellDiv = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n position: relative;\n bottom: 1px;\n height: 45px;\n`\n\nconst EmptyCellDiv = styled.div`\n /* border: 1px red dashed; */\n`\n\nconst ContentDiv = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n align-self: center;\n`;\n\nconst CellStatusDiv = styled.div`\n display: flex;\n /* border: 1px green dashed; */\n`\n\nconst BtnIcon = styled.button`\n /* border: 1px green dashed; */\n background: transparent;\n /* outline: none; */\n border: none;\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 10px;\n height: 10px;\n position: relative;\n margin-right: 4px;\n\n /* align-self: center; */\n top: 1px;\n`\n\nconst StatusIcon = styled.img`\n /* border: 1px red dashed; */\n width: 10px;\n height: 10px;\n /* position: relative; */\n margin-right: 6px;\n\n /* align-self: center; */\n top: 1px;\n`\n\nconst SortIcon = styled.img`\n /* border: 1px red dashed; */\n width: 18px;\n height: 18px;\n position: relative;\n /* align-self: center; */\n top: 1px;\n margin-right: 10px;\n`\n\nconst Text = styled.h5`\n /* border: 1px green dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 120%;\n display: flex;\n align-self: center;\n /* align-items: center; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\n\nconst StaticText = styled(Text)`\n /* border: 1px green dashed; */\n padding-left: 5px;\n color: ${COLORS.HighlightLight};\n align-self: center;\n`","import { API, Auth } from \"aws-amplify\"\nimport React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Fuse from \"fuse.js\"\nimport WingnutController from \"./WingnutController\"\nimport WingnutTableStructure from \"./WingnutTableStructure\"\nimport WingnutStatus from \"./WingnutStatus.enum\"\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport { DateTime } from \"luxon\";\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n height: 100%;\n margin-right: 30px;\n background-color: ${COLORS.Base};\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n padding-bottom: 80px;\n `}\n`\n\nconst fuzzyOptions = {\n // isCaseSensitive: false,\n // includeScore: false,\n // shouldSort: true,\n // includeMatches: false,\n // findAllMatches: false,\n // minMatchCharLength: 3,\n // location: 0,\n threshold: 0.1,\n // distance: 100,\n // useExtendedSearch: false,\n // ignoreLocation: false,\n // ignoreFieldNorm: false,\n // fieldNormWeight: 1,\n keys: [\"serial\", \"uuid\", \"propertyId\", \"propertyName\", \"portfolio\", \"address.streetAddress\", \"address.city\", \"address.postalZip\", \"address.provinceState\", \"address.country\"],\n}\n\nexport default class WingnutOverview extends Component {\n constructor() {\n super()\n this.fuseSearch = null\n this.showData = true\n this.state = {\n data: [],\n search: \"\",\n isLoading: true,\n status: {\n Live: false,\n Disconnected: false,\n Unlinked: false,\n Unconfigured: false,\n },\n }\n }\n\n componentDidMount() {\n this.getWingnuts()\n }\n\n componentWillUnmount() {\n this.showData = false\n }\n\n componentDidUpdate(prevProps, prevState){\n if(prevState.isLoading === true && this.state.isLoading === false){\n this.filterData(this.state.search, this.state.status)\n }\n }\n\n searchForWingnut(event) {\n if(this.state.isLoading === false){\n this.filterData(event.target.value, this.state.status)\n } else {\n this.setState({\n search: event.target.value,\n })\n }\n }\n\n filterData(fuzzySearch, wingnutState) {\n var data = []\n if (fuzzySearch) {\n data = this.fuseSearch.search(fuzzySearch).map((s) => s.item)\n } else {\n if(this.fuseSearch){\n data = this.fuseSearch.getIndex().docs\n }\n }\n\n data = data.filter((item) => {\n if (wingnutState.Live && item.status.live) {\n return item\n }\n if (wingnutState.Disconnected && item.status.disconnected) {\n return item\n }\n if (wingnutState.Unlinked && item.status.unlinked) {\n return item\n }\n if (wingnutState.Unconfigured && item.status.unconfigured) {\n return item\n }\n // no toggles set, return all items\n if (!wingnutState.Live && !wingnutState.Disconnected && !wingnutState.Unlinked && !wingnutState.Unconfigured) {\n return item\n }\n })\n this.setState({\n search: fuzzySearch,\n status: wingnutState,\n data: data,\n })\n }\n\n toggleStatus(status) {\n var wingnutStatus = this.state.status\n\n if (status === WingnutStatus.Live) {\n wingnutStatus.Live = !wingnutStatus.Live\n }\n if (status === WingnutStatus.Disconnected) {\n wingnutStatus.Disconnected = !wingnutStatus.Disconnected\n }\n if (status === WingnutStatus.Unlinked) {\n wingnutStatus.Unlinked = !wingnutStatus.Unlinked\n }\n if (status === WingnutStatus.Unconfigured) {\n wingnutStatus.Unconfigured = !wingnutStatus.Unconfigured\n }\n\n this.filterData(this.state.search, wingnutStatus)\n }\n\n setWingnutStatus(item) {\n var disconnected = true\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n disconnected = difference.minutes > 15\n }\n\n var unlinked = (item.config.propertyId === undefined)\n var unconfigured = !(Object.keys(item.config.sensors).length > 0)\n return {\n live: (!disconnected && !unlinked && !unconfigured) ? true : false,\n disconnected,\n unlinked,\n unconfigured\n }\n }\n\n setupTable(data) {\n this.fuseSearch = new Fuse(data, fuzzyOptions)\n this.setState({\n data: data\n })\n }\n\n async getWingnuts() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n API.get(\"FrontendAPI-wingnuts\", \"\", init)\n .then((response) => {\n if (response.success) {\n const mappedData = response.data.map((item) => {\n\n return {\n serial: parseInt(item.externalId),\n propertyId: item.property?.externalId,\n propertyName: item.propertyName,\n propertyUUID: item.property?.id,\n address: item.property?.config.address,\n portfolio: item.property?.config.portfolio,\n sensors: item.config.sensors,\n uuid: item.id,\n status: this.setWingnutStatus(item)\n }\n })\n if (this.showData) {\n this.setupTable(mappedData)\n }\n }\n })\n .catch((error) => {\n console.error(error)\n })\n .finally(() => this.setState({ isLoading: false }))\n }\n\n render() {\n return (\n \n this.toggleStatus(s)}\n onInputChange={(e) => this.searchForWingnut(e)}\n wingnutState={this.state.status}\n />\n { this.state.isLoading\n ? ()\n : ()}\n \n )\n }\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst HeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n background-color: #0E1C36;\n padding: 20px;\n border-radius: 10px;\n display: flex;\n flex-direction: row;\n width: 100%;\n justify-content: space-between;\n align-content: center;\n margin-bottom: 15px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 10px;\n`\n\nconst StatusIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 22px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 5px;\n `}\n`\n\nconst InfoText = styled.h2`\n /* border: 1px green dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 5px;\n margin-right: 5px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InfoText2 = styled(InfoText)`\n font-size: 14px;\n margin-top: 5px;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-self: center;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: black;\n background: #63c085;\n cursor: pointer;\n text-align: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function StatusDetailsDisconnected() {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n Not Connected\n \n This Wingnut has not connected to the servers recently. Check that it is powered on and has a working internet connection. Still not working?\n \n \n \n \n \n \n CONTACT US\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n background-color: #0E1C36;\n padding: 20px;\n border-radius: 10px;\n margin-bottom: 15px;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 10px;\n`\n\nconst StatusIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 22px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 5px;\n `}\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 5px;\n margin-right: 5px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InfoText2 = styled(InfoText)`\n max-width: 300px;\n font-size: 12px;\n margin-top: 15px;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-self: center;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: black;\n background: #63c085;\n cursor: pointer;\n text-align: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n margin-top: 22px;\n margin-bottom: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px; \n width: 200px;\n align-self: center;\n `}\n ${media.greaterThan(\"large\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function StatusDetailsUnconfigured(props) {\n\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n Unconfigured Wingnut\n This Wingnut must be configured in order to collect data\n \n \n \n \n CONFIGURE WINGNUT\n \n \n\n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\n\nconst HeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n background-color: #0E1C36;\n padding: 20px;\n border-radius: 10px;\n margin-bottom: 15px;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: row;\n margin-right: 10px;\n`\n\nconst StatusIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 22px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 5px;\n margin-right: 5px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-self: center;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: black;\n background: #63c085;\n cursor: pointer;\n text-align: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n margin-top: 22px;\n margin-bottom: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px; \n width: 200px;\n align-self: center;\n `}\n ${media.greaterThan(\"large\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function StatusDetailsUnlinked(props) {\n const {wingnutDetails} = props\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n Unlinked Wingnut\n \n Wingnut must be linked to a property in order to collect data\n \n \n \n \n \n \n LINK WINGNUT\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport { Link } from \"react-router-dom\"\nimport media from \"styled-media-query\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n background-color: #0E1C36;\n padding: 20px;\n border-radius: 10px;\n flex-direction: row;\n width: 100%;\n justify-content: space-between;\n margin-bottom: 15px;\n`\n\nconst StatusIcon = styled.img`\n width: 12px;\n height: 12px;\n margin-right: 22px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 177px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: transparent;\n color: ${COLORS.White};\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function StatusDetailsLive(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n Live\n \n\n{/* This was the Go-To-Property button in the WINGNUT detail page on the STATUS LIVE header component - this button has been removed?? */}\n {/*
\n \n \n \n
*/}\n\n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/ic_settings.3a5674e0.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* justify-content: space-between; */\n flex-wrap: wrap;\n padding-top: 38px;\n margin-right: 40px;\n margin-bottom: 46px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TabContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 0.5;\n padding: 10px;\n /* opacity: 50%; */\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n width: 25%;\n padding: 5px;\n `}\n`\n\nconst StatusIcon = styled.img`\n width: 11px;\n height: 11px;\n margin-right: 15px;\n align-self: center;\n`\n\nconst CardTextContainer = styled.div`\n /* border: 1px red dashed; */\n /* width: 144px; */\n display: flex;\n flex-direction: column;\n min-width: 200px;\n`\n\nconst CardNumber = styled.h1`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 130%;\n color: ${COLORS.HighlightDark};\n margin-top: 3px;\n`\n\nconst HeaderText = styled.h3`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 20px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.HighlightMedium};\n`\n\nexport default function WingnutConfigTabHeaderItem(props) {\n\n const [isHovering, setIsHovering] = useState(false)\n const [isSelected, setIsSelected] = useState(false)\n\n const setSelected = () => {\n props.onHandleClick()\n setIsSelected(true)\n }\n\n useEffect(() => {\n setIsSelected(props.selected)\n })\n\n return (\n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n \n \n {props.inputText}\n {props.sensorText}\n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport WingnutConfigTabHeaderItem from \"./WingnutConfigTabHeaderItem\"\n\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding-top: 38px;\n margin-right: 40px;\n margin-bottom: 46px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TabContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 0.5;\n padding: 10px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n width: 25%;\n padding: 5px;\n `}\n`\n\nexport default function WingnutConfigTabHeader(props) {\n\n return (\n \n props.setInputTab(0)}inputText=\"Thermistor Inputs\" sensorText=\"(a1 - a16)\" img={ImgRed}/>\n props.setInputTab(1)} inputText=\"Transducer Inputs\" sensorText=\"(a17 - a32)\" img={ImgPurple}/>\n props.setInputTab(2)} inputText=\"General Purpose Inputs\" sensorText=\"(d01 - d04)\" img={ImgYellow}/>\n props.setInputTab(3)} inputText=\"Relay Sense Inputs\" sensorText=\"(d05 - d16)\" img={ImgGreen}/> \n \n )\n}\n","export default __webpack_public_path__ + \"static/media/ic_settings_blue.6234d310.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport Select from \"react-dropdown-select\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n margin-top: 15px; \n\n ${media.lessThan(\"744px\")`\n /* width: 90%; */\n height: 55px;\n `}\n ${media.between(\"medium\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear,\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: ${COLORS.White};\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n\n`\n\nexport default function TimeRangeDropdownUI(props) {\n \n const [selected, setSelected] = useState(null)\n const [isSelected, setIsSelected] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n\n const customContentRenderer = () => (\n
\n {selected? selected : props.placeholder}\n
\n );\n \n const onSelected = (item) => {\n if (item[0]) {\n setSelected(item[0].label)\n props.onSelectedValue(item[0])\n setIsSelected(true)\n } else {\n setSelected(null)\n setIsSelected(false)\n }\n }\n\n useEffect(() => {\n setSelected(null)\n setIsSelected(false)\n }, [props.clearInput])\n\n useEffect(() => {\n if (props.selectedValue.length > 0) {\n onSelected(props.selectedValue)\n }\n }, [])\n\n return (\n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n onSelected(value)}\n options={props.data}\n values={[]}\n style={{\n border: props.localAlert && selected === null ? \"1px solid transparent\" : isHovering ? `1px solid ${COLORS.HighlightMedium}` : isSelected ? \"1px solid transparent\" : `1px solid ${COLORS.HighlightMedium}`,\n borderRadius: 8,\n color: COLORS.White,\n fontWeight: \"100\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"16px\",\n }}\n />\n
\n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport Image from \"./../../images/ic_settings_blue.svg\"\nimport CustomSelect from \"./WingnutConfigSensorSelect\"\nimport Checkmark from \"./../../images/ic_success.svg\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n width: 100%;\n flex-direction: column;\n justify-content: space-between;\n padding: 20px;\n margin-right: 40px;\n border-top: 1px ${COLORS.HighlightDark} solid;\n ${media.lessThan(\"743px\")`\n justify-content: flex-start;\n padding: 10px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n justify-content: flex-start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n cursor: pointer;\n`\n\nconst TabContainer = styled.div`\n /* border: 1px red dashed; */\n width: 100%;\n display: flex;\n flex-direction: row;\n /* justify-content: space-between; */\n padding: 5px;\n ${media.lessThan(\"743px\")`\n justify-content: flex-start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusIcon = styled.img`\n width: 11px;\n height: 11px;\n margin-right: 15px;\n align-self: center;\n`\n\nconst CardTextContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 64px;\n ${media.lessThan(\"743px\")`\n margin-right: 14px;\n `}\n`\n\nconst HeaderText = styled.h3`\n /* border: 1px green dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 20px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n font-size: 18px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderNumber = styled(HeaderText)`\n width: 30px; \n`\n\nconst ArrowIcon = styled.img`\n width: 20px;\n height: auto;\n`\n\nconst IconContainer = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst AlertIcon = styled.img`\n width: 14px;\n /* height: 10px; */\n visibility: hidden;\n margin-right: 17px;\n`\n\nconst ArrowIconRight = styled.img`\n width: auto;\n height: 20px;\n align-self: center;\n`\n\nconst ArrowIconRightWhite = styled.img`\n width: auto;\n height: 16px;\n align-self: center;\n`\n\nconst SubHeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n cursor: pointer;\n`\n\nconst WingnutIcon = styled.img`\n width: 16px;\n height: 16px;\n align-self: center;\n margin-right: 10px;\n /* margin-bottom: 20px; */\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n /* line-height: 130%; */\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`\n\nconst BodyContainer = styled.div`\n /* border: 1px yellow dashed; */\n`\n\nconst ConfirmContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n `\n\nconst InputContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n width: 95%;\n flex-direction: row;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 68%;\n height: 45px;\n outline: none;\n border: 1px solid ${COLORS.HighlightMedium};\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: normal;\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n background: ${COLORS.Secondary};\n /* margin-right: 20px; */\n margin-top: 15px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :focus {\n outline: ${COLORS.White};\n border: 2px solid ${COLORS.White};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InputNumber = styled(Input)`\n width: 30%;\n ${media.lessThan(\"743px\")`\n height: 55px;\n width: 100%;\n `}\n`\n\nconst InputLabel = styled(Input)`\n width: 95%;\n margin-right: 0px;\n`\n\nconst BtnConfirm = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: black;\n background: transparent;\n cursor: pointer;\n text-align: center;\n margin-top: 22px;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n margin-bottom: 5px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-bottom: 50px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n :hover {\n }\n`\n\nexport default function WingnutSensorConfigFormCell(props) {\n const {id, icon, schema, wingnutDetails} = props\n\n const [isCellHovering, setIsCellHovering] = useState(false)\n const [isButtonHovering, setIsButtonHovering] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [configuredSensor, setConfiguredSensor] = useState()\n // const [showSuccess, setShowSuccess] = useState(false)\n const [clearAll, setClearAll] = useState(null)\n const [disableClear, setDisableClear] = useState(true)\n const [localAlert, setLocalAlert] = useState(false)\n\n const [selectedType, setSelectedType] = useState()\n const [selectedLabel, setSelectedLabel] = useState()\n const [selectedNumber, setSelectedNumber] = useState()\n const [numberOptions, setNumberOptions] = useState([\n {\n label: \"1\",\n value: \"1\",\n },\n {\n label: \"2\",\n value: \"2\",\n },\n {\n label: \"3\",\n value: \"3\",\n },\n {\n label: \"4\",\n value: \"4\",\n },\n {\n label: \"5\",\n value: \"5\",\n },\n ])\n\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n\n const confirmSensorChange = () => {\n\n var sensor = {\n key: buildKey(),\n label: `${selectedLabel.value}${selectedNumber.value}`,\n type: selectedType.value\n }\n props.removeAlert(props.id)\n setConfiguredSensor(sensor)\n props.updateSensor(sensor)\n\n }\n\n const clearAllInputs = () => {\n setLocalAlert(false)\n props.removeAlert(props.id)\n setClearAll(!clearAll)\n setDisableClear(true)\n setConfiguredSensor(null)\n setSelectedLabel(null)\n setSelectedLabel(null)\n setSelectedType(null)\n\n setTimeout(() => {\n var sensor = {\n key: buildKey(),\n label: null,\n type: null\n }\n props.updateSensor(sensor)\n }, 500)\n\n }\n\n const buildKey = () => {\n const keyData = id.replace(/(\\d+)/g, \" $1\").split(\" \")\n const leading = keyData[0].toUpperCase()\n const keyNumber = parseInt(keyData[1])\n if (leading === 'A') {\n return leading + \"N\" + keyNumber\n } else {\n return leading + \"I\" + keyNumber\n }\n }\n\n useEffect(() => {\n const key = buildKey()\n if (wingnutDetails.config.sensors[key]) {\n setConfiguredSensor(wingnutDetails.config.sensors[key])\n }\n }, [])\n\n useEffect(() => {\n if (selectedType && selectedLabel && selectedNumber) {\n setLocalAlert(false)\n confirmSensorChange()\n } \n }, [selectedType, selectedLabel, selectedNumber])\n\n useEffect(() => {\n const alert = props.checkAlert(props.id)\n setLocalAlert(alert)\n\n if (alert){\n setIsOpen(true)\n }\n }, [props.alertSignal])\n\n const getSelectedType = () => {\n var selected = []\n if (configuredSensor) {\n selected = schema.types.filter(type => type.value === configuredSensor.type)\n } else {\n if(selectedType != null){\n selected = [selectedType]\n }\n }\n return selected\n }\n\n const getSelectedLabel = () => {\n var selected = []\n if (configuredSensor) {\n selected = schema.labels.filter(label => label.value === configuredSensor.label.slice(0, -1))\n } else {\n if(selectedLabel != null){\n selected = [selectedLabel]\n }\n }\n return selected\n }\n\n const getSelectedNumber = () => {\n var selected = []\n if (configuredSensor) {\n const number = configuredSensor.label.charAt(configuredSensor.label.length - 1);\n selected = [{\n label: number,\n value: number\n }]\n } else {\n if(selectedNumber != null){\n selected = [selectedNumber]\n }\n }\n return selected\n }\n\n const loadSelectedType = (item) => {\n props.addAlert(props.id)\n props.unsavedChanges(true)\n setDisableClear(false)\n setSelectedType(item)\n } \n\n const loadSelectedNumber = (item) => {\n props.addAlert(props.id)\n props.unsavedChanges(true)\n setDisableClear(false)\n setSelectedNumber(item)\n } \n\n const loadSelectedLabel = (item) => {\n props.addAlert(props.id)\n props.unsavedChanges(true)\n setDisableClear(false)\n setSelectedLabel(item)\n \n } \n\n const buildConfigurationTitle = () => {\n var title = \"\"\n if (configuredSensor) {\n title = `${getSelectedLabel()[0]?.label} ${getSelectedNumber()[0]?.label} - ${getSelectedType()[0]?.label}`\n }\n return title\n }\n\n useEffect(() => {\n const fullList = ['1', '2', '3', '4', '5']\n const usedNumbers = []\n \n if (selectedLabel) {\n Object.keys(wingnutDetails.config.sensors).forEach(key => {\n const label = wingnutDetails.config.sensors[key].label\n const number = label.charAt(label.length - 1);\n const sl = label.split(number)[0]\n if (selectedLabel.value === sl) {\n usedNumbers.push(number)\n }\n })\n\n const difference = fullList.filter(x => usedNumbers.indexOf(x) === -1);\n const options = difference.map(num => {\n return {label: num, value: num}\n })\n setNumberOptions(options)\n }\n }, [selectedLabel])\n\n return (\n \n props.isAuth ? isOpen ? null : setIsOpen(true) : null}\n onMouseEnter={(e) => {\n setIsCellHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsCellHovering(false)\n }}\n >\n setIsOpen(false)}>\n \n \n {id}\n \n \n\n {configuredSensor ?\n {buildConfigurationTitle()}\n :\n isOpen ? \n Configure this sensor\n :\n \n \n Configure this sensor\n \n }\n \n \n\n {isOpen ?\n \n \n setIsOpen(false)}/>\n \n : \n \n \n \n \n\n }\n \n \n\n\n {isOpen ? \n \n \n {loadSelectedType(item)}} placeholder=\"Sensor Type\" width={isDesktopSize ? \"68%\" : \"100\"}/>\n loadSelectedNumber(item)} placeholder=\"Sensor Number\" width={isDesktopSize ? \"30%\" : \"100\"}/>\n \n loadSelectedLabel(item)} placeholder=\"Sensor Label\" width={isDesktopSize ? \"95%\" : \"100\"}/>\n \n clearAllInputs()} style={{backgroundColor: disableClear ? '#B6B6B6' : null, border: disableClear ? '#B6B6B6' : null}}>\n \n Clear Input\n \n \n \n \n : \n null\n }\n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/ic_settings.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport WingnutConfigTabHeader from \"./../wingnuts/WingnutConfigTabHeader\"\nimport WingnutSensorConfigFormCell from \"./WingnutSensorConfigFormCell\"\nimport PopupContainer from \"./../popup/PopupContainer\"\nimport Modal from \"react-modal\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n max-width: 1440px;\n display: flex;\n flex-direction: column;\n padding-bottom: 50px;\n background: #0e1c36;\n padding: 20px;\n margin-top: -10px;\n padding-top: 50px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SubHeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n margin-right: 10px;\n /* margin-bottom: 20px; */\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n /* line-height: 130%; */\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n`\n\nexport default function WingnutConfiguration(props) {\nconst { schemaConfig, wingnutDetails } = props\n\n\n const [state, setState] = useState({\n thermistor: true,\n transducer: false,\n general: false,\n relay: false\n })\n\n const { getSession } = useContext(AccountContext)\n\n const [unsavedChanges, setUnsavedChanges] = useState(false)\n const [nextTab, setNextTab] = useState(null)\n // const [currentTab, setCurrentTab] = useState(0)\n // const [isOpen, setIsOpen] = useState(false)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n const setInputTab = (tab) => {\n\n if(unsavedChanges && tab != props.currentTab){\n // if unsaved changes and new tab requested\n setNextTab(tab)\n props.setupIsTabOpen(true)\n } else {\n tabSwitch(tab)\n }\n }\n\n const tabSwitch = (tab) => {\n\n props.trackCurrentTab(tab)\n\n switch(tab){\n case 0: \n setState({thermistor: true, transducer: false, general: false, relay: false})\n break\n case 1: \n setState({thermistor: false, transducer: true, general: false, relay: false})\n break\n case 2: \n setState({thermistor: false, transducer: false, general: true, relay: false})\n break\n case 3: \n setState({thermistor: false, transducer: false, general: false, relay: true})\n break\n default: \n setState({thermistor: true, transducer: false, general: false, relay: false})\n break\n }\n\n setNextTab(null)\n }\n\n const setUnsavedChangesStatus = (saved) => {\n setUnsavedChanges(saved)\n props.configChange(saved)\n }\n\n const closePopup = () => {\n props.setupIsTabOpen(false)\n }\n\n const goToNextTab = () => {\n setUnsavedChanges(false)\n props.setupIsTabOpen(false)\n tabSwitch(nextTab)\n }\n\n useEffect(() => {\n tabSwitch(props.currentTab)\n}, [props.refresh])\n\nuseEffect(() => {\nif(props.didConfigChange == false){\n setUnsavedChanges(false)\n}\n}, [props.didConfigChange])\n\n return (\n
\n \n \n \n\n \n {/* */}\n \n \n {Object.keys(wingnutDetails.config.sensors).length}/{schemaConfig.totalConfigurations} Inputs configured\n \n \n \n {\n state.thermistor ? \n
\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n
\n :\n null\n }\n {\n state.transducer ?\n
\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n
\n :\n null\n }\n\n {\n state.general ? \n
\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n
\n :\n null\n }\n\n {\n state.relay ? \n
\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n props.updateSensor(s)} unsavedChanges={setUnsavedChangesStatus} addAlert={props.addAlert} removeAlert={props.removeAlert} checkAlert={props.checkAlert} alertSignal={props.alertSignal} isAuth={isAuth}/>\n
\n :\n null\n }\n
\n
\n )\n}\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n\n\n\n\n","import React, { useEffect, useState, useContext, useRef } from \"react\"\nimport { useLocation } from 'react-router-dom'\nimport { API, Auth } from \"aws-amplify\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image2 from \"./../../images/ic_launch_green.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport StatusDetailsDisconnected from \"./../wingnuts/StatusDetailsDisconnected\"\nimport StatusDetailsUnconfigured from \"./../wingnuts/StatusDetailsUnconfigured\"\nimport StatusDetailsUnlinked from \"./../wingnuts/StatusDetailsUnlinked\"\nimport StatusDetailsLive from \"./../wingnuts/StatusDetailsLive\"\nimport WingnutConfiguration from \"./../wingnuts/WingnutConfiguration\"\nimport Modal from \"react-modal\"\nimport PopupContainer from \"./../popup/PopupContainer\"\nimport WingnutStatus from \"./WingnutStatus.enum\"\nimport { useMediaQuery } from 'react-responsive'\nimport DiscardChangesPopup from \"../popup/DiscardConfigPopup\"\nimport { DateTime } from \"luxon\"\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\n\nexport default function Wingnut(props) {\n const { params } = props.match\n const [isHovering, setIsHovering] = useState(false)\n const [isConfigOpen, setIsConfigOpen] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [isTabOpen, setIsTabOpen] = useState(false)\n const [didConfigChange, setDidConfigChange] = useState(false)\n const [wingnutDetails, setWingnutDetails] = useState()\n const [schemaConfig, setSchemaConfig] = useState()\n const [refresh, setRefresh] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [alertArray, setAlertArray] = useState([])\n const [alertSignal, setAlertSignal] = useState(false)\n const [childKey, setChildKey] = useState(1);\n const [currentTab, setCurrentTab] = useState(0)\n const [popupNumber, setPopupNumber] = useState(4)\n const [disabled, setDisabled] = useState(true)\n const [showSpinner, setShowSpinner] = useState(false)\n const [saveDisabled, setSaveDisabled] = useState(false)\n\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n const isJustDesktopSize = useMediaQuery({ query: '(min-width: 1170px)' })\n\n const location = useLocation()\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n // ----------------------------------------------------\n const myRef = useRef();\n\t\n const handleClickOutside = e => {\n if(didConfigChange == true && isOpen == false && isTabOpen == false){\n if (!myRef.current.contains(e.target)) {\n showPopup(7)\n }\n };\n }\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n });\n // ----------------------------------------------------\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n const trackCurrentTab = (tab) => {\n setCurrentTab(tab)\n }\n\n const updateSensor = (sensor) => {\n // This is ultimately what is saving the state of the cell\n const {key, type, label} = sensor\n\n if (wingnutDetails) {\n\n if (type == null && label == null){\n // If these are null, need to remove this key\n delete wingnutDetails.config.sensors[key]\n } else {\n wingnutDetails.config.sensors[key] = {type, label}\n }\n\n }\n }\n\n const runSensorValidator = () => {\n if (alertArray && alertArray.length){\n setAlertSignal(!alertSignal)\n showPopup(6)\n } else {\n showPopup(4)\n }\n }\n\n const setConfigured = async () => {\n // Only save if there are no alerts\n if (alertArray && alertArray.length){\n setAlertSignal(!alertSignal)\n } else {\n setSaveDisabled(true)\n setShowSpinner(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: wingnutDetails.config\n }\n \n const response = await API.post('FrontendAPI-wingnuts', `/${params.id}`, init)\n if (response.success) {\n setSaveDisabled(false)\n setShowSpinner(false)\n setDidConfigChange(false)\n toggleConfig()\n }\n } \n }\n\n const wingnutStatus = (status) => {\n if (wingnutDetails && status === WingnutStatus.Disconnected) {\n var disconnected = true\n if (wingnutDetails.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = wingnutDetails.config.latestPost ? DateTime.fromFormat(wingnutDetails.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n disconnected = difference.minutes > 15\n }\n \n return disconnected\n }\n if (wingnutDetails && status === WingnutStatus.Unlinked) {\n return (wingnutDetails.config.propertyId === undefined)\n }\n if (wingnutDetails && status === WingnutStatus.Unconfigured) {\n return !(Object.keys(wingnutDetails.config.sensors).length > 0)\n }\n }\n\n const closePopup = () => {\n setIsOpen(false)\n if(popupNumber != 6){\n setRefresh(!refresh)\n }\n }\n\n const discardChanges = () => {\n setSaveDisabled(true)\n setShowSpinner(true)\n setAlertArray([])\n setDidConfigChange(false)\n setRefresh(!refresh)\n\n // Set timer to avoid race condition\n setTimeout(() => {\n setChildKey(prev => prev + 1);\n }, 200)\n }\n\n\n useEffect(() => {\n let cancelled = false\n\n async function getWingnutDetails() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n const response = await API.get('FrontendAPI-wingnuts', `/${params.id}`, init)\n\n if (response.success && !cancelled) {\n setSaveDisabled(false)\n setShowSpinner(false)\n setDisabled(false)\n setWingnutDetails(response.data)\n setIsLoading(false)\n\n if(location.state && location.state.openConfig == true){\n toggleConfig()\n }\n }\n }\n\n async function getSchema() {\n\n const response = await API.get('FrontendAPI-schema', ``)\n var config = {\n totalConfigurations: 0,\n thermistorInputs:{\n typeList: [],\n labelList: [],\n types: [],\n labels: []\n },\n transducerInputs:{\n typeList: [],\n labelList: [],\n types: [],\n labels: []\n },\n generalPurposeInputs: {\n typeList: [],\n labelList: [],\n types: [],\n labels: []\n },\n relaySenseInputs: {\n typeList: [],\n labelList: [],\n types: [],\n labels: []\n }\n }\n if (response.success && !cancelled) {\n // THERMISTOR\n response.data.thermistorInputs.sensors.forEach(sensors => {\n sensors.types.forEach(type => {\n const result = type.replace(/(\\d+)/g, \" $1\")\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1)\n if (config.thermistorInputs.typeList.indexOf(finalResult) === -1) {\n config.thermistorInputs.typeList.push(finalResult)\n config.thermistorInputs.types.push({\n label: finalResult,\n value: type\n })\n }\n })\n\n sensors.labels.forEach(label => {\n var trimmed = label.slice(0, -1)\n const result = trimmed.replace(/([A-Z])/g, \" $1\")\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1)\n if (config.thermistorInputs.labelList.indexOf(finalResult) === -1) {\n config.totalConfigurations += 1\n config.thermistorInputs.labelList.push(finalResult)\n config.thermistorInputs.labels.push({\n label: finalResult,\n value: label.slice(0, -1)\n })\n }\n })\n })\n\n // TRANSUDCER\n response.data.currentLoopInputs.sensors.forEach(sensors => {\n sensors.types.forEach(type => {\n const result = type.replace(/(\\d+)/g, \" $1\")\n const words = result.split(\" \")[0]\n const numbers = result.split(\" \")[1]\n const parsedWords = words.replace(/([A-Z])/g, \" $1\")\n const finalResult = parsedWords.charAt(0).toUpperCase() + parsedWords.slice(1) + ` ${numbers}`\n if (config.transducerInputs.typeList.indexOf(finalResult) === -1) {\n config.transducerInputs.typeList.push(finalResult)\n config.transducerInputs.types.push({\n label: finalResult,\n value: type\n })\n }\n })\n\n sensors.labels.forEach(label => {\n var trimmed = label.slice(0, -1)\n const result = trimmed.replace(/([A-Z])/g, \" $1\")\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1)\n if (config.transducerInputs.labelList.indexOf(finalResult) === -1) {\n config.totalConfigurations += 1\n config.transducerInputs.labelList.push(finalResult)\n config.transducerInputs.labels.push({\n label: finalResult,\n value: label.slice(0, -1)\n })\n }\n })\n })\n\n // GENERAL PURPOSE INPUTS\n response.data.gpioInputs.sensors.forEach(sensors => {\n sensors.types.forEach(type => {\n const result = type.replace(/([A-Z])/g, \" $1\")\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1)\n if (config.generalPurposeInputs.typeList.indexOf(finalResult) === -1) {\n config.generalPurposeInputs.typeList.push(finalResult)\n config.generalPurposeInputs.types.push({\n label: finalResult,\n value: type\n })\n }\n })\n\n sensors.labels.forEach(label => {\n var trimmed = label.slice(0, -1)\n const result = trimmed.replace(/([A-Z])/g, \" $1\")\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1)\n if (config.generalPurposeInputs.labelList.indexOf(finalResult) === -1) {\n config.totalConfigurations += 1\n config.generalPurposeInputs.labelList.push(finalResult)\n config.generalPurposeInputs.labels.push({\n label: finalResult,\n value: label.slice(0, -1)\n })\n }\n })\n })\n setSchemaConfig(config)\n }\n }\n \n getSchema()\n getWingnutDetails()\n return () => {\n cancelled = true\n }\n }, [refresh])\n\n const checkAlert = (checkId) => {\n const index = alertArray.findIndex(id => id === checkId);\n if (index > -1) { \n return true\n } else {\n return false\n }\n }\n\n const addAlert = (addId) => {\n const index = alertArray.findIndex(id => id === addId);\n if (index < 0) { \n setAlertArray(prevAlertArray => [...prevAlertArray, addId])\n } \n }\n\n const removeAlert = (removeId) => {\n // Remove the cell id from the array of alerts as soon as all three are clicked\n // Sanitize array for duplicate entries from race conditions\n const dataSet = new Set(alertArray)\n const uniqueArray = Array.from(dataSet)\n const index = uniqueArray.findIndex(id => id === removeId);\n if (index > -1) { \n let localArray = uniqueArray\n localArray.splice(index, 1)\n setAlertArray(localArray);\n } \n }\n\n const configChange = (change) => {\n setDidConfigChange(change)\n }\n\n const toggleConfig = () => {\n if(didConfigChange == false){\n\n if(isConfigOpen){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('cardTop');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n setIsConfigOpen(false)\n }, 400)\n } else {\n setIsConfigOpen(true)\n setTimeout(() => {\n const element = document.getElementById('edit');\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n }\n }\n\n const showPopup = (number) => {\n setPopupNumber(number)\n setIsOpen(true)\n }\n\n const setupIsTabOpen = (bool) => {\n setIsTabOpen(bool)\n }\n\n return (\n \n \n \n \n\n \n \n \n {wingnutStatus(WingnutStatus.Disconnected) && ()}\n {wingnutStatus(WingnutStatus.Unconfigured) && ()}\n {wingnutStatus(WingnutStatus.Unlinked) && ()}\n\n { !wingnutStatus(WingnutStatus.Disconnected) && !wingnutStatus(WingnutStatus.Unconfigured) && !wingnutStatus(WingnutStatus.Unlinked) ?\n \n :\n null\n }\n\n \n\n \n \n \n Wingnut Details\n Serial Number\n {wingnutDetails ? wingnutDetails.externalId : \"-\"}\n UUID Number\n {wingnutDetails ? wingnutDetails.id : \"-\"}\n Date Added\n {wingnutDetails && wingnutDetails.createdAt ? wingnutDetails.createdAt : \"-\"}\n \n \n \n Property Details\n Property Name\n {wingnutDetails && wingnutDetails.property ? wingnutDetails.property.config.name: \"-\"}\n Property ID\n {wingnutDetails && wingnutDetails.property ? wingnutDetails.property.externalId : \"-\"}\n Address\n {wingnutDetails && wingnutDetails.property ? `${wingnutDetails.property.config.address.streetAddress} ${wingnutDetails.property.config.address.city} ${wingnutDetails.property.config.address.provinceState} ${wingnutDetails.property.config.address.country} ${wingnutDetails.property.config.address.postalZip}` : \"-\"}\n \n {wingnutDetails && wingnutDetails.property && (\n \n \n \n \n \n )}\n {wingnutDetails && wingnutDetails.property && (\n {\n if (wingnutDetails) {\n showPopup(1)\n }\n }}>\n \n \n )}\n \n {wingnutDetails && wingnutDetails.property && (\n // TODO: hiding this for now\n \n \n \n )}\n \n\n\n \n \n \n\n \n \n {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}>\n Wingnut Configuration\n\n
\n \n {isConfigOpen ? \n \n showPopup(5)} style={{ visibility: isJustDesktopSize ? didConfigChange ? \"visible\" : 'hidden' : 'hidden'}}>DISCARD CHANGES\n \n SAVE CONFIGURATION\n \n \n :\n null\n }\n \n \n \n \n\n \n \n SAVE CONFIGURATION\n \n showPopup(5)} style={{ visibility: didConfigChange ? \"visible\" : 'hidden'}}>DISCARD CHANGES\n \n\n {isConfigOpen ?\n updateSensor(sensor)} \n configChange={configChange} \n addAlert={addAlert} \n removeAlert={removeAlert} \n checkAlert={checkAlert} \n alertSignal={alertSignal} \n alertArray={alertArray} \n discardChanges={discardChanges} \n trackCurrentTab={trackCurrentTab} \n currentTab={currentTab}/>\n :\n null\n }\n \n\n \n \n \n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px red dashed; */\n`;\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n max-width: 1440px;\n display: flex;\n flex-direction: column;\n padding-bottom: 50px;\n padding-top: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusCard = styled.div`\n /* border: 1px green dashed; */\n width: 98%;\n height: auto;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n width: 95%;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n border-radius: 10px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-right: 15px;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 20px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 26px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Line = styled.div`\n width: auto;\n height: 0.69px;\n background: ${COLORS.HighlightMedium};\n margin-bottom: 35px;\n `\n\nconst Line2 = styled(Line)`\n margin-top: 35px;\n`;\n\nconst DetailsContainer = styled.div`\n /* border: 1px white dashed;; */\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-bottom: 27px; */\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n background-color: #0E1C36;\n display: flex;\n flex-direction: column;\n width: 50%;\n padding: 20px;\n border-radius: 10px;\n margin-right: 8px;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n width: 100%;\n padding-right: 100px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetailsRight = styled.div`\n /* border: 1px white dashed; */\n background-color: #0E1C36;\n display: flex;\n width: 50%;\n flex-direction: column;\n padding: 20px;\n border-radius: 10px;\n margin-left: 8px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n margin-left: 0px;\n margin-top: 16px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 10px;\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 2px;\n`\n\nconst LinkContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-top: 15px;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: flex-start;\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 30px;\n padding-top: 15px;\n padding-bottom: 15px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst LaunchIcon = styled.img`\n width: 9px;\n height: 9px;\n align-self: center;\n margin-right: 7.5px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n width: auto;\n height: auto;\n border: none;\n padding: 0px;\n background: transparent;\n cursor: pointer;\n color: ${COLORS.White};\n\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Green};\n /* margin-right: 32px; */\n\n :hover {\n color: #63C085;\n }\n`\n\nconst ConfigParent = styled.div`\n /* border: 1px green dashed; */\n`;\n\nconst ConfigHeaderContainer = styled.div`\n /* border: 1px red dashed; */\n background-color: #0E1C36;\n /* padding: 20px; */\n border-radius: 10px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-content: center;\n margin-top: 15px;\n`\n\nconst ConfigContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n`;\n\nconst ConfigRightContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n`\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst SaveConfigContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst SaveConfig = styled.button`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background-color: #0E1C36;\n cursor: pointer;\n text-align: center;\n margin-right: 15px;\n :hover {\n opacity: 0.8;\n\n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SaveConfigMobileContainer = styled.div`\n /* border: 1px red dashed; */\n ${media.lessThan(\"743px\")`\n display: flex;\n flex-direction: row;\n background-color: #0E1C36;\n margin-top: -20px;\n margin-bottom: -40px;\n padding-left: 20px;\n border-radius: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* display: none; */\n display: flex;\n flex-direction: row;\n background-color: #0E1C36;\n margin-top: -20px;\n margin-bottom: -10px;\n padding-left: 20px;\n border-radius: 10px;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst SaveConfig2 = styled(SaveConfig)`\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n margin-bottom: 20px;\n display: flex;\n background-color: #0E1C36;\n `}\n ${media.between(\"744px\", \"large\")`\n /* display: none; */\n margin-top: 20px;\n margin-bottom: 20px;\n display: flex;\n background-color: #0E1C36;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n /* display: none; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n /* display: none; */\n `}\n`\n\n\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n `;\n\nconst ButtonText2Mobile = styled(ButtonText2)`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst ButtonText3 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085;\n }\n ${media.lessThan(\"743px\")`\n display: inline;\n /* color: green; */\n align-self: flex-start;\n margin-bottom: 30px;\n width: 200px;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `} \n`;\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n","import React, { useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport { useHistory } from \"react-router-dom\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { ValidatorStrings, ServerStrings, WingnutValidatorStrings } from \"./../util/VaildatorStrings\"\nimport { ErrorContainer, Icon, Error, EmptyError } from \"./../custom/ValidatorStyles\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n width: auto;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: 439px;\n display: flex;\n flex-direction: column;\n margin-top: 27px;\n margin-right: 83px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n margin-top: 30px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 384px;\n `}\n`\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 22px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n margin-top: 6px;\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 90%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n /* padding: 10px 20px; */\n align-self: flex-end;\n width: 170px;\n height: 45px;\n border: none;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 10px;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: black;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nString.prototype.splice = function(idx, rem, str) {\n return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));\n};\n\n\nexport default function AddWingnutForm() {\n const history = useHistory()\n\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n setValue,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession, authenticateChangeEmail } = useContext(AccountContext)\n const [showSpinner, setShowSpinner] = useState(false)\n const [passwordShown, setPasswordShown] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [serverError, setServerError] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n\n const onSubmit = async (data) => {\n setServerError(null)\n setShowSpinner(true)\n setDisabled(true)\n\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: {\n wingnutId: data.uuid.toLowerCase()\n }\n }\n try {\n const response = await API.post('FrontendAPI-wingnuts', ``, init)\n if (response.success) {\n getSession().then(() => {\n history.push(`add/success/${data.uuid}`)\n })\n } else {\n setShowSpinner(false)\n setDisabled(false)\n setServerError(ServerStrings(\"InvalidWingnut\"))\n }\n } catch (error) {\n setShowSpinner(false)\n setDisabled(false)\n setServerError(ServerStrings(\"InvalidWingnut\"))\n }\n }\n\n const isUUID = (uuid) => {\n const regex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi\n return regex.test(uuid)\n }\n\n const onUUIDChange = (e) => {\n e.preventDefault()\n var value = e.target.value\n\n var shouldDelete = true\n // if value starts with - it means another character was deleted\n if (value.substr(value.length - 1) == \"-\") {\n shouldDelete = false\n }\n\n // only want Hexidecimal Values\n value = value.replace(/[^a-fA-F0-9]+/g,'')\n\n if (value.length > 32) {\n value = value.slice(0, 32)\n }\n\n if (value.length > 19) {\n value = value.splice(20, 0, \"-\")\n }\n if (value.length > 15) {\n value = value.splice(16, 0, \"-\")\n }\n if (value.length > 11) {\n value = value.splice(12, 0, \"-\")\n } \n if (value.length > 7) {\n value = value.splice(8, 0, \"-\")\n }\n\n\n // Character deleted, remove dash and number behind dash\n if (!e.nativeEvent.data && value.substr(value.length - 1) == \"-\" && shouldDelete) {\n value = value.slice(0, -2)\n }\n\n setValue(\"uuid\", value.toLowerCase())\n }\n\n return (\n \n
\n \n {onUUIDChange(e)}\n })}\n style={{ border: errors.uuid || serverError ? \"1px solid #D25353\" : null, paddingLeft: errors.uuid || serverError ? '9px' : null }}\n />\n {errors.uuid ? {WingnutValidatorStrings(errors.uuid?.type)} : serverError ? {serverError} : }\n\n \n \n
\n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"./../../auth/Account\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image2 from \"./../../images/eye.svg\"\nimport Image from \"./../../images/ic_success.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { HelpValidatorStrings } from \"./../util/VaildatorStrings\"\nimport {\n ErrorContainer,\n Icon,\n Error,\n EmptyError,\n SuccessContainer,\n SuccessIcon,\n Success,\n EmptySuccess,\n} from \"./../custom/ValidatorStyles\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: auto;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: 100%;\n max-width: 550px;\n display: flex;\n flex-direction: column;\n margin-top: 16px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n max-width: 520px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: flex-end;\n width: 189px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 0px;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n /* border: 1px red dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: black;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Textarea = styled.textarea`\n resize: none;\n width: 100%;\n max-width: 550px;\n height: 219px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-size: 16px;\n font-weight: 400;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding: 10px;\n ::placeholder {\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n padding-top: 9px;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n padding-top: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n max-width: 520px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function HelpForm() {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const { getSession } = useContext(AccountContext)\n const [showSpinner, setShowSpinner] = useState(false)\n const [success, setSuccess] = useState(false)\n const [disabled, setDisabled] = useState(false)\n const [validatorError, setValidatorError] = useState(null)\n\n const [state, setState] = useState({\n family_name: null,\n given_name: null,\n company: null,\n email: null,\n })\n\n useEffect(() => {\n getSession().then(({ family_name, given_name, company, email }) => {\n setState({ family_name, given_name, company, email })\n })\n }, [])\n\n useEffect(() => {\n if (success) {\n const timer = setTimeout(() => {\n setSuccess(false)\n }, 2000)\n return () => clearTimeout(timer)\n }\n }, [success])\n\n const onSubmit = async (data) => {\n setValidatorError(null)\n setSuccess(false)\n setDisabled(true)\n setShowSpinner(true)\n\n try {\n let result = await fetch(\n // \"https://10ww8j15w1.execute-api.us-east-2.amazonaws.com/prod/sendcontactus\", // info@spherescreative.com\n \"https://3qvbz9e2j8.execute-api.us-west-2.amazonaws.com/prod/messages\", // Wingnut\n {\n method: \"post\",\n mode: \"no-cors\",\n headers: {\n Accept: \"application/json\",\n \"Content-type\": \"application/json\",\n },\n body: JSON.stringify({\n fullname: state.given_name && state.family_name ? `${state.given_name} ${state.family_name}` : \"Name Unknown\",\n company: state.company ? state.company : \"Company Unknown\",\n email: state.email ? state.email : \"Email Unknown\",\n message: data.message,\n }),\n }\n )\n\n setShowSpinner(false)\n setSuccess(true)\n setDisabled(false)\n reset({ message: \"\" })\n setValidatorError(null)\n } catch (e) {\n console.log(\"Error\", e)\n setShowSpinner(false)\n setSuccess(false)\n setDisabled(false)\n setValidatorError(\"Unable to send message. Please try again\")\n }\n }\n\n return (\n \n
\n {success ? (\n \n \n Your message has been sent. We'll be in touch shortly.\n \n ) : (\n \n )}\n \n \n {errors.message ? (\n {HelpValidatorStrings(errors.message?.type)}\n ) : validatorError ? (\n \n \n {validatorError}\n \n ) : (\n \n )}\n\n \n \n
\n )\n}\n","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport AddWingnutForm from \"../form/AddWingnutForm\"\nimport HelpForm from \"../form/HelpForm\"\n\nconst Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"744px\")`\n margin-left: 30px;\n margin-bottom: 30px;\n `}\n`\n\nconst HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: 600;\n font-size: 32px;\n line-height: 84.5%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst DateText = styled.p`\n width: 430px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 15px;\n`\n\nexport default class AddWingnut extends Component {\n render() {\n return (\n \n You can find the serial number and UUID on your Wingnut device\n \n \n )\n }\n}\n","export default __webpack_public_path__ + \"static/media/ic_link.da4111c0.svg\";","export default __webpack_public_path__ + \"static/media/ic_link_off.9c856195.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport ImgWingnut from \"./../../images/ic_wingnuts_white.svg\"\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst WingnutDetails = styled.div`\n background: ${COLORS.Primary};\n border: 1px solid ${COLORS.HighlightMedium};\n border-radius: 10px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 340px;\n flex-wrap: none;\n padding: 15px;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n width: 100%;\n height: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 350px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n /* margin-top: 14px; */\n margin-bottom: 8px;\n`\n\nconst WingnutIcon2 = styled.img`\n width: 14px;\n height: 14px;\n margin-left: 10px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 13px;\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 1px;\n`\n\nconst BottomContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n width: auto;\n height: auto;\n border: none;\n /* border: 1px red dashed; */\n /* border-radius: 30px; */\n background: transparent;\n color: ${COLORS.White};\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 20px;\n margin-left: -5px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 235px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background: transparent;\n cursor: pointer;\n text-align: center;\n margin-top: 17px;\n align-self: flex-end;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function LinkWingnutDetails(props) {\n const {wingnutDetails} = props\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n Wingnut Details\n Serial Number\n {wingnutDetails.externalId}\n UUID Number\n {wingnutDetails.id}\n Date Added\n {wingnutDetails.createdAt.split(\" \")[0]}\n \n \n\n {props.onLeftSide ?\n props.hasProperty() ? \n \n \n BACK TO WINGNUT\n \n \n \n :\n null\n\n :\n \n \n GO TO WINGNUT \n \n \n \n }\n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgProperty from \"./../../images/ic_property_white.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst WingnutDetails = styled.div`\n background: ${COLORS.Primary};\n border: 1px solid ${COLORS.HighlightMedium};\n border-radius: 10px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-wrap: none;\n height: 340px;\n padding: 15px;\n ${media.lessThan(\"743px\")`\n padding-right: 0px;\n width: 100%;\n height: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* padding-right: 17px; */\n height: 340px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst WingnutIcon = styled.img`\n width: 23px;\n height: auto;\n margin-bottom: 8px;\n`\n\nconst WingnutIcon2 = styled.img`\n width: 12px;\n height: 12px;\n align-self: center;\n margin-left: 10px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetailsRight = styled(WingnutDetails)`\n /* border: 1px green dashed; */\n padding-right: 0px;\n /* width: 50%; */\n`\n\nconst Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 13px;\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 1px;\n`\n\nconst BottomContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n width: auto;\n height: auto;\n border: none;\n /* border: 1px red dashed; */\n /* border-radius: 30px; */\n background: transparent;\n color: ${COLORS.White};\n cursor: pointer;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 20px;\n margin-left: -5px;\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 235px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background: transparent;\n cursor: pointer;\n text-align: center;\n margin-top: 17px;\n align-self: flex-end;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function PropertyDetailsCard(props) {\n const { propertyDetails } = props\n\n return (\n \n \n \n \n {propertyDetails.config.name}\n Property ID\n {propertyDetails.externalId}\n Portfolio\n {propertyDetails.config.portfolio}\n Address\n {propertyDetails && `${propertyDetails.config.address.streetAddress} ${propertyDetails.config.address.city} ${propertyDetails.config.address.provinceState} ${propertyDetails.config.address.country} ${propertyDetails.config.address.postalZip}`}\n \n \n \n \n {props.onLeftSide ? \"BACK TO PROPERTY\" : \"GO TO PROPERTY\"}\n \n \n \n \n \n \n )\n}\n","import React, { useState, useContext, useEffect, useMemo } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport PlacesAutocomplete, {geocodeByPlaceId} from 'react-places-autocomplete';\nimport { COLORS } from \"../../styles/colors\";\n\nconst google = window.google\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 100%;\n` \n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function AddressSearch(props) {\n const { selectAddress, errors, defaultValue } = props\n const [address, setAddress] = useState(defaultValue)\n\n const handleChange = (value) => {\n setAddress(value)\n }\n\n const handleSelect = async (address, placeId, suggestion) => {\n setAddress(suggestion.formattedSuggestion.mainText)\n\n const [place] = await geocodeByPlaceId(placeId);\n const streetNumber = place.address_components.find(c => c.types.includes('street_number')) || undefined;\n const street = place.address_components.find(c => c.types.includes('route')) || undefined;\n const city = place.address_components.find(c => c.types.includes('locality')) || undefined;\n const country = place.address_components.find(c => c.types.includes('country')) || undefined;\n const province = place.address_components.find(c => c.types.includes('administrative_area_level_1')) || undefined;\n const postalCode = place.address_components.find(c => c.types.includes('postal_code')) || undefined;\n\n const newAddress = {\n city: city ? city.long_name : \"\",\n country: country ? country.long_name : \"\",\n postalZip: postalCode ? postalCode.long_name : \"\",\n provinceState: province ? province.short_name : \"\",\n streetAddress: (`${streetNumber ? streetNumber.long_name : \"\"} ${street ? street.short_name : \"\"}`).trim()\n }\n selectAddress(newAddress)\n }\n\n return (\n \n \n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n
\n \n\n
\n\n {loading &&
Loading...
}\n \n {suggestions.map(suggestion => {\n const className = suggestion.active ?'suggestion-item--active': 'suggestion-item';\n\n return (\n \n {suggestion.description}\n
\n );\n })}\n
\n
\n )}\n \n
\n )\n}","import React, { useState, useContext, useEffect, useMemo } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { AccountContext } from \"../../auth/Account\"\nimport { CognitoUserAttribute } from \"amazon-cognito-identity-js\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport {\n Error,\n EmptyError\n} from \"../custom/ValidatorStyles\"\nimport { ValidatorStrings } from \"../util/VaildatorStrings\"\nimport AddressSearch from \"./AddressSearch\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\nimport { API, Auth } from \"aws-amplify\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n width: 98%;\n max-width: 1048px;\n height: auto;\n background: #0e1c36;\n border-radius: 10px;\n padding: 35px 35px;\n align-content: center;\n margin-top: 20px;\n margin-bottom: 40px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n background: ${COLORS.Base};\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px red dashed; */\n /* width: 439px; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-top: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n max-width: 382px;\n /* width: 384px; */\n `}\n`\n\nconst HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White} ;\n margin-bottom: 11px;\n margin-top: 20px;\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n margin-bottom: 2px;\n /* margin-top: 10px; */\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n max-width: 378px;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Input2 = styled(Input)`\n width: 96%;\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 10px\n `}\n`\n\nconst Input3 = styled(Input)`\n width: 100%;\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: flex-end;\n width: 160px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n margin-top: 28px;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n width: 200px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n width: 200px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: #0c182f;\n :hover {\n color: ${COLORS.Base};\n }\n`\n\n\nconst OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 100%;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n `}\n`;\n\n\nconst SectionContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n min-width: 382px;\n max-width: 378px;\n margin-right: 20px;\n /* width: 50%; */\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst StatusIcon = styled.img`\n width: 23px;\n height: 23px;\n /* margin-bottom: 20px; */\n margin-top: 20px;\n`\n\nconst RowContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n max-width: 378px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ColumnContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n`\n\nconst HeaderText2 = styled(HeaderText)`\n margin-top: 0px;\n`;\n\nconst Line = styled.div`\n width: 100%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 21px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n /* width: 90% */\n margin-right: 0px;\n `}\n`\n\n// https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform\n\nexport default function AddProperty(props) {\n const {propertyData} = props\n\n const [address, setAddress]= useState()\n const isDesktopSize = useMediaQuery({ query: '(min-width: 1170px)' })\n\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n setValue,\n trigger,\n setError,\n clearErrors,\n formState: { errors, isSubmitSuccessful, isValid },\n } = useForm({ \n reValidateMode: \"onChange\",\n defaultValues: useMemo(() => {\n return props.propertyData;\n }, [props])\n })\n\n const checkForm = async (data) => {\n // Always run custom validation for externalId\n const externalIdError = await validateExternalId(data.externalId);\n\n if (externalIdError === true) {\n props.loadFormData(data);\n } else {\n // Set errors manually if validation fails\n if (externalIdError !== true) {\n setError(\"externalId\", {\n type: \"externalIdInvalid\",\n message: \"Property ID is not valid\",\n });\n }\n }\n};\n\n const selectAddress = (newAddress) => {\n setAddress(newAddress)\n setValue(\"street\", newAddress.streetAddress)\n setValue(\"city\", newAddress.city)\n setValue(\"provinceState\", newAddress.provinceState)\n setValue(\"postalZipCode\", newAddress.postalZip)\n setValue(\"country\", newAddress.country)\n }\n\n useEffect(() => {\n reset(props.propertyData);\n }, [props.propertyData])\n\n const validateExternalId = (value) => {\n return Auth.currentSession()\n .then(session => session.getIdToken())\n .then(token => token.getJwtToken())\n .then(jwt => {\n const init = { headers: { Authorization: `Bearer ${jwt}` } };\n return API.get('FrontendAPI-companies', `/external/${value}`, init);\n })\n .then(response => {\n if (response.success) {\n // console.log(\"DATA\", response.data);\n return true;\n } else {\n // console.log(\"Not Successful\", response.data);\n return \"Property ID is not valid\";\n }\n });\n};\n\n return (\n \n {props.linkView ? \n
\n Add Property\n \n
\n :\n null\n }\n\n\n
\n \n \n \n General Information\n \n \n {errors.propertyName ? {ValidatorStrings(errors.propertyName?.type)} : }\n\n \n \n {errors.externalId ? {ValidatorStrings(errors.externalId?.type)} : }\n\n \n \n {errors.portfolio ? {ValidatorStrings(errors.portfolio?.type)} : }\n \n\n \n Address\n \n \n {errors.street ? {ValidatorStrings(errors.street?.type)} : }\n\n \n \n {errors.city ? {ValidatorStrings(errors.city?.type)} : }\n\n \n \n {errors.country ? {ValidatorStrings(errors.country?.type)} : }\n \n \n \n \n {errors.provinceState ? {ValidatorStrings(errors.provinceState?.type)} : }\n \n \n \n \n {errors.postalZipCode ? {ValidatorStrings(errors.postalZipCode?.type)} : }\n \n \n \n \n \n \n \n \n
\n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport { Link, useHistory } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n max-width: 1260px;\n height: 100%;\n display: flex;\n flex-direction: column;\n padding-bottom: 50px;\n padding-top: 18px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusCard = styled.div`\n /* border: 1px yellow dashed; */\n width: 90%;\n max-width: 744px;\n height: auto;\n display: flex;\n flex-direction: column;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 20px;\n padding: 35px 35px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n width: 95%;\n margin-right: 0px;\n align-self: center;\n background-color: transparent;\n\n `}\n ${media.between(\"744px\", \"large\")`\n width: 95%;\n padding: 25px 25px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 25px;\n`\n\nconst Line = styled.div`\n width: auto;\n height: 0.69px;\n background: ${COLORS.HighlightDark};\n margin-top: 30px;\n margin-bottom: 30px;\n`\n\nconst DetailsContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: flex-end;\n width: 189px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n margin-bottom: 10px;\n margin-top: 0px;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n /* border: 1px red dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: black;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 50%;\n margin-bottom: 29px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h3`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 10px;\n`\n\nconst InfoText = styled.h2`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 2px;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: auto;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst BtnConfirm = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 214px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n cursor: pointer;\n margin-top: 11px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: black;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 300px;\n height: 55px;\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n font-size: 15px;\n margin-right: 20px;\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 20px;\n `}\n`\n\n\nconst BtnEdit = styled(BtnConfirm)`\n background: transparent;\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1;\n border: 1px solid #63c085;\n }\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\n\nexport default function AddPropertyConfirm(props) {\n const {form} = props\n \n const history = useHistory()\n const [isHovering, setIsHovering] = useState(false)\n const [isEditHovering, setIsEditHovering] = useState(false)\n\n const isDesktopSize = useMediaQuery({ query: '(min-width: 1170px)' })\n\n return (\n \n \n \n \n Confirm New Property Details\n Property Name\n {form.propertyName}\n Property ID\n {form.externalId}\n Portfolio\n {form.portfolio}\n Address\n {`${form.street} ${form.city} ${form.provinceState} ${form.country} ${form.postalZipCode}`}\n \n\n\n \n\n \n CONFIRM NEW PROPERTY\n {props.showSpinner && }\n \n\n {props.backToEdit()}}>\n EDIT DETAILS\n \n \n \n \n \n )\n}\n","import React, { useState } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport AddWingnutForm from \"../form/AddWingnutForm\"\nimport Image2 from \"./../../images/ic_check_circle.svg\"\nimport Image3 from \"./../../images/ic_arrow_right.svg\"\nimport HelpForm from \"../form/HelpForm\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n margin-bottom: 30px;\n padding: 16px;\n `}\n`\n\nconst StatusCard = styled.div`\n /* border: 1px yellow dashed; */\n width: 90%;\n max-width: 744px;\n height: 476px;\n display: flex;\n flex-direction: column;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 20px;\n padding: 35px 35px;\n margin-right: 30px;\n margin-top: 20px;\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n width: 95%;\n margin-right: 0px;\n align-self: center;\n background-color: transparent;\n\n `}\n ${media.between(\"744px\", \"large\")`\n width: 95%;\n padding: 25px 25px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\n\nconst Icon = styled.img`\n width: 35px;\n height: 35px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n margin-top: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BlurbText = styled.p`\n /* width: 430px; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 11px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n /* text-align: center; */\n width: 80%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n height: auto;\n width: auto;\n margin-top: 22px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n align-self: flex-start;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst BtnLinkWingnut = styled.button`\n width: 191px;\n justify-content: center;\n align-items: center;\n height: 40px;\n border-radius: 30px;\n margin-right: 10px;\n border: none;\n color: ${COLORS.White};\n background: #63c085;\n cursor: pointer;\n text-align: center;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n margin-top: 10px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnProperty = styled(BtnLinkWingnut)`\n width: 191px;\n border-radius: 30px;\n background: transparent;\n border: 1px solid #63c085;\n margin-right: 10px;\n margin-top: 0px;\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1.0;\n }\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n margin-top: 10px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst ButtonText = styled.p`\n color: black;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText2 = styled(ButtonText)`\n color: ${COLORS.White};\n :hover {\n color: ${COLORS.White};\n }\n`;\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function AddWingnutSuccess(props) {\n\n return (\n \n \n\n \n Success!\n Property successfully added. Link it to a Wingnut now to start collecting data.\n \n \n \n \n LINK WINGNUT\n \n \n \n \n \n \n GO TO PROPERTY\n \n \n \n \n \n\n \n )\n}\n","import React, {useState} from 'react'\nimport { API, Auth } from \"aws-amplify\"\nimport AddProperty from \"./../properties/AddProperty\"\nimport AddPropertyConfirm from \"./../properties/AddPropertyConfirm\"\nimport AddPropertySuccess from \"./../properties/AddPropertySuccess\"\n\nexport default function AddPropertyContainer(props) {\n\n const [showConfirm, setShowConfirm] = useState(false)\n const [showSuccess, setShowSuccess] = useState(false)\n const [propertyUUID, setPropertyUUID] = useState()\n const [showSpinner, setShowSpinner] = useState(false)\n const [disabled, setDisabled] = useState(false)\n\n const [propertyData, setPropertyData] = useState({\n propertyName: '',\n externalId: '',\n portfolio: '',\n street: '',\n city: '',\n provinceState: '',\n postalZipCode: ''\n })\n\n const loadFormData = (data) => {\n setPropertyData({\n propertyName: data.propertyName,\n externalId: data.externalId,\n portfolio: data.portfolio,\n street: data.street,\n city: data.city,\n provinceState: data.provinceState,\n postalZipCode: data.postalZipCode,\n country: data.country\n })\n setShowConfirm(true)\n }\n\n const submitData = async () => {\n setDisabled(true)\n setShowSpinner(true)\n const payload = {\n externalId: propertyData.externalId,\n config: {\n name: propertyData.propertyName,\n address: {\n city: propertyData.city,\n country: propertyData.country, \n postalZip: propertyData.postalZipCode,\n provinceState: propertyData.provinceState,\n streetAddress: propertyData.street\n },\n assests: {},\n portfolio: propertyData.portfolio\n }\n }\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { \n Authorization: `Bearer ${jwt}` \n },\n body: payload\n }\n\n try {\n const response = await API.post('FrontendAPI-properties', ``, init)\n if (response.success) {\n setDisabled(false)\n setShowSpinner(false)\n if(props.linkView == null){\n setShowSuccess(true)\n }\n setPropertyUUID(response.data.id)\n\n if (props.done) {\n props.done(response.data)\n }\n } else {\n setDisabled(false)\n setShowSpinner(false)\n }\n } catch (error) {\n setDisabled(false)\n setShowSpinner(false)\n }\n }\n\n const backToEdit = () => {\n setShowConfirm(false)\n setShowSuccess(false)\n }\n\n return (\n
\n {showConfirm ?\n showSuccess ?\n props.linkView == null ?\n \n :\n null\n :\n \n :\n \n } \n
\n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgAdd from \"./../../images/ic_add.svg\"\nimport Select from \"react-dropdown-select\"\nimport Fuse from \"fuse.js\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst fuzzyOptions = {\n threshold: 0.1,\n keys: [\"config.name\"],\n}\n\nexport default function LinkWingnutSelectProperty(props) {\n const { data } = props\n const [isSelected, setIsSelected] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n const [selectedProperty, setSelectedProperty] = useState(null)\n const [isOpen, setIsOpen] = useState(false)\n const [searchOptions, setSearchOptions] = useState([])\n const fuseSearch = new Fuse(data, fuzzyOptions)\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n}, [])\n\n useEffect(() => {\n setSearchOptions(mapRawData(data))\n }, [data])\n\n const mapRawData = (data) => {\n const options = data.map((item) => ({\n key: item.id,\n label: item.config.name,\n value: item.id,\n }))\n options.unshift({label: (\n \n \n \n Add New Property\n \n \n ), value: \"AddProperty\"})\n return options\n }\n\n const filterOptions = (filter) => {\n if (filter) {\n setSearchOptions(mapRawData(fuseSearch.search(filter).map((s) => s.item)))\n } else {\n setSearchOptions(mapRawData(fuseSearch.getIndex().docs))\n }\n }\n\n const onSelected = (item) => {\n if (item[0]) {\n\n if(item[0].value === \"AddProperty\"){\n props.toggleAddProperty()\n }\n setSelectedProperty(item[0])\n setIsSelected(true)\n } else {\n setSelectedProperty(null)\n setIsSelected(false)\n }\n }\n\n const pressLinkProperty = () => {\n if (selectedProperty) {\n props.linkProperty(selectedProperty.value)\n }\n }\n\n return (\n \n \n \n Select a Property\n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}>\n onSelected(value)}\n options={searchOptions}\n values={[]}\n inputRenderer={\n ({ props, state, methods, inputRef }) => ( \n filterOptions(event.target.value)}\n hidden={selectedProperty ? true: false} \n placeholder=\"Property Name\" \n ref={inputRef} \n style={{ cursor: 'pointer', color: selectedProperty ? \"green\" : COLORS.White, fontSize: \"18px\", fontWeight: \"300\"}} \n /> \n )\n }\n searchable={true}\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n fontWeight: \"300\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"18px\",\n }}\n />\n
\n\n \n LINK PROPERTY\n {props.disabled && }\n \n\n
\n
\n )\n\n}\n\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n background: ${COLORS.Secondary};\n`\n\n// default color\n\nconst WingnutDetails = styled.div`\n background: ${COLORS.Primary};\n border: 1px solid ${COLORS.HighlightMedium};\n border-radius: 10px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n padding: 15px;\n height: 340px;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n /* padding-right: 0px; */\n width: 100%;\n height: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 350px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutIcon = styled.img`\n width: 23px;\n height: auto;\n /* margin-top: 30px; */\n margin-bottom: 8px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n margin-top: 15px; \n\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear,\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n /* height: 60px; */\n font-size: 16px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: red;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 95%;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.Base};\n background: #63c085;\n cursor: pointer;\n text-align: center;\n margin-top: 17px;\n /* align-self: center; */\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n :hover {\n }\n`\n\nconst BtnAddProperty = styled.div`\n display: flex;\n flex-direction: row;\n border: none;\n background: transparent;\n padding-top: 5px;\n`;\n\nconst AddIcon = styled.img`\n width: 14px; \n height: 14px;\n align-self: center;\n margin-right: 8px;\n`;\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: #375D5A;\n`;\n\nconst Input = styled.input`\nbackground: transparent;\nborder: none;\noutline: none;\nwidth: 100%;\n/* height: 100%; */\ncolor: ${COLORS.White};\n/* font-family: \"Roboto Condensed\", sans-serif; */\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst HeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: auto;\n min-width: 300px;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 0px;\n /* width: 250px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-content: flex-start;\n`\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-right: 15px;\n margin-top: 3px;\n /* align-self: center; */\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InfoText = styled.h2`\n /* width: 370px; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 6px;\n margin-right: 5px;\n ${media.lessThan(\"743px\")`\n /* width: 300px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 300px; */\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: black;\n background: #63c085;\n cursor: pointer;\n text-align: center;\n /* margin-top: 22px; */\n ${media.lessThan(\"743px\")`\n margin-bottom: 50px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-bottom: 50px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nexport default function LinkWingnutHeader(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n\n {props.updateSuccess ?\n \n \n \n Success\n The Wingnut and property have been linked\n \n \n :\n \n \n \n Wingnut {props.wingnutId}\n Select which property you'd like to link to this Wingnut\n \n \n }\n\n\n\n\n \n )\n}\n","import React, { Component, useEffect, useState } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Connected from \"./../../images/ic_link.svg\"\nimport NotConnected from \"./../../images/ic_link_off.svg\"\nimport WingnutDetailsCard from \"./WingnutDetailsCard\"\nimport PropertyDetailsCard from \"./PropertyDetailsCard\"\nimport AddPropertyContainer from \"../properties/AddPropertyContainer\"\nimport LinkWingnutSelectProperty from \"./LinkWingnutSelectProperty\"\nimport LinkWingnutHeader from \"./LinkWingnutHeader\"\nimport MakeData from \"./MakeData\"\nimport { SpinnerContainer, StyledSpinner } from \"./../custom/Spinner\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function LinkWingnutToProperty(props) {\n const {params} = props.match\n const [properties, setProperties] = useState([])\n const [wingnutDetails, setWingnutDetails] = useState()\n const [isLoading, setIsLoading] = useState(true)\n const [isOpen, setIsOpen] = useState(false)\n const [disabled, setDisabled] = useState(false)\n\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n\n useEffect(() => {\n let cancelled = false\n\n async function getWingnutDetails() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-wingnuts', `/${params.id}`, init)\n if (response.success && !cancelled) {\n setWingnutDetails(response.data)\n }\n }\n\n async function getProperties() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-properties', ``, init)\n if (response.success && !cancelled) {\n setProperties(response.data)\n setIsLoading(false)\n }\n }\n\n getProperties()\n getWingnutDetails()\n return () => {\n cancelled = true\n }\n }, [])\n\n const hasProperty = () => {\n var hasProp = false\n\n if (wingnutDetails) {\n hasProp = wingnutDetails.config.hasOwnProperty('propertyId')\n }\n\n return hasProp\n }\n\n const linkProperty = async (id) => {\n setDisabled(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: { propertyId: id }\n }\n\n const response = await API.post('FrontendAPI-wingnuts', `/${wingnutDetails.id}/link`, init)\n if (response.success) {\n setDisabled(false)\n var selectedProperty = properties.find(item => item.id == id)\n response.data.property = selectedProperty\n setWingnutDetails(response.data)\n }\n }\n\n const addProperty = (data) => {\n properties.push(data)\n setProperties(properties)\n toggleAddProperty()\n }\n\n const unlinkProperty = (data) => {\n }\n\n const toggleAddProperty = () => {\n if(isOpen){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('navbar');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n setIsOpen(false)\n }, 400)\n } else {\n setIsOpen(true)\n setTimeout(() => {\n const element = document.getElementById('add');\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n }\n\n return (\n \n \n \n \n\n {hasProperty() \n ? \n : !isLoading && unlinkProperty(e)} />\n }\n\n \n \n \n \n {wingnutDetails ? () : () }\n \n {hasProperty() ? : }\n \n {hasProperty() ? (\n \n ) : (\n linkProperty(id)} data={properties} toggleAddProperty={() => toggleAddProperty()}/>\n )}\n \n \n \n
\n {isOpen && addProperty(data)}/>}\n
\n\n
\n
\n )\n}\n\n\nconst OuterContainer = styled.div`\n /* border: 1px transparent dashed; */\n display: flex;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n`;\n\nconst Container = styled.div`\n /* max-width: 1260px; */\n /* height: 100%; */\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n padding-top: 18px;\n background-color: ${COLORS.Base};\n width: 90%;\n max-width: 1047px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusCard = styled.div`\n /* border: 1px yellow dashed; */\n width: auto;\n max-width: 1048px;\n min-height: 570px;\n height: auto;\n display: flex;\n flex-direction: column;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 20px;\n padding: 35px 35px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n width: 95%;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 95%;\n padding: 25px 25px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n /* flex-direction: column; */\n flex-wrap: wrap;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst DetailsContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n /* width: 350px; */\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 340px;\n padding-bottom: 5px;\n ${media.lessThan(\"743px\")`\n width: 320px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutIcon = styled.img`\n width: 30px;\n height: 30px;\n margin-right: 30px;\n margin-left: 30px;\n margin-top: 110px;\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n margin-bottom: 20px;\n margin-right: 0px;\n margin-left: 155px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 20px;\n margin-bottom: 20px;\n margin-right: 0px;\n margin-left: 155px;\n /* align-self: center; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst EmptyContainer = styled.div`\n height: 53px;\n`\n\nconst Line = styled.div`\n /* width: 97.75%; */\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 14px;\n /* margin-right: 30px; */\n margin-bottom: 26px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { Link } from \"react-router-dom\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport ImgAlert from \"./../../images/ic_alert.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n width: 496px;\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n background-color: ${COLORS.Primary};\n border-radius: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 350px;\n justify-content: center;\n align-self: center;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n padding-right: 0px;\n /* width: 100%; */\n `}\n ${media.between(\"744px\", \"large\")`\n padding-right: 17px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnClose = styled.button`\n height: 24px;\n width: 24px;\n margin-right: 20px;\n margin-top: 20px;\n margin-bottom: 11px;\n background: transparent;\n border: none;\n outline: none;\n align-self: flex-end;\n`\n\nconst CloseIcon = styled.img`\n width: 14px;\n height: 14px;\n align-self: center;\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-bottom: 41px;\n align-self: center;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 110%;\n display: flex;\n align-self: center;\n text-align: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 130%;\n text-align: center;\n color: ${COLORS.White};\n margin-top: 12px;\n`\n\nconst ButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-top: 53px;\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 150px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n background: #63c085;\n color: black;\n cursor: pointer;\n margin-bottom: 10px;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n margin-top: 28px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnNo = styled(Button)`\n background: transparent;\n color: ${COLORS.White};\n margin-left: 5px;\n :hover {\n opacity: 1;\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function UnlinkProperty(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n \n \n \n \n \n Are you sure you want to skip the configuration step?\n You can always configure the Wingnut from the Wingnut page\n \n \n \n \n \n NO\n \n\n \n \n \n )\n}\n","import React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { Link } from \"react-router-dom\"\nimport AddWingnutForm from \"../form/AddWingnutForm\"\nimport Image2 from \"./../../images/ic_check_circle.svg\"\nimport Image3 from \"./../../images/ic_arrow_right.svg\"\nimport HelpForm from \"../form/HelpForm\"\nimport SkipConfigPopup from \"./../popup/SkipConfigPopup\"\nimport Modal from \"react-modal\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n margin-bottom: 30px;\n `}\n`\n\nconst Icon = styled.img`\n width: 35px;\n height: 35px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-top: 37.5px;\n margin-bottom: 12px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 24px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BlurbText = styled.p`\n /* width: 430px; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 12px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n text-align: center;\n width: 50%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n height: auto;\n width: auto;\n margin-top: 39px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n align-self: center;\n `}\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 230px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background: transparent;\n cursor: pointer;\n text-align: center;\n :hover {\n background: ${COLORS.Secondary};\n }\n ${media.lessThan(\"743px\")`\n /* align-self: flex-start; */\n margin-top: 10px;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnConfigure = styled(BtnBack)`\n width: 230px;\n border-radius: 30px;\n background: #63c085;\n border: none;\n color: black;\n margin-right: 10px;\n :hover {\n opacity: 0.8;\n background: #63c085;\n }\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n\n\nexport default function AddWingnutSuccess(props) {\n const {params} = props.match\n\n const [isHovering, setIsHovering] = useState(false)\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n const closePopup = () => {\n setIsModalOpen(false)\n }\n\n return (\n
\n \n \n \n\n \n \n Success!\n Wingnut successfully added. Configure it now to start collecting data.\n \n \n \n \n CONFIGURE WINGNUT\n \n \n \n\n setIsModalOpen(true)}>\n BACK TO WINGNUTS OVERVIEW\n \n\n \n \n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/ic_portfolio.794bcc7a.svg\";","export default __webpack_public_path__ + \"static/media/ic_cities.dbf9ba37.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgEyeActive from \"./../../images/eye.svg\"\nimport ImgEyeOff from \"./../../images/ic_eye_off.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst StatusCard = styled.div`\n /* border: 1px red dashed; */\n width: 287px;\n height: 70px;\n /* min-width: 340px; */\n /* max-width: 380px; */\n /* min-height: 85px; */\n /* max-height: 90px; */\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n align-self: flex-end;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 17px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 90%;\n `}\n ${media.between(\"744px\", \"large\")`\n min-width: 300px;\n max-width: 300px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-left: 20px;\n margin-right: 20px;\n align-self: center;\n`\n\nconst CardTextContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n`\n\nconst CardHeader = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 12pt;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst CardNumber = styled.h1`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 32px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n text-transform: capitalize;\n color: ${COLORS.White};\n`\n\nconst EyeButton = styled.button`\n display: flex;\n width: 42px;\n height: 42px;\n border: 1px solid ${COLORS.Secondary};\n box-sizing: border-box;\n border-radius: 5px;\n background: #0e1c36;\n align-content: center;\n justify-content: center;\n margin-right: 30px;\n `\n\nconst EyeIcon = styled.img`\n /* border: 1px dashed red; */\n width: 24px;\n height: auto;\n align-self: center;\n justify-self: center;\n`\n\nexport default function PropertyStatusCard(props) {\n const [activeStatus, setActiveStatus] = React.useState(false)\n const [isHovering, setIsHovering] = React.useState(false)\n const [allOff, setAllOff] = React.useState(true)\n\n const toggleStatus = () => {\n setActiveStatus(!activeStatus)\n // tell Overview a status has been toggled\n props.toggleStatus(props.status)\n }\n\n useEffect(() => {\n if(props.state){\n if (!props.state.Live && !props.state.Disconnected && !props.state.Unlinked && !props.wingnutState.Unconfigured) {\n setAllOff(true)\n } else {\n setAllOff(false)\n }\n }\n })\n\n return (\n \n \n \n \n {props.status.key} Properties\n {props.count}\n \n \n\n {\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n style={{ background: activeStatus ? COLORS.Secondary : isHovering ? COLORS.Secondary : null }}\n >\n \n \n\n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgSearch from \"./../../images/ic_search.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgPortfolio from \"./../../images/ic_portfolio.svg\"\nimport ImgCities from \"./../../images/ic_cities.svg\"\nimport WingnutStatus from \"./../wingnuts/WingnutStatus.enum\"\nimport WingnutStatusCard from \"./../wingnuts/WingnutStatusCard\"\nimport PropertyStatusCard from \"./PropertyStatusCard\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n background-color: ${COLORS.Base};\n height: auto;\n margin-bottom: 10px;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n max-height: 840px;\n align-items: center;\n padding-top: 30px;\n margin-right: 0px;\n justify-content: center;\n flex-direction: column-reverse;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column-reverse;\n height: auto;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: auto;\n max-width: 1500px;\n ${media.lessThan(\"743px\")`\n /* width: 80%; */\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: row;\n width: 90%;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchContainerTop = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n width: 400px;\n /* max-width: 400px; */\n /* max-width: 400px; */\n ${media.lessThan(\"743px\")`\n margin-top: 10px;\n align-content: center;\n max-width: 400px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 10px;\n width: 90%;\n max-width: 400px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n// wraps search bar/icon and instruction\nconst SearchBarContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n align-self: center;\n width: 100%;\n`\n// wraps search bar and search icon\n\nconst SearchBar = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n height: 50px;\n /* max-width: 600px; */\n outline: none;\n border: 1px solid ${COLORS.White};\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Primary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :focus {\n outline: ${COLORS.White};\n border: 2px solid ${COLORS.White};\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchIcon = styled.img`\n /* border: 1px red dashed; */\n height: 20px;\n width: 20px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n margin-left: -40px;\n margin-top: 15px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n max-width: 800px;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: auto;\n min-width: 360px;\n margin-bottom: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 90%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusPair = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: flex-end;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: auto;\n align-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 8.5px;\n flex-direction: column;\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 8.5px;\n `}\n`\n\nconst StatusPairRight = styled(StatusPair)`\n ${media.between(\"744px\", \"large\")`\n margin-left: 8.5px;\n `}\n ${media.greaterThan(\"large\")`\n margin-left: 8.5px;\n `}\n\n`;\n\nconst StatusCard = styled.div`\n width: 287px;\n height: 70px;\n /* min-width: 340px; */\n /* max-width: 380px; */\n /* height: 40%; */\n /* min-height: 85px; */\n /* max-height: 90px; */\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n align-self: flex-end;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 17px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 90%;\n `}\n ${media.between(\"744px\", \"large\")`\n min-width: 300px;\n max-width: 300px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: auto;\n margin-left: 20px;\n margin-right: 20px;\n align-self: center;\n`\n\nconst CardTextContainer = styled.div`\n /* border: 1px red dashed; */\n width: 144px;\n display: flex;\n flex-direction: column;\n`\n\nconst CardHeader = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightMedium};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 12pt;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst CardNumber = styled.h1`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 32px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n text-transform: capitalize;\n color: ${COLORS.White};\n`\n\nconst ResultContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: auto;\n ${media.lessThan(\"743px\")`\n margin-top: 16px;\n margin-bottom: 16px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 10px;\n margin-left: 20px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchText = styled(CardHeader)`\n font-size: 14px;\n padding-top: 10px;\n ${media.lessThan(\"743px\")`\n font-size: 12px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 12px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ResultHeader = styled(CardHeader)`\n font-size: 14px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ResultNumber = styled(CardHeader)`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n letter-spacing: -0.01em;\n color: ${COLORS.White} ;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst EyeButton = styled.button`\n width: 42px;\n height: 42px;\n border: none;\n box-sizing: border-box;\n border-radius: 5px;\n background: #0e1c36;\n justify-self: end;\n pointer-events: none;\n :hover {\n background: ${COLORS.Secondary};\n }\n`\n\nconst EyeIcon = styled.img`\n width: 24px;\n height: 24px;\n`\nexport default function PropertyOverview(props) {\n const countPortfolio = () => {\n var portfolios = []\n props.tableData.forEach((item) => {\n if (item.portfolio) {\n const port = item.portfolio.trim() \n if (port !== \"\") {\n if (portfolios.indexOf(port) === -1) {\n portfolios.push(port)\n }\n }\n }\n })\n return portfolios.length\n }\n const countPropertyStatus = (hasWingnuts = true) => {\n const data = props.tableData.filter((item) => item.linkedWingnuts.length > 0 === hasWingnuts)\n return data.length\n }\n const countCities = () => {\n var cities = []\n props.tableData.forEach((item) => {\n if (item.address) {\n if (cities.indexOf(item.address.city) === -1) {\n cities.push(item.address.city)\n }\n }\n })\n return cities.length\n }\n\n return (\n \n \n \n \n \n \n \n Search by city name, wingnut serial number, property address, etc.\n \n \n Showing\n {props.tableData.length} Results\n \n \n \n \n \n \n \n \n Properties\n {props.tableData.length}\n \n \n \n \n \n \n \n \n Portfolios\n {countPortfolio()}\n \n \n \n \n \n \n \n \n \n \n Cities\n {countCities()}\n \n \n \n \n \n \n \n \n )\n}\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { useTable, useSortBy } from \"react-table\"\nimport { COLORS } from \"../../styles/colors\"\nimport { AccountContext } from \"../../auth/Account\"\n\nfunction Table({ columns, data, columnsToHide }) {\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n // Use the state and functions returned from useTable to build your UI\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable(\n {\n columns,\n data,\n initialState: {\n hiddenColumns: columnsToHide,\n },\n },\n useSortBy\n )\n\n // Render the UI for your table\n return (\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n {column.render(\"Header\")}\n \n ))}\n \n ))}\n \n \n {rows.map((row, i) => {\n prepareRow(row)\n return (\n \n {row.cells.map((cell) => {\n return (\n \n ) // YES\n })}\n \n )\n })}\n \n
\n {cell.render(\"Cell\", {\n serial: row.original.serial,\n propertyUUID: row.original.uuid,\n propertyName: row.original.propertyName,\n portfolio: row.original.portfolio,\n propertyId: row.original.propertyId,\n address: row.original.address,\n toggleStatus: row.original.toggleStatus,\n notificationId: row.original.notificationId,\n entityStatus: row.original.entityStatus,\n alarmState: row.original.alarmState,\n linkedWingnuts: row.original.linkedWingnuts,\n isAuth: isAuth\n })}\n
\n )\n}\n\nexport default Table\n","export default __webpack_public_path__ + \"static/media/ic_alert_blue_light.22b71c8d.svg\";","export default __webpack_public_path__ + \"static/media/ic_notification_blue.5e738656.svg\";","import React, { Component, useEffect, useState } from 'react';\nimport styled from \"styled-components\"\nimport { COLORS } from '../../styles/colors';\n\n// Tri-state toggle switch used everywhere\n\nconst values = [0,2,1]\n\nexport default function ToggleTriState(props) {\n\n const [toggle, setToggle] = useState(props.toggle)\n\n const handleChange = () => {\n\n if(props.disable !== 0){\n switch(toggle){\n case 0:\n setToggle(1)\n props.updateToggle(1)\n break;\n case 1:\n setToggle(0)\n props.updateToggle(0)\n break;\n case 2:\n setToggle(0)\n props.updateToggle(0)\n break;\n }\n }\n };\n\n useEffect(() => {\n setToggle(props.toggle)\n }, [props.toggle])\n \n return (\n \n \n \n\n {}}/>\n handleChange()} selected={toggle} style={{cursor: props.disable === 0 ? 'default' : 'pointer'}}>0\n\n {}}/>\n handleChange()} selected={toggle} style={{cursor: props.disable === 0 ? 'default' : 'pointer'}}>2\n\n {}}/>\n handleChange()} style={{cursor: props.disable === 0 ? 'default' : 'pointer'}}>1\n \n { toggle != null || toggle != undefined ? \n \n :\n null\n }\n \n \n \n \n );\n \n }\n\n const ToggleContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n `;\n\n const ToggleWrapper = styled.div`\n /* border: 1px blue dashed; */\n /* display: flex; */\n /* flex-direction: row; */\n\n\n `;\n\n // The Switch Parent\n export const Switch = styled.div`\n position: relative;\n height: 27px;\n width: 51px;\n border-radius: 30px;\n /* box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);; */\n border: ${COLORS.HighlightMedium} solid 1px;\n outline: none;\n\n ${props => props.selected === 0 &&`\n background-color: ${COLORS.Secondary};;\n `}\n\n ${props => props.selected === 1 &&`\n background-color: #63C085;;\n `}\n\n ${props => props.selected === 2 &&`\n background-color: #FBAC21;\n `}\n `;\n \n // Hide the ugly html switch\n export const SwitchRadio = styled.input`\n display: none;\n `;\n \n // Inside Circle \n export const SwitchSelection = styled.span`\n /* border: 1px blue solid; */\n display: block;\n position: absolute;\n z-index: 1;\n top: 5px;\n margin-left: 3px;\n width: 15px;\n height: 15px;\n background: ${COLORS.White};\n border-radius: 30px;\n transition: left 0.25s ease-out;\n\n ${props => props.selected === 0 &&`\n margin-left: 6px;\n\n `}\n ${props => props.selected === 2 &&`\n margin-left: 1px;\n\n `}\n ${props => props.selected === 1 &&`\n margin-left: -4px;\n `}\n `;\n \n\n // Handling the slide \n export const SwitchDiv = styled.label`\n /* border: 1px red solid; */\n position: relative;\n z-index: 2;\n float: left;\n width: 16px;\n line-height: 26px;\n font-size: 11px;\n color: rgba(0, 0, 0, 0.0);\n text-align: center;\n cursor: pointer;\n \n ${SwitchRadio}:checked + &{\n transition: 0.15s ease-out;\n }\n `;\n\n const ToggleTitle = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n letter-spacing: 0.03em;\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 130%;\n color: ${COLORS.White};\n margin-left: 8px;\n display: flex;\n align-self: center;\n `\n \n","import React, { useEffect, useState, useContext } from \"react\"\nimport media from \"styled-media-query\"\nimport styled from \"styled-components\"\nimport PropertyTable from \"./PropertyTable\"\nimport IconLaunch from \"./../../images/ic_launch_green.svg\"\nimport IconActive from \"./../../images/ic_status_green.svg\"\nimport IconAlert from \"./../../images/ic_alert.svg\"\nimport IconAlertBlue from \"./../../images/ic_alert_blue_light.svg\"\nimport IconNotification from \"./../../images/ic_notification_blue.svg\"\nimport IconUnconfigured from \"./../../images/ic_status_purple.svg\"\nimport { API, Auth } from \"aws-amplify\"\nimport IconSort from \"./../../images/ic_arrows_sort.svg\"\nimport { useHistory } from \"react-router-dom\"\nimport { Link } from \"react-router-dom\"\nimport ScreenSize from \"../wingnuts/ScreenSize.enum\"\nimport MediaQuery from \"react-responsive\"\nimport WingnutStatus from \"../wingnuts/WingnutStatus.enum\"\nimport { DateTime } from \"luxon\"\nimport { COLORS } from \"../../styles/colors\"\nimport ToggleTriState from './../notification/ToggleTriState'\n\n// Handle the highlevel table construction\nfunction PropertyTableStructure(props) {\n const history = useHistory()\n\n const [isHovering, setIsHovering] = useState(false)\n\n const updateToggle = async (toggle, notificationId) => {\n \n if(toggle !== null && notificationId !== null){\n var newConfig = {\n \"entityStatus\": \"\",\n }\n \n newConfig['entityStatus'] = toggle === 1 ? \"enabled\" : \"disabled\"\n\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: newConfig\n }\n const response = await API.post('FrontendAPI-notifications', `/${notificationId}`, init)\n if (response.success) {\n // success save\n } \n }\n }\n\n //----------------------------------------Custom Sort Functions\n const basicSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original[columnId]\n const b = rowB.original[columnId]\n if(a > b) return 1\n if (b > a) return -1\n return 0\n }\n}, [])\n\nconst addressSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original[columnId].streetAddress\n const b = rowB.original[columnId].streetAddress\n if (a > b) return 1\n if (b > a) return -1\n return 0\n }\n}, [])\n\nconst portfolioSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original[columnId]\n const b = rowB.original[columnId]\n const aId = rowA.original.propertyId\n const bId = rowB.original.propertyId\n if (a > b) return 1\n if (b > a) return -1\n if (aId > bId) return 1\n if (bId > aId) return -1\n return 0\n }\n}, [])\n\nconst linkedWingnutsSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original.linkedWingnuts.length\n const b = rowB.original.linkedWingnuts.length\n const aId = rowA.original.propertyId\n const bId = rowB.original.propertyId\n if (a > b) return 1\n if (b > a) return -1\n if (aId > bId) return 1\n if (bId > aId) return -1\n return 0\n }\n}, [])\n\nconst alarmStateSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original.alarmState\n const b = rowB.original.alarmState\n const aId = rowA.original.propertyId\n const bId = rowB.original.propertyId\n if (a > b) return 1\n if (b > a) return -1\n if (aId > bId) return 1\n if (bId > aId) return -1\n return 0\n }\n}, [])\n\nconst notificationEnableSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original.toggleStatus\n const b = rowB.original.toggleStatus\n const aId = rowA.original.propertyId\n const bId = rowB.original.propertyId\n if (a > b) return 1\n if (b > a) return -1\n if (aId > bId) return -1\n if (bId > aId) return 1\n return 0\n }\n}, [])\n\nconst statusSort = React.useMemo(() => {\n return (rowA, rowB, columnId, desc) => {\n const a = rowA.original.linkedWingnuts.length > 0\n const b = rowB.original.linkedWingnuts.length > 0\n const aId = rowA.original.propertyId\n const bId = rowB.original.propertyId\n if (a > b) return 1\n if (b > a) return -1\n if (aId > bId) return -1\n if (bId > aId) return 1\n return 0\n }\n}, [])\n\n const tableColumns = React.useMemo(\n () => [\n {\n // Turned int function to get access to column props { props.column.isSorted ? props.column.isSortedDesc ? ' 🔽' : ' 🔼' : ''}\n Header: (props) => {\n return (\n \n Property ID\n \n \n \n \n )\n },\n accessor: \"propertyId\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '10%',\n Cell: (props) => {\n return (\n \n \n \n \n \n \n {props.row.original.propertyIdDisplay}\n \n \n \n )\n },\n // Cell: props => {props.test} // this works use everywhere\n },\n {\n Header: (\n \n Property Name\n \n \n \n \n ),\n accessor: \"propertyName\",\n sortType: basicSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '20%',\n Cell: (props) => {\n return (\n \n \n \n \n \n \n {props.propertyName}\n \n \n \n )\n },\n },\n {\n Header: (\n \n Address\n \n \n \n \n ),\n accessor: \"address\",\n sortType: addressSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '30%',\n Cell: (props) => {\n return (\n \n {props.address && `${props.address.streetAddress} ${props.address.city} ${props.address.provinceState} ${props.address.country} ${props.address.postalZip}`}\n \n )\n },\n },\n {\n Header: (\n \n Portfolio\n \n \n \n \n ),\n accessor: \"portfolio\",\n sortType: portfolioSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '10%',\n Cell: (props) => {\n return (\n \n {props.portfolio}\n \n )\n },\n },\n {\n Header: (\n \n Linked Wingnuts\n \n \n \n \n ),\n accessor: \"linkedWingnuts\",\n sortType: linkedWingnutsSort,\n // maxWidth: 301,\n // minWidth: 299,\n width: '15%',\n Cell: (props) => {\n return (\n \n {props.value.map((item) => {\n return (\n
\n \n \n \n {(item.externalId).substr(0,4)}\n \n \n
\n )\n })}\n
\n )\n },\n },\n {\n Header: (\n \n .\n \n \n \n \n \n ),\n accessor: \"alert\",\n sortType: alarmStateSort,\n width: '5%',\n Cell: (props) => {\n return (\n \n {props.alarmState === \"ALARM\" \n ? \n : \n } \n \n )\n },\n },\n {\n Header: (\n \n .\n \n \n \n \n \n ),\n accessor: \"toggle\",\n sortType: notificationEnableSort,\n width: '5%',\n Cell: (props) => {\n return (\n \n updateToggle(e, props.notificationId)} />\n \n )\n },\n },\n {\n Header: (\n \n Status\n \n \n \n \n ),\n accessor: \"status\",\n sortType: statusSort,\n width: '10%',\n Cell: (props) => {\n return (\n \n 0 ? IconActive : IconUnconfigured} />\n \n )\n },\n },\n ],\n []\n )\n\n const hiddenColumns = (screenSize) => {\n // propertyId, propertyName, address, portfolio, linkedWingnuts, status\n var columnsToHide = []\n if (screenSize === ScreenSize.Medium) {\n // propertyId, propertyName, portfolio, linkedWingnuts, status\n columnsToHide = [\"address\", \"portfolio\"]\n }\n if (screenSize === ScreenSize.Small) {\n // propertyId, propertyName, status\n columnsToHide = [\"address\", \"portfolio\", \"linkedWingnuts\"]\n }\n return columnsToHide\n }\n\n const wingnutStatus = (item) => {\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n if (difference.minutes > 15) {\n return WingnutStatus.Disconnected.value\n }\n } else {\n return WingnutStatus.Disconnected.value\n }\n\n if (item.config.propertyId === undefined) {\n return WingnutStatus.Unlinked.value\n }\n\n if (!(Object.keys(item.config.sensors).length > 0)) {\n return WingnutStatus.Unconfigured.value\n }\n\n return WingnutStatus.Live.value\n }\n\n return (\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n )\n}\n\nexport default PropertyTableStructure\n\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n overflow: auto;\n height: 100%;\n width: 100%;\n margin-top: 0px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-top: 0px; \n padding-left: 16px; \n padding-right: 16px; \n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 20px;\n width: 98%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Styles = styled.div`\n /* padding-top: 10px; */\n color: ${COLORS.White};\n overflow: none;\n\n table {\n border-spacing: 0;\n /* border: 1px solid blue; */\n\n thead {\n ${\"\" /* These styles are required for a scrollable body to align with the header properly */}\n overflow-y: auto;\n overflow-x: hidden;\n\n // Below create a fixed header - from here -> https://codesandbox.io/s/54z882qno4?file=/index.css:192-256\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n tbody {\n ${\"\" /* These styles are required for a scrollable table body */}\n overflow-y: scroll;\n overflow-x: hidden;\n }\n\n tr {\n :last-child {\n td {\n border-bottom: 1;\n }\n }\n }\n\n th,\n td {\n margin: 0;\n border-bottom: 1px solid ${COLORS.HighlightDark};\n\n :last-child {\n border-right: 0;\n }\n }\n }\n`\nconst HeaderDiv = styled.div`\n /* border: 1px red dashed;; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding-left: 5px;\n height: 45px;\n`\n\nconst CellDiv = styled.div`\n /* border: 1px green dashed;; */\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n position: relative;\n bottom: 1px;\n height: 45px;\n`\n\nconst WingnutDiv = styled.div`\n /* border: 1px purple dashed;; */\n /* height: 50px; */\n display: flex;\n flex-direction: row;\n`;\n\nconst ContentDiv = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n align-self: center;\n`;\n\nconst BtnIcon = styled.button`\n /* border: 1px green dashed; */\n background: transparent;\n /* outline: none; */\n border: none;\n`\n\nconst LinkedWingnut = styled.button`\n /* border: 1px green dashed;; */\n display: flex;\n width: 80px;\n background: ${COLORS.Primary};\n height: 24px;\n padding: 5px 15px;\n border-radius: 30px;\n border: none;\n /* margin-left: 1px; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 100%;\n z-index: 1;\n /* identical to box height, or 14px */\n\n letter-spacing: -0.01em;\n\n /* White */\n color: ${COLORS.White};\n :hover {\n color: ${COLORS.Primary};\n background: ${COLORS.White};\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderAlertIcon = styled.img`\n height: 18px;\n width: 18px;\n margin-right: 17px;\n ${media.lessThan(\"743px\")`\n margin-left: 3px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-left: 10px;\n `} */\n`\n\nconst HeaderNotificationIcon = styled.img`\n height: 25px;\n width: 25px;\n margin-right: 17px;\n ${media.lessThan(\"743px\")`\n margin-left: 3px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* margin-left: 10px; */\n `} */\n`\n\nconst IconWingnut = styled(IconArrow)`\n margin-right: 8px;\n width: 12px;\n height: 12px;\n`\n\nconst SortIcon = styled.img`\n /* border: 1px red dashed; */\n width: 18px;\n height: 18px;\n position: relative;\n /* align-self: center; */\n top: 1px;\n margin-right: 10px;\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 10px;\n height: 10px;\n position: relative;\n top: 1px;\n`\n\nconst ToolIcon = styled.img`\n /* border: 1px red dashed; */\n width: 18px;\n height: 18px;\n position: relative;\n top: 5px;\n`\n\nconst Text = styled.h5`\n /* border: 1px green dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 120%;\n display: flex;\n align-self: center;\n /* align-items: center; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\n\nconst HiddenText = styled(Text)`\n color: ${COLORS.Primary};\n`\n\nconst StaticText = styled(Text)`\n /* border: 1px green dashed; */\n padding-left: 5px;\n color: ${COLORS.HighlightLight};\n align-self: center;\n`\n\nconst StatusIcon = styled.img`\n /* border: 1px red dashed; */\n width: 10px; \n height: 10px;\n /* position: relative; */\n`\n\nconst CellStatusDiv = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n position: relative;\n`\n\nconst AlertIcon = styled.img`\n /* border: 1px red dashed;; */\n width: 20px; \n height: 20px;\n `\n\nconst CellAlertDiv = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 40px;\n /* position: relative; */\n`\n\nconst CellToggleChildDiv = styled.div`\n /* border: 1px red dashed; */\n height: 19px;\n display: flex;\n justify-content: center;\n `\n\n\n\n\n\n\n// render different table column combinations based on screen size\n\n// React-table\n// https://retool.com/blog/building-a-react-table-component/\n// https://codesandbox.io/s/github/tannerlinsley/react-table/tree/master/examples/basic?file=/src/App.js\n// https://codesandbox.io/s/cocky-poincare-b24mt?file=/src/App.js:123-157\n// https://stackoverflow.com/questions/65161059/how-to-load-images-in-react-table-from-json-file\n\n// Header search\n// https://codesandbox.io/s/react-table-select-uh3i0?file=/src/HeaderButton.js:66-219\n\n// Fuzzy search\n// https://codesandbox.io/s/dq9ou?file=/src/index.js\n// https://medium.com/analytics-vidhya/how-to-create-a-fuzzy-search-in-react-js-using-fuse-js-859f80345657\n// https://fusejs.io/demo.html\n// https://www.youtube.com/watch?v=GZl-yEz4_qw&t=214s&ab_channel=ColbyFayock\n\n// {\n// Header: 'Serial',\n// accessor: 'serial',\n\n// Cell: props => \n// Cell: ({ cell: { value } }) => (\n// \n// )\n// },\n","import React, { Component, useMemo } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport media from \"styled-media-query\"\nimport styled from \"styled-components\"\nimport Fuse from \"fuse.js\"\nimport PropertyController from \"./PropertyController\"\nimport PropertyTableStructure from \"./PropertyTableStructure\"\nimport WingnutStatus from \"../wingnuts/WingnutStatus.enum\"\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n height: 100%;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n`\n\nconst fuzzyOptions = {\n // isCaseSensitive: false,\n // includeScore: false,\n // shouldSort: true,\n // includeMatches: false,\n // findAllMatches: false,\n // minMatchCharLength: 3,\n // location: 0,\n threshold: 0.1,\n // distance: 100,\n // useExtendedSearch: false,\n // ignoreLocation: false,\n // ignoreFieldNorm: false,\n // fieldNormWeight: 1,\n keys: [\"propertyId\", \"propertyName\", \"portfolio\", \"linkedWingnuts\", \"address.streetAddress\", \"address.city\", \"address.postalZip\", \"address.provinceState\", \"address.country\"],\n}\n\nexport default class PropertyOverview extends Component {\n constructor() {\n super()\n this.fuseSearch = null\n this.showData = true\n\n this.state = {\n data: [],\n notificationData: [],\n search: \"\",\n isLoading: true,\n areTogglesLoading: true,\n didMerge: false,\n status: {\n Unconfigured: false,\n },\n }\n }\n\n componentDidMount() {\n this.getProperties()\n this.getNotificationToggles()\n }\n\n componentWillUnmount() {\n this.showData = false\n }\n\n componentDidUpdate(prevProps, prevState){\n if(prevState.isLoading === true && this.state.isLoading === false){\n this.filterData(this.state.search, this.state.status)\n } else if (this.state.isLoading === false && this.state.areTogglesLoading === false && this.state.didMerge === false){\n this.mergeData()\n }\n }\n\n mergeData(){\n const properties = this.state.data\n const notifications = this.state.notificationData\n const toggleProperties = []\n\n properties.forEach((property) => {\n var item = {}\n if (item = notifications.find(notification => notification.propertyId === property.uuid)) {\n const newProperty = {\n ...property,\n toggleStatus: item.entityStatus,\n notificationId: item.notificationId\n }\n toggleProperties.push(newProperty)\n }\n })\n\n this.setState({\n data: toggleProperties,\n didMerge: true\n })\n }\n\n searchForProperty(event) {\n if(this.state.isLoading === false){\n this.filterData(event.target.value, this.state.status)\n } else {\n this.setState({\n search: event.target.value,\n })\n }\n }\n\n filterData(fuzzySearch, wingnutState) {\n var data = []\n // If using the fuzzy search \"bre..\"\n if (fuzzySearch) {\n data = this.fuseSearch.search(fuzzySearch).map((s) => s.item)\n } else {\n // If using the eye filter icons\n if(this.fuseSearch){\n data = this.fuseSearch.getIndex().docs\n }\n }\n\n if (wingnutState.Unconfigured) {\n data = data.filter((item) => item.linkedWingnuts.length == 0)\n }\n\n this.setState({\n search: fuzzySearch,\n status: wingnutState,\n data: data,\n didMerge: false\n })\n }\n\n toggleStatus(status) {\n var wingnutStatus = this.state.status\n\n if (status === WingnutStatus.Unlinked) {\n wingnutStatus.Unconfigured = !wingnutStatus.Unconfigured\n }\n\n this.filterData(this.state.search, wingnutStatus)\n }\n\n setupTable(data) {\n this.fuseSearch = new Fuse(data, fuzzyOptions)\n this.setState({\n data: data,\n })\n }\n\n async getProperties() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n API.get(\"FrontendAPI-properties\", \"\", init)\n .then((response) => {\n if (response.success) {\n const mappedData = response.data.map((item) => {\n\n var alarmState = \"OK\"\n\n if(item.config && item.config.alarms !== null && item.config.alarms !== undefined){\n\n const alarms = item.config.alarms;\n\n // Check if any of the alarms are set to \"ALARM\"\n const isAnyAlarmSetToAlarm = Object.values(alarms).some(value => value === \"ALARM\");\n \n if (isAnyAlarmSetToAlarm) {\n alarmState = \"ALARM\"\n } else {\n alarmState = \"OK\"\n }\n\n }\n\n return {\n propertyId: parseInt(item.externalId),\n propertyIdDisplay: item.externalId,\n propertyName: item.config.name,\n uuid: item.id,\n alarmState: alarmState,\n address: item.config.address,\n portfolio: item.config.portfolio,\n entityStatus: item.entityStatus === \"enabled\" ? 1 : 0, \n linkedWingnuts: item.linkedWingnuts,\n }\n })\n if (this.showData) {\n this.setupTable(mappedData)\n }\n }\n })\n .catch((error) => {\n console.error(error)\n })\n .finally(() => this.setState({ isLoading: false }))\n }\n\n async getNotificationToggles() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n API.get(\"FrontendAPI-notifications\", \"\", init)\n .then((response) => {\n if (response.success) {\n const mappedNotifications = response.data.map((item) => {\n return {\n propertyId: item.config.propertyId,\n notificationId: item.id,\n entityStatus: this.translateToggle(item.entityStatus),\n }\n })\n if (this.showData) {\n this.setState({\n notificationData: mappedNotifications,\n })\n }\n }\n })\n .catch((error) => {\n console.error(\"THERE WAS ERROR\", error)\n })\n .finally(() => this.setState({ areTogglesLoading: false }))\n }\n\n translateToggle(status) {\n if(status === \"enabled\"){\n return 1\n } else {\n return 0\n }\n }\n\n render() {\n\n return (\n \n this.toggleStatus(s)}\n onInputChange={(e) => this.searchForProperty(e)}\n />\n { this.state.isLoading\n ? ()\n : ()}\n \n )\n }\n}\n","export default __webpack_public_path__ + \"static/media/ic_arrow_right_green_fill.38d28915.svg\";","import React, { useState, useContext, useEffect } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/ic_check_circle.svg\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport ErrorImage from \"./../../images/ic_alert.svg\"\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport { useMediaQuery } from 'react-responsive'\nimport {\n ErrorContainer,\n Icon,\n Error,\n EmptyError,\n} from \"../custom/ValidatorStyles\"\nimport { PhoneValidatorStrings, ValidatorStrings, ServerStrings } from \"../util/VaildatorStrings\"\nimport AddressSearch from \"./AddressSearch\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n /* width: 100%; */\n max-width: 1440px;\n height: auto;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n align-content: center;\n margin-top: -10px;\n margin-right: 20px;\n padding-left: 20px;\n padding-top: 20px;\n background: #0e1c36;\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-right: 0px;\n `}\n`\n\nconst FormContainer = styled.div`\n /* border: 1px yellow dashed; */\n width: 50%;\n min-width: 379px;\n display: flex;\n flex-direction: column;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n min-width: 100%;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n width: 100%;\n margin-right: 0px;\n `}\n`\n\nconst Form = styled.form`\n /* border: 1px red dashed; */\n width: 100%;\n max-width: 439px;\n display: flex;\n flex-direction: column;\n /* margin-top: 46px; */\n ${media.lessThan(\"743px\")`\n align-self: center;\n width: 100%;\n margin-top: 0px;\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 384px; */\n flex-direction: column;\n `}\n`\n\nconst HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 20px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 11px;\n margin-top: 20px;\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightLight};\n /* margin-top: 2px; */\n margin-bottom: 2px;\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 100%;\n height: 45px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 17px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :hover {\n border: 1px solid ${COLORS.HighlightMedium};\n padding-left: 9px;\n }\n :focus {\n border: 1px solid ${COLORS.HighlightLight};\n padding-left: 9px;\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InputDisabled = styled(Input)`\n color: ${COLORS.HighlightLight};\n\n :hover {\n border: none;\n padding-left: 10px;\n }\n :focus {\n border: none;\n padding-left: 10px;\n }\n`\n\nconst Input2 = styled(Input)`\n width: 96%;\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n margin-right: 10px;\n `}\n`\n\nconst Input3 = styled(Input)`\n width: 100%;\n ${media.lessThan(\"743px\")`\n width: 100%;\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n width: auto;\n margin-top: 28px;\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 20px;\n align-self: flex-start;\n width: 180px;\n height: 40px;\n border: none;\n background: #63c085;\n cursor: pointer;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n margin-right: 10px;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n height: 55px;\n /* width: 200px; */\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n /* width: 200px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonCancel = styled(Button)`\n background: transparent;\n border: 1px solid #63c085;\n color: ${COLORS.White};\n :hover {\n background: ${COLORS.Secondary};\n opacity: 1;\n }\n ${media.lessThan(\"743px\")`\n margin-top: 10px;\n align-self: flex-start;\n height: 55px;\n /* width: 200px; */\n `}\n`;\n\nconst ButtonText = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 13px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: #0c182f;\n :hover {\n color: ${COLORS.Base};\n }\n`\n\nconst ButtonText2 = styled(ButtonText)`\n color: ${COLORS.White};\n`;\n\nconst SectionContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nconst StatusIcon = styled.img`\n width: 23px;\n height: 23px;\n /* margin-bottom: 20px; */\n margin-top: 20px;\n`\n\nconst RowContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ColumnContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n`\n\nexport const SuccessContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-content: center;\n height: 40px;\n /* margin-top: 5px; */\n ${media.lessThan(\"743px\")`\n align-self: flex-start;\n `}\n`\n\nexport const SuccessIcon = styled.img`\n width: 20px;\n height: 20px;\n margin-right: 13px;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport const Success = styled.p`\n /* border: 1px blue dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nexport const EmptySuccess = styled(Success)`\n /* border: 1px blue dashed; */\n /* margin-bottom: 50px; */\n height: 36px;\n`\n\nexport default function EditPropertyDetails(props) {\n const { propertyDetails, editOpen, updatePropertyDetails } = props\n const {\n register,\n handleSubmit,\n reset,\n getValues,\n setValue,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [success, setSuccess] = useState(false)\n const [disabled, setDisabled] = useState(false)\n\n const onSubmit = async (data) => {\n const { name, externalId, portfolio, street, city, provinceState, postalZipCode, country } = data\n setDisabled(true)\n\n const property = {\n externalId: externalId,\n config: {\n name: name,\n address: {\n city: city,\n country: country,\n postalZip: postalZipCode,\n provinceState: provinceState,\n streetAddress: street\n },\n assets: {}, // Unused for now\n portfolio: portfolio\n }\n }\n\n async function editProperty() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: property\n }\n const response = await API.post('FrontendAPI-properties', `/${propertyDetails.id}`, init)\n if (response.success) {\n setSuccess(true)\n }\n setDisabled(false)\n }\n\n editProperty()\n }\n\n const selectAddress = (newAddress) => {\n setValue(\"street\", newAddress.streetAddress)\n setValue(\"city\", newAddress.city)\n setValue(\"provinceState\", newAddress.provinceState)\n setValue(\"postalZipCode\", newAddress.postalZip)\n setValue(\"country\", newAddress.country)\n }\n\n const propertyIdValidation = (e) => {\n var value = e.target.value\n value = value.replace(/\\D/gm,'')\n setValue(\"externalId\", value)\n }\n\n useEffect(() => {\n if (success) {\n const timer = setTimeout(() => {\n setSuccess(false)\n }, 2000)\n return () => {\n clearTimeout(timer)\n editOpen(false)\n updatePropertyDetails()\n }\n }\n }, [success])\n\n return (\n \n
\n \n \n General Information\n \n \n {errors.name ? {ValidatorStrings(errors.name?.type)} : }\n \n {propertyIdValidation(e)}\n })}\n style={{ border: errors.externalId ? \"1px solid #D25353\" : null, paddingLeft: errors.externalId ? '9px' : null }}\n />\n {errors.externalId ? {ValidatorStrings(errors.externalId?.type)} : }\n \n \n {errors.protfolio ? {ValidatorStrings(errors.portfolio?.type)} : }\n \n \n \n \n Address\n \n \n {errors.street ? {ValidatorStrings(errors.street?.type)} : }\n \n \n {errors.city ? {ValidatorStrings(errors.city?.type)} : }\n \n \n {errors.city ? {ValidatorStrings(errors.city?.type)} : }\n \n \n \n \n {errors.provinceState ? {ValidatorStrings(errors.provinceState?.type)} : }\n \n \n \n \n {errors.postalZipCode ? {ValidatorStrings(errors.postalZipCode?.type)} : }\n \n \n \n\n \n \n \n\n\n {\n e.preventDefault()\n setDisabled(false)\n editOpen(false)\n }}\n type='text'>\n CANCEL\n \n \n\n {success ? (\n \n \n Success. Your changes have been saved\n \n ) : (\n \n )}\n \n\n
\n
\n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgAdd from \"./../../images/ic_add.svg\"\nimport Select from \"react-dropdown-select\"\nimport Fuse from \"fuse.js\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n /* border: 1px dashed yellow; */\n display: flex;\n flex-direction: column;\n /* width: 100%; */\n width: 377px;\n ${media.lessThan(\"743px\")`\n width: 280px;\n `}\n`\n\nconst WingnutDetails = styled.div`\n border: 1px solid ${COLORS.HighlightMedium};\n /* border: 1px solid red; */\n border-radius: 10px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n ${media.lessThan(\"743px\")`\n\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\n\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n /* margin-top: 15px; */\n\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n /* height: 55px; */\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n /* height: 55px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear,\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n /* height: 60px; */\n font-size: 16px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n`\n\nconst Input = styled.input`\nbackground: transparent;\nborder: none;\n/* border: 1px solid red; */\noutline: none;\nwidth: 100%;\nheight: 45px;\n/* height: 100%; */\ncolor: ${COLORS.White};\n/* font-family: \"Roboto Condensed\", sans-serif; */\n`;\n\n\nconst fuzzyOptions = {\n threshold: 0.1,\n keys: [\"name\"],\n}\n\nexport default function NotificationEmployeeSelect(props) {\n const { data } = props\n const [isSelected, setIsSelected] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n const [input, setInput] = useState(\"\")\n const [searchOptions, setSearchOptions] = useState([])\n const fuseSearch = new Fuse(data, fuzzyOptions)\n\n useEffect(() => {\n setSearchOptions(mapRawData(data))\n }, [props])\n\n const mapRawData = (data) => {\n // Get all the Id's of Employees in view, don't show any in dropdown\n const viewEmployeeIds = []\n const viewEmployees = props.viewEmployees\n\n viewEmployees.forEach((item) => {\n viewEmployeeIds.push(item.id)\n })\n\n const filteredData = data.filter((item) => !viewEmployeeIds.includes(item.id))\n\n const options = filteredData.map((item) => (\n { key: item.id,\n label: item.name,\n value: item.id,}\n ) \n )\n\n return options\n }\n\n const filterOptions = (filter) => {\n if (filter) {\n setSearchOptions(mapRawData(fuseSearch.search(filter).map((s) => s.item)))\n setInput(filter)\n } else {\n setSearchOptions(mapRawData(fuseSearch.getIndex().docs))\n setInput(input.slice(0, -1))\n }\n }\n\n const onSelected = (item) => {\n if (item[0]) {\n // setSelectedProperty(item[0])\n // setIsSelected(true)\n props.addEmployee(item[0].value)\n setInput(\"\")\n } else {\n // setSelectedProperty(null)\n // setIsSelected(false)\n }\n }\n\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}>\n onSelected(value)}\n options={searchOptions}\n values={[]}\n inputRenderer={\n ({ props, state, methods, inputRef }) => ( \n filterOptions(event.target.value)}\n value={input}\n hidden={false} \n placeholder={\"Search Employee\"}\n ref={inputRef} \n style={{ cursor: 'pointer', color: COLORS.White, fontSize: \"18px\", fontWeight: \"300\"}} \n /> \n )\n }\n searchable={true}\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n fontWeight: \"300\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"0px\"\n }}\n />\n
\n
\n
\n )\n\n}\n","import React from 'react'\nimport Icon from \"./../../images/ic_alert.svg\";\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { Error } from \"./../custom/ValidatorStyles\"\n\nconst IconAlertSm = styled.img`\n align-self: center;\n width: 11px;\n height: 11px;\n margin-bottom: 4px;\n margin-right: 6px;\n margin-top: 0px;\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n`;\n\nconst ErrorContainer = styled.div`\n display: flex;\n flex-direction: row;\n ${media.lessThan(\"743px\")`\n min-width: 250px;\n `}\n`;\n\nexport default function SensorCellAlertError(props) {\n\n return (\n \n \n {`Last measured value was ${props.alertValue ? Number(props.alertValue).toFixed(1) : 0} ${props.sensor.unit}`} \n \n )\n}\n","import React, {useState, useEffect, useContext} from 'react'\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ToggleTriState from './ToggleTriState'\nimport Icon from \"./../../images/ic_alert.svg\";\nimport { AccountContext } from \"../../auth/Account\"\nimport {FormatLabel} from \"./../util/FormatLabel\"\nimport SensorCellAlertError from './SensorCellAlertError'\n\nimport {\n EmptyError,\n Error,\n} from \"./../custom/ValidatorStyles\"\nimport { COLORS } from '../../styles/colors'\n\n// Notification I/O Cell\n\nexport default function SensorCell(props) {\n\n // const [sensor, setSensor] = useState(props.sensor)\n const [minError, setMinError] = useState(false)\n const [maxError, setMaxError] = useState(false)\n const [minRangeError, setMinRangeError] = useState(false)\n const [maxRangeError, setMaxRangeError] = useState(false)\n\n const [userMinValue, setUserMinValue] = useState(null)\n const [userMaxValue, setUserMaxValue] = useState(null)\n const [userToggle, setUserToggle] = useState(null)\n const [disableClear, setDisableClear] = useState(true)\n const [isButtonHovering, setButtonHovering] = useState(false)\n\n const { getSession } = useContext(AccountContext)\n\n\n const handleMinValueChange = (e) => {\n const value = e.target.value.replace(/[^0-9]/g, '');\n\n setDisableClear()\n props.configChanged(true)\n if(value.length < 4){\n if(value.length > 0){\n if(userMaxValue !== null && value >= userMaxValue){\n setMinError(true)\n props.setError(true, props.sensor.label, \"min\")\n } \n else {\n setMinError(false)\n props.setError(false, props.sensor.label, \"min\")\n }\n } else {\n // Reset to blank\n setUserMinValue(null);\n setMinError(false)\n props.setError(false, props.sensor.label, \"min\")\n }\n setUserMinValue(value ? value : null);\n }\n }\n\n const handleMaxValueChange = (e) => {\n const value = e.target.value.replace(/[^0-9]/g, ''); // filter letters out\n\n setDisableClear()\n props.configChanged(true)\n if(value.length < 4){\n if(value.length > 0){\n if(userMinValue !== null && value <= userMinValue){\n setMaxError(true)\n props.setError(true, props.sensor.label, \"max\")\n }\n else {\n setMaxError(false)\n props.setError(false, props.sensor.label, \"max\")\n }\n } else {\n // Reset to blank\n setUserMaxValue(null);\n setMaxError(false)\n props.setError(false, props.sensor.label, \"max\")\n }\n setUserMaxValue(value ? value : null);\n }\n };\n\n const updateToggle = (toggle) => {\n props.configChanged(true)\n setUserToggle(toggle)\n setDisableClear()\n }\n\n const clearNotification = () => {\n setUserToggle(null)\n setUserMinValue(null)\n setUserMaxValue(null)\n setMinError(false)\n setMaxError(false)\n setDisableClear(true)\n props.configChanged(true)\n props.updateSensor(props.sensor.label, null, null, null)\n }\n\n useEffect(() => {\n if(props.sensor){\n\n // ThresholdStatus is null for default values - if it's set then it's a User Notification\n if(props.sensor.thresholdStatus !== null){\n setUserMinValue(props.sensor.userMinValue)\n setUserMaxValue(props.sensor.userMaxValue)\n setUserToggle(props.sensor.thresholdStatus)\n setDisableClear(false)\n } \n }\n }, [props.sensor])\n\n const updateSensor = () => {\n if(props.sensor){\n if(userToggle !== null && userMinValue === null && userMaxValue === null){\n setUserMinValue(props.sensor.minValue)\n setUserMaxValue(props.sensor.maxValue)\n props.updateSensor(props.sensor.label, props.sensor.minValue, props.sensor.maxValue, userToggle)\n } else if(userToggle === null && userMinValue !== null && userMaxValue === null){\n setUserToggle(0)\n setUserMaxValue(props.sensor.maxValue)\n props.updateSensor(props.sensor.label, userMinValue, props.sensor.maxValue, 0)\n } else if(userToggle === null && userMinValue === null && userMaxValue !== null){\n setUserToggle(0)\n setUserMinValue(props.sensor.minValue)\n props.updateSensor(props.sensor.label, props.sensor.minValue, userMaxValue, 0)\n } else {\n props.updateSensor(props.sensor.label, userMinValue, userMaxValue, userToggle)\n }\n }\n }\n\n useEffect(() => {\n if(userToggle !== null || userMinValue !== null || userMaxValue !== null){\n updateSensor()\n }\n }, [userToggle, userMinValue, userMaxValue])\n\n return (\n\n \n {/* */}\n {`- ${props.breachCount} Breaches found in last 10 minutes -`}\n \n \n \n \n {FormatLabel(props.sensor && props.sensor.label ? props.sensor.label : \"\")}\n \n {/* FOR DEVELOPMENT TESTING */}\n\n \n \n \n \n {`Min ${props.sensor.unit ? props.sensor.unit : \"Value\"}`}\n \n \n \n { props.inAlert \n ? \n : minError \n ? {`Max value must be lower than min value`} \n : \n }\n \n\n \n {`Max ${props.sensor.unit ? props.sensor.unit : \"Value\"}`}\n \n \n \n { props.inAlert \n ? \n : maxError \n ? {`Max value must be higher than min value`} \n : \n }\n \n \n \n \n clearNotification()} \n disabled={props.isAuth ? !props.disable : disableClear}\n onMouseEnter={(e) => {\n setButtonHovering(true)\n }}\n onMouseLeave={(e) => {\n setButtonHovering(false)\n }}\n style={{display: props.isAuth ? \"block\" : \"none\", opacity: disableClear ? '0.5' : null, border: disableClear ? '1px solid #B6B6B6' : null, background: isButtonHovering ? COLORS.Secondary : null, pointerEvents: props.disable? \"auto\" : \"none\"}}>\n \n SET DEFAULTS\n \n \n \n )\n}\n\nconst ModeText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.ErrorOrange};\n padding-top: 10px;\n padding-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n max-width: 95%;\n text-wrap: wrap;\n text-align: center;\n\n `}\n`\n\nconst Container = styled.div`\n border: 1px solid ${COLORS.HighlightMedium};\n border-radius: 10px;\n padding: 30px;\n padding-top: 15px;\n display: flex;\n flex-direction: column;\n margin-bottom: 10px;\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px dashed red; */\n display: flex;\n flex-direction: row;\n margin-bottom: 20px;\n /* flex-wrap: wrap; */\n align-items: center;\n /* align-content: flex-start; */\n`\n\nconst SearchContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: start;\n width: auto;\n /* max-width: 1500px; */\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: row;\n /* width: 90%; */\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SearchContainerTop = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n max-width: 400px;\n width: 90%;\n ${media.lessThan(\"743px\")`\n margin-top: 10px;\n align-content: center;\n max-width: 400px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n /* margin-top: 10px; */\n width: 50%;\n max-width: 400px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n// wraps search bar/icon and instruction\nconst SearchBarContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n align-self: center;\n width: 100%;\n`\n// wraps search bar and search icon\n\n\nconst SearchBar = styled.input`\n /* border: 1px blue dashed; */\n width: 377px;\n height: 45px;\n outline: none;\n color: ${COLORS.White};\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 129.5%;\n font-weight: normal;\n background-color: ${COLORS.Secondary};\n border-radius: 8px;\n box-sizing: border-box;\n padding-left: 10px;\n border: 1px solid transparent;\n ::placeholder {\n color: ${COLORS.HighlightMedium};\n }\n :focus {\n border: 1px solid ${COLORS.White};\n }\n ${media.lessThan(\"743px\")`\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 95%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SectionHeader = styled.h2`\n font-family: 'Blinker';\n font-style: normal;\n font-weight: 400;\n font-size: 26px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: #FFFFFF;\n margin-top: 10px;\n margin-right: 30px;\n margin-left: 10px;\n`;\n\nconst SearchTitle = styled.h3`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightLight};\n /* margin-top: 10px; */\n`\n\nconst ToggleContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-self: center;\n margin-top: 10px;\n`;\n\nconst BtnConfirm = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n /* color: black; */\n background: transparent;\n cursor: pointer;\n text-align: center;\n margin-top: 12px;\n :hover {\n /* background: ${COLORS.Secondary}; */\n }\n ${media.lessThan(\"743px\")`\n margin-bottom: 5px;\n `}\n ${media.between(\"744px\", \"large\")`\n /* margin-bottom: 50px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n :hover {\n }\n`\n\nconst TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n width: 100%;\n\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n min-width: 250px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`;\n\nconst IconAlert = styled.img`\n /* margin-right: 23px; */\n width: 23px;\n height: 23px;\n align-self: center;\n margin-top: 8px;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n`\n\n//------Remove\n\nconst IconAlertSm = styled(IconAlert)`\n width: 11px;\n height: 11px;\n margin-bottom: 4px;\n margin-right: 6px;\n margin-top: 0px;\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n`;\n\nconst ErrorContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* width: 100%; */\n\n /* flex-wrap: wrap; */\n ${media.lessThan(\"743px\")`\n min-width: 250px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport SensorCell from './SensorCell'\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\n\n\nexport default function NotificationConfiguration(props) {\n\n const [sensorDefaults, setSensorDefaults] = useState(props.sensorDefaults)\n const [errorArray, setErrorArray] = useState([])\n const {getSession} = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n const [alertLabels, setAlertLabels] = useState([])\n \n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n}, [])\n\n useEffect(() => {\n if(props.saveAll === true){\n saveConfiguration()\n }\n }, [props.saveAll])\n\n const saveConfiguration = async () => {\n\n var newThresholds = {}\n sensorDefaults.forEach((sensor)=> {\n if(sensor.thresholdStatus !== null && sensor.userMinValue !== null && sensor.userMaxValue !== null){\n newThresholds[`${sensor.label}`] = {\n max: `${sensor.userMaxValue}`, \n thresholdStatus: sensor.thresholdStatus === 1 ? \"enabled\" : \"disabled\", \n min: `${sensor.userMinValue}`\n }\n } \n })\n\n var newConfig = {\n \"entityStatus\": ``, // RIGHT HERE\n \"config\": {\n \"thresholds\": {},\n \"recipients\": {}\n }\n }\n\n newConfig['config'].recipients = props.recipients\n newConfig['entityStatus'] = props.disable === 1 || props.disable === 2 ? \"enabled\" : \"disabled\"\n newConfig['config'].thresholds = newThresholds\n\n if(props.notificationDetails[0]){\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: newConfig\n }\n\n const response = await API.post('FrontendAPI-notifications', `/${props.notificationDetails[0].id}`, init)\n if (response.success) {\n props.willRefreshAlerts()\n props.updateCurrentThresholds(newThresholds)\n } \n } \n}\n \n const setError = (isError, label, minOrMax) => {\n const errorName = label + minOrMax\n\n if(isError === true){\n // add error\n if(errorArray.some(error => error === errorName)){\n // error already been set\n } else {\n setErrorArray([...errorArray, errorName])\n }\n\n } else {\n // remove error\n let localArray = errorArray\n\n if(localArray.length !== 0){\n let index = localArray.findIndex(error => {\n return error === errorName\n })\n localArray.splice(index, 1)\n setErrorArray(localArray)\n }\n }\n }\n\n const configChanged = (val) => {\n // setDidConfigChange(val)\n props.isActiveChange(true)\n }\n\n const updateSensor = (label, min, max, thresholdStatus) => {\n var localToggles = []\n\n const updatedSensorDefaults = sensorDefaults.map(sensor => {\n if(sensor.label === label){\n return{...sensor,\n userMinValue: min? parseInt(min, 10) : min === 0 ? 0 : null,\n userMaxValue: max? parseInt(max, 10) : null,\n thresholdStatus: thresholdStatus\n }\n } \n return sensor \n })\n\n updatedSensorDefaults.forEach((sensor)=> {\n localToggles.push(sensor.thresholdStatus !== null ? sensor.thresholdStatus : 0)\n })\n setSensorDefaults(updatedSensorDefaults)\n }\n\n\n // Convert alerts to an array for quick lookup for sensorcell\n useEffect(() => {\n if(props.alerts){\n var alertLabels = []\n Object.keys(props.alerts).map((key) => {\n alertLabels.push(key)\n })\n setAlertLabels(alertLabels)\n }\n }, [props.alerts])\n\n return (\n\n \n\n {sensorDefaults && sensorDefaults.length !== 0 && sensorDefaults.map((sensorDefault, index) => {\n var inAlert = false\n var breachCount = 0\n var alertValue = null\n\n if(alertLabels.length !== 0){\n if(alertLabels.indexOf(sensorDefault.label) > -1 ){\n inAlert = true\n alertValue = props.alerts[sensorDefault.label]\n }\n }\n\n if(Object.keys(props.breaches).length !== 0){\n Object.keys(props.breaches).forEach(key => {\n if(key === sensorDefault.label){\n breachCount = props.breaches[key]\n }\n })\n }\n\n return \n })} \n\n \n )\n\n\n}\n\nconst Line = styled.div`\n width: 100%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 21px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n /* width: 90% */\n margin-right: 0px;\n `}\n`\n\nconst HeaderText = styled.h2`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n margin-top: 30px;\n font-size: 26px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n /* margin-bottom: 22px; */\n`\nconst OuterContainer = styled.div`\n /* border: 1px red dashed;\n min-height: 1400px; */\n`;\n\nconst Container = styled.div`\n /* border: 1px transparent dashed; */\n`;\n\nconst SaveConfigContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row; \n justify-content: flex-end;\n margin-top: 10px;\n margin-bottom: -34px;\n z-index: 1;\n`;\n\nconst SaveConfig = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background: #63c085;\n cursor: pointer;\n text-align: center;\n /* margin-right: 15px; */\n :hover {\n opacity: 0.8;\n\n }\n ${media.lessThan(\"743px\")`\n /* margin-bottom: 50px; */\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n /* margin-bottom: 50px; */\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SaveConfig2 = styled(SaveConfig)`\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n margin-bottom: 20px;\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: black;\n`\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n /* display: none; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n }\n`\n\nconst ButtonText3 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n z-index: 1;\n cursor: pointer;\n :hover {\n color: #63C085;\n }\n ${media.lessThan(\"743px\")`\n display: inline;\n /* color: green; */\n align-self: flex-start;\n width: 200px;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n","import React from 'react'\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { Link } from \"react-router-dom\"\nimport WingnutStatus from \"../wingnuts/WingnutStatus.enum\"\nimport { DateTime } from \"luxon\"\nimport { COLORS } from '../../styles/colors'\n\n// Notification error page?\n\n\n\nexport default function NotificationNoConfiguration(props) {\n\n const wingnutStatus = (item) => {\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n if (difference.minutes > 15) {\n return WingnutStatus.Disconnected.value\n }\n } else {\n return WingnutStatus.Disconnected.value\n }\n\n if (item.config.propertyId === undefined) {\n return WingnutStatus.Unlinked.value\n }\n\n if (!(Object.keys(item.config.sensors).length > 0)) {\n return WingnutStatus.Unconfigured.value\n }\n\n return WingnutStatus.Live.value\n }\n\n return (\n
\n {props.isLinked ? \n \n This property has no configured wingnuts\n \n {props.propertyDetails && props.propertyDetails.linkedWingnuts.map((item, index) => {\n return (\n \n \n \n {(item.externalId).substr(0,4)}\n \n \n )\n })}\n \n \n :\n \n This property has no linked wingnuts\n \n \n \n LINK A NEW WINGNUT\n \n \n \n \n }\n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: column;\n margin-bottom: 19px;\n width: 95%;\n /* height: 100vh; */\n max-width: 1047px;\n background-color: #0e1c36;\n border-radius: 20px;\n /* padding: 34px; */\n /* margin-right: 30px; */\n /* margin-top: 20px; */\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n`\nconst WingnutContainer = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: 7px;\n`\n\nconst BtnText2 = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 100%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst BtnWingnut = styled.button`\n display: flex;\n flex-direction: row;\n /* justify-content: center; */\n align-items: center;\n padding: 5px 15px;\n border: none;\n width: 80px;\n height: 28px;\n background: ${COLORS.Secondary};\n border-radius: 30px;\n /* margin-right: 8px; */\n ${media.lessThan(\"743px\")`\n margin-bottom: 10px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-bottom: 10px;\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n &:hover {\n background: ${COLORS.White};\n ${BtnText2} {\n color: ${COLORS.Secondary};\n }\n }\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst IconWingnut = styled(IconArrow)`\n margin-right: 8px;\n width: 12px;\n height: 12px;\n`\n\nconst InstructionText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n line-height: 130%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 7px;\n font-size: 18px;\n padding-top: 19px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnConfigure = styled.button`\n width: 160px;\n border-radius: 30px;\n background: #63c085;\n border: none;\n color: black;\n margin-right: 10px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 40px;\n margin-top: 10px;\n cursor: pointer;\n text-align: center;\n :hover {\n opacity: 0.8;\n background: #63c085;\n }\n ${media.lessThan(\"743px\")`\n /* align-self: flex-start; */\n height: 55px;\n margin-right: 0px;\n width: 180px;\n\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n width: 180px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnLink = styled(BtnConfigure)`\n width: 204px;\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n :hover {\n }\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`","export default __webpack_public_path__ + \"static/media/ic_phone.3cd89877.svg\";","export default __webpack_public_path__ + \"static/media/ic_email.5808eea5.svg\";","export default __webpack_public_path__ + \"static/media/ic_phone_blue.4991c8fa.svg\";","export default __webpack_public_path__ + \"static/media/ic_email_blue.a10fbff7.svg\";","import React, {useState, useEffect, useContext} from 'react'\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgSearch from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgPhone from \"./../../images/ic_phone.svg\"\nimport ImgEmail from \"./../../images/ic_email.svg\"\nimport ImgPhoneDark from \"./../../images/ic_phone_blue.svg\"\nimport ImgEmailDark from \"./../../images/ic_email_blue.svg\"\nimport ImgClose from \"./../../images/ic_close.svg\"\nimport MediaQuery from \"react-responsive\"\nimport { COLORS } from '../../styles/colors'\n\n// Employee to notify cell\n\nexport default function EmployeeCell(props) {\n\n const [employee, setEmployee] = useState(props.employee)\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n const removeEmployee = () => {\n props.removeEmployee(employee.id)\n }\n\n const toggleEmailNotification = () => {\n props.setEmail(employee.id, !employee.notifyByEmail)\n }\n\n const togglePhoneNotification = () => {\n props.setPhone(employee.id, !employee.notifyByPhone)\n }\n\n useEffect(() => {\n setEmployee(props.employee)\n }, [props.employee])\n\n return (\n \n \n {employee.name}\n\n \n \n {`${employee.email}`}\n {employee.phoneNumber}\n \n \n\n \n 25 ? 'column' : 'row'}}>\n {`${employee.email} |`}\n {employee.phoneNumber}\n \n \n\n \n \n \n \n \n \n \n )\n}\n\n\nconst EmployeeContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-top: 20px;\n margin-right: 68px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 18px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst EmployeeTextContainer = styled.div`\n /* border: 1px white dashed; */\n display: flex;\n flex-direction: column;\n width: 280px; // width of container\n ${media.lessThan(\"743px\")`\n width: 190px; // min width when small\n `}\n`;\n\nconst NameText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n line-height: 130%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n font-size: 18px;\n margin-bottom: 1px;\n`;\n\nconst InfoTextContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst InfoTextContainerMobile = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n`;\n\n\nconst InfoText = styled.h3`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n color: ${COLORS.HighlightMedium};\n margin-right: 3px;\n margin-bottom: 4px;\n`\n\nconst IconContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst Icon = styled.img`\n width: 16x;\n height: 16px;\n align-self: center;\n margin-right: 15px;\n cursor: pointer;\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport EmployeeCell from './EmployeeCell'\nimport NotificationEmployeeSelect from './NotificationEmployeeSelect'\nimport { AccountContext } from \"./../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\n\n\n\nexport default function NotificationEmployee(props) {\n\n const {getSession } = useContext(AccountContext)\n const [employees, setEmployees] = useState([])\n const [viewEmployees, setViewEmployees] = useState([])\n const [recipients, setRecipients] = useState([])\n const [notificationDetails, setNotificationDetails] = useState([])\n const [selectDisabled, setSelectDisabled] = useState(true)\n\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n useEffect(() => {\n if(props.saveAll === true){\n // saveConfiguration()\n }\n}, [props.saveAll])\n\n\n // Get all users for the company\n useEffect(() => {\n\n async function getAllEmployees() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n getSession().then(({ email }) => {\n \n API.get(\"FrontendAPI-users\", \"\", init)\n .then((response) => {\n if (response.success) {\n const mappedEmployees = response.data.filter(item => {\n var showEmployee = true\n if(item.entityStatus === 'verified'){\n // If logged in user is not @wingnutiot.ca, hide any @wingnutiot.ca users\n if(email !== null && email !== undefined && item.externalId !== null && item.externalId !== undefined){\n if(email.split(\"@\").pop() !== \"wingnutiot.ca\"){\n if(item.externalId.split(\"@\").pop() === \"wingnutiot.ca\"){\n showEmployee = false\n } \n }\n }\n } else {\n // not verified\n showEmployee = false\n } \n\n return (showEmployee)\n }).map((item, index) => {\n\n var formattedNumber = null\n\n if(item.config.phone){\n const trimNumber = item.config.phone.slice(2)\n formattedNumber = `(${trimNumber.substring(0, 3)}) ${trimNumber.substring(3, 6)}-${trimNumber.substring(6,10)}`\n }\n return {\n id: item.id,\n name: `${item.config.firstName ? item.config.firstName : \"NOT SET\" } ${item.config.lastName ? item.config.lastName : \"NOT SET\" }`,\n email: item.externalId,\n notifyByPhone: null,\n notifyByEmail: null,\n notifyBySlack: null,\n isSelected: null,\n phoneNumber: formattedNumber ? formattedNumber : \"NOT SET\"\n }\n })\n //-----\n setEmployees(mappedEmployees)\n getNotifications()\n }\n })\n .catch((error) => {\n console.error(\"THERE WAS ERROR\", error)\n })\n\n })\n }\n getAllEmployees()\n }, [props.propertyDetails])\n\n // Once employees load in, use PropertyDetails to get Notification Recipients\n const getNotifications = async () => {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n const response = await API.get('FrontendAPI-notifications', `?propertyId=${props.propertyDetails.id}`, init) \n if (response.success) {\n\n if(response.data[0] && response.data[0].config)\n \n setRecipients(props.notificationDetails[0].config.recipients)\n setNotificationDetails(response.data)\n } \n }\n\n // Use the notifications to update the employees\n useEffect(() => {\n if(employees.length !== 0){\n const filteredEmployees = employees.map((employee) => {\n\n recipients.forEach((recipient) => { \n if(employee.id === recipient.id){\n switch(recipient.type){\n case \"phone\":\n employee.notifyByPhone = true\n return \n case \"email\":\n employee.notifyByEmail = true\n return \n case \"slack\": \n employee.notifyBySlack = true\n return \n case \"selected\": \n employee.isSelected = true\n return \n }\n } \n })\n return employee\n })\n\n let localViewEmployees = []\n\n filteredEmployees.forEach((employee) => {\n if((employee.notifyByEmail || employee.notifyByPhone || employee.isSelected) ){\n localViewEmployees.unshift(employee) \n }\n })\n setEmployees(filteredEmployees)\n setViewEmployees(localViewEmployees)\n setSelectDisabled(false)\n updateConfiguration()\n }\n }, [recipients])\n\n const addEmployeeToView = (id) => {\n let localViewEmployees = [...viewEmployees]\n // props.isActiveChange(true)\n employees.forEach((employee) => {\n if(employee.id === id ){\n employee.isSelected = true\n localViewEmployees.unshift(employee) \n }\n })\n \n setViewEmployees(localViewEmployees)\n props.isActiveChange(true)\n updateConfiguration()\n }\n\n const removeEmployeeFromView = (id) => {\n let localEmployees = [...employees]\n props.isActiveChange(true)\n // set employee email notify to false\n let updatedEmployees = localEmployees.map((employee) => {\n if(employee.id === id){\n employee.notifyByEmail = false\n employee.notifyByPhone = false\n employee.isSelected = false\n } \n return employee\n })\n\n setEmployees(updatedEmployees)\n let localViewEmployees = [...viewEmployees]\n\n const filteredViewEmployees = localViewEmployees.filter((employee) => {\n return employee.id !== id \n })\n\n setViewEmployees(filteredViewEmployees)\n props.isActiveChange(true)\n updateConfiguration()\n }\n\n const setEmailNotification = (id, val) => {\n let localEmployees = [...employees]\n props.isActiveChange(true)\n let updatedEmployees = localEmployees.map((employee) => {\n if(employee.id === id){\n employee.notifyByEmail = val\n }\n return employee\n })\n\n setEmployees(updatedEmployees)\n updateConfiguration()\n props.isActiveChange(true)\n }\n\n const setPhoneNotification = (id, val) => {\n let localEmployees = [...employees]\n props.isActiveChange(true)\n let updatedEmployees = localEmployees.map((employee) => {\n if(employee.id === id){\n employee.notifyByPhone = val\n }\n return employee\n })\n setEmployees(updatedEmployees)\n updateConfiguration()\n props.isActiveChange(true)\n }\n\n const updateConfiguration = async () => {\n var newRecipients = []\n\n employees.forEach((employee)=> {\n\n if(employee.notifyByEmail === true){\n let emailRecipient = {\n id: employee.id ,\n type: \"email\", \n }\n newRecipients.push(emailRecipient)\n } \n\n if(employee.notifyByPhone === true){\n let phoneRecipient = {\n id: employee.id ,\n type: \"phone\", \n }\n newRecipients.push(phoneRecipient)\n } \n\n if(employee.isSelected === true){\n let phoneRecipient = {\n id: employee.id,\n type: \"selected\", \n }\n newRecipients.push(phoneRecipient)\n } \n })\n\n var newConfig = {\n \"config\": {\n \"recipients\": {}\n }\n }\n\n newConfig['config'].recipients = newRecipients\n\n props.updateRecipients(newRecipients)\n\n}\n\n return (\n \n Select who you want to notify\n \n \n \n \n { viewEmployees.count !== 0 ?\n viewEmployees.map(employee => {\n return (\n \n \n \n \n \n );\n })\n :\n null\n }\n \n \n )\n}\n\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 95%;\n /* max-width: 985px; */\n background-color: #0e1c36;\n margin-bottom: 63px;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst TitleText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n padding-top: 25px;\n color: ${COLORS.HighlightLight};\n`;\n\nconst SearchContainer = styled.div`\n /* border: 1px red dashed; */\n flex-direction: row;\n justify-content: start;\n width: 377px;\n max-width: 1500px;\n ${media.lessThan(\"743px\")`\n /* flex-direction: column; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* flex-direction: row; */\n /* width: 90%; */\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n /* flex-direction: column; */\n `}\n`;\n\nconst ColumnContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport { AccountContext } from \"../../auth/Account\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ToggleTriState from './ToggleTriState'\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport { API, Auth } from \"aws-amplify\"\nimport NotificationEmployeeSelect from './NotificationEmployeeSelect'\nimport NotificationConfiguration from './NotificationConfiguration'\nimport NoConfiguration from './NotificationNoConfiguration'\nimport NotificationEmployee from './NotificationEmployee'\nimport { COLORS } from \"../../styles/colors\"\n\n/**\n * \n *Last thing I did was pass props notificationDetails and property into notification employee\n * So employee won't have to make db call\n * employee db call lifted into this component\n * lift config save call into this component\n * save everything all together\n */\n\n\nexport default function NotificationDetails(props) {\n\n const { params } = props\n const { getSession } = useContext(AccountContext)\n\n const [masterToggle, setMasterToggle] = useState(0)\n const [recipients, setRecipients] = useState([])\n const [isConfigured, setIsConfigured] = useState(null)\n const [isLinked, setIsLinked] = useState(null)\n const [propertyId, setPropertyId] = useState(null)\n const [isAuth, setIsAuth ] = useState(false)\n \n\n \n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n \n const updateMaster = async (val) => {\n setMasterToggle(val)\n props.isActiveChange(true)\n }\n\n const updateRecipients = async (val) => {\n setRecipients(val)\n // props.isActiveChange(true)\n }\n\n // Update master toggle\n useEffect(() => { \n if(props.notificationDetails && props.notificationDetails[0]){\n setMasterToggle(props.notificationDetails[0].entityStatus === \"enabled\" ? 1 : 0)\n }\n\n }, [props.notificationDetails])\n\n // Determine if Configured\n useEffect(() => {\n if(props.propertyDetails){\n setPropertyId(props.propertyDetails.id)\n // check for linked wingnuts\n if(props.propertyDetails.linkedWingnuts.length !== 0){\n // go inside each linked wingnut \n props.propertyDetails.linkedWingnuts.map(wingnut => {\n // check for any configured sensors\n setIsLinked(true)\n Object.keys(wingnut.config.sensors).map((key, index) => {\n // Only Analog inputs can have notifications\n if( key.substring(0,1) === \"A\"){\n return setIsConfigured(true)\n }\n })\n })\n } else {\n setIsConfigured(false)\n }\n }\n }, [props.propertyDetails])\n\n\n return (\n \n { isConfigured \n ?
\n Enable notifications for this property\n \n \n \n
\n : isConfigured !== null || isLinked !== null \n ? \n : null \n }\n
\n )\n}\n\n\nconst Container = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n background-color: #0e1c36;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n padding: 20px;\n margin-right: 20px;\n margin-top: -8px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst Line = styled.div`\n width: 100%;\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 21px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst InstructionText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n line-height: 130%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n margin-bottom: 7px;\n font-size: 18px;\n padding-top: 20px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n","export default __webpack_public_path__ + \"static/media/ic_refresh.1bc5702b.svg\";","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport { COLORS } from \"../../styles/colors\"\nimport {FormatLabel} from \"./../util/FormatLabel\"\n\nexport default function AlertCard(props) {\n\n var number = Number(props.value)\n var rounded = number.toFixed(1)\n\n const formatUnit = () => {\n if(props.label){\n if (props.label.includes(\"Current\")){\n return `${rounded} A`\n } else if (props.label.includes(\"Pressure\")){\n return `${rounded} PSI`\n } else {\n return `${rounded} \\u00B0 F`\n }\n }\n }\n\n return (\n \n \n {FormatLabel(props.label)}\n {formatUnit()} \n \n {props.toggleNotificationDetails(false, props.label)}}>Open Threshold\n \n\n )\n}\n\n\nconst Card = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 105px;\n width: 266px;\n background: ${COLORS.Secondary};\n padding: 11.5px;\n border-radius: 5px;\n /* flex-grow: 1; */\n margin: 5px;\n margin-left: 0px;\n margin-right: 10px;\n`;\n\nconst TextContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TitleText = styled.p`\n /* border: 1px blue dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 15px;\n line-height: 96%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n /* width: 150px; */\n`;\n\nconst TempText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 20px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.ErrorOrange};\n margin-top: 3px;\n`;\n\nconst BtnOpen = styled.button`\n /* border: 1px blue dashed; */\n outline: none;\n border: none;\n background: transparent;\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: flex-start;\n text-decoration-line: underline;\n color: ${COLORS.White};\n padding: 0px;\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport IconAlert from \"./../../images/ic_alert.svg\";\nimport IconRefreshBlue from \"./../../images/ic_refresh_blue.svg\";\nimport IconRefresh from \"./../../images/ic_refresh.svg\";\nimport AlertCard from \"./AlertCard\";\nimport { SpinnerContainer, StyledRelativeSpinner } from \"../custom/Spinner\"\n\n\nexport default function Alerts(props) {\n\n const [isFirstLoad, setIsFirstLoad] = useState(true)\n const [isRefresh, setIsRefresh] = useState(false)\n const [isRefreshAlertHovering, setIsRefreshAlertHovering] = useState(false)\n const [time, setTime] = useState(new Date());\n\n // DEV ONLY ONLY UNTIL WE FIND OUT IF WE SHOULD KEEP TIMER\n // REFRESH DATA ONCE A MINUTE\n useEffect(() => {\n const interval = setInterval(() => {\n setTime(new Date());\n }, 60000);\n return () => clearInterval(interval);\n }, []);\n //-------------------------------------------\n\n const manualRefresh = () => {\n props.willRefreshAlerts()\n setTime(new Date());\n }\n\n // Use notificationId to fetch the alarms\n useEffect(() => {\n let cancelled = false\n async function getAlertDetails() {\n setIsRefresh(true)\n\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { \n Authorization: `Bearer ${jwt}`\n },\n }\n const response = await API.get('FrontendAPI-thresholds', `/${props.notificationId}`, init) \n\n if (response.success && !cancelled) {\n props.updateBreaches(response.message)\n filterAlerts(response.data)\n // setTime(new Date());\n setIsRefresh(false)\n }\n\n }\n if(props.notificationId !== null){\n getAlertDetails()\n }\n\n return () => {\n cancelled = true\n }\n }, [props.notificationId, time, props.currentThresholds])\n\n\n const filterAlerts = (alerts) => {\n var filteredAlerts = {}\n\n if(alerts !== undefined && alerts !== null){\n\n let alertKeys = Object.keys(alerts)\n\n alertKeys.forEach((alertKey)=>{\n\n if(props.currentThresholds !== undefined && props.currentThresholds !== null ){\n const thresholds = props.currentThresholds[alertKey]\n const alertValue = Number(alerts[alertKey])\n // latest thresholds\n if(thresholds !== undefined && thresholds !== null){\n\n const {min, max, thresholdStatus} = thresholds\n\n if((alertValue > Number(max) || alertValue < Number(min)) && thresholdStatus === 'enabled'){\n\n const newAlerts = {\n ...filteredAlerts,\n [alertKey] : alertValue\n }\n\n filteredAlerts = newAlerts\n } \n }\n }\n })\n props.updateAlerts(filteredAlerts)\n setIsFirstLoad(false)\n }\n\n }\n\n // const lastUpdate = 'Last Update : ' + time.getHours() + ':' + time.getMinutes() + \":\" + time.getSeconds();\n const currentTime = 'Last Update : ' + time.toLocaleTimeString();\n const length = Object.keys(props.alerts).length\n\n return (\n \n \n { isFirstLoad\n ? \n : \n
\n \n \n \n {`${length} Alarms Active`} \n {`${currentTime}`}\n \n {isRefresh \n ? \n : {\n setIsRefreshAlertHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsRefreshAlertHovering(false)\n }}\n onClick={()=>{manualRefresh()}} \n src={isRefreshAlertHovering ? IconRefresh : IconRefreshBlue} \n style={{marginLeft: 20, width: 32, height: 32, cursor: 'pointer'}} /> \n }\n \n \n \n {props.alerts \n ? Object.keys(props.alerts).map((alert, index)=>{\n return \n })\n : null\n }\n\n \n
\n }\n
\n
\n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n width: 100%;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n margin-bottom: 15px;\n background: #0e1c36;\n border-radius: 10px;\n min-height: 80px;\n padding: 20px;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n width: 100%;\n align-self: center;\n padding: 20px 20px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\n const HeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n margin-bottom: 20px;\n; `;\n\n const HeaderTextContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n `;\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 26px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst UpdateText = styled.h5`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n /* line-height: 110%; */\n display: flex;\n align-items: center;\n /* letter-spacing: -0.01em; */\n color: ${COLORS.White};\n`\n\nconst InfoText = styled.h2`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 5px;\n`\n\nconst Icon = styled.img`\n margin-right: 23px;\n width: 23px;\n height: 23px;\n align-self: center;\n transition-duration: 0.5s;\n`\n\nconst AlertContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n width: auto;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n min-width: 250px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`;\n\nconst MiniSpinnerContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n width: 35px;\n height: 35px;\n justify-content: center;\n align-self: center;\n`","import React, { useEffect, useState, useContext, useRef } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport { Link } from \"react-router-dom\"\nimport media from \"styled-media-query\"\nimport IconNotify from \"./../../images/ic_notification_active.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport NotificationDetails from \"./NotificationDetails\"\nimport { useMediaQuery } from 'react-responsive'\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\nimport NotificationDefaults from './NotificationDefaults'\nimport Alerts from \"./../properties/Alerts\"\nimport NotificationSaveDiscard from \"./NotificationSaveDiscard\"\n\n\nexport default function NotificationThresholds(props) {\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n const [isEditNotificationHovering, setIsEditNotificationHovering] = useState(false)\n\n const [isHovering, setIsHovering] = useState(false)\n\n const [thresholds, setThresholds] = useState()\n const [activeThresholds, setActiveThresholds] = useState(0)\n const [sensorDefaults, setSensorDefaults] = useState([])\n \n const [activeChange, setActiveChange] = useState(false)\n const [refreshKey, setRefreshKey] = useState(0)\n\n const [saveAll, setSaveAll] = useState(false)\n const [saveAllPopup, setSaveAllPopup] = useState(false)\n const [discardAllPopup, setDiscardAllPopup] = useState(false)\n const [saveOrAbandonPopup, setSaveOrAbandonPopup] = useState(false)\n\n // ----------------------------------------------------\n const myRef = useRef();\n\n const handleClickOutside = e => {\n if(activeChange == true && saveAllPopup == false && discardAllPopup == false){\n if (!myRef.current.contains(e.target)) {\n setSaveOrAbandonPopup(true)\n }\n };\n }\n \n useEffect(() => {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n });\n // ----------------------------------------------------\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n const isActiveChange = (val) => {\n setActiveChange(val)\n }\n\n const willRefreshData = () => {\n setRefreshKey(refreshKey + 1)\n isActiveChange(false)\n setSaveAll(false)\n setSaveAllPopup(false)\n setDiscardAllPopup(false)\n setSaveOrAbandonPopup(false)\n props.willRefreshAlerts()\n }\n\n const didPushSaveData = () => {\n isActiveChange(false)\n setSaveAll(true)\n setSaveAllPopup(false)\n setDiscardAllPopup(false) \n }\n\n const resetPopupState = () => {\n setSaveAll(false)\n setSaveAllPopup(false)\n setDiscardAllPopup(false)\n setSaveOrAbandonPopup(false)\n }\n\n const triggerSaveAllPopup = () => {\n setSaveAllPopup(true)\n } \n\n const triggerDiscardAllPopup = () => {\n setDiscardAllPopup(true)\n }\n \n // Use propertyDetails to get the default values for the thresholds\n useEffect(() => {\n var fetchedSensorDefaults = []\n if(props.propertyDetails){\n props.propertyDetails.linkedWingnuts.map(wingnut => {\n \n Object.keys(wingnut.config.sensors).map((key, sensorIndex) => {\n var sensor = wingnut.config.sensors[key]\n \n var sensorDefault = NotificationDefaults.find((notificationDefault) => {\n return notificationDefault.key === sensor.label.replace(/\\d+/g, '')\n }) \n \n // If default found and it's not a digital sensor\n if(sensorDefault && key.substring(0,1) === \"A\"){\n sensorDefault.id = sensorIndex\n sensorDefault.label = sensor.label\n fetchedSensorDefaults.push({...sensorDefault}) // pushed in as reference because array was overwriting values\n } \n })\n })\n setSensorDefaults(fetchedSensorDefaults)\n }\n }, [props.propertyDetails])\n \n // Use notificationDetails to get the users set thresholds\n useEffect(() => {\n if(props.notificationDetails){\n if( props.notificationDetails[0] && props.notificationDetails[0].config){\n setThresholds(props.notificationDetails[0].config.thresholds)\n } \n }\n }, [props.notificationDetails])\n \n // Use thresholds to get active thresholds\n useEffect(() => {\n if(thresholds){\n var active = 0\n Object.values(thresholds).map((value, sensorIndex) => {\n if(value.thresholdStatus === 'enabled'){\n active = active + 1\n }\n })\n setActiveThresholds(active)\n }\n }, [thresholds])\n \n // Use the Notification thresholds to update the configured sensorDefaults\n useEffect(() => {\n if(thresholds){\n var thresholdKeys = []\n \n // Gather the threshold keys into an array\n Object.keys(thresholds).map ((thresholdKey, index) => { \n thresholdKeys.push(thresholdKey)\n })\n \n // Map through the configured SensorDefaults\n var newState = sensorDefaults.map(obj => {\n \n // If a default is found in the thresholds array, update that default\n if(obj.label && thresholdKeys.includes(obj.label)){ \n return{...obj,\n userMinValue: parseInt(thresholds[obj.label].min, 10),\n userMaxValue: parseInt(thresholds[obj.label].max, 10),\n thresholdStatus: thresholds[obj.label].thresholdStatus === \"enabled\" ? 1 : 0\n }\n } \n return obj \n }) \n setSensorDefaults(newState)\n props.updateCurrentThresholds(thresholds)\n // setDisabled(false)\n \n }\n }, [thresholds]) // refresh here if needed\n\n\n const shouldToggleMenu = () => {\n if(activeChange == false){\n props.toggleNotificationDetails(props.isEditNotificationOpen, \"editThresholds\") \n }\n }\n\n return (\n \n {/*----LABEL NAME------ */}\n \n {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}> \n \n {\n isAuth ? \"Edit Alarm Thresholds\" : \"Alarm Thresholds\"\n }\n \n \n\n {/*----SAVE DESKTOP----*/}\n \n\n {/*----NOTIFY ICON----*/}\n {/* { activeThresholds !== 0 \n ?\n \n \n \n {activeThresholds}\n \n \n :\n null\n } */}\n\n\n {/*----ARROW ICON----*/}\n {\n setIsEditNotificationHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsEditNotificationHovering(false)\n }}\n onClick={() => {props.toggleNotificationDetails(props.isEditNotificationOpen, \"editThresholds\")}} \n src={props.isEditNotificationOpen? ImgArrowDown : ImgArrowRightWhite} \n style={{ cursor: isEditNotificationHovering ? 'pointer' : null}}/>\n \n {/* */}\n \n \n\n {/*----SAVE MOBILE----*/}\n \n \n SAVE CONFIGURATION\n \n DISCARD CHANGES\n \n\n {props.isEditNotificationOpen && (\n \n )}\n \n )\n }\n\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 26px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst EditDetailsContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n /* padding: 20px; */\n height: 69px;\n border-radius: 10px;\n margin-top: 15px;\n margin-right: 20px;\n background-color: #0e1c36;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n`\n\nconst ConfigParent = styled.div`\n /* border: 1px green dashed; */\n`;\n\nconst ConfigContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n z-index: 0;\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst SaveConfigContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst SaveConfigContainerMobile = styled(SaveConfigContainer)`\n /* border: 1px red dashed; */\n background: #0e1c36;\n height: 60px;\n margin-top: -10px;\n padding-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n flex-wrap: wrap;\n min-height: 120px;\n padding-top: 20px;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n height: 10px;\n `}\n`;\n\nconst SaveConfig = styled.button`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n width: 241px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n background: none;\n align-self: center;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SaveConfigMobile = styled(SaveConfig)`\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst BtnText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: flex;\n `}\n`\n\nconst BtnTextMobile = styled(BtnText)`\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: flex;\n `}\n `;\n\n const ButtonText2Mobile = styled(ButtonText2)`\n /* margin-left: 20px; */\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n `;\n\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport { Link } from \"react-router-dom\"\nimport media from \"styled-media-query\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport Image6 from \"./../../images/ic_arrow_right_green_fill.svg\"\nimport EditPropertyDetails from \"./EditPropertyDetails\"\nimport NotificationThresholds from \"./../notification/NotificationThresholds\"\nimport WingnutStatus from \"../wingnuts/WingnutStatus.enum\"\nimport { DateTime } from \"luxon\"\nimport { useMediaQuery } from 'react-responsive'\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\nimport Alerts from \"./Alerts\"\nimport Modal from \"react-modal\"\nimport PopupContainer from \"./../popup/PopupContainer\"\n\nexport default function PropertyDetail(props) {\n const { params } = props.match\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n\n // const [isEditNotificationHovering, setIsEditNotificationHovering] = useState(false)\n\n const [propertyDetails, setPropertyDetails] = useState()\n const [notificationDetails, setNotificationDetails] = useState()\n const [alerts, setAlerts] = useState([])\n const [breaches, setBreaches] = useState({})\n const [currentThresholds, setCurrentThresholds] = useState()\n const [disable, setDisabled] = useState(true)\n const [notificationId, setNotificationId] = useState(null)\n const [isEditOpen, setIsEditOpen] = useState(false)\n const [isEditNotificationOpen, setIsEditNotificationOpen] = useState(false)\n const [formSubmitted, setFormSubmitted] = useState(false)\n\n const [isLoading, setIsLoading] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n const [isPropertyHovering, setIsPropertyHovering] = useState(false)\n const [isLinkedWingnutHovering, setIsLinkedWingnutHovering] = useState(false)\n const [isRemoveButtonHovering, setIsRemoveButtonHovering] = useState(false)\n\n const [refreshAlerts, setRefreshAlerts] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n}, [])\n\n useEffect(() => {\n let cancelled = false\n\n async function getPropertyDetails() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-properties', `/${params.id}`, init)\n if (response.success && !cancelled) {\n setDisabled(false)\n setPropertyDetails(response.data)\n }\n }\n\n getPropertyDetails()\n return () => {\n cancelled = true\n }\n }, [formSubmitted])\n\n const closePopup = () => {\n setIsOpen(false)\n }\n\n const updatePropertyDetails = () => {\n setFormSubmitted(!formSubmitted)\n }\n\n const updateAlerts = (alerts) => {\n setAlerts(alerts)\n }\n\n const updateBreaches = (breaches) => {\n setBreaches(breaches)\n }\n\n const updateCurrentThresholds = (thresholds) => {\n setCurrentThresholds(thresholds)\n }\n\n const willRefreshAlerts = () => {\n setRefreshAlerts(!refreshAlerts)\n }\n\n const wingnutStatus = (item) => {\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n if (difference.minutes > 15) {\n return WingnutStatus.Disconnected.value\n }\n } else {\n return WingnutStatus.Disconnected.value\n }\n\n if (item.config.propertyId === undefined) {\n return WingnutStatus.Unlinked.value\n }\n\n if (!(Object.keys(item.config.sensors).length > 0)) {\n return WingnutStatus.Unconfigured.value\n }\n\n return WingnutStatus.Live.value\n }\n\n const toggleNotificationDetails = (open, target) => {\n if(open){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('cardTop');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n setIsEditNotificationOpen(false)\n }, 400)\n } else {\n setIsEditNotificationOpen(true)\n setTimeout(() => {\n const element = document.getElementById(target);\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n}\n\n const toggleDetails = () => {\n if(isRemoveButtonHovering == false){\n if(isEditOpen){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('cardTop');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n setIsEditOpen(false)\n }, 400)\n } else {\n setIsEditOpen(true)\n setTimeout(() => {\n const element = document.getElementById('edit');\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n }\n }\n\n const openEditPropertyDetails = () => {\n if(disable !== true){\n setIsEditOpen(true)\n setTimeout(() => {\n const element = document.getElementById('edit');\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n }\n\n // Use propertyDetails to fetch the notificationDetails\n useEffect(() => {\n let cancelled = false\n\n async function getNotificationDetails() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n if(propertyDetails){\n const response = await API.get('FrontendAPI-notifications', `?propertyId=${propertyDetails.id}`, init) \n if (response.success && !cancelled) {\n if(response.data[0] !== null && response.data[0] !== undefined){\n setNotificationId(propertyDetails.id)\n setNotificationDetails(response.data)\n }\n }\n } \n }\n getNotificationDetails()\n\n return () => {\n cancelled = true\n }\n }, [propertyDetails, refreshAlerts])\n\n return (\n \n \n \n \n \n \n\n {/*----------------Alerts Start---------- */}\n \n \n\n {/*----------------Property Details Start---------- */}\n\n \n \n \n \n Property Details\n \n \n \n Property Name\n {propertyDetails && propertyDetails.config.name}\n \n \n Portfolio\n {propertyDetails && propertyDetails.config.portfolio}\n \n \n \n \n Property ID\n {propertyDetails && propertyDetails.externalId}\n \n \n Date Created\n {propertyDetails && propertyDetails.createdAt ? propertyDetails.createdAt.split(\" \")[0] : \"-\"}\n \n \n Address\n {propertyDetails && `${propertyDetails.config.address.streetAddress} ${propertyDetails.config.address.city} ${propertyDetails.config.address.provinceState} ${propertyDetails.config.address.country} ${propertyDetails.config.address.postalZip}`}\n \n
\n {\n setIsPropertyHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsPropertyHovering(false)\n }}>\n \n \n EDIT PROPERTY DETAILS\n \n \n
\n
\n\n {/*----------------Linked Wingnuts Start---------- */}\n\n \n \n \n \n Linked Wingnuts\n \n \n \n {propertyDetails && propertyDetails.linkedWingnuts.map((item, index) => {\n return (\n \n \n \n {(item.externalId).substr(0,4)}\n \n\n \n \n \n \n )\n })}\n\n {propertyDetails && propertyDetails.linkedWingnuts.length === 0 ?\n \n No Wingnuts currently linked to this Property.\n You must link a wingnut to start collecting data.\n \n :\n null \n }\n\n \n
\n
\n
\n \n {\n setIsLinkedWingnutHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsLinkedWingnutHovering(false)\n }}>\n \n \n LINK A NEW WINGNUT\n \n \n \n
\n \n
\n
\n\n {/*----------------Edit Notification Start---------- */}\n\n
\n \n \n {/*----------------Edit Property Start---------- */}\n\n
\n \n !isLoading ? isRemoveButtonHovering ? setIsOpen(true) : toggleDetails() : null} \n style={{ cursor: !isLoading ? 'pointer' : 'default', background: isEditOpen ? null : isHovering ? COLORS.Secondary : null}}\n onMouseEnter={(e) => {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}>\n \n Edit Property Details\n \n \n {setIsRemoveButtonHovering(true)}}\n onMouseLeave={(e) => {setIsRemoveButtonHovering(false)}}\n style={{opacity: isRemoveButtonHovering ? 0.8 : 1}}>\n REMOVE PROPERTY\n \n \n \n \n \n\n {isEditOpen && \n ( updatePropertyDetails()} />)\n }\n\n \n \n \n )\n}\n\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n transform: \"translate(-50%, -50%)\",\n background: COLORS.Primary,\n borderRadius: \"30px\",\n border: \"none\",\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.7)\",\n zIndex: 10,\n },\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px red dashed; */\n`;\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n max-width: 1440px;\n display: flex;\n height: auto;\n flex-direction: column;\n background-color: ${COLORS.Base};\n margin-bottom: 20px;\n margin-top: 20px;\n`\n\nconst StatusCard = styled.div`\n /* border: 1px yellow dashed; */\n width: 100%;\n height: auto;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n margin-bottom: 20px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n width: 95%;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n`;\n\nconst HeaderText = styled.h1`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 26px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Line = styled.div`\n width: auto;\n height: 0.69px;\n background: ${COLORS.HighlightMedium};\n margin-top: 30px;\n margin-bottom: 30px;\n`\n\nconst DetailsContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: row;\n `}\n`\n\n//------------------------\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n background: #0e1c36;\n display: flex;\n flex-direction: column;\n width: 50%;\n /* padding: 20px; */\n padding-bottom: 0px;\n border-radius: 10px;\n margin-right: 8px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst DetailsInfo = styled.div`\n display: flex;\n flex-direction: column;\n padding: 20px;\n`;\n\nconst WingnutDetailsRight = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 50%;\n /* min-height: 200px; */\n background: #0e1c36;\n /* padding: 20px; */\n padding-bottom: 0px;\n border-radius: 10px;\n margin-left: 8px;\n ${media.lessThan(\"743px\")`\n width: 100%;\n margin-left: 0px;\n max-width: 700px;\n margin-top: 16px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst DetailCell = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n ${media.lessThan(\"743px\")`\n flex-wrap: wrap;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n `}\n `;\n\nconst DetailTextCell = styled.div`\n display: flex;\n margin-bottom: 10px;\n flex-direction: column;\n width: 50%;\n`;\n\nconst Title = styled.h3`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n`\n\nconst InfoText = styled.h2`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 2px;\n`\n\n// const BtnLinkWingnut = styled.button`\n// display: flex;\n// flex-direction: row;\n// justify-content: center;\n// align-items: center;\n// padding: 14px 40px;\n// gap: 9px;\n// background: transparent;\n// width: 100%;\n// height: 40px;\n// border: 1px solid #63C085;\n// border-radius: 30px;\n// margin-right: 20px;\n// :hover {\n// background: ${COLORS.Secondary};\n// }\n// `;\n\nconst BtnEditProperty = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n background: transparent;\n width: 100%;\n height: 49px;\n border: none;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n background: ${COLORS.Secondary};\n`;\n\nconst BtnLinkWingnut = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n background: transparent;\n width: 100%;\n height: 49px;\n border: none;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n background: ${COLORS.Secondary};\n`;\n\nconst BtnWingnutContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n margin-bottom: 15px;\n margin-top: 20px;\n `}\n /* justify-content: center; */\n`\n\n\nconst WingnutContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n width: 50%;\n min-width: 225px;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n\n `}\n`;\n\nconst WingnutLabel = styled.p`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 100%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n`\n\n\nconst ButtonText = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnText2 = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n`\n\nconst Button = styled.button`\n display: flex;\n flex-direction: row;\n width: auto;\n height: auto;\n border: none;\n padding: 0px;\n background: transparent;\n cursor: pointer;\n color: ${COLORS.White};\n\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Green};\n margin-left: 15px;\n\n :hover {\n color: #63C085;\n }\n`\n\nconst WingnutTag = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 5px 15px;\n border: none;\n width: 105px;\n height: 43px;\n background: ${COLORS.Secondary};\n border-radius: 30px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst NoWingnutContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst NoWingnutText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.White};\n`;\n\nconst IconWingnut = styled.img`\n margin-right: 8px;\n width: 12.77px;\n height: 12.77px;\n align-self: center;\n transition-duration: 0.5s;\n`\n\nconst IconProperty = styled.img`\n /* border: 1px blue dashed; */\n width: 23px;\n height: 23px;\n align-self: center;\n justify-self: center;\n margin-right: 23px;\n transition-duration: 0.5s;\n`\n\nconst IconArrow = styled.img`\n width: 6;\n height: 10px;\n /* margin-left: 20px; */\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"medium\")`\n `}\n ${media.between(\"medium\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst EditDetailsContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n /* padding: 20px; */\n height: 69px;\n border-radius: 10px;\n margin-top: 15px;\n margin-right: 20px;\n background-color: #0e1c36;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n`\n\nconst ConfigContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n align-content: center;\n`;\n\nconst EditNotifyHeader = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst BtnRemoveProperty = styled.button`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.White};\n background-color: #0E1C36;\n cursor: pointer;\n text-align: center;\n margin-right: 15px;\n align-self: center;\n ${media.lessThan(\"743px\")`\n /* display: none; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* display: none; */\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonPropertyText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n /* display: none; */\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n /* display: none; */\n `}\n`\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst NotifyContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center; \n margin-right: 22px;\n`;\n\nconst NotifyIcon = styled.img`\n width: 25px;\n align-self: center;\n margin-right: 9px;\n`;\n\nconst NotifyTag = styled.div`\n display: flex;\n flex-direction: column;\n /* justify-content: center; */\n align-content: center;\n /* padding: 0px 12px; */\n /* gap: 10px; */\n width: 32px;\n height: 18px;\n background: ${COLORS.White};\n border-radius: 100px;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst NotifyText = styled.p`\n /* border: 1px red dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-self: center;\n margin-top: 0.5px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Base};\n`;\n\n\nconst SaveConfigContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst SaveConfigContainerMobile = styled(SaveConfigContainer)`\n /* border: 1px red dashed; */\n background: #0e1c36;\n height: 60px;\n margin-top: -10px;\n padding-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n width: 100%;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n height: 10px;\n `}\n`;\n\nconst SaveConfig = styled.button`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n width: 241px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n background: none;\n align-self: center;\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SaveConfigMobile = styled(SaveConfig)`\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst BtnText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: flex;\n `}\n`\n\nconst BtnTextMobile = styled(BtnText)`\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`;\n\nconst ButtonText2 = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n color: ${COLORS.White};\n text-align: center;\n align-self: center;\n margin-right: 15px;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n transition-duration: 0.5s;\n cursor: pointer;\n :hover {\n color: #63C085; \n }\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n /* display: none; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n `;\n\n const ButtonText2Mobile = styled(ButtonText2)`\n margin-left: 20px;\n ${media.lessThan(\"743px\")`\n display: flex;\n `}\n ${media.between(\"744px\", \"large\")`\n display: flex;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n `;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport Select from \"react-dropdown-select\"\nimport Fuse from \"fuse.js\"\nimport { DarkButtonSpinner } from \"./../custom/Spinner\"\nimport { AccountContext } from \"../../auth/Account\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n background: ${COLORS.Secondary};\n`\n\nconst WingnutDetails = styled.div`\n background: ${COLORS.Primary};\n border: 1px solid ${COLORS.HighlightMedium};\n border-radius: 10px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n padding: 15px;\n height: 340px;\n ${media.lessThan(\"743px\")`\n padding-bottom: 27px;\n /* padding-right: 0px; */\n width: 100%;\n height: 350px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 350px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutIcon = styled.img`\n width: 24px;\n height: 24px;\n /* margin-top: 30px; */\n margin-bottom: 8px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n margin-top: 15px; \n\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 100%;\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear,\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: red;\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n`\n\nconst BtnBack = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 40px;\n border: 1px solid #63c085;\n border-radius: 30px;\n color: ${COLORS.Base};\n background: #63c085;\n cursor: pointer;\n text-align: center;\n margin-top: 17px;\n align-self: center;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n height: 55px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst ButtonText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 12px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n :hover {\n }\n`\n\nconst Input = styled.input`\n background: transparent;\n border: none;\n outline: none;\n width: 100%;\n /* height: 100%; */\n color: ${COLORS.White};\n /* font-family: \"Roboto Condensed\", sans-serif; */\n `;\n\nconst fuzzyOptions = {\n threshold: 0.1,\n keys: [\"externalId\"],\n}\nexport default function LinkPropertySelectWingnut(props) {\n const { data } = props\n const [isSelected, setIsSelected] = useState(false)\n const [isHovering, setIsHovering] = useState(false)\n const [selectedWingnut, setSelectedWingnut] = useState(null)\n const [searchOptions, setSearchOptions] = useState([])\n const fuseSearch = new Fuse(data, fuzzyOptions)\n\n const { getSession } = useContext(AccountContext)\n const [isAuth, setIsAuth ] = useState(false)\n\n useEffect(() => {\n getSession().then(({ isAuth }) => {\n setIsAuth(isAuth)\n })\n }, [])\n\n useEffect(() => {\n setSearchOptions(mapRawData(data))\n }, [data])\n\n const mapRawData = (data) => {\n const options = data.map((item) => ({\n key: item.id,\n label: item.externalId,\n value: item.id,\n }))\n return options\n }\n\n const filterOptions = (filter) => {\n if (filter) {\n setSearchOptions(mapRawData(fuseSearch.search(filter).map((s) => s.item)))\n } else {\n setSearchOptions(mapRawData(fuseSearch.getIndex().docs))\n }\n }\n\n const onSelected = (item) => {\n if (item[0]) {\n setSelectedWingnut(item[0].value)\n setIsSelected(true)\n props.enableLinkButton()\n } else {\n setSelectedWingnut(null)\n setIsSelected(false)\n }\n }\n\n return (\n \n \n \n Select an unlinked Wingnut\n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}>\n onSelected(value)}\n options={searchOptions}\n values={[]}\n inputRenderer={\n ({ props, state, methods, inputRef }) => ( \n filterOptions(event.target.value)}\n hidden={selectedWingnut ? true: false} \n placeholder=\"Wingnut\" \n ref={inputRef} \n style={{ cursor: 'pointer', color: selectedWingnut ? \"green\" : COLORS.White, fontSize: \"18px\", fontWeight: \"300\"}} \n /> \n )\n }\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n fontWeight: \"300\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"18px\",\n }}\n />\n
\n\n props.linkWingnut(selectedWingnut)} style={{background : isSelected ? null : '#B6B6B6', border : isSelected ? null : 'none'}}>\n LINK WINGNUT\n {props.showSpinner && }\n \n\n
\n
\n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image3 from \"./../../images/ic_arrow_right_green.svg\"\nimport ImgGreen from \"./../../images/ic_status_green.svg\"\nimport ImgPurple from \"./../../images/ic_status_purple.svg\"\nimport ImgRed from \"./../../images/ic_status_red.svg\"\nimport ImgYellow from \"./../../images/ic_status_yellow.svg\"\nimport ImgEye from \"./../../images/eye_blue.svg\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\nimport ImgProperty from \"./../../images/ic_property.svg\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst HeaderContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: auto;\n min-width: 300px;\n margin-right: 20px;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 0px;\n /* width: 250px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TopContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n align-content: flex-start;\n`\n\nconst PropertyIcon = styled.img`\n width: 15px;\n height: 15px;\n margin-right: 15px;\n margin-top: 3px;\n`\n\nconst HeaderText = styled.div`\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 24px;\n line-height: 110%;\n display: flex;\n align-items: center;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst StatusIcon = styled.img`\n width: 24px;\n height: 24px;\n margin-right: 15px;\n margin-top: 3px;\n /* align-self: center; */\n`\n\n\nconst WingnutDetails = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n align-content: center;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst InfoText = styled.h2`\n /* width: 370px; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.HighlightLight};\n margin-top: 6px;\n margin-right: 5px;\n ${media.lessThan(\"743px\")`\n /* width: 300px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* width: 300px; */\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function LinkPropertyHeader(props) {\n const [isHovering, setIsHovering] = useState(false)\n\n return (\n \n\n { props.updateSuccess ?\n \n \n \n Success\n The Wingnut and property have been linked\n \n \n :\n \n \n \n {props.name ? props.name : 'Property Name'}\n Select which Wingnut you'd like to link to this property\n \n \n }\n \n )\n}\n","import React, { Component, useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Connected from \"./../../images/ic_link.svg\"\nimport NotConnected from \"./../../images/ic_link_off.svg\"\nimport WingnutDetailsCard from \"./WingnutDetailsCard\"\nimport PropertyDetailsCard from \"./PropertyDetailsCard\"\nimport LinkPropertySelectWingnut from \"./LinkPropertySelectWingnut\"\nimport LinkPropertyHeader from \"./LinkPropertyHeader\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Container = styled.div`\n max-width: 1260px;\n /* height: 100%; */\n display: flex;\n flex-direction: column;\n /* padding-bottom: 50px; */\n padding-top: 18px;\n background-color: ${COLORS.Base};\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StatusCard = styled.div`\n /* border: 1px yellow dashed; */\n width: auto;\n max-width: 1048px;\n min-height: 570px;\n height: auto;\n display: flex;\n flex-direction: column;\n background: #0e1c36;\n border-radius: 10px;\n margin-bottom: 20px;\n padding: 35px 35px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n width: 95%;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 95%;\n padding: 25px 25px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n /* flex-direction: column; */\n flex-wrap: wrap;\n justify-content: flex-start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst DetailsContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n /* width: 350px; */\n `}\n`\n\nconst WingnutDetails = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 340px;\n padding-bottom: 5px;\n ${media.lessThan(\"743px\")`\n width: 320px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst WingnutIcon = styled.img`\n width: 30px;\n height: 30px;\n margin-right: 30px;\n margin-left: 30px;\n margin-top: 110px;\n ${media.lessThan(\"743px\")`\n margin-top: 20px;\n margin-bottom: 20px;\n margin-right: 0px;\n margin-left: 155px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 20px;\n margin-bottom: 20px;\n margin-right: 0px;\n margin-left: 155px;\n /* align-self: center; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Line = styled.div`\n /* width: 97.75%; */\n height: 1px;\n background: ${COLORS.HighlightMedium};\n margin-top: 14px;\n /* margin-right: 30px; */\n margin-bottom: 26px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nexport default function LinkWingnutToProperty(props) {\n const {params} = props.match\n\n const [wingnuts, setWingnuts] = useState()\n const [wingnutDetails, setWingnutDetails] = useState()\n const [propertyDetails, setPropertyDetails] = useState()\n const [showSuccess, setShowSuccess] = useState(false)\n const [disabled, setDisabled] = useState(true)\n const [showSpinner, setShowSpinner] = useState(false)\n\n const enableLinkButton = () => {\n setDisabled(false)\n }\n\n const linkWingnut = async (id) => {\n setDisabled(true)\n setShowSpinner(true)\n if (id) {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n body: { propertyId: propertyDetails.id }\n }\n const response = await API.post('FrontendAPI-wingnuts', `/${id}/link`, init)\n if (response.success) {\n setDisabled(false)\n setShowSpinner(false)\n setWingnutDetails(response.data)\n setShowSuccess(true)\n }\n }\n }\n\n useEffect(() => {\n var cancelled = false\n\n async function getWingnuts() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-wingnuts', ``, init)\n if (response.success && !cancelled) {\n const wingnuts = response.data.filter(item => !item.property)\n setWingnuts(wingnuts)\n }\n }\n\n async function getPropertyDetails() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-properties', `/${params.id}`, init)\n if (response.success && !cancelled) {\n setPropertyDetails(response.data)\n }\n }\n\n getWingnuts()\n getPropertyDetails()\n \n return () => {\n cancelled = true\n }\n }, [])\n\n return (\n \n \n \n {propertyDetails && ()}\n \n \n \n\n \n {propertyDetails && ()}\n \n\n {wingnutDetails ? : }\n \n {wingnutDetails ? : (wingnuts && linkWingnut(id)} data={wingnuts} />)}\n \n \n \n \n )\n}\n","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport IconLaunch from \"./../../../images/ic_launch_green.svg\"\nimport ImgGreen from \"./../../../images/ic_status_green.svg\"\nimport ImgWingnut from \"./../../../images/ic_wingnuts.svg\"\nimport { Link } from \"react-router-dom\"\nimport { COLORS } from \"./../../../styles/colors\"\nimport { DateTime } from \"luxon\"\nimport WingnutStatus from \"./../../wingnuts/WingnutStatus.enum\"\n\n\nexport default function WingnutDetailsUI(props) {\n\n const formatDate = (date) => {\n const dateObj = new Date(date);\n const dateWithoutMicroseconds = dateObj.toISOString().substring(0, 19) + \"Z\";\n const localDate = new Date(dateWithoutMicroseconds).toLocaleString();\n return dateWithoutMicroseconds\n }\n\n const wingnutStatus = (item) => {\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n if (difference.minutes > 15) {\n return WingnutStatus.Disconnected.value\n }\n } else {\n return WingnutStatus.Disconnected.value\n }\n\n if (item.config.propertyId === undefined) {\n return WingnutStatus.Unlinked.value\n }\n\n if (!(Object.keys(item.config.sensors).length > 0)) {\n return WingnutStatus.Unconfigured.value\n }\n\n return WingnutStatus.Live.value\n }\n\n return (\n \n \n\n\n {\n props.wingnut \n ? \n \n \n : null\n }\n\n\n \n \n \n \n \n Serial Number\n {props.wingnut ? props.wingnut.externalId : '--'}\n \n \n Wingnut Model\n {props.data && props.data[0] ? props.data[0].wingnutModel : '--'}\n \n \n \n \n Wingnut Software Version\n {props.data && props.data[0] ? props.data[0].wingnutSoftwareVersion : '--'}\n \n \n Wingnut Hardware Version\n {props.data && props.data[0] ? props.data[0].wingnutHardwareVersion : '--'}\n \n \n \n \n Wingnut Latest Timestamp\n {props.data && props.data[0] ? formatDate(props.data[0].time) : '--'}\n \n \n Wingnut Last Boot\n {props.data && props.data[0] ? formatDate(props.data[0].lastBoot) : '--'}\n \n \n \n \n )\n}\n\n// latest boot 2023-01-18 17:46:00 \n// hardware v1.4.0\n// software v5.0.1\n// model WN48-WIFI\n\n\n const OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 20px;\n padding-top: 0px;\n `\n\nconst TopContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n width: 100%;\n justify-content: flex-end;\n /* margin-top: 5px; */\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-bottom: 21px;\n align-items: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst StatusIcon = styled.img`\n /* border: 1px red dashed; */\n width: 12px;\n height: 12px;\n margin-right: 22px;\n`\n\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: normal;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n max-width: 1440px;\n margin-right: 30px;\n margin-bottom: 10px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n `\n\nconst TextContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: column;\n margin-right: 120px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst ColumnContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n margin-bottom: 10px;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: row;\n width: 130px;\n height: 20px;\n border: none;\n padding: 0px;\n background: transparent;\n cursor: pointer;\n color: ${COLORS.White};\n :hover {\n color: #63C085;\n }\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed; */\n width: 10px;\n height: 10px;\n margin-right: 6px;\n position: relative;\n`\n\nconst ButtonText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n color: ${COLORS.White};\n :hover {\n color: #63C085;\n }\n`\n\n const Title = styled.h3`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 129.5%;\n display: flex;\n align-items: center;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightMedium};\n margin-top: 9px;\n `\n\n const InfoText = styled.h2`\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: normal;\n font-size: 18px;\n line-height: 130%;\n display: flex;\n align-items: center;\n color: ${COLORS.White};\n margin-top: 1px;\n `\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport Icon from \"./../../images/ic_alert.svg\";\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport { SpinnerContainer, StyledRelativeSpinner } from \"../custom/Spinner\"\nimport WingnutDetailsUI from \"./component/WingnutDetailsUI\"\nimport WingnutStatus from \"./../wingnuts/WingnutStatus.enum\"\nimport { DateTime } from \"luxon\"\nimport ImgWingnut from \"./../../images/ic_wingnuts.svg\"\n\nexport default function WingnutDetailsModule(props) {\n\n const [data, setData] = useState()\n const [isLoading, setIsLoading] = useState(false)\n\n const [isHovering, setIsHovering] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n if(data && isOpen){\n loadChartData()\n }\n }, [props.refresh])\n\n const toggleChart = () => {\n if(isOpen){\n setIsOpen(false)\n } else {\n loadChartData()\n }\n}\n\n const loadChartData = async () => {\n if(props.wingnut){\n setIsLoading(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n const response = await API.get('FrontendAPI-analytics', `/wingnutspecs?wingnutId=${props.wingnut.externalId}`, init)\n if (response.success) {\n setData(response.data)\n setIsOpen(true)\n setIsLoading(false)\n }\n }\n }\n\n const wingnutStatus = (item) => {\n\n if (item.config.latestPost) {\n var date = DateTime.utc()\n var apiDateTime = item.config.latestPost ? DateTime.fromFormat(item.config.latestPost, \"yyyy-MM-dd HH:mm:ss\") : DateTime.utc()\n var difference = date.diff(apiDateTime, 'minutes')\n \n if (difference.minutes > 15) {\n return WingnutStatus.Disconnected.value\n } \n\n } else {\n return WingnutStatus.Disconnected.value\n }\n\n if (item.config.propertyId === undefined) {\n return WingnutStatus.Unlinked.value\n }\n\n if (!(Object.keys(item.config.sensors).length > 0)) {\n return WingnutStatus.Unconfigured.value\n }\n\n return WingnutStatus.Live.value\n }\n\n\n \n return (\n \n \n {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}>\n \n \n\n \n\n {props.wingnut ? `Wingnut ${props.wingnut.externalId}` : 'Wingnut Details'}\n \n { isLoading\n ? \n : null }\n\n \n\n \n \n \n \n {\n isOpen \n ? \n : null\n }\n\n \n \n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n max-width: 1440px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n margin-top: 20px;\n background: #0e1c36;\n border-radius: 10px;\n min-height: 68px;\n /* padding: 20px; */\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n `;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n /* line-height: 84.5%; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n align-items: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst StatusIcon = styled.img`\n /* border: 1px red dashed; */\n width: 12px;\n height: 12px;\n margin-right: 22px;\n`\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport Icon from \"./../../images/ic_alert.svg\";\n// import AlertCard from \"./AlertCard\";\nimport { SpinnerContainer, StyledSpinner } from \"../custom/Spinner\"\nimport PropertyTimeUI from \"./component/PropertyTimeUI\"\nimport PropertyTimeDropdownUI from \"./component/PropertyDropdownUI\"\n\n\nexport default function PropertyTimeData(props) {\n\n return (\n \n \n { props.isFirstLoad\n ? \n : \n \n }\n \n \n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n /* margin-right: 30px; */\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n /* margin-bottom: 15px; */\n background: #0e1c36;\n border-radius: 10px;\n min-height: 80px;\n padding: 20px;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport { SpinnerContainer, StyledRelativeSpinner } from \"../custom/Spinner\"\nimport SystemOverviewUI from \"./component/SystemOverviewUI\"\n\nexport default function SystemOverview(props) {\n\n const [boilerPressureData, setBoilerPressureData] = useState()\n const [boilerTemperatureData, setBoilerTemperatureData] = useState()\n const [hotWaterTemperatureData, setHotWaterTemperatureData] = useState()\n\n const [isLoadingPressure, setIsLoadingPressure] = useState(false)\n const [isLoadingTemperature, setIsLoadingTemperature] = useState(false)\n const [isLoadingHotWater, setIsLoadingHotWater] = useState(false)\n\n const [isHovering, setIsHovering] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [isFirstLoad, setIsFirstLoad] = useState(true) // switch this in dev to false to not auto open\n\n useEffect(() => {\n if(boilerPressureData && boilerTemperatureData && hotWaterTemperatureData && isOpen || isFirstLoad){\n setIsFirstLoad(false)\n setBoilerPressureData()\n setBoilerTemperatureData()\n setHotWaterTemperatureData()\n loadChartData()\n }\n }, [props.refresh])\n\n const toggleChart = () => {\n if(isOpen){\n setIsOpen(false)\n } else {\n setBoilerPressureData()\n setBoilerTemperatureData()\n setHotWaterTemperatureData()\n loadChartData()\n }\n}\n\nuseEffect(() => {\n if(boilerPressureData && boilerTemperatureData && hotWaterTemperatureData){\n setIsOpen(true)\n setIsLoadingTemperature(false)\n setIsLoadingPressure(false)\n setIsLoadingHotWater(false)\n }\n}, [boilerPressureData, boilerTemperatureData, hotWaterTemperatureData])\n\nconst isDataLoading = () => {\n if(isLoadingTemperature || isLoadingPressure || isLoadingHotWater){\n return true\n } else {\n return false\n }\n}\n\nconst loadChartData = async () => {\n\n const loadPressure = async () => {\n if(props.propertyDetails && props.startTime && props.endTime){\n setIsLoadingPressure(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n // Offset sent to back so API call will return but doesn't affect the returned calculations\n const response = await API.get('FrontendAPI-analytics', `/boilersystempressure?uuid=${props.propertyDetails.id}&startTime=${props.startTime}&endTime=${props.endTime}&offset=${props.offset}`, init)\n if (response.success) {\n setBoilerPressureData(response.data)\n setIsLoadingPressure(false)\n }\n }\n }\n\n const loadTemperature = async () => {\n if(props.propertyDetails && props.startTime && props.endTime){\n setIsLoadingTemperature(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n\n // Offset sent to back so API call will return but doesn't affect the returned calculations\n const response = await API.get('FrontendAPI-analytics', `/boilersystemtemperature?uuid=${props.propertyDetails.id}&startTime=${props.startTime}&endTime=${props.endTime}&offset=${props.offset}`, init)\n if (response.success) {\n setBoilerTemperatureData(response.data)\n setIsLoadingTemperature(false)\n }\n }\n }\n\n const loadHotWater = async () => {\n if(props.propertyDetails && props.startTime && props.endTime){\n setIsLoadingHotWater(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n \n // Offset sent to back so API call will return but doesn't affect the returned calculations\n const response = await API.get('FrontendAPI-analytics', `/domestichotwatersystemtemperature?uuid=${props.propertyDetails.id}&startTime=${props.startTime}&endTime=${props.endTime}&offset=${props.offset}`, init)\n if (response.success) {\n setHotWaterTemperatureData(response.data)\n setIsLoadingHotWater(false)\n }\n }\n }\n\n loadPressure()\n loadTemperature()\n loadHotWater()\n\n}\n\n return (\n // \n \n \n \n \n { isDataLoading()\n ? \n : null }\n\n \n \n {\n isOpen\n ? \n : null\n }\n\n \n \n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n width: 100%;\n margin-bottom: 15px;\n margin-top: -16px;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n background: #0e1c36;\n border-radius: 10px;\n min-height: 68px;\n height: 100%;\n /* padding: 20px; */\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n`;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n /* line-height: 84.5%; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\n\nconst LeftContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n height: 30px;\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n align-items: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`","import React, { useEffect, useState, useContext } from \"react\"\nimport Select from \"react-dropdown-select\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../../styles/colors\"\n\nexport default function CustomTimeZoneDropdownUI(props) {\n\n const [isLocal, setIsLocal] = useState(true)\n const [isSelected, setIsSelected] = useState(false)\n const [selectedTimeRange, setSelectedTimeRange] = useState(null)\n const [isHovering, setIsHovering] = useState(false)\n // const [keepOpen, setKeepOpen] = useState(false)\n\n const customContentRenderer = () => (\n // Set to Edmonton locally to start\n
\n {selectedTimeRange ? selectedTimeRange : \"My Time - (GMT-6) America/Edmonton\"}\n {/* {selectedTimeRange ? selectedTimeRange : \"My Time - (GMT-0) UTC\"} */}\n
\n );\n\n const timeOptions = [\n {key: 1, value: props.propertyTimeZone ? props.propertyTimeZone.value : \"America/UTC\" , label: props.propertyTimeZone ? props.propertyTimeZone.label : \"-\" },\n {key: 2, value: \"America/Edmonton\", label: \"My Time - (GMT-6) America/Edmonton\" },\n // {key: 3, value: \"UTC\", label: \"Reference Time - (GMT-0) UTC\" },\n // {key: 3, value: -25200, label: \"(GMT-7) America/Vancouver\" }\n ];\n\n const onSelected = (item) => {\n if (item[0]) {\n props.updateTimeZone(item[0].value)\n setIsSelected(true)\n\n if(item[0].key === 2){\n setIsLocal(true)\n setSelectedTimeRange(`${item[0].label}`)\n } else {\n setIsLocal(false)\n setSelectedTimeRange(`${item[0].label}`)\n }\n\n } else {\n setSelectedTimeRange(null)\n setIsSelected(false)\n }\n }\n\n // data.stopPropagation()??\n\n return (\n \n \n
{\n setIsHovering(true)\n }}\n onMouseLeave={(e) => {\n setIsHovering(false)\n }}\n >\n onSelected(value)}\n options={timeOptions}\n values={isLocal ? [timeOptions[1]] : [timeOptions[0]]}\n dropdownHeight=\"500px\"\n dropdownPosition=\"bottom\"\n style={{\n border: isHovering ? \"1px solid #d5d5d5\" : isSelected ? \"1px solid #d5d5d5\" : \"1px solid transparent\",\n borderRadius: 8,\n color: COLORS.White,\n fontWeight: \"100\",\n paddingLeft: \"12px\",\n fontFamily: \"Roboto Condensed\",\n fontSize: \"16px\"\n }}\n />\n
\n
\n
\n )\n}\n\nconst Container = styled.div`\n /* border: 1px solid red; */\n display: flex;\n flex-direction: column;\n`\n\nconst CustomText = styled.p`\n color: ${COLORS.White};\n font-weight: 100,\n padding-left: 12px,\n font-family: \"Roboto Condensed\",\n font-size: 16px;\n`;\n\nconst TimeRangeDetails = styled.div`\n border-radius: 10px;\n /* box-sizing: border-box; */\n display: flex;\n flex-direction: column;\n flex-wrap: none;\n width: 360px;\n ${media.lessThan(\"743px\")`\n /* padding-bottom: 27px; */\n /* padding-right: 0px; */\n /* width: 100%; */\n max-width: 300px;\n min-width: 270px;\n /* height: 350px; */\n `}\n ${media.between(\"744px\", \"large\")`\n /* height: 350px; */\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst StyledSelect = styled(Select)`\n height: 45px;\n width: 384px;\n color: ${COLORS.White};\n background: ${COLORS.Secondary};\n /* margin-top: 15px; */\n\n ${media.lessThan(\"744px\")`\n /* width: 90%; */\n height: 55px;\n `}\n ${media.between(\"medium\", \"large\")`\n\n height: 55px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n\n .react-dropdown-select-clear,\n .react-dropdown-select-dropdown-handle {\n color: ${COLORS.White};\n height: 22px;\n }\n .react-dropdown-select-option {\n }\n .react-dropdown-select-item {\n\n }\n .react-dropdown-select-input {\n color: ${COLORS.White}; // cursor select\n }\n .react-dropdown-select-dropdown {\n background: ${COLORS.Secondary}; // card background\n border-radius: 8px;\n border: 1px solid ${COLORS.HighlightMedium};\n }\n .react-dropdown-select-item {\n color: ${COLORS.White}; // list item\n border-bottom: none;\n padding-top: 12px;\n padding-bottom: 12px;\n :hover {\n background: ${COLORS.HighlightMedium};\n }\n }\n .react-dropdown-select-item.react-dropdown-select-item-selected{\n color: ${COLORS.White}; // selected item\n background: ${COLORS.HighlightMedium};\n border-bottom: none;\n }\n .react-dropdown-select-item.react-dropdown-select-item-active {\n //background: #111;\n /* border-bottom: 1px solid #333; */\n\n /* font-weight: bold; */\n\n }\n .react-dropdown-select-item.react-dropdown-select-item-disabled {\n /* color: #ccc; */\n }\n ::placeholder {\n color: ${COLORS.White};\n\n }\n :focus {\n outline: ${COLORS.White};\n border: 1px solid ${COLORS.White};\n }\n\n`\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n /* height: 500px; */\n /* left: 454px; */\n /* top: 390px; */\n /* background: #1A2B4A; */\n /* border: 1px solid #A1ADC2; */\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n`;","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../../styles/colors\"\nimport PropertyDropdownUI from \"./PropertyDropdownUI\"\nimport CustomTimeZoneDropdownUI from \"./../component/CustomTimeZoneDropdownUI\"\nimport { useMediaQuery } from 'react-responsive'\nimport TimeRangePickerUI from \"./TimeRangePickerUI\"\n\nexport default function PropertyTimeUI(props) {\n\n return (\n \n \n \n \n Custom Date\n \n \n \n\n \n Custom TimeZone\n \n \n \n \n )\n}\n\n\n const OuterContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n padding-left: 20px;\n /* height: 500px; */\n `\n\nconst TopContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n width: 100%;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n margin-bottom: 21px;\n ${media.lessThan(\"743px\")`\n /* align-self: center; */\n margin-right: 0px;\n margin-bottom: 15px;\n justify-content: space-between;\n `}\n`\n\nconst HeaderTextContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nconst UtilityContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n /* height: 30px; */\n /* justify-content: center; */\n`;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n line-height: 84.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Subheader = styled.h4`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.White};\n margin-top: 6px;\n`;\n\nconst Container = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n max-width: 1440px;\n margin-right: 30px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n flex-direction: column;\n `}\n `\n\nconst Dropdown = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n margin-right: 20px;\n`;\n\nconst DropdownTitle = styled.p`\n /* border: 1px yellow dashed; */\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 129.5%;\n letter-spacing: 0.03em;\n text-transform: capitalize;\n color: ${COLORS.HighlightLight};\n`;\n\nconst DropdownPlaceholder = styled.div`\n background: #1A2B4A;\n width: 384px;\n height: 45px;\n border: 1px solid #A1ADC2;\n border-radius: 8px;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst Button = styled.button`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: row;\n width: 130px;\n height: 20px;\n border: none;\n padding: 0px;\n background: transparent;\n margin-top: 7px;\n cursor: pointer;\n color: ${COLORS.White};\n :hover {\n color: #63C085;\n }\n ${media.lessThan(\"743px\")`\n margin-bottom: 15px;\n margin-left: -10px;\n `}\n`\n\nconst Icon = styled.img`\n /* border: 1px red dashed;; */\n width: 10px;\n height: 10px;\n margin-right: 6px;\n position: relative;\n`\n\nconst ButtonText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n color: ${COLORS.White};\n :hover {\n color: #63C085;\n }\n`\n\nconst NoWingnutContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n`;\n\nconst NoWingnutText = styled.p`\n font-family: 'Roboto Condensed';\n font-style: italic;\n font-weight: 300;\n font-size: 16px;\n line-height: 130%;\n color: ${COLORS.HighlightLight};\n`;\n\nconst BtnLinkWingnut = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 14px 40px;\n gap: 9px;\n background: ${COLORS.Green};\n width: 193px;\n height: 40px;\n border: 1px solid #63C085;\n border-radius: 30px;\n margin-right: 20px;\n margin-top: 16px;\n :hover {\n }\n`;\n\nconst BtnSet = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: transparent;\n height: 40px;\n border: none;\n border-radius: 30px;\n :hover {\n }\n`;\n\nconst ButtonText2 = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Primary};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\nconst ButtonSetText = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.Green};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n\n\nconst CalendarContainer = styled.div`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: left;\n margin-top: 10px;\n width: 100%;\n`;\n\nconst MiniSpinnerContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n width: 35px;\n height: 35px;\n justify-content: center;\n align-self: center;\n margin-bottom: 15px;\n`","import React, { useEffect, useState, useContext } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport ImgArrowDown from \"./../../images/ic_arrow_down_white.svg\"\nimport ImgArrowRightWhite from \"./../../images/ic_arrow_right_white.svg\"\nimport ImgArrowRight from \"./../../images/ic_arrow_right_blue.svg\"\nimport { SpinnerContainer, StyledRelativeSpinner } from \"../custom/Spinner\"\nimport CustomTimeUI from './../analytic/component/CustomTimeUI'\n\nexport default function CustomTimeModule(props) {\n\n const [data, setData] = useState()\n const [isLoading, setIsLoading] = useState(false)\n\n const [isHovering, setIsHovering] = useState(false)\n const [isOpen, setIsOpen] = useState(false) // set to TRUE for dev\n\n const toggleChart = () => {\n if(isOpen){\n setIsOpen(false)\n } else {\n setIsOpen(true)\n }\n}\n\n return (\n \n \n {setIsHovering(true)}}\n onMouseLeave={(e) => {setIsHovering(false)}}>\n \n \n Custom Date & Timezone\n \n { isLoading\n ? \n : null }\n \n\n \n \n \n \n\n {\n isOpen \n ? \n\n : null\n }\n \n \n )\n}\n\nconst OuterContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n `}\n `;\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n margin-right: 30px;\n flex-direction: row;\n justify-content: space-between;\n margin-right: 20px;\n margin-bottom: 15px;\n background: #0e1c36;\n border-radius: 10px;\n min-height: 68px;\n /* padding: 20px; */\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding: 20px;\n border-radius: 10px;\n `;\n\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-style: normal;\n font-weight: 400;\n font-size: 28px;\n /* line-height: 84.5%; */\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst LeftContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst RightContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n flex-direction: row;\n /* height: 100px; */\n`;\n\nconst ArrowIcon = styled.img`\n width: 24px;\n height: 24px;\n align-self: center;\n`\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n align-items: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n margin-right: 0px;\n `}\n`\n\nconst StatusIcon = styled.img`\n /* border: 1px red dashed; */\n width: 12px;\n height: 12px;\n margin-right: 22px;\n`\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"./../../styles/colors\"\n\nexport default function PropertyHeader(props) {\n\n const {address} = props.propertyDetails.config\n const [isGoToPropertyHovering, setIsGoToPropertyHovering] = useState(false)\n\n return (\n \n \n {props.propertyDetails.config.name}\n {address && `${address.streetAddress} ${address.city} ${address.provinceState} ${address.country} ${address.postalZip}`}\n \n\n \n {\n if(props.propertyDetails){\n setIsGoToPropertyHovering(true)\n }\n }}\n onMouseLeave={(e) => {\n setIsGoToPropertyHovering(false)\n }}>\n GO TO PROPERTY \n \n \n\n\n \n )\n}\n\nconst HeaderContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n width: 100%;\n flex-direction: row;\n margin-bottom: 44px;\n align-items: flex-end;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n margin-bottom: 15px;\n margin-top: 15px;\n align-items: center;\n `}\n`\n\nconst HeaderTextContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n`;\n\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n font-family: Blinker;\n font-size: 31px;\n font-style: normal;\n font-weight: 600;\n line-height: 90%; /* 27.9px */\n letter-spacing: -0.31px;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n text-align: center;\n `}\n`\n\nconst Subheader = styled.h4`\n font-family: \"Roboto Condensed\", sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 130%;\n margin-top: 6px;\n color: ${COLORS.HighlightLight};\n ${media.lessThan(\"743px\")`\n text-align: center;\n `}\n`;\n\nconst BtnLinkWingnut = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 10px 24px;\n background: transparent;\n margin-left: 45px;\n /* width: 134px; */\n /* height: 34px; */\n border: 1px solid #63C085;\n border-radius: 26px;\n /* margin-bottom: 5px; */\n ${media.lessThan(\"743px\")`\n margin-left: 0px;\n margin-top: 15px;\n `}\n`;\n\nconst ButtonText2 = styled.p`\n /* border: 1px red dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 11px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n align-self: center;\n transition-duration: 0.5s;\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n /* width: 170px; */\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`;\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { API, Auth } from \"aws-amplify\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { useMediaQuery } from 'react-responsive'\nimport { COLORS } from \"../../styles/colors\"\nimport WingnutDetailsModule from \"../analytic/WingnutDetailsModule\"\nimport PropertyTimeData from \"../analytic/PropertyTimeData\"\nimport SystemOverview from \"../analytic/SystemOverview\"\nimport TimeSeriesModule from \"./../analytic/TimeSeriesModule\"\nimport CustomTimeModule from \"./../analytic/CustomTimeModule\"\nimport PlacesAutocomplete, {geocodeByAddress} from 'react-places-autocomplete';\nimport GetTimezoneFromLatLng from './../analytic/component/GetTimeZone'\nimport PropertyHeader from './../analytic/PropertyHeader'\nimport { useHistory } from 'react-router-dom'\nimport moment from 'moment-timezone';\n\nexport default function Dashboard(props) {\n const history = useHistory();\n\n const { params } = props.match\n const [properties, setProperties] = useState([])\n const [propertyDetails, setPropertyDetails] = useState(null)\n const [sensorLabels, setSensorLabels] = useState([])\n\n const [timeZone, setTimeZone] = useState();\n const [offset, setOffset] = useState(0);\n const [incrementTime, setIncrementTime] = useState(86400) // Default 24 Hours\n const [startTime, setStartTime] = useState(new Date().getTime()); // Always in Milliseconds\n const [endTime, setEndTime] = useState(new Date().getTime()); // Always in Milliseconds\n\n const [state, setState] = useState({ value: \"UTC\", label: \"Property Time - (GMT-0) UTC\", offset: \"(GMT-0)\"})\n\n const [isLocked24H, setIsLocked24H] = useState(false)\n const [isCustomDate, setIsCustomDate] = useState()\n const [isTimeRange, setIsTimeRange] = useState(false)\n const [isNewTime, setIsNewTime] = useState(false)\n const [isCustomRange, setIsCustomRange] = useState(false)\n const [isFirstLoad, setIsFirstLoad] = useState(true)\n const [isDefaultLoad, setIsDefaultLoad] = useState(true)\n const [isLoading, setIsLoading] = useState(false)\n const [name, setName] = useState(\"\")\n const [externalId, setExternalId] = useState(\"\")\n const [address, setAddress] = useState(\"\")\n const [refresh, setRefresh] = useState(false)\n const [currentTab, setCurrentTab] = useState(1)\n\n const isDesktopSize = useMediaQuery({ query: '(min-width: 744px)' })\n // const [isEditNotificationOpen, setIsEditNotificationOpen] = useState(false)\n\n useEffect(() => {\n // Set to user timezone to begin with\n let timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n setTimeZone(timeZone)\n }, [])\n\n // Updated timeZone via User UI\n const updateSelectedTab = (tabIndex) => {\n setCurrentTab(tabIndex)\n }\n\n // Updated timeZone via User UI\n const updateTimeZone = (newTimeZone) => {\n applyNewTimeRange(newTimeZone)\n }\n\n // Updating TimeRange with Child Dropdown\n const loadTimeRange = (incrementTime) => {\n setIncrementTime(incrementTime)\n \n if(isDefaultLoad == true && isTimeRange == false){\n applyNewTimeRange()\n setIsDefaultLoad(false)\n } else {\n setIsNewTime(true) \n }\n \n // If User selects Custom\n if(incrementTime == 0){\n setIsCustomRange(true)\n setIsTimeRange(false)\n } else {\n setIsCustomRange(false)\n setIsTimeRange(true) \n }\n }\n\n const applyNewTimeRange = (newTimeZone) => {\n // Manually trigger data reload\n\n history.push(`/portal/dashboard/0`) // Cancel any custom month info\n \n var freshEndTime = new Date().getTime()\n \n let freshStartTime = freshEndTime - (incrementTime * 1000)\n\n // Only add offset if in the Properties TimeZone\n if (newTimeZone && (newTimeZone !== Intl.DateTimeFormat().resolvedOptions().timeZone)) {\n const localOffset = new Date().getTimezoneOffset() * 60000; // getTimezoneOffset() returns in minutes so convert to milliseconds\n \n const offsetDifference = getTimeZoneOffset(newTimeZone) - (-localOffset) // Get difference - Local offset is negative if your local time is behind UTC\n \n const offset = 3600000\n setOffset(offsetDifference) \n setTimeZone(newTimeZone)\n } else {\n setOffset(0)\n }\n \n setIsNewTime(false)\n setIsTimeRange(false)\n setStartTime(freshStartTime)\n setEndTime(freshEndTime)\n setRefresh(!refresh)\n }\n\n const getTimeZoneOffset = (newTimeZone) => {\n\n const now = moment.tz(newTimeZone);\n\n // Get the offset in minutes and convert it to milliseconds\n // The offset is negative if the timezone is behind UTC, positive if ahead\n const offsetMilliseconds = now.utcOffset() * 60 * 1000;\n \n return offsetMilliseconds;\n\n }\n\n const loadCustomMonth = (month, year) => {\n let startOfMonth = new Date(Date.UTC(year, month, 1));\n let startUTCMilliseconds = startOfMonth.getTime();\n\n let startOfNextMonth = new Date(Date.UTC(year, month + 1, 1));\n // Subtract 1 millisecond to get the end of the current month\n let endOfMonth = new Date(startOfNextMonth.getTime() - 1);\n let endUTCMilliseconds = endOfMonth.getTime();\n\n history.push(`/portal/dashboard/${startUTCMilliseconds + 86400000}`)\n setStartTime(startUTCMilliseconds)\n setEndTime(endUTCMilliseconds - 1)\n // setIsCustomDate(false)\n setRefresh(!refresh)\n // reloadProperty()\n }\n\n\n useEffect(() => {\n let cancelled = false\n\n async function getProperties() {\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-properties', ``, init)\n if (response.success && !cancelled) {\n setProperties(response.data)\n setIsFirstLoad(false)\n }\n }\n getProperties()\n return () => {\n cancelled = true\n }\n }, [])\n\n const reloadProperty = () => {\n if(propertyDetails !== null){\n setPropertyDetails(null) // TODO: COMMENTED OUT THE RESET DUE TO UX - NO PROBLEMS?\n setSensorLabels([])\n const item = {\n key : propertyDetails.id\n }\n loadProperty(item) \n }\n }\n\n const loadProperty = async (item) => {\n\n if(item === null){\n // do nothing\n } else {\n setIsLoading(true)\n const token = (await Auth.currentSession()).getIdToken()\n const jwt = token.getJwtToken()\n const init = {\n headers: { Authorization: `Bearer ${jwt}` },\n }\n const response = await API.get('FrontendAPI-properties', `/${item.key}`, init)\n\n if (response.success) {\n setPropertyDetails(response.data)\n setRefresh(!refresh) // Put this back in because switching properties needed it\n\n const a = response.data.config.address\n const address = `${a.streetAddress} ${a.city} ${a.provinceState} ${a.country} ${a.postalZip}`\n setAddress(address)\n discoverTimeZone(address)\n setName(`${response.data.config.name}`)\n setExternalId(`${response.data.externalId}`)\n\n var sensorLabels = []\n if(response.data.linkedWingnuts.length !== 0){\n response.data.linkedWingnuts.forEach((wingnut)=>{\n if(wingnut.config && wingnut.config.sensors){\n Object.entries(wingnut.config.sensors).forEach(([key, val]) => {\n sensorLabels.push(val.label)\n })\n }\n })\n\n }\n setSensorLabels(sensorLabels)\n setIsLoading(false)\n }\n }\n }\n\n // Discover timezone of Property\n const discoverTimeZone = async (address) => {\n try {\n // Look up the latitude and longitude of the selected address\n const results = await geocodeByAddress(address);\n const { lat, lng } = results[0].geometry.location;\n \n // Get the timezone label and UTC offset for the location\n const timezoneData = await GetTimezoneFromLatLng(lat(), lng());\n const { label, timezoneLabel, offset } = timezoneData;\n \n // Update state with the selected timezone label\n setState({ value: timezoneLabel, label: label, offset: offset });\n } catch (error) {\n console.error('Error:', error);\n }\n };\n\n const toggleModule = (open, target) => {\n if(open){\n const element = isDesktopSize ? document.getElementById('top') : document.getElementById('cardTop');\n element.scrollIntoView({ behavior: 'smooth' });\n setTimeout(() => {\n // setIsEditNotificationOpen(false)\n }, 400)\n } else {\n // setIsEditNotificationOpen(true)\n setTimeout(() => {\n const element = document.getElementById(target);\n element.scrollIntoView({ behavior: 'smooth' });\n }, 100)\n }\n}\n\n // TODO: Old Custom Date Code?\n const loadCustomDate = (date) =>{\n\n var newEndTimeInSeconds = 0\n\n // Input could be a date object or UTC timestamp depending on who calls it \n if(typeof(date) !== Object){\n newEndTimeInSeconds = Math.floor(date / 1000)\n } else {\n newEndTimeInSeconds = Math.floor(date.getTime() / 1000)\n }\n\n let newStartTime = newEndTimeInSeconds - incrementTime\n\n setStartTime(newStartTime * 1000)\n setEndTime(newEndTimeInSeconds * 1000 - 1)\n setRefresh(!refresh)\n // reloadProperty()\n }\n\n return (\n \n \n {/*

{`${new Date(startTime).toISOString()} `}

\n

{'------->'}

\n

{ `${new Date(endTime).toISOString()}`}

*/}\n
\n\n {propertyDetails ? \n \n : null\n }\n\n \n\n {/* ----Wingnut Stats---- */}\n {\n propertyDetails && propertyDetails.linkedWingnuts.length !== 0\n ? Object.values(propertyDetails.linkedWingnuts).map((wingnut, index)=>{\n return \n })\n : null\n }\n\n {/* Tab Bar Menu */}\n {propertyDetails ? \n \n \n {updateSelectedTab(1)}}>\n System Overview\n \n \n \n {updateSelectedTab(2)}}>\n Boiler System\n \n \n \n {updateSelectedTab(3)}}>\n Domestic Hot Water\n \n \n \n\n {\n (() => {\n switch (currentTab) {\n case 1:\n return ;\n case 2:\n return ;\n case 3:\n return ;\n }\n })()\n }\n \n\n :\n null\n }\n\n
\n )\n \n}\n\nconst TestContainer = styled.div`\n display: flex;\n flex-direction: row;\n`\n\nconst OuterContainer = styled.div`\n /* border: 1px yellow dashed;; */\n background-color: ${COLORS.Base};\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n ${media.lessThan(\"743px\")`\n justify-content: center;\n padding-top: 10px;\n align-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst PrimaryContainer = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 1460px;\n margin-right: 30px;\n ${media.lessThan(\"743px\")`\n /* width: 90%; */\n align-self: center;\n flex-direction: column;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n `}\n`\n\nconst Card = styled.div`\n /* border: 1px red dashed; */\n display: flex;\n width: 100%;\n max-width: 1440px;\n flex-direction: row;\n margin-right: 20px;\n padding-bottom: 20px;\n padding-top: 20px;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n `\n\nconst Container = styled.div`\n /* border: 1px green dashed; */\n margin-right: 25px;\n display: flex;\n flex-direction: row;\n /* justify-content: space-between; */\n width: 100%;\n /* padding-bottom: 20px; */\n border-radius: 10px;\n`;\n\nconst HeaderText = styled.h2`\n /* border: 1px red dashed; */\n color: #384C72;\n text-align: center;\n font-family: Blinker;\n font-size: 26px;\n font-style: normal;\n font-weight: 600;\n line-height: 110%; /* 28.6px */\n letter-spacing: -0.26px;\n ${media.lessThan(\"743px\")`\n font-size: 20px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 22px;\n `}\n`\n\nconst BtnTab = styled.button`\n border: none;\n outline: none;\n display: flex;\n flex-direction: row;\n border-radius: 10px;\n background: ${COLORS.Primary};\n padding: 20px 25px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n /* margin-right: 20px; */\n ${media.lessThan(\"743px\")`\n padding: 20px 20px;\n `}\n ${media.between(\"744px\", \"large\")`\n padding: 20px 20px;\n `}\n`;\n\nconst BottomLeftInvertedRadius = styled.div`\n /* border: 1px red dashed; */\n background-color: transparent;\n height: 83px;\n width: 10px;\n border-bottom-left-radius: 12px;\n box-shadow: 0 12px 0 0 #0e1c36; /* This is where the magic happens! */\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"1170px\")`\n `}\n ${media.greaterThan(\"1171px\")`\n /* display: none; */\n `}\n`\n\nconst RightTabInvertedRadius = styled(BottomLeftInvertedRadius)`\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"1170px\")`\n display: none;\n `}\n ${media.greaterThan(\"1171px\")`\n `}\n`\n\nconst BottomRightInvertedRadius = styled.div`\n /* border: 1px red dashed; */\n background-color: transparent;\n height: 83px;\n width: 10px;\n border-bottom-right-radius: 12px;\n box-shadow: 0 12px 0 0 #0e1c36; /* This is where the magic happens! */\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"1170px\")`\n `}\n ${media.greaterThan(\"1171px\")`\n /* display: none; */\n `}\n`\n\n\n\n\n {/* */}","\nexport default function GetTimezoneFromLatLng(lat, lng) {\n const timestamp = Math.floor(Date.now() / 1000); // current timestamp in seconds\n const apiUrl = `https://maps.googleapis.com/maps/api/timezone/json?location=${lat},${lng}×tamp=${timestamp}&key=AIzaSyD7hBW1S5Xum-sZn_Z7JrHCgJP5suaMozU`;\n\n return fetch(apiUrl)\n .then((response) => response.json())\n .then((data) => {\n const timezoneLabel = data.timeZoneId;\n const utcOffset = data.rawOffset + data.dstOffset;\n\n const offsetSeconds = data.rawOffset + data.dstOffset;\n const offsetHours = offsetSeconds / 3600;\n const offsetSign = offsetHours > 0 ? '+' : '-';\n const offsetAbs = Math.abs(offsetHours);\n const offsetString = `Property Time - (GMT${offsetSign}${offsetAbs}) `;\n const offset = `(GMT${offsetSign}${offsetAbs}) `;\n const finalLabel = offsetString + timezoneLabel\n\n return { label: finalLabel, timezoneLabel: timezoneLabel, offset: offset};\n })\n .catch((error) => console.error('Error:', error));\n}","export default __webpack_public_path__ + \"static/media/Ellipse_crop.d2a78e3f.svg\";","export default __webpack_public_path__ + \"static/media/wingnut-UI-mockup.2d3a6458.png\";","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/LOGO_ALT.svg\"\nimport Image2 from \"./../../images/Ellipse_crop.svg\"\nimport Image3 from \"./../../images/wingnut-UI-mockup.png\"\nimport { Link } from \"react-router-dom\"\nimport Aos from \"aos\"\nimport \"aos/dist/aos.css\"\n\nconst Grid = styled.div`\n /* border: 1px blue dashed; */\n grid-area: 1 / 1 / 2 / 2;\n max-width: 1440px;\n display: flex;\n width: auto;\n height: auto;\n flex-direction: row;\n justify-self: center;\n align-content: center;\n margin-bottom: 20px;\n margin-left: 30px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n align-content: center;\n justify-content: center;\n margin-left: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst LeftInfoContainer = styled.div`\n /* border: 1px green dashed; */\n margin-top: 56.65px;\n width: auto;\n height: auto;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n /* z-index: 1; */\n ${media.lessThan(\"743px\")`\n width: 70%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: auto;\n max-width: 500px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Logo = styled.img`\n width: 157px;\n height: 45px;\n z-index: 0;\n transition-duration: 0.5s;\n :hover {\n transform: scale(1.2);\n }\n`\n\nconst HeaderText = styled.h1`\n /* border: 1px red dashed; */\n margin-top: 163px;\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 79.4322px;\n line-height: 66px;\n letter-spacing: -0.01em;\n color: rgb(255, 255, 255);\n\n ${media.lessThan(\"743px\")`\n font-size: 52px;\n flex-wrap: wrap;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 113px;\n font-size: 60px;\n `}\n`\n\nconst BlurbText = styled.p`\n margin-top: 32px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 300;\n font-size: 28px;\n line-height: 129.5%;\n letter-spacing: -0.01em;\n color: rgb(255, 255, 255);\n opacity: 0.5;\n flex-wrap: wrap;\n ${media.between(\"744px\", \"large\")`\n font-size: 20px;\n `}\n`\n\nconst BtnContainer = styled.div`\n /* border: 1px red dashed; */\n width: auto;\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n margin-top: 80px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n margin-top: 22px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BtnLogin = styled.button`\n width: 245px;\n height: 69.62px;\n border: none;\n background: #63c085;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 15px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n margin-right: 20px;\n margin-bottom: 10px;\n z-index: 0;\n color: black;\n transition-duration: 0.5s;\n :hover {\n opacity: 0.8;\n }\n ${media.lessThan(\"743px\")`\n width: 314px;\n height: 70px;\n margin-right: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 230px;\n height: 62px;\n margin-bottom: 10px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Ellipse = styled.img`\n position: absolute;\n width: auto;\n top: 0;\n right: 0;\n height: 827.33px;\n z-index: 0;\n overflow: hidden;\n ${media.lessThan(\"743px\")`\n display: none;\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n margin-left: 272px;\n `}\n`\n\nconst RightInfoContainer = styled.div`\n /* border: 1px red dashed; */\n width: 50%;\n height: auto;\n ${media.lessThan(\"743px\")`\n width: 70%;\n height: 450px;\n justify-self: center;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: auto;\n `}\n ${media.greaterThan(\"large\")`\n margin-top: 50px;\n `}\n`\n\nconst LandingImg = styled.img`\n /* border: 1px yellow dashed; */\n width: auto;\n height: 625.9px;\n ${media.lessThan(\"743px\")`\n width: auto;\n height: 386px;\n margin-top: 22px;\n overflow: none;\n justify-self: center;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: auto;\n height: 508px;\n margin-right: -200px;\n margin-top: 80px;\n\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default class LandingPage extends Component {\n componentDidMount() {\n Aos.init()\n }\n\n render() {\n return (\n \n \n \n \n \n Remote System Monitoring + Analytics\n \n \n Improve the reliability and safety of your mechanical system with Wingnut's remote monitoring platform\n \n \n LOG IN\n \n \n \n \n \n \n )\n }\n}\n","export default __webpack_public_path__ + \"static/media/ic_SaveMoney.a7bc283a.svg\";","export default __webpack_public_path__ + \"static/media/ic_PreventFailures.94737022.svg\";","export default __webpack_public_path__ + \"static/media/ic_OptimizeSystems.6b56fa3f.svg\";","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Icon1 from \"./../../images/ic_SaveMoney.svg\"\nimport Icon2 from \"./../../images/ic_PreventFailures.svg\"\nimport Icon3 from \"./../../images/ic_OptimizeSystems.svg\"\nimport Aos from \"aos\"\nimport \"aos/dist/aos.css\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Grid = styled.div`\n /* border: 1px yellow dashed; */\n grid-area: 2 / 1 / 3 / 2;\n display: flex;\n flex-direction: row;\n justify-content: center;\n height: auto;\n margin-top: 80px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-wrap: wrap;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Card = styled.div`\n height: 350px;\n width: 393px;\n background-color: #0c182f;\n border-radius: 50px;\n display: flex;\n flex-direction: column;\n align-self: center;\n z-index: 1;\n\n ${media.lessThan(\"743px\")`\n height: 233px;\n width: 308px;\n margin-bottom: 20px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 233px;\n width: 308px;\n margin-bottom: 20px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst CardMiddle = styled(Card)`\n margin-right: 30px;\n margin-left: 30px;\n`\n\nconst Icon = styled.img`\n height: 76px;\n width: 76px;\n margin-top: 38px;\n margin-left: 50px;\n ${media.lessThan(\"743px\")`\n height: 56px;\n width: 56px;\n margin-top: 32px;\n `}\n ${media.between(\"744px\", \"large\")`\n height: 56px;\n width: 56px;\n margin-top: 32px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h4`\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 30.3918px;\n line-height: 31px;\n margin-left: 50px;\n margin-top: 32px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n font-size: 23px;\n margin-top: 11px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 23px;\n margin-top: 11px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Blurb = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 300;\n font-style: normal;\n font-size: 20px;\n line-height: 129.5%;\n margin-left: 50px;\n margin-top: 10px;\n width: 260px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n opacity: 0.5;\n ${media.lessThan(\"743px\")`\n font-size: 14px;\n width: 243px;\n margin-top: 11px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 14px;\n width: 243px;\n margin-top: 11px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport class Features extends Component {\n componentDidMount() {\n Aos.init()\n }\n\n render() {\n return (\n \n \n \n Save Money\n \n Reduce labour time ensuring regulatory compliance (boiler specific and pressure vessel specific)\n \n \n \n \n Prevent Failures\n Receive automated alarms for system anomalies before small problems become big ones.\n \n \n \n Optimize Systems\n Switch to a predictive maintenance strategy by analyzing historic system data.\n \n \n )\n }\n}\n\nexport default Features\n","export default __webpack_public_path__ + \"static/media/Tech.d055cdac.svg\";","export default __webpack_public_path__ + \"static/media/IsoRender.1e59d5ed.svg\";","export default __webpack_public_path__ + \"static/media/ic_arrowRight.b735df26.svg\";","export default __webpack_public_path__ + \"static/media/Ellipse_hardware.daea2ec2.png\";","export default __webpack_public_path__ + \"static/media/IsoRender_medium.b1cf437e.svg\";","export default __webpack_public_path__ + \"static/media/IsoRender_small.847ada42.svg\";","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/Tech.svg\"\nimport Image2 from \"./../../images/IsoRender.svg\"\nimport Image3 from \"./../../images/ic_arrowRight.svg\"\nimport Image4 from \"./../../images/Ellipse_hardware.png\"\nimport Image5 from \"./../../images/IsoRender_medium.svg\"\nimport Image6 from \"./../../images/IsoRender_small.svg\"\nimport { Link } from \"react-scroll\"\nimport Aos from \"aos\"\nimport \"aos/dist/aos.css\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Grid = styled.div`\n /* border: 1px blue dashed; */\n grid-area: 3 / 1 / 4 / 2;\n max-width: 1440px;\n display: flex;\n width: auto;\n flex-direction: row;\n justify-self: center;\n align-content: center;\n margin-bottom: 100px;\n /* z-index: -1; */\n margin-left: 30px;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n margin-left: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-bottom: 106px;\n margin-left: 30px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TextContainer = styled.div`\n /* border: 1px green dashed; */\n width: auto;\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n ${media.lessThan(\"743px\")`\n width: 90%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 50%;\n `}\n\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TechImg = styled.img`\n width: 66px;\n height: 420px;\n align-self: center;\n margin-top: -200px;\n ${media.lessThan(\"743px\")`\n width: 43px;\n height: 271px;\n overflow: none\n `}\n ${media.between(\"744px\", \"large\")`\n width: 43px;\n height: 271px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderText = styled.h1`\n /* border: 1px red dashed; */\n margin-top: 73px;\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 52px;\n line-height: 57px;\n letter-spacing: -0.01em;\n /* z-index: 1; */\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n width: 80%;\n font-family: 'Blinker', sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 35px;\n line-height: 101.5%;\n letter-spacing: -0.01em;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst SpecSheetContainer = styled.div`\n /* border: 1px yellow dashed; */\n display: flex;\n height: 12px;\n flex-direction: row;\n align-content: center;\n margin-top: 28px;\n`\n\nconst Icon = styled.img`\n width: 13px;\n height: 11.38px;\n margin-right: 20px;\n align-self: center;\n`\n\nconst BtnSpecSheet = styled.div`\n background: none;\n cursor: pointer;\n outline: none;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 700;\n font-style: normal;\n font-size: 15px;\n letter-spacing: 0.05em;\n color: #63c085;\n align-self: center;\n ${media.lessThan(\"743px\")`\n `}\n`\n\nconst ImgContainer = styled.div`\n /* border: 1px yellow dashed; */\n width: auto;\n display: flex;\n flex-direction: column;\n align-content: center;\n padding-right: 20px;\n transition-duration: 2s;\n transition-timing-function: cubic-bezier(0.69, -0.33, 0.38, 1.76);\n :hover {\n transform: scale(1.1);\n }\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HardwareImg = styled.img`\n /* border: 1px blue dashed; */\n width: 757.3px;\n height: 537px;\n margin-top: 120px;\n ${media.lessThan(\"743px\")`\n overflow: none;\n width: auto;\n height: 244.64px;\n margin-top: 50px;\n margin-bottom: 50px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: auto;\n height: 339px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HardwareImg2 = styled.div`\n background-image: url(${Image2});\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n /* border: 1px blue dashed; */\n width: 757.3px;\n height: 537px;\n margin-top: 120px;\n ${media.lessThan(\"743px\")`\n background-image: url(${Image6});\n overflow: none;\n width: 345px;\n height: 244.64px;\n margin-top: 50px;\n margin-bottom: 50px;\n `}\n ${media.between(\"744px\", \"large\")`\n background-image: url(${Image5});\n width: 479px;\n height: 339px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Ellipse = styled.img`\n /* border: 1px blue dashed; */\n position: absolute;\n background-size: cover;\n width: 700px;\n height: auto;\n margin-top: 240px;\n resize: contain;\n align-self: center;\n justify-self: center;\n z-index: -1;\n overflow: none;\n ${media.lessThan(\"743px\")`\n width: 300px;\n height: auto;\n margin-top: 100px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 450px;\n height: auto;\n margin-top: 200px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport class Hardware extends Component {\n componentDidMount() {\n Aos.init()\n }\n\n render() {\n return (\n \n \n \n A turn-key solution that connects you to your mechanical system from anywhere.\n \n \n \n \n SEE FULL SPEC SHEET\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default Hardware\n","export default __webpack_public_path__ + \"static/media/DataPoints_scroll.388830ec.png\";","export default __webpack_public_path__ + \"static/media/DataPoints_scroll2.f997e8d9.png\";","export default __webpack_public_path__ + \"static/media/DataPoints_scroll3.474e8143.png\";","import React from \"react\"\nimport styled from \"styled-components\"\nimport Marquee from \"react-marquee-slider\"\nimport media from \"styled-media-query\"\nimport Image from \"./../../images/DataPoints_scroll.png\"\nimport Image2 from \"./../../images/DataPoints_scroll2.png\"\nimport Image3 from \"./../../images/DataPoints_scroll3.png\"\n\nconst SliderImage = styled.img`\n height: 70px;\n width: auto;\n margin-top: 10px;\n /* z-index: 0; */\n ${media.lessThan(\"743px\")`\n height: 62px;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n`\n\nfunction MarqueeSlider() {\n var Photos = [Image]\n var Photos2 = [Image2]\n var Photos3 = [Image3]\n\n return (\n
\n \n {Photos.map((item) => (\n \n ))}\n \n \n {Photos3.map((item) => (\n \n ))}\n \n \n {Photos2.map((item) => (\n \n ))}\n \n
\n )\n}\n\nexport default MarqueeSlider\n","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Image4 from \"./../../images/Tech.svg\"\nimport Aos from \"aos\"\nimport \"aos/dist/aos.css\"\nimport MarqueeSlider from \"./MarqueeSlider\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Grid = styled.div`\n /* border: 1px blue dashed; */\n grid-area: 4 / 1 / 5 / 2;\n display: flex;\n width: 100vw;\n flex-direction: column;\n justify-content: space-evenly;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n `}\n`\n\nconst TickerContainer = styled.div`\n height: 300px;\n z-index: 2;\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n `}\n`\n\nconst HeaderText = styled.h1`\n /* border: 1px red dashed; */\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 67.4322px;\n line-height: 53px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n align-self: center;\n ${media.lessThan(\"743px\")`\n width: 80%;\n text-align: center;\n font-size: 45px;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n font-size: 52px;\n `}\n`\n\nconst BlurbText = styled.p`\n margin-top: 20px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n font-style: normal;\n font-size: 20px;\n line-height: 129.5%;\n align-self: center;\n margin-bottom: 40px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n opacity: 0.5;\n ${media.lessThan(\"743px\")`\n width: 65%;\n text-align: center;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n `}\n`\n\nconst TechImg = styled.img`\n width: 66px;\n height: 420px;\n align-self: center;\n margin-left: 800px;\n margin-top: -60px;\n z-index: 1;\n ${media.lessThan(\"743px\")`\n width: 43px;\n height: 271px;\n overflow: none;\n margin-top: -140px;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 43px;\n height: 271px;\n margin-top: -140px;\n margin-right: 200px;\n `}\n`\n\nexport class Sliders extends Component {\n state = {\n move: false,\n }\n\n componentDidMount() {\n Aos.init()\n\n setTimeout(\n function () {\n var resizeEvent = new Event(\"resize\")\n window.dispatchEvent(resizeEvent)\n }.bind(this),\n 1000\n )\n }\n\n render() {\n return (\n \n Data at your fingertips\n Wingnut supports an endless variety of sensors and data types.\n\n \n \n \n\n \n \n )\n }\n}\n\nexport default Sliders\n","export default __webpack_public_path__ + \"static/media/ic_tool.9b024805.svg\";","export default __webpack_public_path__ + \"static/media/ic_shield.f87bd0f2.svg\";","export default __webpack_public_path__ + \"static/media/ic_bulb.d6877bf4.svg\";","export default __webpack_public_path__ + \"static/media/ic_lock.2e5f2c31.svg\";","export default __webpack_public_path__ + \"static/media/ic_dot_red.2f202613.svg\";","export default __webpack_public_path__ + \"static/media/ic_dot_yellow.dc866231.svg\";","export default __webpack_public_path__ + \"static/media/ic_dot_purple.83e1ec45.svg\";","export default __webpack_public_path__ + \"static/media/ic_dot_green.edea51f3.svg\";","export default __webpack_public_path__ + \"static/media/Wingnut_interface.1e6e2759.svg\";","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport Icon1 from \"./../../images/ic_tool.svg\"\nimport Icon2 from \"./../../images/ic_shield.svg\"\nimport Icon3 from \"./../../images/ic_bulb.svg\"\nimport Icon4 from \"./../../images/ic_lock.svg\"\nimport IconBullet1 from \"./../../images/ic_dot_red.svg\"\nimport IconBullet2 from \"./../../images/ic_dot_yellow.svg\"\nimport IconBullet3 from \"./../../images/ic_dot_purple.svg\"\nimport IconBullet4 from \"./../../images/ic_dot_green.svg\"\nimport Image4 from \"./../../images/Tech.svg\"\nimport ImgWingnutInterface from \"./../../images/Wingnut_interface.svg\"\nimport Aos from \"aos\"\nimport \"aos/dist/aos.css\"\nimport { COLORS } from \"../../styles/colors\"\n\nconst Grid = styled.div`\n /* border: 1px blue dashed; */\n grid-area: 5 / 1 / 6 / 2;\n width: 99%;\n\n justify-self: center;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-content: center;\n margin-bottom: 20px;\n margin-top: -140px;\n /* z-index: 0; */\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Card = styled.div`\n /* border: 1px green dashed; */\n max-width: 1440px;\n height: auto;\n width: 90%;\n border-radius: 50px;\n background-color: #0c182f;\n display: flex;\n flex-direction: column;\n align-self: center;\n ${media.lessThan(\"743px\")`\n margin-top: 100px;\n width: 90%;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 100px;\n width: 90%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderText = styled.h1`\n /* border: 1px red dashed; */\n width: 65%;\n margin-top: 50px;\n margin-left: 75px;\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 52.3918px;\n line-height: 53px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n margin-left: 0px;\n width: 70%;\n font-family: 'Blinker', sans-serif;\n font-size: 35px;\n line-height: 101.5%;\n align-self: center\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n font-size: 52px;\n width: 80%;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst BottomContainer = styled.div`\n /* border: 1px blue dashed; */\n display: flex;\n max-width: 1200px;\n width: 95%;\n flex-direction: row;\n justify-content: space-evenly;\n padding-left: 40px;\n margin-bottom: 114px;\n margin-top: 130px;\n flex-wrap: wrap;\n ${media.lessThan(\"743px\")`\n width: 80%;\n flex-direction: column;\n align-content: center;\n align-self: center;\n justify-content: center;\n margin-top: 54px;\n margin-bottom: 53px;\n padding-left: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: start;\n flex-direction: column;\n margin-top: 60px;\n margin-bottom: 94px;\n `}\n`\n\nconst DetailsContainer = styled.div`\n /* border: 1px green dashed; */\n width: auto;\n max-width: 750px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-self: flex-end;\n ${media.lessThan(\"743px\")`\n width: auto;\n margin-left: 0px;\n margin-right: 0px;\n justify-self: center;\n flex-direction: column;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-left: 50px;\n align-self: flex-start;\n `}\n`\n\nconst DetailRow = styled.div`\n display: flex;\n flex-direction: row;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n`\n\nconst SingleDetailContainer = styled.div`\n /* border: 1px yellow dashed; */\n width: 275px;\n display: flex;\n flex-direction: column;\n margin-right: 3px;\n margin-bottom: 51px;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n align-self: center;\n `}\n`\n\nconst TitleContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-content: center;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n `}\n ${media.between(\"744px\", \"large\")`\n flex-direction: column;\n `}\n`\n\nconst Title = styled.h1`\n /* border: 1px red dashed; */\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 300;\n font-size: 30px;\n line-height: 101.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n `}\n ${media.greaterThan(\"large\")`\n align-self: center;\n `}\n`\n\nconst Icon = styled.img`\n /* border: 1px green dashed; */\n height: 60px;\n width: 60px;\n margin-right: 30px;\n align-self: flex-start;\n ${media.lessThan(\"743px\")`\n margin-right: 0px;\n margin-left: -10px;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-right: 0px;\n margin-left: -10px;\n `}\n`\n\nconst BulletPointContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-top: 20px;\n`\n\nconst IconBullet = styled.img`\n height: 9px;\n width: 9px;\n align-self: center;\n margin-right: 20px;\n`\n\nconst BulletText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 400;\n font-style: normal;\n font-size: 23.6391px;\n line-height: 101.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n opacity: 0.5;\n`\n\nconst ImgWingnut = styled.img`\n /* border: 1px yellow dashed; */\n width: 429.47px;\n height: 479.23px;\n margin-bottom: 20px;\n ${media.lessThan(\"743px\")`\n width: 280px;\n height: auto;\n margin-top: 40px;\n margin-right: 0px;\n justify-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n margin-top: 80px;\n align-self: center;\n margin-right: 0px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst TechImg = styled.img`\n width: 66px;\n height: 420px;\n align-self: center;\n margin-left: 800px;\n margin-bottom: -140px;\n /* z-index: 1; */\n ${media.lessThan(\"743px\")`\n width: 43px;\n height: 271px;\n overflow: none;\n margin-top: -140px;\n margin-right: 0px;\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 43px;\n height: 271px;\n margin-top: -140px;\n margin-right: 200px;\n `}\n`\n\nexport class Details extends Component {\n render() {\n return (\n \n \n \n Wingnut interfaces with industry standard sensing equipment to provide universal system connectivity.\n \n \n \n \n \n \n \n Mechanical\n \n \n \n Hydronic Heating\n \n \n \n HVAC Equipment\n \n \n \n Domestic Hot Water\n \n \n \n Sprinkler Systems\n \n \n\n \n \n \n Safety\n \n \n \n Overflow Detection\n \n \n \n Flood Detection\n \n \n \n CO Detection\n \n \n \n Leak Detection\n \n \n \n\n \n \n \n \n Energy\n \n \n \n Electricity Consumption\n \n \n \n Natural Gas Consumption\n \n \n\n \n \n \n Access\n \n \n \n Entry and Exit\n \n \n \n Room occupancy\n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default Details\n","export default __webpack_public_path__ + \"static/media/Devices.656031bb.svg\";","export default __webpack_public_path__ + \"static/media/ic_dot_grey.e9d2d59c.svg\";","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport Image from \"./../../images/Devices.svg\"\nimport IconBullet1 from \"./../../images/ic_dot_grey.svg\"\n\nconst Grid = styled.div`\n /* border: 1px blue dashed; */\n grid-area: 6 / 1 / 7 / 2;\n display: flex;\n width: auto;\n flex-direction: column;\n justify-content: space-evenly;\n margin: 100px;\n justify-self: center;\n ${media.lessThan(\"743px\")`\n margin: 0px;\n width: 80%;\n justify-content: center;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-self: center;\n width: 95%;\n justify-content: start;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst HeaderText = styled.h1`\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: 600;\n font-size: 52px;\n line-height: 53px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n margin-left: 0px;\n width: 80%;\n font-size: 35px;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: center;\n font-size: 52px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Title = styled.h1`\n /* border: 1px red dashed; */\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 25.3918px;\n line-height: 26px;\n margin-top: 50px;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n`\n\nconst Icon = styled.img`\n width: 192.42px;\n height: 45.08px;\n left: 100px;\n margin-top: 30px;\n opacity: 0.5;\n`\n\nconst Line = styled.div`\n width: 90%;\n margin-top: 41px;\n opacity: 0.5;\n border: 1px solid ${COLORS.White};\n`\n\nconst Line2 = styled.div`\n width: 90%;\n margin-top: 41px;\n opacity: 0.5;\n border: 1px solid ${COLORS.White};\n ${media.lessThan(\"743px\")`\n `}\n ${media.between(\"744px\", \"large\")`\n display: none;\n `}\n ${media.greaterThan(\"large\")`\n display: none;\n `}\n`\n\nconst SpecsContainer = styled.div`\n /* border: 1px red dashed; */\n height: auto;\n display: flex;\n flex-direction: row;\n justify-content: start;\n ${media.lessThan(\"743px\")`\n flex-direction: column;\n justify-content: space-evenly;\n `}\n ${media.between(\"744px\", \"large\")`\n justify-content: start;\n `}\n`\n\nconst SpecsColumn = styled.div`\n /* border: 1px green dashed; */\n height: auto;\n width: 300px;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n padding: 40px;\n ${media.lessThan(\"743px\")`\n width: 80%;\n padding: 0px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 300px;\n padding: 20px;\n `}\n`\n\nconst BulletPointContainer = styled.div`\n /* border: 1px green dashed; */\n display: flex;\n flex-direction: row;\n margin-top: 10px;\n`\n\nconst IconBullet = styled.img`\n height: 9px;\n width: 9px;\n align-self: center;\n margin-right: 20px;\n`\n\nconst BulletText = styled.p`\n font-family: \"Roboto Condensed\", sans-serif;\n font-weight: 300;\n font-style: normal;\n font-size: 20px;\n line-height: 129.5%;\n letter-spacing: -0.01em;\n color: ${COLORS.White};\n opacity: 0.5;\n`\n\n// https://hackernoon.com/how-to-make-a-silky-smooth-scroll-in-react-5dj3xdl\n\nexport class TechSpecs extends Component {\n render() {\n return (\n \n Tech Specs\n Device Support\n \n \n \n \n Features\n \n \n Hardware and software watchdog timers\n \n \n \n Power, connectivity, and state LEDs\n \n \n \n Self-recovery from power outages\n \n \n \n Local data storage during network outages\n \n \n \n Remote software updates\n \n \n \n In-field provisioning\n \n\n \n\n Dimensions\n \n \n 32cm x 11cm x 5cm\n \n\n \n\n Weight\n \n \n 565g\n \n\n \n \n\n \n Mounting\n \n \n Mounting holes for screws/bolts\n \n\n \n\n Power Requirements\n \n \n 110V\n \n \n \n 600mA\n \n \n \n 60Hz\n \n\n \n\n Inputs\n \n \n 16 x 5V 100kΩ thermistor\n \n \n \n 16 x 24V 4-20mA current loop\n \n \n \n 12 x High impedance relay detect\n \n \n \n 4 x 5V digital input with 5V supply\n \n\n \n \n\n \n Connectivity\n \n \n Ethernet\n \n \n \n WiFi\n \n \n \n LTE gateway (additional cost)\n \n\n \n\n Features\n \n \n Thermistors\n \n \n \n Pressure Sensors\n \n \n \n Split-core Current Sensors\n \n \n \n Door sensor\n \n \n \n Window Sensor\n \n \n \n Leak detection sensor\n \n \n \n Occupancy Sensor\n \n \n \n Control relay state detection sensor\n \n \n \n Thermostat state detection sensor\n \n \n \n Aquastat state detection sensor\n \n \n \n CO sensor\n \n \n \n \n )\n }\n}\n\nexport default TechSpecs\n","export default __webpack_public_path__ + \"static/media/Tech_horizontal.464d85e9.svg\";","import React, { useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport styled from \"styled-components\"\nimport media from \"styled-media-query\"\nimport { COLORS } from \"../../styles/colors\"\nimport { ButtonSpinner } from \"./../custom/Spinner\"\n\nconst Form = styled.form`\n /* border: 1px blue dashed; */\n width: auto;\n display: flex;\n flex-direction: column;\n`\n\nconst Label = styled.label`\n /* border: 1px blue dashed; */\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 11px;\n line-height: 129.5%;\n letter-spacing: 0.18em;\n color: ${COLORS.White};\n margin-bottom: 8px;\n margin-top: 16px;\n`\n\nconst Input = styled.input`\n /* border: 1px blue dashed; */\n width: 453.23px;\n height: 49.65px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-size: 15px;\n letter-spacing: 0.1em;\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n padding: 10px;\n :focus {\n outline: blue;\n border: 1px solid blue;\n border-color: #719ece;\n }\n ${media.lessThan(\"743px\")`\n width: 260px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 300px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Textarea = styled.textarea`\n resize: none;\n width: 453.23px;\n height: 173px;\n outline: none;\n border: none;\n color: ${COLORS.White};\n font-family: \"Blinker\", sans-serif;\n font-style: normal;\n font-size: 15px;\n letter-spacing: 0.1em;\n font-weight: 400;\n background-color: #1d283e;\n border-radius: 8px;\n box-sizing: border-box;\n padding: 10px;\n :focus {\n outline: blue;\n border: 1px solid blue;\n border-color: #719ece;\n }\n ${media.lessThan(\"743px\")`\n width: 260px;\n `}\n ${media.between(\"744px\", \"large\")`\n width: 300px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nconst Button = styled.button`\n /* border: 1px blue dashed; */\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n width: 255.55px;\n height: 69.62px;\n margin-top: 44px;\n background-color: transparent;\n border: 2px solid #63c085;\n box-sizing: border-box;\n border-radius: 36px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: bold;\n font-size: 15px;\n line-height: 129.5%;\n text-align: center;\n letter-spacing: 0.05em;\n color: ${COLORS.White};\n align-self: flex-end;\n /* start of Hover code */\n transition-duration: 0.5s;\n :hover {\n background-color: #63c085;\n }\n /* end of hover code */\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n `}\n`\n\nconst Error = styled.p`\n /* border: 1px blue dashed; */\n color: red;\n margin-top: 5px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 11px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n`\n\nconst Success = styled.p`\n /* border: 1px blue dashed; */\n color: green;\n margin-top: 10px;\n font-family: \"Roboto Condensed\", sans-serif;\n font-style: normal;\n font-weight: normal;\n font-size: 11px;\n line-height: 129.5%;\n letter-spacing: 0.05em;\n width: 255.55px;\n align-self: flex-end;\n text-align: center;\n ${media.lessThan(\"743px\")`\n align-self: center;\n `}\n ${media.between(\"744px\", \"large\")`\n align-self: center;\n `}\n`\n\nconst ButtonText = styled.p`\n /* border: 1px red dashed; */\n font-family: Roboto Condensed;\n font-style: normal;\n font-weight: bold;\n font-size: 16px;\n text-align: center;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: ${COLORS.White};\n ${media.lessThan(\"743px\")`\n font-size: 15px;\n `}\n ${media.between(\"744px\", \"large\")`\n font-size: 15px;\n `}\n ${media.greaterThan(\"large\")`\n `}\n`\n\nexport default function ContactUs() {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isSubmitSuccessful },\n } = useForm({ reValidateMode: \"onSubmit\" })\n\n const [disabled, setDisabled] = useState(false)\n const [showSpinner, setShowSpinner] = useState(false)\n\n const onSubmit = async (data) => {\n setDisabled(true)\n setShowSpinner(true)\n\n try {\n let result = await fetch(\n // \"https://10ww8j15w1.execute-api.us-east-2.amazonaws.com/prod/sendcontactus\", // info@spherescreative.com\n \"https://3qvbz9e2j8.execute-api.us-west-2.amazonaws.com/prod/messages\", // Wingnut\n {\n method: \"post\",\n mode: \"no-cors\",\n headers: {\n Accept: \"application/json\",\n \"Content-type\": \"application/json\",\n },\n body: JSON.stringify({\n fullname: data.fullname,\n company: data.company,\n email: data.email,\n message: data.message,\n }),\n })\n reset({ fullname: \"\", company: \"\", email: \"\", message: \"\" })\n setDisabled(false)\n setShowSpinner(false)\n } catch (e) {\n console.log(\"Error\", e)\n setDisabled(false)\n setShowSpinner(false)\n }\n }\n\n return (\n
\n
\n \n \n {errors.fullname && Username required}\n\n \n \n\n \n ()[\\]\\\\.,;:\\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,}))$/,})}\n />\n {errors.email && Email required and must be valid}\n\n \n