{"version":3,"sources":["components/theme/colors.ts","components/theme/Theme.js","components/utils/loader.tsx","apiAccessToken.ts","auth/FirebaseApp.tsx","components/utils/icons/PriceMapLogoWithText.svg","components/utils/LinkWithoutStyling.js","components/utils/styledButtonV2.tsx","components/account/PageLayout.js","auth/LogOut.js","components/utils/SectionInterspace.tsx","components/utils/bold.js","components/utils/boxShadow.js","components/account/MessageCard.js","components/account/GenericError.js","components/theme/mediaQueries.js","components/redirectToOffer/RedirectToOfferWithBanner.tsx","components/redirectToOffer/RedirectToOffer.tsx","components/utils/icons/GoogleButtonContent.svg","auth/AuthPageLayout.tsx","auth/LogInWithGoogleButton.tsx","auth/old-password-flow/CreateAccount.tsx","auth/isValidEmail.ts","stringIsNullOrWhitespace.ts","auth/ManageUserEmail.tsx","components/OfferType.ts","components/createFilterForm/Fade.tsx","components/City.ts","components/createFilterForm/SelectOfferTypeStep.tsx","components/createFilterForm/SelectCityStep.tsx","components/helpers.ts","components/ApiCaller.js","components/publicFilters/api.ts","components/publicFilters/useFilterCriteriaChecking.ts","components/publicFilters/useDebounce.ts","components/publicFilters/getEmptyFilterValues.ts","components/OfferOrigin.ts","components/publicFilters/NumberOfOffersText.tsx","components/RoomsNumber.ts","components/AdditionalFilterProperty.ts","components/utils/searchCriteria/autocompletePicker.js","components/createFilterForm/DistrictsAutocompletePicker.tsx","components/utils/icons/AiStars.svg","components/createFilterForm/AdditionalPropertiesSection.tsx","components/createFilterForm/SelectDetailsStep.tsx","components/createFilterForm/CreateFilterForm.tsx","auth/useFilterRegistration.tsx","auth/CreateFilter.tsx","isInAppBrowser.ts","auth/CreateAccountWithFilter.tsx","auth/tracking.ts","auth/AccountWithFilterCreated.tsx","components/Home.js","components/Page.ts","components/help/SearchHelp.tsx","components/help/FavoriteOffersHelp.tsx","components/utils/Margin.ts","components/utils/Message.tsx","components/help/FiltersHelp.tsx","components/help/StatisticsHelp.tsx","redux/actionTypes.js","redux/actions/navigationActions.js","hooks/useCurrentPage.ts","components/help/GeneralHelp.tsx","components/help/IntroductionVideo.tsx","components/help/Help.tsx","components/utils/styledA.js","components/utils/styledButton.js","components/utils/confirmModal.js","components/utils/toggle.js","components/MaxOffersAge.ts","components/filters/EmailNotificationsToggle.js","components/utils/SvgIcon.tsx","components/utils/hoverableIcon.tsx","components/filters/FilterCardBackground.tsx","components/filters/FilterCard.js","components/Market.ts","components/PremisesPurpose.ts","components/PropertyType.ts","components/filters/getDisplayedFilterProperties.js","components/filters/FilterEntry.js","components/filters/FiltersList.js","hooks/useAsyncData.ts","components/filters/NewFilterCard.js","components/filters/Filters.js","components/OfferFlag.ts","components/SessionStorageFunctions.ts","components/localStorageFunctions.ts","components/tsHelpers.ts","components/favoriteOffers/sessionStorageFunctions.ts","components/statistics/sessionStorageFunctions.ts","components/enums.js","components/utils/searchCriteria/FlexDiv.js","components/statistics/charts/components/ChartCardComponents.js","components/statistics/charts/components/SideButtons.js","components/canDivideByDistricts.js","components/statistics/charts/components/DivideBySelect.js","components/StatisticsTimeFrame.ts","components/utils/SwitchButton.js","components/statistics/charts/components/MarketSwitch.js","components/statistics/charts/components/OfferTypeSwitch.js","components/statistics/charts/components/ChartLegend.js","components/statistics/charts/components/Branding.tsx","components/statistics/charts/components/XyPlot.js","components/statistics/charts/components/XyPlotWithLegend.js","components/statistics/charts/seriesColors.js","components/statistics/charts/components/TimeFrameSelect.js","components/statistics/charts/averagePrice/AveragePriceTimeFrameSelect.js","components/statistics/charts/averagePrice/AveragePriceTypeSelect.js","components/statistics/charts/components/ChartDescription.js","components/statistics/charts/averagePrice/AveragePriceChart.js","components/statistics/charts/ReturnOfInvestmentChart.js","components/statistics/charts/marketSaturation/CurrentMarketSaturationChart.js","components/statistics/charts/nbpAveragePrice/SidebarSelects.js","components/statistics/charts/nbpAveragePrice/NbpWarningMessage.js","components/statistics/charts/nbpAveragePrice/NbpAveragePriceChart.js","redux/actions/statisticsActions.js","components/statistics/charts/marketSaturation/MarketSaturationChart.js","components/DefaultSearchConfiguration.ts","redux/actions/searchActions.ts","components/utils/clearIcon.tsx","components/utils/searchCriteria/tagPicker.js","components/utils/ColumnWithoutPadding.js","components/utils/RowWithoutMargin.js","components/utils/searchCriteria/EnumSelectPopup.js","components/utils/searchCriteria/SelectableButton.tsx","components/utils/searchCriteria/MainSelectableButton.js","components/utils/searchCriteria/MainEnumSelect.js","components/utils/searchCriteria/CheckboxSelectPopup.js","components/utils/searchCriteria/SmallSelectableButton.js","components/utils/searchCriteria/SmallCheckboxSelect.js","components/utils/searchCriteria/SmallEnumSelect.js","components/utils/divider.js","components/utils/searchCriteria/EmptyValueToggle.tsx","components/utils/searchCriteria/RangeInputPopup.js","components/utils/searchCriteria/SmallRangeInputSelect.tsx","components/search/IncludeEmptyDistrictFooter.tsx","components/search/SearchCriteriaForm.js","components/LastOfferActivity.ts","components/OfferStatus.ts","components/search/LastOfferActivityFilter.tsx","components/search/offersList/OffersListHeader.tsx","components/search/offersList/MarketIcon.tsx","components/search/offersList/OfferOriginIcon.tsx","components/search/offersList/TableRow.tsx","redux/actions/offerFlagActions.ts","components/search/ShowMoreBar.tsx","components/search/offersList/DuplicatesGrid.tsx","components/search/offersList/OfferDescription.tsx","components/formatPhoneNumber.ts","components/search/offersList/PhoneNumbersSegment.tsx","components/Floor.ts","components/search/offersList/OfferDetails.tsx","components/search/offersList/OfferFlagIcons.tsx","components/search/offersList/getOfferInfoToDisplay.ts","components/search/offersList/OfferTableEntry.tsx","components/utils/icons/PlaceHolder.svg","components/search/offersList/OffersTable.tsx","components/search/offersList/mobile/OfferImage.tsx","components/search/offersList/mobile/priceAndSizeFormatting.tsx","components/search/offersList/mobile/getLocalization.ts","components/search/offersList/mobile/PhoneNumber.tsx","components/search/offersList/mobile/BasicOfferInfo.tsx","components/search/offersList/mobile/ShowOfferButton.tsx","components/search/offersList/mobile/OfferDescriptionMobile.tsx","components/search/offersList/mobile/ModalComponent.tsx","components/search/offersList/mobile/OfferCard.tsx","components/search/offersList/mobile/MobileOffersList.tsx","components/search/offersList/OffersList.tsx","components/search/Paging.tsx","components/search/SearchPaging.js","redux/actions/currentFilterActions.js","components/utils/clickableSpan.js","components/search/FilterContextMessage.js","components/search/SaveFilterChangesModal.js","components/search/SaveButtons.js","components/utils/icons/MagnifyingGlass.svg","components/search/NoSearchResultsMessage.tsx","components/utils/ContainerWithoutPadding.ts","components/search/Search.js","components/utils/icons/MagnifyingGlassWithStar.svg","components/favoriteOffers/NoFavoriteOffersMessage.js","components/favoriteOffers/FavoriteOffersList.tsx","components/favoriteOffers/FlagSelect.tsx","components/favoriteOffers/FavoriteOffersSearchCriteriaForm.tsx","components/favoriteOffers/FavoriteOffers.tsx","components/utils/searchCriteria/MainCheckboxSelect.js","components/statistics/StatisticsSearchCriteriaForm.js","components/statistics/Statistics.js","components/statistics/charts/nbpAveragePrice/NbpAveragePriceChartSwitch.js","components/account/api.ts","components/utils/icons/EmailSent.svg","components/account/Layout.ts","components/account/AgencyInfo.tsx","components/account/MyAccount.tsx","components/account/PasswordChangeRequested.js","components/publicFilters/Topbar.tsx","components/publicFilters/showErrorAlertFromFilterResponseStatus.ts","components/publicFilters/FilterCreatedMessage.tsx","components/publicFilters/AddFilterModal.tsx","components/publicFilters/AddFilterButton.tsx","components/publicFilters/filtersList/FilterProperties.tsx","components/publicFilters/DeleteFilterModal.tsx","components/publicFilters/calculateDaysToDate.tsx","components/publicFilters/filtersList/FilterCard.tsx","components/publicFilters/filtersList/FiltersList.tsx","components/publicFilters/PageContainer.tsx","components/publicFilters/FiltersOnlyPage.tsx","components/adminPanel/api.ts","components/adminPanel/Grid.tsx","components/adminPanel/DeleteMemberButton.tsx","components/adminPanel/DeleteAgencyButton.tsx","components/adminPanel/AgencyDetails.tsx","components/adminPanel/AdminPanel.tsx","components/adminPanel/AllAgenciesTable.tsx","components/adminPanel/Agencies.tsx","components/adminPanel/AdminStatistics.tsx","components/adminPanel/AddEmployeeForm.tsx","components/adminPanel/Employees.tsx","components/managementPanel/api.ts","components/managementPanel/DeleteUserButton.tsx","components/managementPanel/DisplaySaleUsersDialog.tsx","components/managementPanel/ManagementPanel.tsx","components/utils/icons/PriceMapLogo.svg","components/managementPanel/AddAgencyMemberModalButton.tsx","components/managementPanel/Grid.tsx","components/managementPanel/AgencyMembersTable.tsx","components/managementPanel/ManagementPanelAgencyDetails.tsx","components/account/AcceptTermsOfService.tsx","components/navigation/Topbar.js","components/navigation/Sidebar.js","components/Layout.js","ProtectedPage.tsx","components/redirectToAdTarget/RedirectToAdTarget.tsx","auth/AcceptTosCheckbox.tsx","auth/AcceptAllAgreementsCheckbox.tsx","auth/AcceptCreditContactCheckbox.tsx","auth/AddPersonalDetails.tsx","auth/LogIn.tsx","auth/SignInLinkSent.tsx","auth/VerifyEmail.tsx","AppRoutes.tsx","redux/reducers/currentSearchCriteriaReducer.ts","redux/reducers/searchResultReducer.ts","redux/reducers/lastSearchedCriteriaReducer.ts","redux/reducers/navigationReducer.js","redux/reducers/statisticsReducer.js","redux/reducers/currentFilterReducer.js","redux/reducers/pagingReducer.js","App.tsx","redux/configureStore.ts","registerServiceWorker.js","index.js"],"names":["colors","white","lighterGray","lightGray","slightlyLightGray","gray","slightlyDarkGray","almostDarkGray","darkGray","veryDarkGray","lightPurple","deepPurple","veryVeryDark","lighterVeryVeryDark","blueishGray","lightBlue","deepBlue","facebookBlue","greenyBlue","lightGreeny","brightGreen","brightRed","lightRed","burgundy","coral","gold","black","priceMapSalmon","priceMapLightSalmon","priceMapDarkNavyBlue","priceMapCream","priceMapPink","gradients","priceMapPinkToSalmon","concat","Theme","_ref","children","React","createElement","ThemeProvider","theme","Wrapper","styled","div","_templateObject","_taggedTemplateLiteral","$fullPage","undefined","StyledRsuiteLoader","RsuiteLoader","_templateObject2","Loader","_ref2","_ref2$content","content","_ref2$isLoading","isLoading","_ref2$fullPage","fullPage","_ref2$children","backdrop","getAccessTokenSilently","apiAccessToken","func","app","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","auth","getAuth","onAuthStateChanged","user","getIdToken","_style","_g","googleAuthProvider","GoogleAuthProvider","LinkWithoutStyling","Link","Button","RsuiteButton","active","$backgroundColor","_ref3","$textColor","_ref4","$borderColor","_ref5","_ref6","ChildrenContainer","span","StyledButtonV2","_ref7","onClick","textColor","_ref7$backgroundColor","backgroundColor","borderColor","href","className","dataTestId","_ref7$disabled","disabled","to","Fragment","linkWrapper","PageContainer","CenteredDiv","CenteredText","_templateObject3","Header","_templateObject4","Description","_templateObject5","ActionButton","_templateObject6","LogOut","_useState","useState","_useState2","_slicedToArray","setLoggedOut","useEffect","signOut","then","currentUser","window","location","replace","SectionInterspace","props","size","Bold","LightBoxShadow","css","Card","MessageContainer","MessageCard","_excluded","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgPriceMapLogoWithText","svgRef","title","titleId","id","xmlns","xmlnsXlink","x","y","viewBox","style","enableBackground","xmlSpace","ref","type","d","ForwardRef","GenericError","PriceMapLogo","height","origin","minWidthMediaQuery","minWidth","breakpoints","fullSize","tablet","mobile","mobileOnly","Section","LogoWithButton","RedirectToOfferWithBanner","offerUrl","bannerUrl","bannerTargetUrl","countDownInSeconds","counter","setCounter","countDown","setTimeout","width","src","maxWidth","Container","RedirectToOffer","searchParams","URLSearchParams","search","offerUrlQueryParam","get","bannerUrlQueryParam","bannerTargetQueryParam","startsWith","Navigate","decodeURI","decodedBanner","decodedBannerTarget","_path","_defs","AuthPage","AuthPageContentCard","SvgGoogleButtonContent","fill","clipPath","fillRule","clipRule","fillOpacity","transform","LogInWithGoogleButton","onSuccess","onError","setIsLoading","loginWithGoogle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","signInWithPopup","t0","finish","stop","border","padding","GoogleButton","genericErrorReason","CreateAccount","email","setEmail","_useState3","_useState4","password","setPassword","_useState5","_useState6","_useState7","_useState8","error","setError","navigate","useNavigate","createAccount","strMessage","createUserWithEmailAndPassword","sendEmailVerification","url","message","abrupt","console","log","canSubmit","display","flexDirection","alignItems","gap","onSubmit","e","preventDefault","fontSize","textAlign","Divider","Input","value","onChange","placeholder","color","fontWeight","marginRight","appearance","isValidEmail","stringIsNullOrWhitespace","toString","trim","ReenterEmailForm","loading","autoFocus","ManageUserEmail","step","setStep","continueUrl","completePasswordlessSignIn","useCallback","userEmail","parsedContinueUrl","navigateTo","isSignInWithEmailLink","URL","ex","getContinueUrl","signInWithEmailLink","delete","pathname","_x","OfferType","defaultStyle","transition","opacity","transitionStyles","entering","entered","exiting","exited","Fade","stateKey","nodeRef","useRef","SwitchTransition","mode","CSSTransition","addEndListener","done","current","addEventListener","classNames","state","_objectSpread","City","getDisplayedOfferType","offerType","Sale","Rental","SelectOfferTypeStep","onSelect","displayRegisterLink","StepDescription","marginBottom","borderWidth","getDisplayedCity","city","Krakow","Warszawa","Wroclaw","Poznan","Rzeszow","Lodz","Gdansk","Sopot","Gdynia","Lublin","Kielce","Katowice","Bydgoszcz","Torun","Bialystok","Opole","Szczecin","Olsztyn","ZielonaGora","JeleniaGora","Radom","Czestochowa","BielskoBiala","Sosnowiec","Zabrze","RudaSlaska","Rybnik","Bytom","Chorzow","Gliwice","DabrowaGornicza","SiemianowiceSlaskie","Tychy","GorzowWielkopolski","Elblag","Plock","Koszalin","Tarnow","Wloclawek","Walbrzych","SelectCityStep","onBack","setSearch","filteredCities","filter","toLowerCase","flexWrap","marginTop","map","getDefaultSearchCriteria","defaultSearchConfiguration","propertyType","priceFrom","priceTo","includeEmptyPrice","sizeFrom","sizeTo","includeEmptySize","pricePerSquareMeterFrom","pricePerSquareMeterTo","includeEmptyPricePerSquareMeter","market","districts","includeEmptyDistrict","includedWords","excludedWords","maxOffersAge","roomsNumbers","purposes","handleIncorrectNumber","isValidNumber","showAlert","Alert","info","showGenericErrorAlert","getDisplayedRange","from","includeEmpty","displayedRange","formatNumber","getDisplayedEnumArray","values","getNameFunction","newValues","_toConsumableArray","sort","a","b","join","prettifyNumber","formatAndRoundNumber","valueToDisplay","suffix","Math","round","number","toLocaleString","parsedInt","parseInt","isNaN","formatDate","date","month","getMonth","day","getDate","year","getFullYear","formatDateShort","substring","ApiCaller","_classCallCheck","_createClass","_request","method","parameters","token","headers","body","requestOptions","sent","Authorization","JSON","stringify","fetch","_x2","_x3","_requestLegacy","_callee2","response","jsonText","_context2","request","ok","text","parse","reviveDateTime","_x4","_x5","_x6","_get","_callee3","_context3","requestLegacy","_x7","_post","_callee4","_context4","_x8","_x9","_delete2","_callee5","_context5","_x10","_x11","_put","_callee6","_context6","_x12","_x13","_","test","Date","apiCaller","isGetFiltersResultFilterDto","Array","isArray","name","creationDate","searchCriteria","sendEmailNotifications","getFilters","data","Error","updateFilter","updatedFilter","json","status","deleteFilter","isGetDistrictsResultDto","isEveryItemString","forEach","getDistricts","addFilter","checkFilterCriteria","criteria","offersInLastWeek","createFilterAtRegistration","phoneNumber","firstName","acceptedTos","acceptedCredit","acceptedCreditContact","extendFilterEmailNotifications","_callee7","filterId","_context7","loginPasswordless","_ref8","_callee8","redirectUrl","_context8","statusText","exceedsMaxNumberOfOffers","result","useFilterCriteriaChecking","filterValues","isFilterCheckLoading","filterCheckResult","setFilterCheckResult","filterCheckError","setFilterCheckError","_useDebounce","delay","debouncedValue","setDebouncedValue","debounceInProgress","setDebounceInProgress","timer","clearTimeout","useDebounce","_useDebounce2","debouncedFilter","chosenDistricts","additionalFilterProperties","catch","OfferOrigin","Background","NumberOfOffers","avgDailyOffers","RoomsNumber","getDisplayedOfferOrigin","Private","Agency","Developer","AdditionalFilterProperty","getDisplayedRoomsNumber","roomsNumber","One","Two","Three","FourOrMore","StyledTagPicker","RsuiteTagPicker","StyledMenuWrapper","$checkedCheckboxColor","$selectedItemBackgroundColor","AutocompletePicker","label","renderExtraFooter","_ref5$borderColor","_ref5$primaryColor","primaryColor","_ref5$secondaryColor","secondaryColor","_ref5$dataTestId","minHeight","cleanable","tagProps","renderMenu","menu","_menu$props","RsuiteIcon","icon","spin","DistrictsAutocompletePicker","availableDistricts","setDistricts","districtsLoading","setDistrictsLoading","_fetchDistricts","fetchDistricts","footer","newValue","_path2","_path3","_path4","_path5","_path6","_path7","_path8","getDisplayedAdditionalFilterProperty","withBalcony","withElevator","isNearGreen","isNearCenter","withAirConditioning","isCalmNeighborhood","isPetsFriendly","isBright","isNearSchool","withGarden","withParking","withStorageOrUtility","isDeveloperState","isPremium","SvgAiStars","TagButton","selected","AdditionalPropertiesSection","setValues","showAll","setShowAll","_useMemo","useMemo","allTags","v","Number","slice","_useMemo2","topTags","additionalTags","includes","background","borderRadius","paddingLeft","justifyContent","AiStarsIcon","paddingBottom","Animation","Collapse","in","Text","RoomsNumberButton","IconButton","Step","SelectDetailsStep","setFilter","userSubmitted","setUserSubmitted","_useFilterCriteriaChe","roomNumberClick","onNumericValueChange","field","_defineProperty","circle","InputNumber","Toggle","checked","withIncludeEmptyFieldsCalculated","StepContainer","CreateFilterForm","onStateChange","_ref$displayRegisterL","chooseOfferType","chooseCity","chooseDetails","paramNames","filterParamNames","useFilterRegistration","serializeFilterToQueryString","currentValue","encodeURIComponent","replaceAll","getOffersInLastWeek","offersParam","num","getFirstName","param","getRegistrationQueryParameters","goToPersonalDetailsStep","goToEmailStep","phoneNumberParam","firstNameParam","acceptedTosParam","acceptedCreditParam","filterParam","tryDecodeRegistrationValues","obj","currentParameterName","getAll","decode","decodeURIComponent","_unused","tryDecodeFilter","CreateFilter","_useFilterRegistratio","_useSearchParams","useSearchParams","_useSearchParams2","setSearchParams","offerTypeParam","getCityFromParam","getOfferTypeFromParam","checkFilterCriteriaResult","_x$city$toString","_x$city","_x$offerType$toString","_x$offerType","isInAppBrowser","userAgent","navigator","regex","RegExp","Boolean","match","CreateAccountWithFilter","onAccountCreatedWithEmail","baseUrl","registrationParams","onSignedInWithGoogle","tracking","category","actions","exceptionThrown","personalDetailsFormOpened","personalDetailsFormFinished","accountCreated","AccountWithFilterCreated","setIsError","_createFilter","numberOrNull","ReactGA","event","action","createFilter","Page","Home","getDisplayedPage","Search","FavoriteOffers","Filters","Statistics","Help","MyAccount","SearchHelp","FavoriteOffersHelp","Margin","SmallMargin","StyledMessage","$textAlign","Message","_ref3$isVisible","isVisible","_ref3$backgroundColor","FiltersHelp","StatisticsHelp","setCurrentPage","setSearchResult","setSearchResultOffers","updateLastSearchedCriteria","updateCurrentSearchCriteria","updateCurrentFilter","loadingOffersStarted","loadingOffersFinished","setLastOfferActivity","setSearchPageNumber","openSaveFilterChangesModal","closeSaveFilterChangesModal","expandSidebarOnMobile","hideSidebarOnMobile","updateStatisticsSearchCriteria","resetStatisticsSearchCriteria","setChartState","actionTypes","currentPage","document","payload","useCurrentPage","page","dispatch","useDispatch","_setPage","setPage","GeneralHelp","IntroductionVideo","frameBorder","allow","allowFullScreen","HelpPagePanel","Panel","PanelHeader","header","collapsible","bordered","StyledA","StyledIcon","StyledRsuiteButton","withConfig","shouldForwardProp","prop","isFaded","StyledButton","iconColor","_ref3$disabled","_ref3$isFaded","_ref3$margin","margin","_ref3$href","_ref3$target","styledIcon","defaultSize","StyledTitle","Modal","Title","StyledModal","ConfirmModal","canConfirm","onConfirm","onShow","onHide","show","Body","Footer","Row","GlobalContainer","InputContainer","input","backgroundColorChecked","backgroundColorUnchecked","sliderSize","Slider","_ref9","_ref10","_ref11","_ref12","backgroundColorButton","Label","_ref13","defaultProps","MaxOffersAge","EmailNotificationsToggle","isChanging","showModal","setShowModal","letterA","path","LetterD","LetterP","Circle","SvgIcon","_iconProperties","_iconProperties2","iconProperties","sizeInPx","StyledRsuiteIcon","$color","$colorOnHover","StretchedDiv","IconWrapper","ChildrenWrapper","HoverableIcon","colorOnHover","_ref5$rsuiteIcon","rsuiteIcon","_ref5$hoverText","hoverText","_ref5$size","iconElement","Whisper","trigger","speaker","Tooltip","placement","whisperWrapper","FilterCardBackground","MainContainer","IconsWrapper","TitleText","SubtitleText","PaddedContainer","_templateObject7","_templateObject8","FilterCard","subtitle","renderTitle","renderEditButton","onDelete","Market","getDisplayedMaxOffersAge","age","oneDay","threeDays","oneWeek","PremisesPurpose","getDisplayedMarket","Primary","Aftermarket","PropertyType","getDisplayedPurpose","purpose","Office","Services","Commercial","Gastronomy","Hotel","Warehouse","Industrial","ParameterParagraph","pushIfShouldBeVisible","propertiesToDisplay","fieldName","fieldValue","push","getDisplayedPropertyType","Apartment","Premises","FilterEntry","onNotificationSwitchChange","renderFooter","isDeleteModalVisible","setIsDeleteModalVisible","onDeleteConfirmed","updatedfilter","districtText","getDisplayedProperties","EntriesWrapper","FiltersList","filters","areFiltersLoading","onFilterDelete","renderNewFilterCard","sortedFilters","useAsyncData","getDataAsync","initialState","errorHandler","dependenciesArray","setData","refreshCounter","setRefreshCounter","fetchData","BigParagraph","p","DescriptionParagraph","StyledCardBackground","NewFilterCard","Icon","OfferFlag","_useAsyncData","_useAsyncData2","refreshFilters","onFilterUpdate","updateResult","put","getSearchUrl","currentSearchCriteriaPath","rootPath","saveCurrentSearchCriteriaInSessionStorage","saveInSessionStorage","toSave","serialized","sessionStorage","setItem","getFromSessionStorage","getItem","removeFromSessionStorage","removeItem","GetEnumValues","enumType","sessionStoragePath","getFavoriteOffersSearchCriteriaFromSessionStorage","object","offerFlag","instanceOfFavoriteOffersSearchCriteria","getStatisticsSearchCriteriaFromSessionStorage","instanceOfStatisticsSearchCriteria","filterChangeType","divideBy","nbpPriceType","transactionPrice","offerPrice","nbpStatisticsTimeFrame","lastYear","sinceBeginning","nbpDivideBy","averagePriceType","priceTotal","pricePerMeter","getDisplayedDivideBy","getDisplayedNbpPriceType","priceType","getDisplayedNbpDivideBy","FlexDiv","StyledCard","ChartCard","_ref$isLoading","CardHeader","ChartContainer","HeaderButtonsContainer","SideButtonsContainer","StyledSideButton","isLit","SideButton","isSelected","disabledTooltipText","RsuiteWhisper","RsuiteTooltip","SideButtonsLabel","canDivideByDistricts","selectedDistricts","StatisticsTimeFrame","DivideBySelect","selectedValue","_ref$showCompareMarke","showCompareMarket","selectedOfferType","disableDistricts","disableMarket","radius","ButtonsContainer","SwitchButton","formatValue","onValueSelected","currentlySelected","setCurrentlySelected","MarketSwitch","OfferTypeSwitch","LegendContainer","StyledLegend","DiscreteColorLegend","currentlyChosen","DivideByText","ChartLegend","labels","onSeriesChosen","currentDivideBy","currentlyChosenSeries","setCurrentlyChosenSeries","onSeriesClick","shouldBeVisible","index","items","onItemClick","onItemMouseEnter","onItemMouseLeave","Branding","BrandingContainer","XyPlot","_React$Component","_inherits","_super","_createSuper","_this","maxTicksToShow","updateMaxTicksToShow","bind","_assertThisInitialized","removeEventListener","innerWidth","setState","_this$props","xType","xTickFormat","yDomain","yTickFormat","onMouseLeave","FlexibleWidthXYPlot","overflow","left","right","top","bottom","YAxis","tickTotal","tickFormat","orientation","XAxis","HorizontalGridLines","VerticalGridLines","Component","XyPlotWithLegend","dataSeries","renderSeries","seriesColors","crosshairTitleFormat","getCrosshairValue","getNumericValuesFromData","defaultYAxisMinValue","defaultYAxisMaxValue","crosshairValues","setCrosshairValues","lastCrosshairX","setLastCrosshairX","setYDomain","crosshairSeries","setCrosshairSeries","_step","min","Infinity","max","_iterator","_createForOfIteratorHelper","s","n","_step2","series","_iterator2","currentMin","currentMax","err","f","allXValues","flatMap","Set","_onMouseLeave","LineSeries","onNearestX","isTimeSeries","currentX","getTime","found","find","_onNearestX","Crosshair","itemsFormat","titleFormat","TimeFrameSelect","availableTimeFrames","timeFrame","disabledText","lastMonth","last6Months","last2Years","AveragePriceTimeFrameSelect","onTimeFrameSelected","timeFrames","unavailableForTimeFrameText","AveragePriceTypeSelect","selectedTimeFrame","priceTypes","enums","totalPrice","RSuiteIcon","DescriptionContainer","DescriptionPart","ChartDescription","chartName","districtsText","detailsText","AveragePriceChartName","getAreaSeriesOpacity","chosenSeries","getLineSeriesOpacity","getChartNameForDescription","mapDispatchToProps","statisticsActions","setChartOfferType","setChartMarket","setChartDivideBy","connect","statistics","setChosenSeries","_fetch","newState","AreaSeries","average","ReturnOfInvestmentChartName","ReturnOfInvestmentChart","setDivideBy","setTimeFrame","fetchReturnOfInvestment","setChartTimeFrame","seriesIndex","_this2","minRate","maxRate","y0","getOpacity","curve","CurrentMarketSaturationChartName","CurrentMarketSaturationChart","setOfferType","setMarket","fetchCurrentMarketSaturation","VerticalBarSeries","NbpPriceTypeSelect","NbpTimeFrameSelect","NbpDivideBySelect","CenteredParagraph","NbpWarningMessage","level","StyledSideButtonsContainer","NbpAveragePriceChartName","getState","_getState$statistics$2","chartInfo","setChartLoadingAction","post","_ref14","rest","_excluded2","getLabelForNbpSeries","setChartDataSeriesAction","MarketSaturationChartName","MarketSaturationChart","fetchMarketSaturation","fetchAveragePrice","fetchChartData","transformTimeSeriesData","transformCurrentMarketSaturation","transformTimeSeriesMarketSaturation","getLabelForSeries","priceRange","getLabelFromPriceRange","saturation","getAverageValueFromPriceRange","endpointUrl","transformToDataSeries","_getState$statistics$","shouldResetDivideBy","nbpSearchCriteria","currentNbpDivideBy","localStoragePath","localStorageCache","saveDefaultSearchConfiguration","configuration","_localStorageCache","_localStorageCache2","_localStorageCache3","_localStorageCache4","_localStorageCache5","_localStorageCache6","_localStorageCache7","saveConfigurationInLocalStorageAndCache","getDefaultSearchConfiguration","configObj","localStorage","getFromLocalStorage","getBooleanOrDefault","saveInLocalStorage","defaultValue","fetchOffers","displayedSearchCriteria","searchResult","currentSearchCriteria","isInLineWithSearchResults","getDisplayedSearchCriteria","isSearchResult","lastSearchedCriteria","fetchFlaggedOffers","dto","updateOfferInSearchResult","offer","offers","offerIndex","newOffers","findIndex","splice","isInLineWithCurrentFilter","newPage","lastOfferActivity","searchFrom","paging","pageSize","searchSize","searchResults","totalHits","StyledHoverableIcon","ClearIcon","_ref$size","StyledRsuiteTag","RsuiteTag","$tagColor","StyledComponentDiv","isInputInvalid","ClearIconWrapper","TagsInputDiv","StyledTextInput","TagsInputElement","TagPicker","inputRef","createRef","onInputChange","onInputSaved","onInputKeyDown","onClearAll","addTag","keyCode","removeTag","tags","_this$state","maxTags","readOnly","tagColor","maxTagsReached","showInput","clearIcon","tag","closable","onClose","onKeyDown","onBlur","ColumnWithoutPadding","Col","RowWithoutMargin","StyledPopover","RsuitePopover","StyledDropdownItem","RsuiteDropdown","Item","EnumSelectPopup","getDisplayedName","onEnter","selectedItemBackgroundColor","_ref2$whisperPlacemen","whisperPlacement","triggerRef","handleSelect","eventKey","hide","full","Menu","val","ButtonsWrapper","SelectableButton","canClear","onClear","stopPropagation","marginLeft","StyledSelectableButton","MainSelectableButton","MainEnumSelect","_ref$dataTestId","StyledCheckItem","RsuiteDropdownMenuCheckItem","CheckboxSelectPopup","dataEnum","selectedValues","checkedCheckboxColor","newSelectedValues","SmallSelectableButton","SmallCheckboxSelect","propertyName","hasValue","displayedLabel","SmallEnumSelect","EmptyValueToggle","_ref2$color","RsuiteToggle","StyledInputNumber","RsuiteInputNumber","EmptyValueToggleDivider","RangeInputPopup","localFrom","localTo","clearValues","localFromChanged","localToChanged","copyPropValuesToLocal","fromValue","toValue","fromValueChange","toValueChange","_this$props2","emptyValueToggleLabel","includeEmptyValue","includeEmptyValueChange","boxShadow","SmallRangeInputSelect","onFromValueChange","onToValueChange","onIncludeEmptyValueChange","defaultIncludeEmptyValue","IncludeEmptyDistrictFooter","SearchIcon","SearchButton","ClearFiltersButton","SearchCriteriaForm","isLoadingAvailableDistricts","onSearch","onClearAllClicked","onPropertyTypeChange","onPriceFromChange","onPriceToChange","onIncludeEmptyPriceChange","onSizeFromChange","onSizeToChange","onIncludeEmptySizeChange","onCityChange","onOfferTypeChange","onMarketChange","onOfferOriginChange","onIncludedWordsChanged","onExcludedWordsChanged","onDistrictsChange","onIncludeEmptyDistrictChange","onMaxOffersAgeChange","onRoomsNumbersChange","onPurposesChange","updateValue","onPricePerSquareMeterFromChange","onPricePerSquareMeterToChange","onIncludeEmptyPricePerSquareMeterChange","loadAvailableDistricts","_loadAvailableDistricts","updateNumericValue","parsedValue","defaultSearchCriteria","lg","md","sm","xs","isPrimary","LastOfferActivity","searchActions","OfferStatus","getDisplayedLastOfferActivity","lastWeek","noLimit","StyledDropdown","Dropdown","LastOfferActivityFilter","onLastOfferActivityChange","possibleLastOfferActivityValues","activeKey","TotalHitsText","LastOfferActivityFilterWrapper","OffersListHeader","totalHitsText","MarketIcon","OfferOriginIcon","rowContentHeight","StyledRow","StyledColumn","IconColumn","DoubleIconColumn","Thumbnail","img","DistrictText","DetailedLocalization","TableRow","price","pricePerSquareMeter","district","lastModificationDate","favoriteIcons","hasDuplicates","imageUrl","detailedLocalization","statusIcon","New","Updated","NoChange","duplicatesIcon","openUrlIcon","image","addOfferFlag","offerId","currentUserEmail","offerInSearchResultsToAddFlagTo","subOffers","some","subOffer","produce","offerDraft","offerFlags","removeOfferFlag","allSubOfferOfferIds","offerInSearchCriteriaToRemoveFlagFrom","offerIds","ShowMoreBar","button","Grid","GridElement","GridTitleElement","DuplicatesGrid","duplicates","filtered","setFiltered","hiddenDuplicates","duplicate","expanded","StyledMoreBar","OfferDescription","description","setExpanded","formatPhoneNumber","withoutCountrycode","first","middle1","middle2","last","middle","PhoneIcon","PhoneNumberText","ShowMoreButton","GoToOfferLink","PhoneNumbersSegment","phoneNumbers","shownPhoneNumbers","setShownPhoneNumbers","goToPortalButton","getPhoneNumbersList","getDisplayedFloor","floor","orHigher","SectionTitle","DetailsSection","DetailsIcon","ParametersTable","ParameterValue","_templateObject9","OfferDetails","onHideClick","earliestCreationDate","knownPhoneNumbers","knownPurposes","yearOfConstruction","fullLocalizationText","purposesText","genericParameterIcon","OfferFlagDiv","OfferFlagIcons","onFlagIconClicked","yellowFlag","Yellow","redFlag","Red","blueFlag","Blue","getFlaggedByText","flaggedBy","tryGetSingleMarket","tryGetSingleProperty","tryGetSingleOrigin","getProperty","foundValue","property","getSubOfferBestAlignedWithSearchCriteria","subOffersMatchingWithSearchCriteria","matching","reduce","curr","_prev$lastModificatio","_prev$lastModificatio2","_curr$lastModificatio","_curr$lastModificatio2","isEven","isExpanded","UpperPart","PurposeCell","offerFlagActions","bindActionCreators","_auth$currentUser","_offer$knownPurposes","setIsExpanded","favoritedSubOffer","ff","infoToDisplay","subOfferToShowOnTop","allImageUrls","knownDistricts","lastSaved","getOfferInfoToDisplay","offerFlagIcons","_favoritedSubOffer$of","purposeCell","latestDescription","OffersListTable","TitleTableRow","StickyDiv","OffersTable","OfferTableEntry","SvgPlaceHolder","Image","PlaceHolderSvg","PlaceHolder","OfferImage","formatPrice","formatPricePerM","formatSize","getLocalization","localization","OfferUrl","Contact","PhoneNumber","InfoIcon","OfferName","PriceSizeContainer","OfferLocalization","OfferDetail","DetailsContainer","BasicOfferInfo","OfferLink","InsideButtonContainer","ShowOfferButton","Heading","OfferDescriptionMobile","ModalContainer","StyledImage","ModalComponent","latestSubOffer","OfferInfoContainer","OfferPrice","OfferOtherDetails","OfferCard","MobileOffersList","OffersTableContainer","mediaQueries","MobileOffersContainer","ComponentWrapper","OverflowWrapper","PlaceholderWrapper","OffersList","areOffersLoading","emptyContent","PlaceholderGrid","rows","columns","rowMargin","PagingWrapper","LightText","Paging","totalOffersCount","offersPageChanged","totalPages","ceil","currentFilter","changeType","ClickableSpan","currentFilterActions","filterName","isSearchCriteriaInLineWithFilter","filterSearchCriteria","buttons","SaveFilterChangesModal","newFilterName","isSaving","saveChanges","onNewFilterNameChange","initNewFilterName","_saveChanges","filterNameFormatted","newFilter","saveResult","closeModal","string","isFilterLoading","saveChangesModalState","isOpen","editing","set","history","pushState","FilterIcon","_g2","isInFilterContext","saveChangesButton","SvgMagnifyingGlass","y1","x2","y2","gradientUnits","offset","stopColor","x1","cx","cy","r","ActivityFilterText","ActivityFilterIcon","NoSearchResultsMessage","activityFilterValue","MagnifyingGlass","ContainerWithoutPadding","_componentDidMount","urlParams","isEditingFilter","currentlyEditedFilter","cachedSearchCriteria","queryString","navigationActions","saveChangesModal","FilterContextMessage","SaveButtons","SearchPaging","displayName","SvgMagnifyingGlassWithStar","filterUnits","stdDeviation","floodColor","operator","in2","stroke","strokeWidth","NoFavoriteOffersMessage","MagnifyingGlassWithStar","connector","favoriteOffersSearchCriteria","pageNumber","newPageNumber","FlagSelect","buttonClicked","FavoriteOffersSearchCriteriaForm","setSearchCriteria","newSearchCriteria","saveFavoriteOffersSearchCriteriaInSessionStorage","FavoriteOffersList","MainCheckboxSelect","emptyLabel","StatisticsSearchCriteriaForm","tempSearchCriteria","isSearchCriteriaDirty","updateSearchCriteria","prevState","_this$state$tempSearc","displayedValue","AboutChart","AveragePriceChart","SubscriptionLevel","urlBase","getCurrentUserInfo","getCurrentUserRole","getAgencyInfo","TitleAboveCard","Value","AgencyName","OtherEmails","TitleImage","AgencyInfo","agencyInfo","otherMembersEmails","ChangePasswordButton","ManagementButtons","userInfo","userInfoLoading","_useAsyncData3","_useAsyncData4","agencyInfoLoading","_useAsyncData5","_useAsyncData6","currentUserRole","currentUserRoleLoading","lastName","role","SvgEmailSent","PasswordChangeRequested","EmailSent","StatisticsLink","LogOutButton","StyledPriceMapLogo","Topbar","showErrorAlertFromFilterResponseStatus","EmailInfo","EmailIcon","Paragraph","FilterCreatedMessage","AddFilterModal","addFilterToState","setCity","setIsSaving","paddingTop","borderBottom","maxHeight","AddFilterButton","filtersCount","PropertiesGrid","PropertyLabel","PropertyValue","FilterSearchCriteria","getRangeText","DeleteFilterModal","deleteFilterFromState","calculateDaysToDate","toDate","today","diffDays","abs","CardBody","CardFooter","Caption","Centered","editFilterFromState","showDeleteModal","setShowDeleteModal","updateFilterResult","onNotificationsExtended","activeForXMoreDays","enabledUntil","FiltersContainer","Info","FiltersOnlyPage","setFilters","setAreFiltersLoading","fetchFilters","filterDto","getAllAgencies","getAgencyDetails","agencyId","getAdminStatistics","getEmployees","addNewEmployee","setCanAddNewAgencies","employeeId","canAddNewAgencies","setCanViewAllAgencies","canViewAllAgencies","deactivateEmployee","activateEmployee","_callee9","_context9","Cell","DeleteMemberButton","userId","memberEmail","confirmationText","setConfirmationText","deleteUser","reload","DeleteAgencyButton","agencyName","deleteAgency","AgencyNameTitle","StyledBadge","Badge","isIndividualInvestor","AgencyDetails","params","agencyDetails","members","member","AdminPanel","AllAgenciesTable","allAgencies","agency","Agencies","AdminStatistics","adminStatistics","mostOfferFlagsForAgencies","SubmitButton","AddEmployeeForm","workEmail","workPhoneNumber","employeeData","setEmployeeData","isInvalid","addEmployee","Employees","employees","areEmployeesLoading","permissionChanging","setPermissionChanging","handleCanAddNewAgenciesChange","handleCanViewAllAgenciesChange","handleDeactivation","handleActivation","createdAt","deletedAt","Checkbox","addNewAgencyMember","isMemberEmailVerified","DeleteUserButton","confirmEmail","setConfirmEmail","inProgress","setInProgress","DisplaySaleUsersDialog","setLoading","dtos","setDtos","fetchUsers","Table","Column","HeaderCell","rowData","userCreatedAt","dataKey","GoToFiltersOnlyButton","ManagementPanel","saleUsersOpen","setSaleUsersOpen","AddAgencyMemberModalButton","setFirstName","setLastName","_useState9","_useState10","addingInProgress","setAddingInProgress","addAgencyMember","GridOuter","GridInner","clickable","HeaderRow","AgencyMembersTable","agencyMembers","AgencyMemberRow","checkEmailVerificationClicked","setCheckEmailVerificationClicked","UserEmailVerificationStatus","verified","$isIndividualInvestor","ManagementPanelAgencyDetails","useParams","CenteredDivWithPadding","PriceMapLogoContainer","TermsOfServiceContainer","PolicyHeading","CheckboxContainer","SendButton","TermsOfServiceLink","ContactContainer","AcceptTermsOfService","acceptedTermsOfService","setAcceptedTermsOfService","isSendingRequest","setIsSendingRequest","isSendAvailable","onSend","sendButtonContent","ExpandSidebarIcon","StyledNavbar","_Component","SvgPriceMapLogo","sidebarWidth","StyledSidebar","isSidebarExpandedOnMobile","PriceMapSidebarHeading","UpperIcons","BottomIcons","SidebarItem","isCurrentPage","HoverableSidebarItem","IconBox","HideNavbarIconBox","StyledLink","LogoIconContainer","_templateObject10","LogoContainer","_templateObject11","HideNavbarIconContainer","_templateObject12","DarkOverlay","_templateObject13","navigation","StyledContainer","PageWrapper","Layout","fluid","xl","Sidebar","ProtectedPage","requiredSubscription","subscription","Promise","resolve","emailVerified","subscriptionLevel","FreeFilters","PriceMapProProtectedPage","useLocation","PriceMapPro","Children","cloneElement","RedirectToAdTarget","_searchParams$get","targetUrl","decodedUrl","AcceptTosCheckbox","cursor","AcceptAllAgreementsCheckbox","AcceptCreditContactCheckbox","AddPersonalDetails","setPhoneNumber","setAcceptedTos","setAcceptedCredit","registrationValues","last2","last1","getOffersWord","LogIn","SignInLinkSent","VerifyEmail","AppRoutes","send","hitType","Routes","Route","element","currentSearchCriteriaReducer","searchResultReducer","lastSearchedCriteriaReducer","navigationReducer","_searchCriteriaFromSe","_searchCriteriaFromSe2","_searchCriteriaFromSe3","searchCriteriaFromSessionStorage","statisticsReducer","currentFilterReducer","pagingReducer","reduxStore","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","combineReducers","applyMiddleware","reduxImmutableStateInvariant","thunk","configureStore","initialize","App","isAuthLoading","setIsAuthLoading","authStateReady","ReduxProvider","store","BrowserRouter","hostname","rootElement","getElementById","ReactDOM","render","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"main-chunk.js?t=1743363395560","sourcesContent":["export const colors = {\n white: '#ffffff',\n lighterGray: '#fafafa',\n lightGray: '#f8f8f8',\n slightlyLightGray: '#e8e8e8',\n gray: '#d9d9d9',\n slightlyDarkGray: '#b0b0b0',\n almostDarkGray: '#808080',\n darkGray: '#666666',\n veryDarkGray: '#333a40',\n\n lightPurple: '#673ab715',\n deepPurple: '#490c99',\n\n veryVeryDark: '#071A2C',\n lighterVeryVeryDark: '#172A3C',\n blueishGray: '#B5BBC0',\n\n lightBlue: '#e5f5ff',\n deepBlue: '#2487ad',\n facebookBlue: '#2a79f2',\n greenyBlue: 'rgb(5, 166, 147)',\n lightGreeny: 'rgba(5, 166, 147, 0.1)',\n brightGreen: '#2fc250',\n\n brightRed: '#f94144',\n lightRed: '#f9414410',\n burgundy: '#b0056a',\n coral: '#fa764d',\n\n gold: '#fac11b',\n\n black: '#000000',\n\n // new colors:\n priceMapSalmon: '#ef4c4d',\n priceMapLightSalmon: '#fdeaea',\n priceMapDarkNavyBlue: '#081f3b',\n priceMapCream: '#f7efeb',\n priceMapPink: '#ee5886'\n};\n\nexport const gradients = {\n priceMapPinkToSalmon: `linear-gradient(to right, ${colors.priceMapPink}, ${colors.priceMapSalmon})`\n};\n","import React from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { colors } from './colors';\n\nconst Theme = ({ children }) => (\n \n {children}\n \n);\nexport default Theme;\n","import React from 'react';\nimport styled from 'styled-components';\nimport RsuiteLoader from 'rsuite/lib/Loader';\n\nconst Wrapper = styled.div<{ $fullPage: boolean }>`\n position: relative;\n height: 100%;\n padding-top: ${({ $fullPage }) => ($fullPage ? '30vh' : undefined)};\n`;\n\nconst StyledRsuiteLoader = styled(RsuiteLoader)`\n z-index: 10;\n`;\n\nexport interface LoaderProps {\n content?: string;\n isLoading?: boolean;\n fullPage?: boolean;\n}\n\nexport const Loader: React.FC = ({\n content = '',\n isLoading = true,\n fullPage = false,\n children = undefined\n}) => {\n return (\n \n {isLoading && }\n {children}\n \n );\n};\n","let getAccessTokenSilently: (() => Promise) | null = null;\n\nexport const apiAccessToken = {\n getSilently: () =>\n getAccessTokenSilently != null ? getAccessTokenSilently() : null,\n setGetAccessTokenSilentlyFunction: (func: () => Promise) =>\n (getAccessTokenSilently = func)\n};\n","import { initializeApp } from 'firebase/app';\nimport type { FirebaseOptions } from 'firebase/app';\nimport { GoogleAuthProvider, getAuth } from 'firebase/auth';\nimport { apiAccessToken } from '../apiAccessToken';\n\nconst firebaseConfig: FirebaseOptions = {\n apiKey: 'AIzaSyCeyj-7dqnPYT299SS9w4dO37pr2Bd18NU',\n authDomain: 'pricemapsociallogin.firebaseapp.com',\n projectId: 'pricemapsociallogin',\n storageBucket: 'pricemapsociallogin.appspot.com',\n messagingSenderId: '627899529873',\n appId: '1:627899529873:web:9265e676d06d6821dedd30',\n measurementId: 'G-47W0QW8ZFD'\n};\n\nconst app = initializeApp(firebaseConfig);\nconst auth = getAuth(app);\n\nauth.onAuthStateChanged((user) => {\n if (user) {\n apiAccessToken.setGetAccessTokenSilentlyFunction(() =>\n user.getIdToken()\n );\n }\n});\n\nconst googleAuthProvider = new GoogleAuthProvider();\n\nexport { app, auth, googleAuthProvider };\n","var _style, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPriceMapLogoWithText(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 558.46 144.57\",\n style: {\n enableBackground: \"new 0 0 558.46 144.57\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\n\\t.st0{fill:#EF4751;}\\n\\t.st1{fill:#FFFFFF;}\\n\\t.st2{fill:#6FCBD5;}\\n\\t.st3{clip-path:url(#XMLID_00000031904663191567193000000002379943370828665765_);}\\n\\t.st4{fill:#F6BC1F;}\\n\\t.st5{fill:none;stroke:#010101;stroke-width:5;stroke-miterlimit:10;}\\n\\t.st6{fill:none;stroke:#010101;stroke-width:10;stroke-miterlimit:10;}\\n\\t.st7{fill:#23231F;}\\n\\t.st8{fill:#010101;}\\n\\t.st9{fill:none;stroke:#000000;stroke-width:22.9316;stroke-miterlimit:10;}\\n\\t.st10{opacity:0.2;fill:#F04B4D;}\\n\\t.st11{fill:#F04B4D;}\\n\\t.st12{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st13{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5.0354,5.0354;}\\n\\t.st14{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5.0188,5.0188;}\\n\\t.st15{fill:#002B3D;}\\n\\t.st16{fill:#F7EFEB;}\\n\\t.st17{fill:#30302F;}\\n\\t.st18{fill:#5CB5B8;}\\n\\t.st19{fill:none;stroke:#000000;stroke-miterlimit:10;}\\n\\t.st20{fill:none;}\\n\\t.st21{fill:none;stroke:#FFFFFF;stroke-width:0.5;stroke-miterlimit:10;}\\n\\t.st22{opacity:0.7;fill:#002B3D;}\\n\\t.st23{fill:#1E1E1D;}\\n\\t.st24{fill:#1F3A6F;}\\n\\t.st25{fill:#C6103A;}\\n\\t.st26{fill:#1E74BB;}\\n\\t.st27{fill:#EF3A4A;}\\n\\t.st28{fill:#EF4C4D;}\\n\\t.st29{fill:#084CA1;}\\n\\t.st30{fill:#081F3B;}\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M66.94,28.35C63.99,9.98,46.72-2.52,28.35,0.43C9.98,3.37-2.52,20.65,0.43,39.02 c1.95,12.23,21.43,39.49,34.25,56.36c0.46,0.6,1.25,0.83,1.95,0.56c2.13-0.84,4.38-1.46,6.74-1.83c2.31-0.39,4.65-0.5,6.97-0.36 c0.74,0.04,1.43-0.43,1.68-1.15C58.92,72.57,68.9,40.58,66.94,28.35z M36.47,50.86c-10.12,1.62-19.64-5.27-21.26-15.39 c-1.63-10.12,5.27-19.64,15.38-21.26c10.12-1.62,19.64,5.27,21.28,15.39C53.48,39.72,46.59,49.24,36.47,50.86z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st16\",\n d: \"M36.47,50.86c-10.12,1.62-19.64-5.27-21.26-15.39c-1.63-10.12,5.27-19.64,15.38-21.26 c10.12-1.62,19.64,5.27,21.28,15.39C53.48,39.72,46.59,49.24,36.47,50.86z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M30.16,128.94c1.35,8.46,8.22,14.65,16.33,15.52c1.61,0.17,3.26,0.14,4.93-0.13 c10.12-1.62,17.01-11.15,15.39-21.26c-1.35-8.46-8.22-14.65-16.33-15.52c-1.24-0.13-2.51-0.14-3.79-0.01 c-0.38,0.04-0.76,0.08-1.14,0.15c-0.38,0.06-0.76,0.13-1.13,0.22C34.92,110.02,28.6,119.2,30.16,128.94z\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M133.41,31.28c7.3,0,13.55,2.61,18.77,7.82c5.22,5.71,7.82,11.97,7.82,18.77c0,6.8-2.61,13.06-7.82,18.77 c-5.22,5.22-11.47,7.82-18.77,7.82h-18.93v20.46h-11.53V31.28h7.24h4.28H133.41z M114.48,42.97v29.82h18.93 c4.09,0,7.59-1.46,10.52-4.39c2.93-3.21,4.39-6.71,4.39-10.52s-1.46-7.31-4.39-10.52c-2.93-2.93-6.43-4.39-10.52-4.39H114.48z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M194.63,49.84v11.68c-3.67,0.35-6.93,1.9-9.78,4.65c-3.14,3.1-4.71,6.84-4.71,11.21v4.81h-0.16v22.73h-11.53 V82.2v-4.81V52.33h11.53v2.64C184.49,51.8,189.37,50.09,194.63,49.84z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M215.4,33.4c1.41,1.41,2.11,3.12,2.11,5.13c0,1.97-0.71,3.67-2.11,5.07c-1.41,1.41-3.1,2.12-5.08,2.12 c-2.01,0-3.72-0.71-5.13-2.12c-1.41-1.41-2.12-3.1-2.12-5.07c0-2.01,0.7-3.72,2.12-5.13c1.41-1.41,3.12-2.11,5.13-2.11 C212.3,31.28,213.99,31.99,215.4,33.4z M216.09,104.93h-11.58v-52.6h11.58V104.93z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M271.34,55.76c4.97,3.98,8.26,9.09,9.89,15.33h-12.05c-3.35-6.56-8.41-9.83-15.17-9.83 c-4.58,0-8.48,1.62-11.71,4.86c-3.22,3.24-4.84,7.14-4.84,11.68c0,4.58,1.61,8.49,4.84,11.74c3.22,3.24,7.13,4.86,11.71,4.86 c6.77,0,11.82-3.28,15.17-9.83h12.05c-1.62,6.24-4.92,11.35-9.89,15.33c-4.97,3.98-10.75,5.97-17.34,5.97 c-7.75,0-14.36-2.74-19.83-8.22c-5.46-5.48-8.19-12.1-8.19-19.85c0-7.72,2.73-14.32,8.19-19.8c5.46-5.48,12.07-8.22,19.83-8.22 C260.59,49.79,266.37,51.78,271.34,55.76z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M302.16,83.62c3.24,7.19,8.44,10.78,15.6,10.78c5.04,0,9.23-1.94,12.58-5.82h13.32 c-5.6,11.53-14.24,17.29-25.91,17.29c-7.75,0-14.37-2.74-19.85-8.22c-5.48-5.48-8.22-12.1-8.22-19.85c0-7.72,2.74-14.32,8.22-19.8 c5.48-5.48,12.1-8.22,19.85-8.22c7.75,0,14.36,2.74,19.83,8.22c5.46,5.48,8.19,12.08,8.19,19.8c0,2.01-0.19,3.95-0.58,5.82h-5.97 h-5.92H302.16z M333.3,72.04c-3.24-7.19-8.42-10.78-15.54-10.78c-7.16,0-12.35,3.59-15.6,10.78H333.3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M365.6,31.28l26.17,55.93l26.12-55.93h11.42v73.64h-11.53v-46.1l-21.57,46.1h-8.93l-21.52-46.1v46.1h-11.53 V31.28H365.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M493.91,52.33v52.6h-11.58v-4.44c-4.83,3.59-10.33,5.39-16.49,5.39c-7.75,0-14.37-2.74-19.85-8.22 c-5.48-5.48-8.22-12.1-8.22-19.85c0-7.72,2.74-14.32,8.22-19.8c5.48-5.48,12.1-8.22,19.85-8.22c6.17,0,11.67,1.8,16.49,5.39v-2.85 H493.91z M482.33,76.38c-0.46-4.34-2.24-7.94-5.34-10.81c-3.1-2.87-6.82-4.31-11.15-4.31c-4.58,0-8.49,1.62-11.74,4.86 c-3.24,3.24-4.86,7.14-4.86,11.68c0,4.58,1.62,8.49,4.86,11.74c3.24,3.24,7.15,4.86,11.74,4.86c4.34,0,8.05-1.44,11.15-4.31 c3.1-2.87,4.88-6.48,5.34-10.81V76.38z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st28\",\n d: \"M513.89,100.49v24.69h-11.53V51.53h11.53v3.65c4.83-3.6,10.33-5.39,16.49-5.39c7.75,0,14.37,2.74,19.85,8.22 c5.48,5.48,8.22,12.08,8.22,19.8c0,7.75-2.74,14.37-8.22,19.85c-5.48,5.48-12.1,8.22-19.85,8.22 C524.22,105.88,518.72,104.08,513.89,100.49z M542.12,89.54c3.24-3.24,4.86-7.15,4.86-11.74c0-4.55-1.62-8.44-4.86-11.68 c-3.24-3.24-7.16-4.86-11.74-4.86c-4.34,0-8.05,1.44-11.16,4.31c-3.1,2.87-4.88,6.48-5.34,10.81v2.91 c0.46,4.34,2.24,7.94,5.34,10.81c3.1,2.87,6.82,4.31,11.16,4.31C534.97,94.41,538.88,92.79,542.12,89.54z\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPriceMapLogoWithText);\nexport default __webpack_public_path__ + \"static/media/PriceMapLogoWithText.face69a5.svg\";\nexport { ForwardRef as ReactComponent };","import { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nexport const LinkWithoutStyling = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n :hover {\n color: inherit;\n text-decoration: none;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport RsuiteButton from 'rsuite/lib/Button';\nimport { colors } from '../theme/colors';\nimport { LinkWithoutStyling } from './LinkWithoutStyling';\n\nconst Button = styled(RsuiteButton)`\n cursor: ${({ active }) =>\n active === false ? 'not-allowed' : 'pointer'} !important;\n background-color: ${({ $backgroundColor }) =>\n $backgroundColor} !important; //important because of chrome -- color wouldn't be applied until button lost focus\n color: ${({ $textColor }) =>\n $textColor} !important; //important because of chrome -- color wouldn't be applied until button lost focus\n border: ${({ $borderColor }) =>\n $borderColor ? `1px solid ${$borderColor}` : undefined};\n\n :hover {\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n color: ${({ $textColor }) => $textColor};\n }\n\n border-radius: 6px;\n\n height: 40px;\n width: 100%;\n\n transition: 0.3s;\n`;\n\nconst ChildrenContainer = styled.span`\n margin: auto;\n`;\n\nexport interface StyledButtonProps {\n onClick?: (e: React.MouseEvent) => void;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n href?: string;\n active?: boolean;\n className?: string;\n dataTestId?: string;\n disabled?: boolean;\n}\n\nconst StyledButtonV2: React.FC = ({\n onClick,\n textColor,\n backgroundColor = colors.lightGray,\n borderColor,\n href,\n active,\n className,\n children,\n dataTestId,\n disabled = false\n}) => {\n const linkWrapper = (children: any) =>\n href ? (\n {children}\n ) : (\n <>{children}\n );\n\n return linkWrapper(\n \n {children}\n \n );\n};\n\nexport default StyledButtonV2;\n","import styled from 'styled-components';\nimport StyledButtonV2 from '../utils/styledButtonV2';\n\nexport const PageContainer = styled.div`\n padding-top: 70px;\n`;\n\nexport const CenteredDiv = styled.div`\n width: fit-content;\n margin: 0 auto;\n`;\n\nexport const CenteredText = styled(CenteredDiv)`\n text-align: center;\n`;\n\nexport const Header = styled.span`\n font-weight: 600;\n font-size: 21px;\n margin: 0 auto;\n`;\n\nexport const Description = styled.span`\n font-size: 17px;\n`;\n\nexport const ActionButton = styled(StyledButtonV2)`\n padding: 0px 30px;\n font-size: 15px;\n`;\n","import React, { useEffect, useState } from 'react';\nimport { Loader } from '../components/utils/loader';\nimport { PageContainer } from '../components/account/PageLayout';\nimport { getAuth, signOut } from 'firebase/auth';\nimport { auth } from './FirebaseApp';\n\nconst LogOut = () => {\n const [loggedOut, setLoggedOut] = useState(false);\n\n useEffect(() => {\n const auth = getAuth();\n signOut(auth).then(() => {\n setLoggedOut(true); // it's only here to rerender; window.location.assign would produce strange errors\n });\n }, []);\n\n if (auth.currentUser == null)\n window.location.replace('https://www.pricemap.pl');\n\n return (\n \n \n \n );\n};\n\nexport default LogOut;\n","import styled from 'styled-components';\n\nconst SectionInterspace = styled.div<{ size?: string }>`\n margin-top: ${(props) => (props.size ? props.size : '20px')};\n`;\n\nexport default SectionInterspace;\n","import styled from 'styled-components';\n\nexport const Bold = styled.span`\n font-weight: 600;\n`;\n","import { css } from 'styled-components';\n\nexport const LightBoxShadow = css`\n box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.15);\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { CenteredDiv } from './PageLayout';\nimport { LightBoxShadow } from '../utils/boxShadow';\n\nconst Card = styled.div`\n padding: 50px 15px 80px 15px;\n max-width: 800px;\n margin: 0 auto;\n ${LightBoxShadow}\n`;\n\nconst MessageContainer = styled(CenteredDiv)`\n max-width: 410px;\n`;\n\nexport const MessageCard = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n","import React from 'react';\nimport {\n PageContainer,\n Header,\n Description,\n CenteredDiv,\n ActionButton,\n CenteredText\n} from './PageLayout';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Bold } from '../utils/bold';\nimport { MessageCard } from './MessageCard';\nimport { colors } from '../theme/colors';\nimport { ReactComponent as PriceMapLogo } from '../utils/icons/PriceMapLogoWithText.svg';\n\nexport const GenericError = () => {\n return (\n \n \n \n \n \n\n \n \n
Ups! Coś poszło nie tak!
\n
\n \n\n \n \n Wróć na stronę główną za kilka chwil i spróbuj ponownie.\n W razie problemów prosimy o kontakt.\n
\n kontakt@pricemap.pl\n
\n
\n \n\n \n \n window.location.replace(window.location.origin)\n }\n >\n Powrót na stronę główną\n \n \n
\n
\n );\n};\n","const minWidthMediaQuery = (minWidth) => {\n return `@media (min-width: ${minWidth}px)`;\n};\n\nconst maxWidthMediaQuery = (maxWidth) => {\n return `@media (max-width: ${maxWidth}px)`;\n};\n\nexport const breakpoints = {\n fullSize: 1200,\n tablet: 768,\n mobile: 0\n};\n\nexport const fullSize = minWidthMediaQuery(breakpoints['fullSize']);\nexport const tablet = minWidthMediaQuery(breakpoints['tablet']);\nexport const mobile = minWidthMediaQuery(breakpoints['mobile']);\n\nexport const mobileOnly = maxWidthMediaQuery(breakpoints['tablet'] - 1);\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as PriceMapLogo } from '../utils/icons/PriceMapLogoWithText.svg';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { colors } from '../theme/colors';\n\nconst Section = styled.div`\n display: flex;\n justify-content: center;\n margin-bottom: 50px;\n text-align: center;\n`;\n\nconst LogoWithButton = styled.div`\n display: flex;\n align-items: center;\n gap: 16px;\n justify-content: space-between;\n margin-bottom: 50px;\n`;\n\ninterface Props {\n countDownInSeconds: number;\n offerUrl: string;\n bannerUrl: string | undefined;\n bannerTargetUrl: string | undefined;\n}\nexport function RedirectToOfferWithBanner({\n offerUrl,\n bannerUrl,\n bannerTargetUrl,\n countDownInSeconds\n}: Props) {\n const [counter, setCounter] = useState(countDownInSeconds);\n\n useEffect(() => {\n const countDown = () => {\n setTimeout(() => {\n setCounter((x) => (x > 0 ? x - 1 : 0));\n countDown();\n }, 1000);\n };\n\n countDown();\n }, []);\n\n useEffect(() => {\n if (counter === 0) window.location.assign(offerUrl);\n }, [counter]);\n\n return (\n
\n \n \n\n
\n \n Przejdź do oferty\n \n
\n
\n\n
\n

Już zabieramy Cię do twojej oferty! 🏡

\n
\n
\n

Za {counter}s nastąpi automatyczne przekierowanie

\n
\n\n {bannerUrl && bannerTargetUrl && (\n
\n \n \n \n
\n )}\n
\n );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { mobileOnly } from '../theme/mediaQueries';\nimport { Navigate } from 'react-router-dom';\nimport { RedirectToOfferWithBanner } from './RedirectToOfferWithBanner';\n\nconst Container = styled.div`\n max-width: 1200px;\n box-sizing: content-box;\n margin: 0 auto;\n overflow-x: hidden;\n padding: 40px;\n ${mobileOnly} {\n padding: 20px;\n }\n`;\n\nconst LogoContainer = styled.div`\n margin: 0 auto;\n max-width: 300px;\n margin-bottom: 50px;\n`;\n\nconst Section = styled.div`\n display: flex;\n justify-content: center;\n margin-bottom: 50px;\n text-align: center;\n`;\n\nexport function RedirectToOffer() {\n const searchParams = new URLSearchParams(window.location.search);\n const offerUrlQueryParam = searchParams.get('offerUrl');\n const bannerUrlQueryParam = searchParams.get('bannerUrl');\n const bannerTargetQueryParam = searchParams.get('bannerTargetUrl');\n\n if (offerUrlQueryParam == null || !offerUrlQueryParam.startsWith('https')) {\n return ;\n }\n\n const offerUrl = decodeURI(offerUrlQueryParam);\n\n let bannerUrl: string | undefined;\n let bannerTargetUrl: string | undefined;\n if (bannerUrlQueryParam !== null && bannerTargetQueryParam !== null) {\n const decodedBanner = decodeURI(bannerUrlQueryParam);\n const decodedBannerTarget = decodeURI(bannerTargetQueryParam);\n if (\n decodedBanner.startsWith('https://') &&\n decodedBannerTarget.startsWith('https://')\n ) {\n bannerUrl = decodedBanner;\n bannerTargetUrl = decodedBannerTarget;\n }\n }\n\n return (\n \n \n \n );\n}\n","var _g, _path, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgGoogleButtonContent(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 201,\n height: 40,\n viewBox: \"0 0 201 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5_954)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28.64 20.2045C28.64 19.5664 28.5827 18.9527 28.4764 18.3636H20V21.845H24.8436C24.635 22.97 24.0009 23.9232 23.0477 24.5614V26.8195H25.9564C27.6582 25.2527 28.64 22.9455 28.64 20.2045V20.2045Z\",\n fill: \"#4285F4\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20 29C22.43 29 24.4673 28.1941 25.9564 26.8196L23.0477 24.5614C22.2418 25.1014 21.2109 25.4205 20 25.4205C17.6559 25.4205 15.6718 23.8373 14.9641 21.71H11.9573V24.0418C13.4382 26.9832 16.4818 29 20 29V29Z\",\n fill: \"#34A853\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.9641 21.71C14.7841 21.17 14.6818 20.5932 14.6818 20C14.6818 19.4068 14.7841 18.83 14.9641 18.29V15.9582H11.9573C11.3477 17.1732 11 18.5477 11 20C11 21.4523 11.3477 22.8268 11.9573 24.0418L14.9641 21.71V21.71Z\",\n fill: \"#FBBC05\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20 14.5795C21.3214 14.5795 22.5077 15.0336 23.4405 15.9255L26.0218 13.3441C24.4632 11.8918 22.4259 11 20 11C16.4818 11 13.4382 13.0168 11.9573 15.9582L14.9641 18.29C15.6718 16.1627 17.6559 14.5795 20 14.5795V14.5795Z\",\n fill: \"#EA4335\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.54 23.5425V25H51.1353V23.5425H58.54ZM58.3716 15.4712L51.8164 25H50.5859V23.8354L57.1631 14.3359H58.3716V15.4712ZM57.6904 14.3359V15.8008H50.6299V14.3359H57.6904ZM64.6475 23.4106V19.6313C64.6475 19.3481 64.5962 19.104 64.4937 18.8989C64.3911 18.6938 64.2349 18.5352 64.0249 18.4229C63.8198 18.3105 63.561 18.2544 63.2485 18.2544C62.9604 18.2544 62.7114 18.3032 62.5015 18.4009C62.2915 18.4985 62.1279 18.6304 62.0107 18.7964C61.8936 18.9624 61.835 19.1504 61.835 19.3604H60.0771C60.0771 19.0479 60.1528 18.7451 60.3042 18.4521C60.4556 18.1592 60.6753 17.8979 60.9634 17.6685C61.2515 17.439 61.5957 17.2583 61.9961 17.1265C62.3965 16.9946 62.8457 16.9287 63.3438 16.9287C63.9395 16.9287 64.4668 17.0288 64.9258 17.229C65.3896 17.4292 65.7534 17.7319 66.0171 18.1372C66.2856 18.5376 66.4199 19.0405 66.4199 19.646V23.1689C66.4199 23.5303 66.4443 23.855 66.4932 24.1431C66.5469 24.4263 66.6226 24.6729 66.7202 24.8828V25H64.9111C64.8281 24.8096 64.7622 24.5679 64.7134 24.2749C64.6694 23.9771 64.6475 23.689 64.6475 23.4106ZM64.9038 20.1807L64.9185 21.272H63.6514C63.3242 21.272 63.0361 21.3037 62.7871 21.3672C62.5381 21.4258 62.3306 21.5137 62.1646 21.6309C61.9985 21.748 61.874 21.8896 61.791 22.0557C61.708 22.2217 61.6665 22.4097 61.6665 22.6196C61.6665 22.8296 61.7153 23.0225 61.813 23.1982C61.9106 23.3691 62.0522 23.5034 62.2378 23.6011C62.4282 23.6987 62.6577 23.7476 62.9263 23.7476C63.2876 23.7476 63.6025 23.6743 63.8711 23.5278C64.1445 23.3765 64.3594 23.1934 64.5156 22.9785C64.6719 22.7588 64.7549 22.5513 64.7646 22.356L65.3359 23.1396C65.2773 23.3398 65.1772 23.5547 65.0356 23.7842C64.894 24.0137 64.7085 24.2334 64.479 24.4434C64.2544 24.6484 63.9834 24.8169 63.666 24.9487C63.3535 25.0806 62.9922 25.1465 62.582 25.1465C62.0645 25.1465 61.603 25.0439 61.1978 24.8389C60.7925 24.6289 60.4751 24.3481 60.2456 23.9966C60.0161 23.6401 59.9014 23.2373 59.9014 22.7881C59.9014 22.3682 59.9795 21.9971 60.1357 21.6748C60.2969 21.3477 60.5312 21.0742 60.8389 20.8545C61.1514 20.6348 61.5322 20.4688 61.9814 20.3564C62.4307 20.2393 62.9434 20.1807 63.5195 20.1807H64.9038ZM70.374 13.75V25H68.6016V13.75H70.374ZM72.1895 21.1255V20.957C72.1895 20.3857 72.2725 19.856 72.4385 19.3677C72.6045 18.8745 72.8438 18.4473 73.1562 18.0859C73.4736 17.7197 73.8594 17.4365 74.3135 17.2363C74.7725 17.0312 75.29 16.9287 75.8662 16.9287C76.4473 16.9287 76.9648 17.0312 77.4189 17.2363C77.8779 17.4365 78.2661 17.7197 78.5835 18.0859C78.9009 18.4473 79.1426 18.8745 79.3086 19.3677C79.4746 19.856 79.5576 20.3857 79.5576 20.957V21.1255C79.5576 21.6968 79.4746 22.2266 79.3086 22.7148C79.1426 23.2031 78.9009 23.6304 78.5835 23.9966C78.2661 24.3579 77.8804 24.6411 77.4263 24.8462C76.9722 25.0464 76.457 25.1465 75.8809 25.1465C75.2998 25.1465 74.7798 25.0464 74.3208 24.8462C73.8667 24.6411 73.481 24.3579 73.1636 23.9966C72.8462 23.6304 72.6045 23.2031 72.4385 22.7148C72.2725 22.2266 72.1895 21.6968 72.1895 21.1255ZM73.9546 20.957V21.1255C73.9546 21.4819 73.9912 21.8188 74.0645 22.1362C74.1377 22.4536 74.2524 22.7319 74.4087 22.9712C74.5649 23.2104 74.7651 23.3984 75.0093 23.5352C75.2534 23.6719 75.5439 23.7402 75.8809 23.7402C76.208 23.7402 76.4912 23.6719 76.7305 23.5352C76.9746 23.3984 77.1748 23.2104 77.3311 22.9712C77.4873 22.7319 77.6021 22.4536 77.6753 22.1362C77.7534 21.8188 77.7925 21.4819 77.7925 21.1255V20.957C77.7925 20.6055 77.7534 20.2734 77.6753 19.9609C77.6021 19.6436 77.4849 19.3628 77.3237 19.1187C77.1675 18.8745 76.9673 18.6841 76.7231 18.5474C76.4839 18.4058 76.1982 18.335 75.8662 18.335C75.5342 18.335 75.2461 18.4058 75.002 18.5474C74.7627 18.6841 74.5649 18.8745 74.4087 19.1187C74.2524 19.3628 74.1377 19.6436 74.0645 19.9609C73.9912 20.2734 73.9546 20.6055 73.9546 20.957ZM86.3315 17.0752H87.9355V24.7803C87.9355 25.4932 87.7842 26.0986 87.4814 26.5967C87.1787 27.0947 86.7563 27.4731 86.2144 27.7319C85.6724 27.9956 85.0449 28.1274 84.332 28.1274C84.0293 28.1274 83.6924 28.0835 83.3213 27.9956C82.9551 27.9077 82.5986 27.7661 82.252 27.5708C81.9102 27.3804 81.6245 27.1289 81.395 26.8164L82.2227 25.7764C82.5059 26.1133 82.8184 26.3599 83.1602 26.5161C83.502 26.6724 83.8608 26.7505 84.2368 26.7505C84.6421 26.7505 84.9863 26.6748 85.2695 26.5234C85.5576 26.377 85.7798 26.1597 85.936 25.8716C86.0923 25.5835 86.1704 25.2319 86.1704 24.8169V18.8696L86.3315 17.0752ZM80.9482 21.1255V20.9717C80.9482 20.3711 81.0215 19.8242 81.168 19.3311C81.3145 18.833 81.5244 18.4058 81.7979 18.0493C82.0713 17.688 82.4033 17.4121 82.7939 17.2217C83.1846 17.0264 83.6265 16.9287 84.1196 16.9287C84.6323 16.9287 85.0693 17.0215 85.4307 17.207C85.7969 17.3926 86.1021 17.6587 86.3462 18.0054C86.5903 18.3472 86.7808 18.7573 86.9175 19.2358C87.0591 19.7095 87.1641 20.2368 87.2324 20.8179V21.3086C87.1689 21.875 87.0615 22.3926 86.9102 22.8613C86.7588 23.3301 86.5586 23.7354 86.3096 24.0771C86.0605 24.4189 85.7529 24.6826 85.3867 24.8682C85.0254 25.0537 84.5981 25.1465 84.105 25.1465C83.6216 25.1465 83.1846 25.0464 82.7939 24.8462C82.4082 24.646 82.0762 24.3652 81.7979 24.0039C81.5244 23.6426 81.3145 23.2178 81.168 22.7295C81.0215 22.2363 80.9482 21.7017 80.9482 21.1255ZM82.7134 20.9717V21.1255C82.7134 21.4868 82.7476 21.8237 82.8159 22.1362C82.8892 22.4487 82.999 22.7246 83.1455 22.9639C83.2969 23.1982 83.4873 23.3838 83.7168 23.5205C83.9512 23.6523 84.2271 23.7183 84.5444 23.7183C84.9595 23.7183 85.2988 23.6304 85.5625 23.4546C85.8311 23.2788 86.0361 23.042 86.1777 22.7441C86.3242 22.4414 86.4268 22.1045 86.4854 21.7334V20.4077C86.4561 20.1196 86.395 19.8511 86.3022 19.6021C86.2144 19.353 86.0947 19.1357 85.9434 18.9502C85.792 18.7598 85.6016 18.6133 85.3721 18.5107C85.1426 18.4033 84.8716 18.3496 84.5591 18.3496C84.2417 18.3496 83.9658 18.418 83.7314 18.5547C83.4971 18.6914 83.3042 18.8794 83.1528 19.1187C83.0063 19.3579 82.8965 19.6362 82.8232 19.9536C82.75 20.271 82.7134 20.6104 82.7134 20.9717ZM94.7534 23.1323V17.0752H96.5259V25H94.856L94.7534 23.1323ZM95.0024 21.4844L95.5957 21.4697C95.5957 22.002 95.5371 22.4927 95.4199 22.9419C95.3027 23.3862 95.1221 23.7744 94.8779 24.1064C94.6338 24.4336 94.3213 24.6899 93.9404 24.8755C93.5596 25.0562 93.103 25.1465 92.5708 25.1465C92.1851 25.1465 91.8311 25.0903 91.5088 24.978C91.1865 24.8657 90.9082 24.6924 90.6738 24.458C90.4443 24.2236 90.2661 23.9185 90.1392 23.5425C90.0122 23.1665 89.9487 22.7173 89.9487 22.1948V17.0752H91.7139V22.2095C91.7139 22.4976 91.748 22.7393 91.8164 22.9346C91.8848 23.125 91.9775 23.2788 92.0947 23.396C92.2119 23.5132 92.3486 23.5962 92.5049 23.645C92.6611 23.6938 92.8271 23.7183 93.0029 23.7183C93.5059 23.7183 93.9014 23.6206 94.1895 23.4253C94.4824 23.2251 94.6899 22.9565 94.812 22.6196C94.939 22.2827 95.0024 21.9043 95.0024 21.4844ZM98.6416 17.0752H100.414V25.6885C100.414 26.2305 100.321 26.687 100.136 27.0581C99.9502 27.4341 99.6768 27.7173 99.3154 27.9077C98.9541 28.103 98.5122 28.2007 97.9897 28.2007C97.8335 28.2007 97.6724 28.1885 97.5063 28.1641C97.3354 28.1445 97.1743 28.1152 97.0229 28.0762L97.0303 26.6992C97.1328 26.7188 97.2427 26.7334 97.3599 26.7432C97.4722 26.7578 97.5796 26.7651 97.6821 26.7651C97.8921 26.7651 98.0679 26.7285 98.2095 26.6553C98.3511 26.582 98.4585 26.4673 98.5317 26.311C98.605 26.1548 98.6416 25.9473 98.6416 25.6885V17.0752ZM98.4878 14.9951C98.4878 14.7266 98.5781 14.5044 98.7588 14.3286C98.9395 14.1479 99.186 14.0576 99.4985 14.0576C99.8159 14.0576 100.062 14.1479 100.238 14.3286C100.419 14.5044 100.509 14.7266 100.509 14.9951C100.509 15.2588 100.419 15.4785 100.238 15.6543C100.062 15.8301 99.8159 15.918 99.4985 15.918C99.186 15.918 98.9395 15.8301 98.7588 15.6543C98.5781 15.4785 98.4878 15.2588 98.4878 14.9951ZM110.937 22.854C110.937 22.6782 110.893 22.5195 110.805 22.3779C110.717 22.2314 110.549 22.0996 110.3 21.9824C110.056 21.8652 109.694 21.7578 109.216 21.6602C108.796 21.5674 108.41 21.4575 108.059 21.3306C107.712 21.1987 107.414 21.04 107.165 20.8545C106.916 20.6689 106.723 20.4492 106.586 20.1953C106.45 19.9414 106.381 19.6484 106.381 19.3164C106.381 18.9941 106.452 18.689 106.594 18.4009C106.735 18.1128 106.938 17.8589 107.202 17.6392C107.465 17.4194 107.785 17.2461 108.161 17.1191C108.542 16.9922 108.967 16.9287 109.436 16.9287C110.1 16.9287 110.668 17.041 111.142 17.2656C111.621 17.4854 111.987 17.7856 112.241 18.1665C112.495 18.5425 112.622 18.9673 112.622 19.4409H110.856C110.856 19.231 110.803 19.0356 110.695 18.855C110.593 18.6694 110.437 18.5205 110.227 18.4082C110.017 18.291 109.753 18.2324 109.436 18.2324C109.133 18.2324 108.881 18.2812 108.681 18.3789C108.486 18.4717 108.339 18.5938 108.242 18.7451C108.149 18.8965 108.103 19.0625 108.103 19.2432C108.103 19.375 108.127 19.4946 108.176 19.6021C108.229 19.7046 108.317 19.7998 108.439 19.8877C108.562 19.9707 108.728 20.0488 108.938 20.1221C109.152 20.1953 109.421 20.2661 109.743 20.3345C110.349 20.4614 110.869 20.625 111.303 20.8252C111.743 21.0205 112.08 21.2744 112.314 21.5869C112.548 21.8945 112.666 22.2852 112.666 22.7588C112.666 23.1104 112.59 23.4326 112.438 23.7256C112.292 24.0137 112.077 24.2651 111.794 24.48C111.511 24.6899 111.171 24.8535 110.776 24.9707C110.385 25.0879 109.946 25.1465 109.458 25.1465C108.74 25.1465 108.132 25.0195 107.634 24.7656C107.136 24.5068 106.757 24.1772 106.499 23.7769C106.245 23.3716 106.118 22.9517 106.118 22.5171H107.824C107.844 22.8442 107.934 23.1055 108.095 23.3008C108.261 23.4912 108.466 23.6304 108.71 23.7183C108.959 23.8013 109.216 23.8428 109.479 23.8428C109.797 23.8428 110.063 23.8013 110.278 23.7183C110.493 23.6304 110.656 23.5132 110.769 23.3667C110.881 23.2153 110.937 23.0444 110.937 22.854ZM116.319 17.0752V25H114.547V17.0752H116.319ZM114.43 14.9951C114.43 14.7266 114.518 14.5044 114.693 14.3286C114.874 14.1479 115.123 14.0576 115.44 14.0576C115.753 14.0576 116 14.1479 116.18 14.3286C116.361 14.5044 116.451 14.7266 116.451 14.9951C116.451 15.2588 116.361 15.4785 116.18 15.6543C116 15.8301 115.753 15.918 115.44 15.918C115.123 15.918 114.874 15.8301 114.693 15.6543C114.518 15.4785 114.43 15.2588 114.43 14.9951ZM121.965 25.1465C121.379 25.1465 120.85 25.0513 120.376 24.8608C119.907 24.6655 119.507 24.3945 119.175 24.0479C118.848 23.7012 118.596 23.2935 118.42 22.8247C118.245 22.356 118.157 21.8506 118.157 21.3086V21.0156C118.157 20.3955 118.247 19.834 118.428 19.3311C118.608 18.8281 118.86 18.3984 119.182 18.042C119.504 17.6807 119.885 17.4048 120.325 17.2144C120.764 17.0239 121.24 16.9287 121.753 16.9287C122.319 16.9287 122.815 17.0239 123.24 17.2144C123.665 17.4048 124.016 17.6733 124.294 18.02C124.578 18.3618 124.788 18.7695 124.924 19.2432C125.066 19.7168 125.137 20.2393 125.137 20.8105V21.5649H119.014V20.2979H123.394V20.1587C123.384 19.8413 123.32 19.5435 123.203 19.2651C123.091 18.9868 122.917 18.7622 122.683 18.5913C122.449 18.4204 122.136 18.335 121.746 18.335C121.453 18.335 121.191 18.3984 120.962 18.5254C120.737 18.6475 120.549 18.8257 120.398 19.0601C120.247 19.2944 120.129 19.5776 120.046 19.9097C119.968 20.2368 119.929 20.6055 119.929 21.0156V21.3086C119.929 21.6553 119.976 21.9775 120.068 22.2754C120.166 22.5684 120.308 22.8247 120.493 23.0444C120.679 23.2642 120.903 23.4375 121.167 23.5645C121.431 23.6865 121.731 23.7476 122.068 23.7476C122.493 23.7476 122.871 23.6621 123.203 23.4912C123.535 23.3203 123.823 23.0786 124.067 22.7661L124.998 23.667C124.827 23.916 124.604 24.1553 124.331 24.3848C124.058 24.6094 123.723 24.7925 123.328 24.9341C122.937 25.0757 122.483 25.1465 121.965 25.1465ZM122.852 24.3628L123.694 24.7876C123.469 24.9341 123.267 25.083 123.086 25.2344C122.905 25.3857 122.764 25.542 122.661 25.7031C122.563 25.8691 122.515 26.0498 122.515 26.2451C122.515 26.3965 122.554 26.5186 122.632 26.6113C122.71 26.7041 122.844 26.7505 123.035 26.7505C123.181 26.7505 123.308 26.731 123.416 26.6919C123.523 26.6528 123.613 26.6162 123.687 26.582L123.855 27.5928C123.733 27.666 123.577 27.7368 123.386 27.8052C123.196 27.8784 122.954 27.915 122.661 27.915C122.231 27.915 121.865 27.7905 121.562 27.5415C121.265 27.2974 121.116 26.936 121.116 26.4575C121.116 26.2036 121.172 25.9521 121.284 25.7031C121.396 25.459 121.58 25.2222 121.833 24.9927C122.087 24.7632 122.427 24.5532 122.852 24.3628ZM136.817 23.5938V25H130.914V23.5938H136.817ZM136.656 18.1738L131.514 25H130.372V23.8647L135.484 17.0752H136.656V18.1738ZM135.975 17.0752V18.4814H130.459V17.0752H135.975ZM150.768 19.5508V23.623C150.616 23.8232 150.379 24.043 150.057 24.2822C149.74 24.5166 149.317 24.7192 148.79 24.8901C148.263 25.061 147.606 25.1465 146.82 25.1465C146.151 25.1465 145.538 25.0342 144.981 24.8096C144.425 24.5801 143.944 24.2456 143.539 23.8062C143.138 23.3667 142.828 22.832 142.608 22.2021C142.389 21.5674 142.279 20.8447 142.279 20.0342V19.2944C142.279 18.4888 142.379 17.771 142.579 17.1411C142.784 16.5063 143.077 15.9692 143.458 15.5298C143.839 15.0903 144.298 14.7583 144.835 14.5337C145.377 14.3042 145.99 14.1895 146.673 14.1895C147.547 14.1895 148.27 14.3359 148.841 14.6289C149.417 14.917 149.862 15.3174 150.174 15.8301C150.487 16.3428 150.685 16.9287 150.768 17.5879H148.966C148.907 17.2168 148.792 16.8848 148.622 16.5918C148.456 16.2988 148.216 16.0693 147.904 15.9033C147.596 15.7324 147.196 15.647 146.703 15.647C146.278 15.647 145.904 15.7275 145.582 15.8887C145.26 16.0498 144.991 16.2866 144.776 16.5991C144.566 16.9116 144.408 17.2925 144.3 17.7417C144.193 18.1909 144.139 18.7036 144.139 19.2798V20.0342C144.139 20.6201 144.2 21.1401 144.322 21.5942C144.449 22.0483 144.63 22.4316 144.864 22.7441C145.104 23.0566 145.394 23.2935 145.736 23.4546C146.078 23.6108 146.463 23.689 146.893 23.689C147.313 23.689 147.657 23.6548 147.926 23.5864C148.194 23.5132 148.407 23.4277 148.563 23.3301C148.724 23.2275 148.849 23.1299 148.937 23.0371V20.9204H146.717V19.5508H150.768ZM152.51 21.1255V20.957C152.51 20.3857 152.593 19.856 152.759 19.3677C152.925 18.8745 153.164 18.4473 153.477 18.0859C153.794 17.7197 154.18 17.4365 154.634 17.2363C155.093 17.0312 155.61 16.9287 156.187 16.9287C156.768 16.9287 157.285 17.0312 157.739 17.2363C158.198 17.4365 158.586 17.7197 158.904 18.0859C159.221 18.4473 159.463 18.8745 159.629 19.3677C159.795 19.856 159.878 20.3857 159.878 20.957V21.1255C159.878 21.6968 159.795 22.2266 159.629 22.7148C159.463 23.2031 159.221 23.6304 158.904 23.9966C158.586 24.3579 158.201 24.6411 157.747 24.8462C157.292 25.0464 156.777 25.1465 156.201 25.1465C155.62 25.1465 155.1 25.0464 154.641 24.8462C154.187 24.6411 153.801 24.3579 153.484 23.9966C153.167 23.6304 152.925 23.2031 152.759 22.7148C152.593 22.2266 152.51 21.6968 152.51 21.1255ZM154.275 20.957V21.1255C154.275 21.4819 154.312 21.8188 154.385 22.1362C154.458 22.4536 154.573 22.7319 154.729 22.9712C154.885 23.2104 155.085 23.3984 155.33 23.5352C155.574 23.6719 155.864 23.7402 156.201 23.7402C156.528 23.7402 156.812 23.6719 157.051 23.5352C157.295 23.3984 157.495 23.2104 157.651 22.9712C157.808 22.7319 157.922 22.4536 157.996 22.1362C158.074 21.8188 158.113 21.4819 158.113 21.1255V20.957C158.113 20.6055 158.074 20.2734 157.996 19.9609C157.922 19.6436 157.805 19.3628 157.644 19.1187C157.488 18.8745 157.288 18.6841 157.043 18.5474C156.804 18.4058 156.519 18.335 156.187 18.335C155.854 18.335 155.566 18.4058 155.322 18.5474C155.083 18.6841 154.885 18.8745 154.729 19.1187C154.573 19.3628 154.458 19.6436 154.385 19.9609C154.312 20.2734 154.275 20.6055 154.275 20.957ZM161.239 21.1255V20.957C161.239 20.3857 161.322 19.856 161.488 19.3677C161.654 18.8745 161.894 18.4473 162.206 18.0859C162.523 17.7197 162.909 17.4365 163.363 17.2363C163.822 17.0312 164.34 16.9287 164.916 16.9287C165.497 16.9287 166.015 17.0312 166.469 17.2363C166.928 17.4365 167.316 17.7197 167.633 18.0859C167.951 18.4473 168.192 18.8745 168.358 19.3677C168.524 19.856 168.607 20.3857 168.607 20.957V21.1255C168.607 21.6968 168.524 22.2266 168.358 22.7148C168.192 23.2031 167.951 23.6304 167.633 23.9966C167.316 24.3579 166.93 24.6411 166.476 24.8462C166.022 25.0464 165.507 25.1465 164.931 25.1465C164.35 25.1465 163.83 25.0464 163.371 24.8462C162.917 24.6411 162.531 24.3579 162.213 23.9966C161.896 23.6304 161.654 23.2031 161.488 22.7148C161.322 22.2266 161.239 21.6968 161.239 21.1255ZM163.004 20.957V21.1255C163.004 21.4819 163.041 21.8188 163.114 22.1362C163.188 22.4536 163.302 22.7319 163.458 22.9712C163.615 23.2104 163.815 23.3984 164.059 23.5352C164.303 23.6719 164.594 23.7402 164.931 23.7402C165.258 23.7402 165.541 23.6719 165.78 23.5352C166.024 23.3984 166.225 23.2104 166.381 22.9712C166.537 22.7319 166.652 22.4536 166.725 22.1362C166.803 21.8188 166.842 21.4819 166.842 21.1255V20.957C166.842 20.6055 166.803 20.2734 166.725 19.9609C166.652 19.6436 166.535 19.3628 166.374 19.1187C166.217 18.8745 166.017 18.6841 165.773 18.5474C165.534 18.4058 165.248 18.335 164.916 18.335C164.584 18.335 164.296 18.4058 164.052 18.5474C163.812 18.6841 163.615 18.8745 163.458 19.1187C163.302 19.3628 163.188 19.6436 163.114 19.9609C163.041 20.2734 163.004 20.6055 163.004 20.957ZM175.381 17.0752H176.985V24.7803C176.985 25.4932 176.834 26.0986 176.531 26.5967C176.229 27.0947 175.806 27.4731 175.264 27.7319C174.722 27.9956 174.095 28.1274 173.382 28.1274C173.079 28.1274 172.742 28.0835 172.371 27.9956C172.005 27.9077 171.648 27.7661 171.302 27.5708C170.96 27.3804 170.674 27.1289 170.445 26.8164L171.272 25.7764C171.556 26.1133 171.868 26.3599 172.21 26.5161C172.552 26.6724 172.911 26.7505 173.287 26.7505C173.692 26.7505 174.036 26.6748 174.319 26.5234C174.607 26.377 174.83 26.1597 174.986 25.8716C175.142 25.5835 175.22 25.2319 175.22 24.8169V18.8696L175.381 17.0752ZM169.998 21.1255V20.9717C169.998 20.3711 170.071 19.8242 170.218 19.3311C170.364 18.833 170.574 18.4058 170.848 18.0493C171.121 17.688 171.453 17.4121 171.844 17.2217C172.234 17.0264 172.676 16.9287 173.169 16.9287C173.682 16.9287 174.119 17.0215 174.48 17.207C174.847 17.3926 175.152 17.6587 175.396 18.0054C175.64 18.3472 175.831 18.7573 175.967 19.2358C176.109 19.7095 176.214 20.2368 176.282 20.8179V21.3086C176.219 21.875 176.111 22.3926 175.96 22.8613C175.809 23.3301 175.608 23.7354 175.359 24.0771C175.11 24.4189 174.803 24.6826 174.437 24.8682C174.075 25.0537 173.648 25.1465 173.155 25.1465C172.671 25.1465 172.234 25.0464 171.844 24.8462C171.458 24.646 171.126 24.3652 170.848 24.0039C170.574 23.6426 170.364 23.2178 170.218 22.7295C170.071 22.2363 169.998 21.7017 169.998 21.1255ZM171.763 20.9717V21.1255C171.763 21.4868 171.797 21.8237 171.866 22.1362C171.939 22.4487 172.049 22.7246 172.195 22.9639C172.347 23.1982 172.537 23.3838 172.767 23.5205C173.001 23.6523 173.277 23.7183 173.594 23.7183C174.009 23.7183 174.349 23.6304 174.612 23.4546C174.881 23.2788 175.086 23.042 175.228 22.7441C175.374 22.4414 175.477 22.1045 175.535 21.7334V20.4077C175.506 20.1196 175.445 19.8511 175.352 19.6021C175.264 19.353 175.145 19.1357 174.993 18.9502C174.842 18.7598 174.651 18.6133 174.422 18.5107C174.192 18.4033 173.921 18.3496 173.609 18.3496C173.292 18.3496 173.016 18.418 172.781 18.5547C172.547 18.6914 172.354 18.8794 172.203 19.1187C172.056 19.3579 171.946 19.6362 171.873 19.9536C171.8 20.271 171.763 20.6104 171.763 20.9717ZM180.925 13.75V25H179.152V13.75H180.925ZM186.571 25.1465C185.985 25.1465 185.455 25.0513 184.981 24.8608C184.513 24.6655 184.112 24.3945 183.78 24.0479C183.453 23.7012 183.202 23.2935 183.026 22.8247C182.85 22.356 182.762 21.8506 182.762 21.3086V21.0156C182.762 20.3955 182.853 19.834 183.033 19.3311C183.214 18.8281 183.465 18.3984 183.788 18.042C184.11 17.6807 184.491 17.4048 184.93 17.2144C185.37 17.0239 185.846 16.9287 186.358 16.9287C186.925 16.9287 187.42 17.0239 187.845 17.2144C188.27 17.4048 188.622 17.6733 188.9 18.02C189.183 18.3618 189.393 18.7695 189.53 19.2432C189.671 19.7168 189.742 20.2393 189.742 20.8105V21.5649H183.619V20.2979H187.999V20.1587C187.989 19.8413 187.926 19.5435 187.809 19.2651C187.696 18.9868 187.523 18.7622 187.289 18.5913C187.054 18.4204 186.742 18.335 186.351 18.335C186.058 18.335 185.797 18.3984 185.567 18.5254C185.343 18.6475 185.155 18.8257 185.003 19.0601C184.852 19.2944 184.735 19.5776 184.652 19.9097C184.574 20.2368 184.535 20.6055 184.535 21.0156V21.3086C184.535 21.6553 184.581 21.9775 184.674 22.2754C184.771 22.5684 184.913 22.8247 185.099 23.0444C185.284 23.2642 185.509 23.4375 185.772 23.5645C186.036 23.6865 186.336 23.7476 186.673 23.7476C187.098 23.7476 187.477 23.6621 187.809 23.4912C188.141 23.3203 188.429 23.0786 188.673 22.7661L189.603 23.667C189.432 23.916 189.21 24.1553 188.937 24.3848C188.663 24.6094 188.329 24.7925 187.933 24.9341C187.542 25.0757 187.088 25.1465 186.571 25.1465Z\",\n fill: \"black\",\n fillOpacity: 0.54\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5_954\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n fill: \"white\",\n transform: \"translate(11 11)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGoogleButtonContent);\nexport default __webpack_public_path__ + \"static/media/GoogleButtonContent.8ecf212b.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\nimport { colors } from '../components/theme/colors';\n\nexport const AuthPage = styled.div`\n background-color: ${colors.lightGray};\n min-height: 100dvh;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const AuthPageContentCard = styled.div`\n background-color: white;\n border-radius: 16px;\n padding: 24px;\n width: 100%;\n max-width: 400px;\n margin: 32px 8px;\n\n @media (max-width: 365px) {\n margin-left: 0;\n margin-right: 0;\n }\n`;\n","import { signInWithPopup } from 'firebase/auth';\nimport React, { useState } from 'react';\nimport { Button } from 'rsuite';\nimport { auth, googleAuthProvider } from './FirebaseApp';\nimport { colors } from '../components/theme/colors';\nimport { ReactComponent as GoogleButton } from '../components/utils/icons/GoogleButtonContent.svg';\n\ninterface Props {\n onSuccess: () => void;\n onError: () => void;\n}\n\nexport function LogInWithGoogleButton({ onSuccess, onError }: Props) {\n const [isLoading, setIsLoading] = useState(false);\n const loginWithGoogle = async () => {\n setIsLoading(true);\n try {\n await signInWithPopup(auth, googleAuthProvider);\n onSuccess();\n } catch (ex) {\n onError();\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n \n \n \n );\n}\n","import React, { useState } from 'react';\nimport { Button, Divider, Input, Loader } from 'rsuite';\nimport {\n createUserWithEmailAndPassword,\n getAuth,\n sendEmailVerification\n} from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../../components/utils/icons/PriceMapLogoWithText.svg';\nimport { colors } from '../../components/theme/colors';\nimport { Link, Navigate, useNavigate } from 'react-router-dom';\nimport { AuthPage, AuthPageContentCard } from '../AuthPageLayout';\nimport { LogInWithGoogleButton } from '../LogInWithGoogleButton';\n\nconst genericErrorReason = 'Coś poszło nie tak..';\n\nfunction recognizeErrorReason(message: string): string {\n if (message.indexOf('auth/wrong-password') > 0) return 'Błędne hasło';\n if (message.indexOf('auth/user-not-found') > 0)\n return 'Nie mamy takiego użytkownika 🤔';\n if (message.indexOf('auth/invalid-email') > 0)\n return 'Wygląda na to, że email jest niepoprawny';\n if (message.indexOf('auth/email-already-in-use') > 0)\n return 'Ten email jest już zajęty!';\n if (message.indexOf('auth/too-many-requests') > 0)\n return 'Ups, musieliśmy na chwilę zablokować dostęp do tego konta (zbyt wiele prób). Spróbuj zresetować hasło!';\n console.log(`error message: ${message}`);\n return genericErrorReason;\n}\n\nexport const CreateAccount = () => {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState();\n const navigate = useNavigate();\n\n const auth = getAuth();\n\n if (auth.currentUser != null) {\n return ;\n }\n\n const createAccount = async () => {\n try {\n setIsLoading(true);\n await createUserWithEmailAndPassword(auth, email, password);\n await sendEmailVerification(getAuth().currentUser!, {\n url: 'https://app.pricemap.pl'\n });\n navigate('/');\n } catch (ex: any) {\n if (ex.message == null || typeof ex.message !== 'string') {\n setError(genericErrorReason);\n setIsLoading(false);\n return;\n }\n\n const strMessage = ex.message as string;\n setError(recognizeErrorReason(strMessage));\n setIsLoading(false);\n }\n };\n\n const canSubmit =\n !isLoading &&\n email.length > 3 &&\n email.indexOf('@') > 0 &&\n password.length >= 6;\n\n return (\n \n \n {\n e.preventDefault();\n createAccount();\n }}\n >\n \n\n

\n Utwórz konto jednym kliknięciem logując się z Google\n

\n\n navigate('/')}\n onError={() => undefined}\n />\n\n
\n lub\n
\n\n

\n Podaj email i utwórz hasło\n

\n\n \n \n {error && (\n \n {error}\n \n )}\n
\n \n {isLoading && }\n {!isLoading && 'Utwórz konto w PriceMap'}\n \n \n \n \n \n \n \n );\n};\n","export function isValidEmail(email: string) {\n return email.length > 3 && email.indexOf('@') > 0;\n}\n","export function stringIsNullOrWhitespace(x: string | null | undefined) {\n return x === null || x === undefined || x.toString().trim() === '';\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\nimport {\n getAuth,\n isSignInWithEmailLink,\n signInWithEmailLink\n} from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { Button, Input, Loader } from 'rsuite';\nimport { colors } from '../components/theme/colors';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { isValidEmail } from './isValidEmail';\nimport { stringIsNullOrWhitespace } from '../stringIsNullOrWhitespace';\n\nfunction ReenterEmailForm({\n onSubmit,\n loading\n}: {\n onSubmit: (email: string) => void;\n loading?: boolean;\n}) {\n const [email, setEmail] = useState('');\n const canSubmit = !loading && isValidEmail(email);\n\n return (\n {\n e.preventDefault();\n onSubmit(email);\n }}\n >\n \n\n \n {loading && }\n Zaloguj się\n \n \n );\n}\n\ntype Step = 'initializing' | 'reenter-email' | 'error';\n\n// currently used only for completing passwordless sign in\n// it used to also be used for for resetting, verifying & recovering user email\n// - old implementation can still be found in old-password-flow folder\n// based on https://firebase.google.com/docs/auth/custom-email-handler\nexport function ManageUserEmail() {\n const [step, setStep] = useState('initializing');\n const navigate = useNavigate();\n const auth = getAuth();\n\n const searchParams = new URLSearchParams(window.location.search);\n const continueUrl = searchParams.get('continueUrl');\n\n const completePasswordlessSignIn = useCallback(\n async (userEmail?: string) => {\n setStep('initializing');\n\n if (!isSignInWithEmailLink(auth, window.location.href)) {\n setStep('error');\n return;\n }\n\n const getContinueUrl = (): URL | undefined => {\n if (stringIsNullOrWhitespace(continueUrl)) return undefined;\n\n try {\n return new URL(continueUrl!);\n } catch (ex) {\n console.log(ex);\n return undefined;\n }\n };\n\n const parsedContinueUrl = getContinueUrl();\n const email =\n userEmail ??\n parsedContinueUrl?.searchParams.get('emailForSignIn');\n\n if (!email) {\n // it should always be prepopulated, but its here just as a backup\n setStep('reenter-email');\n return;\n }\n\n try {\n await signInWithEmailLink(auth, email, window.location.href);\n parsedContinueUrl?.searchParams.delete('emailForSignIn');\n const navigateTo = parsedContinueUrl\n ? `${parsedContinueUrl.pathname}${parsedContinueUrl.search}`\n : '/';\n navigate(navigateTo);\n } catch (ex) {\n console.error(ex);\n setStep('error');\n }\n },\n\n // disabling cause I'm not sure if auth and navigate are also memoed correctly\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n completePasswordlessSignIn();\n }, [completePasswordlessSignIn]);\n\n if (step === 'initializing')\n return (\n \n \n \n\n \n \n \n );\n\n if (step === 'reenter-email')\n return (\n \n \n \n\n

\n Żeby przejść do aplikacji musimy potwierdzić Twój adres\n email, podaj go proszę jeszcze raz.\n

\n\n \n \n
\n );\n\n return (\n \n \n \n\n

\n Coś poszło nie tak, być może link zdążył wygasnąć.\n
\n Spróbuj zalogować się ponownie\n

\n\n \n \n Powrót do logowania\n \n \n \n
\n );\n}\n","export enum OfferType {\n Sale,\n Rental\n}\n\nexport const getDisplayedOfferType = (offerType: OfferType): string => {\n if (offerType === OfferType.Sale) {\n return 'Sprzedaż';\n } else if (offerType === OfferType.Rental) {\n return 'Wynajem';\n } else {\n return '---BŁĄD---';\n }\n};\n","import { CSSTransition, SwitchTransition } from 'react-transition-group';\nimport { useRef } from 'react';\nimport React from 'react';\nimport './fadeStyles.css';\n\nconst duration = 300;\n\nconst defaultStyle = {\n transition: `opacity ${duration}ms ease-in-out`,\n opacity: 0\n};\n\nconst transitionStyles = {\n entering: { opacity: 1 },\n entered: { opacity: 1 },\n exiting: { opacity: 0 },\n exited: { opacity: 0 }\n};\n\nexport function Fade({ stateKey, children }: any) {\n const nodeRef = useRef(null);\n return (\n \n {\n (nodeRef.current as any).addEventListener(\n 'transitionend',\n done,\n false\n );\n }}\n classNames=\"fade\"\n >\n {(state) => (\n \n
{children}
\n
\n )}\n \n \n );\n}\n","export enum City {\n Krakow = 0,\n Warszawa = 1,\n Wroclaw = 2,\n Poznan = 3,\n Rzeszow = 4,\n Lodz = 5,\n Gdansk = 6,\n Sopot = 7,\n Gdynia = 8,\n Lublin = 9,\n Kielce = 10,\n Katowice = 11,\n Bydgoszcz = 12,\n Torun = 13,\n Bialystok = 14,\n Opole = 15,\n Szczecin = 16,\n Olsztyn = 17,\n ZielonaGora = 18,\n JeleniaGora = 19,\n Radom = 20,\n Czestochowa = 21,\n BielskoBiala = 22,\n Sosnowiec = 23,\n Zabrze = 24,\n RudaSlaska = 25,\n Rybnik = 26,\n Bytom = 27,\n Chorzow = 28,\n Gliwice = 29,\n DabrowaGornicza = 30,\n SiemianowiceSlaskie = 31,\n Tychy = 32,\n GorzowWielkopolski = 33,\n Elblag = 34,\n Plock = 35,\n Koszalin = 36,\n Tarnow = 37,\n Wloclawek = 38,\n Walbrzych = 39\n}\n\nexport const getDisplayedCity = (city: City): string => {\n switch (city) {\n case City.Krakow:\n return 'Kraków';\n case City.Warszawa:\n return 'Warszawa';\n case City.Wroclaw:\n return 'Wrocław';\n case City.Poznan:\n return 'Poznań';\n case City.Rzeszow:\n return 'Rzeszów';\n case City.Lodz:\n return 'Łódź';\n case City.Gdansk:\n return 'Gdańsk';\n case City.Sopot:\n return \"Sopot\";\n case City.Gdynia:\n return \"Gdynia\";\n case City.Lublin:\n return \"Lublin\";\n case City.Kielce:\n return \"Kielce\";\n case City.Katowice:\n return \"Katowice\";\n case City.Bydgoszcz:\n return \"Bydgoszcz\";\n case City.Torun:\n return \"Toruń\";\n case City.Bialystok:\n return \"Białystok\";\n case City.Opole:\n return \"Opole\";\n case City.Szczecin:\n return \"Szczecin\";\n case City.Olsztyn:\n return \"Olsztyn\";\n case City.ZielonaGora:\n return \"Zielona Góra\";\n case City.JeleniaGora:\n return \"Jelenia Góra\";\n case City.Radom:\n return \"Radom\";\n case City.Czestochowa:\n return \"Częstochowa\";\n case City.BielskoBiala:\n return \"Bielsko-Biała\";\n case City.Sosnowiec:\n return \"Sosnowiec\";\n case City.Zabrze:\n return \"Zabrze\";\n case City.RudaSlaska:\n return \"Ruda Śląska\";\n case City.Rybnik:\n return \"Rybnik\";\n case City.Bytom:\n return \"Bytom\";\n case City.Chorzow:\n return \"Chorzów\";\n case City.Gliwice:\n return \"Gliwice\";\n case City.DabrowaGornicza:\n return \"Dąbrowa Górnicza\";\n case City.SiemianowiceSlaskie:\n return \"Siemianowice Śląskie\";\n case City.Tychy:\n return \"Tychy\";\n case City.GorzowWielkopolski:\n return \"Gorzów Wielkopolski\";\n case City.Elblag:\n return \"Elbląg\";\n case City.Plock:\n return \"Płock\";\n case City.Koszalin:\n return \"Koszalin\";\n case City.Tarnow:\n return \"Tarnów\";\n case City.Wloclawek:\n return \"Włocławek\";\n case City.Walbrzych:\n return \"Wałbrzych\";\n default:\n return '!!! błąd !!!';\n }\n};\n","import React from 'react';\nimport { Button, Divider } from 'rsuite';\nimport { OfferType } from '../OfferType';\nimport { colors } from '../theme/colors';\nimport { StepDescription } from './CreateFilterForm';\nimport { Link } from 'react-router-dom';\n\nexport interface Props {\n onSelect: (x: OfferType) => void;\n displayRegisterLink: boolean;\n}\nexport const SelectOfferTypeStep = ({\n onSelect,\n displayRegisterLink\n}: Props) => {\n return (\n
\n \n Chcesz wynająć mieszkanie czy kupić?\n \n onSelect(OfferType.Rental)}\n >\n Chcę wynająć\n \n onSelect(OfferType.Sale)}\n >\n Chcę kupić\n \n\n {displayRegisterLink && (\n <>\n \n \n \n Mam już konto, chcę się zalogować\n \n \n \n )}\n
\n );\n};\n","import React from 'react';\nimport { useState } from 'react';\nimport { Button, Input } from 'rsuite';\nimport { City, getDisplayedCity } from '../City';\nimport { colors } from '../theme/colors';\nimport { StepDescription } from './CreateFilterForm';\n\nexport interface Props {\n onSelect: (x: City) => void;\n onBack: () => void;\n}\n\nexport const SelectCityStep = ({ onSelect, onBack }: Props) => {\n const [search, setSearch] = useState('');\n const cities = [\n City.Warszawa,\n City.Krakow,\n City.Lodz,\n City.Gdansk,\n City.Poznan,\n City.Wroclaw,\n City.Rzeszow,\n City.Sopot,\n City.Gdynia,\n City.Lublin,\n City.Kielce,\n City.Katowice,\n City.Bydgoszcz,\n City.Torun,\n City.Bialystok,\n City.Opole,\n City.Szczecin,\n City.Olsztyn,\n City.ZielonaGora,\n City.JeleniaGora,\n City.Radom,\n City.Czestochowa,\n City.BielskoBiala,\n City.Sosnowiec,\n City.Zabrze,\n City.RudaSlaska,\n City.Rybnik,\n City.Bytom,\n City.Chorzow,\n City.Gliwice,\n City.DabrowaGornicza,\n City.SiemianowiceSlaskie,\n City.Tychy,\n City.GorzowWielkopolski,\n City.Elblag,\n City.Plock,\n City.Koszalin,\n City.Tarnow,\n City.Wloclawek,\n City.Walbrzych\n ];\n\n const filteredCities = cities.filter((city) =>\n getDisplayedCity(city).toLowerCase().startsWith(search.toLowerCase())\n );\n\n return (\n
\n Jakie miasto cię interesuje?\n \n \n {filteredCities.map((x) => (\n \n ))}\n
\n \n \n );\n};\n","import { SearchCriteriaDto } from './SearchCriteriaDto';\nimport { Alert } from 'rsuite';\nimport { SearchConfiguration } from './DefaultSearchConfiguration';\n\nexport function getDefaultSearchCriteria(\n defaultSearchConfiguration: SearchConfiguration\n): SearchCriteriaDto {\n return {\n propertyType: defaultSearchConfiguration.propertyType,\n city: defaultSearchConfiguration.city,\n offerType: defaultSearchConfiguration.offerType,\n priceFrom: null,\n priceTo: null,\n includeEmptyPrice: defaultSearchConfiguration.includeEmptyPrice,\n sizeFrom: null,\n sizeTo: null,\n includeEmptySize: defaultSearchConfiguration.includeEmptySize,\n pricePerSquareMeterFrom: null,\n pricePerSquareMeterTo: null,\n includeEmptyPricePerSquareMeter:\n defaultSearchConfiguration.includeEmptyPricePerSquareMeter,\n market: null,\n origin: null,\n districts: [],\n includeEmptyDistrict: defaultSearchConfiguration.includeEmptyDistrict,\n includedWords: [],\n excludedWords: [],\n maxOffersAge: null,\n roomsNumbers: [],\n purposes: []\n };\n}\n\nexport function getEmptyFilter() {\n return {\n id: null,\n name: null,\n searchCriteria: null,\n isFilterLoading: false,\n saveChangesModalState: {\n isOpen: false\n }\n };\n}\n\nexport function handleIncorrectNumber(value: any) {\n if (!isValidNumber(value)) {\n return '';\n }\n\n return value;\n}\n\nexport function showAlert(value: string, level: 'info' | 'error' = 'info') {\n if (level == 'error') {\n Alert.error(value, 0);\n } else {\n Alert.info(value);\n }\n}\n\nexport function showGenericErrorAlert() {\n Alert.error(\n 'Ups! coś poszło nie tak. Jeśli problem będzie się powtarzał skontaktuj się z nami'\n );\n}\n\nexport function getDisplayedRange(from: any, to: any, includeEmpty?: boolean) {\n let displayedRange = isValidNumber(from) ? ` od ${formatNumber(from)}` : '';\n displayedRange += isValidNumber(to) ? ` do ${formatNumber(to)}` : '';\n\n if (includeEmpty !== undefined) {\n if (includeEmpty && displayedRange !== '') {\n displayedRange += ' lub brak podanej';\n } else if (!includeEmpty && displayedRange === '') {\n displayedRange += ' ukryj oferty bez podanej';\n }\n }\n return displayedRange;\n}\n\nexport function getDisplayedEnumArray(\n values: any[],\n getNameFunction: (x: any) => string\n) {\n let newValues = [...values];\n\n return newValues.length > 0\n ? `${newValues\n .sort((a, b) => a - b)\n .map((x) => getNameFunction(x))\n .join(', ')}`\n : '';\n}\n\nexport function formatNumber(value: any) {\n if (!isValidNumber(value)) {\n return value;\n }\n\n return prettifyNumber(value);\n}\n\nexport function formatAndRoundNumber(value: any) {\n if (!isValidNumber(value)) {\n return value;\n }\n\n let valueToDisplay: number;\n let suffix = '';\n\n if (value >= 20_000) {\n valueToDisplay = Math.round(value / 10_000) * 10;\n suffix = 'tys.';\n } else if (value >= 1000) {\n valueToDisplay = Math.round(value / 100) * 100;\n } else if (value >= 100) {\n valueToDisplay = Math.round(value / 10) * 10;\n } else {\n valueToDisplay = value;\n }\n\n return `${prettifyNumber(valueToDisplay)} ${suffix}`;\n}\n\nconst prettifyNumber = (number: number) => {\n return number.toLocaleString('pl-PL');\n};\n\nexport function isValidNumber(value: any) {\n const parsedInt = parseInt(value);\n\n if (parsedInt === null || parsedInt === undefined || isNaN(parsedInt)) {\n return false;\n }\n\n return true;\n}\n\nexport function formatDate(date: Date) {\n let month = '' + (date.getMonth() + 1);\n let day = '' + date.getDate();\n const year = date.getFullYear();\n\n if (month.length < 2) month = '0' + month;\n if (day.length < 2) day = '0' + day;\n\n return [day, month, year].join('.');\n}\n\nexport function formatDateShort(date: Date | null): string | null {\n if (date == null) {\n return null;\n }\n\n let month = '' + (date.getMonth() + 1);\n let day = '' + date.getDate();\n const year = date.getFullYear().toString().substring(2);\n\n if (month.length < 2) month = '0' + month;\n if (day.length < 2) day = '0' + day;\n\n return [day, month, year].join('.');\n}\n\nexport const isNullOrWhiteSpace = (string: string) => {\n return string == null || string.trim() === '';\n};\n","import { showGenericErrorAlert } from './helpers';\nimport { apiAccessToken } from '../apiAccessToken';\n\nclass ApiCaller {\n async request(url, method, parameters) {\n const token = await apiAccessToken.getSilently();\n\n const headers = !token\n ? {\n 'Content-type': 'application/json'\n }\n : {\n Authorization: `Bearer ${token}`,\n 'Content-type': 'application/json'\n };\n\n const body = parameters == null ? null : JSON.stringify(parameters);\n\n const requestOptions = {\n method,\n headers,\n body\n };\n\n return await fetch(url, requestOptions);\n }\n\n async requestLegacy(url, method, parameters) {\n var response = await this.request(url, method, parameters);\n\n if (response.ok) {\n var jsonText = await response.text();\n return jsonText && JSON.parse(jsonText, reviveDateTime);\n } else {\n showGenericErrorAlert();\n }\n }\n\n async get(url) {\n return await this.requestLegacy(url, 'Get', null);\n }\n\n async post(url, parameters) {\n return await this.requestLegacy(url, 'Post', parameters);\n }\n\n async delete(url, parameters) {\n return await this.requestLegacy(url, 'Delete', parameters);\n }\n\n async put(url, parameters) {\n return await this.requestLegacy(url, 'Put', parameters);\n }\n}\n\nconst reviveDateTime = (_, value) => {\n if (typeof value === 'string') {\n const dateRegex =\n /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])([T\\s](([01]\\d|2[0-3]):[0-5]\\d|24:00)(:[0-5]\\d([.,]\\d+)?)?([zZ]|([+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?$/;\n const isDate = dateRegex.test(value);\n if (isDate) {\n return new Date(value);\n }\n }\n\n return value;\n};\n\nconst apiCaller = new ApiCaller();\n\nexport default apiCaller;\n","import { AdditionalFilterProperty } from '../AdditionalFilterProperty';\nimport apiCaller from '../ApiCaller';\nimport { City } from '../City';\nimport { FilterDto } from '../FilterDto';\nimport { Market } from '../Market';\nimport { OfferOrigin } from '../OfferOrigin';\nimport { OfferType } from '../OfferType';\nimport { RoomsNumber } from '../RoomsNumber';\n\nexport interface AddFilterDto {\n name: string;\n city: City;\n offerType: OfferType;\n districts: string[];\n includeEmptyDistrict: boolean;\n roomsNumbers: RoomsNumber[];\n priceFrom: number | null;\n priceTo: number | null;\n includeEmptyPrice: boolean;\n pricePerSquareMeterFrom: number | null;\n pricePerSquareMeterTo: number | null;\n sizeFrom: number | null;\n sizeTo: number | null;\n includeEmptySize: boolean;\n market: Market | null;\n origin: OfferOrigin | null;\n additionalFilterProperties: AdditionalFilterProperty[];\n}\n\nexport interface UpdateFilterDto extends AddFilterDto {\n id: number;\n sendEmailNotifications: boolean;\n}\n\nconst isGetFiltersResultFilterDto = (x: any): x is FilterDto[] => {\n if (!Array.isArray(x)) return false;\n for (let i = 0; i < x.length; i++) {\n if (x[i] == null) return false;\n if (typeof x[i].id !== 'number') return false;\n if (typeof x[i].name !== 'string') return false;\n if (!(x[i].creationDate instanceof Date)) return false;\n if (typeof x[i].searchCriteria !== 'object') return false;\n if (typeof x[i].sendEmailNotifications !== 'boolean') return false;\n }\n return true;\n};\n\nexport const getFilters = async (): Promise => {\n const data = await apiCaller.get('api/filters');\n if (isGetFiltersResultFilterDto(data)) return data;\n throw new Error('unknown response');\n};\n\ninterface UpdateFilterResultDto {\n status: string;\n updatedFilter: FilterDto;\n}\n\nconst isUpdateFilterResultDto = (x: any): x is UpdateFilterResultDto => {\n if (x.status !== undefined && typeof x.status === 'string') return true;\n return false;\n};\n\nexport const updateFilter = (\n updatedFilter: UpdateFilterDto\n): Promise =>\n apiCaller\n .request('api/public-filters', 'PUT', {\n ...updatedFilter\n })\n .then((response) => response.json())\n .then((data) => {\n if (isUpdateFilterResultDto(data)) return data;\n throw new Error('unknown response');\n });\n\nexport const deleteFilter = async (id: number): Promise =>\n await apiCaller.delete('api/filters', id);\n\nconst isGetDistrictsResultDto = (x: any): x is string[] => {\n if (Array.isArray(x)) {\n let isEveryItemString = true;\n x.forEach((y) => {\n if (typeof y !== 'string') {\n isEveryItemString = false;\n }\n });\n return isEveryItemString;\n }\n return false;\n};\n\nexport const getDistricts = async (city: City): Promise => {\n const data = await apiCaller.get(`api/districts/${city}`);\n if (isGetDistrictsResultDto(data)) return data;\n throw new Error('unknown response');\n};\n\ninterface AddFilterResultDto {\n status: string;\n newFilter: FilterDto;\n}\n\nconst isAddFilterResultDto = (x: any): x is AddFilterResultDto => {\n if (x.status !== undefined && typeof x.status === 'string') return true;\n return false;\n};\n\nexport const addFilter = async (\n filter: AddFilterDto\n): Promise => {\n const response = await apiCaller.request(\n 'api/public-filters',\n 'POST',\n filter\n );\n const data = await response.json();\n if (isAddFilterResultDto(data)) return data;\n throw new Error('unknown response');\n};\n\nexport type CheckFilterCriteriaDto = Omit;\nexport interface CheckFilterCriteriaResultDto {\n offersInLastWeek: number;\n}\n\nconst isCheckFilterCriteriaResultDto = (\n x: any\n): x is CheckFilterCriteriaResultDto => {\n if (\n x.offersInLastWeek !== undefined &&\n typeof x.offersInLastWeek === 'number'\n )\n return true;\n return false;\n};\n\nexport const checkFilterCriteria = async (\n criteria: CheckFilterCriteriaDto\n): Promise => {\n const response = await apiCaller.request(\n 'api/public-filters/check-filter-criteria',\n 'POST',\n criteria\n );\n const data = await response.json();\n if (isCheckFilterCriteriaResultDto(data)) return data;\n throw new Error('unknown response');\n};\n\nexport const createFilterAtRegistration = async (\n filter: AddFilterDto,\n phoneNumber?: string | null,\n firstName?: string | null,\n acceptedTos?: boolean | null,\n acceptedCredit?: boolean | null\n): Promise => {\n await apiCaller.request(\n 'api/public-filters/create-filter-at-registration',\n 'POST',\n {\n ...filter,\n phoneNumber,\n firstName,\n acceptedTos,\n acceptedCreditContact: acceptedCredit\n }\n );\n};\n\ninterface ExtendFilterEmailNotificationsResult {\n updatedFilter: FilterDto;\n}\nconst isExtendFilterEmailNotificationsResult = (\n x: any\n): x is ExtendFilterEmailNotificationsResult => {\n if (\n x?.updatedFilter !== undefined &&\n typeof x.updatedFilter.id === 'number'\n )\n return true;\n return false;\n};\n\nexport const extendFilterEmailNotifications = async (\n filterId: number\n): Promise => {\n const response = await apiCaller.request(\n `api/public-filters/${filterId}/extend-email-notifications`,\n 'POST'\n );\n const data = await response.json();\n if (isExtendFilterEmailNotificationsResult(data)) return data;\n throw new Error('unknown response');\n};\n\nexport const loginPasswordless = async (\n userEmail: string,\n redirectUrl: string\n): Promise => {\n const response = await apiCaller.request(\n `api/authorization/login-passwordless`,\n 'POST',\n { userEmail, redirectUrl }\n );\n\n if (!response.ok) throw new Error(response.statusText);\n};\n","import { useEffect, useState } from 'react';\nimport { CheckFilterCriteriaResultDto, checkFilterCriteria } from './api';\nimport { EditableFilterValues } from './FilterInputs';\nimport { useDebounce } from './useDebounce';\n\nexport const exceedsMaxNumberOfOffers = (\n result: CheckFilterCriteriaResultDto\n) => result.offersInLastWeek > 280;\n\nexport function useFilterCriteriaChecking(filterValues: EditableFilterValues) {\n const [isFilterCheckLoading, setIsLoading] = useState(false);\n const [filterCheckResult, setFilterCheckResult] = useState<\n CheckFilterCriteriaResultDto | undefined\n >();\n const [filterCheckError, setFilterCheckError] = useState(false);\n\n const [debouncedFilter, debounceInProgress] = useDebounce(\n filterValues,\n 1000\n );\n\n useEffect(() => {\n setIsLoading(true);\n checkFilterCriteria({\n city: debouncedFilter.city,\n offerType: debouncedFilter.offerType,\n districts: debouncedFilter.chosenDistricts,\n includeEmptyDistrict: debouncedFilter.includeEmptyDistrict,\n roomsNumbers: debouncedFilter.roomsNumbers,\n priceFrom: debouncedFilter.priceFrom,\n priceTo: debouncedFilter.priceTo,\n includeEmptyPrice: debouncedFilter.includeEmptyPrice,\n pricePerSquareMeterFrom: debouncedFilter.pricePerSquareMeterFrom,\n pricePerSquareMeterTo: debouncedFilter.pricePerSquareMeterTo,\n sizeFrom: debouncedFilter.sizeFrom,\n sizeTo: debouncedFilter.sizeTo,\n includeEmptySize: debouncedFilter.includeEmptySize,\n market: debouncedFilter.market,\n origin: debouncedFilter.origin,\n additionalFilterProperties:\n debouncedFilter.additionalFilterProperties\n })\n .then((x) => {\n setFilterCheckResult(x);\n setFilterCheckError(false);\n setIsLoading(false);\n })\n .catch(() => {\n setFilterCheckError(true);\n setFilterCheckResult(undefined);\n setIsLoading(false);\n });\n }, [debouncedFilter]);\n\n return {\n filterCheckResult,\n isFilterCheckLoading: isFilterCheckLoading || debounceInProgress,\n filterCheckError\n };\n}\n","import { useEffect, useState } from 'react';\n\nexport function useDebounce(value: T, delay: number): [T, boolean] {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const [debounceInProgress, setDebounceInProgress] = useState(false);\n\n useEffect(() => {\n setDebounceInProgress(true);\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n setDebounceInProgress(false);\n }, delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return [debouncedValue, debounceInProgress];\n}\n","import { City } from '../City';\nimport { OfferType } from '../OfferType';\nimport { EditableFilterValues } from './FilterInputs';\n\nexport const getEmptyFilterValues = (): EditableFilterValues => {\n return {\n city: City.Krakow,\n name: 'Nowy filtr',\n offerType: OfferType.Rental,\n chosenDistricts: [],\n includeEmptyDistrict: true,\n roomsNumbers: [],\n priceFrom: null,\n priceTo: null,\n includeEmptyPrice: false,\n pricePerSquareMeterFrom: null,\n pricePerSquareMeterTo: null,\n sizeFrom: null,\n sizeTo: null,\n includeEmptySize: false,\n market: null,\n origin: null,\n additionalFilterProperties: []\n };\n};\n","export enum OfferOrigin {\n Private,\n Agency,\n Developer\n}\n\nexport const getDisplayedOfferOrigin = (origin: OfferOrigin | null): string => {\n if (origin === null) {\n return '';\n } else if (origin === OfferOrigin.Private) {\n return 'Oferta Prywatna';\n } else if (origin === OfferOrigin.Agency) {\n return 'Agencja';\n } else if (origin === OfferOrigin.Developer) {\n return 'Deweloper';\n } else {\n return '---BŁĄD---';\n }\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport { Loader } from '../utils/loader';\nimport { CheckFilterCriteriaResultDto } from './api';\nimport { exceedsMaxNumberOfOffers } from './useFilterCriteriaChecking';\n\nconst Background = styled.div<{ backgroundColor: string; color: string }>`\n color: ${({ color }) => color};\n background-color: ${({ backgroundColor }) => backgroundColor};\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 16px;\n text-align: center;\n font-size: 1.1em;\n padding: 16px;\n min-height: 90px;\n transition: background-color 0.2s, color 0.2s;\n`;\n\ninterface OffersNumberProps {\n filterCheckResult: CheckFilterCriteriaResultDto | undefined;\n isFilterCheckLoading: boolean;\n}\n\nexport const NumberOfOffers = ({\n filterCheckResult,\n isFilterCheckLoading\n}: OffersNumberProps) => {\n if (filterCheckResult === undefined || isFilterCheckLoading)\n return (\n \n \n \n );\n\n const avgDailyOffers = Math.round(filterCheckResult.offersInLastWeek / 7);\n\n if (exceedsMaxNumberOfOffers(filterCheckResult)) {\n return (\n \n \n Takich ofert jest ok {avgDailyOffers} dziennie. Zawęź\n proszę kryteria żebyśmy mogli wysyłać Ci powiadomienia.\n \n \n );\n }\n\n if (avgDailyOffers === 0) {\n return (\n \n Takich ofert jest mniej niż jedna dziennie\n \n );\n }\n\n return (\n \n \n Takich ofert jest ok {avgDailyOffers} dziennie\n \n \n );\n};\n","export enum RoomsNumber {\n One = 1,\n Two,\n Three,\n FourOrMore\n}\n\nexport const getDisplayedRoomsNumber = (\n roomsNumber?: RoomsNumber | null\n): string => {\n if (roomsNumber == null) {\n return '';\n } else if (roomsNumber === RoomsNumber.One) {\n return '1';\n } else if (roomsNumber === RoomsNumber.Two) {\n return '2';\n } else if (roomsNumber === RoomsNumber.Three) {\n return '3';\n } else if (roomsNumber === RoomsNumber.FourOrMore) {\n return '4+';\n } else {\n return '---BŁĄD---';\n }\n};\n","export enum AdditionalFilterProperty {\n withBalcony = 1,\n withElevator = 2,\n isNearGreen = 3,\n isNearCenter = 4,\n withAirConditioning = 5,\n // isWellConnected = 6,\n isCalmNeighborhood = 7,\n isPetsFriendly = 8,\n isBright = 9,\n // isKidsFriendly = 10,\n isNearSchool = 11,\n // isNearSports = 12,\n withGarden = 13,\n withParking = 14,\n withStorageOrUtility = 15,\n // withView = 16,\n isDeveloperState = 17,\n // isForRenovation = 18,\n // isFurnished = 19,\n // isTurnkey = 20,\n // isBrandNew = 21,\n isPremium = 22\n}\n\nexport const getDisplayedAdditionalFilterProperty = (\n x: AdditionalFilterProperty\n): string => {\n switch (x) {\n case AdditionalFilterProperty.withBalcony:\n return 'balkon';\n case AdditionalFilterProperty.withElevator:\n return 'winda';\n case AdditionalFilterProperty.isNearGreen:\n return 'blisko zieleni';\n case AdditionalFilterProperty.isNearCenter:\n return 'blisko centrum';\n case AdditionalFilterProperty.withAirConditioning:\n return 'klimatyzacja';\n case AdditionalFilterProperty.isCalmNeighborhood:\n return 'spokojna okolica';\n case AdditionalFilterProperty.isPetsFriendly:\n return 'przyjazne zwierzętom';\n case AdditionalFilterProperty.isBright:\n return 'jasne';\n case AdditionalFilterProperty.isNearSchool:\n return 'blisko szkoły';\n case AdditionalFilterProperty.withGarden:\n return 'ogród';\n case AdditionalFilterProperty.withParking:\n return 'parking';\n case AdditionalFilterProperty.withStorageOrUtility:\n return 'komórka';\n case AdditionalFilterProperty.isDeveloperState:\n return 'stan deweloperski';\n case AdditionalFilterProperty.isPremium:\n return 'wysoki standard';\n default:\n return x;\n }\n};\n","import RsuiteTagPicker from 'rsuite/lib/TagPicker';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport React from 'react';\nimport { colors } from '../../theme/colors';\nimport styled from 'styled-components';\n\nconst StyledTagPicker = styled(RsuiteTagPicker)`\n .rs-picker-search-input {\n font-size: 16px;\n }\n`;\n\nconst StyledMenuWrapper = styled.div`\n .rs-checkbox-wrapper::before {\n border-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n }\n\n .rs-checkbox-checked .rs-checkbox-wrapper .rs-checkbox-inner::before {\n border-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n background-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n }\n\n .rs-check-item:not(.rs-checkbox-disabled):hover,\n .rs-check-item-focus {\n background-color: ${({ $selectedItemBackgroundColor }) =>\n $selectedItemBackgroundColor} !important;\n }\n\n .rs-checkbox-inner::before {\n border-color: ${colors.gray} !important;\n }\n`;\n\nexport default function AutocompletePicker({\n label,\n data,\n loading,\n values,\n onChange,\n renderExtraFooter,\n borderColor = undefined,\n primaryColor = colors.deepBlue,\n secondaryColor = colors.lightBlue,\n dataTestId = ''\n}) {\n const bgColor = borderColor !== undefined ? borderColor : primaryColor;\n const style = {\n width: '100%',\n borderColor: bgColor,\n minHeight: '42px' //hack for invisible border-bottom; maybe it'll be fixed in future versions of rsuitejs\n };\n const size = 'lg';\n\n const handleOnChange = (newValues) => {\n const valuesOrEmpty = newValues || [];\n onChange(valuesOrEmpty);\n };\n\n return (\n {\n return {\n label: x,\n value: x\n };\n })}\n data-testid={dataTestId}\n value={values}\n onChange={handleOnChange}\n placeholder={label}\n tagProps={{ 'data-testid': 'chosen-tag' }}\n style={style}\n size={size}\n renderMenu={(menu) => {\n if (loading) {\n return (\n \n \n

\n );\n }\n\n if (menu.props?.children === 'No results found') {\n return (\n \n Brak wyników\n

\n );\n }\n\n return (\n \n {menu}\n \n );\n }}\n renderExtraFooter={renderExtraFooter}\n />\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { getDistricts } from '../publicFilters/api';\nimport { City } from '../City';\nimport { colors } from '../theme/colors';\nimport AutocompletePicker from '../utils/searchCriteria/autocompletePicker';\n\ninterface Props {\n city: City;\n chosenDistricts: string[];\n onChange: (newDistricts: string[]) => void;\n}\n\nexport function DistrictsAutocompletePicker({\n city,\n chosenDistricts,\n onChange\n}: Props) {\n const [availableDistricts, setDistricts] = useState([]);\n const [districtsLoading, setDistrictsLoading] = useState(true);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n async function fetchDistricts() {\n try {\n setDistrictsLoading(true);\n const districts = await getDistricts(city);\n setDistricts(districts);\n setError(false);\n setDistrictsLoading(false);\n } catch {\n setError(true);\n setDistrictsLoading(false);\n }\n }\n fetchDistricts();\n }, [city]);\n\n const footer = error ? (\n
\n Nie udało nam się wczytać dzielnic. Spróbuj odświeżyć stronę, a\n jeśli problem będzie się powtarzał prosimy o kontakt! 🙏\n
\n ) : undefined;\n return (\n onChange(newValue)}\n data={availableDistricts}\n loading={districtsLoading}\n primaryColor={colors.facebookBlue}\n secondaryColor={colors.priceMapLightSalmon}\n borderColor={'#e5e5ea' as any}\n renderExtraFooter={() => footer}\n />\n );\n}\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgAiStars(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.43949 3.83408C6.70916 2.72197 8.29084 2.72197 8.56051 3.83408L9.30252 6.89413C9.3988 7.29118 9.70882 7.6012 10.1059 7.69748L13.1659 8.43949C14.278 8.70916 14.278 10.2908 13.1659 10.5605L10.1059 11.3025C9.70882 11.3988 9.3988 11.7088 9.30252 12.1059L8.56051 15.1659C8.29084 16.278 6.70916 16.278 6.43949 15.1659L5.69748 12.1059C5.6012 11.7088 5.29118 11.3988 4.89413 11.3025L1.83408 10.5605C0.721973 10.2908 0.721972 8.70916 1.83408 8.43949L4.89413 7.69748C5.29118 7.6012 5.6012 7.29118 5.69748 6.89413L6.43949 3.83408Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.3474 14.5133C15.5133 13.8289 16.4867 13.8289 16.6526 14.5133L17.1092 16.3964C17.1685 16.6407 17.3593 16.8315 17.6036 16.8908L19.4867 17.3474C20.1711 17.5133 20.1711 18.4867 19.4867 18.6526L17.6036 19.1092C17.3593 19.1685 17.1685 19.3593 17.1092 19.6036L16.6526 21.4867C16.4867 22.1711 15.5133 22.1711 15.3474 21.4867L14.8908 19.6036C14.8315 19.3593 14.6407 19.1685 14.3964 19.1092L12.5133 18.6526C11.8289 18.4867 11.8289 17.5133 12.5133 17.3474L14.3964 16.8908C14.6407 16.8315 14.8315 16.6407 14.8908 16.3964L15.3474 14.5133Z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5717 3.71184C18.6806 3.26272 19.3194 3.26272 19.4283 3.71184L19.7279 4.94763C19.7668 5.10798 19.892 5.23318 20.0524 5.27206L21.2882 5.57172C21.7373 5.68062 21.7373 6.31938 21.2882 6.42828L20.0524 6.72794C19.892 6.76682 19.7668 6.89202 19.7279 7.05237L19.4283 8.28816C19.3194 8.73728 18.6806 8.73728 18.5717 8.28816L18.2721 7.05237C18.2332 6.89202 18.108 6.76682 17.9476 6.72794L16.7118 6.42828C16.2627 6.31938 16.2627 5.68062 16.7118 5.57172L17.9476 5.27206C18.108 5.23318 18.2332 5.10798 18.2721 4.94763L18.5717 3.71184Z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19 3.93109L18.7554 4.93972C18.6577 5.34288 18.3429 5.65766 17.9397 5.75542L16.9311 6L17.9397 6.24458C18.3429 6.34234 18.6577 6.65712 18.7554 7.06029L19 8.06891L19.2446 7.06029C19.3423 6.65712 19.6571 6.34234 20.0603 6.24458L21.0689 6L20.0603 5.75542C19.6571 5.65766 19.3423 5.34288 19.2446 4.93972L19 3.93109ZM19.4895 3.38496C19.365 2.87168 18.635 2.87168 18.5105 3.38496L18.1681 4.79729C18.1236 4.98055 17.9805 5.12363 17.7973 5.16807L16.385 5.51054C15.8717 5.635 15.8717 6.365 16.385 6.48947L17.7973 6.83193C17.9805 6.87637 18.1236 7.01945 18.1681 7.20271L18.5105 8.61504C18.635 9.12832 19.365 9.12832 19.4895 8.61504L19.8319 7.20271C19.8764 7.01945 20.0195 6.87637 20.2027 6.83193L21.615 6.48947C22.1283 6.365 22.1283 5.635 21.615 5.51054L20.2027 5.16807C20.0195 5.12363 19.8764 4.98055 19.8319 4.79729L19.4895 3.38496Z\",\n fill: \"currentColor\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 23C6.44772 23 6 22.5523 6 22C6 21.4477 6.44772 21 7 21C7.55228 21 8 21.4477 8 22C8 22.5523 7.55228 23 7 23Z\",\n fill: \"currentColor\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 19C1.44772 19 1 18.5523 1 18C1 17.4477 1.44772 17 2 17C2.55228 17 3 17.4477 3 18C3 18.5523 2.55228 19 2 19Z\",\n fill: \"currentColor\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 3C12.4477 3 12 2.55228 12 2C12 1.44772 12.4477 1 13 1C13.5523 1 14 1.44772 14 2C14 2.55228 13.5523 3 13 3Z\",\n fill: \"currentColor\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 14C21.4477 14 21 13.5523 21 13C21 12.4477 21.4477 12 22 12C22.5523 12 23 12.4477 23 13C23 13.5523 22.5523 14 22 14Z\",\n fill: \"currentColor\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAiStars);\nexport default __webpack_public_path__ + \"static/media/AiStars.8641688b.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useMemo, useState } from 'react';\nimport {\n AdditionalFilterProperty,\n getDisplayedAdditionalFilterProperty\n} from '../AdditionalFilterProperty';\nimport styled from 'styled-components';\nimport { Button, Animation } from 'rsuite';\nimport { colors } from '../theme/colors';\nimport { ReactComponent as AiStarsIcon } from '../utils/icons/AiStars.svg';\n\nconst TagButton = styled(Button)<{ selected: boolean }>`\n background-color: ${({ selected }) =>\n selected ? `${colors.priceMapSalmon} !important` : undefined};\n color: ${({ selected }) =>\n selected ? `${colors.white} !important` : undefined};\n border-radius: 100px;\n font-size: 16px;\n`;\n\ninterface Props {\n values: AdditionalFilterProperty[];\n setValues: (x: AdditionalFilterProperty[]) => void;\n}\nexport function AdditionalPropertiesSection({ values, setValues }: Props) {\n const [showAll, setShowAll] = useState(false);\n const [topTags, additionalTags] = useMemo(() => {\n const allTags = Object.keys(AdditionalFilterProperty)\n .filter((v) => !isNaN(Number(v)))\n .map((x) => Number(x));\n const numberOfTopTags = 5;\n const topTags = allTags.slice(0, numberOfTopTags);\n const additionalTags = allTags.slice(numberOfTopTags);\n return [topTags, additionalTags];\n }, []);\n\n const onClick = (v: AdditionalFilterProperty) => {\n if (values.includes(v)) {\n setValues(values.filter((x) => x !== v));\n } else {\n setValues([...values, v]);\n }\n };\n\n return (\n \n \n Inteligentne Filtry\n {/* */}\n \n \n \n \n {topTags.map((v) => (\n onClick(v)}\n >\n {getDisplayedAdditionalFilterProperty(v)}\n \n ))}\n\n \n {(props, ref) => (\n
\n \n {additionalTags.map((v) => (\n onClick(v)}\n >\n {getDisplayedAdditionalFilterProperty(\n v\n )}\n \n ))}\n
\n \n )}\n
\n\n {!showAll && (\n setShowAll((v) => !v)}\n >\n Pokaż więcej filtrów\n \n )}\n \n \n \n );\n}\n","import React, { useState } from 'react';\nimport { Button, IconButton, InputNumber, Toggle } from 'rsuite';\nimport { City, getDisplayedCity } from '../City';\nimport { OfferType, getDisplayedOfferType } from '../OfferType';\nimport {\n exceedsMaxNumberOfOffers,\n useFilterCriteriaChecking\n} from '../publicFilters/useFilterCriteriaChecking';\nimport { EditableFilterValues } from '../publicFilters/FilterInputs';\nimport { getEmptyFilterValues } from '../publicFilters/getEmptyFilterValues';\nimport { NumberOfOffers } from '../publicFilters/NumberOfOffersText';\nimport { OfferOrigin } from '../OfferOrigin';\nimport { colors, gradients } from '../theme/colors';\nimport styled from 'styled-components';\nimport { RoomsNumber } from '../RoomsNumber';\nimport { isValidNumber } from '../helpers';\nimport { DistrictsAutocompletePicker } from './DistrictsAutocompletePicker';\nimport { AdditionalPropertiesSection } from './AdditionalPropertiesSection';\nimport { CheckFilterCriteriaResultDto } from '../publicFilters/api';\n\nconst Text = styled.span`\n font-size: 16px;\n`;\n\nconst RoomsNumberButton = styled(IconButton)<{ selected: boolean }>`\n background-color: ${({ selected }) =>\n selected ? `${colors.priceMapSalmon} !important` : undefined};\n color: ${({ selected }) =>\n selected ? `${colors.white} !important` : undefined};\n`;\n\nconst getOfferTypeText = (x: OfferType) => {\n if (x === OfferType.Rental) return 'Chcę wynająć';\n if (x === OfferType.Sale) return 'Chcę kupić';\n return getDisplayedOfferType(x); // just here for safety\n};\n\nfunction withIncludeEmptyFieldsCalculated(\n filter: EditableFilterValues\n): EditableFilterValues {\n return {\n ...filter,\n includeEmptyDistrict: filter.chosenDistricts.length === 0,\n includeEmptyPrice: filter.priceFrom === null && filter.priceTo === null,\n includeEmptySize: filter.sizeFrom === null && filter.sizeTo === null\n };\n}\n\nexport interface Props {\n city: City;\n offerType: OfferType;\n onBack: () => void;\n onSubmit: (\n filter: EditableFilterValues,\n checkFilterCriteriaResult: CheckFilterCriteriaResultDto\n ) => void;\n}\nexport const SelectDetailsStep = ({\n city,\n offerType,\n onBack,\n onSubmit\n}: Props) => {\n const [filter, setFilter] = useState({\n ...getEmptyFilterValues(),\n city,\n offerType\n });\n\n const [userSubmitted, setUserSubmitted] = useState(false);\n\n const { filterCheckResult, isFilterCheckLoading } =\n useFilterCriteriaChecking(filter);\n\n const offerOriginToggleClick = () => {\n if (filter.origin === OfferOrigin.Private) {\n setFilter((prev) => ({ ...prev, origin: null }));\n } else {\n setFilter((prev) => ({ ...prev, origin: OfferOrigin.Private }));\n }\n };\n\n const roomNumberClick = (value: RoomsNumber) => {\n if (filter.roomsNumbers.includes(value)) {\n setFilter((prev) => ({\n ...prev,\n roomsNumbers: [...prev.roomsNumbers.filter((x) => x !== value)]\n }));\n } else {\n setFilter((prev) => ({\n ...prev,\n roomsNumbers: [...prev.roomsNumbers, value]\n }));\n }\n };\n\n const onPriceFromChange = (value: string | number) => {\n onNumericValueChange(value, 'priceFrom');\n };\n const onPriceToChange = (value: string | number) => {\n onNumericValueChange(value, 'priceTo');\n };\n const onSizeFromChange = (value: string | number) => {\n onNumericValueChange(value, 'sizeFrom');\n };\n const onSizeToChange = (value: string | number) => {\n onNumericValueChange(value, 'sizeTo');\n };\n\n const onNumericValueChange = (\n value: string | number,\n field: keyof EditableFilterValues\n ) => {\n let newValue = isValidNumber(value) ? Number(value) : null;\n if (newValue !== null && newValue < 1) newValue = null;\n if (newValue !== null && newValue > 2_000_000_000) newValue = null;\n setFilter((prev) => ({ ...prev, [field]: newValue }));\n };\n\n const canSubmit =\n !userSubmitted &&\n filterCheckResult !== undefined &&\n !isFilterCheckLoading &&\n !exceedsMaxNumberOfOffers(filterCheckResult);\n\n return (\n
\n \n \n \n \n {getOfferTypeText(offerType)},{' '}\n {getDisplayedCity(city)}\n \n \n \n
\n\n {\n setFilter((prev) => ({\n ...prev,\n chosenDistricts\n }));\n }}\n />\n\n
\n Liczba pokoi\n
\n 1
}\n size=\"lg\"\n selected={filter.roomsNumbers.includes(\n RoomsNumber.One\n )}\n onClick={() => roomNumberClick(RoomsNumber.One)}\n />\n 2
}\n size=\"lg\"\n selected={filter.roomsNumbers.includes(\n RoomsNumber.Two\n )}\n onClick={() => roomNumberClick(RoomsNumber.Two)}\n />\n 3}\n size=\"lg\"\n selected={filter.roomsNumbers.includes(\n RoomsNumber.Three\n )}\n onClick={() => roomNumberClick(RoomsNumber.Three)}\n />\n 4+}\n size=\"lg\"\n selected={filter.roomsNumbers.includes(\n RoomsNumber.FourOrMore\n )}\n onClick={() =>\n roomNumberClick(RoomsNumber.FourOrMore)\n }\n />\n \n \n\n \n Cena (zł)\n\n \n \n -\n \n \n \n\n \n Wielkość (m²)\n\n \n \n -\n \n \n \n\n
\n \n Tylko oferty prywatne\n \n \n
\n\n
\n \n setFilter((prev) => ({\n ...prev,\n additionalFilterProperties: x\n }))\n }\n />\n
\n \n\n
\n \n
\n\n {\n setUserSubmitted(true);\n onSubmit(\n withIncludeEmptyFieldsCalculated(filter),\n filterCheckResult!\n );\n }}\n >\n Zapisz filtr\n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { OfferType } from '../OfferType';\nimport { City } from '../City';\nimport { Fade } from './Fade';\nimport { SelectOfferTypeStep } from './SelectOfferTypeStep';\nimport { SelectCityStep } from './SelectCityStep';\nimport { SelectDetailsStep } from './SelectDetailsStep';\nimport { EditableFilterValues } from '../publicFilters/FilterInputs';\nimport { CheckFilterCriteriaResultDto } from '../publicFilters/api';\n\nenum Step {\n chooseOfferType = 'chooseOfferType',\n chooseCity = 'chooseCity',\n chooseDetails = 'chooseDetails'\n}\n\nconst StepContainer = styled.div``;\n\nexport const StepDescription = styled.div`\n margin-top: 16px;\n margin-bottom: 24px;\n font-size: 16px;\n`;\n\ninterface CreateFilterData {\n city?: City;\n offerType?: OfferType;\n}\ninterface Props {\n state: CreateFilterData;\n onStateChange: (x: CreateFilterData) => void;\n onSubmit: (\n filter: EditableFilterValues,\n checkFilterCriteriaResult: CheckFilterCriteriaResultDto\n ) => void;\n displayRegisterLink?: boolean;\n}\n\nexport function CreateFilterForm({\n state,\n onStateChange,\n onSubmit,\n displayRegisterLink = false\n}: Props) {\n const { city, offerType } = state;\n function getStep(): Step {\n if (offerType === undefined) return Step.chooseOfferType;\n if (city === undefined) return Step.chooseCity;\n\n return Step.chooseDetails;\n }\n const step = getStep();\n\n return (\n
\n \n \n {step === Step.chooseOfferType && (\n {\n onStateChange({ offerType });\n }}\n displayRegisterLink={displayRegisterLink}\n />\n )}\n {step === Step.chooseCity && (\n {\n onStateChange({});\n }}\n onSelect={(city) => {\n onStateChange({ city, offerType });\n }}\n />\n )}\n {step === Step.chooseDetails && (\n {\n onStateChange({});\n }}\n onSubmit={onSubmit}\n />\n )}\n \n \n
\n );\n}\n","import { EditableFilterValues } from '../components/publicFilters/FilterInputs';\nimport { stringIsNullOrWhitespace } from '../stringIsNullOrWhitespace';\n\nconst paramNames = {\n phoneNumber: 'phone',\n acceptedTos: 'tos',\n acceptedCredit: 'credit',\n firstName: 'userName',\n offersInLastWeek: 'oilw'\n};\n\n// these need to match properties of Editable & SerializedFilterValues 1:1\n// it can be done nicer, but its late already so 🤷\nconst filterParamNames: string[] = [\n 'name',\n 'city',\n 'offerType',\n 'chosenDistricts',\n 'includeEmptyDistrict',\n 'roomsNumbers',\n 'priceFrom',\n 'priceTo',\n 'includeEmptyPrice',\n 'pricePerSquareMeterFrom',\n 'pricePerSquareMeterTo',\n 'sizeFrom',\n 'sizeTo',\n 'includeEmptySize',\n 'origin',\n 'market',\n 'additionalFilterProperties'\n];\n\n// property names need to match EditableFilterValues 1:1\nexport interface SerializedFilterValues {\n name: string | null;\n city: string | null;\n offerType: string | null;\n chosenDistricts: string[];\n includeEmptyDistrict: string | null;\n roomsNumbers: string[];\n priceFrom: string | null;\n priceTo: string | null;\n includeEmptyPrice: string | null;\n pricePerSquareMeterFrom: string | null;\n pricePerSquareMeterTo: string | null;\n sizeFrom: string | null;\n sizeTo: string | null;\n includeEmptySize: string | null;\n origin: string | null;\n market: string | null;\n additionalFilterProperties: string[];\n}\n\nexport interface FilterRegistrationValues {\n filter: SerializedFilterValues;\n phoneNumber: string | null;\n firstName: string | null;\n acceptedTos: boolean | null;\n acceptedCredit: boolean | null;\n offersInLastWeek: number | null;\n}\n\nexport function useFilterRegistration() {\n function serializeFilterToQueryString(\n filter: EditableFilterValues | SerializedFilterValues\n ) {\n let url = '';\n\n for (let i = 0; i < filterParamNames.length; i++) {\n const key = filterParamNames[i];\n // @ts-ignore\n const currentValue = filter[key];\n if (currentValue === null || currentValue === undefined) continue;\n\n if (Array.isArray(currentValue)) {\n for (let i = 0; i < currentValue.length; i++) {\n url += `${key}=${encodeURIComponent(currentValue[i])}&`;\n }\n } else {\n url += `${key}=${encodeURIComponent(currentValue)}&`;\n }\n }\n return url.slice(0, url.length - 1).replaceAll('%20', '__');\n }\n\n function getRegistrationQueryParameters(): string {\n return window.location.search.replace('?', '');\n }\n\n function goToPersonalDetailsStep(\n filter: EditableFilterValues,\n offersInLastWeek: number\n ) {\n window.location.assign(\n `/create-account-add-personal-details?${paramNames.offersInLastWeek}=${offersInLastWeek}&` +\n serializeFilterToQueryString(filter)\n );\n }\n\n function goToEmailStep(\n filter: EditableFilterValues | SerializedFilterValues,\n phoneNumber?: string,\n firstName?: string,\n acceptedTos?: boolean,\n acceptedCredit?: boolean\n ) {\n const phoneNumberParam = stringIsNullOrWhitespace(phoneNumber)\n ? ''\n : `${paramNames.phoneNumber}=${encodeURIComponent(phoneNumber!)}&`;\n const firstNameParam = stringIsNullOrWhitespace(firstName)\n ? ''\n : `${paramNames.firstName}=${encodeURIComponent(\n firstName!.replaceAll(/\\s/g, '')\n )}&`;\n\n const acceptedTosParam = acceptedTos\n ? `${paramNames.acceptedTos}=true&`\n : '';\n const acceptedCreditParam = acceptedCredit\n ? `${paramNames.acceptedCredit}=true&`\n : '';\n\n const filterParam = serializeFilterToQueryString(filter);\n\n window.location.assign(\n '/create-account-with-filter?' +\n phoneNumberParam +\n firstNameParam +\n acceptedTosParam +\n acceptedCreditParam +\n filterParam\n );\n }\n\n function getOffersInLastWeek(): number | null {\n const searchParams = new URLSearchParams(window.location.search);\n const offersParam = searchParams.get(paramNames.offersInLastWeek);\n if (offersParam == null) return null;\n const num = Number(offersParam);\n if (isNaN(num)) return null;\n return num;\n }\n\n function getAcceptedTos(): boolean {\n const searchParams = new URLSearchParams(window.location.search);\n const param = searchParams.get(paramNames.acceptedTos);\n return param === 'true';\n }\n\n function getAcceptedCredit(): boolean {\n const searchParams = new URLSearchParams(window.location.search);\n const param = searchParams.get(paramNames.acceptedCredit);\n return param === 'true';\n }\n\n function getFirstName(): string | null {\n const searchParams = new URLSearchParams(window.location.search);\n const param = searchParams.get(paramNames.firstName);\n return stringIsNullOrWhitespace(param) ? null : param;\n }\n\n function tryDecodeRegistrationValues():\n | FilterRegistrationValues\n | undefined {\n try {\n const searchParams = new URLSearchParams(window.location.search);\n const filter = tryDecodeFilter();\n if (filter == null) return undefined;\n\n const phoneNumberQueryParam = searchParams.get(\n paramNames.phoneNumber\n );\n return {\n filter,\n phoneNumber: phoneNumberQueryParam,\n offersInLastWeek: getOffersInLastWeek(),\n firstName: getFirstName(),\n acceptedTos: getAcceptedTos(),\n acceptedCredit: getAcceptedCredit()\n };\n } catch (ex) {\n console.log(ex);\n return undefined;\n }\n }\n\n function tryDecodeFilter(): SerializedFilterValues | undefined {\n const searchParams = new URLSearchParams(window.location.search);\n try {\n let obj: SerializedFilterValues = {\n name: null,\n city: null,\n offerType: null,\n chosenDistricts: [],\n includeEmptyDistrict: null,\n roomsNumbers: [],\n priceFrom: null,\n priceTo: null,\n includeEmptyPrice: null,\n pricePerSquareMeterFrom: null,\n pricePerSquareMeterTo: null,\n sizeFrom: null,\n sizeTo: null,\n includeEmptySize: null,\n origin: null,\n market: null,\n additionalFilterProperties: []\n };\n\n for (let i = 0; i < filterParamNames.length; i++) {\n const currentParameterName = filterParamNames[i];\n const values = searchParams.getAll(currentParameterName);\n if (values.length === 0) {\n continue;\n }\n\n const decode = (x: string): string =>\n decodeURIComponent(x).replaceAll('__', ' ');\n\n // @ts-ignore\n if (Array.isArray(obj[currentParameterName])) {\n // @ts-ignore\n obj[currentParameterName] = values.map(decode);\n } else {\n // @ts-ignore\n obj[currentParameterName] = decode(values[0]);\n }\n }\n\n // @ts-ignore\n return obj;\n } catch {\n return undefined;\n }\n }\n\n return {\n getRegistrationQueryParameters,\n goToPersonalDetailsStep,\n goToEmailStep,\n tryDecodeRegistrationValues\n };\n}\n","import React from 'react';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { CreateFilterForm } from '../components/createFilterForm/CreateFilterForm';\nimport SectionInterspace from '../components/utils/SectionInterspace';\nimport { EditableFilterValues } from '../components/publicFilters/FilterInputs';\nimport { useFilterRegistration } from './useFilterRegistration';\nimport { getAuth } from 'firebase/auth';\nimport { Navigate, useSearchParams } from 'react-router-dom';\nimport { City } from '../components/City';\nimport { OfferType } from '../components/OfferType';\nimport { CheckFilterCriteriaResultDto } from '../components/publicFilters/api';\n\nfunction getCityFromParam(param: string | null): City | undefined {\n if (param === null) return undefined;\n if (!Object.values(City).includes(Number(param))) return undefined;\n return Number(param);\n}\nfunction getOfferTypeFromParam(param: string | null): OfferType | undefined {\n if (param === null) return undefined;\n if (!Object.values(OfferType).includes(Number(param))) return undefined;\n return Number(param);\n}\nexport function CreateFilter() {\n const { goToPersonalDetailsStep, goToEmailStep } = useFilterRegistration();\n const [searchParams, setSearchParams] = useSearchParams();\n const offerTypeParam = searchParams.get('offerType');\n const cityParam = searchParams.get('city');\n const city = getCityFromParam(cityParam);\n const offerType = getOfferTypeFromParam(offerTypeParam);\n\n const auth = getAuth();\n if (auth.currentUser != null) {\n return ;\n }\n\n const onSubmit = (\n filter: EditableFilterValues,\n checkFilterCriteriaResult: CheckFilterCriteriaResultDto\n ) => {\n if (offerType === OfferType.Sale) {\n goToPersonalDetailsStep(\n filter,\n checkFilterCriteriaResult.offersInLastWeek\n );\n } else {\n goToEmailStep(filter);\n }\n };\n\n return (\n \n \n \n \n {\n setSearchParams({\n city: x.city?.toString() ?? 'undefined',\n offerType: x.offerType?.toString() ?? 'undefined'\n });\n }}\n displayRegisterLink\n />\n \n \n );\n}\n","// based on https://github.com/luizcieslak/am-i-inapp-browser/blob/main/src/inapp.js\n\nexport const isInAppBrowser = () => {\n const userAgent = navigator.userAgent;\n const rules = [\n 'WebView',\n '(iPhone|iPod|iPad)(?!.*Safari/)',\n 'Android.*(wv)'\n ];\n const regex = new RegExp(`(${rules.join('|')})`, 'ig');\n return Boolean(userAgent.match(regex));\n};\n","import React, { useState } from 'react';\nimport { Button, Divider, Input, Loader } from 'rsuite';\nimport { getAuth } from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { colors, gradients } from '../components/theme/colors';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\nimport { LogInWithGoogleButton } from './LogInWithGoogleButton';\nimport { useFilterRegistration } from './useFilterRegistration';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport { isInAppBrowser } from '../isInAppBrowser';\nimport { isValidEmail } from './isValidEmail';\nimport { loginPasswordless } from '../components/publicFilters/api';\n\nexport const CreateAccountWithFilter = () => {\n const [email, setEmail] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState();\n const { getRegistrationQueryParameters } = useFilterRegistration();\n const navigate = useNavigate();\n\n const auth = getAuth();\n if (auth.currentUser != null) {\n return ;\n }\n\n const onAccountCreatedWithEmail = async () => {\n setIsLoading(true);\n\n try {\n const baseUrl = window.location.origin;\n const registrationParams = getRegistrationQueryParameters();\n let redirectUrl =\n registrationParams != null\n ? `${baseUrl}/account-with-filter-created?emailForSignIn=${email}&${registrationParams}`\n : baseUrl;\n\n await loginPasswordless(email, redirectUrl);\n\n navigate('/signin-link-sent');\n } catch (ex) {\n console.log(ex);\n setError('Ups, coś poszło nie tak, spróbuj ponownie za chwilę');\n setIsLoading(false);\n }\n };\n\n const onSignedInWithGoogle = async () => {\n const registrationParams = getRegistrationQueryParameters();\n let redirectUrl =\n registrationParams != null\n ? `/account-with-filter-created?${registrationParams}`\n : '/';\n\n navigate(redirectUrl);\n };\n\n const canSubmit = !isLoading && isValidEmail(email);\n\n return (\n \n \n {\n e.preventDefault();\n onAccountCreatedWithEmail();\n }}\n >\n \n\n

\n Już prawie gotowe! Dokończ tworzenie filtra jednym\n kliknięciem logując się z Google\n

\n\n {!isInAppBrowser() && (\n <>\n undefined}\n />\n\n
\n lub\n
\n \n )}\n\n

\n Utwórz konto podając email\n

\n\n \n {error && (\n \n {error}\n \n )}\n
\n \n {isLoading && }\n {!isLoading && 'Utwórz konto w PriceMap'}\n \n \n \n \n );\n};\n","export const tracking = {\n registrationWithFilter: {\n category: 'registration_with_filter',\n actions: {\n exceptionThrown: 'exception_thrown',\n personalDetailsFormOpened: 'registration__personal_details_opened',\n personalDetailsFormFinished: 'registration__personal_details_added',\n accountCreated: 'registration__account_created'\n }\n }\n};\n","import React, { useEffect, useState } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useFilterRegistration } from './useFilterRegistration';\nimport { createFilterAtRegistration } from '../components/publicFilters/api';\nimport { Loader } from '../components/utils/loader';\nimport { tracking } from './tracking';\nimport { stringIsNullOrWhitespace } from '../stringIsNullOrWhitespace';\n\nexport function AccountWithFilterCreated() {\n const { tryDecodeRegistrationValues } = useFilterRegistration();\n const [isError, setIsError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n async function createFilter() {\n try {\n const values = tryDecodeRegistrationValues();\n if (values == null)\n throw new Error('couldnt decode registration values');\n\n const numberOrNull = (x: string | null): number | null =>\n stringIsNullOrWhitespace(x) ? null : Number(x);\n\n await createFilterAtRegistration(\n {\n name: values.filter.name!,\n city: Number(values.filter.city),\n offerType: Number(values.filter.offerType),\n districts: values.filter.chosenDistricts,\n includeEmptyDistrict:\n values.filter.includeEmptyDistrict === 'true',\n roomsNumbers: values.filter.roomsNumbers.map((x) =>\n Number(x)\n ),\n priceFrom: numberOrNull(values.filter.priceFrom),\n priceTo: numberOrNull(values.filter.priceTo),\n includeEmptyPrice:\n values.filter.includeEmptyPrice === 'true',\n pricePerSquareMeterFrom: numberOrNull(\n values.filter.pricePerSquareMeterFrom\n ),\n pricePerSquareMeterTo: numberOrNull(\n values.filter.pricePerSquareMeterTo\n ),\n sizeFrom: numberOrNull(values.filter.sizeFrom),\n sizeTo: numberOrNull(values.filter.sizeTo),\n includeEmptySize:\n values.filter.includeEmptySize === 'true',\n market: numberOrNull(values.filter.market),\n origin: numberOrNull(values.filter.origin),\n additionalFilterProperties:\n values.filter.additionalFilterProperties.map((x) =>\n Number(x)\n )\n },\n values.phoneNumber,\n values.firstName,\n values.acceptedTos,\n values.acceptedCredit\n );\n\n ReactGA.event({\n category: tracking.registrationWithFilter.category,\n action: tracking.registrationWithFilter.actions\n .accountCreated\n });\n } catch {\n setIsError(true);\n } finally {\n setIsLoading(false);\n }\n }\n createFilter();\n }, []);\n\n if (!isLoading) {\n window.location.replace('/');\n }\n\n return ;\n}\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\n\nconst Home = () => {\n return ;\n};\n\nexport default Home;\n","export enum Page {\n Search,\n FavoriteOffers,\n Filters,\n Statistics,\n Help,\n MyAccount\n}\n\nexport const getDisplayedPage = (value: Page): string => {\n if (value === Page.Search) {\n return 'Wyszukiwarka';\n } else if (value === Page.FavoriteOffers) {\n return 'Zapisane oferty';\n } else if (value === Page.Filters) {\n return 'Zapisane filtry';\n } else if (value === Page.Statistics) {\n return 'Statystyki';\n } else if (value === Page.Help) {\n return 'Pomoc';\n } else if (value === Page.MyAccount) {\n return 'Moje konto';\n } else {\n return '';\n }\n};\n","import React from 'react';\n\nexport const SearchHelp: React.FC = () => {\n return (\n <>\n

\n Nasza wyszukiwarka przeszukuje wszystkie największe portale\n nieruchomościowe w Polsce, dlatego masz dostęp do wszystkich\n ofert w jednym miejscu.\n

\n\n

\n Po kliknięciu w ofertę pokażą się jej szczegóły. Aby je zwinąć\n kliknij w nią jeszcze raz.\n

\n\n

\n Lokalizacja - nasz system analizuje ofertę i wykrywa\n dzielnicę. To pole może zostać puste jeśli nie będziemy w stanie\n wykryć lokalizacji nigdzie wewnątrz oferty.\n

\n

\n Duplikaty - grupujemy identyczne oferty żeby nie\n zaśmiecać wyników - taka oferta jest oznaczona żółtą ikonką. Po\n rozwinięciu oferty zobaczysz wszystkie duplikaty.\n

\n

\n Słowa kluczowe i słowa wykluczone - możesz używać\n ich do zawężenia wyników, np. wpisując „balkon”, „centrum”,\n konkretną ulicę lub nazwę dewelopera. Jeżeli słowo znajduje się\n w opisie, tytule lub jakimkolwiek innym miejscu powiązanym z\n ofertą nasz system to wykryje. Jeśli wpiszesz dwa słowa\n kluczowe, na przykład „balkon” i „ogród” to wyświetlimy Ci tylko\n oferty które zawierają obydwa słowa jednocześnie.\n

\n \n );\n};\n","import React from 'react';\n\nexport const FavoriteOffersHelp: React.FC = () => {\n return (\n <>\n

\n Tutaj znajdują się wszystkie oferty, które zostały oznaczone\n przez Ciebie lub Twój zespół.\n

\n

\n Do każdej oferty na liście wyszukiwania możesz przypisać wybraną\n etykietę. Ta etykieta będzie widoczna dla całego Twojego\n zespołu.\n

\n \n );\n};\n","import styled from 'styled-components';\n\nconst Margin = styled.div<{ size?: string }>`\n margin: ${(props) => (props.size ? props.size : '7px')};\n`;\n\nexport const SmallMargin = styled.div`\n margin: 3px;\n`;\n\nexport default Margin;\n","import React from 'react';\nimport Margin from './Margin';\nimport styled from 'styled-components';\n\nconst StyledMessage = styled.div<{\n $textAlign?: string;\n $backgroundColor: string;\n}>`\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n border-radius: 6px;\n padding: 15px 25px;\n text-align: ${({ $textAlign }) => $textAlign};\n`;\n\nexport interface MessageProps {\n isVisible?: boolean;\n textAlign?: string;\n backgroundColor?: string;\n}\n\nexport const Message: React.FC = ({\n isVisible = true,\n backgroundColor = '#fff9e6',\n textAlign,\n children\n}) => {\n return isVisible ? (\n \n \n {children}\n \n \n ) : (\n <>\n );\n};\n","import React from 'react';\nimport { colors } from '../theme/colors';\nimport { Message } from '../utils/Message';\n\nexport const FiltersHelp: React.FC = () => {\n return (\n <>\n

\n Otwórz wyszukiwarkę, wybierz odpowiednie parametry, a następnie\n kliknij przycisk „Zapisz jako nowy filtr”. Podaj nazwę filtra i\n kliknij „OK” - filtr został zapisany.\n

\n

Zapisane filtry posiadają dwie funkcje:

\n
    \n
  • \n szybkie przejście do interesujących nas ofert -\n klikając „Pokaż oferty” na danym filtrze\n
  • \n
  • \n powiadomienia email o ofertach, które nas interesują\n  - możesz włączać i wyłączać tę opcję na każdym filtrze.\n
  • \n
\n\n \n \n Podczas ustawiania nowego filtra należy pamiętać, że\n niektóre oferty nie mają lokalizacji.\n
\n
\n Wybierając konkretną dzielnicę z listy, np. Centrum, będziesz\n dostawać powiadomienia o ofertach dla których udało nam się\n rozpoznać dzielnicę. Czasem jednak autorzy ofert nie podają\n odpowiednio lokalizacji i takie oferty mogą wtedy zostać\n pominięte. W taki przypadku najlepiej utworzyć dwa filtry -\n jeden z dzielnicą Centrum, a drugi bez wybranej dzielnicy, ale\n ze słowami kluczowymi „Centrum” lub konkretnymi nazwami ulic i\n osiedli.\n
\n \n );\n};\n","import React from 'react';\nimport { colors } from '../theme/colors';\nimport { Message } from '../utils/Message';\n\nexport const StatisticsHelp: React.FC = () => {\n return (\n <>\n

\n Zrób zdjęcie wykresu i załącz go w mailu lub otwórz PriceMap\n przy swoim kliencie - dzięki temu zobaczy, że produkt który od\n Ciebie kupuje po prostu się opłaca!\n

\n\n

\n Wykresy przedstawiają dane ofertowe. Im bardziej sprecyzujesz\n zakres wyszukiwania, tym mniej ofert zostanie wziętych pod\n uwagę, co w pewnych sytuacjach może powodować anomalie na\n wykresie.\n

\n\n \n \n W miarę możliwości sugerujemy jak najmniej\n zawężać lokalizację - najdokładniejsze dane są dla całych\n miast.\n
\n
\n Przykład: chcąc sprawdzić statystyki dla centrum miasta lepiej\n będzie zaznaczyć kilka dzielnic z centrum niż wybrać tylko\n „Stare Miasto”.\n
\n Im bardziej zawęzimy zakres wyszukiwania tym mniej ofert\n zostanie wziętych pod uwagę, co w pewnych sytuacjach może\n powodować anomalie na wykresie.\n
\n\n

\n Nie ingerujemy w przedstawiane dane, nie usuwamy chwilowych\n soków wartości spowodowanych niecodziennymi sytuacjami na rynku,\n ponieważ uważamy, że to również może stanowić wartościową\n informację.\n

\n \n );\n};\n","export const setCurrentPage = 'setCurrentPage';\n\nexport const setSearchResult = 'setSearchResult';\nexport const setSearchResultOffers = 'setSearchResultOffers';\nexport const updateLastSearchedCriteria = 'updateLastSearchedCriteria';\nexport const updateCurrentSearchCriteria = 'updateCurrentSearchCriteria';\nexport const updateCurrentFilter = 'updateCurrentFilter';\nexport const loadingOffersStarted = 'loadingOffersStarted';\nexport const loadingOffersFinished = 'loadingOffersFinished';\nexport const setLastOfferActivity = 'setLastOfferActivity';\n\nexport const setSearchPageNumber = 'setSearchPageNumber';\n\nexport const openSaveFilterChangesModal = 'openSaveFilterChangesModal';\nexport const closeSaveFilterChangesModal = 'closeSaveFilterChangesModal';\n\nexport const expandSidebarOnMobile = 'expandSidebarOnMobile';\nexport const hideSidebarOnMobile = 'hideSidebarOnMobile';\n\nexport const updateStatisticsSearchCriteria = 'updateStatisticsSearchCriteria';\nexport const resetStatisticsSearchCriteria = 'resetStatisticsSearchCriteria';\nexport const setChartState = 'setChartState';\n","import { getDisplayedPage } from '../../components/Page';\nimport * as actionTypes from '../actionTypes';\n\nexport function expandSidebarOnMobile() {\n return {\n type: actionTypes.expandSidebarOnMobile\n };\n}\n\nexport function hideSidebarOnMobile() {\n return {\n type: actionTypes.hideSidebarOnMobile\n };\n}\n\nexport function setCurrentPage(currentPage) {\n document.title = `${getDisplayedPage(currentPage)} - PriceMap`;\n\n return {\n type: actionTypes.setCurrentPage,\n payload: {\n currentPage\n }\n };\n}\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Page } from '../components/Page';\nimport { setCurrentPage } from '../redux/actions/navigationActions';\n\nexport const useCurrentPage = (page: Page) => {\n const dispatch = useDispatch();\n useEffect(() => {\n async function setPage() {\n dispatch(setCurrentPage(page));\n }\n\n setPage();\n }, [dispatch]);\n};\n","import React from 'react';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport styled from 'styled-components';\n\nconst Header = styled.span`\n font-size: 1.2em;\n font-weight: bold;\n`;\n\nexport function GeneralHelp() {\n return (\n <>\n
PriceMap - wszystko w jednym miejscu
\n \n

PriceMap składa się z 4 części:

\n
    \n
  • \n Wyszukiwarki z ofertami ze wszystkich portali\n
  • \n
  • \n Zapisanych ofert które zostały oznaczone przez Ciebie\n lub Twój zespół\n
  • \n
  • \n Filtrów dzięki którym możesz dostawać powiadomienia o\n nowych ofertach\n
  • \n
  • \n Statystyk jakich jeszcze nie było\n
  • \n
\n

\n Po najechaniu kursorem na daną ikonkę lub nieaktywne pole\n wyświetli się informacja z podpowiedzią.\n

\n

\n Wszelkie uwagi, błędy lub propozycję prosimy zgłaszać na adres{' '}\n kontakt@pricemap.pl\n

\n \n );\n}\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.div`\n overflow: hidden;\n padding-bottom: 56.25%;\n position: relative;\n height: 0;\n\n > iframe {\n left: 0;\n top: 0;\n height: 100%;\n width: 100%;\n position: absolute;\n }\n`;\n\nexport const IntroductionVideo = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport { Page } from '../Page';\nimport { SearchHelp } from './SearchHelp';\nimport { FavoriteOffersHelp } from './FavoriteOffersHelp';\nimport { FiltersHelp } from './FiltersHelp';\nimport { StatisticsHelp } from './StatisticsHelp';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { useCurrentPage } from '../../hooks/useCurrentPage';\nimport { ReactComponent as PriceMapLogo } from '../../components/utils/icons/PriceMapLogoWithText.svg';\nimport { CenteredDiv } from '../account/PageLayout';\nimport styled from 'styled-components';\nimport { Panel } from 'rsuite';\nimport { LightBoxShadow } from '../utils/boxShadow';\nimport { colors } from '../theme/colors';\nimport { GeneralHelp } from './GeneralHelp';\nimport { IntroductionVideo } from './IntroductionVideo';\n\nconst HelpPagePanel = styled(Panel)`\n margin-top: 20px;\n background-color: ${colors.white};\n ${LightBoxShadow}\n\n .rs-panel-collapse {\n box-shadow: none;\n }\n`;\n\nconst PanelHeader = styled.span`\n color: ${colors.deepBlue};\n font-weight: bold;\n font-size: 1.2em;\n`;\n\nexport const Help: React.FC = () => {\n useCurrentPage(Page.Help);\n\n return (\n \n

Pomoc

\n\n Ogólne informacje}\n collapsible\n bordered\n >\n \n \n\n Film instruktażowy}\n collapsible\n bordered\n >\n \n \n\n Wyszukiwarka}\n collapsible\n bordered\n >\n \n \n\n Zapisane oferty}\n collapsible\n bordered\n >\n \n \n\n Zapisane filtry}\n collapsible\n bordered\n >\n \n \n\n Statystyki}\n collapsible\n bordered\n >\n \n \n\n \n\n \n \n \n
\n );\n};\n","import styled from 'styled-components';\n\nconst StyledA = styled.a`\n color: inherit;\n text-decoration: none;\n :hover {\n color: ${(props) => props.color || 'inherit'};\n text-decoration: none;\n }\n`;\n\nexport default StyledA;\n","import React from 'react';\nimport RsuiteButton from 'rsuite/lib/Button';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport Margin from './Margin';\nimport StyledA from './styledA';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nconst StyledIcon = styled(RsuiteIcon)`\n margin-right: 10px;\n`;\n\nconst StyledRsuiteButton = styled(RsuiteButton).withConfig({\n shouldForwardProp: (prop) => !['isFaded'].includes(prop)\n})`\n background-color: ${({ isFaded, theme }) =>\n isFaded\n ? `${theme.colors.lightBlue} !important` //important because of chrome -- color wouldn't be applied until button lost focus\n : 'undefined'};\n color: ${({ isFaded, theme }) =>\n isFaded\n ? `${theme.colors.deepBlue} !important` //important because of chrome -- color wouldn't be applied until button lost focus\n : undefined};\n\n transition: opacity 0.2s ease, background-color 0.2s ease, color 0.2s ease;\n`;\n\nexport default function StyledButton({\n type,\n label,\n onClick,\n icon,\n iconColor,\n size,\n disabled = false,\n isFaded = false,\n margin = '7px', //todo: remove margin from here, it should always be 0 and styled by parent components\n href = undefined,\n target = '_self',\n dataTestId\n}) {\n //todo: number of different properties here grown over time, it'll need to be refactored\n let styledIcon =\n icon != null ? (\n \n ) : (\n ''\n );\n\n let appearance = 'primary';\n let defaultSize = 'lg';\n let minWidth = '100px';\n let width = '100%';\n const height = '40px';\n let backgroundColor = undefined;\n\n if (type === undefined && isFaded) {\n appearance = 'default';\n } else if (type === 'secondary') {\n appearance = 'default';\n defaultSize = 'md';\n backgroundColor = colors.lightGray;\n } else if (type === 'insignificant') {\n appearance = 'subtle';\n defaultSize = 'md';\n minWidth = '';\n } else if (type === 'small') {\n appearance = 'default';\n defaultSize = 'sm';\n minWidth = '';\n } else if (type === 'ghost') {\n appearance = 'ghost';\n } else if (type === 'primary') {\n backgroundColor = colors.deepBlue;\n }\n return (\n \n \n \n {styledIcon}\n {label}\n \n \n \n );\n}\n","import React from 'react';\nimport { Modal } from 'rsuite';\nimport SectionInterspace from './SectionInterspace';\nimport { Row } from 'reactstrap';\nimport StyledButton from './styledButton';\nimport styled from 'styled-components';\n\nconst StyledTitle = styled(Modal.Title)`\n font-size: 25px !important;\n`;\n\nconst StyledModal = styled(Modal)`\n font-size: 17px;\n padding: 20px;\n max-width: 100%;\n`;\n\nexport default function ConfirmModal({\n title,\n isVisible,\n canConfirm,\n onConfirm,\n onShow,\n onHide,\n children\n}) {\n return (\n \n \n {title}\n \n \n \n {children}\n \n \n \n \n \n \n \n \n \n );\n}\n","//based on https://github.com/guillaumemorin/react-styled-toggle\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nexport const GlobalContainer = styled.label`\n display: inline-flex;\n`;\n\nexport const InputContainer = styled.label`\n position: relative;\n display: inline-block;\n width: ${({ width }) => width}px;\n height: ${({ height }) => height}px;\n > input {\n display: none;\n }\n`;\n\nexport const Input = styled.input`\n &:checked + span {\n background-color: ${({ backgroundColorChecked }) =>\n backgroundColorChecked};\n }\n &:disabled + span {\n background-color: ${({ backgroundColorUnchecked }) =>\n backgroundColorUnchecked};\n opacity: 0.4;\n cursor: not-allowed;\n }\n &:disabled:checked + span {\n background-color: ${({ backgroundColorChecked }) =>\n backgroundColorChecked};\n opacity: 0.4;\n cursor: not-allowed;\n }\n &:focus + span {\n box-shadow: 0 0 1px #2196f3;\n }\n &:checked + span:before {\n -webkit-transform: translateX(${({ sliderSize }) => sliderSize}px);\n -ms-transform: translateX(${({ sliderSize }) => sliderSize}px);\n transform: translateX(${({ sliderSize }) => sliderSize}px);\n }\n`;\n\nexport const Slider = styled.span`\n position: absolute;\n cursor: pointer;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ backgroundColorUnchecked }) =>\n backgroundColorUnchecked};\n -webkit-transition: 0.2s;\n transition: 0.2s;\n border-radius: 34px;\n &:before {\n position: relative;\n border-radius: 50%;\n content: '';\n height: ${({ sliderSize }) => sliderSize}px;\n width: ${({ sliderSize }) => sliderSize}px;\n left: 4px;\n background-color: ${({ backgroundColorButton }) =>\n backgroundColorButton};\n -webkit-transition: 0.2s;\n transition: 0.2s;\n }\n`;\n\nexport const Label = styled.span`\n font-weight: bold;\n padding-right: 10px;\n`;\n\nconst Toggle = ({\n onChange,\n checked,\n disabled,\n width,\n height,\n backgroundColorChecked,\n backgroundColorUnchecked,\n backgroundColorButton,\n name,\n value,\n label,\n sliderSize,\n className,\n marginBottom,\n dataTestId\n}) => {\n return (\n \n {\n e.preventDefault();\n }}\n >\n {label}\n \n \n \n \n \n \n );\n};\n\nToggle.defaultProps = {\n backgroundColorChecked: colors.deepBlue,\n backgroundColorUnchecked: '#ccc',\n backgroundColorButton: '#fff',\n sliderSize: 16,\n width: 40,\n height: 22\n};\n\nexport default Toggle;\n","export enum MaxOffersAge {\n oneDay = 1,\n threeDays = 3,\n oneWeek = 7\n}\n\nexport const getDisplayedMaxOffersAge = (age?: MaxOffersAge): string => {\n if (age == null) {\n return '';\n } else if (age === MaxOffersAge.oneDay) {\n return 'Ostatnie 24h';\n } else if (age === MaxOffersAge.threeDays) {\n return 'Ostatnie 3 dni';\n } else if (age === MaxOffersAge.oneWeek) {\n return 'Ostatni tydzień';\n } else {\n return '---BŁĄD---';\n }\n};\n","import React, { useState } from 'react';\nimport ConfirmModal from '../utils/confirmModal';\nimport Toggle from '../utils/toggle';\n\nexport const EmailNotificationsToggle = ({\n filter,\n onChange,\n isChanging,\n className\n}) => {\n const [showModal, setShowModal] = useState(false);\n\n const onClick = () => {\n if (filter.sendEmailNotifications) {\n //user's trying to turn off notifications -- show confirmation modal\n setShowModal(true);\n } else {\n onChange(true);\n }\n };\n\n const onEmailNotificationsTurnedOff = () => {\n setShowModal(false);\n onChange(false);\n };\n\n return (\n
\n \n\n setShowModal(false)}\n onConfirm={onEmailNotificationsTurnedOff}\n canConfirm={true}\n >\n

\n Czy na pewno chcesz wyłączyć powiadomienia email dla filtra{' '}\n {filter.name}?\n

\n

\n Nie będziesz już więcej dostawać powiadomień email o nowych\n ofertach spełniających ten filtr\n

\n \n
\n );\n};\n","import React from 'react';\n\nconst letterA = {\n path: (\n \n ),\n viewBox: '0 0 122.88 122.88'\n};\nconst LetterD = {\n path: (\n \n ),\n viewBox: '0 0 122.88 122.88'\n};\nconst LetterP = {\n path: (\n \n ),\n viewBox: '0 0 122.88 122.88'\n};\nconst Circle = {\n path: (\n \n ),\n viewBox: '0 0 27 32'\n};\n\nexport interface SvgIconProps {\n icon: string;\n size?: string;\n sizeInPx?: number;\n color?: string;\n className?: string;\n}\n\nexport const SvgIcon = ({\n icon,\n size,\n sizeInPx,\n color,\n className\n}: SvgIconProps) => {\n let iconProperties;\n\n if (icon === 'letterA') {\n iconProperties = letterA;\n } else if (icon === 'letterD') {\n iconProperties = LetterD;\n } else if (icon === 'letterP') {\n iconProperties = LetterP;\n } else if (icon === 'circle') {\n iconProperties = Circle;\n }\n\n if (!sizeInPx) {\n sizeInPx = 19;\n if (size === 'sm') {\n sizeInPx = 14;\n } else if (size === 'xs') {\n sizeInPx = 11;\n }\n }\n\n return (\n \n {iconProperties?.path}\n \n );\n};\n","import React from 'react';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport styled from 'styled-components';\nimport { Tooltip, Whisper } from 'rsuite';\nimport { SvgIcon } from './SvgIcon';\n\nconst StyledRsuiteIcon = styled(RsuiteIcon)`\n color: ${({ $color }) => $color};\n\n :hover {\n color: ${({ $colorOnHover }) => $colorOnHover};\n cursor: pointer;\n }\n\n transition: color 0.2s ease;\n`;\n\nconst StretchedDiv = styled.div`\n height: 100%;\n width: 100%;\n`;\n\nconst IconWrapper = styled(StretchedDiv)<{\n $color?: string;\n $colorOnHover?: string;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${({ $color }) => $color};\n\n :hover {\n color: ${({ $colorOnHover }) => $colorOnHover};\n cursor: pointer;\n }\n`;\n\nconst ChildrenWrapper = styled.div`\n margin-left: 5px;\n`;\n\nexport interface HoverableIconProps {\n onClick?: (event: React.MouseEvent) => void;\n className?: string;\n icon: string;\n color?: string;\n colorOnHover?: string;\n rsuiteIcon?: boolean;\n hoverText?: string;\n size?: string;\n children?: React.ReactNode;\n dataTestId?: string;\n}\n\nexport const HoverableIcon: React.FC = ({\n onClick,\n className,\n icon,\n color,\n colorOnHover,\n children,\n rsuiteIcon = false,\n hoverText = undefined,\n size = undefined,\n dataTestId\n}: HoverableIconProps) => {\n if (!colorOnHover) {\n colorOnHover = color;\n }\n\n const whisperWrapper = (children?: React.ReactNode) =>\n hoverText ? (\n {hoverText}}\n placement=\"auto\"\n >\n {children}\n \n ) : (\n {children}\n );\n\n const iconElement = rsuiteIcon ? (\n \n ) : (\n \n );\n\n return whisperWrapper(\n \n {iconElement}\n {children != null && {children}}\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Card = styled.div`\n background-color: #e5e5ea40;\n border-radius: 6px;\n padding: 15px;\n min-height: 370px;\n width: 320px;\n`;\n\ninterface Props {\n className?: string;\n children: React.ReactElement;\n}\nexport const FilterCardBackground = ({ className, children }: Props) => {\n return {children};\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { HoverableIcon } from '../utils/hoverableIcon';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { colors } from '../theme/colors';\nimport { FilterCardBackground } from './FilterCardBackground';\n\nconst MainContainer = styled(FilterCardBackground)`\n display: flex;\n flex-flow: column;\n position: relative;\n`;\n\nconst IconsWrapper = styled.div`\n display: flex;\n flex-wrap: nowrap;\n float: right;\n`;\n\nconst IconWrapper = styled.div`\n margin-left: 15px;\n`;\n\nconst TitleText = styled.div`\n width: 100%;\n line-height 1em;\n max-height: 2em;\n\n text-align: center;\n color: ${({ theme }) => theme.colors.deepBlue};\n font-size: 22px;\n font-weight: bold;\n\n //multiline ellipsis\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n`;\n\nconst SubtitleText = styled.div`\n margin-top: 10px;\n font-weight: bold;\n text-align: center;\n`;\n\nconst PaddedContainer = styled.div`\n padding: 0px 30px;\n`;\n\nconst Body = styled.div`\n flex: 1 1 auto;\n`;\n\nconst Footer = styled.div`\n flex: 0 1 4px;\n`;\n\nexport const FilterCard = ({\n filter,\n subtitle,\n footer,\n renderTitle,\n renderEditButton,\n onDelete,\n children,\n className\n}) => {\n return (\n \n
\n \n {renderEditButton(filter)}\n \n \n \n \n
\n \n {renderTitle && renderTitle(filter)}\n {subtitle}\n\n \n \n {children}\n \n\n
\n \n {footer}\n
\n
\n );\n};\n","export enum Market {\n Primary,\n Aftermarket\n}\n\nexport const getDisplayedMarket = (market: Market | null): string => {\n if (market === null) {\n return '';\n } else if (market === Market.Primary) {\n return 'Pierwotny';\n } else if (market === Market.Aftermarket) {\n return 'Wtórny';\n } else {\n return '---BŁĄD---';\n }\n};\n","export enum PremisesPurpose {\n Office,\n Services,\n Commercial,\n Gastronomy,\n Hotel,\n Warehouse,\n Industrial\n}\n\nexport const getDisplayedPurpose = (purpose: PremisesPurpose): string => {\n switch (purpose) {\n case PremisesPurpose.Office:\n return 'Biurowe';\n case PremisesPurpose.Services:\n return 'Usługowe';\n case PremisesPurpose.Commercial:\n return 'Handlowe';\n case PremisesPurpose.Gastronomy:\n return 'Gastronomiczne';\n case PremisesPurpose.Hotel:\n return 'Hotelowe';\n case PremisesPurpose.Warehouse:\n return 'Magazynowe';\n case PremisesPurpose.Industrial:\n return 'Przemysłowe';\n default:\n return purpose;\n }\n};\n","export enum PropertyType {\n Apartment,\n Premises\n}\n\nexport const getDisplayedPropertyType = (value: PropertyType): string => {\n switch (value) {\n case PropertyType.Apartment:\n return 'Mieszkania';\n case PropertyType.Premises:\n return 'Lokale';\n default:\n return value;\n }\n};\n","import React from 'react';\nimport { getDisplayedMaxOffersAge } from '../MaxOffersAge';\nimport { getDisplayedRange, getDisplayedEnumArray } from '../helpers';\nimport styled from 'styled-components';\nimport { getDisplayedOfferOrigin } from '../OfferOrigin';\nimport { getDisplayedRoomsNumber } from '../RoomsNumber';\nimport { getDisplayedMarket } from '../Market';\nimport { getDisplayedPurpose } from '../PremisesPurpose';\n\nconst ParameterParagraph = styled.div`\n display: flex;\n margin-bottom: 5px;\n`;\n\nexport const getDisplayedProperties = (searchCriteria) => {\n const {\n priceFrom,\n priceTo,\n includeEmptyPrice,\n sizeFrom,\n sizeTo,\n includeEmptySize,\n pricePerSquareMeterFrom,\n pricePerSquareMeterTo,\n includeEmptyPricePerSquareMeter,\n districts,\n includeEmptyDistrict,\n roomsNumbers,\n origin,\n market,\n maxOffersAge,\n includedWords,\n excludedWords,\n purposes\n } = searchCriteria;\n\n let propertiesToDisplay = [];\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Liczba pokoi',\n getDisplayedEnumArray(roomsNumbers, getDisplayedRoomsNumber)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Cena',\n getDisplayedRange(priceFrom, priceTo, includeEmptyPrice)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Cena za metr',\n getDisplayedRange(\n pricePerSquareMeterFrom,\n pricePerSquareMeterTo,\n includeEmptyPricePerSquareMeter\n )\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Wielkość',\n getDisplayedRange(sizeFrom, sizeTo, includeEmptySize)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Pochodzenie oferty',\n getDisplayedOfferOrigin(origin)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Rynek',\n getDisplayedMarket(market)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Data dodania',\n getDisplayedMaxOffersAge(maxOffersAge)\n );\n\n let districtText;\n if (includeEmptyDistrict) {\n if (districts.length > 0) {\n districtText = `${districts.join(', ')} lub brak podanej`;\n }\n } else {\n if (districts.length > 0) {\n districtText = districts.join(', ');\n } else {\n districtText = 'Dowolna podana';\n }\n }\n pushIfShouldBeVisible(propertiesToDisplay, 'Dzielnice', districtText);\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Przeznaczenie',\n getDisplayedEnumArray(purposes, getDisplayedPurpose)\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Słowa kluczowe',\n includedWords.join(', ')\n );\n\n pushIfShouldBeVisible(\n propertiesToDisplay,\n 'Wykluczone słowa',\n excludedWords?.join(', ')\n );\n\n return
{propertiesToDisplay}
;\n};\n\nconst pushIfShouldBeVisible = (propertiesToDisplay, fieldName, fieldValue) => {\n if (fieldValue) {\n propertiesToDisplay.push(\n \n \n

\n {fieldName}: {fieldValue}\n

\n
\n );\n }\n};\n","import React, { useState } from 'react';\nimport ConfirmModal from '../utils/confirmModal';\nimport { EmailNotificationsToggle } from './EmailNotificationsToggle';\nimport { FilterCard } from './FilterCard';\nimport { getDisplayedProperties } from './getDisplayedFilterProperties';\nimport { getDisplayedOfferType } from '../OfferType';\nimport { getDisplayedCity } from '../City';\nimport { getDisplayedPropertyType } from '../PropertyType';\n\nexport const FilterEntry = ({\n filter,\n onDelete,\n onNotificationSwitchChange,\n renderTitle,\n renderFooter,\n renderEditButton\n}) => {\n const [isDeleteModalVisible, setIsDeleteModalVisible] = useState(false);\n\n const subtitle = `${getDisplayedPropertyType(\n filter.searchCriteria.propertyType\n )} - ${getDisplayedOfferType(\n filter.searchCriteria.offerType\n )} - ${getDisplayedCity(filter.searchCriteria.city)}`;\n\n const onDeleteConfirmed = async () => {\n await onDelete(filter.id);\n setIsDeleteModalVisible(false);\n };\n\n const onNotificationsToggleChanged = (newValue) => {\n const updatedfilter = {\n ...filter,\n sendEmailNotifications: newValue\n };\n onNotificationSwitchChange(updatedfilter);\n };\n\n return (\n
\n setIsDeleteModalVisible(true)}\n footer={\n
\n \n\n {renderFooter(filter.id)}\n
\n }\n >\n
{getDisplayedProperties(filter.searchCriteria)}
\n \n\n setIsDeleteModalVisible(false)}\n onConfirm={onDeleteConfirmed}\n canConfirm={true}\n >\n

\n Czy na pewno chcesz usunąć filtr {filter.name}? Nie\n da się tego cofnąć\n

\n \n
\n );\n};\n","import React from 'react';\nimport { FilterEntry } from './FilterEntry';\nimport styled from 'styled-components';\nimport { Loader } from '../utils/loader';\n\nconst EntriesWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n`;\n\nexport const FiltersList = ({\n filters,\n renderTitle,\n areFiltersLoading,\n onFilterDelete,\n onNotificationSwitchChange,\n renderFooter,\n renderEditButton,\n renderNewFilterCard\n}) => {\n const sortedFilters = [...filters].sort(\n (a, b) => b.creationDate - a.creationDate\n );\n\n let content = (\n \n {sortedFilters.map((filter) => (\n \n ))}\n {renderNewFilterCard()}\n \n );\n\n return areFiltersLoading ? : content;\n};\n","import { useEffect, useState } from 'react';\nimport { showAlert } from '../components/helpers';\n\nexport const useAsyncData = (\n getDataAsync: () => Promise,\n initialState: T,\n errorHandler?: (e: any) => void,\n dependenciesArray: any[] = []\n): [T, boolean, () => void] => {\n const [data, setData] = useState(initialState);\n const [isLoading, setIsLoading] = useState(true);\n const [refreshCounter, setRefreshCounter] = useState(0);\n\n const refreshData = () => setRefreshCounter(refreshCounter + 1);\n\n useEffect(() => {\n setData(initialState);\n setIsLoading(true);\n const fetchData = async () => {\n try {\n const result = await getDataAsync();\n setData(result);\n } catch (e) {\n if (errorHandler) {\n errorHandler(e);\n } else {\n showAlert(\n 'Wybacz, coś poszło nie tak! Jeśli problem się powtarza skontaktuj się z nami',\n 'error'\n );\n console.error(JSON.stringify(e));\n }\n setData(initialState);\n } finally {\n setIsLoading(false);\n }\n };\n fetchData();\n }, [...dependenciesArray, refreshCounter]);\n\n return [data, isLoading, refreshData];\n};\n","import React from 'react';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Icon } from 'rsuite';\nimport styled from 'styled-components';\nimport { FilterCardBackground } from './FilterCardBackground';\nimport { LinkWithoutStyling } from '../utils/LinkWithoutStyling';\n\nconst CenteredDiv = styled.div`\n text-align: center;\n margin-top: 50px;\n`;\n\nconst BigParagraph = styled.p`\n font-size: 20px;\n font-weight: bold;\n margin-top: 20px;\n`;\n\nconst DescriptionParagraph = styled.p`\n font-size: 16px;\n margin-top: 10px;\n`;\n\nconst StyledCardBackground = styled(FilterCardBackground)`\n :hover {\n box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.05);\n background-color: #e5e5ea70;\n cursor: pointer;\n }\n transition: box-shadow 0.2s ease, background-color 0.2s ease;\n`;\n\nexport default function NewFilterCard() {\n return (\n \n \n \n \n \n Dodaj nowy filtr\n \n Najpierw powiedz które oferty Cię interesują, a\n następnie kliknij przycisk \"Zapisz jako nowy filtr\"\n \n \n \n \n );\n}\n","import React from 'react';\nimport { FiltersList } from './FiltersList';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Container } from 'reactstrap';\nimport { Page } from '../Page';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport apiCaller from '../ApiCaller';\nimport { showAlert } from '../helpers';\nimport { useCurrentPage } from '../../hooks/useCurrentPage';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { colors } from '../theme/colors';\nimport { LinkWithoutStyling } from '../utils/LinkWithoutStyling';\nimport { HoverableIcon } from '../utils/hoverableIcon';\nimport NewFilterCard from './NewFilterCard';\n\nexport const Filters = () => {\n useCurrentPage(Page.Filters);\n\n const [filters, areFiltersLoading, refreshFilters] = useAsyncData(\n () => apiCaller.get('api/filters'),\n []\n );\n\n const onFilterDelete = async (filterId) => {\n await apiCaller.delete('api/filters', filterId);\n showAlert(`usunięto filtr!`);\n refreshFilters();\n };\n\n const onFilterUpdate = async (updatedFilter) => {\n var updateResult = await apiCaller.put('api/filters', {\n ...updatedFilter\n });\n\n if (updateResult.status === 'success') {\n showAlert('Filtr zaktualizowany!');\n refreshFilters();\n } else if (updateResult.status === 'filterTooWide') {\n showAlert(\n 'Filtr jest zbyt obszerny aby móc dla niego wysyłać powiadomienia mailowe - aby móc je włączyć zawęź go tak by pokazywał poniżej 100 ofert w ciągu ostatnich 3 dni',\n 'error'\n );\n } else if (\n updateResult.status === 'filtersWithEmailNotificationsLimitExceeded'\n ) {\n showAlert(\n 'Przykro nam, nie możesz mieć więcej niż 3 filtrów z włączonymi powiadomieniami email',\n 'error'\n );\n } else {\n showAlert(\n 'Nie udało się zapisać filtra - jeśli błąd będzie się powtarzał prosimy skontaktuj się z nami',\n 'error'\n );\n }\n };\n\n const getSearchUrl = (filterId) => {\n return `/search?filterId=${filterId}`;\n };\n\n return (\n \n

Zapisane filtry

\n \n (\n \n \n \n )}\n onFilterDelete={onFilterDelete}\n onNotificationSwitchChange={onFilterUpdate}\n renderTitle={(filter) => (\n \n {filter.name}\n \n )}\n renderFooter={(filterId) => (\n \n Pokaż oferty\n \n )}\n renderNewFilterCard={() => }\n />\n
\n );\n};\n","export enum OfferFlag {\n Yellow = 0,\n Red = 10,\n Green = 20,\n Blue = 30\n}\n","const currentSearchCriteriaPath = 'currentSearchCriteria';\nconst rootPath = 'priceMap';\n\nexport const saveCurrentSearchCriteriaInSessionStorage = (\n searchCriteria: any\n) => {\n saveInSessionStorage(searchCriteria, currentSearchCriteriaPath);\n};\nexport const getCurrentSearchCriteriaFromSessionStorage = () => {\n return getFromSessionStorage(currentSearchCriteriaPath);\n};\n\nexport const saveInSessionStorage = (toSave: unknown, path: string) => {\n const serialized = JSON.stringify(toSave);\n sessionStorage.setItem(`${rootPath}.${path}`, serialized);\n};\n\nexport const getFromSessionStorage = (path: string): unknown | undefined => {\n const json = sessionStorage.getItem(`${rootPath}.${path}`);\n\n if (json != null) {\n try {\n var deserialized = JSON.parse(json);\n\n return deserialized;\n } catch (e) {}\n }\n\n return undefined;\n};\n\nexport const removeFromSessionStorage = (path: string) => {\n sessionStorage.removeItem(`${rootPath}.${path}`);\n};\n","const rootPath = 'priceMap';\n\nexport const saveInLocalStorage = (toSave: unknown, path: string) => {\n const serialized = JSON.stringify(toSave);\n localStorage.setItem(`${rootPath}.${path}`, serialized);\n};\n\nexport const getFromLocalStorage = (path: string): unknown | undefined => {\n const json = localStorage.getItem(`${rootPath}.${path}`);\n\n if (json != null) {\n try {\n var deserialized = JSON.parse(json);\n\n return deserialized;\n } catch (e) {}\n }\n\n return undefined;\n};\n","export const GetEnumValues = (enumType: any): number[] => {\n return Object.values(enumType)\n .filter((x) => typeof x === 'number')\n .map((x) => Number(x));\n};\n","import { PropertyType } from './../PropertyType';\nimport { City } from './../City';\nimport { OfferFlag } from './../OfferFlag';\nimport { GetEnumValues } from './../tsHelpers';\nimport { FavoriteOffersSearchCriteria } from './FavoriteOffersSearchCriteria';\nimport {\n saveInSessionStorage,\n getFromSessionStorage,\n removeFromSessionStorage\n} from '../../components/SessionStorageFunctions';\nimport { OfferType } from '../OfferType';\n\nconst sessionStoragePath = 'currentFavoriteOffersSearchCriteria';\n\nfunction instanceOfFavoriteOffersSearchCriteria(\n object: any\n): object is FavoriteOffersSearchCriteria {\n if (object == null) return false;\n\n return (\n GetEnumValues(City).includes(object.city) &&\n GetEnumValues(OfferType).includes(object.offerType) &&\n GetEnumValues(PropertyType).includes(object.propertyType) &&\n (object.offerFlag === undefined ||\n object.offerFlag === null ||\n GetEnumValues(OfferFlag).includes(object.offerFlag))\n );\n}\n\nexport const saveFavoriteOffersSearchCriteriaInSessionStorage = (\n searchCriteria: FavoriteOffersSearchCriteria\n) => {\n saveInSessionStorage(searchCriteria, sessionStoragePath);\n};\n\nexport const getFavoriteOffersSearchCriteriaFromSessionStorage = ():\n | FavoriteOffersSearchCriteria\n | undefined => {\n const object = getFromSessionStorage(sessionStoragePath);\n if (instanceOfFavoriteOffersSearchCriteria(object)) return object;\n return undefined;\n};\n\nexport const clearFavoriteOffersSearchCriteriaSessionStorage = () => {\n removeFromSessionStorage(sessionStoragePath);\n};\n","import { GetEnumValues } from './../tsHelpers';\nimport { StatisticsSearchCriteria } from './StatisticsSearchCriteria';\nimport {\n saveInSessionStorage,\n getFromSessionStorage,\n removeFromSessionStorage\n} from '../SessionStorageFunctions';\nimport { City } from '../City';\n\nconst sessionStoragePath = 'statisticsSearchCriteria';\n\nfunction instanceOfStatisticsSearchCriteria(\n object: any\n): object is StatisticsSearchCriteria {\n if (object == null) return false;\n\n const districts = object.districts;\n const roomsNumbers = object.roomsNumbers;\n\n return (\n GetEnumValues(City).includes(object.city) &&\n (districts === undefined ||\n districts === null ||\n Array.isArray(districts)) &&\n (roomsNumbers === undefined ||\n roomsNumbers === null ||\n Array.isArray(roomsNumbers))\n );\n}\n\nexport const saveStatisticsSearchCriteriaInSessionStorage = (\n searchCriteria: StatisticsSearchCriteria\n) => {\n saveInSessionStorage(searchCriteria, sessionStoragePath);\n};\n\nexport const getStatisticsSearchCriteriaFromSessionStorage = ():\n | StatisticsSearchCriteria\n | undefined => {\n const object = getFromSessionStorage(sessionStoragePath);\n if (instanceOfStatisticsSearchCriteria(object)) return object;\n return undefined;\n};\n\nexport const clearStatisticsSearchCriteriaSessionStorage = () => {\n removeFromSessionStorage(sessionStoragePath);\n};\n","export const filterChangeType = {\n saveAsNewFilter: 1,\n saveChanges: 2,\n changeName: 3\n};\n\nexport const divideBy = {\n roomsNumber: 0,\n market: 1,\n district: 2\n};\n\nexport const nbpPriceType = {\n transactionPrice: 0,\n offerPrice: 1\n};\n\nexport const nbpStatisticsTimeFrame = {\n lastYear: 0,\n sinceBeginning: 1\n};\n\nexport const nbpDivideBy = {\n market: 0,\n priceType: 1\n};\n\nexport const averagePriceType = {\n priceTotal: 0,\n pricePerMeter: 1\n};\n\nexport const getDisplayedDivideBy = (value) => {\n if (value === divideBy.district) {\n return 'Dzielnica';\n }\n if (value === divideBy.market) {\n return 'Rynek';\n }\n if (value === divideBy.roomsNumber) {\n return 'Liczba pokoi';\n }\n\n return '---BŁĄD---';\n};\n\nexport const getDisplayedNbpStatisticsTimeFrame = (timeFrame) => {\n if (timeFrame === nbpStatisticsTimeFrame.lastYear) {\n return 'Ostatni rok';\n } else if (timeFrame === nbpStatisticsTimeFrame.sinceBeginning) {\n return 'Wszystkie';\n } else {\n return '---BŁĄD---';\n }\n};\n\nexport const getDisplayedNbpPriceType = (priceType) => {\n if (priceType === nbpPriceType.transactionPrice) {\n return 'Ceny transakcyjne';\n } else if (priceType === nbpPriceType.offerPrice) {\n return 'Ceny ofertowe';\n } else {\n return '---BŁĄD---';\n }\n};\n\nexport const getDisplayedNbpDivideBy = (value) => {\n if (value === nbpDivideBy.market) {\n return 'Rynek';\n } else if (value === nbpDivideBy.priceType) {\n return 'Typ cen';\n } else {\n return '---BŁĄD---';\n }\n};\n\nexport const getDisplayedAveragePriceType = (value) => {\n if (value === averagePriceType.priceTotal) {\n return 'Cena całkowita';\n } else if (value === averagePriceType.pricePerMeter) {\n return 'Cena za metr';\n } else {\n return '---BŁĄD---';\n }\n};\n","import styled from 'styled-components';\n\nconst FlexDiv = styled.div`\n display: flex;\n`;\n\nexport default FlexDiv;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../../theme/colors';\nimport { Loader } from '../../../utils/loader';\n\nconst padding = '10px';\n\nconst StyledCard = styled.div`\n background-color: white;\n border-radius: 6px;\n box-shadow: 0 0 15px rgba(0, 0, 0, 0.09);\n`;\n\nexport const ChartCard = ({ isLoading = false, children, className }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const CardHeader = styled.div`\n padding: 5px;\n background-color: ${colors.lightGray};\n`;\n\nexport const ChartContainer = styled.div`\n width: 100%;\n padding: ${padding};\n overflow: hidden;\n`;\n\nexport const HeaderButtonsContainer = styled.div`\n width: fit-content;\n margin: auto;\n display: flex;\n flex-wrap: wrap;\n\n > * {\n margin: 5px 15px;\n }\n`;\n\nexport const SideButtonsContainer = styled.div`\n background-color: ${colors.lightGray};\n padding: ${padding};\n max-width: 160px;\n min-width: 160px;\n\n > * {\n margin-bottom: 20px;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport RsuiteWhisper from 'rsuite/lib/Whisper';\nimport RsuiteTooltip from 'rsuite/lib/Tooltip';\nimport { colors } from '../../../theme/colors';\n\nconst marginBottom = '6px';\n\nconst StyledSideButton = styled.div`\n padding-left: 10px;\n margin-bottom: ${marginBottom};\n background-color: ${({ isLit, theme }) =>\n isLit ? theme.colors.lightPurple : theme.colors.lightGray};\n color: ${({ isLit, disabled, theme }) =>\n isLit ? theme.colors.deepPurple : disabled ? theme.colors.gray : ''};\n width: 100%;\n height: 25px;\n line-height: 25px;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n`;\n\nexport const SideButton = ({\n isSelected,\n onSelect,\n disabled,\n disabledTooltipText,\n children\n}) => {\n return (\n {disabledTooltipText}}\n trigger={disabled ? 'hover' : 'none'}\n >\n (disabled || isSelected ? '' : onSelect())}\n >\n {children}\n \n \n );\n};\n\nexport const SideButtonsLabel = styled.div`\n font-weight: bold;\n color: ${colors.slightlyDarkGray};\n margin-bottom: ${marginBottom};\n`;\n","export default function canDivideByDistricts(selectedDistricts) {\n return (\n selectedDistricts &&\n selectedDistricts.length >= 1 &&\n selectedDistricts.length <= 5\n );\n}\n","import React from 'react';\nimport { divideBy } from '../../../enums';\nimport { SideButton, SideButtonsLabel } from './SideButtons';\nimport canDivideByDistricts from '../../../canDivideByDistricts';\nimport { OfferType } from '../../../OfferType';\n\nconst DivideBySelect = ({\n selectedValue,\n onSelect,\n showCompareMarket = true,\n selectedOfferType,\n selectedDistricts\n}) => {\n const disableDistricts = !canDivideByDistricts(selectedDistricts);\n const disableMarket = selectedOfferType === OfferType.Rental;\n\n return (\n
\n Dane\n onSelect(null)}\n >\n Średnia\n \n onSelect(divideBy.roomsNumber)}\n >\n Porównaj pokoje\n \n {showCompareMarket && (\n onSelect(divideBy.market)}\n disabled={disableMarket}\n disabledTooltipText=\"Rynek pierwotny/wtórny jest dostępny tylko dla ofert sprzedaży\"\n >\n Porównaj rynki\n \n )}\n onSelect(divideBy.district)}\n disabled={disableDistricts}\n disabledTooltipText=\"Wybierz od jednej do pięciu dzielnic!\"\n >\n Porównaj dzielnice\n \n
\n );\n};\n\nexport default DivideBySelect;\n","export enum StatisticsTimeFrame {\n lastMonth = 1,\n last6Months = 6,\n last2Years = 24\n}\n\nexport const getDisplayedStatisticsTimeFrame = (\n timeFrame: StatisticsTimeFrame\n) => {\n if (timeFrame === StatisticsTimeFrame.lastMonth) {\n return 'Miesiąc';\n } else if (timeFrame === StatisticsTimeFrame.last6Months) {\n return '6 miesięcy';\n } else if (timeFrame === StatisticsTimeFrame.last2Years) {\n return '2 lata';\n } else {\n return '---BŁĄD---';\n }\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nconst radius = '6px';\n\nconst ButtonsContainer = styled.div`\n display: flex;\n div:first-child {\n border-radius: ${radius} 0px 0px ${radius};\n }\n div:last-child {\n border-radius: 0px ${radius} ${radius} 0px;\n }\n`;\n\nconst Button = styled.div`\n border: 2px solid\n ${({ disabled }) => (disabled ? colors.gray : colors.lightPurple)};\n color: ${({ isLit, disabled }) =>\n disabled ? colors.slightlyDarkGray : isLit ? colors.deepPurple : ''};\n background-color: ${({ isLit, disabled }) =>\n disabled\n ? colors.lightGray\n : isLit\n ? colors.lightPurple\n : colors.white};\n font-weight: ${({ isLit, disabled }) =>\n isLit && !disabled ? 'bold' : 'normal'};\n padding: 5px 0px;\n width: 110px;\n display: flex;\n justify-content: center;\n overflow: hidden;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n`;\n\nconst SwitchButton = ({\n values,\n formatValue,\n selectedValue,\n onValueSelected,\n disabled,\n className\n}) => {\n const [currentlySelected, setCurrentlySelected] = useState(selectedValue);\n\n const onClick = (v) => {\n if (v !== currentlySelected) {\n setCurrentlySelected(v);\n onValueSelected(v);\n }\n };\n\n return (\n \n {values.map((v) => (\n (disabled ? '' : onClick(v))}\n isLit={v === currentlySelected}\n disabled={disabled}\n >\n {formatValue(v)}\n \n ))}\n \n );\n};\n\nexport default SwitchButton;\n","import React from 'react';\nimport { getDisplayedMarket, Market } from '../../../Market';\nimport { OfferType } from '../../../OfferType';\nimport { GetEnumValues } from '../../../tsHelpers';\nimport SwitchButton from '../../../utils/SwitchButton';\n\nconst MarketSwitch = ({ selectedValue, onSelect, selectedOfferType }) => {\n return (\n \n );\n};\n\nexport default MarketSwitch;\n","import React from 'react';\nimport { GetEnumValues } from '../../../tsHelpers';\nimport { getDisplayedOfferType, OfferType } from '../../../OfferType';\nimport SwitchButton from '../../../utils/SwitchButton';\n\nconst OfferTypeSwitch = ({ selectedValue, onSelect }) => {\n return (\n \n );\n};\n\nexport default OfferTypeSwitch;\n","import React, { useEffect, useState } from 'react';\nimport { DiscreteColorLegend } from 'react-vis';\nimport styled from 'styled-components';\n\nconst LegendContainer = styled.div`\n display: flex;\n justify-content: center;\n`;\n\nconst StyledLegend = styled(DiscreteColorLegend)`\n display: flex;\n\n div:nth-child(${(props) =>\n props.currentlyChosen !== null\n ? props.currentlyChosen + 1\n : 0}) {\n background-color: ${({ theme }) => theme.colors.gray} !important;\n }\n`;\n\nconst DivideByText = styled.div`\n font-size: 13px;\n width: fit-content;\n margin: auto 10px;\n`;\n\nconst ChartLegend = ({\n labels,\n onSeriesChosen,\n currentDivideBy,\n getDisplayedDivideBy,\n isLoading\n}) => {\n const [currentlyChosenSeries, setCurrentlyChosenSeries] = useState(null);\n\n useEffect(() => onSeriesClick(null), [currentDivideBy]);\n\n const shouldBeVisible = !isLoading && labels.length > 1;\n\n const onSeriesClick = (index) => {\n let newValue;\n if (index === currentlyChosenSeries) {\n newValue = null;\n } else {\n newValue = index;\n }\n setCurrentlyChosenSeries(newValue);\n if (onSeriesChosen !== undefined) {\n onSeriesChosen(newValue);\n }\n };\n\n return (\n shouldBeVisible && (\n \n \n {getDisplayedDivideBy(currentDivideBy)}:\n \n onSeriesClick(index)}\n onItemMouseEnter={(_, index) => onSeriesChosen(index)}\n onItemMouseLeave={() =>\n onSeriesChosen(currentlyChosenSeries)\n }\n currentlyChosen={currentlyChosenSeries}\n />\n \n )\n );\n};\n\nexport default ChartLegend;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as PriceMapLogo } from '../../../utils/icons/PriceMapLogoWithText.svg';\nimport { colors } from '../../../theme/colors';\nimport { CenteredDiv } from '../../../account/PageLayout';\n\nconst Wrapper = styled.div`\n opacity: 0.7;\n`;\n\nconst Description = styled.div`\n color: ${colors.veryDarkGray};\n line-height: 1.8em;\n font-size: 0.75em;\n text-align: center;\n`;\n\nexport const Branding: React.FC = () => {\n return (\n \n Przygotowane przez\n \n \n \n \n );\n};\n","import React from 'react';\nimport {\n HorizontalGridLines,\n VerticalGridLines,\n XAxis,\n FlexibleWidthXYPlot,\n YAxis\n} from 'react-vis';\nimport { breakpoints } from '../../../theme/mediaQueries';\nimport styled from 'styled-components';\nimport { Branding } from './Branding';\n\nconst BrandingContainer = styled.div`\n position: absolute;\n bottom: 60px;\n right: 100px;\n\n pointer-events: none;\n`;\n\nexport default class XyPlot extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { maxTicksToShow: 6 };\n\n this.updateMaxTicksToShow = this.updateMaxTicksToShow.bind(this);\n }\n\n componentDidMount() {\n this.updateMaxTicksToShow();\n window.addEventListener('resize', this.updateMaxTicksToShow);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.updateMaxTicksToShow);\n }\n\n updateMaxTicksToShow() {\n let { maxTicksToShow } = this.state;\n if (window.innerWidth > breakpoints.fullSize) {\n maxTicksToShow = 6;\n } else if (window.innerWidth > breakpoints.tablet) {\n maxTicksToShow = 3;\n } else {\n maxTicksToShow = 3;\n }\n this.setState({ maxTicksToShow });\n }\n\n render() {\n const {\n xType,\n xTickFormat,\n yDomain,\n yTickFormat,\n onMouseLeave,\n children\n } = this.props;\n const { maxTicksToShow } = this.state;\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport { Crosshair, LineSeries } from 'react-vis';\nimport { isValidNumber } from '../../../helpers';\nimport ChartLegend from './ChartLegend';\nimport XyPlot from './XyPlot';\n\nconst _onNearestX = ({\n current,\n dataSeries,\n xType,\n lastCrosshairX,\n setLastCrosshairX,\n setCrosshairValues\n}) => {\n const isTimeSeries = xType === 'time';\n const currentX = isTimeSeries ? current.x.getTime() : current.x;\n\n if (lastCrosshairX === currentX) {\n return;\n }\n\n const values = dataSeries\n .map((series) => {\n const found = series.data.find(({ x }) =>\n isTimeSeries ? x.getTime() === currentX : x === currentX\n );\n if (found) {\n return { x: current.x, label: series.label, value: found };\n }\n return null;\n })\n .filter((values) => values !== null);\n\n setLastCrosshairX(currentX);\n setCrosshairValues(values);\n};\n\nconst _onMouseLeave = ({ setLastCrosshairX, setCrosshairValues }) => {\n setLastCrosshairX(null);\n setCrosshairValues([]);\n};\n\nconst XyPlotWithLegend = ({\n dataSeries,\n renderSeries,\n seriesColors,\n currentDivideBy,\n getDisplayedDivideBy,\n isLoading,\n onSeriesChosen,\n crosshairTitleFormat,\n getCrosshairValue,\n xType,\n xTickFormat,\n getNumericValuesFromData,\n yTickFormat,\n children,\n defaultYAxisMinValue,\n defaultYAxisMaxValue\n}) => {\n const [crosshairValues, setCrosshairValues] = useState([]);\n const [lastCrosshairX, setLastCrosshairX] = useState(null);\n const [yDomain, setYDomain] = useState(undefined);\n const [crosshairSeries, setCrosshairSeries] = useState([]);\n\n useEffect(() => {\n if (!dataSeries || getNumericValuesFromData === undefined) return;\n\n let min = Infinity;\n let max = -Infinity;\n\n for (const series of dataSeries) {\n for (const data of series.data) {\n const values = getNumericValuesFromData(data);\n\n const currentMin = Math.min(...values);\n const currentMax = Math.max(...values);\n\n if (currentMin < min) {\n min = currentMin;\n }\n if (currentMax > max) {\n max = currentMax;\n }\n }\n }\n\n min = min * 0.85;\n max = max * 1.1;\n\n if (min > defaultYAxisMinValue) {\n min = defaultYAxisMinValue;\n }\n if (max < defaultYAxisMaxValue) {\n max = defaultYAxisMaxValue;\n }\n\n if (isValidNumber(min) && isValidNumber(max)) {\n setYDomain([min, max]);\n }\n }, [dataSeries]);\n\n useEffect(() => {\n const allXValues = dataSeries.flatMap((series) =>\n series.data.map((d) => d.x)\n );\n\n const uniqueValues = [...new Set(allXValues)];\n\n const crosshairSeries = uniqueValues.map((v) => ({ x: v, y: null }));\n setCrosshairSeries(crosshairSeries);\n }, [dataSeries]);\n\n return (\n
\n ({\n title: series.label,\n color: seriesColors[index]\n }))}\n onSeriesChosen={onSeriesChosen}\n currentDivideBy={currentDivideBy}\n getDisplayedDivideBy={getDisplayedDivideBy}\n isLoading={isLoading}\n />\n \n _onMouseLeave({ setLastCrosshairX, setCrosshairValues })\n }\n >\n {dataSeries.map(({ data }, index) => {\n return renderSeries({\n data,\n index\n });\n })}\n\n \n _onNearestX({\n current,\n dataSeries,\n xType,\n lastCrosshairX,\n setLastCrosshairX,\n setCrosshairValues\n })\n }\n opacity={0}\n />\n\n {children}\n\n {\n return crosshairValues.map((series) => {\n const title = series.label\n ? series.label\n : 'Wartość';\n return {\n title,\n value: getCrosshairValue(series.value)\n };\n });\n }}\n titleFormat={crosshairTitleFormat}\n />\n \n
\n );\n};\n\nexport default XyPlotWithLegend;\n","import { colors } from '../../theme/colors';\n\nconst seriesColors = [\n colors.greenyBlue,\n colors.coral,\n colors.deepBlue,\n colors.gold,\n colors.deepPurple\n];\n\nexport default seriesColors;\n","import React from 'react';\nimport { getDisplayedStatisticsTimeFrame } from '../../../StatisticsTimeFrame';\nimport { SideButtonsLabel, SideButton } from './SideButtons';\n\nconst TimeFrameSelect = ({ selectedValue, onSelect, availableTimeFrames }) => {\n return (\n
\n Okres\n\n {availableTimeFrames.map(({ value, disabled, disabledText }) => (\n onSelect(value)}\n isSelected={selectedValue === value}\n disabled={disabled}\n disabledTooltipText={disabledText}\n >\n {getDisplayedStatisticsTimeFrame(value)}\n \n ))}\n
\n );\n};\n\nexport default TimeFrameSelect;\n","import React from 'react';\nimport { OfferType } from '../../../OfferType';\nimport { StatisticsTimeFrame } from '../../../StatisticsTimeFrame';\nimport { GetEnumValues } from '../../../tsHelpers';\nimport TimeFrameSelect from '../components/TimeFrameSelect';\n\nconst unavailableForDistrictsText = (\n <>\n

\n Ten zakres czasowy nie działa dla poszczególnych dzielnic!\n

\n

\n Wyczyść wybrane dzielnice aby pokazać średnie ceny dla całego miasta\n

\n \n);\n\nconst unavailableForRentalText = (\n <>\n

\n Ten zakres czasowy nie jest dostępny dla ofert wynajmu!\n

\n \n);\n\nconst disableTwoYearsTimeFrame = (timeFrames, disabledText) => {\n const twoYearsTimeFrame = timeFrames.find(\n (x) => x.value === StatisticsTimeFrame.last2Years\n );\n\n twoYearsTimeFrame.disabled = true;\n twoYearsTimeFrame.disabledText = disabledText;\n};\n\nconst AveragePriceTimeFrameSelect = ({\n timeFrame,\n onTimeFrameSelected,\n selectedDistricts,\n selectedOfferType\n}) => {\n const timeFrames = GetEnumValues(StatisticsTimeFrame)\n //todo: enable 2 years once we have historic data\n .filter((x) => x !== StatisticsTimeFrame.last2Years)\n .map((x) => ({\n value: x,\n disabled: false,\n disabledText: undefined\n }));\n\n if (selectedOfferType === OfferType.Rental) {\n //todo: enable 2 years once we have historic data\n // disableTwoYearsTimeFrame(timeFrames, unavailableForRentalText);\n }\n if (selectedDistricts && selectedDistricts.length > 0) {\n //todo: enable 2 years once we have historic data\n // disableTwoYearsTimeFrame(timeFrames, unavailableForDistrictsText);\n }\n\n return (\n \n );\n};\n\nexport default AveragePriceTimeFrameSelect;\n","import React from 'react';\nimport { SideButton, SideButtonsLabel } from '../components/SideButtons';\nimport * as enums from '../../../enums';\nimport { GetEnumValues } from '../../../tsHelpers';\nimport { StatisticsTimeFrame } from '../../../StatisticsTimeFrame';\n\nconst unavailableForTimeFrameText = (\n <>\n

\n Ceny całkowite nie są wspierane dla tak długiego okresu!\n

\n

Aby je zobaczyć wybierz krótszy zakres czasowy

\n \n);\n\nconst AveragePriceTypeSelect = ({\n selectedValue,\n onSelect,\n selectedTimeFrame\n}) => {\n const priceTypes = GetEnumValues(enums.averagePriceType).map((x) => ({\n value: x,\n disabled: false,\n disabledText: undefined\n }));\n\n if (selectedTimeFrame === StatisticsTimeFrame.last2Years) {\n const totalPrice = priceTypes.find(\n (x) => x.value === enums.averagePriceType.priceTotal\n );\n\n totalPrice.disabled = true;\n totalPrice.disabledText = unavailableForTimeFrameText;\n }\n\n return (\n
\n Cena\n\n {priceTypes.map(({ value, disabled, disabledText }) => (\n onSelect(value)}\n isSelected={selectedValue === value}\n disabled={disabled}\n disabledTooltipText={disabledText}\n >\n {enums.getDisplayedAveragePriceType(value)}\n \n ))}\n
\n );\n};\n\nexport default AveragePriceTypeSelect;\n","import React from 'react';\nimport styled from 'styled-components';\nimport RSuiteIcon from 'rsuite/lib/Icon';\nimport { getDisplayedEnumArray } from '../../../helpers';\nimport { colors } from '../../../theme/colors';\nimport { getDisplayedRoomsNumber } from '../../../RoomsNumber';\nimport { getDisplayedMarket } from '../../../Market';\nimport { getDisplayedCity } from '../../../City';\nimport { getDisplayedOfferType, OfferType } from '../../../OfferType';\n\nconst StyledRsuiteIcon = styled(RSuiteIcon)`\n margin: 0px 15px;\n`;\n\nconst DescriptionContainer = styled.div`\n color: ${colors.slightlyDarkGray};\n display: flex;\n\n font-size: 12px;\n margin-top: 10px;\n margin-bottom: 20px;\n`;\n\nconst DescriptionPart = styled.div`\n width: fit-content;\n`;\n\nconst ChartDescription = ({\n chartName,\n city,\n districts,\n roomsNumbers,\n offerType,\n market\n}) => {\n const districtsText =\n districts !== null && districts !== undefined && districts.length > 0\n ? `: ${districts.join(', ')}`\n : '';\n\n const roomsText =\n roomsNumbers !== null &&\n roomsNumbers !== undefined &&\n roomsNumbers.length > 0\n ? `${getDisplayedEnumArray(\n roomsNumbers,\n getDisplayedRoomsNumber\n )} pokoje`\n : 'Wszystkie pokoje';\n const offerTypeText =\n offerType !== null && offerType !== undefined\n ? getDisplayedOfferType(offerType)\n : null;\n const marketText =\n offerType !== OfferType.Rental &&\n market !== null &&\n market !== undefined\n ? `Rynek ${getDisplayedMarket(market)}`\n : null;\n\n const detailsText = [roomsText, offerTypeText, marketText]\n .filter((x) => x !== null)\n .join(' - ');\n\n return (\n \n {chartName}\n\n \n\n \n {getDisplayedCity(city)}\n {districtsText}\n \n\n \n\n {detailsText}\n \n );\n};\n\nexport default ChartDescription;\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { AreaSeries, LineSeries } from 'react-vis';\nimport * as statisticsActions from '../../../../redux/actions/statisticsActions';\nimport { formatNumber, formatDate } from '../../../helpers';\nimport FlexDiv from '../../../utils/searchCriteria/FlexDiv';\nimport {\n ChartCard,\n SideButtonsContainer,\n CardHeader,\n HeaderButtonsContainer,\n ChartContainer\n} from '../components/ChartCardComponents';\nimport DivideBySelect from '../components/DivideBySelect';\nimport MarketSwitch from '../components/MarketSwitch';\nimport OfferTypeSwitch from '../components/OfferTypeSwitch';\nimport XyPlotWithLegend from '../components/XyPlotWithLegend';\nimport seriesColors from '../seriesColors';\nimport * as enums from '../../../enums';\nimport AveragePriceTimeFrameSelect from './AveragePriceTimeFrameSelect';\nimport AveragePriceTypeSelect from './AveragePriceTypeSelect';\nimport ChartDescription from '../components/ChartDescription';\nimport { StatisticsTimeFrame } from '../../../StatisticsTimeFrame';\n\nexport const AveragePriceChartName = 'averagePrice';\n\nconst getAreaSeriesOpacity = (index, chosenSeries) => {\n if (chosenSeries === null) {\n return 0.05;\n }\n if (chosenSeries === index) {\n return 0.2;\n }\n return 0.01;\n};\n\nconst getLineSeriesOpacity = (index, chosenSeries) => {\n if (chosenSeries === null || chosenSeries === index) {\n return 1;\n }\n\n return 0.4;\n};\n\nconst getChartNameForDescription = (priceType) => {\n if (priceType === enums.averagePriceType.pricePerMeter)\n return 'Średnia cena za metr kwadratowy';\n if (priceType === enums.averagePriceType.priceTotal)\n return 'Średnia cena całkowita';\n return '---BŁĄD---';\n};\n\nconst AveragePriceChart = ({\n dataSeries,\n fetchData,\n isLoading,\n offerType,\n setChartOfferType,\n market,\n setChartMarket,\n timeFrame,\n divideBy,\n setChartDivideBy,\n priceType,\n setChartState,\n districts,\n city,\n roomsNumbers\n}) => {\n const [chosenSeries, setChosenSeries] = useState(null);\n\n useEffect(() => {\n async function fetch() {\n fetchData();\n }\n fetch();\n }, []);\n\n const onOfferTypeSelected = (offerType) => {\n setChartOfferType(AveragePriceChartName, offerType);\n fetchData();\n };\n\n const onMarketSelected = (market) => {\n setChartMarket(AveragePriceChartName, market);\n fetchData();\n };\n\n const onDivideBySelected = (divideBy) => {\n setChartDivideBy(AveragePriceChartName, divideBy);\n fetchData();\n };\n\n const onTimeFrameSelected = (timeFrame) => {\n const newState = { timeFrame };\n if (timeFrame === StatisticsTimeFrame.last2Years) {\n newState.priceType = enums.averagePriceType.pricePerMeter;\n }\n setChartState(AveragePriceChartName, newState);\n fetchData();\n };\n\n const onPriceTypeSelected = (priceType) => {\n setChartState(AveragePriceChartName, { priceType });\n fetchData();\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n ({\n x,\n y: average\n }))}\n key={index}\n opacity={getAreaSeriesOpacity(\n index,\n chosenSeries\n )}\n color={seriesColors[index]}\n />\n )}\n seriesColors={seriesColors}\n currentDivideBy={divideBy}\n getDisplayedDivideBy={enums.getDisplayedDivideBy}\n isLoading={isLoading}\n onSeriesChosen={setChosenSeries}\n crosshairTitleFormat={(values) => ({\n title: 'Data',\n value: formatDate(values[0].x)\n })}\n getCrosshairValue={(value) =>\n formatNumber(value.average)\n }\n getNumericValuesFromData={(data) => [data.average]}\n xType=\"time\"\n xTickFormat={formatDate}\n >\n {dataSeries.map(({ data }, index) => (\n ({\n x,\n y: average\n }))}\n key={index}\n opacity={getLineSeriesOpacity(\n index,\n chosenSeries\n )}\n color={seriesColors[index]}\n />\n ))}\n \n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n dataSeries: state.statistics[AveragePriceChartName].dataSeries,\n isLoading: state.statistics[AveragePriceChartName].isLoading,\n offerType: state.statistics[AveragePriceChartName].offerType,\n market: state.statistics[AveragePriceChartName].market,\n timeFrame: state.statistics[AveragePriceChartName].timeFrame,\n divideBy: state.statistics[AveragePriceChartName].divideBy,\n priceType: state.statistics[AveragePriceChartName].priceType,\n districts: state.statistics.searchCriteria.districts,\n city: state.statistics.searchCriteria.city,\n roomsNumbers: state.statistics.searchCriteria.roomsNumbers\n };\n}\n\nconst mapDispatchToProps = {\n fetchData: statisticsActions.fetchAveragePrice,\n setChartOfferType: statisticsActions.setChartOfferType,\n setChartMarket: statisticsActions.setChartMarket,\n setChartDivideBy: statisticsActions.setChartDivideBy,\n setChartState: statisticsActions.setChartState\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AveragePriceChart);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { AreaSeries } from 'react-vis';\nimport * as statisticsActions from '../../../redux/actions/statisticsActions';\nimport { formatNumber, formatDate } from '../../helpers';\nimport FlexDiv from '../../utils/searchCriteria/FlexDiv';\nimport {\n ChartCard,\n SideButtonsContainer,\n ChartContainer\n} from './components/ChartCardComponents';\nimport DivideBySelect from './components/DivideBySelect';\nimport TimeFrameSelect from './components/TimeFrameSelect';\nimport XyPlotWithLegend from './components/XyPlotWithLegend';\nimport seriesColors from './seriesColors';\nimport * as enums from '../../../components/enums';\nimport ChartDescription from './components/ChartDescription';\nimport { StatisticsTimeFrame } from '../../StatisticsTimeFrame';\n\nexport const ReturnOfInvestmentChartName = 'returnOfInvestment';\n\nclass ReturnOfInvestmentChart extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { chosenSeries: null };\n\n this.setDivideBy = this.setDivideBy.bind(this);\n this.setTimeFrame = this.setTimeFrame.bind(this);\n this.setChosenSeries = this.setChosenSeries.bind(this);\n }\n\n componentDidMount() {\n this.props.fetchReturnOfInvestment();\n }\n\n setDivideBy(divideBy) {\n this.props.setChartDivideBy(ReturnOfInvestmentChartName, divideBy);\n this.props.fetchReturnOfInvestment();\n }\n\n setTimeFrame(timeFrame) {\n this.props.setChartTimeFrame(ReturnOfInvestmentChartName, timeFrame);\n this.props.fetchReturnOfInvestment();\n }\n\n setChosenSeries(chosenSeries) {\n this.setState({ chosenSeries });\n }\n\n getOpacity(seriesIndex) {\n const { chosenSeries } = this.state;\n\n if (chosenSeries === null) {\n return 0.5;\n }\n if (chosenSeries === seriesIndex) {\n return 0.8;\n }\n\n return 0.1;\n }\n\n availableTimeFrames = [\n { value: StatisticsTimeFrame.lastMonth },\n { value: StatisticsTimeFrame.last6Months }\n ];\n\n render() {\n const {\n timeFrame,\n dataSeries,\n isLoading,\n divideBy,\n districts,\n city,\n roomsNumbers\n } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n (\n ({\n x,\n y: maxRate,\n y0: minRate\n })\n )}\n opacity={this.getOpacity(index)}\n curve=\"curveMonotoneX\"\n color={seriesColors[index]}\n />\n )}\n seriesColors={seriesColors}\n currentDivideBy={divideBy}\n getDisplayedDivideBy={enums.getDisplayedDivideBy}\n isLoading={isLoading}\n onSeriesChosen={this.setChosenSeries}\n crosshairTitleFormat={(values) => ({\n title: 'Data',\n value: formatDate(values[0].x)\n })}\n getCrosshairValue={(value) =>\n `${formatNumber(\n value.minRate\n )} - ${formatNumber(value.maxRate)}`\n }\n getNumericValuesFromData={(data) => [\n data.minRate,\n data.maxRate\n ]}\n xType=\"time\"\n xTickFormat={formatDate}\n />\n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n searchCriteria: state.statistics.searchCriteria,\n dataSeries: state.statistics[ReturnOfInvestmentChartName].dataSeries,\n isLoading: state.statistics[ReturnOfInvestmentChartName].isLoading,\n offerType: state.statistics[ReturnOfInvestmentChartName].offerType,\n market: state.statistics[ReturnOfInvestmentChartName].market,\n timeFrame: state.statistics[ReturnOfInvestmentChartName].timeFrame,\n divideBy: state.statistics[ReturnOfInvestmentChartName].divideBy,\n districts: state.statistics.searchCriteria.districts,\n city: state.statistics.searchCriteria.city,\n roomsNumbers: state.statistics.searchCriteria.roomsNumbers\n };\n}\n\nconst mapDispatchToProps = {\n fetchReturnOfInvestment: statisticsActions.fetchReturnOfInvestment,\n setChartOfferType: statisticsActions.setChartOfferType,\n setChartMarket: statisticsActions.setChartMarket,\n setChartTimeFrame: statisticsActions.setChartTimeFrame,\n setChartDivideBy: statisticsActions.setChartDivideBy\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ReturnOfInvestmentChart);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { VerticalBarSeries } from 'react-vis';\nimport * as statisticsActions from '../../../../redux/actions/statisticsActions';\nimport FlexDiv from '../../../utils/searchCriteria/FlexDiv';\nimport {\n ChartCard,\n SideButtonsContainer,\n CardHeader,\n HeaderButtonsContainer,\n ChartContainer\n} from '../components/ChartCardComponents';\nimport DivideBySelect from '../components/DivideBySelect';\nimport MarketSwitch from '../components/MarketSwitch';\nimport OfferTypeSwitch from '../components/OfferTypeSwitch';\nimport XyPlotWithLegend from '../components/XyPlotWithLegend';\nimport seriesColors from '../seriesColors';\nimport * as enums from '../../../enums';\nimport ChartDescription from '../components/ChartDescription';\nimport { formatDateShort } from '../../../helpers';\n\nexport const CurrentMarketSaturationChartName = 'currentMarketSaturation';\n\nclass CurrentMarketSaturationChart extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { chosenSeries: null };\n\n this.setOfferType = this.setOfferType.bind(this);\n this.setMarket = this.setMarket.bind(this);\n this.setDivideBy = this.setDivideBy.bind(this);\n this.setChosenSeries = this.setChosenSeries.bind(this);\n }\n\n componentDidMount() {\n this.props.fetchCurrentMarketSaturation();\n }\n\n setOfferType(offerType) {\n this.props.setChartOfferType(\n CurrentMarketSaturationChartName,\n offerType\n );\n this.props.fetchCurrentMarketSaturation();\n }\n\n setMarket(market) {\n this.props.setChartMarket(CurrentMarketSaturationChartName, market);\n this.props.fetchCurrentMarketSaturation();\n }\n\n setDivideBy(divideBy) {\n this.props.setChartDivideBy(CurrentMarketSaturationChartName, divideBy);\n this.props.fetchCurrentMarketSaturation();\n }\n\n setChosenSeries(chosenSeries) {\n this.setState({ chosenSeries });\n }\n\n render() {\n const {\n dataSeries,\n isLoading,\n offerType,\n market,\n divideBy,\n districts,\n city,\n roomsNumbers\n } = this.props;\n const { chosenSeries } = this.state;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n )}\n seriesColors={seriesColors}\n currentDivideBy={divideBy}\n getDisplayedDivideBy={enums.getDisplayedDivideBy}\n isLoading={isLoading}\n onSeriesChosen={this.setChosenSeries}\n crosshairTitleFormat={(values) => ({\n title: 'Cena',\n value: values[0].value.label\n })}\n getCrosshairValue={(value) => `${value.y}%`}\n yTickFormat={(v) => `${v}%`}\n getNumericValuesFromData={(data) => [data.y, 0]}\n />\n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n searchCriteria: state.statistics.searchCriteria,\n dataSeries:\n state.statistics[CurrentMarketSaturationChartName].dataSeries,\n offerType: state.statistics[CurrentMarketSaturationChartName].offerType,\n market: state.statistics[CurrentMarketSaturationChartName].market,\n isLoading: state.statistics[CurrentMarketSaturationChartName].isLoading,\n divideBy: state.statistics[CurrentMarketSaturationChartName].divideBy,\n districts: state.statistics.searchCriteria.districts,\n city: state.statistics.searchCriteria.city,\n roomsNumbers: state.statistics.searchCriteria.roomsNumbers\n };\n}\n\nconst mapDispatchToProps = {\n fetchCurrentMarketSaturation:\n statisticsActions.fetchCurrentMarketSaturation,\n setChartOfferType: statisticsActions.setChartOfferType,\n setChartMarket: statisticsActions.setChartMarket,\n setChartDivideBy: statisticsActions.setChartDivideBy\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CurrentMarketSaturationChart);\n","import React from 'react';\nimport { SideButton, SideButtonsLabel } from '../components/SideButtons';\nimport * as enums from '../../../../components/enums';\nimport { GetEnumValues } from '../../../tsHelpers';\n\nexport const NbpPriceTypeSelect = ({ value, onSelect }) => {\n return (\n
\n Typ danych\n {GetEnumValues(enums.nbpPriceType).map((v) => (\n onSelect(v)}\n >\n {enums.getDisplayedNbpPriceType(v)}\n \n ))}\n
\n );\n};\n\nexport const NbpTimeFrameSelect = ({ value, onSelect }) => {\n return (\n
\n Okres\n {GetEnumValues(enums.nbpStatisticsTimeFrame).map((v) => (\n onSelect(v)}\n >\n {enums.getDisplayedNbpStatisticsTimeFrame(v)}\n \n ))}\n
\n );\n};\n\nexport const NbpDivideBySelect = ({ value, onSelect }) => {\n return (\n
\n Dane\n onSelect(null)}\n >\n Średnia\n \n onSelect(enums.nbpDivideBy.market)}\n >\n Porównaj rynki\n \n onSelect(enums.nbpDivideBy.priceType)}\n >\n Porównaj typ cen\n \n
\n );\n};\n","import React from 'react';\nimport { Message } from '../../../utils/Message';\nimport styled from 'styled-components';\n\nconst CenteredParagraph = styled.p`\n text-align: center;\n`;\n\nconst NbpWarningMessage = () => {\n return (\n \n \n To jest wykres średnich cen udostępnianych przez Narodowy Bank\n Polski\n \n \n Przedstawia dane dla całego miasta i nie bierze pod uwagę\n filtrów dla dzielnic lub liczby pokoi\n \n \n );\n};\n\nexport default NbpWarningMessage;\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { colors } from '../../../theme/colors';\nimport {\n ChartContainer,\n HeaderButtonsContainer,\n SideButtonsContainer\n} from '../components/ChartCardComponents';\nimport XyPlotWithLegend from '../components/XyPlotWithLegend';\nimport { formatDate, formatNumber } from '../../../helpers';\nimport * as statisticsActions from '../../../../redux/actions/statisticsActions';\nimport { LineSeries, AreaSeries } from 'react-vis';\nimport styled from 'styled-components';\nimport FlexDiv from '../../../utils/searchCriteria/FlexDiv';\nimport { Loader } from '../../../utils/loader';\nimport {\n NbpDivideBySelect,\n NbpPriceTypeSelect,\n NbpTimeFrameSelect\n} from './SidebarSelects';\nimport NbpWarningMessage from './NbpWarningMessage';\nimport MarketSwitch from '../components/MarketSwitch';\nimport {\n getDisplayedNbpDivideBy,\n getDisplayedNbpPriceType\n} from '../../../enums';\nimport ChartDescription from '../components/ChartDescription';\n\nconst StyledSideButtonsContainer = styled(SideButtonsContainer)`\n background-color: unset;\n`;\n\nexport const NbpAveragePriceChartName = 'nbpAveragePrice';\n\nconst seriesColors = [colors.gray, colors.slightlyDarkGray];\n\nconst getAreaSeriesOpacity = (index, chosenSeries) => {\n if (chosenSeries === null) {\n return 0.1;\n }\n if (chosenSeries === index) {\n return 0.5;\n }\n return 0.01;\n};\n\nconst getLineSeriesOpacity = (index, chosenSeries) => {\n if (chosenSeries === null || chosenSeries === index) {\n return 1;\n }\n\n return 0.2;\n};\n\nconst NbpAveragePriceChart = ({\n dataSeries,\n isLoading,\n market,\n timeFrame,\n priceType,\n divideBy,\n fetchData,\n setChartState,\n setChartTimeFrame,\n setChartMarket,\n setChartDivideBy,\n city\n}) => {\n useEffect(() => {\n async function fetch() {\n fetchData();\n }\n fetch();\n }, []);\n\n const onTimeFrameSelected = (timeFrame) => {\n setChartTimeFrame(NbpAveragePriceChartName, timeFrame);\n fetchData();\n };\n\n const onPriceTypeSelected = (priceType) => {\n setChartState(NbpAveragePriceChartName, { priceType });\n fetchData();\n };\n\n const onMarketSelected = (market) => {\n setChartMarket(NbpAveragePriceChartName, market);\n fetchData();\n };\n\n const onDivideBySelected = (divideBy) => {\n setChartDivideBy(NbpAveragePriceChartName, divideBy);\n fetchData();\n };\n\n const [chosenSeries, setChosenSeries] = useState(null);\n\n return (\n <>\n \n \n \n \n \n {isLoading && }\n \n \n \n \n \n \n \n (\n ({\n x,\n y: average\n }))}\n key={index}\n opacity={getAreaSeriesOpacity(\n index,\n chosenSeries\n )}\n color={seriesColors[index]}\n curve=\"curveMonotoneX\"\n />\n )}\n isLoading={isLoading}\n crosshairTitleFormat={(values) => ({\n title: 'Data',\n value: formatDate(values[0].x)\n })}\n getCrosshairValue={(value) =>\n formatNumber(value.average)\n }\n getNumericValuesFromData={(data) => [data.average]}\n xType=\"time\"\n xTickFormat={formatDate}\n onSeriesChosen={setChosenSeries}\n currentDivideBy={divideBy}\n getDisplayedDivideBy={getDisplayedNbpDivideBy}\n >\n {dataSeries.map(({ data }, index) => (\n ({\n x,\n y: average\n }))}\n key={index}\n opacity={getLineSeriesOpacity(\n index,\n chosenSeries\n )}\n curve=\"curveMonotoneX\"\n color={seriesColors[index]}\n />\n ))}\n \n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n dataSeries: state.statistics[NbpAveragePriceChartName].dataSeries,\n isLoading: state.statistics[NbpAveragePriceChartName].isLoading,\n market: state.statistics[NbpAveragePriceChartName].market,\n priceType: state.statistics[NbpAveragePriceChartName].priceType,\n divideBy: state.statistics[NbpAveragePriceChartName].divideBy,\n timeFrame: state.statistics[NbpAveragePriceChartName].timeFrame,\n city: state.statistics.searchCriteria.city\n };\n}\n\nconst mapDispatchToProps = {\n fetchData: statisticsActions.fetchNbpAveragePrice,\n setChartMarket: statisticsActions.setChartMarket,\n setChartTimeFrame: statisticsActions.setChartTimeFrame,\n setChartState: statisticsActions.setChartState,\n setChartDivideBy: statisticsActions.setChartDivideBy\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(NbpAveragePriceChart);\n","import * as actionTypes from '../actionTypes';\nimport apiCaller from '../../components/ApiCaller';\nimport * as enums from '../../components/enums';\nimport { AveragePriceChartName } from '../../components/statistics/charts/averagePrice/AveragePriceChart';\nimport { ReturnOfInvestmentChartName } from '../../components/statistics/charts/ReturnOfInvestmentChart';\nimport { CurrentMarketSaturationChartName } from '../../components/statistics/charts/marketSaturation/CurrentMarketSaturationChart';\nimport canDivideByDistricts from '../../components/canDivideByDistricts';\nimport { NbpAveragePriceChartName } from '../../components/statistics/charts/nbpAveragePrice/NbpAveragePriceChart';\nimport { MarketSaturationChartName } from '../../components/statistics/charts/marketSaturation/MarketSaturationChart';\nimport { formatAndRoundNumber } from '../../components/helpers';\nimport { OfferType } from '../../components/OfferType';\nimport { getDisplayedRoomsNumber } from '../../components/RoomsNumber';\nimport { getDisplayedMarket } from '../../components/Market';\n\nexport function fetchAveragePrice() {\n return async function (dispatch, getState) {\n const { priceType } = getState().statistics[AveragePriceChartName];\n\n const uri =\n priceType === enums.averagePriceType.priceTotal\n ? 'average-price'\n : 'average-price-per-meter';\n\n dispatch(\n fetchChartData(AveragePriceChartName, uri, transformTimeSeriesData)\n );\n };\n}\nexport function fetchReturnOfInvestment() {\n return async function (dispatch) {\n dispatch(\n fetchChartData(\n ReturnOfInvestmentChartName,\n 'return-of-investment',\n transformTimeSeriesData\n )\n );\n };\n}\nexport function fetchCurrentMarketSaturation() {\n return async function (dispatch) {\n dispatch(\n fetchChartData(\n CurrentMarketSaturationChartName,\n 'current-market-saturation',\n transformCurrentMarketSaturation\n )\n );\n };\n}\nexport function fetchMarketSaturation() {\n return async function (dispatch) {\n dispatch(\n fetchChartData(\n MarketSaturationChartName,\n 'market-saturation',\n transformTimeSeriesMarketSaturation\n )\n );\n };\n}\n\nconst transformTimeSeriesData = (chartInfo, divideBy) =>\n chartInfo.series.map(({ searchCriteria, data }) => ({\n label: getLabelForSeries(searchCriteria, divideBy),\n data: data\n .map(({ date, ...rest }) => ({\n x: date,\n ...rest\n }))\n .sort((a, b) => a.x - b.x)\n }));\n\nconst transformTimeSeriesMarketSaturation = (series) =>\n series.map(({ priceRange, values }) => ({\n label: getLabelFromPriceRange(priceRange),\n data: values.map(({ date, saturation }) => ({\n x: date,\n y: saturation\n }))\n }));\n\nconst transformCurrentMarketSaturation = (chartInfo, divideBy) =>\n chartInfo.series.map(({ searchCriteria, data }) => ({\n label: getLabelForSeries(searchCriteria, divideBy),\n data: data\n .map(({ priceRange, saturation }) => ({\n x: getAverageValueFromPriceRange(priceRange),\n y: saturation,\n label: getLabelFromPriceRange(priceRange)\n }))\n .sort((a, b) => a.x - b.x)\n }));\n\nconst getLabelFromPriceRange = (priceRange) => {\n if (!priceRange.from) {\n return `poniżej ${formatAndRoundNumber(priceRange.to)}`;\n }\n if (!priceRange.to) {\n return `powyżej ${formatAndRoundNumber(priceRange.from)}`;\n }\n return `ok. ${formatAndRoundNumber((priceRange.from + priceRange.to) / 2)}`;\n};\n\nconst getAverageValueFromPriceRange = (priceRange) => {\n if (!priceRange.from) {\n return priceRange.to;\n }\n if (!priceRange.to) {\n return priceRange.from;\n }\n return (priceRange.from + priceRange.to) / 2;\n};\n\nfunction fetchChartData(chartName, endpointUrl, transformToDataSeries) {\n return async function (dispatch, getState) {\n dispatch(setChartLoadingAction(chartName, true));\n\n const { offerType, market, timeFrame, divideBy } =\n getState().statistics[chartName];\n\n const searchCriteria = {\n ...getState().statistics.searchCriteria,\n offerType,\n market\n };\n\n if (shouldResetDivideBy(divideBy, searchCriteria)) {\n dispatch(setChartDivideBy(chartName, null));\n dispatch(\n fetchChartData(chartName, endpointUrl, transformToDataSeries)\n );\n return;\n }\n\n if (offerType === OfferType.Rental) {\n searchCriteria.market = null;\n }\n\n const chartInfo = await apiCaller.post(\n `api/statistics/${endpointUrl}`,\n {\n searchCriteria,\n timeFrame,\n divideBy\n }\n );\n\n const dataSeries = transformToDataSeries(chartInfo, divideBy);\n\n dispatch(setChartDataSeriesAction(chartName, dataSeries));\n\n dispatch(setChartLoadingAction(chartName, false));\n };\n}\n\nconst shouldResetDivideBy = (currentDivideBy, searchCriteria) => {\n if (\n currentDivideBy === enums.divideBy.district &&\n !canDivideByDistricts(searchCriteria.districts)\n ) {\n return true;\n }\n\n if (\n currentDivideBy === enums.divideBy.market &&\n searchCriteria.offerType === OfferType.Rental\n ) {\n return true;\n }\n\n return false;\n};\n\nexport function setChartState(chartName, state) {\n return {\n type: actionTypes.setChartState,\n payload: { chartName, state }\n };\n}\n\nexport function setChartOfferType(chartName, offerType) {\n return setChartState(chartName, { offerType });\n}\n\nexport function setChartMarket(chartName, market) {\n return setChartState(chartName, { market });\n}\n\nexport function setChartTimeFrame(chartName, timeFrame) {\n return setChartState(chartName, { timeFrame });\n}\n\nexport function setChartDivideBy(chartName, divideBy) {\n return setChartState(chartName, { divideBy });\n}\n\nexport function updateSearchCriteria(searchCriteria) {\n return {\n type: actionTypes.updateStatisticsSearchCriteria,\n payload: {\n searchCriteria\n }\n };\n}\n\nexport function resetStatisticsSearchCriteria() {\n return {\n type: actionTypes.resetStatisticsSearchCriteria\n };\n}\n\nconst getLabelForSeries = (searchCriteria, currentDivideBy) => {\n if (currentDivideBy === null || searchCriteria === null) {\n return '';\n } else if (currentDivideBy === enums.divideBy.roomsNumber) {\n return getDisplayedRoomsNumber(searchCriteria.roomsNumbers[0]);\n } else if (currentDivideBy === enums.divideBy.market) {\n return getDisplayedMarket(searchCriteria.market);\n } else if (currentDivideBy === enums.divideBy.district) {\n return searchCriteria.districts[0];\n }\n\n return '';\n};\n\nfunction setChartDataSeriesAction(chartName, dataSeries) {\n return setChartState(chartName, { dataSeries });\n}\n\nfunction setChartLoadingAction(chartName, isLoading) {\n return setChartState(chartName, { isLoading });\n}\n\nexport function fetchNbpAveragePrice() {\n return async function (dispatch, getState) {\n dispatch(setChartLoadingAction(NbpAveragePriceChartName, true));\n\n const { market, timeFrame, priceType, divideBy } =\n getState().statistics[NbpAveragePriceChartName];\n\n const city = getState().statistics.searchCriteria.city;\n\n const searchCriteria = {\n city,\n market,\n priceType\n };\n\n const chartInfo = await apiCaller.post(\n `api/nbp-statistics/nbp-average-price`,\n {\n searchCriteria,\n divideBy,\n timeFrame\n }\n );\n\n const dataSeries = chartInfo.series.map(({ data, searchCriteria }) => ({\n data: data\n .map(({ date, ...rest }) => ({\n x: date,\n ...rest\n }))\n .sort((a, b) => a.x - b.x),\n label: getLabelForNbpSeries(searchCriteria, divideBy)\n }));\n\n dispatch(\n setChartDataSeriesAction(NbpAveragePriceChartName, dataSeries)\n );\n\n dispatch(setChartLoadingAction(NbpAveragePriceChartName, false));\n };\n}\n\nconst getLabelForNbpSeries = (nbpSearchCriteria, currentNbpDivideBy) => {\n if (currentNbpDivideBy === null || nbpSearchCriteria === null) {\n return '';\n } else if (currentNbpDivideBy === enums.nbpDivideBy.market) {\n return getDisplayedMarket(nbpSearchCriteria.market);\n } else if (currentNbpDivideBy === enums.nbpDivideBy.priceType) {\n return enums.getDisplayedNbpPriceType(nbpSearchCriteria.priceType);\n }\n\n return '';\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { AreaSeries, LineSeries } from 'react-vis';\nimport * as statisticsActions from '../../../../redux/actions/statisticsActions';\nimport { formatNumber, formatDate } from '../../../helpers';\nimport FlexDiv from '../../../utils/searchCriteria/FlexDiv';\nimport {\n ChartCard,\n SideButtonsContainer,\n ChartContainer,\n HeaderButtonsContainer,\n CardHeader\n} from '../components/ChartCardComponents';\nimport TimeFrameSelect from '../components/TimeFrameSelect';\nimport XyPlotWithLegend from '../components/XyPlotWithLegend';\nimport seriesColors from '../seriesColors';\nimport OfferTypeSwitch from '../components/OfferTypeSwitch';\nimport MarketSwitch from '../components/MarketSwitch';\nimport ChartDescription from '../components/ChartDescription';\nimport { StatisticsTimeFrame } from '../../../StatisticsTimeFrame';\n\nexport const MarketSaturationChartName = 'marketSaturation';\n\nclass MarketSaturationChart extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { chosenSeries: null };\n\n this.setTimeFrame = this.setTimeFrame.bind(this);\n this.setOfferType = this.setOfferType.bind(this);\n this.setMarket = this.setMarket.bind(this);\n this.setChosenSeries = this.setChosenSeries.bind(this);\n }\n\n componentDidMount() {\n this.props.fetchMarketSaturation();\n }\n\n setTimeFrame(timeFrame) {\n this.props.setChartTimeFrame(MarketSaturationChartName, timeFrame);\n this.props.fetchMarketSaturation();\n }\n\n setOfferType(offerType) {\n this.props.setChartOfferType(MarketSaturationChartName, offerType);\n this.props.fetchMarketSaturation();\n }\n\n setMarket(market) {\n this.props.setChartMarket(MarketSaturationChartName, market);\n this.props.fetchMarketSaturation();\n }\n\n setChosenSeries(chosenSeries) {\n this.setState({ chosenSeries });\n }\n\n getAreaSeriesOpacity(seriesIndex) {\n const { chosenSeries } = this.state;\n\n if (chosenSeries === null) {\n return 0.05;\n }\n if (chosenSeries === seriesIndex) {\n return 0.2;\n }\n\n return 0.01;\n }\n\n getLineSeriesOpacity(seriesIndex) {\n const { chosenSeries } = this.state;\n\n if (chosenSeries === null || chosenSeries === seriesIndex) {\n return 1;\n }\n return 0.4;\n }\n\n availableTimeFrames = [\n { value: StatisticsTimeFrame.lastMonth },\n { value: StatisticsTimeFrame.last6Months }\n ];\n\n render() {\n const {\n timeFrame,\n offerType,\n market,\n dataSeries,\n isLoading,\n districts,\n city,\n roomsNumbers\n } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n )}\n seriesColors={seriesColors}\n isLoading={isLoading}\n crosshairTitleFormat={(values) => ({\n title: 'Data',\n value: formatDate(values[0].x)\n })}\n getCrosshairValue={(value) => `${value.y}%`}\n getNumericValuesFromData={(data) => [data.y]}\n getDisplayedDivideBy={() => 'Zakresy cenowe'}\n onSeriesChosen={this.setChosenSeries}\n yTickFormat={(v) => `${v}%`}\n xType=\"time\"\n xTickFormat={formatDate}\n >\n {dataSeries.map(({ data }, index) => (\n \n ))}\n \n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n searchCriteria: state.statistics.searchCriteria,\n dataSeries: state.statistics[MarketSaturationChartName].dataSeries,\n isLoading: state.statistics[MarketSaturationChartName].isLoading,\n offerType: state.statistics[MarketSaturationChartName].offerType,\n market: state.statistics[MarketSaturationChartName].market,\n timeFrame: state.statistics[MarketSaturationChartName].timeFrame,\n districts: state.statistics.searchCriteria.districts,\n city: state.statistics.searchCriteria.city,\n roomsNumbers: state.statistics.searchCriteria.roomsNumbers\n };\n}\n\nconst mapDispatchToProps = {\n fetchMarketSaturation: statisticsActions.fetchMarketSaturation,\n setChartOfferType: statisticsActions.setChartOfferType,\n setChartMarket: statisticsActions.setChartMarket,\n setChartTimeFrame: statisticsActions.setChartTimeFrame\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MarketSaturationChart);\n","import {\n getFromLocalStorage,\n saveInLocalStorage\n} from './localStorageFunctions';\nimport { GetEnumValues } from './tsHelpers';\nimport { OfferType } from './OfferType';\nimport { City } from './City';\nimport { clearFavoriteOffersSearchCriteriaSessionStorage } from './favoriteOffers/sessionStorageFunctions';\nimport { clearStatisticsSearchCriteriaSessionStorage } from './statistics/sessionStorageFunctions';\nimport { Dispatch } from 'redux';\nimport { resetStatisticsSearchCriteria } from '../redux/actions/statisticsActions';\nimport { PropertyType } from './PropertyType';\n\nexport interface SearchConfiguration {\n propertyType: PropertyType;\n city: City;\n offerType: OfferType;\n includeEmptyPrice: boolean;\n includeEmptyPricePerSquareMeter: boolean;\n includeEmptySize: boolean;\n includeEmptyDistrict: boolean;\n}\n\nconst localStoragePath = 'defaultSearchConfiguration';\nlet localStorageCache: SearchConfiguration | undefined = undefined;\n\nexport const saveDefaultSearchConfiguration = (\n configuration: SearchConfiguration,\n dispatch: Dispatch\n) => {\n if (\n configuration.propertyType === localStorageCache?.propertyType &&\n configuration.city === localStorageCache?.city &&\n configuration.offerType === localStorageCache?.offerType &&\n configuration.includeEmptyPrice ===\n localStorageCache?.includeEmptyPrice &&\n configuration.includeEmptyPricePerSquareMeter ===\n localStorageCache?.includeEmptyPricePerSquareMeter &&\n configuration.includeEmptySize ===\n localStorageCache?.includeEmptySize &&\n configuration.includeEmptyDistrict ===\n localStorageCache?.includeEmptyDistrict\n ) {\n return;\n }\n\n saveConfigurationInLocalStorageAndCache(configuration);\n\n clearFavoriteOffersSearchCriteriaSessionStorage();\n clearStatisticsSearchCriteriaSessionStorage();\n dispatch(resetStatisticsSearchCriteria());\n};\n\nexport const getDefaultSearchConfiguration = (): SearchConfiguration => {\n if (localStorageCache != null) return { ...localStorageCache };\n\n const configObj = getFromLocalStorage(localStoragePath) as any;\n\n // if new user opens PM or we added some new property here then configObj will have missing values\n // that's why we need to check every property and set default value\n\n const propertyType = GetEnumValues(PropertyType).includes(\n configObj?.propertyType\n )\n ? configObj?.propertyType\n : PropertyType.Apartment;\n const city = GetEnumValues(City).includes(configObj?.city)\n ? configObj?.city\n : City.Krakow;\n const offerType = GetEnumValues(OfferType).includes(configObj?.offerType)\n ? configObj?.offerType\n : OfferType.Sale;\n const includeEmptyPrice = getBooleanOrDefault(\n configObj?.includeEmptyPrice,\n true\n );\n const includeEmptyPricePerSquareMeter = getBooleanOrDefault(\n configObj?.includeEmptyPricePerSquareMeter,\n true\n );\n const includeEmptySize = getBooleanOrDefault(\n configObj?.includeEmptySize,\n true\n );\n const includeEmptyDistrict = getBooleanOrDefault(\n configObj?.includeEmptyDistrict,\n true\n );\n\n const configuration: SearchConfiguration = {\n propertyType,\n city,\n offerType,\n includeEmptyPrice,\n includeEmptyPricePerSquareMeter,\n includeEmptySize,\n includeEmptyDistrict\n };\n\n // saving to local storage to persist any new properties that weren't kept in local storage already\n saveConfigurationInLocalStorageAndCache(configuration);\n\n return configuration;\n};\n\nconst saveConfigurationInLocalStorageAndCache = (\n configuration: SearchConfiguration\n) => {\n saveInLocalStorage(configuration, localStoragePath);\n localStorageCache = { ...configuration };\n};\n\nconst getBooleanOrDefault = (\n value: unknown,\n defaultValue: boolean\n): boolean => {\n if (value === true || value === false) return value;\n return defaultValue;\n};\n","import { OfferFlag } from './../../components/OfferFlag';\nimport { OfferType } from './../../components/OfferType';\nimport {\n DisplayedAggregatedOffer,\n DisplayedSearchResult\n} from './../../components/search/DisplayedSearchResult';\nimport { LastOfferActivity } from './../../components/LastOfferActivity';\nimport { ReduxState } from './../configureStore';\nimport { Dispatch } from 'redux';\nimport * as actionTypes from '../actionTypes';\nimport apiCaller from '../../components/ApiCaller';\nimport { saveCurrentSearchCriteriaInSessionStorage } from '../../components/SessionStorageFunctions';\nimport { saveDefaultSearchConfiguration } from '../../components/DefaultSearchConfiguration';\nimport { City } from '../../components/City';\nimport { showGenericErrorAlert } from '../../components/helpers';\nimport { PropertyType } from '../../components/PropertyType';\n\nexport function fetchOffers() {\n return async function (dispatch: Dispatch, getState: () => ReduxState) {\n dispatch(loadingOffersStarted());\n dispatch(setIsInLineWithSearchResults(true));\n\n const state = getState();\n\n saveDefaultSearchConfiguration(\n {\n propertyType: state.currentSearchCriteria.propertyType,\n city: state.currentSearchCriteria.city,\n offerType: state.currentSearchCriteria.offerType,\n includeEmptyPrice:\n state.currentSearchCriteria.includeEmptyPrice,\n includeEmptyPricePerSquareMeter:\n state.currentSearchCriteria.includeEmptyPricePerSquareMeter,\n includeEmptySize: state.currentSearchCriteria.includeEmptySize,\n includeEmptyDistrict:\n state.currentSearchCriteria.includeEmptyDistrict\n },\n dispatch\n );\n\n var displayedSearchCriteria = getDisplayedSearchCriteria(state);\n const searchResult = await apiCaller.post(\n 'api/offers',\n displayedSearchCriteria\n );\n\n if (!isSearchResult(searchResult)) {\n showGenericErrorAlert();\n return;\n }\n\n dispatch(setSearchResult(searchResult));\n dispatch(setLastSearchedCriteria(state.currentSearchCriteria));\n dispatch(loadingOffersFinished());\n\n saveCurrentSearchCriteriaInSessionStorage(state.currentSearchCriteria);\n };\n}\n\nexport interface SearchFlaggedOffersDto {\n searchFrom: number;\n searchSize: number;\n propertyType: PropertyType;\n city: City;\n offerType: OfferType;\n offerFlag?: OfferFlag;\n}\n\nexport function fetchFlaggedOffers(dto: SearchFlaggedOffersDto) {\n return async function (dispatch: Dispatch) {\n dispatch(loadingOffersStarted());\n\n const searchResult = await apiCaller.post('api/offers/flagged', dto);\n\n if (!isSearchResult(searchResult)) {\n showGenericErrorAlert();\n return;\n }\n\n dispatch(setSearchResult(searchResult));\n dispatch(loadingOffersFinished());\n };\n}\n\nexport function updateOfferInSearchResult(offer: DisplayedAggregatedOffer) {\n return async function (dispatch: Dispatch, getState: () => ReduxState) {\n const offers = getState().searchResult.offers;\n const offerIndex = offers.findIndex((x) => x.id == offer.id);\n\n if (offerIndex < 0) return;\n\n const newOffers = [...offers];\n newOffers.splice(offerIndex, 1, offer);\n\n dispatch(setSearchResultOffers(newOffers));\n };\n}\n\nexport function updateCurrentSearchCriteria(currentSearchCriteria: any) {\n return {\n type: actionTypes.updateCurrentSearchCriteria,\n payload: {\n currentSearchCriteria: {\n isInLineWithSearchResults: false,\n isInLineWithCurrentFilter: false,\n ...currentSearchCriteria\n }\n }\n };\n}\n\nexport function setSearchPageNumber(newPage: number) {\n return {\n type: actionTypes.setSearchPageNumber,\n payload: {\n newPage\n }\n };\n}\n\nexport function setLastOfferActivity(lastOfferActivity: LastOfferActivity) {\n return {\n type: actionTypes.setLastOfferActivity,\n payload: {\n lastOfferActivity\n }\n };\n}\n\nfunction setIsInLineWithSearchResults(isInLineWithSearchResults: boolean) {\n return {\n type: actionTypes.updateCurrentSearchCriteria,\n payload: {\n currentSearchCriteria: {\n isInLineWithSearchResults\n }\n }\n };\n}\n\nfunction getDisplayedSearchCriteria(state: ReduxState) {\n return {\n ...state.currentSearchCriteria,\n searchFrom: (state.paging.currentPage - 1) * state.paging.pageSize,\n searchSize: state.paging.pageSize\n };\n}\n\nfunction setSearchResult(searchResults: DisplayedSearchResult) {\n return {\n type: actionTypes.setSearchResult,\n payload: {\n ...searchResults\n }\n };\n}\n\nfunction setSearchResultOffers(offers: DisplayedAggregatedOffer[]) {\n return {\n type: actionTypes.setSearchResultOffers,\n payload: {\n offers\n }\n };\n}\n\nfunction loadingOffersStarted() {\n return {\n type: actionTypes.loadingOffersStarted\n };\n}\n\nfunction loadingOffersFinished() {\n return {\n type: actionTypes.loadingOffersFinished\n };\n}\n\nfunction setLastSearchedCriteria(lastSearchedCriteria: any) {\n return {\n type: actionTypes.updateLastSearchedCriteria,\n payload: {\n lastSearchedCriteria\n }\n };\n}\n\nconst isSearchResult = (object: any): object is DisplayedSearchResult => {\n return (\n object != null &&\n object.totalHits !== undefined &&\n Array.isArray(object.offers)\n );\n};\n","import React from 'react';\nimport { HoverableIcon } from './hoverableIcon';\nimport styled from 'styled-components';\n\nconst StyledHoverableIcon = styled(HoverableIcon)`\n margin-left: 5px;\n`;\n\nexport interface ClearIconProps {\n onClick?: (event: React.MouseEvent) => void;\n className?: string;\n size?: string;\n}\n\nconst ClearIcon: React.FC = ({\n onClick,\n className,\n size = undefined\n}) => {\n return (\n \n );\n};\n\nexport default ClearIcon;\n","import React from 'react';\nimport RsuiteTag from 'rsuite/lib/Tag';\nimport ClearIcon from '../clearIcon';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\n\nconst StyledRsuiteTag = styled(RsuiteTag)`\n background-color: ${({ $tagColor }) => $tagColor};\n`;\nconst StyledComponentDiv = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n\n background: ${(props) =>\n props.isInputInvalid ? 'rgba(255, 0, 0, 0.022)' : 'white'};\n\n border: ${(props) =>\n props.isInputInvalid\n ? '1px solid rgba(180, 0, 0, 0.5)'\n : `1px solid ${colors.slightlyLightGray}`};\n\n transition: background 0.2s ease, border 0.2s ease;\n\n box-sizing: border-box;\n min-height: 40px;\n padding: 0px 7px 4px 0px;\n color: #8e8e93;\n border-radius: 20px;\n`;\n\nconst ClearIconWrapper = styled.div`\n margin-top: 4px;\n flex: 0;\n`;\n\nconst TagsInputDiv = styled.div`\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n`;\n\nconst StyledTextInput = styled.input`\n width: 20px;\n flex-grow: 1;\n padding: 0 0 0 9px;\n margin: 4px 0px 0px 7px;\n font-size: 14px;\n line-height: 1;\n background: transparent;\n color: #333;\n border: none;\n outline: 0;\n box-shadow: none;\n -webkit-appearance: none;\n`;\n\nconst TagsInputElement = styled.div`\n margin: 4px 0px 0px 7px;\n`;\n\n//based on https://github.com/pathofdev/react-tag-input\nexport default class TagPicker extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { input: '', isInputInvalid: false };\n this.className = props.className;\n this.onInputChange = this.onInputChange.bind(this);\n this.onInputSaved = this.onInputSaved.bind(this);\n this.onInputKeyDown = this.onInputKeyDown.bind(this);\n this.onClearAll = this.onClearAll.bind(this);\n }\n\n // Ref for input element\n inputRef = React.createRef();\n\n onInputChange(e) {\n let input = e.target.value;\n let isInputInvalid = this.isInputInvalid(input);\n\n this.setState({ input, isInputInvalid });\n }\n\n isInputInvalid(input) {\n return input.length > 30 || /[^\\wąćęłńóśźżĄĆĘŁŃÓŚŹŻ]/.test(input);\n }\n\n onInputSaved() {\n const { input } = this.state;\n\n if (input === '') {\n return;\n }\n\n if (this.isInputInvalid(input)) {\n this.setState({ isInputInvalid: true });\n return;\n }\n\n this.setState({ isInputInvalid: false });\n this.addTag(input);\n }\n\n onInputKeyDown(e) {\n const { input } = this.state;\n\n const keysToAcceptInput = [13, 32, 9]; //enter, tab, space\n if (keysToAcceptInput.indexOf(e.keyCode) > -1) {\n // Prevent form submission if tag input is nested in
\n e.preventDefault();\n\n this.onInputSaved();\n }\n // On backspace or delete\n else if (e.keyCode === 8 || e.keyCode === 46) {\n // If currently typing, do nothing\n if (input !== '') {\n return;\n }\n\n // If input is blank, remove previous tag\n this.removeTag(this.props.tags.length - 1);\n }\n }\n\n addTag(value) {\n const tags = [...this.props.tags];\n if (!tags.includes(value)) {\n tags.push(value);\n this.props.onChange(tags);\n }\n this.setState({ input: '' });\n }\n\n removeTag(i) {\n const tags = [...this.props.tags];\n tags.splice(i, 1);\n this.props.onChange(tags);\n }\n\n onClearAll() {\n this.props.onChange([]);\n }\n\n render() {\n const { input, isInputInvalid } = this.state;\n const { tags, label, maxTags, readOnly, tagColor } = this.props;\n\n const maxTagsReached =\n maxTags !== undefined ? tags.length >= maxTags : false;\n\n const showInput = !readOnly && !maxTagsReached;\n\n const clearIcon =\n tags.length > 0 ? (\n \n \n \n ) : (\n ''\n );\n\n const placeholder = tags.length > 0 ? '' : label;\n\n return (\n \n \n {tags.map((tag, i) => (\n \n {\n this.removeTag(i);\n }}\n >\n {tag}\n \n \n ))}\n {showInput && (\n \n )}\n \n {clearIcon}\n \n );\n }\n}\n","import styled from 'styled-components';\nimport { Col } from 'reactstrap';\n\nconst ColumnWithoutPadding = styled(Col)`\n padding: 0px;\n`;\n\nexport default ColumnWithoutPadding;\n","import styled from 'styled-components';\nimport { Row } from 'reactstrap';\n\nconst RowWithoutMargin = styled(Row)`\n margin-left: 0px;\n margin-right: 0px;\n`;\n\nexport default RowWithoutMargin;\n","import React from 'react';\nimport RsuiteDropdown from 'rsuite/lib/Dropdown';\nimport RsuitePopover from 'rsuite/lib/Popover';\nimport RsuiteWhisper from 'rsuite/lib/Whisper';\nimport { handleIncorrectNumber } from '../../helpers';\nimport styled from 'styled-components';\nimport { GetEnumValues } from '../../tsHelpers';\n\nconst StyledPopover = styled(RsuitePopover)`\n box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.15);\n max-height: 60%;\n overflow-y: auto;\n`;\n\nconst StyledDropdownItem = styled(RsuiteDropdown.Item)`\n min-width: 10em;\n\n .rs-dropdown-item-content:hover {\n background-color: ${({ $selectedItemBackgroundColor }) =>\n $selectedItemBackgroundColor} !important;\n }\n`;\n\nconst EnumSelectPopup = ({\n enumType,\n getDisplayedName,\n size,\n onEnter,\n onSelect,\n children,\n selectedItemBackgroundColor,\n whisperPlacement = 'bottomStart'\n}) => {\n const triggerRef = React.createRef();\n\n const handleSelect = (eventKey, event) => {\n onSelect(eventKey, event);\n triggerRef.current.hide();\n };\n\n const speaker = (\n \n handleSelect(eventKey, event)}\n size={size}\n >\n {GetEnumValues(enumType)\n .map((val) => (\n \n {getDisplayedName(val)}\n \n ))}\n \n \n );\n\n return (\n \n
{children}
\n \n );\n};\n\nexport default EnumSelectPopup;\n","import React from 'react';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport ClearIcon from '../clearIcon';\nimport StyledButtonV2 from '../styledButtonV2';\nimport styled from 'styled-components';\nimport FlexDiv from './FlexDiv';\n\nconst ChildrenWrapper = styled.div`\n flex: 1 1 0;\n overflow: hidden;\n`;\nconst ButtonsWrapper = styled.div`\n display: flex;\n flex: 0 0 0;\n align-items: center;\n`;\n\nexport interface SelectableButtonProps {\n canClear: boolean;\n onClear: () => void;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n className?: string;\n children?: React.ReactElement;\n dataTestId?: string;\n}\n\nconst SelectableButton: React.FC = ({\n canClear,\n onClear,\n textColor,\n backgroundColor,\n borderColor,\n children,\n className,\n dataTestId\n}: SelectableButtonProps) => {\n return (\n \n \n {children}\n \n {canClear && (\n {\n event.stopPropagation();\n onClear();\n }}\n />\n )}\n \n \n \n \n );\n};\n\nexport default SelectableButton;\n","import React from 'react';\nimport { colors } from '../../theme/colors';\nimport SelectableButton from './SelectableButton';\nimport styled from 'styled-components';\n\nconst StyledSelectableButton = styled(SelectableButton)`\n border-radius: 6px;\n width: 100%;\n height: 42px;\n padding: 10px 9px;\n font-size: 16px;\n`;\n\nconst MainSelectableButton = ({ label, primaryColor, dataTestId }) => {\n return (\n \n {label}\n \n );\n};\n\nexport default MainSelectableButton;\n","import React from 'react';\nimport EnumSelectPopup from './EnumSelectPopup';\nimport MainSelectableButton from './MainSelectableButton';\n\nconst MainEnumSelect = ({\n enumType,\n getDisplayedName,\n selectedValue,\n onSelect,\n primaryColor,\n secondaryColor,\n dataTestId = ''\n}) => {\n return (\n \n \n \n );\n};\n\nexport default MainEnumSelect;\n","import React from 'react';\nimport RsuiteDropdown from 'rsuite/lib/Dropdown';\nimport RsuiteDropdownMenuCheckItem from 'rsuite/lib/Picker/DropdownMenuCheckItem';\nimport RsuitePopover from 'rsuite/lib/Popover';\nimport RsuiteWhisper from 'rsuite/lib/Whisper';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\nimport { GetEnumValues } from '../../tsHelpers';\n\nconst StyledPopover = styled(RsuitePopover)`\n box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.15);\n`;\n\nconst StyledCheckItem = styled(RsuiteDropdownMenuCheckItem)`\n min-width: 10em;\n\n .rs-checkbox-wrapper::before {\n border-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n }\n\n .rs-checkbox-checked .rs-checkbox-wrapper .rs-checkbox-inner::before {\n border-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n background-color: ${({ $checkedCheckboxColor }) =>\n $checkedCheckboxColor} !important;\n }\n\n .rs-check-item:not(.rs-checkbox-disabled):hover,\n .rs-check-item-focus {\n background-color: ${({ $selectedItemBackgroundColor }) =>\n $selectedItemBackgroundColor} !important;\n }\n\n .rs-checkbox-inner::before {\n border-color: ${colors.gray} !important;\n }\n`;\n\nconst CheckboxSelectPopup = ({\n dataEnum,\n selectedValues,\n getDisplayedName,\n onChange,\n checkedCheckboxColor,\n selectedItemBackgroundColor,\n children\n}) => {\n const handleSelect = (value) => {\n if (selectedValues.indexOf(value) > -1) {\n const newSelectedValues = selectedValues.filter((x) => x !== value);\n onChange(newSelectedValues);\n } else {\n const newSelectedValues = [...selectedValues];\n newSelectedValues.push(value);\n onChange(newSelectedValues);\n }\n };\n\n const speaker = (\n \n \n {GetEnumValues(dataEnum).map((x) => (\n -1}\n key={x}\n value={x}\n onSelect={() => handleSelect(x)}\n $checkedCheckboxColor={checkedCheckboxColor}\n $selectedItemBackgroundColor={\n selectedItemBackgroundColor\n }\n >\n {getDisplayedName(x)}\n \n ))}\n \n \n );\n\n return (\n \n
{children}
\n \n );\n};\n\nexport default CheckboxSelectPopup;\n","import React from 'react';\nimport SelectableButton from './SelectableButton';\nimport styled from 'styled-components';\n\nconst StyledSelectableButton = styled(SelectableButton)`\n border-radius: 20px;\n width: fit-content;\n padding: 10px 16px;\n`;\n\nconst SmallSelectableButton = ({\n isSelected,\n canClear,\n onClear,\n primaryColor,\n secondaryColor,\n children,\n dataTestId = ''\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default SmallSelectableButton;\n","import React from 'react';\nimport { getDisplayedEnumArray } from '../../helpers';\nimport CheckboxSelectPopup from './CheckboxSelectPopup';\nimport SmallSelectableButton from './SmallSelectableButton';\n\nconst SmallCheckboxSelect = ({\n propertyName,\n enumType,\n getDisplayedName,\n selectedValues,\n onSelect,\n primaryColor,\n secondaryColor,\n dataTestId = ''\n}) => {\n const hasValue = selectedValues.length > 0;\n\n const displayedLabel = hasValue\n ? propertyName +\n ': ' +\n getDisplayedEnumArray(selectedValues, getDisplayedName)\n : propertyName;\n\n return (\n \n onSelect([])}\n primaryColor={primaryColor}\n secondaryColor={secondaryColor}\n dataTestId={dataTestId}\n >\n {displayedLabel}\n \n \n );\n};\n\nexport default SmallCheckboxSelect;\n","import React from 'react';\nimport EnumSelectPopup from './EnumSelectPopup';\nimport SmallSelectableButton from './SmallSelectableButton';\n\nconst SmallEnumSelect = ({\n propertyName,\n enumType,\n getDisplayedName,\n selectedValue,\n onSelect,\n primaryColor,\n secondaryColor,\n dataTestId = ''\n}) => {\n const hasValue = selectedValue !== null && selectedValue !== undefined;\n\n const displayedLabel = hasValue\n ? propertyName + ': ' + getDisplayedName(selectedValue)\n : propertyName;\n\n return (\n \n onSelect(null)}\n primaryColor={primaryColor}\n secondaryColor={secondaryColor}\n dataTestId={dataTestId}\n >\n {displayedLabel}\n \n \n );\n};\n\nexport default SmallEnumSelect;\n","import styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nexport const Divider = styled.div`\n border-bottom: 1px solid ${colors.slightlyLightGray};\n`;\n","import React from 'react';\nimport RsuiteToggle from 'rsuite/lib/Toggle';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\n\nconst Label = styled.span`\n margin-left: 10px;\n`;\n\nconst Wrapper = styled.div<{ color: string }>`\n .rs-btn-toggle-checked {\n background-color: ${({ color }) => color};\n }\n`;\n\nexport interface EmptyValueToggleProps {\n label: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n color?: string;\n}\n\nexport const EmptyValueToggle: React.FC = ({\n label,\n checked,\n onChange,\n color = colors.deepBlue\n}: EmptyValueToggleProps) => {\n return (\n \n \n \n \n );\n};\n","import React from 'react';\nimport RsuitePopover from 'rsuite/lib/Popover';\nimport RsuiteWhisper from 'rsuite/lib/Whisper';\nimport RsuiteInputNumber from 'rsuite/lib/InputNumber';\nimport styled from 'styled-components';\nimport { handleIncorrectNumber, isValidNumber } from '../../helpers';\nimport { Divider } from '../divider';\nimport { EmptyValueToggle } from './EmptyValueToggle';\n\nconst StyledInputNumber = styled(RsuiteInputNumber)`\n .rs-input {\n font-size: 16px;\n }\n\n .rs-input-number-btn-group-vertical {\n display: none;\n }\n`;\n\nconst EmptyValueToggleDivider = styled(Divider)`\n margin: 10px 0px;\n`;\n\nconst StyledPopover = styled(RsuitePopover)`\n .rs-popover-content {\n // rsuite popover adds custom fontsize & lineheight\n font-size: unset;\n line-height: unset;\n }\n`;\n\nexport default class RangeInputPopup extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n localFrom: null,\n localTo: null\n };\n\n this.clearValues = this.clearValues.bind(this);\n this.localFromChanged = this.localFromChanged.bind(this);\n this.localToChanged = this.localToChanged.bind(this);\n this.copyPropValuesToLocal = this.copyPropValuesToLocal.bind(this);\n }\n\n copyPropValuesToLocal() {\n const { fromValue, toValue } = this.props;\n\n this.setState({ localFrom: fromValue, localTo: toValue });\n }\n\n clearValues() {\n this.localFromChanged(null);\n this.localToChanged(null);\n\n this.props.fromValueChange(null);\n this.props.toValueChange(null);\n }\n\n localFromChanged(localFrom) {\n if (isValidNumber(localFrom)) {\n this.setState({ localFrom });\n } else {\n this.setState({ localFrom: null });\n }\n }\n\n localToChanged(localTo) {\n if (isValidNumber(localTo)) {\n this.setState({ localTo });\n } else {\n this.setState({ localTo: null });\n }\n }\n\n render() {\n const {\n fromValueChange,\n toValueChange,\n emptyValueToggleLabel,\n includeEmptyValue,\n includeEmptyValueChange,\n primaryColor,\n children\n } = this.props;\n const { localFrom, localTo } = this.state;\n\n const speaker = (\n \n
\n \n \n
\n {emptyValueToggleLabel != null && (\n <>\n \n \n \n )}\n \n );\n\n return (\n \n
{children}
\n \n );\n }\n}\n","import React from 'react';\nimport SmallSelectableButton from './SmallSelectableButton';\nimport RangeInputPopup from './RangeInputPopup';\nimport { getDisplayedRange } from '../../helpers';\n\nexport interface SmallRangeInputSelectProps {\n propertyName: string;\n fromValue: number | null;\n toValue: number | null;\n onFromValueChange: (newValue: number | null) => void;\n onToValueChange: (newValue: number | null) => void;\n primaryColor: string;\n secondaryColor: string;\n emptyValueToggleLabel: string;\n includeEmptyValue: boolean;\n defaultIncludeEmptyValue: boolean;\n onIncludeEmptyValueChange: (newValue: boolean) => void;\n dataTestId?: string;\n}\n\nconst SmallRangeInputSelect: React.FC = ({\n propertyName,\n fromValue,\n toValue,\n onFromValueChange,\n onToValueChange,\n primaryColor,\n secondaryColor,\n emptyValueToggleLabel,\n includeEmptyValue,\n onIncludeEmptyValueChange,\n defaultIncludeEmptyValue,\n dataTestId\n}) => {\n const hasValue = fromValue != null || toValue != null;\n\n const displayedLabel = hasValue\n ? propertyName + ': ' + getDisplayedRange(fromValue, toValue)\n : propertyName;\n\n const clearValues = () => {\n onFromValueChange(null);\n onToValueChange(null);\n onIncludeEmptyValueChange(defaultIncludeEmptyValue);\n };\n\n return (\n \n clearValues()}\n primaryColor={primaryColor}\n secondaryColor={secondaryColor}\n dataTestId={dataTestId}\n >\n {displayedLabel}\n \n \n );\n};\n\nexport default SmallRangeInputSelect;\n","import React from 'react';\nimport { Divider } from '../utils/divider';\nimport { EmptyValueToggle } from '../utils/searchCriteria/EmptyValueToggle';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.div`\n padding: 10px 15px;\n`;\n\nexport interface IncludeEmptyDistrictFooterProps {\n includeEmptyValue: boolean;\n onIncludeEmptyValueChange: (checked: boolean) => void;\n color?: string;\n}\n\nexport const IncludeEmptyDistrictFooter: React.FC<\n IncludeEmptyDistrictFooterProps\n> = ({ includeEmptyValue, onIncludeEmptyValueChange, color }) => {\n return (\n
\n \n \n \n \n
\n );\n};\n","import React from 'react';\nimport { City, getDisplayedCity } from '../City';\nimport { OfferType, getDisplayedOfferType } from '../OfferType';\nimport { Market, getDisplayedMarket } from '../Market';\nimport { OfferOrigin, getDisplayedOfferOrigin } from '../OfferOrigin';\nimport { MaxOffersAge, getDisplayedMaxOffersAge } from '../MaxOffersAge';\nimport apiCaller from '../ApiCaller';\nimport { connect } from 'react-redux';\nimport * as searchActions from '../../redux/actions/searchActions';\nimport AutocompletePicker from '../utils/searchCriteria/autocompletePicker';\nimport TagPicker from '../utils/searchCriteria/tagPicker';\nimport { getDefaultSearchCriteria, isValidNumber } from '../helpers';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Row, Col } from 'reactstrap';\nimport ColumnWithoutPadding from '../utils/ColumnWithoutPadding';\nimport RowWithoutMargin from '../utils/RowWithoutMargin';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport Margin, { SmallMargin } from '../utils/Margin';\nimport MainEnumSelect from '../utils/searchCriteria/MainEnumSelect';\nimport SmallCheckboxSelect from '../utils/searchCriteria/SmallCheckboxSelect';\nimport SmallEnumSelect from '../utils/searchCriteria/SmallEnumSelect';\nimport SmallRangeInputSelect from '../utils/searchCriteria/SmallRangeInputSelect';\nimport { getDisplayedRoomsNumber, RoomsNumber } from '../RoomsNumber';\nimport { IncludeEmptyDistrictFooter } from './IncludeEmptyDistrictFooter';\nimport { getDefaultSearchConfiguration } from '../DefaultSearchConfiguration';\nimport { getDisplayedPropertyType, PropertyType } from '../PropertyType';\nimport { getDisplayedPurpose, PremisesPurpose } from '../PremisesPurpose';\n\nconst SearchIcon = styled(RsuiteIcon)`\n margin-right: 10px;\n`;\n\nconst SearchButton = styled(StyledButtonV2)`\n font-size: 16px;\n height: 42px;\n`;\n\nconst ClearFiltersButton = styled(StyledButtonV2)`\n background-color: transparent;\n\n :hover {\n background-color: ${colors.lightGray};\n }\n`;\n\nclass SearchCriteriaForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n availableDistricts: [],\n isLoadingAvailableDistricts: true\n };\n\n this.onSearch = this.onSearch.bind(this);\n this.onClearAllClicked = this.onClearAllClicked.bind(this);\n this.onPropertyTypeChange = this.onPropertyTypeChange.bind(this);\n this.onPriceFromChange = this.onPriceFromChange.bind(this);\n this.onPriceToChange = this.onPriceToChange.bind(this);\n this.onIncludeEmptyPriceChange =\n this.onIncludeEmptyPriceChange.bind(this);\n this.onSizeFromChange = this.onSizeFromChange.bind(this);\n this.onSizeToChange = this.onSizeToChange.bind(this);\n this.onIncludeEmptySizeChange =\n this.onIncludeEmptySizeChange.bind(this);\n this.onCityChange = this.onCityChange.bind(this);\n this.onOfferTypeChange = this.onOfferTypeChange.bind(this);\n this.onMarketChange = this.onMarketChange.bind(this);\n this.onOfferOriginChange = this.onOfferOriginChange.bind(this);\n this.onIncludedWordsChanged = this.onIncludedWordsChanged.bind(this);\n this.onExcludedWordsChanged = this.onExcludedWordsChanged.bind(this);\n this.onDistrictsChange = this.onDistrictsChange.bind(this);\n this.onIncludeEmptyDistrictChange =\n this.onIncludeEmptyDistrictChange.bind(this);\n this.onMaxOffersAgeChange = this.onMaxOffersAgeChange.bind(this);\n this.onRoomsNumbersChange = this.onRoomsNumbersChange.bind(this);\n this.onPurposesChange = this.onPurposesChange.bind(this);\n this.updateValue = this.updateValue.bind(this);\n this.onPricePerSquareMeterFromChange =\n this.onPricePerSquareMeterFromChange.bind(this);\n this.onPricePerSquareMeterToChange =\n this.onPricePerSquareMeterToChange.bind(this);\n this.onIncludeEmptyPricePerSquareMeterChange =\n this.onIncludeEmptyPricePerSquareMeterChange.bind(this);\n }\n\n componentDidMount() {\n this.loadAvailableDistricts(this.props.currentSearchCriteria.city);\n }\n\n async loadAvailableDistricts(city) {\n this.setState({ isLoadingAvailableDistricts: true });\n\n const availableDistricts =\n (await apiCaller.get(`api/districts/${city}`)) || [];\n\n this.setState({\n availableDistricts,\n isLoadingAvailableDistricts: false\n });\n }\n\n onSearch(event) {\n event.preventDefault();\n\n this.props.setSearchPageNumber(1);\n this.props.fetchOffers();\n }\n\n onClearAllClicked() {\n const {\n updateCurrentSearchCriteria,\n fetchOffers,\n setSearchPageNumber\n } = this.props;\n\n updateCurrentSearchCriteria(\n getDefaultSearchCriteria(getDefaultSearchConfiguration())\n );\n\n setSearchPageNumber(1);\n fetchOffers();\n }\n\n onPropertyTypeChange(newValue) {\n this.updateNumericValue(newValue, 'propertyType');\n if (newValue === PropertyType.Apartment) this.onPurposesChange([]);\n }\n\n onCityChange(event) {\n this.onDistrictsChange([]);\n this.loadAvailableDistricts(event);\n this.updateNumericValue(event, 'city');\n }\n\n onPriceFromChange(event) {\n this.updateNumericValue(event, 'priceFrom');\n }\n\n onPriceToChange(event) {\n this.updateNumericValue(event, 'priceTo');\n }\n\n onIncludeEmptyPriceChange(newValue) {\n this.updateValue(newValue, 'includeEmptyPrice');\n }\n\n onSizeFromChange(event) {\n this.updateNumericValue(event, 'sizeFrom');\n }\n\n onSizeToChange(event) {\n this.updateNumericValue(event, 'sizeTo');\n }\n\n onIncludeEmptySizeChange(newValue) {\n this.updateValue(newValue, 'includeEmptySize');\n }\n\n onPricePerSquareMeterFromChange(pricePerSquareMeterFrom) {\n this.updateNumericValue(\n pricePerSquareMeterFrom,\n 'pricePerSquareMeterFrom'\n );\n }\n\n onPricePerSquareMeterToChange(pricePerSquareMeterTo) {\n this.updateNumericValue(pricePerSquareMeterTo, 'pricePerSquareMeterTo');\n }\n\n onIncludeEmptyPricePerSquareMeterChange(newValue) {\n this.updateValue(newValue, 'includeEmptyPricePerSquareMeter');\n }\n\n onOfferTypeChange(event) {\n this.updateNumericValue(event, 'offerType');\n }\n\n onMarketChange(event) {\n this.updateNumericValue(event, 'market');\n }\n\n onOfferOriginChange(event) {\n this.updateNumericValue(event, 'origin');\n }\n\n onIncludedWordsChanged(includedWords) {\n this.updateValue(includedWords, 'includedWords');\n }\n\n onExcludedWordsChanged(excludedWords) {\n this.updateValue(excludedWords, 'excludedWords');\n }\n\n onDistrictsChange(districts) {\n this.updateValue(districts, 'districts');\n }\n\n onIncludeEmptyDistrictChange(newValue) {\n this.updateValue(newValue, 'includeEmptyDistrict');\n }\n\n onMaxOffersAgeChange(maxOffersAge) {\n this.updateValue(maxOffersAge, 'maxOffersAge');\n }\n\n onRoomsNumbersChange(roomsNumbers) {\n this.updateValue(roomsNumbers, 'roomsNumbers');\n }\n\n onPurposesChange(purposes) {\n this.updateValue(purposes, 'purposes');\n }\n\n updateNumericValue(newValue, fieldName) {\n let parsedValue = null;\n if (isValidNumber(newValue)) {\n parsedValue = parseInt(newValue);\n }\n\n return this.updateValue(parsedValue, fieldName);\n }\n\n updateValue(newValue, fieldName) {\n const { updateCurrentSearchCriteria } = this.props;\n\n if (this.props.currentSearchCriteria[fieldName] == newValue) {\n //prevent updating searchCriteria without any change\n return false;\n }\n\n updateCurrentSearchCriteria({\n [fieldName]: newValue\n });\n return true;\n }\n\n render() {\n const { availableDistricts, isLoadingAvailableDistricts } = this.state;\n const { currentSearchCriteria } = this.props;\n const {\n propertyType,\n offerType,\n city,\n market,\n priceFrom,\n priceTo,\n includeEmptyPrice,\n pricePerSquareMeterFrom,\n pricePerSquareMeterTo,\n includeEmptyPricePerSquareMeter,\n sizeFrom,\n sizeTo,\n includeEmptySize,\n districts,\n includeEmptyDistrict,\n origin,\n roomsNumbers,\n purposes,\n maxOffersAge,\n includedWords,\n excludedWords,\n isInLineWithSearchResults\n } = currentSearchCriteria;\n\n const defaultSearchCriteria = getDefaultSearchCriteria({\n propertyType,\n city,\n offerType,\n includeEmptyPrice,\n includeEmptyPricePerSquareMeter,\n includeEmptySize\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 \n \n \n \n (\n \n )}\n />\n \n \n\n \n \n \n \n Wyszukaj\n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n {propertyType === PropertyType.Premises && (\n \n \n \n )}\n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n Wyczyść filtry\n \n \n \n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n currentSearchCriteria: state.currentSearchCriteria\n };\n}\n\nconst mapDispatchToProps = {\n updateCurrentSearchCriteria: searchActions.updateCurrentSearchCriteria,\n fetchOffers: searchActions.fetchOffers,\n setSearchPageNumber: searchActions.setSearchPageNumber\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SearchCriteriaForm);\n","export enum LastOfferActivity {\n lastWeek = 7,\n lastMonth = 31,\n noLimit = 0\n}\n\nexport const getDisplayedLastOfferActivity = (\n value?: LastOfferActivity\n): string => {\n if (value == null) {\n return '';\n }\n\n switch (value) {\n case LastOfferActivity.lastWeek:\n return 'Ostatni tydzień';\n case LastOfferActivity.lastMonth:\n return 'Ostatni miesiąc';\n case LastOfferActivity.noLimit:\n return 'Wszystkie oferty';\n }\n};\n","export enum OfferStatus {\n New,\n Updated,\n NoChange\n}\n","import React from 'react';\nimport { Dropdown } from 'rsuite';\nimport styled from 'styled-components';\nimport {\n LastOfferActivity,\n getDisplayedLastOfferActivity\n} from '../LastOfferActivity';\nimport { colors } from '../theme/colors';\nimport { GetEnumValues } from '../tsHelpers';\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n color: ${colors.almostDarkGray};\n`;\n\nconst StyledDropdown = styled(Dropdown)`\n color: ${colors.deepBlue};\n\n .rs-dropdown-item-active {\n .rs-dropdown-item-content {\n color: ${colors.deepBlue} !important;\n background-color: ${colors.lightBlue} !important;\n }\n }\n`;\n\nexport interface LastOfferActivityFilterProps {\n lastOfferActivity: LastOfferActivity;\n onLastOfferActivityChange: (newValue: LastOfferActivity) => void;\n}\n\nexport const LastOfferActivityFilter: React.FC<\n LastOfferActivityFilterProps\n> = ({ lastOfferActivity, onLastOfferActivityChange }) => {\n const possibleLastOfferActivityValues = GetEnumValues(LastOfferActivity);\n\n return (\n \n Aktywność:\n \n {possibleLastOfferActivityValues.map((x) => (\n \n {getDisplayedLastOfferActivity(x)}\n \n ))}\n \n \n );\n};\n","import React from 'react';\nimport { LastOfferActivity } from '../../LastOfferActivity';\nimport { LastOfferActivityFilter } from '../LastOfferActivityFilter';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst TotalHitsText = styled.div`\n margin-left: 8px;\n color: ${colors.almostDarkGray};\n`;\n\nconst LastOfferActivityFilterWrapper = styled.div`\n margin-left: auto;\n`;\n\nexport interface OffersListHeaderProps {\n totalHitsText: string;\n lastOfferActivity?: LastOfferActivity;\n onLastOfferActivityChange?: (newValue: LastOfferActivity) => void;\n isLoading: boolean;\n}\n\nexport const OffersListHeader: React.FC = ({\n totalHitsText,\n lastOfferActivity,\n onLastOfferActivityChange,\n isLoading\n}) => {\n return (\n \n \n {!isLoading && {totalHitsText}}\n \n {lastOfferActivity != null && onLastOfferActivityChange != null && (\n \n \n \n )}\n \n );\n};\n","import React from 'react';\nimport { Market } from '../../Market';\nimport { colors } from '../../theme/colors';\nimport { HoverableIcon } from '../../utils/hoverableIcon';\n\nexport interface MarketIconProps {\n market?: Market | null;\n}\nexport const MarketIcon: React.FC = ({ market }) => {\n if (market === Market.Primary) {\n return (\n \n );\n }\n\n if (market === Market.Aftermarket) {\n return (\n \n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { OfferOrigin } from '../../OfferOrigin';\nimport { colors } from '../../theme/colors';\nimport { HoverableIcon } from '../../utils/hoverableIcon';\n\nexport interface OfferOriginIconProps {\n origin?: OfferOrigin | null;\n}\nexport const OfferOriginIcon: React.FC = ({ origin }) => {\n if (origin === OfferOrigin.Private) {\n return (\n \n );\n }\n if (origin === OfferOrigin.Agency) {\n return (\n \n );\n }\n if (origin === OfferOrigin.Developer) {\n return (\n \n );\n }\n\n return ;\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\nimport { HoverableIcon } from '../../utils/hoverableIcon';\nimport StyledA from '../../utils/styledA';\nimport { Market } from '../../Market';\nimport { OfferOrigin } from '../../OfferOrigin';\nimport { OfferStatus } from '../../OfferStatus';\nimport { RoomsNumber } from '../../RoomsNumber';\nimport { MarketIcon } from './MarketIcon';\nimport { OfferOriginIcon } from './OfferOriginIcon';\nimport { PropertyType } from '../../PropertyType';\n\nconst rowContentHeight = '50px';\n\nconst StyledRow = styled.div`\n display: flex;\n padding: 12px;\n`;\n\nconst StyledColumn = styled.div<{\n width: string;\n textAlign?: string;\n rowContentHeight?: string;\n}>`\n padding: 0px 5px;\n width: ${(props) => props.width};\n\n text-align: ${(props) => props.textAlign || 'center'};\n line-height: ${rowContentHeight};\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\nconst IconColumn = styled(StyledColumn)`\n padding: 0px;\n`;\n\nconst DoubleIconColumn = styled(StyledColumn)`\n display: grid;\n grid-template-columns: 1fr;\n justify-items: center;\n`;\n\nconst Thumbnail = styled.img`\n object-fit: cover;\n width: 100%;\n height: ${rowContentHeight};\n border-radius: 6px;\n`;\n\nconst DistrictText = styled.div`\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n`;\n\nconst DetailedLocalization = styled.div`\n position: absolute;\n top: 1.4em;\n font-size: 0.9em;\n width: 100%;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${colors.slightlyDarkGray};\n`;\n\nexport interface TableRowProps {\n price?: number | string | null;\n pricePerSquareMeter?: number | React.ReactNode;\n size?: number | React.ReactNode | null;\n roomsNumber?: string | RoomsNumber | null;\n district?: string | null;\n lastModificationDate?: string | null;\n purpose?: string | React.ReactNode | null;\n market?: Market | null;\n origin?: OfferOrigin | null;\n propertyType?: PropertyType | null;\n name?: string | null;\n status?: OfferStatus | null;\n favoriteIcons?: JSX.Element;\n hasDuplicates?: boolean;\n url?: string;\n imageUrl?: string | null;\n detailedLocalization?: string | null;\n className?: string;\n}\n\nexport const TableRow: React.FC = ({\n price,\n pricePerSquareMeter,\n size,\n roomsNumber,\n purpose,\n district,\n lastModificationDate,\n market,\n propertyType,\n origin,\n name,\n status,\n favoriteIcons,\n hasDuplicates,\n url,\n imageUrl,\n detailedLocalization,\n className\n}: TableRowProps) => {\n let statusIcon: React.ReactNode = '';\n if (status === OfferStatus.New) {\n statusIcon = (\n \n );\n } else if (status === OfferStatus.Updated) {\n statusIcon = (\n \n );\n } else if (status === OfferStatus.NoChange) {\n statusIcon = (\n \n );\n }\n\n const duplicatesIcon = hasDuplicates && (\n
\n \n
\n );\n\n const openUrlIcon = url && (\n \n e.stopPropagation()}\n />\n \n );\n\n const image = imageUrl && ;\n\n return (\n \n {image}\n \n
{statusIcon}
\n {duplicatesIcon}\n
\n {price}\n {pricePerSquareMeter}\n {size}\n {propertyType === PropertyType.Apartment && (\n {roomsNumber}\n )}\n {propertyType === PropertyType.Premises && (\n {purpose}\n )}\n \n \n {district}\n \n {detailedLocalization}\n \n \n \n {lastModificationDate}\n \n \n \n \n \n \n \n {name}\n \n {openUrlIcon}\n {favoriteIcons}\n
\n );\n};\n","import { PropertyType } from './../../components/PropertyType';\nimport { ReduxState } from './../configureStore';\nimport { Dispatch } from 'redux';\nimport { OfferFlag } from './../../components/OfferFlag';\nimport { OfferType } from './../../components/OfferType';\nimport { City } from './../../components/City';\nimport apiCaller from '../../components/ApiCaller';\nimport { showAlert, showGenericErrorAlert } from '../../components/helpers';\nimport { updateOfferInSearchResult } from './searchActions';\nimport produce from 'immer';\n\nexport function addOfferFlag(\n offerId: string,\n propertyType: PropertyType,\n city: City,\n offerType: OfferType,\n offerFlag: OfferFlag,\n currentUserEmail: string\n) {\n return async function (dispatch: Dispatch, getState: () => ReduxState) {\n const requestUrl = 'api/flags';\n\n const result = await apiCaller.post(requestUrl, {\n offerId,\n propertyType,\n city,\n offerType,\n offerFlag\n });\n\n if (result.status === 'success') {\n const offerInSearchResultsToAddFlagTo =\n getState().searchResult.offers.filter((x) =>\n x.subOffers.some((subOffer) => subOffer.offerId === offerId)\n )[0];\n\n if (offerInSearchResultsToAddFlagTo != null) {\n const newOffer = produce(\n offerInSearchResultsToAddFlagTo,\n (offerDraft) => {\n offerDraft.offerFlags.push({\n offerId,\n offerFlag,\n email: currentUserEmail\n });\n }\n );\n\n updateOfferInSearchResult(newOffer)(dispatch, getState);\n }\n } else if (result.status === 'limitExceeded') {\n showAlert(\n 'Przykro nam, przekroczono maksymalny limit zapisanych ofert :(',\n 'error'\n );\n } else {\n showGenericErrorAlert();\n }\n };\n}\n\nexport function removeOfferFlag(\n allSubOfferOfferIds: string[],\n offerFlag: OfferFlag\n) {\n return async function (dispatch: Dispatch, getState: () => ReduxState) {\n const requestUrl = 'api/flags';\n\n const response = await apiCaller.request(requestUrl, 'Delete', {\n offerIds: allSubOfferOfferIds,\n offerFlag\n });\n\n if (response.ok) {\n const offerInSearchCriteriaToRemoveFlagFrom =\n getState().searchResult.offers.filter((x) =>\n x.subOffers.some((subOffer) =>\n allSubOfferOfferIds.includes(subOffer.offerId)\n )\n )[0];\n\n if (offerInSearchCriteriaToRemoveFlagFrom != null) {\n const newOffer = produce(\n offerInSearchCriteriaToRemoveFlagFrom,\n (offerDraft) => {\n offerDraft.offerFlags = offerDraft.offerFlags.filter(\n (x) => x.offerFlag !== offerFlag\n );\n }\n );\n\n updateOfferInSearchResult(newOffer)(dispatch, getState);\n }\n } else {\n showGenericErrorAlert();\n }\n };\n}\n","import styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nexport const ShowMoreBar = styled.button`\n backgroud-color: ${colors.lightGray};\n width: 100%;\n text-align: center;\n margin-top: 10px;\n padding: 4px 0px;\n font-weight: 600;\n color: ${colors.darkGray};\n`;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { formatDateShort, formatNumber } from '../../helpers';\nimport { HoverableIcon } from '../../utils/hoverableIcon';\nimport StyledA from '../../utils/styledA';\nimport { colors } from '../../theme/colors';\nimport { ShowMoreBar } from '../ShowMoreBar';\nimport { DisplayedSubOffer } from '../DisplayedSearchResult';\nimport { MarketIcon } from './MarketIcon';\nimport { OfferOriginIcon } from './OfferOriginIcon';\n\nconst Grid = styled.div`\n display: grid;\n grid-template-columns: 100px 100px 13px 13px 1fr 100px;\n gap: 15px;\n`;\n\nconst GridElement = styled.div<{ textAlign?: string }>`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: ${({ textAlign }) => textAlign ?? 'left'};\n`;\n\nconst GridTitleElement = styled(GridElement)`\n font-weight: 600;\n`;\n\nexport interface DuplciatesGridProps {\n duplicates: DisplayedSubOffer[];\n}\nexport const DuplicatesGrid: React.FC = ({\n duplicates\n}) => {\n const [filtered, setFiltered] = useState(duplicates.slice(0, 3));\n\n const hiddenDuplicates = duplicates.length - filtered.length;\n\n return (\n <>\n \n Cena\n \n Aktywność\n \n \n \n Tytuł\n \n {filtered.map((duplicate, i) => (\n \n \n {formatNumber(duplicate.price)}\n \n \n {formatDateShort(duplicate.lastModificationDate)}\n \n \n \n \n \n \n \n {duplicate.name}\n \n \n \n Otwórz\n \n \n \n \n ))}\n \n {hiddenDuplicates > 0 && (\n \n setFiltered(duplicates.slice(0, filtered.length + 5))\n }\n >\n Pokaż {hiddenDuplicates} więcej\n \n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { ShowMoreBar } from '../ShowMoreBar';\nimport { colors } from '../../theme/colors';\n\nconst Wrapper = styled.div<{ expanded: boolean }>`\n position: relative;\n max-height: ${({ expanded }) => (expanded ? undefined : '150px')};\n overflow: hidden;\n`;\n\nconst StyledMoreBar = styled(ShowMoreBar)`\n position: relative;\n :before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: -10px;\n right: -10px;\n box-shadow: ${colors.lighterGray} 0 -20px 10px;\n }\n`;\n\nexport interface OfferDescriptionProps {\n description: string | null;\n}\n\nexport const OfferDescription: React.FC = ({\n description\n}: OfferDescriptionProps) => {\n const [expanded, setExpanded] = useState(\n description == null || description.length < 500\n );\n\n return (\n <>\n {description}\n {!expanded && (\n setExpanded(true)}>\n Pokaż cały opis\n \n )}\n \n );\n};\n","export const formatPhoneNumber = (phoneNumber: string): string => {\n const e164Regex = new RegExp('^\\\\+?[1-9]\\\\d{1,14}$');\n if (!e164Regex.test(phoneNumber)) return phoneNumber;\n\n var withoutCountrycode = phoneNumber.replace('+48', '');\n if (withoutCountrycode.length !== 9) return phoneNumber;\n\n var areaCodes = ['12', '22', '17', '61', '71', '42']; // only currently supported cities\n if (areaCodes.some((x) => withoutCountrycode.startsWith(x))) {\n const first = withoutCountrycode.substring(0, 2);\n const middle1 = withoutCountrycode.substring(2, 5);\n const middle2 = withoutCountrycode.substring(5, 7);\n const last = withoutCountrycode.substring(7);\n return `${first} ${middle1} ${middle2} ${last}`;\n }\n\n const first = withoutCountrycode.substring(0, 3);\n const middle = withoutCountrycode.substring(3, 6);\n const last = withoutCountrycode.substring(6);\n\n return `${first} ${middle} ${last}`;\n};\n","import React, { useState } from 'react';\nimport { colors } from '../../theme/colors';\nimport { formatPhoneNumber } from '../../formatPhoneNumber';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport styled from 'styled-components';\n\nconst PhoneIcon = styled(RsuiteIcon)`\n color: ${({ color }) => color};\n margin-right: 10px;\n`;\n\nconst PhoneNumberText = styled.span`\n font-weight: bold;\n min-width: fit-content;\n`;\n\nconst ShowMoreButton = styled.button`\n background: transparent;\n color: ${colors.darkGray};\n font-weight: bold;\n text-align: right;\n`;\n\nconst Wrapper = styled.div`\n text-align: right;\n white-space: nowrap;\n`;\n\nconst GoToOfferLink = styled.a<{ color: string }>`\n font-weight: bold;\n color: ${({ color }) => color};\n text-decoration: none;\n :hover {\n color: ${({ color }) => color};\n text-decoration: none;\n }\n`;\n\nexport interface PhoneNumbersSegmentProps {\n phoneNumbers: string[] | null;\n offerUrl: string;\n}\n\nexport const PhoneNumbersSegment: React.FC = ({\n phoneNumbers,\n offerUrl\n}) => {\n const numbersShownByDefault = 3;\n const [shownPhoneNumbers, setShownPhoneNumbers] = useState(\n phoneNumbers?.slice(0, numbersShownByDefault) || []\n );\n\n const getPhoneNumbersList = (phoneNumbers: string[]) => (\n <>\n Kontakt:{' '}\n {shownPhoneNumbers.map((x) => (\n \n {formatPhoneNumber(x)}\n
\n
\n ))}\n {shownPhoneNumbers.length < phoneNumbers.length && (\n setShownPhoneNumbers(phoneNumbers)}\n >\n Pokaż {phoneNumbers.length - shownPhoneNumbers.length}{' '}\n więcej\n \n )}\n \n );\n\n const goToPortalButton = (\n \n Kontakt w ofercie\n \n );\n\n return (\n \n \n {phoneNumbers == null || phoneNumbers.length == 0\n ? goToPortalButton\n : getPhoneNumbersList(phoneNumbers)}\n \n );\n};\n","export interface Floor {\n number: number;\n orHigher: boolean;\n}\n\nexport const getDisplayedFloor = (floor: Floor): string => {\n if (floor.number === 0) return 'Parter';\n return `${floor.number}${floor.orHigher ? '+' : ''}`;\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport StyledButtonV2 from '../../utils/styledButtonV2';\nimport StyledA from '../../utils/styledA';\nimport { colors } from '../../theme/colors';\nimport SectionInterspace from '../../utils/SectionInterspace';\nimport { DuplicatesGrid } from './DuplicatesGrid';\nimport { OfferDescription } from './OfferDescription';\nimport { formatDate } from '../../helpers';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport { DisplayedSubOffer } from '../DisplayedSearchResult';\nimport { PhoneNumbersSegment } from './PhoneNumbersSegment';\nimport { getDisplayedPurpose, PremisesPurpose } from '../../PremisesPurpose';\nimport { getDisplayedRoomsNumber, RoomsNumber } from '../../RoomsNumber';\nimport { Floor, getDisplayedFloor } from '../../Floor';\nimport { PropertyType } from '../../PropertyType';\n\nconst Wrapper = styled.div`\n padding: 10px 30px;\n`;\n\nconst SectionTitle = styled.div`\n font-weight: bold;\n margin-left: 15px;\n margin-bottom: 5px;\n`;\n\nconst Section = styled.div`\n background-color: ${({ theme }) => theme.colors.lighterGray};\n border-radius: 15px;\n padding: 15px 30px;\n white-space: pre-wrap;\n`;\n\nconst ButtonsContainer = styled.div`\n display: flex;\n margin-top: 10px;\n\n & > * {\n margin-right: 15px;\n }\n`;\n\nconst StyledButton = styled(StyledButtonV2)`\n width: fit-content;\n padding: 0px 30px;\n`;\n\nconst DetailsSection = styled(Section)`\n display: flex;\n`;\n\nconst DetailsIcon = styled(RsuiteIcon)`\n color: ${({ color }) => color};\n margin-right: 10px;\n`;\n\nconst ParametersTable = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n gap: 7px;\n padding-right: 30px;\n margin-right: auto;\n`;\n\nconst ParameterValue = styled.div`\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport interface OfferDetailsProps {\n url: string;\n onHideClick: () => void;\n duplicates: DisplayedSubOffer[];\n description: string | null;\n earliestCreationDate: Date;\n detailedLocalization: string | null;\n knownPhoneNumbers: string[];\n knownPurposes: PremisesPurpose[];\n yearOfConstruction: number | null;\n floor: Floor | null;\n roomsNumber?: RoomsNumber | null;\n district?: string | null;\n propertyType: PropertyType;\n}\n\nexport const OfferDetails: React.FC = ({\n url,\n description,\n duplicates,\n onHideClick,\n roomsNumber,\n district,\n earliestCreationDate,\n detailedLocalization,\n knownPhoneNumbers,\n knownPurposes,\n yearOfConstruction,\n floor,\n propertyType\n}) => {\n const fullLocalizationText = [district, detailedLocalization]\n .filter((x) => x != null && x != '')\n .join(', ');\n\n const purposesText = knownPurposes\n .map((x) => getDisplayedPurpose(x))\n .join(', ');\n\n const genericParameterIcon = (\n \n );\n\n return (\n \n Szczegóły\n \n \n {fullLocalizationText && (\n \n \n Lokalizacja: {fullLocalizationText}\n \n )}\n {purposesText && (\n \n {genericParameterIcon}\n Przeznaczenie: {purposesText}\n \n )}\n {roomsNumber && propertyType === PropertyType.Premises && (\n \n {genericParameterIcon}\n Pokoje:{' '}\n {getDisplayedRoomsNumber(roomsNumber)}\n \n )}\n {floor && (\n \n {genericParameterIcon}\n Piętro: {getDisplayedFloor(floor)}\n \n )}\n {yearOfConstruction && (\n \n {genericParameterIcon}\n Rok budowy: {yearOfConstruction}\n \n )}\n \n {genericParameterIcon}\n Data dodania oferty:{' '}\n {formatDate(earliestCreationDate)}\n \n \n \n \n \n\n {duplicates && duplicates.length > 0 && (\n <>\n Duplikaty\n
\n \n
\n \n \n )}\n Opis oferty\n
\n \n
\n \n\n \n \n \n Pokaż ofertę\n \n \n onHideClick()}\n backgroundColor={colors.lightGray}\n >\n Zwiń\n \n \n
\n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { OfferFlag } from '../../OfferFlag';\nimport { colors } from '../../theme/colors';\nimport { HoverableIcon } from '../../utils/hoverableIcon';\n\nconst OfferFlagDiv = styled.div`\n padding-top: 3px;\n`;\n\nexport interface FlagWithAuthor {\n offerFlag: OfferFlag;\n flaggedBy: string;\n}\n\nexport interface OfferFlagIconsProps {\n offerFlags: FlagWithAuthor[];\n onFlagIconClicked: (\n flag: OfferFlag,\n e: React.MouseEvent\n ) => void;\n currentUserEmail?: string;\n}\n\nexport const OfferFlagIcons = ({\n offerFlags,\n onFlagIconClicked,\n currentUserEmail\n}: OfferFlagIconsProps) => {\n let yellowFlag = offerFlags.find((x) => x.offerFlag === OfferFlag.Yellow);\n let redFlag = offerFlags.find((x) => x.offerFlag === OfferFlag.Red);\n let blueFlag = offerFlags.find((x) => x.offerFlag === OfferFlag.Blue);\n\n const getFlaggedByText = (flaggedBy?: string): string | undefined => {\n if (!flaggedBy) {\n return undefined;\n }\n\n return flaggedBy === currentUserEmail\n ? `Oznaczone przeze mnie`\n : `Oznaczone przez ${flaggedBy}`;\n };\n\n return (\n
\n \n onFlagIconClicked(OfferFlag.Blue, e)}\n icon=\"eye\"\n color={\n blueFlag != null\n ? colors.deepBlue\n : colors.slightlyDarkGray\n }\n colorOnHover={colors.deepBlue}\n rsuiteIcon={true}\n hoverText={getFlaggedByText(blueFlag?.flaggedBy)}\n />\n \n \n onFlagIconClicked(OfferFlag.Yellow, e)}\n icon={yellowFlag != null ? 'star' : 'star-o'}\n color={\n yellowFlag != null\n ? colors.gold\n : colors.slightlyDarkGray\n }\n colorOnHover={colors.gold}\n rsuiteIcon={true}\n hoverText={getFlaggedByText(yellowFlag?.flaggedBy)}\n />\n \n \n onFlagIconClicked(OfferFlag.Red, e)}\n icon=\"ban\"\n color={\n redFlag != null\n ? colors.brightRed\n : colors.slightlyDarkGray\n }\n colorOnHover={colors.brightRed}\n rsuiteIcon={true}\n hoverText={getFlaggedByText(redFlag?.flaggedBy)}\n />\n \n
\n );\n};\n","import { SearchCriteriaDto } from '../../SearchCriteriaDto';\nimport {\n DisplayedAggregatedOffer,\n DisplayedSubOffer\n} from '../DisplayedSearchResult';\nimport { Market } from '../../Market';\nimport { OfferOrigin } from '../../OfferOrigin';\nimport { RoomsNumber } from '../../RoomsNumber';\n\nexport interface OfferInfoToDisplay {\n offerId: string;\n url: string;\n imageUrl: string | null;\n name: string | null;\n price: number | null;\n size: number | null;\n pricePerSquareMeter: number | null;\n district: string | null;\n roomsNumber: RoomsNumber | null;\n market: Market | null;\n origin: OfferOrigin | null;\n lastModificationDate: Date | null;\n}\n\nexport const getOfferInfoToDisplay = (\n offer: DisplayedAggregatedOffer,\n lastSearchedCriteria: SearchCriteriaDto,\n favoritedSubOffer?: DisplayedSubOffer\n): OfferInfoToDisplay => {\n const subOfferToShowOnTop = getSubOfferBestAlignedWithSearchCriteria(\n offer,\n lastSearchedCriteria\n );\n\n // if user flagged some subOffer then we should show its name and imageUrl so that it's always recognizable\n //\n // offerId should be taken from favoritedSubOffer as well:\n // if user adds another flag then it should be added to the same offerId\n // so that imageUrl and name don't change afterwards\n const { offerId, name } = favoritedSubOffer ?? subOfferToShowOnTop;\n\n const { price, pricePerSquareMeter, size, roomsNumber, url } =\n subOfferToShowOnTop;\n\n let imageUrl = favoritedSubOffer?.imageUrl;\n if (imageUrl == null) {\n imageUrl = subOfferToShowOnTop.imageUrl;\n }\n if (imageUrl == null) {\n const allImageUrls = offer.subOffers\n .map((x) => x.imageUrl)\n .filter((x) => x != null);\n if (allImageUrls.length > 0) {\n imageUrl = allImageUrls[0];\n }\n }\n\n const district = offer.knownDistricts && offer.knownDistricts[0];\n const lastModificationDate = offer.lastSaved;\n\n const market =\n subOfferToShowOnTop.market === null\n ? tryGetSingleMarket(offer)\n : subOfferToShowOnTop.market;\n const origin =\n subOfferToShowOnTop.origin === null\n ? tryGetSingleOrigin(offer)\n : subOfferToShowOnTop.origin;\n\n return {\n offerId,\n url,\n imageUrl,\n name,\n price,\n size,\n pricePerSquareMeter,\n district,\n roomsNumber,\n market,\n origin,\n lastModificationDate\n };\n};\n\nconst tryGetSingleMarket = (offer: DisplayedAggregatedOffer): Market | null =>\n tryGetSingleProperty(offer, (x) => x.market);\nconst tryGetSingleOrigin = (\n offer: DisplayedAggregatedOffer\n): OfferOrigin | null => tryGetSingleProperty(offer, (x) => x.origin);\n\nconst tryGetSingleProperty = (\n offer: DisplayedAggregatedOffer,\n getProperty: (subOffer: DisplayedSubOffer) => T | null\n): T | null => {\n let foundValue: T | null = null;\n for (let i = 0; i < offer.subOffers.length; i++) {\n const property = getProperty(offer.subOffers[i]);\n\n if (property === null) {\n //do nothing\n } else if (foundValue === null) {\n foundValue = property;\n } else if (foundValue !== property) {\n return null;\n }\n }\n return foundValue;\n};\n\nconst getSubOfferBestAlignedWithSearchCriteria = (\n offer: DisplayedAggregatedOffer,\n lastSearchedCriteria: SearchCriteriaDto\n): DisplayedSubOffer => {\n let subOffersMatchingWithSearchCriteria: DisplayedSubOffer[] = [\n ...offer.subOffers\n ];\n\n if (lastSearchedCriteria.origin !== null) {\n // when user searches for 'Private' offers then it's possible that some offers have\n // both 'Private' and 'Agency' subOffers. We should show Private one on top.\n\n const matching = subOffersMatchingWithSearchCriteria.filter(\n (x) => x.origin === lastSearchedCriteria.origin\n );\n if (matching.length > 0) {\n subOffersMatchingWithSearchCriteria = matching;\n }\n }\n\n if (lastSearchedCriteria.market !== null) {\n // same for market, but we decided it's less important than origin so it's second\n\n const matching = subOffersMatchingWithSearchCriteria.filter(\n (x) => x.market === lastSearchedCriteria.market\n );\n if (matching.length > 0) {\n subOffersMatchingWithSearchCriteria = matching;\n }\n }\n\n return subOffersMatchingWithSearchCriteria.reduce((prev, curr) =>\n (prev.lastModificationDate?.getTime() ?? 0) >=\n (curr.lastModificationDate?.getTime() ?? 0)\n ? prev\n : curr\n );\n};\n","import React, { useState } from 'react';\nimport { TableRow } from './TableRow';\nimport { formatNumber, formatDateShort } from '../../helpers';\nimport styled from 'styled-components';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport * as offerFlagActions from '../../../redux/actions/offerFlagActions';\nimport { OfferDetails } from './OfferDetails';\nimport { getDisplayedRoomsNumber } from '../../RoomsNumber';\nimport { OfferFlag } from '../../OfferFlag';\nimport { DisplayedAggregatedOffer } from '../DisplayedSearchResult';\nimport { OfferFlagIcons } from './OfferFlagIcons';\nimport { getOfferInfoToDisplay } from './getOfferInfoToDisplay';\nimport { SearchCriteriaDto } from '../../SearchCriteriaDto';\nimport { getDisplayedPurpose } from '../../PremisesPurpose';\nimport { colors } from '../../theme/colors';\nimport { auth } from '../../../auth/FirebaseApp';\n\nconst Wrapper = styled.div<{ isEven: boolean; isExpanded: boolean }>`\n background-color: ${(props) => (props.isEven ? 'white' : 'whitesmoke')};\n border-color: rgb(190, 190, 190);\n border-style: solid;\n border-width: ${(props) => (props.isExpanded ? '2px' : '0px')};\n transition: background-color 0.2s ease;\n`;\n\nconst UpperPart = styled.div`\n :hover {\n background-color: rgb(240, 240, 240);\n cursor: pointer;\n }\n transition: background-color 0.2s ease;\n`;\n\nconst PurposeCell = styled.div`\n font-size: 0.9em;\n line-height: normal;\n color: ${colors.almostDarkGray};\n\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n`;\n\nexport interface OfferTableEntryProps {\n offer: DisplayedAggregatedOffer;\n isEven: boolean;\n offerFlagActions: any;\n lastSearchedCriteria: SearchCriteriaDto;\n}\n\nconst OfferTableEntry = ({\n offer,\n isEven,\n offerFlagActions,\n lastSearchedCriteria\n}: OfferTableEntryProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const currentUserEmail = auth.currentUser?.email;\n\n const toggleDetailsView = () => {\n setIsExpanded(!isExpanded);\n };\n\n const favoritedSubOffer = offer.subOffers.find((x) =>\n offer.offerFlags.some((ff) => ff.offerId === x.offerId)\n );\n\n const infoToDisplay = getOfferInfoToDisplay(\n offer,\n lastSearchedCriteria,\n favoritedSubOffer\n );\n\n const onFavoriteClicked = (\n offerFlag: OfferFlag,\n e: React.MouseEvent\n ) => {\n e.stopPropagation();\n\n if (offer.offerFlags.some((x) => x.offerFlag == offerFlag)) {\n offerFlagActions.removeOfferFlag(\n offer.subOffers.map((x) => x.offerId),\n offerFlag\n );\n } else {\n offerFlagActions.addOfferFlag(\n favoritedSubOffer?.offerId ?? infoToDisplay.offerId,\n offer.propertyType,\n offer.city,\n offer.offerType,\n offerFlag,\n currentUserEmail\n );\n }\n };\n\n const hasDuplicates = offer.subOffers.length > 1;\n const duplicates = offer.subOffers.filter(\n (x) => x.offerId !== infoToDisplay.offerId\n );\n const offerFlagIcons = (\n ({\n offerFlag: x.offerFlag,\n flaggedBy: x.email\n }))}\n onFlagIconClicked={onFavoriteClicked}\n currentUserEmail={currentUserEmail!}\n />\n );\n const purposeCell = (\n \n
\n {offer.knownPurposes?.map((x, i) => {\n if (i <= 1)\n return (\n \n {getDisplayedPurpose(x)}\n
\n
\n );\n if (i == 2) return ...;\n return undefined;\n })}\n
\n
\n );\n\n return (\n \n \n \n \n {isExpanded && (\n setIsExpanded(false)}\n earliestCreationDate={offer.earliestCreationDate}\n detailedLocalization={offer.detailedLocalization}\n knownPhoneNumbers={offer.knownPhoneNumbers}\n knownPurposes={offer.knownPurposes}\n yearOfConstruction={offer.yearOfConstruction}\n floor={offer.floor}\n roomsNumber={infoToDisplay.roomsNumber}\n district={infoToDisplay.district}\n propertyType={offer.propertyType}\n />\n )}\n \n );\n};\n\nfunction mapStateToProps(state: any) {\n return {\n lastSearchedCriteria: state.lastSearchedCriteria\n };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return {\n offerFlagActions: bindActionCreators(offerFlagActions, dispatch)\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OfferTableEntry);\n","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPlaceHolder(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"image\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M2 2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1h12c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-12zM2 1h12c1.105 0 2 0.895 2 2v10c0 1.105-0.895 2-2 2h-12c-1.105 0-2-0.895-2-2v-10c0-1.105 0.895-2 2-2z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M12 5c0 0.552-0.448 1-1 1s-1-0.448-1-1c0-0.552 0.448-1 1-1s1 0.448 1 1z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M6.972 6.679l-6.149 5.203-0.646-0.763 6.5-5.5c0.199-0.168 0.493-0.156 0.677 0.028l3.646 3.646 1.646-1.646c0.195-0.195 0.512-0.195 0.707 0l2.5 2.5-0.707 0.707-2.146-2.146-1.646 1.646c-0.195 0.195-0.512 0.195-0.707 0l-3.675-3.675z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlaceHolder);\nexport default __webpack_public_path__ + \"static/media/PlaceHolder.83a63442.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\nimport { PropertyType } from '../../PropertyType';\nimport { colors } from '../../theme/colors';\nimport { DisplayedAggregatedOffer } from '../DisplayedSearchResult';\nimport OfferTableEntry from './OfferTableEntry';\nimport { TableRow } from './TableRow';\n\nconst OffersListTable = styled.div`\n min-width: 930px;\n`;\n\nconst TitleTableRow = styled(TableRow)`\n background-color: ${colors.white};\n border-radius: 6px 6px 0px 0px;\n color: ${colors.almostDarkGray};\n text-transform: uppercase;\n font-weight: 600;\n height: 32px;\n align-items: center;\n font-size: 12px;\n border-bottom: 1px solid ${colors.slightlyLightGray};\n`;\n\nconst StickyDiv = styled.div`\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1;\n`;\n\ninterface OffersTableProps {\n propertyType: PropertyType;\n offers: DisplayedAggregatedOffer[];\n}\n\nexport const OffersTable = ({ offers, propertyType }: OffersTableProps) => {\n return (\n \n \n \n Cena/m2\n

\n }\n size={\n \n m2\n \n }\n roomsNumber=\"P\"\n district=\"Lokalizacja\"\n lastModificationDate=\"Aktywność\"\n name=\"Tytuł\"\n propertyType={propertyType}\n purpose=\"Przeznaczenie\"\n />\n
\n {offers.map((offer, i) => (\n \n ))}\n
\n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as PlaceHolder } from '../../../utils/icons/PlaceHolder.svg';\nimport { colors } from '../../../theme/colors';\n\nconst Image = styled.img`\n width: 100%;\n height: 10em;\n object-fit: cover;\n`;\n\nconst PlaceHolderSvg = styled(PlaceHolder)`\n color: ${colors.slightlyDarkGray};\n margin-top: 10px;\n width: 100%;\n height: 10em;\n`;\n\ninterface OfferImageProps {\n imageUrl: string | null;\n className?: string;\n}\n\nexport const OfferImage = ({ imageUrl, className }: OfferImageProps) => {\n return (\n <>\n {imageUrl !== null ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { formatNumber } from '../../../helpers';\n\nexport const formatPrice = (price: number | null) => {\n if (price === null) return 'nie podano ceny';\n return formatNumber(price) + ' zł';\n};\n\nexport const formatPricePerM = (price: number | null) => {\n if (price === null) return '--';\n return formatNumber(price);\n};\n\nexport const formatSize = (size: number | null) => {\n if (size === null) return '--';\n return size;\n};\n","export const getLocalization = (\n districts: string[],\n localization: string | null\n): string =>\n [...districts, localization]\n .filter((x) => x !== null && x !== '')\n .join(', ');\n","import React from 'react';\nimport { colors } from '../../../theme/colors';\nimport styled from 'styled-components';\nimport { formatPhoneNumber } from '../../../formatPhoneNumber';\n\nconst OfferUrl = styled.a`\n font-weight: bold;\n text-decoration: none;\n color: ${colors.deepBlue};\n :hover {\n color: ${colors.deepBlue};\n text-decoration: none;\n }\n`;\n\nconst Contact = styled.span`\n font-weight: bold;\n`;\n\ninterface PhoneNumberProps {\n phoneNumbers: string[];\n url: string;\n}\n\nexport const PhoneNumber = ({ phoneNumbers, url }: PhoneNumberProps) => {\n if (phoneNumbers.length === 0)\n return (\n \n Kontakt w ofercie\n \n );\n return (\n \n {phoneNumbers.map((number) => formatPhoneNumber(number)).join(', ')}\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n DisplayedSubOffer,\n DisplayedAggregatedOffer\n} from '../../DisplayedSearchResult';\nimport {\n formatPrice,\n formatPricePerM,\n formatSize\n} from './priceAndSizeFormatting';\nimport { colors } from '../../../theme/colors';\nimport { getLocalization } from './getLocalization';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport { PhoneNumber } from './PhoneNumber';\nimport { PremisesPurpose, getDisplayedPurpose } from '../../../PremisesPurpose';\nimport { formatDate } from '../../../helpers';\nimport { getDisplayedOfferOrigin } from '../../../OfferOrigin';\nimport { getDisplayedFloor } from '../../../Floor';\nimport { getDisplayedMarket } from '../../../Market';\nimport StyledA from '../../../utils/styledA';\n\nconst InfoIcon = styled(RsuiteIcon)`\n color: ${({ color }) => color};\n margin-right: 10px;\n`;\n\nconst OfferName = styled.div`\n font-weight: bold;\n font-size: 1.1em;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n margin-top: 5px;\n`;\n\nconst PriceSizeContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n font-weight: bold;\n font-size: 1.2em;\n margin-top: 5px;\n`;\n\nconst OfferLocalization = styled.div`\n color: ${colors.almostDarkGray};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n margin-top: 5px;\n`;\n\nconst OfferDetail = styled.span`\n font-weight: bold;\n`;\n\nconst DetailsContainer = styled.div`\n margin-top: 5px;\n`;\n\nconst getPurpose = (purposes: PremisesPurpose[]): string => {\n return purposes.map((purpose) => getDisplayedPurpose(purpose)).join(', ');\n};\n\ninterface BasicOfferInfoProps {\n offer: DisplayedAggregatedOffer;\n subOffer: DisplayedSubOffer;\n}\n\nexport const BasicOfferInfo = ({ offer, subOffer }: BasicOfferInfoProps) => {\n return (\n <>\n
\n \n {subOffer.name}\n \n
\n\n \n
{formatPrice(subOffer.price)}
\n
\n {formatPricePerM(subOffer.pricePerSquareMeter)} zł/m\n 2\n
\n
\n {formatSize(subOffer.size)}m2\n
\n
\n\n {(offer.knownDistricts.length !== 0 ||\n offer.detailedLocalization !== null) && (\n \n \n {getLocalization(\n offer.knownDistricts,\n offer.detailedLocalization\n )}\n \n )}\n\n \n \n \n \n\n {offer.knownPurposes.length !== 0 && (\n \n \n Przeznaczenie:{' '}\n {getPurpose(offer.knownPurposes)}\n \n )}\n\n {offer.floor && (\n \n {' '}\n \n Piętro:{' '}\n \n {getDisplayedFloor(offer.floor)}\n {' '}\n \n )}\n\n {subOffer.origin !== null && (\n \n \n {getDisplayedOfferOrigin(subOffer.origin)}\n \n )}\n\n {subOffer.market !== null && (\n \n \n Rynek:{' '}\n \n {getDisplayedMarket(subOffer.market)}\n \n \n )}\n\n {offer.yearOfConstruction && (\n \n \n Rok budowy:{' '}\n {offer.yearOfConstruction}\n \n )}\n\n \n \n Data dodania oferty:{' '}\n \n {formatDate(offer.earliestCreationDate)}\n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { HoverableIcon } from '../../../utils/hoverableIcon';\nimport { colors } from '../../../theme/colors';\nimport StyledA from '../../../utils/styledA';\nimport StyledButtonV2 from '../../../utils/styledButtonV2';\n\nconst OfferLink = styled(StyledA)`\n width: 100%;\n`;\n\nconst InsideButtonContainer = styled.div`\n display: flex;\n justify-content: center;\n gap: 5px;\n align-items: center;\n`;\n\ninterface ShowOfferButtonProps {\n offerUrl: string;\n}\n\nexport const ShowOfferButton = ({ offerUrl }: ShowOfferButtonProps) => {\n return (\n \n \n \n
\n \n
\n Pokaż ofertę\n
\n \n
\n );\n};\n","import React from 'react';\nimport { OfferDescription } from '../OfferDescription';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n margin-top: 20px;\n`;\n\nconst Heading = styled.div`\n font-weight: bold;\n margin-bottom: 10px;\n`;\n\ninterface OfferDescriptionMobileProps {\n description: string | null;\n}\n\nexport const OfferDescriptionMobile = ({\n description\n}: OfferDescriptionMobileProps) => {\n return (\n <>\n {description !== null && (\n \n Opis oferty\n \n \n )}\n \n );\n};\n","import React from 'react';\nimport { Modal } from 'rsuite';\nimport styled from 'styled-components';\nimport {\n DisplayedAggregatedOffer,\n DisplayedSubOffer\n} from '../../DisplayedSearchResult';\nimport { OfferImage } from './OfferImage';\nimport { BasicOfferInfo } from './BasicOfferInfo';\nimport { ShowOfferButton } from './ShowOfferButton';\nimport { OfferDescriptionMobile } from './OfferDescriptionMobile';\n\nconst ModalContainer = styled(Modal)`\n width: 90%;\n margin-top: 50px;\n`;\n\nconst StyledImage = styled(OfferImage)`\n border-radius: 6px;\n`;\n\ninterface ModalComponentProps {\n offer: DisplayedAggregatedOffer;\n latestSubOffer: DisplayedSubOffer;\n setShowModal: (showModal: boolean) => void;\n showModal: boolean;\n}\n\nexport const ModalComponent = ({\n offer,\n latestSubOffer,\n setShowModal,\n showModal\n}: ModalComponentProps) => {\n const closeModal = () => setShowModal(false);\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport { DisplayedAggregatedOffer } from '../../DisplayedSearchResult';\nimport styled from 'styled-components';\nimport { LightBoxShadow } from '../../../utils/boxShadow';\nimport { ModalComponent } from './ModalComponent';\nimport {\n formatPrice,\n formatPricePerM,\n formatSize\n} from './priceAndSizeFormatting';\nimport { OfferImage } from './OfferImage';\nimport { colors } from '../../../theme/colors';\nimport { getLocalization } from './getLocalization';\n\nconst Container = styled.div`\n margin: 15px;\n ${LightBoxShadow};\n overflow: hidden;\n border-radius: 6px;\n`;\n\nconst OfferInfoContainer = styled.div`\n padding: 10px 15px 20px;\n`;\n\nconst OfferDetails = styled.div`\n margin-top: 10px;\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: 10px;\n`;\n\nconst OfferName = styled.div`\n font-size: 1.1em;\n font-weight: bold;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nconst OfferPrice = styled.div`\n font-weight: bold;\n font-size: 1.2em;\n`;\n\nconst OfferOtherDetails = styled.div`\n font-size: 1.1em;\n`;\n\nconst OfferLocalization = styled.span`\n color: ${colors.almostDarkGray};\n`;\n\ninterface OfferCardsProps {\n offer: DisplayedAggregatedOffer;\n}\n\nexport const OfferCard: React.FC = ({ offer }) => {\n const [showModal, setShowModal] = useState(false);\n\n const latestSubOffer = offer.subOffers[offer.subOffers.length - 1];\n\n return (\n <>\n {\n setShowModal(true);\n }}\n >\n \n\n \n {latestSubOffer.name}\n\n \n {getLocalization(\n offer.knownDistricts,\n offer.detailedLocalization\n )}\n \n\n \n \n {formatPrice(latestSubOffer.price)}\n \n \n {formatPricePerM(\n latestSubOffer.pricePerSquareMeter\n )}{' '}\n zł/m\n 2\n \n \n {formatSize(latestSubOffer.size)} m2\n \n \n \n \n\n \n \n );\n};\n","import React from 'react';\nimport { DisplayedAggregatedOffer } from '../../DisplayedSearchResult';\nimport { OfferCard } from './OfferCard';\n\ninterface MobileOffersListProps {\n offers: DisplayedAggregatedOffer[];\n}\n\nexport const MobileOffersList = ({ offers }: MobileOffersListProps) => {\n return (\n <>\n {offers.map((offer) => {\n return ;\n })}\n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport * as mediaQueries from '../../theme/mediaQueries';\nimport PlaceholderGrid from 'rsuite/lib/Placeholder/PlaceholderGrid';\nimport { LightBoxShadow } from '../../utils/boxShadow';\nimport { DisplayedAggregatedOffer } from '../DisplayedSearchResult';\nimport { LastOfferActivity } from '../../LastOfferActivity';\nimport { OffersListHeader } from './OffersListHeader';\nimport { OffersTable } from './OffersTable';\nimport { MobileOffersList } from './mobile/MobileOffersList';\n\nconst OffersTableContainer = styled.div`\n ${mediaQueries.mobileOnly} {\n display: none;\n }\n`;\n\nconst MobileOffersContainer = styled.div`\n ${mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst ComponentWrapper = styled.div`\n max-width: 1140px;\n margin: 0px auto;\n`;\n\nconst OverflowWrapper = styled.div`\n overflow-x: auto;\n ${mediaQueries.mobileOnly} {\n margin: 0px -20px;\n }\n ${LightBoxShadow}\n`;\n\nconst PlaceholderWrapper = styled.div`\n padding: 40px;\n`;\n\nexport interface OffersListProps {\n offers: DisplayedAggregatedOffer[];\n totalHits: number | null;\n totalHitsText: string;\n areOffersLoading: boolean;\n emptyContent: React.ReactNode;\n lastOfferActivity?: LastOfferActivity;\n onLastOfferActivityChange?: (newValue: LastOfferActivity) => void;\n}\n\nexport const OffersList = ({\n offers,\n totalHits,\n totalHitsText,\n areOffersLoading,\n emptyContent,\n lastOfferActivity,\n onLastOfferActivityChange\n}: OffersListProps) => {\n if (areOffersLoading) {\n return (\n \n \n \n \n \n \n \n \n );\n }\n\n if (totalHits == null || totalHits < 1 || offers.length < 1) {\n return (\n \n \n {emptyContent}\n \n );\n }\n\n const propertyType = offers[0].propertyType;\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nconst PagingWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 20px;\n max-width: 600px;\n margin: auto;\n margin-top: 15px;\n`;\n\nconst CenteredText = styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n`;\n\nconst LightText = styled.span`\n color: ${colors.darkGray};\n margin: 0px 2px;\n`;\n\nexport interface PagingProps {\n currentPage: number;\n pageSize: number;\n totalOffersCount: number;\n offersPageChanged: (newPage: number) => void;\n}\nexport const Paging: React.FC = ({\n currentPage,\n pageSize,\n totalOffersCount,\n offersPageChanged\n}) => {\n const onPreviousPageClicked = () => {\n offersPageChanged(currentPage - 1);\n };\n\n const onNextPageClicked = () => {\n offersPageChanged(currentPage + 1);\n };\n\n const totalPages = Math.ceil(totalOffersCount / pageSize);\n\n return (\n
\n \n
\n {currentPage > 1 && (\n onPreviousPageClicked()}>\n Poprzednia\n \n )}\n
\n
\n \n strona\n \n {currentPage} z {totalPages}\n \n \n
\n
\n {currentPage < totalPages && (\n onNextPageClicked()}>\n Następna\n \n )}\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { Paging } from './Paging';\nimport { connect } from 'react-redux';\nimport {\n setSearchPageNumber,\n fetchOffers\n} from '../../redux/actions/searchActions';\n\nconst SearchPaging = ({\n currentPage,\n pageSize,\n areOffersLoading,\n totalOffersCount,\n offersPageChanged\n}) => (\n <>\n {!areOffersLoading && totalOffersCount > 0 && (\n \n )}\n \n);\n\nfunction mapStateToProps(state) {\n return {\n currentPage: state.paging.currentPage,\n pageSize: state.paging.pageSize,\n areOffersLoading: state.searchResult.areOffersLoading,\n totalOffersCount: state.searchResult.totalHits\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n offersPageChanged: (newPage) => {\n dispatch(setSearchPageNumber(newPage));\n dispatch(fetchOffers());\n }\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SearchPaging);\n","import * as actionTypes from '../actionTypes';\n\nexport function updateCurrentFilter(currentFilter) {\n return {\n type: actionTypes.updateCurrentFilter,\n payload: {\n currentFilter\n }\n };\n}\n\nexport function openSaveFilterChangesModal(changeType) {\n return {\n type: actionTypes.openSaveFilterChangesModal,\n payload: {\n changeType\n }\n };\n}\n\nexport function closeSaveFilterChangesModal() {\n return {\n type: actionTypes.closeSaveFilterChangesModal\n };\n}\n","import styled from 'styled-components';\n\nconst ClickableSpan = styled.span`\n margin: 0px 10px;\n color: #0366d6;\n text-decoration: underline;\n cursor: pointer;\n`;\n\nexport default ClickableSpan;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport * as currentFilterActions from '../../redux/actions/currentFilterActions';\nimport * as searchActions from '../../redux/actions/searchActions';\nimport { Message } from '../utils/Message';\nimport ClickableSpan from '../utils/clickableSpan';\nimport { filterChangeType } from '../enums';\n\nfunction FilterContextMessage({\n filterId,\n filterName,\n filterSearchCriteria,\n openSaveFilterChangesModal,\n updateCurrentSearchCriteria,\n isSearchCriteriaInLineWithFilter\n}) {\n const revertChanges = () => {\n updateCurrentSearchCriteria({\n ...filterSearchCriteria,\n isInLineWithCurrentFilter: true\n });\n };\n\n const buttons = isSearchCriteriaInLineWithFilter ? (\n \n openSaveFilterChangesModal(filterChangeType.changeName)\n }\n >\n Zmień nazwę\n \n ) : (\n \n {' '}\n Cofnij zmiany\n \n openSaveFilterChangesModal(filterChangeType.saveChanges)\n }\n >\n Zapisz zmiany\n \n \n );\n\n return (\n \n

\n Filtr {filterName}{' '}\n {isSearchCriteriaInLineWithFilter ? '' : ' (zmodyfikowany)'}\n {buttons}\n

\n
\n );\n}\n\nfunction mapStateToProps(state) {\n return {\n filterId: state.currentFilter.id,\n filterName: state.currentFilter.name,\n isSearchCriteriaInLineWithFilter:\n state.currentSearchCriteria.isInLineWithCurrentFilter,\n filterSearchCriteria: state.currentFilter.searchCriteria\n };\n}\n\nconst mapDispatchToProps = {\n openSaveFilterChangesModal: currentFilterActions.openSaveFilterChangesModal,\n updateCurrentSearchCriteria: searchActions.updateCurrentSearchCriteria\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(FilterContextMessage);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport * as currentFilterActions from '../../redux/actions/currentFilterActions';\nimport * as searchActions from '../../redux/actions/searchActions';\nimport ConfirmModal from '../utils/confirmModal';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Input } from 'rsuite';\nimport apiCaller from '../ApiCaller';\nimport { showAlert, getEmptyFilter, isNullOrWhiteSpace } from '../helpers';\nimport { filterChangeType } from '../enums';\n\nclass SaveFilterChangesModal extends React.Component {\n constructor(props) {\n super(props);\n\n let newFilterName;\n\n this.state = {\n newFilterName,\n isSaving: false\n };\n\n this.saveChanges = this.saveChanges.bind(this);\n this.onNewFilterNameChange = this.onNewFilterNameChange.bind(this);\n this.initNewFilterName = this.initNewFilterName.bind(this);\n }\n\n async saveChanges() {\n this.setState({ isSaving: true });\n\n const { newFilterName } = this.state;\n const {\n currentFilter,\n changeType,\n currentSearchCriteria,\n updateCurrentFilter,\n closeModal\n } = this.props;\n\n const filterNameFormatted = isNullOrWhiteSpace(newFilterName)\n ? 'Filtr bez nazwy'\n : newFilterName.trim().substring(0, 100);\n\n const newFilter = {\n ...currentFilter,\n name: filterNameFormatted\n };\n\n let saveResult = {};\n if (changeType === filterChangeType.saveAsNewFilter) {\n newFilter.searchCriteria = currentSearchCriteria;\n newFilter.id = null;\n\n saveResult = await apiCaller.post('api/filters', newFilter);\n } else if (changeType === filterChangeType.saveChanges) {\n newFilter.searchCriteria = currentSearchCriteria;\n\n saveResult = await apiCaller.put(`api/filters`, newFilter);\n } else {\n //just update name\n saveResult = await apiCaller.put(`api/filters`, newFilter);\n }\n\n this.setState({ isSaving: false });\n\n if (saveResult.status === 'success') {\n updateCurrentFilter(getEmptyFilter()); //leave edit filter context\n\n const successMessage =\n changeType === changeType.newFilter\n ? `Filtr zapisany!`\n : `Zmiany zapisane!`;\n showAlert(successMessage);\n\n window.location.replace('/filters');\n } else if (saveResult.status === 'filtersLimitExceeded') {\n showAlert(\n 'Przykro nam, przekroczono maksymalny limit filtrów (10) :(',\n 'error'\n );\n } else if (saveResult.status === 'filterTooWide') {\n showAlert(\n 'Filtr jest zbyt obszerny aby móc dla niego wysyłać powiadomienia mailowe - wyłącz powiadomienia lub zawęź go tak by pokazywał poniżej 100 ofert w ciągu ostatnich 3 dni',\n 'error'\n );\n } else if (\n saveResult.status === 'filtersWithEmailNotificationsLimitExceeded'\n ) {\n showAlert(\n 'Przykro nam, nie możesz mieć więcej niż 3 filtrów z włączonymi powiadomieniami email',\n 'error'\n );\n } else {\n showAlert(\n 'Nie udało się zapisać filtra! Jeśli problem będzie się powtarzać proszę skontaktuj się z nami',\n 'error'\n );\n }\n }\n\n updateUrlParameters({ filterId, editing }) {\n var url = new URL(window.location.href);\n\n if (filterId) {\n url.searchParams.set('filterId', filterId);\n } else {\n url.searchParams.delete('filterId');\n }\n\n if (editing) {\n url.searchParams.set('editing', 1);\n } else {\n url.searchParams.delete('editing');\n }\n\n window.history.pushState(null, null, url);\n }\n\n onNewFilterNameChange(newFilterName) {\n this.setState({ newFilterName });\n }\n\n initNewFilterName() {\n let newFilterName;\n\n if (this.props.changeType === filterChangeType.saveAsNewFilter) {\n newFilterName = '';\n } else {\n newFilterName = this.props.currentFilter.name || '';\n }\n\n this.onNewFilterNameChange(newFilterName);\n }\n\n render() {\n const { newFilterName, isSaving } = this.state;\n const { currentFilter, isVisible, closeModal, changeType } = this.props;\n\n let title;\n let description;\n\n switch (changeType) {\n case filterChangeType.saveAsNewFilter:\n title = 'Zapisz filtr';\n description =

Wpisz nazwę filtra

;\n break;\n case filterChangeType.saveChanges:\n title = 'Zapisz zmiany w filtrze';\n description = (\n

\n Zapisujesz zmiany w filtrze {currentFilter.name}.\n Czy chcesz zmienić jego nazwę?\n

\n );\n break;\n case filterChangeType.changeName:\n title = 'Zmień nazwę';\n description =

Wpisz nową nazwę

;\n break;\n default:\n break;\n }\n\n return (\n \n {description}\n \n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n isVisible: state.currentFilter.saveChangesModalState.isOpen,\n changeType: state.currentFilter.saveChangesModalState.changeType,\n currentFilter: state.currentFilter,\n currentSearchCriteria: state.currentSearchCriteria\n };\n}\n\nconst mapDispatchToProps = {\n closeModal: currentFilterActions.closeSaveFilterChangesModal,\n updateCurrentFilter: currentFilterActions.updateCurrentFilter,\n updateCurrentSearchCriteria: searchActions.updateCurrentSearchCriteria\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SaveFilterChangesModal);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport * as currentFilterActions from '../../redux/actions/currentFilterActions';\nimport { filterChangeType } from '../enums';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport { colors } from '../theme/colors';\nimport styled from 'styled-components';\nimport Margin from '../utils/Margin';\n\nconst FilterIcon = styled(RsuiteIcon)`\n margin-right: 10px;\n color: ${({ theme }) => theme.colors.greenyBlue};\n`;\n\nfunction SaveButtons({\n isInFilterContext,\n isSearchCriteriaInLineWithFilter,\n openSaveFilterChangesModal\n}) {\n const saveChangesButton =\n isInFilterContext && !isSearchCriteriaInLineWithFilter ? (\n \n \n openSaveFilterChangesModal(filterChangeType.saveChanges)\n }\n backgroundColor={colors.lightGray}\n >\n Zapisz zmiany w filtrze\n \n \n ) : (\n ''\n );\n\n return (\n
\n \n \n openSaveFilterChangesModal(\n filterChangeType.saveAsNewFilter\n )\n }\n backgroundColor={colors.lightGray}\n >\n \n Zapisz jako nowy filtr\n \n \n\n {saveChangesButton}\n
\n );\n}\n\nfunction mapStateToProps(state) {\n return {\n isInFilterContext: state.currentFilter.id != null,\n isSearchCriteriaInLineWithFilter:\n state.currentSearchCriteria.isInLineWithCurrentFilter\n };\n}\n\nconst mapDispatchToProps = {\n openSaveFilterChangesModal: currentFilterActions.openSaveFilterChangesModal\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SaveButtons);\n","var _defs, _g, _g2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMagnifyingGlass(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"search-empty-icon\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 130,\n height: 127,\n viewBox: \"0 0 130 127\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient\",\n y1: 0.202,\n x2: 0.879,\n y2: 0.824,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffcb86\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#ffcc4e\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Mask\",\n d: \"M120,60a60.064,60.064,0,0,1-27.808,50.64l-.669.419A59.972,59.972,0,0,1,.172,64.582Q0,62.312,0,60a60.353,60.353,0,0,1,.392-6.889Q.627,51.05,1,49.033a60.028,60.028,0,0,1,88.844-41.1q1.793,1.029,3.5,2.177c.245.164.49.331.732.5a.35.35,0,0,1,.054.037,60.283,60.283,0,0,1,15.115,15.069A59.73,59.73,0,0,1,120,60Z\",\n fill: \"url(#linear-gradient)\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-3\",\n x1: 1,\n y1: 1,\n x2: 0.094,\n y2: 0.249,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#e8e8f0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#f7f7fc\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-4\",\n x1: 0.094,\n y1: 0.249,\n x2: 1,\n y2: 1,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f0e6dd\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#f7eddf\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"message-sent-icon\",\n transform: \"translate(10 7)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2\",\n \"data-name\": \"Group 2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Mask-2\",\n \"data-name\": \"Mask\",\n d: \"M120,60a60.064,60.064,0,0,1-27.808,50.64l-.669.419A59.972,59.972,0,0,1,.172,64.582Q0,62.312,0,60a60.353,60.353,0,0,1,.392-6.889Q.627,51.05,1,49.033a60.028,60.028,0,0,1,88.844-41.1q1.793,1.029,3.5,2.177c.245.164.49.331.732.5a.35.35,0,0,1,.054.037,60.283,60.283,0,0,1,15.115,15.069A59.73,59.73,0,0,1,120,60Z\",\n fill: \"url(#linear-gradient)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2-2\",\n \"data-name\": \"Group 2\",\n clipPath: \"url(#clip-path)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Combined_Shape\",\n \"data-name\": \"Combined Shape\",\n d: \"M0,44A44,44,0,1,1,79.377,70.167L86.069,77.6,78.638,84.29,72.525,77.5A44,44,0,0,1,0,44Z\",\n transform: \"translate(-13 -5)\",\n fill: \"#dda319\",\n opacity: 0.157\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2-3\",\n \"data-name\": \"Group 2\",\n transform: \"translate(62 65)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path\",\n d: \"M48,38.455h0A9.663,9.663,0,0,1,38.455,48h0a9.9,9.9,0,0,1-7.091-3L.818,11.727a2.636,2.636,0,0,1,0-3.818L7.909.818a2.636,2.636,0,0,1,3.818,0L45,31.637A9.3,9.3,0,0,1,48,38.455Z\",\n fill: \"#b06328\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-2\",\n \"data-name\": \"Path\",\n d: \"M43.363,22.773l-1.636-1.364a9.531,9.531,0,0,1,2.182,6h0c0,3.545-4.364,4.909-6.818,2.455L8.454,1.227a3.954,3.954,0,0,0-5.727,0L0,3.954,29.727,35.863a10.947,10.947,0,0,0,6,3.273,10.094,10.094,0,0,0,7.909-2.727A10.094,10.094,0,0,0,46.363,28.5C46.363,26.318,45,24.409,43.363,22.773Z\",\n transform: \"translate(1.364 8.591)\",\n fill: \"#a35425\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-3\",\n \"data-name\": \"Path\",\n d: \"M8.318,9.409a1.64,1.64,0,0,1-1.091-.273L.409,2.318a1.318,1.318,0,0,1,0-1.909,1.318,1.318,0,0,1,1.909,0L9.136,7.227a1.318,1.318,0,0,1,0,1.909C9.136,9.409,8.591,9.409,8.318,9.409Z\",\n transform: \"translate(8.318 3.137)\",\n fill: \"#c97629\"\n })))))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"search_11_\",\n \"data-name\": \"search (11)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n width: 7.636,\n height: 11.454,\n transform: \"translate(79.021 73.623) rotate(135)\",\n fill: \"#f0f0f6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-4\",\n \"data-name\": \"Path\",\n d: \"M9.546,9.545l1.364,1.364,2.727-2.727L5.455,0,0,5.455,4.091,9.545h0A3.644,3.644,0,0,1,9.546,9.545Z\",\n transform: \"translate(65.454 65.455)\",\n fill: \"#d8d8eb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Shape\",\n d: \"M0,40.909a40.909,40.909,0,1,1,40.909,40.91A40.854,40.854,0,0,1,0,40.909Z\",\n fill: \"url(#linear-gradient-3)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n cx: 32.727,\n cy: 32.727,\n r: 32.727,\n transform: \"translate(8.182 8.182)\",\n fill: \"url(#linear-gradient-4)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-5\",\n \"data-name\": \"Path\",\n d: \"M8.207,28.27A23.148,23.148,0,0,1,28.116,8.361h.273c4.636-.545,4.909-7.091.545-7.909A27.478,27.478,0,0,0,20.752.179,24.3,24.3,0,0,0,.3,20.634,20.514,20.514,0,0,0,.57,28.815c.818,4.636,7.364,4.091,7.909-.545C8.207,28.543,8.207,28.27,8.207,28.27Z\",\n transform: \"translate(16.612 16.457)\",\n fill: \"rgba(255,255,255,0.49)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-6\",\n \"data-name\": \"Path\",\n d: \"M2.727,35.454A32.823,32.823,0,0,1,35.454,2.727a34.172,34.172,0,0,1,21.818,8.182A32.354,32.354,0,0,0,32.727,0,32.823,32.823,0,0,0,0,32.727,33.326,33.326,0,0,0,10.909,57.273,34.172,34.172,0,0,1,2.727,35.454Z\",\n transform: \"translate(8.182 8.182)\",\n fill: \"#dbdbeb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-7\",\n \"data-name\": \"Path\",\n d: \"M1.584,34.108c0-18,14.95-32.243,32.95-32.243,8.455,0,16.74,4.135,22.74,9.044A32.354,32.354,0,0,0,32.727,0,32.823,32.823,0,0,0,0,32.727,33.326,33.326,0,0,0,10.909,57.273C6,51.273,1.584,42.563,1.584,34.108Z\",\n transform: \"translate(79.4 68.44) rotate(171)\",\n fill: \"#fff\",\n opacity: 0.813\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMagnifyingGlass);\nexport default __webpack_public_path__ + \"static/media/MagnifyingGlass.d967bfd0.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { Icon } from 'rsuite';\nimport styled from 'styled-components';\nimport { LastOfferActivity } from '../LastOfferActivity';\nimport { colors } from '../theme/colors';\nimport { ReactComponent as MagnifyingGlass } from '../utils/icons/MagnifyingGlass.svg';\nimport SectionInterspace from '../utils/SectionInterspace';\n\nconst Wrapper = styled.div`\n text-align: center;\n padding: 50px;\n`;\n\nconst Title = styled.p`\n color: ${colors.slightlyDarkGray};\n font-size: 17px;\n font-weight: bold;\n margin-bottom: 15px;\n`;\n\nconst ActivityFilterText = styled.span`\n font-weight: bold;\n color: ${colors.deepBlue};\n`;\nconst ActivityFilterIcon = styled(Icon)`\n color: ${colors.deepBlue};\n margin-right: 10px;\n`;\n\nexport interface NoSearchResultsMessageProps {\n activityFilterValue: LastOfferActivity;\n}\nexport const NoSearchResultsMessage: React.FC = ({\n activityFilterValue\n}) => {\n return (\n \n \n \n Nie znaleźliśmy ofert spełniających te kryteria\n {activityFilterValue !== LastOfferActivity.noLimit && (\n \n \n Możesz wybrać dłuższy okres aktywności żeby przeszukać też\n archiwalne ogłoszenia\n \n )}\n \n );\n};\n","import { Container } from 'reactstrap';\nimport styled from 'styled-components';\n\nexport const ContainerWithoutPadding = styled(Container)`\n padding: 0px;\n`;\n","import React from 'react';\nimport queryString from 'query-string';\nimport apiCaller from '../ApiCaller';\nimport SearchCriteriaForm from './SearchCriteriaForm';\nimport { OffersList } from './offersList/OffersList';\nimport SearchPaging from './SearchPaging';\nimport { connect } from 'react-redux';\nimport * as searchActions from '../../redux/actions/searchActions';\nimport * as currentFilterActions from '../../redux/actions/currentFilterActions';\nimport * as navigationActions from '../../redux/actions/navigationActions';\nimport { bindActionCreators } from 'redux';\nimport FilterContextMessage from './FilterContextMessage';\nimport SaveFilterChangesModal from './SaveFilterChangesModal';\nimport SaveButtons from './SaveButtons';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Divider } from '../utils/divider';\nimport { Loader } from '../utils/loader';\nimport { getCurrentSearchCriteriaFromSessionStorage } from '../SessionStorageFunctions';\nimport { getEmptyFilter } from '../helpers';\nimport { Page } from '../Page';\nimport { NoSearchResultsMessage } from './NoSearchResultsMessage';\nimport { ContainerWithoutPadding } from '../utils/ContainerWithoutPadding';\n\nclass Search extends React.Component {\n static displayName = Search.name;\n\n constructor(props) {\n super(props);\n\n this.state = {\n isFilterLoading: true\n };\n }\n\n async componentDidMount() {\n const urlParams = queryString.parse(this.props.location.search);\n const filterId = parseInt(urlParams['filterId']) || 0;\n const isEditingFilter = parseInt(urlParams['editing']) || 0;\n\n this.props.navigationActions.setCurrentPage(Page.Search);\n\n let currentlyEditedFilter = getEmptyFilter();\n if (filterId) {\n const filter = await apiCaller.get(`api/filters/${filterId}`);\n this.props.searchActions.updateCurrentSearchCriteria({\n ...filter.searchCriteria,\n isInLineWithSearchResults: true,\n isInLineWithCurrentFilter: true\n });\n\n if (isEditingFilter) {\n currentlyEditedFilter = filter;\n }\n } else {\n const cachedSearchCriteria =\n getCurrentSearchCriteriaFromSessionStorage();\n if (cachedSearchCriteria != null) {\n this.props.searchActions.updateCurrentSearchCriteria({\n ...cachedSearchCriteria,\n isInLineWithSearchResults: true\n });\n }\n }\n\n this.props.currentFilterActions.updateCurrentFilter(\n currentlyEditedFilter\n );\n\n this.setState({ isFilterLoading: false });\n\n this.props.searchActions.setSearchPageNumber(1);\n this.props.searchActions.fetchOffers();\n }\n\n render() {\n const { offers, areOffersLoading, totalHits, lastOfferActivity } =\n this.props;\n\n const saveChangesModal = this.state.isFilterLoading ? (\n ''\n ) : (\n \n );\n\n const onLastOfferActivityChange = (lastOfferActivity) => {\n this.props.searchActions.setLastOfferActivity(lastOfferActivity);\n this.props.searchActions.setSearchPageNumber(1);\n this.props.searchActions.fetchOffers();\n };\n\n const totalHitsText = `Znaleziono ${\n totalHits === 10000 ? 'ponad ' + totalHits : totalHits\n } ofert`;\n\n return (\n
\n \n

Wyszukiwarka

\n \n \n \n \n \n \n \n \n \n \n
\n \n \n }\n lastOfferActivity={lastOfferActivity}\n onLastOfferActivityChange={onLastOfferActivityChange}\n />\n \n {saveChangesModal}\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n offers: state.searchResult.offers,\n areOffersLoading: state.searchResult.areOffersLoading,\n totalHits: state.searchResult.totalHits,\n lastOfferActivity: state.currentSearchCriteria.lastOfferActivity\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n searchActions: bindActionCreators(searchActions, dispatch),\n currentFilterActions: bindActionCreators(\n currentFilterActions,\n dispatch\n ),\n navigationActions: bindActionCreators(navigationActions, dispatch)\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Search);\n","var _defs, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMagnifyingGlassWithStar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 130,\n height: 127,\n viewBox: \"0 0 130 127\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient\",\n y1: 0.202,\n x2: 0.879,\n y2: 0.824,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffcb86\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#ffcc4e\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Mask\",\n d: \"M120,60a60.064,60.064,0,0,1-27.808,50.64l-.669.419A59.972,59.972,0,0,1,.172,64.582Q0,62.312,0,60a60.353,60.353,0,0,1,.392-6.889Q.627,51.05,1,49.033a60.028,60.028,0,0,1,88.844-41.1q1.793,1.029,3.5,2.177c.245.164.49.331.732.5a.35.35,0,0,1,.054.037,60.283,60.283,0,0,1,15.115,15.069A59.73,59.73,0,0,1,120,60Z\",\n fill: \"url(#linear-gradient)\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-3\",\n x1: 1,\n y1: 1,\n x2: 0.094,\n y2: 0.249,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#e8e8f0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#f7f7fc\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-4\",\n x1: 0.094,\n y1: 0.249,\n x2: 1,\n y2: 1,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f0e6dd\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#f7eddf\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"star\",\n x: 24.48,\n y: 25.5,\n width: 31.221,\n height: 28.662,\n filterUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"feOffset\", {\n input: \"SourceAlpha\"\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 1,\n result: \"blur\"\n }), /*#__PURE__*/React.createElement(\"feFlood\", {\n floodColor: \"#f7c658\"\n }), /*#__PURE__*/React.createElement(\"feComposite\", {\n operator: \"in\",\n in2: \"blur\"\n }), /*#__PURE__*/React.createElement(\"feComposite\", {\n in: \"SourceGraphic\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_120\",\n \"data-name\": \"Group 120\",\n transform: \"translate(-219 -221)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"search-empty-icon\",\n transform: \"translate(219 221)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"message-sent-icon\",\n transform: \"translate(10 7)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2\",\n \"data-name\": \"Group 2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Mask-2\",\n \"data-name\": \"Mask\",\n d: \"M120,60a60.064,60.064,0,0,1-27.808,50.64l-.669.419A59.972,59.972,0,0,1,.172,64.582Q0,62.312,0,60a60.353,60.353,0,0,1,.392-6.889Q.627,51.05,1,49.033a60.028,60.028,0,0,1,88.844-41.1q1.793,1.029,3.5,2.177c.245.164.49.331.732.5a.35.35,0,0,1,.054.037,60.283,60.283,0,0,1,15.115,15.069A59.73,59.73,0,0,1,120,60Z\",\n fill: \"url(#linear-gradient)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2-2\",\n \"data-name\": \"Group 2\",\n clipPath: \"url(#clip-path)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Combined_Shape\",\n \"data-name\": \"Combined Shape\",\n d: \"M0,44A44,44,0,1,1,79.377,70.167L86.069,77.6,78.638,84.29,72.525,77.5A44,44,0,0,1,0,44Z\",\n transform: \"translate(-13 -5)\",\n fill: \"#dda319\",\n opacity: 0.157\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_2-3\",\n \"data-name\": \"Group 2\",\n transform: \"translate(62 65)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path\",\n d: \"M48,38.455h0A9.663,9.663,0,0,1,38.455,48h0a9.9,9.9,0,0,1-7.091-3L.818,11.727a2.636,2.636,0,0,1,0-3.818L7.909.818a2.636,2.636,0,0,1,3.818,0L45,31.637A9.3,9.3,0,0,1,48,38.455Z\",\n fill: \"#b06328\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-2\",\n \"data-name\": \"Path\",\n d: \"M43.363,22.773l-1.636-1.364a9.531,9.531,0,0,1,2.182,6h0c0,3.545-4.364,4.909-6.818,2.455L8.454,1.227a3.954,3.954,0,0,0-5.727,0L0,3.954,29.727,35.863a10.947,10.947,0,0,0,6,3.273,10.094,10.094,0,0,0,7.909-2.727A10.094,10.094,0,0,0,46.363,28.5C46.363,26.318,45,24.409,43.363,22.773Z\",\n transform: \"translate(1.364 8.591)\",\n fill: \"#a35425\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-3\",\n \"data-name\": \"Path\",\n d: \"M8.318,9.409a1.64,1.64,0,0,1-1.091-.273L.409,2.318a1.318,1.318,0,0,1,0-1.909,1.318,1.318,0,0,1,1.909,0L9.136,7.227a1.318,1.318,0,0,1,0,1.909C9.136,9.409,8.591,9.409,8.318,9.409Z\",\n transform: \"translate(8.318 3.137)\",\n fill: \"#c97629\"\n }))))), /*#__PURE__*/React.createElement(\"g\", {\n id: \"search_11_\",\n \"data-name\": \"search (11)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n width: 7.636,\n height: 11.454,\n transform: \"translate(79.021 73.623) rotate(135)\",\n fill: \"#f0f0f6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-4\",\n \"data-name\": \"Path\",\n d: \"M9.546,9.545l1.364,1.364,2.727-2.727L5.455,0,0,5.455,4.091,9.545h0A3.644,3.644,0,0,1,9.546,9.545Z\",\n transform: \"translate(65.454 65.455)\",\n fill: \"#d8d8eb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Shape\",\n d: \"M0,40.909a40.909,40.909,0,1,1,40.909,40.91A40.854,40.854,0,0,1,0,40.909Z\",\n fill: \"url(#linear-gradient-3)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n cx: 32.727,\n cy: 32.727,\n r: 32.727,\n transform: \"translate(8.182 8.182)\",\n fill: \"url(#linear-gradient-4)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-5\",\n \"data-name\": \"Path\",\n d: \"M8.207,28.27A23.148,23.148,0,0,1,28.116,8.361h.273c4.636-.545,4.909-7.091.545-7.909A27.478,27.478,0,0,0,20.752.179,24.3,24.3,0,0,0,.3,20.634,20.514,20.514,0,0,0,.57,28.815c.818,4.636,7.364,4.091,7.909-.545C8.207,28.543,8.207,28.27,8.207,28.27Z\",\n transform: \"translate(16.612 16.457)\",\n fill: \"rgba(255,255,255,0.49)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-6\",\n \"data-name\": \"Path\",\n d: \"M2.727,35.454A32.823,32.823,0,0,1,35.454,2.727a34.172,34.172,0,0,1,21.818,8.182A32.354,32.354,0,0,0,32.727,0,32.823,32.823,0,0,0,0,32.727,33.326,33.326,0,0,0,10.909,57.273,34.172,34.172,0,0,1,2.727,35.454Z\",\n transform: \"translate(8.182 8.182)\",\n fill: \"#dbdbeb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-7\",\n \"data-name\": \"Path\",\n d: \"M1.584,34.108c0-18,14.95-32.243,32.95-32.243,8.455,0,16.74,4.135,22.74,9.044A32.354,32.354,0,0,0,32.727,0,32.823,32.823,0,0,0,0,32.727,33.326,33.326,0,0,0,10.909,57.273C6,51.273,1.584,42.563,1.584,34.108Z\",\n transform: \"translate(79.4 68.44) rotate(171)\",\n fill: \"#fff\",\n opacity: 0.813\n }))), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1, 0, 0, 1, 219, 221)\",\n filter: \"url(#star)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"star-2\",\n \"data-name\": \"star\",\n d: \"M24.118,8.671a1.269,1.269,0,0,0-1.105-.824l-6.981-.592-2.759-6.03a1.323,1.323,0,0,0-2.365,0L8.15,7.256l-6.982.592a1.273,1.273,0,0,0-1.105.824A1.151,1.151,0,0,0,.438,9.947l5.277,4.32-1.556,6.4a1.161,1.161,0,0,0,.5,1.239,1.359,1.359,0,0,0,1.413.058l6.019-3.36,6.018,3.36a1.361,1.361,0,0,0,1.414-.058,1.161,1.161,0,0,0,.5-1.239l-1.556-6.4,5.277-4.32A1.151,1.151,0,0,0,24.118,8.671ZM12.207,18.537\",\n transform: \"translate(28 28.5)\",\n fill: \"#f7c458\",\n stroke: \"#f7c458\",\n strokeWidth: 1\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMagnifyingGlassWithStar);\nexport default __webpack_public_path__ + \"static/media/MagnifyingGlassWithStar.45ad49cf.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as MagnifyingGlassWithStar } from '../utils/icons/MagnifyingGlassWithStar.svg';\nimport SectionInterspace from '../utils/SectionInterspace';\n\nconst Wrapper = styled.div`\n text-align: center;\n padding: 50px;\n`;\n\nconst Title = styled.p`\n font-size: 17px;\n`;\n\nexport const NoFavoriteOffersMessage = () => {\n return (\n \n \n \n Brak zapisanych ofert.\n

\n Przejdź do wyszukiwarki i kliknij w gwiazdkę przy wybranej\n ofercie aby zapisać nieruchomość.\n

\n
\n );\n};\n","import React, { Dispatch, useState } from 'react';\nimport { OffersList } from '../search/offersList/OffersList';\nimport { NoFavoriteOffersMessage } from './NoFavoriteOffersMessage';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { FavoriteOffersSearchCriteria } from './FavoriteOffersSearchCriteria';\nimport { Paging } from '../search/Paging';\nimport { ReduxState } from '../../redux/configureStore';\nimport {\n fetchFlaggedOffers,\n SearchFlaggedOffersDto\n} from '../../redux/actions/searchActions';\nimport { connect, ConnectedProps } from 'react-redux';\n\nexport interface FavoriteOffersListProps extends PropsFromRedux {\n favoriteOffersSearchCriteria: FavoriteOffersSearchCriteria;\n}\n\nconst FavoriteOffersList: React.FC = ({\n offers,\n areOffersLoading,\n totalHits,\n fetchFlaggedOffers,\n favoriteOffersSearchCriteria\n}) => {\n const pageSize = 50;\n const [currentPage, setCurrentPage] = useState(1);\n\n const fetchOffers = async (pageNumber: number) => {\n setCurrentPage(pageNumber);\n const searchFrom = (pageNumber - 1) * pageSize;\n fetchFlaggedOffers({\n searchFrom,\n searchSize: pageSize,\n propertyType: favoriteOffersSearchCriteria.propertyType,\n city: favoriteOffersSearchCriteria.city,\n offerType: favoriteOffersSearchCriteria.offerType,\n offerFlag: favoriteOffersSearchCriteria.offerFlag\n });\n };\n\n useAsyncData(\n async () => {\n await fetchOffers(1);\n },\n undefined,\n undefined,\n [favoriteOffersSearchCriteria]\n );\n\n const offersPageChanged = async (newPageNumber: number) => {\n await fetchOffers(newPageNumber);\n };\n\n const totalHitsText = `Znaleziono ${totalHits} oznaczeń`;\n\n return (\n <>\n }\n totalHits={totalHits}\n totalHitsText={totalHitsText}\n />\n {!areOffersLoading && totalHits != null && totalHits > 0 && (\n \n )}\n \n );\n};\n\nconst mapState = (state: ReduxState) => ({\n offers: state.searchResult.offers,\n areOffersLoading: state.searchResult.areOffersLoading,\n totalHits: state.searchResult.totalHits\n});\n\nconst mapDispatch = (dispatch: Dispatch) => ({\n fetchFlaggedOffers: (dto: SearchFlaggedOffersDto) =>\n dispatch(fetchFlaggedOffers(dto))\n});\n\nconst connector = connect(mapState, mapDispatch);\ntype PropsFromRedux = ConnectedProps;\n\nexport default connector(FavoriteOffersList);\n","import React from 'react';\nimport styled from 'styled-components';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport { colors } from '../theme/colors';\nimport { OfferFlag } from '../OfferFlag';\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n button:first-child {\n border-radius: 6px 0px 0px 6px;\n border-right: 0px;\n }\n button:last-child {\n border-radius: 0px 6px 6px 0px;\n border-left: 0px;\n }\n`;\n\nconst IconButton = styled.button<{ selected: boolean }>`\n width: 100%;\n height: 42px;\n background-color: ${({ selected }) =>\n selected ? colors.gray : 'transparent'};\n padding: 10px 0px;\n border: 1px solid ${colors.darkGray};\n`;\n\nconst StyledRsuiteIcon = styled(RsuiteIcon)<{ color: string }>`\n color: ${({ color }) => color};\n font-size: 18px;\n`;\n\nexport interface FlagSelectProps {\n selectedValue: OfferFlag | undefined;\n onSelect: (value: OfferFlag | undefined) => void;\n}\n\nexport const FlagSelect: React.FC = ({\n selectedValue,\n onSelect\n}) => {\n const buttonClicked = (offerFlag: OfferFlag) => {\n if (selectedValue === offerFlag) {\n onSelect(undefined);\n } else {\n onSelect(offerFlag);\n }\n };\n\n return (\n \n buttonClicked(OfferFlag.Blue)}\n >\n \n \n\n buttonClicked(OfferFlag.Yellow)}\n >\n \n \n\n buttonClicked(OfferFlag.Red)}\n >\n \n \n \n );\n};\n","import React from 'react';\nimport { getDisplayedOfferType, OfferType } from '../OfferType';\nimport { colors } from '../theme/colors';\nimport { City, getDisplayedCity } from '../City';\nimport { FlagSelect } from './FlagSelect';\nimport { OfferFlag } from '../OfferFlag';\nimport MainEnumSelect from '../utils/searchCriteria/MainEnumSelect';\nimport { FavoriteOffersSearchCriteria } from './FavoriteOffersSearchCriteria';\nimport ColumnWithoutPadding from '../utils/ColumnWithoutPadding';\nimport RowWithoutMargin from '../utils/RowWithoutMargin';\nimport { SmallMargin } from '../utils/Margin';\nimport { getDisplayedPropertyType, PropertyType } from '../PropertyType';\n\nexport interface FavoriteOffersSearchCriteriaFormProps {\n searchCriteria: FavoriteOffersSearchCriteria;\n onChange: (value: FavoriteOffersSearchCriteria) => void;\n}\n\nexport const FavoriteOffersSearchCriteriaForm: React.FC<\n FavoriteOffersSearchCriteriaFormProps\n> = ({ searchCriteria, onChange }) => {\n return (\n \n \n \n \n onChange({\n ...searchCriteria,\n offerFlag: value\n })\n }\n />\n \n \n \n \n \n onChange({\n ...searchCriteria,\n propertyType: value\n })\n }\n primaryColor={colors.darkGray}\n secondaryColor={colors.lightGray}\n />\n \n \n \n \n \n onChange({\n ...searchCriteria,\n city: value\n })\n }\n primaryColor={colors.darkGray}\n secondaryColor={colors.lightGray}\n />\n \n \n \n \n \n onChange({\n ...searchCriteria,\n offerType: value\n })\n }\n primaryColor={colors.darkGray}\n secondaryColor={colors.lightGray}\n />\n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { Page } from '../Page';\nimport { useCurrentPage } from '../../hooks/useCurrentPage';\nimport FavoriteOffersList from './FavoriteOffersList';\nimport {\n saveFavoriteOffersSearchCriteriaInSessionStorage,\n getFavoriteOffersSearchCriteriaFromSessionStorage\n} from './sessionStorageFunctions';\nimport { FavoriteOffersSearchCriteria } from './FavoriteOffersSearchCriteria';\nimport { FavoriteOffersSearchCriteriaForm } from './FavoriteOffersSearchCriteriaForm';\nimport { getDefaultSearchConfiguration } from '../DefaultSearchConfiguration';\n\nexport const FavoriteOffers: React.FC = () => {\n const cachedSearchCriteria =\n getFavoriteOffersSearchCriteriaFromSessionStorage();\n\n useCurrentPage(Page.FavoriteOffers);\n\n const [searchCriteria, setSearchCriteria] =\n useState(\n cachedSearchCriteria != null\n ? cachedSearchCriteria\n : {\n city: getDefaultSearchConfiguration().city,\n offerType: getDefaultSearchConfiguration().offerType,\n propertyType: getDefaultSearchConfiguration().propertyType\n }\n );\n\n const searchCriteriaUpdated = (\n newSearchCriteria: FavoriteOffersSearchCriteria\n ) => {\n setSearchCriteria(newSearchCriteria);\n saveFavoriteOffersSearchCriteriaInSessionStorage(newSearchCriteria);\n };\n\n return (\n
\n \n

Zapisane oferty

\n

\n Tutaj znajdują się wszystkie oferty które zostały przez\n Ciebie zapisane\n

\n \n \n
\n \n\n \n \n
\n );\n};\n","import React from 'react';\nimport { getDisplayedEnumArray } from '../../helpers';\nimport CheckboxSelectPopup from './CheckboxSelectPopup';\nimport MainSelectableButton from './MainSelectableButton';\n\nconst MainCheckboxSelect = ({\n propertyName,\n enumType,\n emptyLabel,\n getDisplayedName,\n selectedValues,\n onSelect,\n primaryColor,\n secondaryColor\n}) => {\n const hasValue = selectedValues.length > 0;\n\n const displayedLabel = hasValue\n ? propertyName +\n ': ' +\n getDisplayedEnumArray(selectedValues, getDisplayedName)\n : emptyLabel;\n\n return (\n \n \n \n );\n};\n\nexport default MainCheckboxSelect;\n","import React from 'react';\nimport apiCaller from '../ApiCaller';\nimport { connect } from 'react-redux';\nimport * as statisticsActions from '../../redux/actions/statisticsActions';\nimport AutocompletePicker from '../utils/searchCriteria/autocompletePicker';\nimport { isValidNumber } from '../helpers';\nimport { Row, Col } from 'reactstrap';\nimport ColumnWithoutPadding from '../utils/ColumnWithoutPadding';\nimport RowWithoutMargin from '../utils/RowWithoutMargin';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport { SmallMargin } from '../utils/Margin';\nimport MainEnumSelect from '../utils/searchCriteria/MainEnumSelect';\nimport MainCheckboxSelect from '../utils/searchCriteria/MainCheckboxSelect';\nimport { City, getDisplayedCity } from '../City';\nimport { RoomsNumber, getDisplayedRoomsNumber } from '../RoomsNumber';\nimport { saveStatisticsSearchCriteriaInSessionStorage } from './sessionStorageFunctions';\n\nconst SearchIcon = styled(RsuiteIcon)`\n margin-right: 10px;\n`;\n\nconst SearchButton = styled(StyledButtonV2)`\n font-size: 16px;\n height: 42px;\n`;\n\nclass StatisticsSearchCriteriaForm extends React.Component {\n constructor(props) {\n super(props);\n\n const { city, roomsNumbers, districts } = props;\n\n this.state = {\n tempSearchCriteria: {\n city,\n roomsNumbers,\n districts\n },\n availableDistricts: [],\n isLoadingAvailableDistricts: true,\n isSearchCriteriaDirty: false\n };\n\n this.onSearch = this.onSearch.bind(this);\n this.onCityChange = this.onCityChange.bind(this);\n this.onDistrictsChange = this.onDistrictsChange.bind(this);\n this.onRoomsNumbersChange = this.onRoomsNumbersChange.bind(this);\n this.updateValue = this.updateValue.bind(this);\n }\n\n componentDidMount() {\n this.loadAvailableDistricts(this.props.city);\n }\n\n async loadAvailableDistricts(city) {\n this.setState({ isLoadingAvailableDistricts: true });\n\n const availableDistricts =\n (await apiCaller.get(`api/districts/${city}`)) || [];\n\n this.setState({\n availableDistricts,\n isLoadingAvailableDistricts: false\n });\n }\n\n onSearch(event) {\n event.preventDefault();\n\n this.props.updateSearchCriteria(this.state.tempSearchCriteria);\n saveStatisticsSearchCriteriaInSessionStorage(\n this.state.tempSearchCriteria\n );\n\n this.props.fetchAveragePrice();\n this.props.fetchReturnOfInvestment();\n this.props.fetchCurrentMarketSaturation();\n this.props.fetchMarketSaturation();\n\n this.setState({ isSearchCriteriaDirty: false });\n }\n\n onCityChange(event) {\n this.onDistrictsChange([]);\n this.loadAvailableDistricts(event);\n this.updateNumericValue(event, 'city');\n }\n\n onDistrictsChange(districts) {\n this.updateValue(districts, 'districts');\n }\n\n onRoomsNumbersChange(roomsNumbers) {\n this.updateValue(roomsNumbers, 'roomsNumbers');\n }\n\n updateNumericValue(newValue, fieldName) {\n let parsedValue = null;\n if (isValidNumber(newValue)) {\n parsedValue = parseInt(newValue);\n }\n\n this.updateValue(parsedValue, fieldName);\n }\n\n updateValue(newValue, fieldName) {\n if (this.state.tempSearchCriteria[fieldName] == newValue) {\n return;\n }\n\n this.setState((prevState) => ({\n tempSearchCriteria: {\n ...prevState.tempSearchCriteria,\n [fieldName]: newValue\n },\n isSearchCriteriaDirty: true\n }));\n }\n\n render() {\n const {\n availableDistricts,\n isLoadingAvailableDistricts,\n isSearchCriteriaDirty\n } = this.state;\n\n const { city, districts, roomsNumbers } = this.state.tempSearchCriteria;\n\n return (\n
\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n Wyszukaj\n \n \n \n \n \n \n
\n );\n }\n\n displayProperty(propertyName, displayedValue) {\n if (displayedValue) {\n return propertyName + ': ' + displayedValue;\n }\n\n return propertyName;\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n ...state.statistics.searchCriteria\n };\n}\n\nconst mapDispatchToProps = {\n fetchAveragePrice: statisticsActions.fetchAveragePrice,\n fetchReturnOfInvestment: statisticsActions.fetchReturnOfInvestment,\n fetchCurrentMarketSaturation:\n statisticsActions.fetchCurrentMarketSaturation,\n fetchMarketSaturation: statisticsActions.fetchMarketSaturation,\n updateSearchCriteria: statisticsActions.updateSearchCriteria\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(StatisticsSearchCriteriaForm);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Container, Row, Col } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport SearchCriteriaForm from './StatisticsSearchCriteriaForm';\nimport 'react-vis/dist/style.css';\nimport AveragePriceChart from './charts/averagePrice/AveragePriceChart';\nimport ReturnOfInvestmentChart from './charts/ReturnOfInvestmentChart';\nimport CurrentMarketSaturationChart from './charts/marketSaturation/CurrentMarketSaturationChart';\nimport MarketSaturationChart from './charts/marketSaturation/MarketSaturationChart';\nimport AveragePriceNbpChartSwitch from './charts/nbpAveragePrice/NbpAveragePriceChartSwitch';\nimport * as navigationActions from '../../redux/actions/navigationActions';\nimport { bindActionCreators } from 'redux';\nimport { Page } from '../Page';\nimport styled from 'styled-components';\n\nconst AboutChart = styled.div`\n font-size: 1.1em;\n margin-bottom: 20px;\n`;\n\nclass Statistics extends React.Component {\n async componentDidMount() {\n this.props.navigationActions.setCurrentPage(Page.Statistics);\n }\n\n render() {\n return (\n \n

Statystyki

\n \n \n \n

Średnia cena

\n \n \n \n \n \n \n {/*\n //todo: enable it once we have historic data\n \n \n \n \n \n \n */}\n \n

Stopa zwrotu

\n Średni roczny zwrot z inwestycji\n\n \n \n \n \n \n \n \n

Aktualne nasycenie rynku

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

Nasycenie rynku w czasie

\n \n \n \n \n \n \n
\n );\n }\n}\n\nfunction mapStateToProps() {\n return {};\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n navigationActions: bindActionCreators(navigationActions, dispatch)\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Statistics);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../../theme/colors';\nimport AveragePriceNbpChart from './NbpAveragePriceChart';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport { ChartCard } from '../components/ChartCardComponents';\n\nconst ShowNbpDataButton = styled.div`\n padding: 5px;\n margin-bottom: 30px;\n text-align: center;\n font-weight: bold;\n color: ${colors.slightlyDarkGray};\n cursor: pointer;\n > * {\n margin: 0px 7px;\n }\n`;\n\nconst AveragePriceNbpChartSwitch = () => {\n const [showNbpChart, setShowNbpCahrt] = useState(false);\n const text = showNbpChart\n ? 'Ukryj dane NBP'\n : 'Pokaż dane NBP dla całego miasta';\n const icon = showNbpChart ? 'angle-double-up' : 'angle-double-down';\n\n return (\n \n setShowNbpCahrt(!showNbpChart)}>\n {text}\n \n \n {showNbpChart && }\n \n );\n};\n\nexport default AveragePriceNbpChartSwitch;\n","import apiCaller from '../ApiCaller';\n\nexport enum SubscriptionLevel {\n FreeFilters = 0,\n PriceMapPro = 100\n}\n\ninterface UserInfoDto {\n email: string;\n firstName: string | null;\n lastName: string | null;\n acceptedTermsOfService: boolean;\n subscriptionLevel: SubscriptionLevel;\n}\n\ninterface CurrentUserRoleDto {\n role: string;\n}\n\nexport interface AgencyInfoDto {\n name: string;\n otherMembersEmails: string[];\n}\n\nconst urlBase = 'api/user';\n\nexport const getCurrentUserInfo = async (): Promise => {\n return await apiCaller.get(urlBase);\n};\n\nexport const getCurrentUserRole =\n async (): Promise => {\n return await apiCaller.get(`${urlBase}/getRole`);\n };\n\nexport const getAgencyInfo = async (): Promise => {\n const result = await apiCaller.get(`${urlBase}/agency`);\n if (result?.name != null) return result; // result.name beacuse for some reason apiCaller reads returns null as string.Empty\n return null;\n};\n\nexport const acceptTermsOfService = () =>\n apiCaller.post(`${urlBase}/accept-terms-of-service`, {});\n","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgEmailSent(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"illustrations_flying_ship\",\n \"data-name\": \"illustrations/flying ship\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 209,\n height: 120,\n viewBox: \"0 0 209 120\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"illustrations_flying_ship-2\",\n \"data-name\": \"illustrations/flying ship\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_6\",\n \"data-name\": \"Group 6\",\n transform: \"translate(87 1)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path\",\n d: \"M110.6,19.569a20.851,20.851,0,0,0-40.337-6.036A14.082,14.082,0,0,0,56.41,26.4H44.81a9.741,9.741,0,0,0-17.964-6.2A9.739,9.739,0,0,0,11.9,26.4H7.614a7.614,7.614,0,0,0,0,15.228s99.255.07,102.6.07a11.067,11.067,0,0,0,.388-22.127Z\",\n transform: \"translate(0 0.002)\",\n fill: \"#f0f2fb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-2\",\n \"data-name\": \"Path\",\n d: \"M49.634,30.627A11.072,11.072,0,0,1,38.567,41.7c-.462,0-2.753,0-6.355,0,.012-.168.015-.333.015-.5a11.068,11.068,0,0,0-10.681-11.06A20.852,20.852,0,0,0,.735,10.565c-.244,0-.49,0-.735.012a20.848,20.848,0,0,1,38.951,9A11.063,11.063,0,0,1,49.634,30.627Z\",\n transform: \"translate(71.649)\",\n fill: \"#dae1f5\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"sent\",\n transform: \"translate(16)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-3\",\n \"data-name\": \"Path\",\n d: \"M22,0,0,19.918V0Z\",\n transform: \"translate(64.067 83.4)\",\n fill: \"#084fd5\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-4\",\n \"data-name\": \"Path\",\n d: \"M99.9,0,23.964,83.4v19.918L0,83.4Z\",\n transform: \"translate(40.103)\",\n fill: \"#2b6dea\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-5\",\n \"data-name\": \"Path\",\n d: \"M139.947,0,40.05,83.4H.963a.962.962,0,0,1-.486-1.791Z\",\n transform: \"translate(0.053)\",\n fill: \"#4d8bff\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-6\",\n \"data-name\": \"Path\",\n d: \"M75.933,0,57.492,82.363A1.326,1.326,0,0,1,56.2,83.4H0Z\",\n transform: \"translate(64.067)\",\n fill: \"#4d8bff\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_5\",\n \"data-name\": \"Group 5\",\n transform: \"translate(0 9)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-7\",\n \"data-name\": \"Path\",\n d: \"M49.719,15.656H42.643A11.869,11.869,0,0,0,20.31,7.625,8.76,8.76,0,0,0,8.046,15.656H6.851a6.853,6.853,0,0,0,0,13.705s24.925.01,42.866.021a6.863,6.863,0,1,0,0-13.726Z\",\n transform: \"translate(0 0.001)\",\n fill: \"#f0f2fb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-8\",\n \"data-name\": \"Path\",\n d: \"M35.259,22.521a6.864,6.864,0,0,1-6.866,6.862c-.737,0-1.49,0-2.249,0a6.538,6.538,0,0,0,.13-1.32A6.864,6.864,0,0,0,19.407,21.2H12.332a11.792,11.792,0,0,0,.622-3.786A11.87,11.87,0,0,0,1.085,5.543C.72,5.543.358,5.56,0,5.593A11.869,11.869,0,0,1,21.322,15.656H28.4a6.864,6.864,0,0,1,6.862,6.865Z\",\n transform: \"translate(21.323)\",\n fill: \"#dae1f5\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_5_Copy\",\n \"data-name\": \"Group 5 Copy\",\n transform: \"translate(120 80)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-9\",\n \"data-name\": \"Path\",\n d: \"M66.292,20.874H56.858A15.826,15.826,0,0,0,27.079,10.166,11.68,11.68,0,0,0,10.728,20.874H9.135a9.137,9.137,0,0,0,0,18.274s33.234.013,57.155.027a9.151,9.151,0,1,0,0-18.3Z\",\n transform: \"translate(0 0.002)\",\n fill: \"#f0f2fb\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path-10\",\n \"data-name\": \"Path\",\n d: \"M47.012,30.027a9.152,9.152,0,0,1-9.155,9.15c-.983,0-1.987,0-3,0a8.717,8.717,0,0,0,.174-1.76,9.152,9.152,0,0,0-9.155-9.15H16.443a15.723,15.723,0,0,0,.829-5.048A15.827,15.827,0,0,0,1.447,7.39c-.487,0-.969.024-1.447.068A15.826,15.826,0,0,1,28.429,20.874h9.434a9.152,9.152,0,0,1,9.15,9.153Z\",\n transform: \"translate(28.431)\",\n fill: \"#dae1f5\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmailSent);\nexport default __webpack_public_path__ + \"static/media/EmailSent.1a08bfcd.svg\";\nexport { ForwardRef as ReactComponent };","import { colors } from './../theme/colors';\nimport styled from 'styled-components';\n\nexport const Card = styled.div`\n background-color: ${colors.lightGray};\n border-radius: 6px;\n padding: 40px;\n width: fit-content;\n min-width: 400px;\n margin: 0 auto;\n`;\n\nexport const TitleAboveCard = styled.div`\n margin: 0 auto;\n margin-bottom: 20px;\n\n display: flex;\n flex-wrap: wrap;\n font-size: 24px;\n font-weight: 600;\n word-break: break-word;\n overflow-wrap: break-word;\n justify-content: center;\n align-items: center;\n text-align: center;\n`;\n\nexport const Label = styled.div`\n font-weight: 600;\n color: ${colors.slightlyDarkGray};\n margin-bottom: 5px;\n`;\n\nexport const Value = styled.div`\n font-weight: 600;\n word-break: break-word;\n overflow-wrap: break-word;\n`;\n","import React from 'react';\nimport { Card, TitleAboveCard, Label, Value } from './Layout';\nimport { AgencyInfoDto } from './api';\nimport styled from 'styled-components';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { HoverableIcon } from '../utils/hoverableIcon';\nimport { colors } from '../theme/colors';\n\nconst AgencyName = styled.div`\n font-size: 24px;\n`;\n\nconst OtherEmails = styled.div`\n display: grid;\n gap: 15px;\n`;\n\nconst TitleImage = styled.div`\n margin-right: 30px;\n`;\n\nexport interface AgencyInfoProps {\n agencyInfo: AgencyInfoDto;\n}\n\nexport const AgencyInfo: React.FC = ({ agencyInfo }) => {\n return (\n <>\n \n \n \n \n
Mój zespół
\n
\n \n {agencyInfo.name}\n \n \n \n {agencyInfo.otherMembersEmails.map((x) => (\n {x}\n ))}\n \n \n \n );\n};\n","import React from 'react';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { PageContainer } from './PageLayout';\nimport apiCaller from '../ApiCaller';\nimport { Page } from '../Page';\nimport { useCurrentPage } from '../../hooks/useCurrentPage';\nimport { Loader } from '../utils/loader';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { getCurrentUserRole, getAgencyInfo, getCurrentUserInfo } from './api';\nimport { AgencyInfo } from './AgencyInfo';\nimport { Card, TitleAboveCard, Label, Value } from './Layout';\n\nconst ChangePasswordButton = styled(StyledButtonV2)`\n margin-top: 10px;\n width: fit-content;\n font-weight: 600;\n`;\n\nconst ManagementButtons = styled.div`\n width: 400px;\n margin: 0 auto;\n`;\n\nexport const MyAccount = () => {\n useCurrentPage(Page.MyAccount);\n const [userInfo, userInfoLoading] = useAsyncData(getCurrentUserInfo, null);\n const [agencyInfo, agencyInfoLoading] = useAsyncData(getAgencyInfo, null);\n const [currentUserRole, currentUserRoleLoading] = useAsyncData(\n getCurrentUserRole,\n null\n );\n\n if (\n userInfoLoading ||\n userInfo == null ||\n agencyInfoLoading ||\n currentUserRoleLoading\n ) {\n return ;\n }\n\n return (\n \n \n
\n {userInfo.firstName} {userInfo.lastName}\n
\n
\n \n \n \n {userInfo.firstName} {userInfo.lastName}\n \n \n\n \n {userInfo.email}\n \n\n \n ●●●●●●●●●●●●\n \n\n \n apiCaller.post('api/user/request-password-change', {})\n }\n href=\"/password-change-requested\"\n >\n Zmień hasło\n \n \n\n {agencyInfo != null && (\n <>\n \n \n \n )}\n\n \n {(currentUserRole?.role === 'employee' ||\n currentUserRole?.role === 'admin') && (\n <>\n \n \n Przejdź do panelu zarządzania\n \n \n )}\n {currentUserRole?.role === 'admin' && (\n <>\n \n \n Przejdź do panelu administracyjnego\n \n \n )}\n \n
\n );\n};\n","import React from 'react';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { ReactComponent as EmailSent } from '../utils/icons/EmailSent.svg';\nimport {\n PageContainer,\n Header,\n Description,\n CenteredDiv,\n ActionButton,\n CenteredText\n} from './PageLayout';\nimport { Bold } from '../utils/bold';\nimport { MessageCard } from './MessageCard';\nimport { colors } from '../theme/colors';\nimport { Loader } from '../utils/loader';\nimport { getAuth } from 'firebase/auth';\n\nexport const PasswordChangeRequested = () => {\n const auth = getAuth();\n\n if (auth.currentUser == null) return ;\n\n return (\n \n \n \n \n \n \n\n \n
Link do zmiany hasła wysłany!
\n
\n \n\n \n \n Dla Twojego bezpieczeństwa wysłaliśmy link do zmiany\n hasła na adres email:{' '}\n {auth.currentUser.email}\n \n \n \n\n \n \n Powrót\n \n \n
\n
\n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as PriceMapLogo } from '../utils/icons/PriceMapLogoWithText.svg';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { colors } from '../theme/colors';\nimport StyledA from '../utils/styledA';\nimport { LinkWithoutStyling } from '../utils/LinkWithoutStyling';\nimport * as mediaQueries from '../theme/mediaQueries';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ButtonsContainer = styled.div`\n width: 100%;\n display: flex;\n justify-content: flex-end;\n`;\n\nconst StatisticsLink = styled(StyledA)`\n ${mediaQueries.mobileOnly} {\n display: none;\n }\n`;\n\nconst Button = styled(StyledButtonV2)`\n width: fit-content;\n font-size: 1.1em;\n`;\n\nconst LogOutButton = styled(StyledButtonV2)`\n width: fit-content;\n border: 2px solid ${colors.priceMapSalmon};\n border-radius: 30px;\n color: inherit;\n`;\n\nconst StyledPriceMapLogo = styled(PriceMapLogo)`\n height: 35px;\n min-width: 120px;\n`;\n\nexport const Topbar = () => {\n return (\n \n \n \n \n\n \n \n \n \n\n \n \n Wyloguj się\n \n \n \n \n );\n};\n","import { showAlert } from '../helpers';\n\nexport const showErrorAlertFromFilterResponseStatus = (\n status: string\n): void => {\n if (status === 'filtersWithEmailNotificationsLimitExceeded') {\n showAlert(\n 'Przykro nam, nie możesz mieć więcej niż 3 filtrów z włączonymi powiadomieniami email',\n 'error'\n );\n } else if (status === 'filterTooWide') {\n showAlert(\n 'Filtr jest zbyt obszerny aby móc dla niego wysyłać powiadomienia mailowe - aby móc je włączyć zawęź go tak by pokazywał poniżej 100 ofert w ciągu ostatnich 3 dni',\n 'error'\n );\n } else if (status === 'filtersLimitExceeded') {\n showAlert(\n 'Przykro nam, przekroczono maksymalny limit filtrów (10) :(',\n 'error'\n );\n } else {\n showAlert(\n 'Nie udało się zapisać filtra - jeśli błąd będzie się powtarzał prosimy skontaktuj się z nami',\n 'error'\n );\n }\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { ReactComponent as EmailSent } from '../utils/icons/EmailSent.svg';\n\nconst EmailInfo = styled.div`\n font-size: 1.2em;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n`;\n\nconst EmailIcon = styled(EmailSent)`\n width: 100%;\n`;\n\nconst Paragraph = styled.p`\n margin-top: 20px;\n text-align: center;\n`;\n\nexport const FilterCreatedMessage = () => {\n return (\n \n \n \n Gotowe! Teraz już tylko wyczekuj maili z ofertami! 🥳\n \n \n Od teraz będziesz dostawać powiadomienia o każdej nowej ofercie\n która się pojawi 🙌\n \n \n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Modal } from 'rsuite';\nimport { showGenericErrorAlert } from '../helpers';\nimport { addFilter } from './api';\nimport { showErrorAlertFromFilterResponseStatus } from './showErrorAlertFromFilterResponseStatus';\nimport { EditableFilterValues } from './FilterInputs';\nimport { FilterDto } from '../FilterDto';\nimport { FilterCreatedMessage } from './FilterCreatedMessage';\nimport { CreateFilterForm } from '../createFilterForm/CreateFilterForm';\nimport { City } from '../City';\nimport { OfferType } from '../OfferType';\nimport { colors } from '../theme/colors';\n\nexport const StyledModal = styled(Modal)`\n max-width: 95%;\n\n .rs-modal-content {\n padding: 0;\n }\n`;\n\ninterface AddFilterModalProps {\n showModal: boolean;\n onClose: () => void;\n addFilterToState: (filterDto: FilterDto) => void;\n}\n\nexport const AddFilterModal = ({\n showModal,\n onClose,\n addFilterToState\n}: AddFilterModalProps) => {\n const [city, setCity] = useState();\n const [offerType, setOfferType] = useState();\n const [step, setStep] = useState<'create' | 'success'>('create');\n const [isSaving, setIsSaving] = useState(false);\n\n const handleClose = () => {\n if (isSaving) return;\n\n setCity(undefined);\n setOfferType(undefined);\n setStep('create');\n onClose();\n };\n\n const onSubmit = async (filter: EditableFilterValues) => {\n if (isSaving) return;\n\n setIsSaving(true);\n try {\n const result = await addFilter({\n name: filter.name,\n city: filter.city,\n offerType: filter.offerType,\n districts: filter.chosenDistricts,\n includeEmptyDistrict: filter.includeEmptyDistrict,\n roomsNumbers: filter.roomsNumbers,\n priceFrom: filter.priceFrom,\n priceTo: filter.priceTo,\n includeEmptyPrice: filter.includeEmptyPrice,\n pricePerSquareMeterFrom: filter.pricePerSquareMeterFrom,\n pricePerSquareMeterTo: filter.pricePerSquareMeterTo,\n sizeFrom: filter.sizeFrom,\n sizeTo: filter.sizeTo,\n includeEmptySize: filter.includeEmptySize,\n market: filter.market,\n origin: filter.origin,\n additionalFilterProperties: filter.additionalFilterProperties\n });\n\n if (result.status === 'success') {\n addFilterToState(result.newFilter);\n setStep('success');\n } else {\n showErrorAlertFromFilterResponseStatus(result.status);\n }\n } catch {\n showGenericErrorAlert();\n }\n setIsSaving(false);\n };\n\n return (\n <>\n \n \n \n Nowy Filtr\n \n \n \n {step === 'create' && (\n {\n setCity(x.city);\n setOfferType(x.offerType);\n }}\n />\n )}\n {step === 'success' && (\n
\n \n
\n )}\n \n
\n \n );\n};\n","import React from 'react';\nimport { colors, gradients } from '../theme/colors';\nimport { useState } from 'react';\nimport { AddFilterModal } from './AddFilterModal';\nimport { FilterDto } from '../FilterDto';\nimport { Button } from 'rsuite';\n\ninterface AddFilterButtonProps {\n filtersCount: number;\n addFilterToState: (filterDto: FilterDto) => void;\n}\n\nexport const AddFilterButton = ({\n filtersCount,\n addFilterToState\n}: AddFilterButtonProps) => {\n const [showModal, setShowModal] = useState(false);\n\n const disabled = filtersCount >= 10;\n\n return (\n <>\n setShowModal(true)}\n dataTestId=\"create-filter-button\"\n disabled={disabled}\n >\n {disabled && 'Masz juz zbyt wiele filtrów'}\n {!disabled && 'Dodaj nowy filtr'}\n \n {\n setShowModal(false);\n }}\n addFilterToState={addFilterToState}\n />\n \n );\n};\n","import React from 'react';\nimport { SearchCriteriaDto } from '../../SearchCriteriaDto';\nimport styled from 'styled-components';\nimport { getDisplayedOfferType } from '../../OfferType';\nimport { getDisplayedCity } from '../../City';\nimport { getDisplayedRoomsNumber } from '../../RoomsNumber';\nimport { getDisplayedMarket } from '../../Market';\nimport { getDisplayedOfferOrigin } from '../../OfferOrigin';\nimport { colors } from '../../theme/colors';\nimport { getDisplayedAdditionalFilterProperty } from '../../AdditionalFilterProperty';\n\nconst PropertiesGrid = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n row-gap: 5px;\n column-gap: 13px;\n font-size: 16px;\n`;\nconst PropertyLabel = styled.div`\n text-align: right;\n color: ${colors.almostDarkGray};\n`;\nconst PropertyValue = styled.div``;\n\ninterface Props {\n searchCriteria: SearchCriteriaDto;\n}\nexport function FilterSearchCriteria({ searchCriteria }: Props) {\n const getDistrictsText = () => {\n if (searchCriteria.districts.length > 0) {\n return searchCriteria.districts.join(', ');\n } else {\n return 'Dowolna';\n }\n };\n\n const getRoomsNumbersText = () => {\n return searchCriteria.roomsNumbers\n .sort()\n .map((x) => getDisplayedRoomsNumber(x))\n .join(', ');\n };\n\n const getRangeText = (\n from: number | null,\n to: number | null,\n includeEmpty: boolean\n ) => {\n let text = '';\n if (from !== null) text += `od ${from}`;\n if (to !== null) text += ` do ${to}`;\n if (includeEmpty) text += ' lub brak podanej';\n return text;\n };\n\n return (\n \n Rodzaj transakcji\n \n {getDisplayedOfferType(searchCriteria.offerType)}\n \n\n Miasto\n \n {getDisplayedCity(searchCriteria.city)}\n \n\n Dzielnica\n {getDistrictsText()}\n\n {searchCriteria.roomsNumbers.length > 0 && (\n <>\n Liczba pokoi\n {getRoomsNumbersText()}\n \n )}\n\n {(searchCriteria.priceFrom || searchCriteria.priceTo) && (\n <>\n Cena\n \n {getRangeText(\n searchCriteria.priceFrom,\n searchCriteria.priceTo,\n searchCriteria.includeEmptyPrice\n )}\n \n \n )}\n\n {(searchCriteria.pricePerSquareMeterFrom ||\n searchCriteria.pricePerSquareMeterTo) && (\n <>\n Cena za m²\n \n {getRangeText(\n searchCriteria.pricePerSquareMeterFrom,\n searchCriteria.pricePerSquareMeterTo,\n searchCriteria.includeEmptyPricePerSquareMeter\n )}\n \n \n )}\n\n {(searchCriteria.sizeFrom || searchCriteria.sizeTo) && (\n <>\n Wielkość\n \n {getRangeText(\n searchCriteria.sizeFrom,\n searchCriteria.sizeTo,\n searchCriteria.includeEmptySize\n )}\n \n \n )}\n\n {searchCriteria.market !== null && (\n <>\n Rynek\n \n {getDisplayedMarket(searchCriteria.market)}\n \n \n )}\n\n {searchCriteria.origin !== null && (\n <>\n Pochodzenie\n \n {getDisplayedOfferOrigin(searchCriteria.origin)}\n \n \n )}\n\n {searchCriteria.additionalFilterProperties &&\n searchCriteria.additionalFilterProperties.length > 0 && (\n <>\n Dodatkowo\n \n {searchCriteria.additionalFilterProperties\n .map(getDisplayedAdditionalFilterProperty)\n .join(', ')}\n \n \n )}\n \n );\n}\n","import React, { useState } from 'react';\nimport { deleteFilter } from './api';\nimport { showAlert } from '../helpers';\nimport { Modal } from 'rsuite';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\n\nexport const Button = styled(StyledButtonV2)`\n width: fit-content;\n padding: 0 20px;\n border-radius: 30px;\n`;\n\nexport const StyledModal = styled(Modal)`\n max-width: 90%;\n font-size: 1rem;\n`;\n\ninterface Props {\n filterId: number;\n filterName: string;\n show: boolean;\n deleteFilterFromState: (filterId: number) => void;\n onClose: () => void;\n}\nexport function DeleteFilterModal({\n filterId,\n filterName,\n show,\n deleteFilterFromState,\n onClose\n}: Props) {\n const [isLoading, setIsLoading] = useState(false);\n\n const onDelete = async () => {\n setIsLoading(true);\n await deleteFilter(filterId);\n showAlert(`Usunięto filtr!`);\n deleteFilterFromState(filterId);\n setIsLoading(false);\n onClose();\n };\n\n return (\n \n \n \n Czy na pewno chcesz usunąć filtr {filterName}?\n \n \n \n \n Usuń\n \n \n \n );\n}\n","export const calculateDaysToDate = (toDate: Date | string) => {\n const oneDay = 24 * 60 * 60 * 1000;\n const today = new Date();\n const diffDays = Math.round(\n Math.abs(((today as any) - (new Date(toDate) as any)) / oneDay)\n );\n\n if (diffDays < 0) return 0;\n return diffDays;\n};\n","import React, { useState } from 'react';\nimport { FilterDto } from '../../FilterDto';\nimport styled from 'styled-components';\nimport { colors } from '../../theme/colors';\nimport { showAlert, showGenericErrorAlert } from '../../helpers';\nimport { showErrorAlertFromFilterResponseStatus } from '../showErrorAlertFromFilterResponseStatus';\nimport { extendFilterEmailNotifications, updateFilter } from '../api';\nimport { Button } from 'rsuite';\nimport { FilterSearchCriteria } from './FilterProperties';\nimport SectionInterspace from '../../utils/SectionInterspace';\nimport StyledButtonV2 from '../../utils/styledButtonV2';\nimport { DeleteFilterModal } from '../DeleteFilterModal';\nimport { calculateDaysToDate } from '../calculateDaysToDate';\nimport { Divider } from '../../utils/divider';\n\nconst Card = styled.div`\n background-color: #f8f8fa;\n border-radius: 15px;\n padding: 15px 20px 30px;\n max-width: 340px;\n width: 100%;\n font-size: 1.1em;\n display: flex;\n flex-direction: column;\n`;\n\nconst CardBody = styled.div`\n flex-grow: 1;\n`;\n\nconst CardFooter = styled.div``;\n\nconst Title = styled.span`\n font-size: 18px;\n font-weight: bold;\n color: ${colors.priceMapSalmon};\n`;\n\nconst Caption = styled.span`\n color: #8d8d8d;\n`;\n\nconst Centered = styled.div`\n width: fit-content;\n margin: 0 auto;\n`;\n\nconst ActionButton = styled(StyledButtonV2)`\n width: fit-content;\n font-weight: bold;\n border-radius: 50px;\n`;\n\ninterface Props {\n filter: FilterDto;\n deleteFilterFromState: (filterId: number) => void;\n editFilterFromState: (filterDto: FilterDto) => void;\n}\nexport function FilterCard({\n filter,\n deleteFilterFromState,\n editFilterFromState\n}: Props) {\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const onNotificationSwitchChange = async () => {\n setIsLoading(true);\n const newValue = !filter.sendEmailNotifications;\n try {\n const updateFilterResult = await updateFilter({\n id: filter.id,\n name: filter.name,\n city: filter.searchCriteria.city,\n offerType: filter.searchCriteria.offerType,\n districts: filter.searchCriteria.districts,\n includeEmptyDistrict:\n filter.searchCriteria.includeEmptyDistrict,\n roomsNumbers: filter.searchCriteria.roomsNumbers,\n priceFrom: filter.searchCriteria.priceFrom,\n priceTo: filter.searchCriteria.priceTo,\n includeEmptyPrice: filter.searchCriteria.includeEmptyPrice,\n pricePerSquareMeterFrom:\n filter.searchCriteria.pricePerSquareMeterFrom,\n pricePerSquareMeterTo:\n filter.searchCriteria.pricePerSquareMeterTo,\n sizeFrom: filter.searchCriteria.sizeFrom,\n sizeTo: filter.searchCriteria.sizeTo,\n includeEmptySize: filter.searchCriteria.includeEmptySize,\n market: filter.searchCriteria.market,\n origin: filter.searchCriteria.origin,\n additionalFilterProperties:\n filter.searchCriteria.additionalFilterProperties || [],\n sendEmailNotifications: newValue\n });\n if (updateFilterResult.status === 'success') {\n showAlert('Filtr zaktualizowany');\n editFilterFromState(updateFilterResult.updatedFilter);\n } else {\n showErrorAlertFromFilterResponseStatus(\n updateFilterResult.status\n );\n }\n } catch {\n showGenericErrorAlert();\n }\n setIsLoading(false);\n };\n\n const onNotificationsExtended = async () => {\n setIsLoading(true);\n try {\n const result = await extendFilterEmailNotifications(filter.id);\n editFilterFromState(result.updatedFilter);\n } catch {\n showGenericErrorAlert();\n }\n setIsLoading(false);\n };\n\n const activeForXMoreDays = filter.enabledUntil\n ? calculateDaysToDate(filter.enabledUntil)\n : undefined;\n\n return (\n <>\n \n \n \n setShowDeleteModal(true)}\n >\n Usuń\n \n
\n \n\n \n {filter.name}\n \n \n\n \n \n\n \n \n \n\n \n \n Powiadomienia email{' '}\n {filter.sendEmailNotifications\n ? 'włączone'\n : 'wyłączone'}\n \n \n {activeForXMoreDays && (\n \n \n Aktywne jeszcze {activeForXMoreDays} dni\n \n \n )}\n\n \n\n {!filter.sendEmailNotifications && (\n \n \n Włącz na 60 dni\n \n \n )}\n\n {filter.sendEmailNotifications && (\n \n \n Wyłącz\n \n\n {activeForXMoreDays &&\n activeForXMoreDays < 60 && (\n \n Przedłuż za darmo\n \n )}\n \n )}\n \n \n \n setShowDeleteModal(false)}\n deleteFilterFromState={deleteFilterFromState}\n />\n \n );\n}\n","import React from 'react';\nimport { FilterDto } from '../../FilterDto';\nimport styled from 'styled-components';\nimport { FilterCard } from './FilterCard';\nimport { Loader } from '../../utils/loader';\n\nconst FiltersContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n grid-auto-rows: 1fr;\n justify-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 20px;\n`;\n\nexport interface Props {\n filters: FilterDto[];\n areFiltersLoading: boolean;\n deleteFilterFromState: (filterId: number) => void;\n editFilterFromState: (filterDto: FilterDto) => void;\n}\n\nexport function FiltersList({\n filters,\n areFiltersLoading,\n deleteFilterFromState,\n editFilterFromState\n}: Props) {\n const sortedFilters = [...filters].sort(\n (a, b) =>\n new Date(b.creationDate).getTime() -\n new Date(a.creationDate).getTime()\n );\n\n return (\n \n {areFiltersLoading && }\n\n {sortedFilters.map((x) => (\n \n ))}\n \n );\n}\n","import styled from 'styled-components';\nimport { mobileOnly } from '../theme/mediaQueries';\n\nexport const PageContainer = styled.div`\n max-width: 1200px;\n box-sizing: content-box;\n margin: 0 auto;\n overflow-x: hidden;\n padding: 40px;\n ${mobileOnly} {\n padding: 20px;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Topbar } from './Topbar';\nimport { FilterDto } from '../FilterDto';\nimport { AddFilterButton } from './AddFilterButton';\nimport { getFilters } from './api';\nimport { FiltersList } from './filtersList/FiltersList';\nimport { showGenericErrorAlert } from '../helpers';\nimport { PageContainer } from './PageContainer';\n\nconst Heading = styled.div`\n font-size: 1.5em;\n margin-top: 50px;\n font-weight: bold;\n`;\n\nconst Info = styled.div`\n margin-top: 5px;\n font-size: 1.1em;\n`;\n\nconst FiltersContainer = styled.div`\n margin-top: 40px;\n`;\n\nexport const FiltersOnlyPage = () => {\n const [filters, setFilters] = useState([]);\n const [areFiltersLoading, setAreFiltersLoading] = useState(true);\n\n useEffect(() => {\n const fetchFilters = async () => {\n try {\n const data = await getFilters();\n setFilters(data);\n setAreFiltersLoading(false);\n } catch {\n showGenericErrorAlert();\n setAreFiltersLoading(false);\n }\n };\n fetchFilters();\n }, []);\n\n const addFilterToState = (filterDto: FilterDto) => {\n setFilters((prev) => [filterDto, ...prev]);\n };\n\n const deleteFilterFromState = (filterId: number) => {\n setFilters((prev) => prev.filter((x) => x.id !== filterId));\n };\n\n const editFilterFromState = (updatedFilter: FilterDto) => {\n setFilters((prev) => [\n ...prev.filter((x) => x.id !== updatedFilter.id),\n updatedFilter\n ]);\n };\n\n return (\n \n \n Moje filtry\n \n Tutaj znajdują się wszystkie filtry które zostały przez Ciebie\n utworzone\n \n\n \n\n \n \n \n \n );\n};\n","import apiCaller from '../ApiCaller';\n\nexport interface AgencyDto {\n agencyId: number;\n name: string;\n email: string;\n phoneNumber: string;\n}\n\nexport interface AgencyDetailsDto {\n agencyId: number;\n name: string;\n email: string;\n phoneNumber: string;\n isIndividualInvestor: boolean;\n members: AgencyMemberDto[];\n}\n\nexport interface AgencyMemberDto {\n userId: number;\n email: string;\n firstName: string;\n lastName: string | null;\n}\n\nexport interface AdminStatisticsDto {\n mostOfferFlagsForAgencies: KeyValuePair[];\n}\n\nexport interface KeyValuePair {\n key: string;\n value: number;\n}\n\nexport interface EmployeeDto {\n id: number;\n firstName: string;\n lastName: string;\n workEmail: string;\n workPhoneNumber: string;\n createdAt: Date;\n deletedAt: Date | null;\n canAddNewAgencies: boolean;\n canViewAllAgencies: boolean;\n}\n\nexport interface AddEmployeeDto {\n firstName: string;\n lastName: string;\n workEmail: string;\n workPhoneNumber: string;\n canAddNewAgencies: boolean;\n canViewAllAgencies: boolean;\n}\n\nconst urlBase = 'api/adminPanel';\nexport const getAllAgencies = async (): Promise =>\n await apiCaller.get(`${urlBase}/agencies`);\n\nexport const getAgencyDetails = async (\n agencyId: number\n): Promise =>\n await apiCaller.get(`${urlBase}/agencies/${agencyId}`);\n\nexport const getAdminStatistics = async (): Promise =>\n await apiCaller.get(`${urlBase}/statistics`);\n\nexport const getEmployees = async (): Promise =>\n await apiCaller.get(`${urlBase}/employees`);\n\nexport const addNewEmployee = async (dto: AddEmployeeDto): Promise =>\n await apiCaller.post(`${urlBase}/employees`, dto);\n\nexport const setCanAddNewAgencies = async (\n employeeId: number,\n canAddNewAgencies: boolean\n) =>\n await apiCaller.put(\n `${urlBase}/employees/${employeeId}/permissions/canAddNewAgencies`,\n canAddNewAgencies\n );\n\nexport const setCanViewAllAgencies = async (\n employeeId: number,\n canViewAllAgencies: boolean\n) =>\n await apiCaller.put(\n `${urlBase}/employees/${employeeId}/permissions/canViewAllAgencies`,\n canViewAllAgencies\n );\n\nexport const deactivateEmployee = async (employeeId: number) =>\n await apiCaller.put(`${urlBase}/employees/${employeeId}/deactivate`, {});\n\nexport const activateEmployee = async (employeeId: number) =>\n await apiCaller.put(`${urlBase}/employees/${employeeId}/activate`, {});\n","import styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport StyledA from '../utils/styledA';\n\nexport const Grid = styled.div``;\n\nexport const Row = styled(StyledA)`\n text-color: unset;\n text-decoration: none;\n display: flex;\n background-color: white;\n cursor: pointer;\n border-bottom: 1px solid lightgray;\n :hover {\n background-color: ${colors.lighterGray};\n }\n`;\nexport const Cell = styled.div<{ width: number }>`\n flex: 0;\n min-width: ${({ width }) => width}px;\n max-width: ${({ width }) => width}px;\n padding: 15px 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n background-color: transparent;\n`;\n","import React, { useState } from 'react';\nimport { Button, Input, Modal } from 'rsuite';\nimport apiCaller from '../ApiCaller';\n\nexport interface DeleteMemberButtonProps {\n agencyId: number;\n userId: number;\n memberEmail: string;\n}\n\nexport const DeleteMemberButton: React.FC = ({\n agencyId,\n userId,\n memberEmail\n}) => {\n const [showModal, setShowModal] = useState(false);\n const [confirmationText, setConfirmationText] = useState('');\n\n const closeModal = () => setShowModal(false);\n\n const deleteUser = async () => {\n await apiCaller.delete(\n `api/adminPanel/agencies/${agencyId}/members/${userId}`,\n null\n );\n\n window.location.reload();\n };\n\n return (\n <>\n \n \n \n \n Chcesz usunąć uytkownika {memberEmail} (id {userId})\n \n \n Usunięte zostaną tez jego zapisane oferty i filtry. Da\n sie to cofnąć, ale to nie jest takie łatwe więc lepiej\n nie usuwać niepotrzebnie. Aby kontynować wpisz jego\n email w pole ponizej\n
\n setConfirmationText(x)}\n />\n
\n
\n \n \n Ok\n \n \n \n
\n
\n \n );\n};\n","import React, { useState } from 'react';\nimport { Button, Input, Modal } from 'rsuite';\nimport apiCaller from '../ApiCaller';\n\nexport interface DeleteAgencyButtonProps {\n agencyId: number;\n agencyName: string;\n}\n\nexport const DeleteAgencyButton: React.FC = ({\n agencyId,\n agencyName\n}) => {\n const [showModal, setShowModal] = useState(false);\n const [confirmationText, setConfirmationText] = useState('');\n\n const closeModal = () => setShowModal(false);\n\n const deleteAgency = async () => {\n await apiCaller.delete(`api/adminPanel/agencies/${agencyId}`, null);\n\n window.location.replace('/admin-panel');\n };\n\n return (\n <>\n \n \n \n \n Chcesz usunąć agencję {agencyName} (id {agencyId})\n \n \n Da sie to cofnąć, ale to nie jest takie łatwe więc\n lepiej nie usuwać niepotrzebnie. Żeby to zrobić{' '}\n \n agencja musi mieć usuniętych wszystkich użytkownikow\n \n .\n
\n Żeby potwierdzić wpisz nazwe agencji w pole poniżej\n
\n setConfirmationText(x)}\n />\n
\n
\n \n \n Usuwaj\n \n \n \n
\n
\n \n );\n};\n","import React from 'react';\nimport { RouteComponentProps } from 'react-router';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { AgencyDetailsDto, getAgencyDetails } from './api';\nimport { Loader } from '../utils/loader';\nimport { Grid, Row, Cell } from './Grid';\nimport styled from 'styled-components';\nimport { DeleteMemberButton } from './DeleteMemberButton';\nimport { colors } from '../theme/colors';\nimport { DeleteAgencyButton } from './DeleteAgencyButton';\nimport { Badge } from 'rsuite';\n\nconst Header = styled.div`\n font-size: 46px;\n font-weight: bold;\n display: flex;\n`;\n\nconst AgencyNameTitle = styled.span`\n color: ${colors.greenyBlue};\n`;\n\nconst StyledBadge = styled(Badge)<{ isIndividualInvestor: boolean }>`\n padding: 2px 10px;\n border-radius: 10px;\n align-self: start;\n background-color: ${({ isIndividualInvestor }) =>\n isIndividualInvestor ? colors.coral : colors.facebookBlue};\n`;\n\nexport interface AgencyDetailsParams {\n agencyId?: string;\n}\n\nexport const AgencyDetails: React.FC<\n RouteComponentProps\n> = ({ match }) => {\n const agencyId = Number(match.params.agencyId);\n\n const [agencyDetails, agencyDetailsLoading] = useAsyncData<\n AgencyDetailsDto | undefined\n >(() => getAgencyDetails(agencyId), undefined);\n\n if (agencyDetailsLoading || agencyDetails == null) {\n return ;\n }\n\n const { name, email, phoneNumber, isIndividualInvestor, members } =\n agencyDetails;\n\n return (\n
\n \n

Panel administracyjny

\n \n\n
\n {name}\n \n
\n \n\n

Konta

\n \n {members.map((member) => (\n \n {member.userId}\n {member.email}\n {member.firstName}\n {member.lastName}\n \n \n \n \n ))}\n \n\n {members.length === 0 && (\n
\n
\n Ta agencja nie ma żadnych kont, możesz ją usunąć.\n
\n
\n \n
\n )}\n
\n
\n );\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport StyledButtonV2 from '../utils/styledButtonV2';\n\nexport const AdminPanel: React.FC = () => {\n return (\n
\n \n

Panel administracyjny

\n \n\n

Statystyki

\n \n Przejdź do statystyk\n \n \n\n

Pracowincy

\n \n Przejdź do listy pracowników\n \n \n\n

Agencje

\n \n Przejdź do panelu agencji\n \n
\n
\n );\n};\n","import React from 'react';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { LinkWithoutStyling } from '../utils/LinkWithoutStyling';\nimport { Loader } from '../utils/loader';\nimport { getAllAgencies } from './api';\nimport { Grid, Cell, Row } from './Grid';\n\nexport const AllAgenciesTable: React.FC = () => {\n const [allAgencies, areAlAgenciesLoading] = useAsyncData(\n getAllAgencies,\n []\n );\n\n if (areAlAgenciesLoading) return ;\n\n return (\n \n {allAgencies.map((agency) => (\n \n \n {agency.agencyId}\n {agency.name}\n {agency.email}\n {agency.phoneNumber}\n \n \n ))}\n \n );\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { AllAgenciesTable } from './AllAgenciesTable';\n\nexport const Agencies: React.FC = () => {\n return (\n
\n \n

Panel Administracyjny

\n \n

Agencje

\n \n

Lista agencji

\n \n
\n
\n );\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { AdminStatisticsDto, getAdminStatistics } from './api';\nimport { Cell, Grid, Row } from './Grid';\nimport { Loader } from '../utils/loader';\n\nexport const AdminStatistics: React.FC = () => {\n const [adminStatistics] = useAsyncData(\n getAdminStatistics,\n undefined\n );\n\n if (adminStatistics == null) return ;\n\n return (\n
\n \n

Panel Administracyjny

\n \n

Statystyki

\n \n\n
Najwięcej zapisanych ofert (tylko agencje)
\n \n \n {adminStatistics.mostOfferFlagsForAgencies.map((x) => (\n \n {x.key}\n {x.value}\n \n ))}\n \n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { Button } from 'rsuite';\nimport styled from 'styled-components';\nimport apiCaller from '../ApiCaller';\nimport { AddEmployeeDto, addNewEmployee } from './api';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\nconst Input = styled.input`\n margin-right: 20px;\n`;\nconst SubmitButton = styled(Button)`\n padding: 8px 20px;\n margin: 0px 15px;\n height: fit-content;\n display: inline;\n align-self: center;\n`;\nconst InputContainer = styled.div`\n display: grid;\n grid-template-rows: 1;\n margin-bottom: 10px;\n`;\n\nexport const AddEmployeeForm: React.FC = () => {\n const [employeeData, setEmployeeData] = useState({\n firstName: '',\n lastName: '',\n workEmail: '',\n workPhoneNumber: '',\n canAddNewAgencies: true,\n canViewAllAgencies: false\n });\n\n const isInvalid =\n employeeData.firstName.length < 3 ||\n employeeData.lastName.length < 3 ||\n employeeData.workEmail.length < 3 ||\n employeeData.workPhoneNumber.length < 3;\n\n const addEmployee = async () => {\n if (isInvalid) return;\n\n await addNewEmployee(employeeData);\n\n window.location.reload();\n };\n\n const firstNameChanged = (e: React.ChangeEvent) => {\n setEmployeeData({ ...employeeData, firstName: e.target.value });\n };\n const lastNameChanged = (e: React.ChangeEvent) => {\n setEmployeeData({ ...employeeData, lastName: e.target.value });\n };\n const workEmailChanged = (e: React.ChangeEvent) => {\n setEmployeeData({ ...employeeData, workEmail: e.target.value });\n };\n const workPhoneNumberChanged = (e: React.ChangeEvent) => {\n setEmployeeData({ ...employeeData, workPhoneNumber: e.target.value });\n };\n const canAddNewAgenciesChanged = (\n e: React.ChangeEvent\n ) => {\n setEmployeeData({\n ...employeeData,\n canAddNewAgencies: e.target.checked\n });\n };\n const canViewAllAgenciesChanged = (\n e: React.ChangeEvent\n ) => {\n setEmployeeData({\n ...employeeData,\n canViewAllAgencies: e.target.checked\n });\n };\n\n return (\n \n \n Imię:{' '}\n \n \n \n Nazwisko:{' '}\n \n \n \n Email słuzbowy:{' '}\n \n \n \n Telefon słuzbowy:{' '}\n \n \n \n Moze dodawac nowe agencje:{' '}\n \n \n \n Moze oglądać wszystkie agencje:{' '}\n \n \n\n \n Dodaj pracownika\n \n \n );\n};\n","import React, { useState } from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport {\n activateEmployee,\n deactivateEmployee,\n EmployeeDto,\n getEmployees,\n setCanAddNewAgencies,\n setCanViewAllAgencies\n} from './api';\nimport { Cell, Grid, Row } from './Grid';\nimport { AddEmployeeForm } from './AddEmployeeForm';\nimport { Loader } from '../utils/loader';\nimport { formatDate } from '../helpers';\nimport { Button, Checkbox } from 'rsuite';\n\nexport const Employees: React.FC = () => {\n const [employees, areEmployeesLoading] = useAsyncData<\n EmployeeDto[] | undefined\n >(getEmployees, undefined);\n const [permissionChanging, setPermissionChanging] = useState(false);\n\n if (areEmployeesLoading || employees === undefined) return ;\n\n const handleCanAddNewAgenciesChange = async (\n employeeId: number,\n checked: boolean\n ) => {\n setPermissionChanging(true);\n await setCanAddNewAgencies(employeeId, checked);\n window.location.reload();\n };\n\n const handleCanViewAllAgenciesChange = async (\n employeeId: number,\n checked: boolean\n ) => {\n setPermissionChanging(true);\n await setCanViewAllAgencies(employeeId, checked);\n window.location.reload();\n };\n\n const handleDeactivation = async (employeeId: number) => {\n setPermissionChanging(true);\n await deactivateEmployee(employeeId);\n window.location.reload();\n };\n\n const handleActivation = async (employeeId: number) => {\n setPermissionChanging(true);\n await activateEmployee(employeeId);\n window.location.reload();\n };\n\n return (\n
\n \n

Panel Administracyjny

\n \n

Pracownicy

\n \n

Dodaj nowego pracownika

\n \n \n \n \n Id\n Imię\n Nazwisko\n Email słuzbowy\n Nr telefonu sluzbowy\n Utworzono\n Dezaktywowano\n Moze dodawac nowe agencje\n Moze widziec wszystkie agencje\n \n {employees.map((x) => (\n \n {x.id}\n {x.firstName}\n {x.lastName}\n {x.workEmail}\n {x.workPhoneNumber}\n {formatDate(x.createdAt)}\n \n {x.deletedAt && formatDate(x.deletedAt)}\n \n \n \n handleCanAddNewAgenciesChange(\n x.id,\n checked\n )\n }\n />\n \n \n \n handleCanViewAllAgenciesChange(\n x.id,\n checked\n )\n }\n />\n \n \n handleDeactivation(x.id)}\n disabled={x.deletedAt != null}\n >\n DEZAKTYWUJ\n \n \n \n handleActivation(x.id)}\n disabled={x.deletedAt == null}\n >\n AKTYWUJ\n \n \n \n ))}\n \n
\n
\n );\n};\n","import apiCaller from '../ApiCaller';\n\nexport interface AgencyDto {\n agencyId: number;\n name: string;\n email: string;\n phoneNumber: string;\n createdAt: Date;\n createdByEmployeeEmail: string | null;\n}\n\nexport interface AgencyDetailsDto {\n agencyId: number;\n name: string;\n email: string;\n phoneNumber: string;\n isIndividualInvestor: boolean;\n members: AgencyMemberDto[];\n}\n\nexport interface AgencyMemberDto {\n userId: number;\n email: string;\n createdAt: Date;\n}\n\nexport interface AddAgencyDto {\n name: string;\n email: string;\n phoneNumber: string;\n isIndividualInvestor: boolean;\n}\n\nexport interface AddAgencyMemberDto {\n email: string;\n firstName: string;\n lastName: string;\n}\n\nconst urlBase = 'api/managementPanel';\nexport const getMyAgencies = async (): Promise =>\n await apiCaller.get(`${urlBase}/agencies`);\n\nexport const getAgencyDetails = async (\n agencyId: number\n): Promise =>\n await apiCaller.get(`${urlBase}/agencies/${agencyId}`);\n\nexport const addNewAgency = async (dto: AddAgencyDto): Promise =>\n await apiCaller.post(`${urlBase}/agencies`, dto);\n\nexport const addNewAgencyMember = async (\n agencyId: number,\n dto: AddAgencyMemberDto\n): Promise =>\n await apiCaller.post(`${urlBase}/agencies/${agencyId}/members`, dto);\n\nexport const isMemberEmailVerified = async (agencyId: number, userId: number) =>\n await apiCaller.get(\n `${urlBase}/agencies/${agencyId}/members/${userId}/isEmailVerified`\n );\n\nexport const deleteUser = async (userEmail: string): Promise =>\n await apiCaller.request(`api/userManagement/users/${userEmail}`, 'delete');\n","import React, { useState } from 'react';\nimport { Button, Input, Modal, Loader } from 'rsuite';\nimport styled from 'styled-components';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { deleteUser } from './api';\nimport { showAlert, showGenericErrorAlert } from '../helpers';\nimport { colors } from '../theme/colors';\n\nconst Wrapper = styled.div``;\nconst SubmitButton = styled(Button)`\n padding: 8px 20px;\n height: fit-content;\n display: inline;\n align-self: center;\n width: 100%;\n`;\nconst InputContainer = styled.div`\n display: grid;\n grid-template-rows: 1;\n margin-bottom: 15px;\n width: 100%;\n`;\n\nexport const DeleteUserButton = () => {\n const [email, setEmail] = useState('');\n const [confirmEmail, setConfirmEmail] = useState('');\n const [inProgress, setInProgress] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n const canSubmit = !inProgress && email.length > 5 && confirmEmail === email;\n\n const onSubmit = async () => {\n if (!canSubmit) return;\n setInProgress(true);\n\n const response = await deleteUser(email);\n setInProgress(false);\n if (response.ok) {\n setShowModal(false);\n showAlert('Usunięto ' + email, 'info');\n } else {\n showGenericErrorAlert();\n }\n };\n\n return (\n \n setShowModal(true)}\n >\n Usuń konto\n \n setShowModal(false)}>\n

Usuń konto

\n \n\n
Uwaga - to nieodwracalne
\n \n\n \n Email\n setEmail(x)} />\n \n \n Potwierdź email\n setConfirmEmail(x)}\n />\n \n\n \n \n {inProgress && }\n Usuń konto\n \n \n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Loader, Modal, Table } from 'rsuite';\nimport apiCaller from '../ApiCaller';\nimport { OfferType } from '../OfferType';\nimport { City, getDisplayedCity } from '../City';\nimport { formatPrice } from '../search/offersList/mobile/priceAndSizeFormatting';\n\ninterface UserFilterDto {\n email: string;\n phoneNumber?: string;\n city: City;\n offerType: OfferType;\n priceFrom?: number;\n priceTo?: number;\n roomsNumbers?: string;\n userCreatedAt: Date;\n}\nexport function DisplaySaleUsersDialog({ onClose }: { onClose: () => void }) {\n const [loading, setLoading] = useState(true);\n const [dtos, setDtos] = useState([]);\n\n useEffect(() => {\n const fetchUsers = async () => {\n setLoading(true);\n\n const result = await apiCaller.get(\n 'api/managementPanel/latest-sale-users-with-phone-numbers'\n );\n\n setDtos(result);\n setLoading(false);\n };\n\n fetchUsers();\n }, []);\n\n return (\n \n Najnowsi userzy Sale z numerem telefonu\n \n {loading && }\n {!loading && (\n \n \n Konto utworzono\n \n {(rowData: any) => (\n \n {new Date(\n rowData.userCreatedAt\n ).toLocaleString()}\n \n )}\n \n \n\n \n Email\n \n \n \n Imię\n \n \n\n \n Telefon\n \n \n\n \n Miasto\n \n {(rowData: any) => (\n \n {getDisplayedCity(rowData.city)}\n \n )}\n \n \n\n \n Cena od\n \n {(rowData: any) => (\n \n {formatPrice(rowData.priceFrom)}\n \n )}\n \n \n\n \n do\n \n {(rowData: any) => (\n {formatPrice(rowData.priceTo)}\n )}\n \n \n\n \n Pokoje\n \n \n
\n )}\n
\n
\n );\n}\n","import React, { useState } from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { colors } from '../theme/colors';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { DeleteUserButton } from './DeleteUserButton';\nimport { Button } from 'rsuite';\nimport { DisplaySaleUsersDialog } from './DisplaySaleUsersDialog';\n\nconst GoToFiltersOnlyButton = styled(StyledButtonV2)`\n width: fit-content;\n font-weight: bold;\n`;\n\nexport const ManagementPanel: React.FC = () => {\n const [saleUsersOpen, setSaleUsersOpen] = useState(false);\n\n return (\n
\n \n

Panel zarządzania

\n \n \n \n Przejdź do darmowego pricemapa\n \n \n\n \n setSaleUsersOpen(true)}\n >\n Zobacz userow z numerem telefonu na sprzedazy\n \n {saleUsersOpen && (\n setSaleUsersOpen(false)}\n />\n )}\n\n \n

USUŃ UŻYTKOWNIKA

\n \n\n {/*

Dodaj nową agencję

\n \n \n\n \n

Moje agencje

\n \n */}\n
\n
\n );\n};\n","var _style, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPriceMapLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 320.56 689.65\",\n style: {\n enableBackground: \"new 0 0 320.56 689.65\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\n\\t.st0{fill:#EF4751;}\\n\\t.st1{fill:#FFFFFF;}\\n\\t.st2{fill:#6FCBD5;}\\n\\t.st3{clip-path:url(#XMLID_00000055674244433562012290000005966563327891776679_);}\\n\\t.st4{fill:#F6BC1F;}\\n\\t.st5{fill:none;stroke:#010101;stroke-width:5;stroke-miterlimit:10;}\\n\\t.st6{fill:none;stroke:#010101;stroke-width:10;stroke-miterlimit:10;}\\n\\t.st7{fill:#23231F;}\\n\\t.st8{fill:#010101;}\\n\\t.st9{fill:none;stroke:#000000;stroke-width:22.9316;stroke-miterlimit:10;}\\n\\t.st10{opacity:0.2;fill:#F04B4D;}\\n\\t.st11{fill:#F04B4D;}\\n\\t.st12{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st13{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5.0354,5.0354;}\\n\\t.st14{fill:none;stroke:#F04B4D;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5.0188,5.0188;}\\n\\t.st15{fill:#002B3D;}\\n\\t.st16{fill:#F7EFEB;}\\n\\t.st17{fill:#30302F;}\\n\\t.st18{fill:#5CB5B8;}\\n\\t.st19{fill:none;stroke:#000000;stroke-miterlimit:10;}\\n\\t.st20{fill:none;}\\n\\t.st21{fill:none;stroke:#FFFFFF;stroke-width:0.5;stroke-miterlimit:10;}\\n\\t.st22{opacity:0.7;fill:#002B3D;}\\n\\t.st23{fill:#1E1E1D;}\\n\\t.st24{fill:#1F3A6F;}\\n\\t.st25{fill:#C6103A;}\\n\\t.st26{fill:#1E74BB;}\\n\\t.st27{fill:#EF3A4A;}\\n\\t.st28{fill:#EF4C4D;}\\n\\t.st29{fill:#084CA1;}\\n\\t.st30{fill:#081F3B;}\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st11\",\n d: \"M319.37,135.24C305.34,47.6,222.88-11.98,135.29,2.05C47.65,16.08-11.98,98.49,2.04,186.13 c9.35,58.33,102.32,188.4,163.46,268.9c2.16,2.87,5.93,3.97,9.25,2.67c10.16-4.02,20.92-6.99,32.18-8.8 c11.01-1.81,22.17-2.36,33.24-1.71c3.57,0.2,6.84-2.01,7.99-5.43C281.11,346.22,328.72,193.57,319.37,135.24z M174.01,242.64 c-48.32,7.74-93.72-25.14-101.47-73.41c-7.74-48.27,25.14-93.72,73.41-101.47c48.32-7.74,93.72,25.14,101.47,73.41 C255.16,189.44,222.28,234.9,174.01,242.64z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st16\",\n d: \"M174.01,242.64c-48.32,7.74-93.72-25.14-101.47-73.41c-7.74-48.27,25.14-93.72,73.41-101.47 c48.32-7.74,93.72,25.14,101.47,73.41C255.16,189.44,222.28,234.9,174.01,242.64z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st11\",\n d: \"M143.9,615.09c6.46,40.34,39.2,69.91,77.91,74.06c7.66,0.82,15.56,0.65,23.52-0.64 c48.29-7.75,81.17-53.17,73.42-101.43c-6.46-40.34-39.2-69.91-77.91-74.06c-5.93-0.64-11.96-0.69-18.1-0.06 c-1.8,0.17-3.61,0.4-5.42,0.7c-1.81,0.3-3.63,0.63-5.39,1.07C166.62,524.85,136.45,568.65,143.9,615.09z\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPriceMapLogo);\nexport default __webpack_public_path__ + \"static/media/PriceMapLogo.262ab457.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport { Button, Input, Modal, Loader } from 'rsuite';\nimport styled from 'styled-components';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { addNewAgencyMember } from './api';\n\nconst Wrapper = styled.div``;\nconst SubmitButton = styled(Button)`\n padding: 8px 20px;\n height: fit-content;\n display: inline;\n align-self: center;\n width: 100%;\n`;\nconst InputContainer = styled.div`\n display: grid;\n grid-template-rows: 1;\n margin-bottom: 15px;\n width: 100%;\n`;\n\nexport interface AddAgencyMemberModalButtonProps {\n agencyId: number;\n}\n\nexport const AddAgencyMemberModalButton: React.FC<\n AddAgencyMemberModalButtonProps\n> = ({ agencyId }) => {\n const [showModal, setShowModal] = useState(false);\n const [email, setEmail] = useState('');\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [addingInProgress, setAddingInProgress] = useState(false);\n\n const isInvalid =\n firstName.length < 3 || email.length < 3 || !email.includes('@');\n\n const addAgencyMember = async () => {\n if (isInvalid) return;\n setAddingInProgress(true);\n\n await addNewAgencyMember(agencyId, {\n firstName,\n lastName,\n email\n });\n\n window.location.reload();\n };\n\n return (\n \n \n setShowModal(false)}>\n

Dodaj nowe konto

\n \n\n
\n Uwaga - to spowoduje wysłanie zaproszenia do korzystania z\n PriceMap, upewnij się, że podajesz poprawne dane\n
\n \n\n \n Imię\n setFirstName(x)}\n />\n \n \n Nazwisko (opcjonalne)\n setLastName(x)} />\n \n \n Email setEmail(x)} />\n \n\n \n \n {addingInProgress && }\n Utwórz konto\n \n \n
\n
\n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport StyledA from '../utils/styledA';\n\nconst GridOuter = styled.div`\n overflow-x: auto;\n`;\nconst GridInner = styled.div`\n display: inline-block;\n`;\nexport const Grid: React.FC = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const Row = styled(StyledA)<{ clickable: boolean }>`\n width: 100%;\n text-color: unset;\n text-decoration: none;\n display: flex;\n background-color: white;\n cursor: ${({ clickable }) => (clickable ? 'pointer' : undefined)};\n border-bottom: 1px solid lightgray;\n :hover {\n background-color: ${colors.lighterGray};\n }\n`;\n\nexport const HeaderRow = styled.div`\n display: inline-block;\n\n width: 100%;\n display: flex;\n background-color: ${colors.lighterVeryVeryDark};\n color: white;\n font-weight: bold;\n`;\n\nexport const Cell = styled.div<{ width: number }>`\n flex: 0;\n min-width: ${({ width }) => width}px;\n max-width: ${({ width }) => width}px;\n padding: 15px 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n background-color: transparent;\n\n display: flex;\n align-items: center;\n`;\n","import React, { useState } from 'react';\nimport { Button, Loader } from 'rsuite';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { formatDate } from '../helpers';\nimport { colors } from '../theme/colors';\nimport { HoverableIcon } from '../utils/hoverableIcon';\nimport { AgencyMemberDto, isMemberEmailVerified } from './api';\nimport { Grid, Cell, Row, HeaderRow } from './Grid';\n\nexport interface AgencyMembersTableProps {\n agencyMembers: AgencyMemberDto[];\n agencyId: number;\n}\n\nexport const AgencyMembersTable: React.FC = ({\n agencyMembers,\n agencyId\n}) => {\n return (\n \n \n Email\n Utworzono\n \n \n {agencyMembers.map((member) => (\n \n ))}\n \n );\n};\n\ninterface AgencyMemberRowProps {\n email: string;\n userId: number;\n agencyId: number;\n createdAt: Date;\n}\nconst AgencyMemberRow: React.FC = ({\n email,\n userId,\n agencyId,\n createdAt\n}) => {\n const [checkEmailVerificationClicked, setCheckEmailVerificationClicked] =\n useState(false);\n\n return (\n \n {email}\n {formatDate(createdAt)}\n \n {!checkEmailVerificationClicked && (\n setCheckEmailVerificationClicked(true)}\n >\n Sprawdź czy przyjęto zaproszenie\n \n )}\n {checkEmailVerificationClicked && (\n \n )}\n \n \n );\n};\n\ninterface UserEmailVerificationStatusProps {\n agencyId: number;\n userId: number;\n}\nconst UserEmailVerificationStatus: React.FC<\n UserEmailVerificationStatusProps\n> = ({ agencyId, userId }) => {\n const [verified, loading] = useAsyncData(\n () => isMemberEmailVerified(agencyId, userId),\n undefined\n );\n\n if (loading || verified === undefined) return ;\n\n const icon = verified ? 'ok-circle' : 'warning';\n const color = verified ? colors.brightGreen : colors.brightRed;\n const text = verified\n ? 'Użytkownik przyjął zaproszenie i może korzystać z PriceMap'\n : 'Email czeka na potwierdzenie';\n\n return (\n \n {text}\n \n );\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { useAsyncData } from '../../hooks/useAsyncData';\nimport { AgencyDetailsDto, getAgencyDetails } from './api';\nimport { Loader } from '../utils/loader';\nimport { AddAgencyMemberModalButton } from './AddAgencyMemberModalButton';\nimport styled from 'styled-components';\nimport { colors } from '../theme/colors';\nimport { Badge } from 'rsuite';\nimport { AgencyMembersTable } from './AgencyMembersTable';\nimport { useParams, useSearchParams } from 'react-router-dom';\n\nconst Header = styled.div`\n font-size: 46px;\n font-weight: bold;\n display: flex;\n`;\n\nconst AgencyNameTitle = styled.span`\n color: ${colors.greenyBlue};\n`;\n\nconst StyledBadge = styled(Badge)<{ $isIndividualInvestor: boolean }>`\n padding: 2px 10px;\n border-radius: 10px;\n align-self: start;\n background-color: ${({ $isIndividualInvestor }) =>\n $isIndividualInvestor ? colors.coral : colors.facebookBlue};\n`;\n\nexport interface AgencyDetailsParams {\n agencyId?: string;\n}\n\nexport const ManagementPanelAgencyDetails = () => {\n const params = useParams();\n const agencyId = Number(params.agencyId);\n\n const [agencyDetails, agencyDetailsLoading] = useAsyncData<\n AgencyDetailsDto | undefined\n >(() => getAgencyDetails(agencyId), undefined);\n\n if (agencyDetailsLoading || agencyDetails == null) {\n return ;\n }\n\n const { name, email, phoneNumber, isIndividualInvestor, members } =\n agencyDetails;\n\n return (\n
\n \n

Panel zarządzania

\n \n\n
\n {name}\n \n
\n \n\n

Dodaj konto

\n \n \n \n\n

Konta

\n \n \n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { PageContainer, CenteredDiv } from './PageLayout';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport { ReactComponent as PriceMapLogo } from '../utils/icons/PriceMapLogoWithText.svg';\nimport { Checkbox, Loader } from 'rsuite';\nimport { acceptTermsOfService } from './api';\nimport styled from 'styled-components';\nimport StyledButtonV2 from '../utils/styledButtonV2';\nimport { colors } from '../theme/colors';\nimport { LightBoxShadow } from '../utils/boxShadow';\n\nconst CenteredDivWithPadding = styled(CenteredDiv)`\n padding: 0 10px;\n`;\n\nconst PriceMapLogoContainer = styled.div`\n display: flex;\n justify-content: flex-start;\n`;\n\nconst TermsOfServiceContainer = styled.div`\n padding: 40px;\n ${LightBoxShadow};\n`;\n\nconst PolicyHeading = styled.div`\n font-size: 1.3em;\n font-weight: bold;\n`;\n\nconst CheckboxContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Label = styled.span`\n font-size: 1.2em;\n cursor: pointer;\n`;\n\nconst SendButton = styled(StyledButtonV2)`\n padding: 0 50px;\n font-size: 1.2em;\n`;\n\nconst TermsOfServiceLink = styled.a`\n font-weight: bold;\n`;\n\nconst ContactContainer = styled.div`\n font-size: 1.2em;\n margin-top: 10px;\n`;\n\nexport const AcceptTermsOfService: React.FC = () => {\n const [acceptedTermsOfService, setAcceptedTermsOfService] = useState(false);\n const [isSendingRequest, setIsSendingRequest] = useState(false);\n\n const isSendAvailable = !isSendingRequest && acceptedTermsOfService;\n\n const onSend = async () => {\n if (!isSendAvailable) return;\n setIsSendingRequest(true);\n\n await acceptTermsOfService();\n\n window.location.reload();\n };\n\n const sendButtonContent = isSendingRequest ? (\n \n ) : (\n Przejdź dalej\n );\n\n return (\n \n \n \n \n \n \n \n \n Regulamin i Polityka Prywatności\n \n\n \n\n \n \n setAcceptedTermsOfService(checked)\n }\n />\n \n setAcceptedTermsOfService(\n !acceptedTermsOfService\n )\n }\n >\n Akceptuję{' '}\n e.stopPropagation()}\n >\n Regulamin\n {' '}\n oraz{' '}\n e.stopPropagation()}\n >\n Politykę Prywatności\n {' '}\n PriceMap\n \n \n \n \n\n \n \n {sendButtonContent}\n \n \n \n \n Potrzebujesz pomocy?{' '}\n Kontakt\n \n \n \n );\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport * as navigationActions from '../../redux/actions/navigationActions';\nimport styled from 'styled-components';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport * as mediaQueries from '../theme/mediaQueries';\n\nconst Wrapper = styled.div`\n height: 40px;\n\n ${mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst ExpandSidebarIcon = styled(RsuiteIcon)`\n margin-left: 10px;\n`;\n\nconst StyledNavbar = styled.div`\n background-color: white;\n position: fixed;\n top: 0;\n left: 0px;\n right: 0;\n opacity: 100;\n z-index: 100;\n height: 40px;\n display: flex;\n align-items: center;\n\n box-shadow: 0 0.25rem 0.25rem rgba(0, 0, 0, 0.02);\n`;\n\nclass Topbar extends Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const { expandSidebarOnMobile } = this.props;\n\n return (\n \n \n \n \n \n );\n }\n}\n\nconst mapDispatchToProps = {\n expandSidebarOnMobile: navigationActions.expandSidebarOnMobile\n};\n\nexport default connect(null, mapDispatchToProps)(Topbar);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport * as navigationActions from '../../redux/actions/navigationActions';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\nimport RsuiteIcon from 'rsuite/lib/Icon';\nimport SectionInterspace from '../utils/SectionInterspace';\nimport * as mediaQueries from '../theme/mediaQueries';\nimport { colors } from '../theme/colors';\nimport { getDisplayedPage, Page } from '../Page';\nimport { ReactComponent as PriceMapLogo } from '../utils/icons/PriceMapLogo.svg';\n\nconst sidebarWidth = {\n full: '200px',\n iconOnly: '60px',\n hidden: '0px'\n};\n\nconst StyledSidebar = styled.div`\n display: flex;\n flex-flow: column;\n height: 100%;\n width: 220px;\n font-family: BasierCircle, Roboto, Arial, Helvetica, sans-serif;\n position: fixed;\n z-index: 102;\n top: 0;\n left: 0;\n transition: 0.3s;\n overflow-x: hidden;\n overflow-y: auto;\n\n background-color: ${colors.veryVeryDark};\n\n ${mediaQueries.mobile} {\n width: ${(props) =>\n props.isSidebarExpandedOnMobile\n ? sidebarWidth.full\n : sidebarWidth.hidden};\n }\n ${mediaQueries.tablet} {\n width: ${sidebarWidth.iconOnly};\n\n :hover {\n width: ${sidebarWidth.full};\n }\n }\n ${mediaQueries.fullSize} {\n width: ${sidebarWidth.full};\n }\n`;\n\nconst PriceMapSidebarHeading = styled.span`\n font-family: 'Montserrat', sans-serif;\n color: white;\n font-size: 1.7em;\n`;\n\nconst UpperIcons = styled.div`\n flex: 1;\n`;\n\nconst BottomIcons = styled.div`\n flex: 0;\n`;\n\nconst SidebarItem = styled.div`\n display: flex;\n align-items: center;\n\n margin: 0px 0px;\n height: 52px;\n padding: auto;\n width: ${sidebarWidth.full};\n\n font-weight: 600;\n\n color: ${({ isCurrentPage }) =>\n isCurrentPage ? colors.white : colors.blueishGray};\n\n background-color: ${({ isCurrentPage }) =>\n isCurrentPage ? colors.lighterVeryVeryDark : colors.veryVeryDark};\n\n transition: 0.3s ease;\n`;\n\nconst HoverableSidebarItem = styled(SidebarItem)`\n :hover {\n background-color: ${colors.lighterVeryVeryDark};\n }\n`;\n\nconst IconBox = styled.div`\n width: ${sidebarWidth.iconOnly};\n text-align: center;\n`;\n\nconst HideNavbarIconBox = styled(IconBox)`\n margin-top: 20px;\n color: ${colors.blueishGray};\n`;\n\nconst StyledLink = styled(Link)`\n :hover {\n text-decoration: none;\n }\n`;\n\nconst LogoIconContainer = styled.div`\n ${mediaQueries.mobileOnly} {\n display: none;\n }\n`;\n\nconst LogoContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst HideNavbarIconContainer = styled.div`\n ${mediaQueries.tablet} {\n display: none;\n }\n\n visibility: ${(props) =>\n props.isSidebarExpandedOnMobile ? 'visible' : 'hidden'};\n`;\n\nconst DarkOverlay = styled.div`\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.2);\n z-index: 101;\n\n visibility: hidden;\n opacity: 0;\n\n ${mediaQueries.mobileOnly} {\n visibility: ${(props) =>\n props.isSidebarExpandedOnMobile ? 'visible' : 'hidden'};\n opacity: ${(props) => (props.isSidebarExpandedOnMobile ? '1' : '0')};\n }\n\n transition: 0.3s;\n`;\n\nfunction Sidebar({\n isSidebarExpandedOnMobile,\n hideSidebarOnMobile,\n currentPage\n}) {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n PriceMap\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n {getDisplayedPage(Page.Search)}\n \n \n \n \n \n \n \n {getDisplayedPage(Page.FavoriteOffers)}\n \n \n \n \n \n \n \n {getDisplayedPage(Page.Filters)}\n \n \n \n \n \n \n \n {getDisplayedPage(Page.Statistics)}\n \n \n \n \n \n \n \n {getDisplayedPage(Page.Help)}\n \n \n \n \n \n \n \n \n \n {getDisplayedPage(Page.MyAccount)}\n \n \n \n \n \n \n \n Wyloguj\n \n \n \n \n
\n );\n}\n\nfunction mapStateToProps({ navigation }) {\n return {\n isSidebarExpandedOnMobile: navigation.isSidebarExpandedOnMobile,\n currentPage: navigation.currentPage\n };\n}\n\nconst mapDispatchToProps = {\n hideSidebarOnMobile: navigationActions.hideSidebarOnMobile\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Sidebar);\n","import React, { Component } from 'react';\nimport { Container, Col } from 'reactstrap';\nimport Topbar from './navigation/Topbar';\nimport Sidebar from './navigation/Sidebar';\nimport styled from 'styled-components';\nimport RowWithoutMargin from './utils/RowWithoutMargin';\n\nconst StyledContainer = styled(Container)`\n max-width: 1600px;\n position: absolute;\n padding: 0px;\n`;\n\nconst PageWrapper = styled.div`\n width: 100%;\n height: 100%;\n padding: 10px 0px 80px 0px;\n`;\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render() {\n return (\n \n \n \n \n \n \n \n \n \n {this.props.children}\n \n \n \n );\n }\n}\n","import React from 'react';\nimport { Navigate, useLocation } from 'react-router-dom';\nimport { auth } from './auth/FirebaseApp';\nimport {\n SubscriptionLevel,\n getCurrentUserInfo\n} from './components/account/api';\nimport { useAsyncData } from './hooks/useAsyncData';\nimport { showGenericErrorAlert } from './components/helpers';\nimport { Loader } from './components/utils/loader';\nimport { GenericError } from './components/account/GenericError';\nimport { AcceptTermsOfService } from './components/account/AcceptTermsOfService';\nimport { FiltersOnlyPage } from './components/publicFilters/FiltersOnlyPage';\nimport { Layout } from './components/Layout';\n\ninterface ProtectedPageProps {\n subscription: SubscriptionLevel;\n children: React.ReactElement;\n}\n\nfunction ProtectedPage({\n subscription: requiredSubscription,\n children\n}: ProtectedPageProps): React.ReactElement {\n const user = auth.currentUser;\n const [userInfo, userInfoLoading] = useAsyncData(\n () => {\n if (user === null) return Promise.resolve(null);\n return getCurrentUserInfo();\n },\n null,\n (e) => {\n console.log(e);\n if (user == null) {\n showGenericErrorAlert();\n } else {\n // custom error handling is necessary because of problems with Safari:\n // it's because of ITP https://auth0.com/docs/troubleshoot/authentication-issues/renew-tokens-when-using-safari\n // tokens are invalidated and apiCaller throws exception when it tries to getTokenSilently()\n // we end up in situation when userInfoLoading = false and isAuthenticated = false\n // which then triggers LoginWithRedirect(); which finally succeeds\n //\n // we don't want to show error in this exact scenario\n // because it would be shown on every refresh for Safari / ios mobile browsers\n }\n }\n );\n\n if (userInfoLoading) {\n return ;\n }\n\n if (user == null) {\n return ;\n }\n\n if (userInfo == null) return ;\n\n if (!user.emailVerified) return ;\n if (!userInfo.acceptedTermsOfService) return ;\n if (userInfo.subscriptionLevel === SubscriptionLevel.FreeFilters)\n return ;\n\n if (userInfo.subscriptionLevel !== requiredSubscription) {\n return ;\n }\n\n return children;\n}\n\nexport function PriceMapProProtectedPage({\n children\n}: React.PropsWithChildren) {\n const location = useLocation();\n\n return (\n \n \n {React.Children.map(children, (x) =>\n React.cloneElement(x, { location })\n )}\n \n \n );\n}\n\nexport default ProtectedPage;\n","import React, { useEffect } from 'react';\nimport { Loader } from '../utils/loader';\n\nexport function RedirectToAdTarget() {\n const searchParams = new URLSearchParams(window.location.search);\n const targetUrl = searchParams.get('targetUrl') ?? '';\n const decodedUrl = decodeURI(targetUrl);\n\n useEffect(() => {\n if (decodedUrl.startsWith('https://')) {\n setTimeout(() => {\n window.location.replace(decodedUrl);\n }, 800);\n }\n }, [decodedUrl]);\n\n if (decodedUrl == null || !decodedUrl.startsWith('https:')) {\n window.location.replace('https://pricemap.pl/znajdz-eksperta/');\n }\n\n return ;\n}\n","import React from 'react';\nimport { Checkbox } from 'rsuite';\nimport styled from 'styled-components';\nimport { colors } from '../components/theme/colors';\n\nconst TermsOfServiceLink = styled.a`\n color: ${colors.facebookBlue};\n`;\n\nexport function AcceptTosCheckbox({\n value,\n onChange\n}: {\n value: boolean;\n onChange: (x: boolean) => void;\n}) {\n return (\n
\n onChange(checked)}\n />\n onChange(!value)}\n >\n Akceptuję{' '}\n e.stopPropagation()}\n >\n Regulamin\n {' '}\n oraz{' '}\n e.stopPropagation()}\n >\n Politykę Prywatności\n {' '}\n *\n \n
\n );\n}\n","import React from 'react';\nimport { Checkbox } from 'rsuite';\n\nexport function AcceptAllAgreementsCheckbox({\n value,\n onChange\n}: {\n value: boolean;\n onChange: (x: boolean) => void;\n}) {\n return (\n
\n onChange(checked)}\n />\n onChange(!value)}\n >\n Zaznacz wszystkie zgody\n \n
\n );\n}\n","import React from 'react';\nimport { Checkbox, Icon, Tooltip, Whisper } from 'rsuite';\nimport styled from 'styled-components';\nimport { colors } from '../components/theme/colors';\n\nconst TermsOfServiceLink = styled.a`\n font-weight: bold;\n`;\n\nexport function AcceptCreditContactCheckbox({\n value,\n onChange\n}: {\n value: boolean;\n onChange: (x: boolean) => void;\n}) {\n return (\n
\n onChange(checked)}\n />\n onChange(!value)}\n >\n Wyrażam zgodę na przekazanie moich danych kontaktowych do NOTUS\n Finanse S.A. w celu bezpłatnej konsultacji kredytowej.\n \n Wyrażam zgodę na przekazanie moich danych\n kontaktowych do NOTUS Finanse S.A. i nawiązywanie\n przez NOTUS kontaktu telefonicznego dotyczącego\n oferty produktowej instytucji finansowych\n współpracujących z NOTUS. Może Pani/Pan wycofać\n zgodę na kontakt ze strony NOTUS w każdym momencie\n np. poprzez wysłanie wiadomości e-mail na adres\n zgoda@notus.pl. Wycofanie zgody nie wpływa na\n zgodność z prawem przetwarzania przed jej\n wycofaniem. Więcej informacji o przetwarzaniu danych\n przez NOTUS Finanse S.A. (administratora Pani/Pana\n danych osobowych) oraz o przysługujących Pani/Panu\n prawach znajduje się w Klauzuli informacyjnej NOTUS\n Finanse S.A.\n \n }\n >\n \n {' '}\n Czytaj więcej\n \n \n \n
\n );\n}\n","import React, { useState } from 'react';\nimport { Button, Icon, Input } from 'rsuite';\nimport ReactGA from 'react-ga4';\nimport { getAuth } from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { colors, gradients } from '../components/theme/colors';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\nimport { useFilterRegistration } from './useFilterRegistration';\nimport { Navigate } from 'react-router-dom';\nimport { tracking } from './tracking';\nimport { AcceptTosCheckbox } from './AcceptTosCheckbox';\nimport { AcceptAllAgreementsCheckbox } from './AcceptAllAgreementsCheckbox';\nimport { AcceptCreditContactCheckbox } from './AcceptCreditContactCheckbox';\n\nexport const AddPersonalDetails = () => {\n const [phoneNumber, setPhoneNumber] = useState('');\n const [firstName, setFirstName] = useState('');\n const [acceptedTos, setAcceptedTos] = useState(false);\n const [acceptedCredit, setAcceptedCredit] = useState(false);\n\n const { goToEmailStep, tryDecodeRegistrationValues } =\n useFilterRegistration();\n\n const registrationValues = tryDecodeRegistrationValues();\n if (registrationValues == null) {\n return ;\n }\n\n const auth = getAuth();\n if (auth.currentUser != null) {\n return ;\n }\n\n const phoneNumberJustDigits = phoneNumber.replaceAll(/(\\s|-)+/g, '');\n const canSubmit =\n phoneNumberJustDigits.length === 9 &&\n acceptedTos &&\n firstName.length > 0;\n\n const onSubmit = () => {\n ReactGA.event({\n category: tracking.registrationWithFilter.category,\n action: tracking.registrationWithFilter.actions\n .personalDetailsFormFinished\n });\n\n goToEmailStep(\n registrationValues.filter,\n phoneNumber,\n firstName,\n acceptedTos,\n acceptedCredit\n );\n };\n\n const getOffersWord = () => {\n if (registrationValues.offersInLastWeek == null) return '';\n if (registrationValues.offersInLastWeek === 1) return 'ofertę';\n\n const last2 = registrationValues.offersInLastWeek % 100;\n if (last2 >= 2 && last2 <= 4) return 'oferty';\n if (last2 >= 5 && last2 <= 21) return 'ofert';\n\n const last1 = last2 % 10;\n if (last1 >= 2 && last1 <= 4) return 'oferty';\n return 'ofert';\n };\n\n const getRestOfText = () => {\n if (registrationValues.offersInLastWeek === 1)\n return 'z ostatniego tygodnia która spełnia Twoje kryteria i zaraz ją do Ciebie wyślemy';\n\n return 'z ostatniego tygodnia które spełniają Twoje kryteria i zaraz je do Ciebie wyślemy';\n };\n\n return (\n \n \n {\n e.preventDefault();\n onSubmit();\n }}\n >\n \n\n {registrationValues.offersInLastWeek !== null &&\n registrationValues.offersInLastWeek > 0 && (\n \n \n

\n Znaleźliśmy{' '}\n \n {registrationValues.offersInLastWeek}{' '}\n {getOffersWord()}\n {' '}\n {getRestOfText()}\n

\n \n )}\n\n \n \n\n
\n \n \n
\n\n \n {\n if (x) {\n setAcceptedTos(true);\n setAcceptedCredit(true);\n }\n }}\n />\n \n \n \n \n \n \n\n
\n \n Kontynuuj za darmo\n \n
\n \n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { Button, Divider, Input, Loader } from 'rsuite';\nimport { getAuth } from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { colors } from '../components/theme/colors';\nimport { Link, Navigate, useNavigate } from 'react-router-dom';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\nimport { LogInWithGoogleButton } from './LogInWithGoogleButton';\nimport { isInAppBrowser } from '../isInAppBrowser';\nimport { isValidEmail } from './isValidEmail';\nimport { loginPasswordless } from '../components/publicFilters/api';\n\nexport const LogIn = () => {\n const [email, setEmail] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState();\n const navigate = useNavigate();\n\n const auth = getAuth();\n\n if (auth.currentUser != null) {\n return ;\n }\n\n const onSubmit = async () => {\n setIsLoading(true);\n\n try {\n await loginPasswordless(\n email,\n `${window.location.origin}?emailForSignIn=${email}`\n );\n\n navigate('/signin-link-sent');\n } catch (ex) {\n console.log(ex);\n setError('Ups, coś poszło nie tak, spróbuj ponownie za chwilę');\n }\n };\n\n const canSubmit = !isLoading && isValidEmail(email);\n\n return (\n \n \n {\n e.preventDefault();\n onSubmit();\n }}\n >\n \n\n

\n Jeszcze tylko jeden krok. Załóż konto lub zaloguj się i\n znajdźmy Ci mieszkanie!\n

\n\n {!isInAppBrowser() && (\n <>\n navigate('/')}\n onError={() => undefined}\n />\n\n
\n lub\n
\n \n )}\n\n \n\n {error && (\n \n {error}\n \n )}\n\n \n {isLoading && }\n Zaloguj się\n \n\n \n Nie masz konta? Zarejestruj się\n \n \n
\n
\n );\n};\n","import React from 'react';\nimport { getAuth } from 'firebase/auth';\nimport { ReactComponent as PriceMapLogo } from '../components/utils/icons/PriceMapLogoWithText.svg';\nimport { Navigate } from 'react-router-dom';\nimport { AuthPage, AuthPageContentCard } from './AuthPageLayout';\n\nexport const SignInLinkSent = () => {\n const auth = getAuth();\n\n if (auth.currentUser != null) {\n return ;\n }\n\n return (\n \n \n \n\n \n Wysłaliśmy email!\n

\n\n \n Kliknij w link w mailu żeby się zalogować 😉\n \n
\n
\n );\n};\n","import React from 'react';\nimport {\n CenteredDiv,\n Header,\n Description,\n CenteredText\n} from '../components/account/PageLayout';\nimport SectionInterspace from '../components/utils/SectionInterspace';\nimport { Bold } from '../components/utils/bold';\nimport { ReactComponent as EmailSent } from '../components/utils/icons/EmailSent.svg';\nimport { MessageCard } from '../components/account/MessageCard';\nimport { auth } from './FirebaseApp';\nimport { Topbar } from '../components/publicFilters/Topbar';\nimport { PageContainer } from '../components/publicFilters/PageContainer';\nimport { Navigate } from 'react-router-dom';\n\n// todo: can it be removed?\n\nexport const VerifyEmail = () => {\n if (auth.currentUser == null || auth.currentUser.emailVerified)\n return ;\n\n return (\n \n \n \n \n \n \n \n\n \n\n \n
A teraz potwierdź swój adres email 📨
\n
\n \n\n \n \n Wysłaliśmy link na maila{' '}\n {auth.currentUser?.email}\n \n \n \n\n \n \n Email z linkiem nie dotarł? Napisz do nas.\n
\n kontakt@pricemap.pl\n
\n
\n
\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport LogOut from './auth/LogOut';\nimport { Routes, Route, useLocation } from 'react-router-dom';\nimport ReactGA from 'react-ga4';\nimport { GenericError } from './components/account/GenericError';\nimport { RedirectToOffer } from './components/redirectToOffer/RedirectToOffer';\nimport { CreateAccount } from './auth/old-password-flow/CreateAccount';\nimport { ManageUserEmail } from './auth/ManageUserEmail';\nimport { CreateFilter } from './auth/CreateFilter';\nimport { CreateAccountWithFilter } from './auth/CreateAccountWithFilter';\nimport { AccountWithFilterCreated } from './auth/AccountWithFilterCreated';\nimport Home from './components/Home';\nimport { Help } from './components/help/Help';\nimport { Filters } from './components/filters/Filters';\nimport Search from './components/search/Search';\nimport { FavoriteOffers } from './components/favoriteOffers/FavoriteOffers';\nimport Statistics from './components/statistics/Statistics';\nimport { MyAccount } from './components/account/MyAccount';\nimport { PasswordChangeRequested } from './components/account/PasswordChangeRequested';\nimport { FiltersOnlyPage } from './components/publicFilters/FiltersOnlyPage';\nimport { AgencyDetails } from './components/adminPanel/AgencyDetails';\nimport { AdminPanel } from './components/adminPanel/AdminPanel';\nimport { Agencies } from './components/adminPanel/Agencies';\nimport { AdminStatistics } from './components/adminPanel/AdminStatistics';\nimport { Employees } from './components/adminPanel/Employees';\nimport { ManagementPanel } from './components/managementPanel/ManagementPanel';\nimport { ManagementPanelAgencyDetails } from './components/managementPanel/ManagementPanelAgencyDetails';\nimport { PriceMapProProtectedPage } from './ProtectedPage';\nimport { RedirectToAdTarget } from './components/redirectToAdTarget/RedirectToAdTarget';\nimport { AddPersonalDetails } from './auth/AddPersonalDetails';\nimport { LogIn } from './auth/LogIn';\nimport { SignInLinkSent } from './auth/SignInLinkSent';\nimport { VerifyEmail } from './auth/VerifyEmail';\n\nexport const AppRoutes: React.FC = () => {\n const location = useLocation();\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: location.pathname + location.search\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 \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n );\n};\n","import { LastOfferActivity } from './../../components/LastOfferActivity';\nimport { SearchCriteriaDto } from '../../components/SearchCriteriaDto';\nimport * as actionTypes from '../actionTypes';\nimport { getDefaultSearchConfiguration } from '../../components/DefaultSearchConfiguration';\nimport { getDefaultSearchCriteria } from '../../components/helpers';\n\nexport interface CurrentSearchCriteriaReducerState extends SearchCriteriaDto {\n isInLineWithCurrentFilter: boolean;\n isInLineWithSearchResults: boolean;\n lastOfferActivity: LastOfferActivity;\n}\n\nconst initialState: CurrentSearchCriteriaReducerState = {\n isInLineWithCurrentFilter: true,\n isInLineWithSearchResults: true,\n lastOfferActivity: LastOfferActivity.lastWeek,\n ...getDefaultSearchCriteria(getDefaultSearchConfiguration())\n};\n\nexport const currentSearchCriteriaReducer = (\n state: CurrentSearchCriteriaReducerState = initialState,\n action: any\n) => {\n switch (action.type) {\n case actionTypes.updateCurrentSearchCriteria:\n return {\n ...state,\n ...action.payload.currentSearchCriteria\n };\n case actionTypes.setLastOfferActivity:\n return {\n ...state,\n lastOfferActivity: action.payload.lastOfferActivity\n };\n\n default:\n return state;\n }\n};\n","import { DisplayedAggregatedOffer } from './../../components/search/DisplayedSearchResult';\nimport * as actionTypes from '../actionTypes';\n\nexport interface SearchResultReducerState {\n areOffersLoading: boolean;\n totalHits: number | null;\n offers: DisplayedAggregatedOffer[];\n}\n\nexport const searchResultReducer = (\n state: SearchResultReducerState = {\n areOffersLoading: false,\n totalHits: null,\n offers: []\n },\n action: any\n) => {\n switch (action.type) {\n case actionTypes.setSearchResult:\n return {\n ...state,\n offers: action.payload.offers,\n totalHits: action.payload.totalHits\n };\n\n case actionTypes.setSearchResultOffers:\n return {\n ...state,\n offers: action.payload.offers\n };\n\n case actionTypes.loadingOffersStarted:\n return {\n ...state,\n areOffersLoading: true\n };\n\n case actionTypes.loadingOffersFinished:\n return {\n ...state,\n areOffersLoading: false\n };\n\n default:\n return state;\n }\n};\n","import { SearchCriteriaDto } from '../../components/SearchCriteriaDto';\nimport * as actionTypes from '../actionTypes';\nimport { getDefaultSearchCriteria } from '../../components/helpers';\nimport { getDefaultSearchConfiguration } from '../../components/DefaultSearchConfiguration';\n\nexport interface LastSearchedCriteriaReducerState extends SearchCriteriaDto {}\n\nconst initialState: LastSearchedCriteriaReducerState = {\n ...getDefaultSearchCriteria(getDefaultSearchConfiguration())\n};\n\nexport const lastSearchedCriteriaReducer = (\n state: LastSearchedCriteriaReducerState = initialState,\n action: any\n): LastSearchedCriteriaReducerState => {\n switch (action.type) {\n case actionTypes.updateLastSearchedCriteria:\n return {\n ...state,\n ...action.payload.lastSearchedCriteria\n };\n\n default:\n return state;\n }\n};\n","import * as actionTypes from '../actionTypes';\n\nexport const navigationReducer = (\n state = {\n currentPage: null,\n isSidebarExpandedOnMobile: false\n },\n action\n) => {\n switch (action.type) {\n case actionTypes.expandSidebarOnMobile: {\n return {\n ...state,\n isSidebarExpandedOnMobile: true\n };\n }\n\n case actionTypes.hideSidebarOnMobile: {\n return {\n ...state,\n isSidebarExpandedOnMobile: false\n };\n }\n\n case actionTypes.setCurrentPage: {\n return {\n ...state,\n currentPage: action.payload.currentPage\n };\n }\n\n default:\n return state;\n }\n};\n","import * as actionTypes from '../actionTypes';\nimport { AveragePriceChartName } from '../../components/statistics/charts/averagePrice/AveragePriceChart';\nimport { ReturnOfInvestmentChartName } from '../../components/statistics/charts/ReturnOfInvestmentChart';\nimport { CurrentMarketSaturationChartName } from '../../components/statistics/charts/marketSaturation/CurrentMarketSaturationChart';\nimport { NbpAveragePriceChartName } from '../../components/statistics/charts/nbpAveragePrice/NbpAveragePriceChart';\nimport { MarketSaturationChartName } from '../../components/statistics/charts/marketSaturation/MarketSaturationChart';\nimport { OfferType } from '../../components/OfferType';\nimport { Market } from '../../components/Market';\nimport {\n nbpPriceType,\n nbpStatisticsTimeFrame,\n averagePriceType\n} from '../../components/enums';\nimport { getDefaultSearchConfiguration } from '../../components/DefaultSearchConfiguration';\nimport { getStatisticsSearchCriteriaFromSessionStorage } from '../../components/statistics/sessionStorageFunctions';\nimport { StatisticsTimeFrame } from '../../components/StatisticsTimeFrame';\n\nconst getDefaultSearchCriteria = () => {\n const searchCriteriaFromSessionStorage =\n getStatisticsSearchCriteriaFromSessionStorage();\n\n const city =\n searchCriteriaFromSessionStorage?.city ??\n getDefaultSearchConfiguration().city;\n\n const roomsNumbers = searchCriteriaFromSessionStorage?.roomsNumbers ?? [];\n const districts = searchCriteriaFromSessionStorage?.districts ?? [];\n\n return { city, roomsNumbers, districts };\n};\n\nexport const statisticsReducer = (\n state = {\n searchCriteria: getDefaultSearchCriteria(),\n [AveragePriceChartName]: {\n offerType: OfferType.Sale,\n market: Market.Aftermarket,\n timeFrame: StatisticsTimeFrame.last6Months,\n divideBy: null,\n priceType: averagePriceType.pricePerMeter,\n isLoading: false,\n dataSeries: []\n },\n [ReturnOfInvestmentChartName]: {\n offerType: OfferType.Sale,\n market: Market.Aftermarket,\n timeFrame: StatisticsTimeFrame.last6Months,\n divideBy: null,\n isLoading: false,\n dataSeries: []\n },\n [CurrentMarketSaturationChartName]: {\n offerType: OfferType.Sale,\n market: Market.Aftermarket,\n divideBy: null,\n isLoading: false,\n dataSeries: []\n },\n [MarketSaturationChartName]: {\n offerType: OfferType.Sale,\n market: Market.Aftermarket,\n timeFrame: StatisticsTimeFrame.last6Months,\n isLoading: false,\n dataSeries: []\n },\n [NbpAveragePriceChartName]: {\n market: Market.Aftermarket,\n priceType: nbpPriceType.transactionPrice,\n timeFrame: nbpStatisticsTimeFrame.lastYear,\n divideBy: null,\n isLoading: false,\n dataSeries: []\n }\n },\n action\n) => {\n switch (action.type) {\n case actionTypes.updateStatisticsSearchCriteria: {\n return {\n ...state,\n searchCriteria: action.payload.searchCriteria\n };\n }\n\n case actionTypes.resetStatisticsSearchCriteria: {\n return {\n ...state,\n searchCriteria: getDefaultSearchCriteria()\n };\n }\n\n case actionTypes.setChartState: {\n return {\n ...state,\n [action.payload.chartName]: {\n ...state[action.payload.chartName],\n ...action.payload.state\n }\n };\n }\n\n default:\n return state;\n }\n};\n","import * as actionTypes from '../actionTypes';\n\nexport const currentFilterReducer = (\n state = {\n id: null,\n name: null,\n searchCriteria: null,\n isFilterLoading: false,\n saveChangesModalState: {\n isOpen: false\n }\n },\n action\n) => {\n switch (action.type) {\n case actionTypes.updateCurrentFilter:\n return {\n ...state,\n ...action.payload.currentFilter\n };\n\n case actionTypes.openSaveFilterChangesModal:\n return {\n ...state,\n saveChangesModalState: {\n isOpen: true,\n changeType: action.payload.changeType\n }\n };\n\n case actionTypes.closeSaveFilterChangesModal:\n return {\n ...state,\n saveChangesModalState: {\n isOpen: false\n }\n };\n\n default:\n return state;\n }\n};\n","import * as actionTypes from '../actionTypes';\n\nexport const pagingReducer = (\n state = {\n currentPage: 1,\n pageSize: 50\n },\n action\n) => {\n switch (action.type) {\n case actionTypes.setSearchPageNumber:\n return {\n ...state,\n currentPage: action.payload.newPage\n };\n\n default:\n return state;\n }\n};\n","import React, { useState } from 'react';\nimport ReactGA from 'react-ga4';\nimport Theme from './components/theme/Theme';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Loader } from './components/utils/loader';\nimport { auth } from './auth/FirebaseApp';\nimport { PageContainer } from './components/account/PageLayout';\nimport { AppRoutes } from './AppRoutes';\nimport configureStore from './redux/configureStore';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport 'rsuite/dist/styles/rsuite-default.css';\nimport './custom.css';\n\nconst reduxStore = configureStore(undefined);\nReactGA.initialize('G-ZF7V282HFF');\n\nconst App: React.FC = () => {\n const [isAuthLoading, setIsAuthLoading] = useState(true);\n auth.authStateReady().then(() => setIsAuthLoading(false));\n\n if (isAuthLoading)\n return (\n \n \n \n );\n\n return (\n
\n \n \n \n \n \n \n \n
\n );\n};\n\nexport default App;\n","import { createStore, compose, applyMiddleware } from 'redux';\nimport reduxImmutableStateInvariant from 'redux-immutable-state-invariant';\nimport thunk from 'redux-thunk';\nimport {\n currentSearchCriteriaReducer,\n CurrentSearchCriteriaReducerState\n} from './reducers/currentSearchCriteriaReducer';\nimport {\n searchResultReducer,\n SearchResultReducerState\n} from './reducers/searchResultReducer';\nimport {\n lastSearchedCriteriaReducer,\n LastSearchedCriteriaReducerState\n} from './reducers/lastSearchedCriteriaReducer';\nimport { navigationReducer } from './reducers/navigationReducer';\nimport { statisticsReducer } from './reducers/statisticsReducer';\nimport { currentFilterReducer } from './reducers/currentFilterReducer';\nimport { pagingReducer } from './reducers/pagingReducer';\nimport { combineReducers } from 'redux';\n\nexport interface ReduxState {\n currentSearchCriteria: CurrentSearchCriteriaReducerState;\n paging: any;\n searchResult: SearchResultReducerState;\n currentFilter: any;\n lastSearchedCriteria: LastSearchedCriteriaReducerState;\n navigation: any;\n statistics: any;\n}\n\nexport default function configureStore(initialState: any) {\n const composeEnhancers =\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; //redux dev tools\n\n return createStore(\n combineReducers({\n currentSearchCriteria: currentSearchCriteriaReducer,\n paging: pagingReducer,\n searchResult: searchResultReducer,\n currentFilter: currentFilterReducer,\n lastSearchedCriteria: lastSearchedCriteriaReducer,\n navigation: navigationReducer,\n statistics: statisticsReducer\n }),\n initialState,\n composeEnhancers(applyMiddleware(reduxImmutableStateInvariant(), thunk)) //warn on state mutation\n );\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log(\n 'New content is available; please refresh.'\n );\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') ===\n -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregisterServiceWorker() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport { unregisterServiceWorker } from './registerServiceWorker';\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(, rootElement);\n\n// for future reference: thats how it will be done in react-dom v18\n// const root = ReactDOM.createRoot(document.getElementById('root'));\n// root.render();\n\n// unregistering service worker because of cache busting problems\n// https://stackoverflow.com/questions/49604821/cache-busting-with-cra-react\n\nunregisterServiceWorker();\n"],"sourceRoot":""}