{"version":3,"sources":["aqua-delivery-web-client-ui/hooks/useDocumentLanguage.ts","aqua-delivery-web-client-ui/localization/localizationConfig.ts","App.tsx","serviceWorker.ts","index.tsx","routes/partner-cabinet/routes/vending/components/section/Section.tsx","routes/partner-cabinet/routes/vending/components/section/SectionHeader.tsx","aqua-delivery-web-client-ui/components/EmptyPanel.tsx","routes/partner-cabinet/routes/finish-registration/components/stepperHelper/StepNameEnum.ts","routes/partner-cabinet/routes/vending/utils/vendingTelemetryUtils.ts","routes/partner-cabinet/routes/vending/queries/useGetFillingTelemetry.ts","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/FillingsGraph.tsx","routes/partner-cabinet/routes/vending/components/section/SectionBody.tsx","routes/partner-cabinet/routes/vending/components/base-graph/SliceTooltip.tsx","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/FillingsGraphTooltip.tsx","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/layers/BarLayer.tsx","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/layers/PercentLayer.tsx","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/MobileFillingsGraph.tsx","routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/Indicators.tsx","aqua-delivery-web-client-ui/Utils.ts","aqua-delivery-web-client-ui/hooks/useWindowSize.tsx","aqua-delivery-web-client-ui/hooks/useThrottle.ts","aqua-delivery-web-client-ui/components/AbsoluteFilledLoader.tsx","aqua-delivery-web-client-ui/customFetch.ts","routes/login/types/index.ts","routes/partner-cabinet/routes/vending/components/base-graph/BaseLineGraph.tsx","routes/partner-cabinet/routes/vending/components/base-graph/GraphLoader.tsx","aqua-delivery-client-graphql/iot/queries/useTelemetry.ts","routes/partner-cabinet/routes/vending/components/base-graph/Graph.tsx","routes/partner-cabinet/routes/vending/hooks/usePeriodGraphPoints.ts","aqua-delivery-web-client-ui/components/ui/inputs/DateRangeInput.tsx","routes/partner-cabinet/routes/vending/components/PeriodSwitcher.tsx","routes/partner-cabinet/routes/vending/components/section/PeriodSectionHeader.tsx","aqua-delivery-client-graphql/Scheme.ts","translations/ru/login.ts","translations/ru/finishRegistration.ts","translations/ru/index.ts","translations/ru/registration.ts","translations/ru/preregistration.ts","translations/ru/layout.ts","translations/ru/dashboard.ts","translations/ru/staticPages.ts","translations/ru/transactions.ts","translations/ru/partnerSettings.ts","translations/ru/recoveryPassword.ts","translations/ru/profile.ts","translations/ru/vending.ts","translations/ru/couriers.ts","translations/ru/materials.ts","translations/ru/banners.ts","translations/ru/smsReport.ts","translations/en/index.ts","translations/en/registration.ts","translations/en/preregistration.ts","translations/en/login.ts","translations/en/layout.ts","translations/en/dashboard.ts","translations/en/staticPages.ts","translations/en/transactions.ts","translations/en/partnerSettings.ts","translations/en/finishRegistration.ts","translations/en/recoveryPassword.ts","translations/en/profile.ts","translations/en/vending.ts","translations/en/couriers.ts","translations/en/materials.ts","translations/en/banners.ts","translations/en/smsReport.ts","translations/index.ts","aqua-delivery-client-graphql/iot/entities/RegistryEntity.tsx","hooks/useAntdLocale.tsx","aqua-delivery-web-client-ui/components/loader/LoaderContext.tsx","routes/partner-cabinet/routes/vending/components/base-graph/theme.ts","aqua-delivery-client-graphql/iot/queries/useGetRegistry.ts","routes/partner-cabinet/routes/vending/components/base-graph/PointTooltip.tsx","routes/partner-cabinet/routes/vending/components/graphs/TemperatureGraph.tsx","routes/partner-cabinet/routes/vending/components/graphs/VolumeGraph.tsx","routes/partner-cabinet/routes/vending/Registry.tsx","aqua-delivery-web-client-ui/components/ui/DatePicker.ts","aqua-delivery-web-client-ui/components/ui/Radio.tsx","aqua-delivery-web-client-ui/components/icon/AntSvgIcon.tsx","aqua-delivery-web-client-ui/icons.tsx","aqua-delivery-web-client-ui/translations/plural/ru.ts","aqua-delivery-web-client-ui/translations/plural/en.ts","aqua-delivery-web-client-ui/i18n.tsx","aqua-delivery-web-client-ui/components/SVG.tsx","aqua-delivery-web-client-ui/components/network/NetworkContext.tsx","aqua-delivery-web-client-ui/components/network/withNetworkLayer.tsx","aqua-delivery-web-client-ui/YandexAnalytics.tsx","aqua-delivery-web-client-ui/components/network/NetworkLayer.tsx","aqua-delivery-web-client-ui/components/loader/LoaderContainer.tsx","aqua-delivery-web-client-ui/components/View.tsx","aqua-delivery-web-client-ui/hooks/useTranslation.ts","aqua-delivery-web-client-ui/hooks/useAntdLocale.ts","aqua-delivery-web-client-ui/translations/ui/ru.ts","aqua-delivery-web-client-ui/translations/ui/en.ts","aqua-delivery-web-client-ui/translations/ui/index.ts","aqua-delivery-client-graphql/types.ts","aqua-delivery-client-graphql/iot/entities/EventMessageEntity.tsx","config.ts","aqua-delivery-web-client-ui/components/loader/SuspenseWithLoader.tsx","aqua-delivery-web-client-ui/localization/Localization.ts","hooks/useLocalTranslation.ts","aqua-delivery-web-client-ui/components/loader/Loader.tsx","aqua-delivery-web-client-ui/components/page/Title.tsx","aqua-delivery-web-client-ui/assets/svg/arrow2.svg","aqua-delivery-client-graphql/iot/entities/PostalAddressEntity.tsx","aqua-delivery-web-client-ui/components/Help.tsx","aqua-delivery-client-graphql/utils.ts","types.ts","aqua-delivery-client-graphql/iot/entities/TelemetryReportRequestEntity.tsx","aqua-delivery-web-client-ui/CurrencyHelper.ts","aqua-delivery-web-client-ui/AuthService.ts","routes/partner-cabinet/routes/vending/hooks/usePeriod.ts","routes/partner-cabinet/routes/vending/utils/graphUtils.ts"],"names":["useDocumentLanguage","htmlElement","useMemo","document","querySelector","updateDocumentLocale","useCallback","locale","lang","localizationConfig","countries","AZ","currency","AM","BY","KZ","KG","MD","RU","TJ","UZ","BE","GR","LT","PT","ES","LU","FR","SI","DK","MT","SK","DE","IT","NL","FI","EE","CY","AT","IE","LV","defaultCurrency","history","createBrowserHistory","LoginAsync","lazy","PartnerAsync","PreRegistrationAsync","RegistrationAsync","ConfirmRegistrationAsync","FinishRegistrationAsync","RecoveryPasswordAsync","TechnicalWorkPageAsync","Page404Async","I18nSetConfig","translations","ymOptions","clickmap","webvisor","ymInitializerOptions","version","App","React","useEffect","window","title","useState","I18n","setLocale","antdLocale","useAntdLocale","useUrlSearchParams","isAppUpdating","Boolean","appParams","config","authToken","AuthService","getToken","userVisitParams","UserID","decodeToken","uuid","Provider","value","YandexAnalytics","accounts","metrics","ym","visitParams","LoaderContainer","height","innerHeight","SuspenseWithLoader","fallback","AbsoluteFilledLoader","renderEmpty","EmptyPanel","Localization","path","component","exact","isLoggedIn","redirectComponent","regexp","from","to","find","mapItem","test","redirectRulesWhenUserLoggedIn","location","pathname","hostname","match","addEventListener","event","message","data","source","adminTokens","payload","console","log","RootComponent","isReady","setIsReady","receiveMessage","interval","setInterval","env","referrerUrl","referrer","href","URL","searchParams","get","checkAdmin","removeEventListener","initConfig","clearInterval","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","then","registration","unregister","Section","containerStyle","className","children","flexDirection","classNames","style","SectionHeader","hideFilters","titleProps","alignItems","Title","level","condition","Sub","props","image","PRESENTED_IMAGE_SIMPLE","description","t","StepName","VendingTelemetryStatus","VendingTelemetryUtils","isCriticalLevel","criticalLevel","hasCriticalTelemetry","waterLevel","getVendingStatus","active","telemetry","Critical","Active","NonActive","FillingGraphLegends","transformData","transformLineChartData","TelemetryReportEntity","toObject","values","map","EventMessageEntity","convertToLiters","useGetFillingTelemetry","registryId","unitInterval","formattedChartDataPeriod","variables","registry","aggregationType","AggregationType","Sum","composedQueries","composeQueries","total","type","TelemetryType","Volume","mobile","Filled","generateTelemetryReportQuery","query","gql","fragment","useQuery","fetchPolicy","pollInterval","isLoading","loading","totalFillingsLine","mobileAppFillingsLine","SectionBody","View","LegendRow","color","text","serieName","backgroundColor","Text","fontWeight","marginLeft","justifySelf","SliceTooltip","FillingsGraphTooltip","dayjs","useContext","RegistryContext","useLocalTranslation","vending","liters","slice","points","x","format","point","serieColor","y","key","id","serieId","toString","BarLayer","legends","fillingsGraph","innerWidth","serieSequence","MobileAppVolume","TotalVolume","groupedPoints","reduce","groups","groupIndex","findIndex","group","barGroupWidth","Math","max","MAX_FILLINGS_IN_DAY","barMaxWidth","barWidth","Object","entries","index","width","fill","PercentLayer","mainValue","dataWithArc","item","dominantBaseline","textAnchor","fontSize","MobileFillingsGraph","totalVolume","mobileVolume","roundNumber","hiddenLabel","innerRadius","enableRadialLabels","colors","sliceLabelsTextColor","sliceLabel","layers","theme","nivoTheme","Indicators","parameters","marginTop","gutter","totalFillings","precision","suffix","mobileFillings","defaultPeriod","NamedPeriod","Days","graphLayers","FillingsGraph","timezone","usePeriod","namedPeriod","useNamedPeriod","getNamedPeriodDates","period","utcPeriod","setPeriod","isDailyPeriod","usePeriodGraphPoints","defaultPoints","legend","graphTitle","fillings","isMobile","useWindowSize","graphMargins","top","right","bottom","left","axisLeftProps","waterVolume","Number","isInteger","chartPeriodDates","getChartDataUtcPeriod","getUnitInterval","formatChartDataPeriod","chartData","sum","chartDataLength","filter","length","minMaxValues","min","graphLegends","anchor","direction","itemHeight","itemWidth","translateY","symbolSize","symbolShape","axisBottomProps","PeriodSectionHeader","maxWidth","Graph","GraphLoader","spinning","BaseLineGraph","margin","sliceTooltip","enableCrosshair","crosshairType","enableSlices","copy","clipboard","writeText","e","ta","createElement","cssText","body","appendChild","focus","select","execCommand","remove","setNativeProps","callback","element","setNativePropsByTag","getElementsByTagName","i","elm","createAnimation","options","prop","transition","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","checkFilesIsImages","files","every","getTimezoneFromCoordinates","latitude","floor","setEndOfDay","date","set","setStartOfDay","extractNumbers","replace","batchedUpdate","unstable_batchedUpdates","transformObjectToKeysArray","obj","order","isDateInPeriod","startDate","maxPeriod","maxPeriodUnits","abs","diff","formatPhoneNumber","internationalFormat","parsePhoneNumber","formatInternational","split","join","ScreenSize","useThrottle","delay","cbRef","useRef","current","throttle","arg","isTablet","screenSize","sm","size","setSize","throttledListener","windowWidth","xxl","xl","lg","md","xs","useLayoutEffect","other","position","maxHeight","display","justifyContent","setConfig","APIs","authorizeApi","name","token","setHeaders","signHeaders","headers","fetch","defaults","common","setBaseUrl","baseURL","logout","authHeaderKey","repeatRequest","response","a","url","method","catch","enrichToken","enrichTokenUrl","undefined","refreshToken","isUnauthorizedOnTokenCreation","status","indexOf","needRefresh","Authorization","needEnrich","getErrorMessage","isAxiosError","logoutAPI","keys","forEach","createApi","defaultGetParams","axios","create","responseType","timeout","Pragma","Expires","Source","validateStatus","interceptors","request","use","conf","params","authorizationToken","api","AuthMethod","xScale","graphMargin","pointBorderColor","memo","axisBottomTickMobileStyle","tickPadding","tickRotation","minMax","yScale","axisBottom","orient","tickSize","axisLeft","legendOffset","legendPosition","defs","offset","axisTop","axisRight","enableGridX","pointBorderWidth","pointColor","pointSize","lineWidth","pointLabelYOffset","motionConfig","enableArea","areaOpacity","useMesh","indicator","namedPeriodIntervals","days","weeks","months","getNamedPeriodInterval","DateRangeInput","defaultStart","defaultEnd","placeholderFrom","placeholderTo","startDatePickerProps","endDatePickerProps","containerStyles","noFutureDate","strictDateMode","setStartDate","endDate","setEndDate","endOpen","setEndOpen","startDateNewValue","endDateNewValue","DatePicker","disabledDate","startValue","endValueUnixTime","unix","startValueUnixTime","placeholder","onChange","onOpenChange","open","minWidth","flex","showToday","padding","endValue","disabled","PeriodButton","caption","Radio","Button","PeriodSwitcher","defaultValue","Group","disableSwitcher","onPeriodChange","onDatepickerChange","tz","utcOffset","clone","periods","periodSwitcher","datePicker","allowClear","target","Weeks","Months","Scheme","sheme","_scheme","_fragmentTypes","filteredData","__schema","types","possibleTypes","apolloFragments","this","operationName","fullScheme","Node","getEntityType","mutationType","mutation","getMutation","inputFields","field","f","fields","kind","ofType","entityName","fieldName","help","entity","fieldScheme","inputVariables","excludeFields","extraFields","excludeItem","required","list","typeName","mutationName","returnedValues","excludePayloadFields","getInputFields","lcFirst","_interface","getPossibleTypes","prev","form","username","label","validations","require","email","password","rememberMe","phoneNumber","phone","submitButton","authMethods","Phone","Email","links","recoveryPassword","buttons","next","complete","pricingPlans","title2","subtitle","pricesTable","messages","notSelectedPricingPlan","labels","pricingPlanDuration","pricingPlanMonthlyPrice","pricingPlanPrice","launchAmount","pricingPlanActions","payment","card","bankCard","content","contract","oferta","paymentMethodsNotAvailable","callUs","validators","download","back","tooltips","payWithOnlinePayment","company","save","skip","navigation","about","contacts","dispatchers","paymmentMethods","details","assets","steps","main","brandName","directorPhoneNumber","directorEmail","companyPhoneNumber","companyEmail","pickupLocation","dispatcherPhoneNumber","dispatcherEmail","site","check","vkLink","instagramLink","misc","paymentMethods","onlinePayment","notSelected","sendEmail","sendEmail2","companyDetails","partnerFinish","discription","stepper","pricingPlan","companyInfo","tryOrderCabinet","tryMobileApp","done","equal","repeatPassword","partnerName","itn","country","contractEtching","labelStart","labelLink","labelFinish","preregistration","spam","firstName","agreement","alreadyHaveAccount","login","layout","nav","dashboard","balance","reports","documents","couriers","materials","banners","smsReport","header","user","mobileMenu","footer","contractOffer","blocks","marketerCabinet","orderCabinet","settingsCabinet","clientApp","orderSite","knowledge","welcome","subTitle","subPhone","apple","google","smartLink","showPassword","hidePassword","linkCopied","goToCabinet","table","panel","extra","state","invoice_created","invoice_paid","invoice_archived","staticPages","comingSoon","transactions","totalPay","debit","paymentMethod","deposit","deposit2","partnerSettings","intervals","deliveryTime","in","beforeEnd","beforeStart","example","deleted","dialogs","delete","ok","cancel","addDelivery","addInterval","helpers","sameDayDelivery","expressDelivery","districts","validation","finishRegistration","verificationCode","repeat","phoneStep","verificationStep","createPasswordStep","sendCode","createPassword","repeatVerification","successResetPassword","requestResetPassword","profile","tabs","companyProfile","integrations","companyName","companyLogo","companyLocations","newCity","notValid","plans","tariffDocumentName","yourPlan","changePlan","amo","amoButtonTitle","amoPopupTitle","connected","successPricingPlanUpdate","successCompanyLogoUpdate","successCompanyNameUpdate","successCompanyLocationsUpdate","successCompanyLocationCreate","successCompanyItnUpdate","meters","timezoneTitle","timezoneHelper","columns","address","temperature","lastActivity","onTheMap","temperatureGraph","waterVolumeGraph","vendingPopup","goToVendingScreen","colorLegend","addCourier","notVerified","deleteCourier","middleName","familyName","success","deleteButton","titleNoMiddleName","material","purpose","preview","newBanner","editBanner","editBannerShort","editStoryShort","displayLimits","ClickBanner","Story","InfoBanner","ProductSetBanner","deliveryAreas","bannerPreview","storyPreview","banner","story","storySlide","link","screenInApp","productSetNumber","buttonCaption","duration","pageMobile","linkType","targetTab","linkTypes","external","deeplink","notSpecified","appScreens","catalog","invite","chat","contact","mainProfile","myProfile","coinsHistory","enablePeriodLimit","enableOrdersLimit","showOnStart","button","addBanner","addStory","addSlideStory","deleteBanner","deleteStory","deleteSlideStory","saveChanges","deleteConfirmation","titleBanner","titleStory","titleSlideStory","functionalityNotConnected","noLonger","symbolsLeft","uploadPreview","uploadBanner","uploadStorySlide","bannerUpdated","storyUpdated","storySlideUpdated","bannerDeleted","storyDeleted","storySlideDeleted","clickBannerAdded","storyAdded","storySlideAdded","infoBannerAdded","productSetBannerAdded","sec","optional","limitQuantityOrders","activeFrom","activeTo","activeFromTo","settings","emptyDescription","cost","createdAt","deliveryDate","totalCost","reportDownload","authorization","marketing","selector","prefix","datepiker","translateMap","createTranslationMap","ru","en","RegistryEntity","createId","locales","I18nContext","LoaderContext","setLoaderState","grid","line","stroke","strokeWidth","axis","ticks","opacity","PostalAddressEntity","PointTooltip","TemperatureTooltip","formatWithSign","TemperatureGraph","Temperature","Avg","useTelemetry","temperatureLoading","transformTimelineChartData","getTelemetryReport","round","aggregatedData","series","areaBaselineValue","tooltip","WaterVolumeTooltip","VolumeGraph","Height","waterVolumeLoading","createContext","createDayjsWithTimezone","withNetworkLayer","service","useHistory","goBack","push","registryData","postalAddress","pageTitle","streetAddress","addressLocality","buildPageTitle","coordinates","titleStyle","lineHeight","onBackButtonClick","strong","Help","generatePicker","dayjsGenerateConfig","AntSvgIcon","forwardRef","ref","AntdIcon","createIcon","icon","AndroidFilled","SearchOutlinedBase","AndroidFilledBase","AppleFilled","AppleFilledBase","MailOutlined","CopyOutlinedBase","MailOutlinedBase","PhoneOutlined","PhoneOutlinedBase","CheckCircleOutlined","CheckCircleOutlinedBase","ClockCircleOutlined","ClockCircleOutlinedBase","QuestionCircleFilled","QuestionCircleFilledBase","CreditCardFilled","CreditCardFilledBase","CheckOutlined","CheckOutlinedBase","PlusOutlined","CloseCircleOutlinedBase","CloseCircleFilledBase","PlusOutlinedBase","MinusOutlined","MinusOutlinedBase","DeleteOutlined","WarningTwoToneBase","SyncOutlinedBase","DeleteOutlinedBase","ExclamationCircleTwoTone","LinkOutlinedBase","UserOutlinedBase","MoreOutlinedBase","EditOutlinedBase","ExclamationCircleTwoToneBase","LoadingOutlined","InfoCircleOutlinedBase","HistoryOutlinedBase","EnvironmentOutlinedBase","LoadingOutlinedBase","DownOutlined","DownOutlinedBase","PlusCircleOutlined","PlusCircleOutlinedBase","SortDescendingOutlined","SortDescendingOutlinedBase","SortAscendingOutlined","SortAscendingOutlinedBase","PictureOutlined","CaretDownOutlinedBase","PictureOutlinedBase","VideoCameraOutlined","VideoCameraOutlinedBase","FileOutlined","FileOutlinedBase","EyeOutlined","EyeOutlinedBase","DownloadOutlined","DownloadOutlinedBase","one","few","many","hours","minutes","partnersDative","definedLocale","i18n","extend","utc","enableFallback","defaultLocale","pluralizationFunction","pluralization","pluralizeRu","count","uiTranslations","ui","pluralTranslations","plural","momentLocatization","dayjsRu","dayjsEn","setI18nConfig","localStorage","setItem","userLocale","includes","isLocaleDefined","language","userLanguage","process","REACT_APP_NAME","getItem","translation","flatten","unflatten","object","getPlural","SVG","rotate","defaultStroke","SourceComponent","transform","NetworkContext","scheme","createAssetUrl","uri","clients","WrappedComponent","userParams","yandexMetrika","schemas","requests","NetworkLayer","loader","enableScheme","enrichTokenOnInit","serviceUri","base","client","setClient","setScheme","setRequest","initCacheManager","configCache","dataIdFromObject","r","addTypename","cache","InMemoryCache","introspectionQuery","fragmentsTypes","fragmentTypes","fragment_matcher","IntrospectionFragmentMatcher","introspectionQueryResultData","fragmentMatcher","initApolloClient","Error","serviceScheme","apolloClient","ApolloClient","ApolloLink","onError","graphQLErrors","networkError","validationErrors","errorMessage","debugMessage","createUploadLink","buildAxiosFetch","Axios","context","serviceName","assetUrl","serviceUrl","domain","tip","setState","showLoader","states","minHeight","center","inline","wrap","centerStyles","inlineStyles","flexWrap","useTranslation","paths","translate","Array","isArray","fromEntries","copyButton","fileField","multipleLabel","multipleFilesLabel","imageField","autoCompleteField","daysField","weekdays","weekends","selectorLang","cloudPaymentsButton","noData","countryPicker","selectCountry","checkboxSelector","checkAll","technicalWorkPage","translationMap","ApproveCredit","DirectCredit","Debit","SortingOrder","UserRoles","EventMessage","eventType","milliliters","getEnvVariable","getBaseUrl","localStorageKey","envKey","baseAuthApi","basePartnerApi","baseCourierApi","baseTemporalApi","baseWikiApi","baseMarketingApi","baseSMSApi","baseBillingApi","basePaymentApi","baseDeliveryPeriodApi","basePricingPlansApi","baseInvoiceApi","baseIotApi","baseAmoApi","invoiceClientUrl","tokenStoreKey","refreshTokenStoreKey","cloudPaymentsPublicId","apiUrl","policylUrl","contractUrl","partnerLoginUrl","payPalClientId","knowledgeUrl","addressAutocomplete","contactEmail","paymentMethodsAvailability","ga","gtm","auth","refreshTokenUrl","resetPasswordRequest","confirmSms","partner","courier","temporal","wiki","sms","billing","deliveryPeriod","invoice","iot","setCustomFetchConfig","root","Loader","possible","charAt","random","makeid","loaderId","BackButton","onClick","BackSVG","isBackButtonVisible","titleContainerStyle","ellipsis","_extends","assign","arguments","prototype","hasOwnProperty","call","apply","_ref","d","viewBox","borderRadius","collectionFragment","fragmentName","extantion","collectionFields","parseUuid","reverse","convertDateToServerFormat","timeFormat","prefixSum","confirmed","withCurrency","Intl","NumberFormat","getMonthlyPayment","amount","str","toLowerCase","violations","violation","propertyPath","extensions","parseError","axiosError","errors","apolloError","number","precisionPow","pow","queries","queryGenerator","dateDiff","ceil","Currency","isRuble","currencyCode","adminToken","URLSearchParams","search","AppConfig","Cookies","getRefreshToken","checkRememberMe","redirectLoginForm","removeItem","checkRoles","roles","getUserInfo","role","temp","JSON","stringify","refresh_token","json","setAccessToken","enrichUrl","jwtDecode","remember","getUserId","userIsAdmin","currDate","subtract","initialPeriod","periodDiff","currentFrom","currentBefore","toDate","sort","b","normalizedData","arr","nextItem","averageDate","normalizeTimelinePositiveNegativeTransition","positiveValues","negativeValues"],"mappings":"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","file":"static/js/main.f02fbd4b.chunk.js","sourcesContent":["import { useMemo, useCallback } from 'react';\n\nconst useDocumentLanguage = () => {\n const htmlElement = useMemo(() => document.querySelector('html'), []);\n\n const updateDocumentLocale = useCallback(\n (locale: string) => {\n if (htmlElement) htmlElement.lang = locale;\n },\n [htmlElement],\n );\n\n return {\n updateDocumentLocale,\n };\n};\n\nexport default useDocumentLanguage;\n","import { LocalizationContextValues } from './Localization';\n\nconst localizationConfig: LocalizationContextValues = {\n countries: {\n AZ: {\n currency: 'RUB',\n },\n AM: {\n currency: 'RUB',\n },\n BY: {\n currency: 'RUB',\n },\n KZ: {\n currency: 'RUB',\n },\n KG: {\n currency: 'RUB',\n },\n MD: {\n currency: 'RUB',\n },\n RU: {\n currency: 'RUB',\n },\n TJ: {\n currency: 'RUB',\n },\n UZ: {\n currency: 'RUB',\n },\n BE: {\n currency: 'EUR',\n },\n GR: {\n currency: 'EUR',\n },\n LT: {\n currency: 'EUR',\n },\n PT: {\n currency: 'EUR',\n },\n ES: {\n currency: 'EUR',\n },\n LU: {\n currency: 'EUR',\n },\n FR: {\n currency: 'EUR',\n },\n SI: {\n currency: 'EUR',\n },\n DK: {\n currency: 'EUR',\n },\n MT: {\n currency: 'EUR',\n },\n SK: {\n currency: 'EUR',\n },\n DE: {\n currency: 'EUR',\n },\n IT: {\n currency: 'EUR',\n },\n NL: {\n currency: 'EUR',\n },\n FI: {\n currency: 'EUR',\n },\n EE: {\n currency: 'EUR',\n },\n CY: {\n currency: 'EUR',\n },\n AT: {\n currency: 'EUR',\n },\n IE: {\n currency: 'EUR',\n },\n LV: {\n currency: 'EUR',\n },\n },\n defaultCurrency: 'USD',\n};\n\nexport default localizationConfig;\n","import React from 'react';\n\nimport { Router, Switch, Route, Redirect } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { ConfigProvider } from 'antd';\nimport { useUrlSearchParams } from 'use-url-search-params';\nimport 'url-search-params-polyfill';\nimport { lazy } from '@loadable/component';\n\nimport AuthService from './aqua-delivery-web-client-ui/AuthService';\nimport YandexAnalytics from './aqua-delivery-web-client-ui/YandexAnalytics';\nimport I18n, { I18nSetConfig, I18nContext } from './aqua-delivery-web-client-ui/i18n';\nimport SuspenseWithLoader from './aqua-delivery-web-client-ui/components/loader/SuspenseWithLoader';\nimport LoaderContainer from './aqua-delivery-web-client-ui/components/loader/LoaderContainer';\nimport AbsoluteFilledLoader from './aqua-delivery-web-client-ui/components/AbsoluteFilledLoader';\nimport EmptyPanel from './aqua-delivery-web-client-ui/components/EmptyPanel';\nimport useDocumentLanguage from './aqua-delivery-web-client-ui/hooks/useDocumentLanguage';\nimport Localization from './aqua-delivery-web-client-ui/localization/Localization';\nimport localizationConfig from './aqua-delivery-web-client-ui/localization/localizationConfig';\nimport translations from './translations';\nimport useAntdLocale from './hooks/useAntdLocale';\nimport { config } from './config';\n\nimport './aqua-delivery-web-client-ui/assets/styles/common.less';\n\nconst history = createBrowserHistory();\n\nconst LoginAsync = lazy(() => import('./routes/login'));\nconst PartnerAsync = lazy(() => import('./routes/partner-cabinet'));\nconst PreRegistrationAsync = lazy(() => import('./routes/begin-registration'));\nconst RegistrationAsync = lazy(() => import('./routes/registration'));\nconst ConfirmRegistrationAsync = lazy(() => import('./routes/confirm-registration'));\nconst FinishRegistrationAsync = lazy(() => import('./routes/registration/FinishRegistration'));\nconst RecoveryPasswordAsync = lazy(() => import('./routes/recoveryPassword/RecoveryPassword'));\nconst TechnicalWorkPageAsync = lazy(\n () => import('./aqua-delivery-web-client-ui/components/static-pages/TechnicalWorkPage'),\n);\nconst Page404Async = lazy(\n () => import('./aqua-delivery-web-client-ui/components/static-pages/Page404'),\n);\n\nI18nSetConfig({ translations });\n\nconst ymOptions = { clickmap: true, webvisor: true };\n\nconst ymInitializerOptions = { version: '2' };\n\nconst App: React.FC = () => {\n React.useEffect(() => {\n window.document.title = 'Aqua Delivery';\n }, []);\n\n const [locale, setLocale] = React.useState(I18n.locale);\n\n const { antdLocale } = useAntdLocale();\n\n const [appParams] = useUrlSearchParams({}, { isAppUpdating: Boolean });\n\n const isAppUpdating = config.isAppUpdating && appParams.isAppUpdating !== false;\n\n const { updateDocumentLocale } = useDocumentLanguage();\n\n React.useEffect(() => {\n updateDocumentLocale(locale);\n }, [locale, updateDocumentLocale]);\n\n const redirectRulesWhenUserLoggedIn = (path: string) => {\n const regexpMap: { regexp: RegExp; component: React.ReactNode }[] = [\n { regexp: /\\/login/, component: },\n { regexp: /\\/registration/, component: },\n ];\n\n const redirectComponent = regexpMap.find(mapItem => mapItem.regexp.test(path));\n\n return redirectComponent?.component;\n };\n\n const authToken = AuthService.getToken();\n\n const userVisitParams = React.useMemo(() => {\n if (!authToken) return undefined;\n\n const userInfo = AuthService.decodeToken(authToken);\n\n return {\n UserID: userInfo.uuid,\n };\n }, [authToken]);\n\n return (\n {\n I18nSetConfig({ locale });\n setLocale(locale);\n },\n }}\n >\n \n \n }>\n {isAppUpdating ? (\n \n ) : (\n }>\n \n \n \n \n {AuthService.isLoggedIn() &&\n redirectRulesWhenUserLoggedIn(\n history.location.pathname,\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\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 subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\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(\n process.env.PUBLIC_URL,\n window.location.href\n );\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/facebook/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. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\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 // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -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, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport App from './App';\nimport AbsoluteFilledLoader from './aqua-delivery-web-client-ui/components/AbsoluteFilledLoader';\nimport { initConfig } from './config';\nimport * as serviceWorker from './serviceWorker';\nimport { MessageType, TokensType } from './types';\n\nimport './index.css';\n\ndeclare global {\n interface Window {\n adminTokens: TokensType;\n }\n}\n\nfunction receiveMessage(event: MessageEvent) {\n const message = event.data as MessageType;\n if (message && message.source && message.source === 'tokens') {\n window.adminTokens = message.payload;\n }\n}\n\nwindow.addEventListener('message', receiveMessage);\n\nif (process.env.NODE_ENV === 'production') console.log = () => {};\n\nconst checkAdmin = () => {\n const referrerUrl = document.referrer || window.location.href;\n const url = new URL(referrerUrl);\n const isAdmin = url.searchParams.get('isAdmin');\n if (isAdmin) {\n return !!window.adminTokens;\n }\n return true;\n};\n\nfunction RootComponent() {\n const [isReady, setIsReady] = React.useState(false);\n\n React.useEffect(() => {\n function receiveMessage(event: MessageEvent) {\n const message = event.data as MessageType;\n if (message && message.source === 'tokens') {\n window.adminTokens = message.payload;\n }\n }\n\n window.addEventListener('message', receiveMessage);\n\n const interval = setInterval(() => {\n //@ts-ignore\n if (window.env && checkAdmin()) {\n if (!!window.adminTokens) {\n window.removeEventListener('message', receiveMessage);\n }\n initConfig();\n setIsReady(true);\n clearInterval(interval);\n }\n }, 1500);\n\n return () => {\n clearInterval(interval);\n window.removeEventListener('message', receiveMessage);\n };\n }, []);\n\n return isReady ? : ;\n}\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import React, { FC } from 'react';\n\nimport classNames from 'classnames';\n\nimport View from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\ntype SectionProps = {\n containerStyle?: React.CSSProperties;\n className?: string;\n}\n\nconst Section: React.FC = ({ containerStyle, className, children }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default Section;","import React, { FC } from 'react';\n\nimport { Typography } from 'antd';\nimport { When } from 'react-if';\nimport { TypographyProps } from 'antd/lib/typography/Typography';\n\nimport View from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\nexport type SectionHeaderProps = {\n title: string,\n containerStyle?: React.CSSProperties,\n titleProps?: TypographyProps,\n hideFilters?: boolean,\n}\n\nconst SectionSubHeader: FC = ({ title, ...props }) => {\n return (\n \n {title}\n \n );\n}\n\nconst SectionHeader: React.FC & { Sub: typeof SectionSubHeader } = ({ title, children, containerStyle, hideFilters, titleProps }) => {\n return (\n \n {title}\n \n \n {children}\n \n \n \n )\n}\n\nSectionHeader.Sub = SectionSubHeader;\n\nexport default SectionHeader;","import React from 'react';\n\nimport { Empty } from 'antd';\n\nimport View from './View';\nimport { t } from '../i18n';\n\nconst EmptyPanel: React.FC<{ containerStyle?: React.CSSProperties }> = ({ containerStyle }) => {\n return (\n \n \n \n )\n}\n\nexport default EmptyPanel;","export enum StepName {\n companyInfo = \"companyInfo\",\n pricingPlan = \"pricingPlan\",\n payment = \"payment\"\n}","type VendingTelemetry = {\n waterLevel: null\n | {\n value: number | null,\n criticalLevel: number,\n },\n}\n\nexport enum VendingTelemetryStatus {\n NonActive = 'non-active',\n Active = 'active',\n Critical = 'critical',\n}\n\nconst VendingTelemetryUtils = {\n isCriticalLevel: (value: number, criticalLevel: number) => value < criticalLevel,\n hasCriticalTelemetry: ({ waterLevel }: VendingTelemetry) => {\n return waterLevel && waterLevel.value !== null\n ? VendingTelemetryUtils.isCriticalLevel(waterLevel.value, waterLevel.criticalLevel)\n : false;\n },\n getVendingStatus: (active: boolean, telemetry: VendingTelemetry): VendingTelemetryStatus => {\n if (!active) return VendingTelemetryStatus.NonActive;\n if (VendingTelemetryUtils.hasCriticalTelemetry(telemetry)) return VendingTelemetryStatus.Critical;\n\n return VendingTelemetryStatus.Active;\n },\n}\n\nexport default VendingTelemetryUtils;","import { useMemo } from \"react\";\n\nimport { gql } from \"apollo-boost\";\nimport { useQuery } from \"@apollo/react-hooks\";\n\nimport EventMessageEntity from \"../../../../../aqua-delivery-client-graphql/iot/entities/EventMessageEntity\";\nimport TelemetryReportEntity, { TelemetryType, AggregationType, TelemetryReport } from \"../../../../../aqua-delivery-client-graphql/iot/entities/TelemetryReportRequestEntity\";\nimport { TelemetryVariables, generateTelemetryReportQuery } from \"../../../../../aqua-delivery-client-graphql/iot/queries/useTelemetry\";\nimport { composeQueries } from \"../../../../../aqua-delivery-client-graphql/utils\";\n\nimport { transformLineChartData } from \"../utils/graphUtils\";\n\nconst transformData = (data: Pick | undefined) => transformLineChartData(\n TelemetryReportEntity\n .toObject(data?.values)\n .map(event => ({ ...event, value: event.value && EventMessageEntity.convertToLiters(event.value) }))\n)\n\ntype UseGetTelemetryProps = {\n registryId: string;\n unitInterval: number;\n formattedChartDataPeriod: {\n from: string;\n to: string;\n };\n};\n\ntype ComposedReportResult = {\n total: TelemetryReport,\n mobile: TelemetryReport,\n}\n\nconst useGetFillingTelemetry = (props: UseGetTelemetryProps) => {\n const { registryId, unitInterval, formattedChartDataPeriod } = props;\n\n const variables = {\n registry: registryId,\n aggregationType: AggregationType.Sum,\n interval: unitInterval,\n ...formattedChartDataPeriod,\n }\n\n const composedQueries = composeQueries(\n {\n total: { ...variables, type: TelemetryType.Volume },\n mobile: { ...variables, type: TelemetryType.Filled },\n },\n generateTelemetryReportQuery,\n );\n\n const query = gql`\n {\n ${composedQueries}\n }\n\n ${TelemetryReportEntity.fragment}\n `;\n\n const { data, loading: isLoading } = useQuery(\n query,\n {\n variables,\n fetchPolicy: 'network-only',\n pollInterval: 60 * 2000,\n }\n );\n\n const totalFillingsLine = useMemo(\n () => transformData(data?.total),\n [data],\n );\n\n const mobileAppFillingsLine = useMemo(\n () => transformData(data?.mobile),\n [data],\n );\n\n return {\n isLoading,\n totalFillingsLine,\n mobileAppFillingsLine,\n }\n}\n\nexport default useGetFillingTelemetry;","import React, { useContext, useMemo } from 'react';\n\nimport { DatumValue } from '@nivo/core';\nimport { Layer } from '@nivo/line';\nimport { LegendProps } from '@nivo/legends';\n\nimport EmptyPanel from '../../../../../../../aqua-delivery-web-client-ui/components/EmptyPanel';\nimport useLocalTranslation from '../../../../../../../hooks/useLocalTranslation';\nimport TelemetryReportEntity from '../../../../../../../aqua-delivery-client-graphql/iot/entities/TelemetryReportRequestEntity';\nimport useWindowSize from '../../../../../../../aqua-delivery-web-client-ui/hooks/useWindowSize';\nimport BaseLineGraph from '../../base-graph/BaseLineGraph';\nimport Section from '../../section/Section';\nimport { formatChartDataPeriod, getChartDataUtcPeriod } from '../../../utils/graphUtils';\nimport GraphLoader from '../../base-graph/GraphLoader';\nimport usePeriod, { getNamedPeriodDates } from '../../../hooks/usePeriod';\nimport useGetFillingTelemetry from '../../../queries/useGetFillingTelemetry';\nimport { RegistryContext } from '../../../Registry';\nimport PeriodSectionHeader from '../../section/PeriodSectionHeader';\nimport Graph from '../../base-graph/Graph';\nimport SectionBody from '../../section/SectionBody';\nimport SectionHeader from '../../section/SectionHeader';\nimport FillingsGraphTooltip from './FillingsGraphTooltip';\nimport BarLayer from './layers/BarLayer';\nimport { NamedPeriod } from '../../../../../../../types';\nimport usePeriodGraphPoints from '../../../hooks/usePeriodGraphPoints';\nimport Indicators from './Indicators';\n\ntype FillingsGraphProps = {\n registryId: string;\n};\n\nexport enum FillingGraphLegends {\n MobileAppVolume = 'mobileAppVolume',\n TotalVolume = 'totalVolume',\n}\n\nexport const MAX_FILLINGS_IN_DAY = 60;\n\nconst defaultPeriod = NamedPeriod.Days;\n\nconst graphLayers: Layer[] = [\n 'grid',\n 'axes',\n 'mesh',\n BarLayer,\n 'crosshair',\n 'markers',\n 'legends',\n 'slices',\n];\n\nconst colors = ['#1CBF2F', '#4671FF'];\n\nconst FillingsGraph: React.FC = ({ registryId }) => {\n const { dayjs, timezone } = useContext(RegistryContext);\n\n const { period, utcPeriod, setPeriod, namedPeriod, isDailyPeriod } = usePeriod({\n namedPeriod: defaultPeriod,\n useNamedPeriod: true,\n ...getNamedPeriodDates(defaultPeriod, timezone),\n });\n\n const { points } = usePeriodGraphPoints({\n defaultPoints: MAX_FILLINGS_IN_DAY,\n namedPeriod,\n period,\n });\n\n const [legend, graphTitle] = useLocalTranslation(\n t => t.vending.fillingsGraph,\n t => [t.legend, t.title],\n );\n\n const [title] = useLocalTranslation(\n t => t.vending,\n t => [t.fillings.title],\n );\n\n const legends = useLocalTranslation(\n t => t.vending.fillingsGraph.legends,\n t => t,\n );\n\n const { isMobile } = useWindowSize();\n\n const graphMargins = useMemo(\n () => ({\n top: 20,\n right: 10,\n bottom: isMobile ? 80 : 60,\n left: 70,\n }),\n [isMobile],\n );\n\n const axisLeftProps = useMemo(\n () => ({\n legend,\n format: (waterVolume: DatumValue) =>\n Number.isInteger(Number(waterVolume)) ? Number(waterVolume) : '',\n }),\n [legend],\n );\n\n const chartPeriodDates = getChartDataUtcPeriod(utcPeriod, timezone);\n const unitInterval = TelemetryReportEntity.getUnitInterval(chartPeriodDates, points);\n const formattedChartDataPeriod = formatChartDataPeriod(chartPeriodDates);\n\n const { isLoading, totalFillingsLine, mobileAppFillingsLine } = useGetFillingTelemetry({\n registryId,\n unitInterval,\n formattedChartDataPeriod,\n });\n\n const chartData = useMemo(() => {\n return [\n { id: legends[FillingGraphLegends.MobileAppVolume], data: mobileAppFillingsLine },\n { id: legends[FillingGraphLegends.TotalVolume], data: totalFillingsLine },\n ];\n }, [totalFillingsLine, mobileAppFillingsLine, legends]);\n\n const totalVolume = useMemo(\n () => totalFillingsLine.reduce((sum, item) => sum + (item.y || 0), 0),\n [totalFillingsLine],\n );\n const mobileVolume = useMemo(\n () => mobileAppFillingsLine.reduce((sum, item) => sum + (item.y || 0), 0),\n [mobileAppFillingsLine],\n );\n\n const chartDataLength = Math.max(\n totalFillingsLine.filter(item => item.y !== null).length,\n mobileAppFillingsLine.filter(item => item.y !== null).length,\n );\n\n const minMaxValues = useMemo(() => {\n if (totalFillingsLine.length === 0) return {};\n\n const values = totalFillingsLine\n .map(item => item.y)\n .filter(item => item !== null) as number[];\n\n const min = 0;\n const max = Math.max(...values) + 0.5;\n\n return { min, max };\n }, [totalFillingsLine]);\n\n const graphLegends: LegendProps[] = useMemo(\n () => [\n {\n anchor: 'bottom-left',\n direction: 'row',\n itemHeight: 20,\n itemWidth: 120,\n translateY: isMobile ? 70 : 50,\n symbolSize: 12,\n symbolShape: 'circle',\n },\n ],\n [isMobile],\n );\n\n const axisBottomProps = useMemo(\n () => ({\n format: (value: DatumValue) => dayjs(value).format(isDailyPeriod ? 'HH:mm' : 'DD.MM'),\n }),\n [dayjs, isDailyPeriod],\n );\n\n return (\n \n \n \n \n \n \n {chartDataLength ? (\n <>\n \n \n >\n ) : (\n \n )}\n \n \n\n \n \n \n );\n};\n\nexport default FillingsGraph;\n","import React from 'react';\n\nimport View from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\ntype SectionBodyProps = {\n containerStyle?: React.CSSProperties,\n className?: string,\n}\n\nconst SectionBody: React.FC = ({ children, containerStyle, className }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default SectionBody;","import React from 'react';\n\nimport classNames from 'classnames';\nimport { Typography } from 'antd';\n\nimport View from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\ntype LegendRowProps = {\n color: string,\n text: string,\n serieName: string,\n}\n\nexport const LegendRow: React.FC = ({ color, text, serieName }) => {\n return (\n <>\n \n {serieName}\n {text}\n >\n );\n}\n\nconst SliceTooltip: React.FC<{ title: string }> = ({ children, title }) => (\n \n {title}\n \n {children}\n \n \n);\n\nexport default SliceTooltip;","import React, { useContext } from \"react\";\n\nimport { SliceTooltipProps } from \"@nivo/line\";\n\nimport { RegistryContext } from \"../../../Registry\";\nimport useLocalTranslation from \"../../../../../../../hooks/useLocalTranslation\";\nimport SliceTooltip, { LegendRow } from \"../../base-graph/SliceTooltip\";\n\nconst FillingsGraphTooltip = (props: SliceTooltipProps) => {\n const { dayjs } = useContext(RegistryContext);\n\n const [liters] = useLocalTranslation(\n (t) => t.vending,\n t => [t.liters],\n );\n\n const title = dayjs(props.slice.points[0].data.x).format('DD.MM.YYYY, HH:mm');\n\n return (\n \n {\n props.slice.points.map(point => {\n const color = point.serieColor;\n const text = `${point.data.y} ${liters}`;\n\n return (\n \n )\n })\n }\n \n );\n}\n\nexport default FillingsGraphTooltip;","import React, { useMemo } from 'react';\n\nimport { CustomLayer, Point } from '@nivo/line';\n\nimport useLocalTranslation from '../../../../../../../../hooks/useLocalTranslation';\n\nimport { FillingGraphLegends, MAX_FILLINGS_IN_DAY } from '../FillingsGraph';\n\nconst BarLayer: CustomLayer = props => {\n const legends = useLocalTranslation(\n t => t.vending.fillingsGraph.legends,\n t => t,\n );\n\n const { points, innerWidth, innerHeight } = props;\n\n const serieSequence = [\n legends[FillingGraphLegends.MobileAppVolume],\n legends[FillingGraphLegends.TotalVolume],\n ];\n\n const groupedPoints = useMemo(\n () =>\n points.reduce>((groups, point) => {\n const groupIndex = serieSequence.findIndex(group => group === point.serieId);\n\n if (!groups[point.x]) {\n groups[point.x] = [];\n }\n\n groups[point.x][groupIndex] = point;\n\n return groups;\n }, {}),\n [points, serieSequence],\n );\n\n const barCount = 2;\n\n const barGroupWidth = Math.max(2, innerWidth / MAX_FILLINGS_IN_DAY) * 0.9;\n\n const barMaxWidth = barGroupWidth / barCount;\n const barWidth = barMaxWidth;\n\n return Object.entries(groupedPoints).map(([x, points]) => {\n return points.map((point, index) => {\n return (\n \n );\n });\n });\n};\n\nexport default BarLayer;\n","import React from \"react\";\n\nimport { PieLayer } from \"@nivo/pie\";\n\nimport { PieDatum } from \"../MobileFillingsGraph\";\n\nconst PercentLayer: PieLayer = (props) => {\n const mainValue = props.dataWithArc.find(item => item.data.mainValue);\n\n return (\n \n {(mainValue?.data.value || 0) + '%'}\n \n )\n}\n\nexport default PercentLayer;","import React, { FC } from \"react\";\n\nimport { ResponsivePie } from \"@nivo/pie\";\n\nimport { roundNumber } from \"../../../../../../../aqua-delivery-client-graphql/utils\";\nimport View from \"../../../../../../../aqua-delivery-web-client-ui/components/View\";\n\nimport nivoTheme from \"../../base-graph/theme\";\nimport PercentLayer from \"./layers/PercentLayer\";\n\nexport type PieDatum = {\n id: string;\n value: number;\n hiddenLabel?: boolean;\n mainValue?: boolean;\n}\n\nexport type MobileFillingsGraphProps = {\n totalVolume: number;\n mobileVolume: number;\n}\n\nconst MobileFillingsGraph: FC = ({ totalVolume, mobileVolume }) => {\n return (\n \n \n data={[\n {\n id: \"mobile\",\n value: totalVolume ? roundNumber(mobileVolume / totalVolume * 100, 1) : 0,\n hiddenLabel: true,\n mainValue: true,\n },\n {\n id: \"total\",\n value: totalVolume ? roundNumber((totalVolume - mobileVolume) / totalVolume * 100, 1) : 100,\n hiddenLabel: true,\n }\n ]}\n innerRadius={0.7}\n enableRadialLabels={false}\n colors={['#1CBF2F', '#EFEFEF']}\n sliceLabelsTextColor={{ from: 'labelColor' }}\n sliceLabel={item => item.data.hiddenLabel ? '' : `${item.value}%`}\n layers={[\n 'slices',\n 'radialLabels',\n 'sliceLabels',\n 'legends',\n PercentLayer,\n ]}\n theme={nivoTheme}\n />\n \n )\n}\n\nexport default MobileFillingsGraph;","import React, { FC } from 'react';\n\nimport { Row, Col, Card, Statistic } from 'antd';\n\nimport Section from '../../section/Section';\nimport SectionHeader from '../../section/SectionHeader';\nimport MobileFillingsGraph from './MobileFillingsGraph';\nimport useLocalTranslation from '../../../../../../../hooks/useLocalTranslation';\n\ntype IndicatorsProps = {\n totalVolume: number;\n mobileVolume: number;\n};\n\nconst Indicators: FC = ({ totalVolume, mobileVolume }) => {\n const [liters] = useLocalTranslation(\n t => t.vending,\n t => [t.liters],\n );\n\n const parameters = useLocalTranslation(\n t => t.vending.fillingsGraph.parameters,\n t => t,\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default Indicators;\n","import camelCase from 'camelcase';\nimport { Dayjs } from 'dayjs';\nimport { parsePhoneNumber } from 'libphonenumber-js';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { MappedArrayOfObjects } from './types';\n\nexport function copy(text: string) {\n try {\n navigator.clipboard.writeText(text);\n } catch (e) {\n const ta = document.createElement('textarea');\n ta.style.cssText = 'opacity:0; position:fixed; width:1px; height:1px; top:0; left:0;';\n ta.value = text;\n document.body.appendChild(ta);\n ta.focus();\n ta.select();\n document.execCommand('copy');\n ta.remove();\n }\n}\n\nexport function ucFirst(str: string) {\n if (!str || str.length === 0) return str;\n return str[0].toUpperCase() + str.slice(1);\n}\n\nexport function lcFirst(str: string) {\n if (!str || str.length === 0) return str;\n return str[0].toLowerCase() + str.slice(1);\n}\n\nexport function parseCamelCase(value: string) {\n return camelCase(value);\n}\n\nexport function setNativeProps(id: string, callback: (element: HTMLElement) => void) {\n const element = document.getElementById(id);\n if (element) {\n callback(element);\n }\n}\n\nexport function setNativePropsByClassName(\n className: string,\n callback: (element: HTMLElement) => void,\n) {\n const element = document.getElementsByClassName(className);\n if (element) {\n for (let i = 0; i < element.length; i++) {\n const elm = element.item(i) as HTMLElement;\n elm && callback(elm);\n }\n }\n}\n\nexport function setNativePropsByTag(className: string, callback: (element: Element) => void) {\n const element = document.getElementsByTagName(className);\n if (element) {\n for (let i = 0; i < element.length; i++) {\n const elm = element.item(i);\n elm && callback(elm);\n }\n }\n}\n\nexport function createAnimation(options: { prop?: string } = {}) {\n const prop = options.prop || 'all';\n return {\n transition: `${prop} .1s ease-in-out`,\n };\n}\n\nexport function createCssAnimation(options: { prop?: string } = {}) {\n const prop = options.prop || 'all';\n return `transition: ${prop} .10s ease-in-out`;\n}\n\nexport const getBase64 = (file: any): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n};\n\n// for ant upload\nexport const checkFilesIsImages = (files: File[]) => {\n return files.every(file => !file.type || /^image\\/.*/.test(file.type));\n};\n\nexport const getTimezoneFromCoordinates = (latitude: number) => {\n const timezoneAngle = 15;\n\n return Math.floor(latitude / timezoneAngle);\n};\n\nexport const setEndOfDay = (date: Dayjs) => {\n return date.set('hour', 23).set('minute', 59).set('second', 59).set('millisecond', 999);\n};\n\nexport const setStartOfDay = (date: Dayjs) => {\n return date.set('hour', 0).set('minute', 0).set('second', 0).set('millisecond', 0);\n};\n\nexport const extractNumbers = (value: string) => value.replace(/[^\\d]/g, '');\n\nexport const batchedUpdate = unstable_batchedUpdates;\n\nexport const transformObjectToKeysArray = (\n obj: Record,\n): MappedArrayOfObjects =>\n (Object.entries(obj) as any).map((order: [string, any]) => ({ [order[0]]: order[1] }));\n\nexport const isDateInPeriod = (\n date: Dayjs,\n startDate: Dayjs,\n maxPeriod: number,\n maxPeriodUnits: Parameters[1],\n) => {\n return Math.abs(date.diff(startDate, maxPeriodUnits)) <= maxPeriod;\n};\n\nexport const formatPhoneNumber = (text: string) => {\n const internationalFormat = parsePhoneNumber(text)?.formatInternational();\n const [countryCode, areaCode, ...localNumber] = internationalFormat?.split(' ') || [];\n return countryCode + ' (' + areaCode + ') ' + localNumber.join('-');\n};\n","import { useLayoutEffect, useState } from 'react';\n\nimport useThrottle from './useThrottle';\n\nexport enum ScreenSize {\n xs = 'xs',\n sm = 'sm',\n md = 'md',\n lg = 'lg',\n xl = 'xl',\n xxl = 'xxl',\n}\n\ntype State = {\n width: number;\n height: number;\n isMobile: boolean;\n isTablet: boolean;\n screenSize: ScreenSize;\n};\n\nconst getScreenSize = (windowWidth: number): ScreenSize => {\n if (windowWidth > 1600) {\n return ScreenSize.xxl;\n }\n if (windowWidth > 1200) {\n return ScreenSize.xl;\n }\n if (windowWidth > 992) {\n return ScreenSize.lg;\n }\n if (windowWidth > 768) {\n return ScreenSize.md;\n }\n if (windowWidth > 576) {\n return ScreenSize.sm;\n }\n\n return ScreenSize.xs;\n};\n\nexport default function useWindowSize() {\n const [size, setSize] = useState({\n width: 0,\n height: 0,\n isMobile: false,\n isTablet: false,\n screenSize: ScreenSize.sm,\n });\n\n const updateSize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobile: window.innerWidth <= 768,\n isTablet: window.innerWidth <= 1050,\n screenSize: getScreenSize(window.innerWidth),\n });\n };\n\n const throttledListener = useThrottle(updateSize, 50);\n\n useLayoutEffect(() => {\n window.addEventListener('resize', throttledListener);\n throttledListener();\n\n return () => window.removeEventListener('resize', throttledListener);\n }, [throttledListener]);\n\n return size;\n}\n","import { useRef, useEffect, useCallback } from 'react';\n\nimport throttle from 'lodash.throttle';\n\nconst useThrottle = (callback: (arg?: T) => void, delay: number) => {\n const cbRef = useRef(callback);\n\n useEffect(() => {\n cbRef.current = callback;\n });\n\n return useCallback(\n throttle((arg?: T) => cbRef.current(arg), delay),\n [delay],\n );\n};\n\nexport default useThrottle;\n","import React from 'react';\n\nimport { Spin } from 'antd';\nimport { SpinProps } from 'antd/lib/spin';\n\nconst AbsoluteFilledLoader: React.FC = ({ children, style, ...other }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default AbsoluteFilledLoader;\n","import axios, { AxiosInstance, AxiosError, AxiosResponse } from 'axios';\n\nimport AuthService from './AuthService';\nimport I18n from './i18n';\n\nexport type Source = 'admin' | 'partner_cabinet';\n\ntype AuthorizeApiOptions = {\n headerKey?: string;\n prefix?: string;\n bearer?: boolean;\n};\n\nexport type TFetch = {\n fetch: AxiosInstance;\n authorizeApi: (token?: string) => void;\n setBaseUrl: (baseURL: string) => void;\n logout: (opt?: AuthorizeApiOptions) => void;\n setLocale: (locale: string | null) => void;\n enrichToken: () => Promise | void>;\n};\n\ntype ApiConfig = {\n response?: AxiosResponse;\n defaultGetParams?: { [x: string]: string | number };\n enrichTokenUrl?: string;\n};\n\nconst config: { source?: Source; version?: string } = {};\n\nexport const setConfig = (source?: Source, version?: string) => {\n config.source = source;\n config.version = version;\n};\n\nconst APIs: { [x: string]: { fetch: AxiosInstance } } = {};\n\nexport const authorizeApi = (name: string) => (token?: string) => {\n setHeaders(name)(AuthService.signHeaders({}, token));\n};\n\nconst setHeaders = (name: string) => (headers: Record) => {\n APIs[name].fetch.defaults.headers.common = {\n ...APIs[name].fetch.defaults.headers.common,\n ...headers,\n };\n};\n\nconst setBaseUrl = (name: string) => (baseURL: string) => {\n APIs[name].fetch.defaults.baseURL = baseURL;\n};\n\nconst logout = (name: string) => () => {\n setHeaders(name)({ [AuthService.authHeaderKey]: null });\n};\n\nasync function repeatRequest(name: string, response: AxiosResponse) {\n return await APIs[name]\n .fetch({\n url: response.config.url,\n data: response.config.data,\n method: response.config.method,\n })\n .then(result => {\n return Promise.resolve(result);\n })\n .catch(e => {\n return Promise.reject(e);\n });\n}\n\nasync function enrichToken(name: string, { enrichTokenUrl, response = undefined }: ApiConfig = {}) {\n return AuthService.enrichToken(enrichTokenUrl!)\n .then(async token => {\n authorizeApi(name)(token);\n\n if (response) {\n return await repeatRequest(name, response);\n } else {\n return Promise.resolve();\n }\n })\n .catch(error => {\n return Promise.reject(error);\n });\n}\n\nconst refreshToken = async (name: string, response: AxiosResponse) => {\n return AuthService.refreshToken()\n .then(async token => {\n authorizeApi(name)(token);\n\n return await APIs[name]\n .fetch({\n url: response.config.url,\n data: response.config.data,\n method: response.config.method,\n })\n .then(result => {\n return Promise.resolve(result);\n })\n .catch(() => {\n AuthService.logout();\n return Promise.reject(response);\n });\n })\n .catch(error => {\n AuthService.logout();\n return Promise.reject(error);\n });\n};\n\nconst isUnauthorizedOnTokenCreation = (error: AxiosError) => {\n return (\n error.response &&\n error.response.status === 401 &&\n error.config &&\n error.config.url &&\n !~error.config.url.indexOf('/token/get')\n );\n};\n\nfunction needRefresh(config: AxiosError['config'], response: AxiosResponse | undefined) {\n return (\n response &&\n response.status === 401 &&\n response.data &&\n config &&\n config.headers &&\n config.headers.Authorization\n );\n}\n\nfunction needEnrich(config: AxiosError['config'], response: AxiosResponse | undefined) {\n return (\n response &&\n response.status === 424 &&\n response.data &&\n config &&\n config.headers &&\n config.headers.Authorization\n );\n}\n\nfunction createApi(name: string, { defaultGetParams, enrichTokenUrl }: ApiConfig = {}) {\n const fetch = axios.create({\n responseType: 'json',\n timeout: 60000,\n headers: {\n Pragma: 'no-cache',\n Expires: 0,\n 'content-type': 'application/json',\n Source: config.source,\n 'version-app': config.version,\n },\n validateStatus: status => status < 400,\n });\n\n fetch.interceptors.request.use(\n async config => {\n let conf = config;\n\n if (defaultGetParams) {\n if (!conf.params) {\n conf.params = {};\n }\n conf.params = defaultGetParams;\n }\n\n let headers = config.headers;\n\n if (!headers.common['Accept-Language']) {\n headers = { ...headers, 'Accept-Language': I18n.locale };\n }\n\n const authorizationToken = APIs[name].fetch.defaults.headers?.common.Authorization;\n if (authorizationToken) {\n headers.common.Authorization = authorizationToken;\n }\n\n return {\n ...config,\n headers,\n };\n },\n error => {\n return Promise.reject(error);\n },\n );\n\n fetch.interceptors.response.use(\n async response => response,\n async (error: AxiosError) => {\n if (needEnrich(error.config, error.response)) {\n return await enrichToken(name, {\n response: error.response,\n enrichTokenUrl,\n });\n }\n\n if (needRefresh(error.config, error.response)) {\n return await refreshToken(name, error.response!);\n } else if (isUnauthorizedOnTokenCreation(error)) {\n AuthService.logout();\n return Promise.reject(error);\n }\n\n return Promise.reject(error);\n },\n );\n\n const api: TFetch = {\n fetch,\n authorizeApi: authorizeApi(name),\n setBaseUrl: setBaseUrl(name),\n logout: logout(name),\n setLocale: locale => setHeaders(name)({ 'Accept-Language': locale }),\n enrichToken: async () => enrichToken(name, { enrichTokenUrl }),\n };\n\n APIs[name] = api;\n\n return api;\n}\n\nexport default createApi;\n\nexport function getErrorMessage(e: AxiosError<{ message: string }>): string {\n return e.isAxiosError && e.response ? e.response.data.message : e.message;\n}\n\nexport function logoutAPI() {\n Object.keys(APIs).forEach(logout);\n}\n","export enum AuthMethod {\n Email = 'email',\n Phone = 'phone',\n}","import React, { memo, useMemo } from 'react';\n\nimport { ResponsiveLine, Serie, LineProps } from '@nivo/line';\nimport { AxisProps } from '@nivo/axes';\nimport { Scale } from '@nivo/scales';\n\nimport useWindowSize from '../../../../../../aqua-delivery-web-client-ui/hooks/useWindowSize';\n\nimport nivoTheme from './theme';\n\ntype BaseLineGraph = Partial & {\n data: Serie[];\n min?: number;\n max?: number;\n axisBottomProps?: Partial;\n axisLeftProps?: Partial;\n};\n\nconst colors = ['#4671FF', '#FF1C1C', '#1CBF2F'];\nconst xScale: Scale = { type: 'time' };\nconst graphMargin = { top: 20, right: 10, bottom: 40, left: 70 };\nconst pointBorderColor = { from: 'serieColor' };\n\nconst BaseLineGraph: React.FC = memo(\n ({ data, min, max, axisBottomProps, axisLeftProps, ...other }) => {\n const { isMobile } = useWindowSize();\n\n const axisBottomTickMobileStyle = useMemo(\n () => (isMobile ? { tickPadding: 6, tickRotation: -45 } : { tickPadding: 2 }),\n [isMobile],\n );\n\n const minMax: { min: 'auto' | number; max: 'auto' | number } = useMemo(\n () => ({\n min: min !== undefined ? min : 'auto',\n max: max !== undefined ? max : 'auto',\n }),\n [max, min],\n );\n\n const yScale: Scale = useMemo(() => ({ type: 'linear', ...minMax }), [minMax]);\n\n const axisBottom: AxisProps = useMemo(\n () => ({\n orient: 'bottom',\n tickSize: 4,\n ...axisBottomTickMobileStyle,\n ...axisBottomProps,\n }),\n [axisBottomProps, axisBottomTickMobileStyle],\n );\n\n const axisLeft: AxisProps = useMemo(\n () => ({\n orient: 'left',\n tickSize: 0,\n tickPadding: 16,\n legendOffset: -60,\n legendPosition: 'start',\n ...axisLeftProps,\n }),\n [axisLeftProps],\n );\n\n return (\n item.id === 'positive',\n id: 'positiveGradient',\n },\n {\n match: item => item.id === 'negative',\n id: 'negativeGradient',\n },\n ]}\n useMesh\n {...other}\n />\n );\n },\n);\n\nexport default BaseLineGraph;\n","import React from 'react';\n\nimport Spin, { SpinProps } from 'antd/lib/spin';\n\nimport { LoadingOutlined } from '../../../../../../aqua-delivery-web-client-ui/icons';\n\nconst GraphLoader: React.FC = props => {\n return (\n } size=\"large\" {...props} />\n );\n};\n\nexport default GraphLoader;\n","import { QueryHookOptions, useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nimport TelemetryReportEntity, { TelemetryType, AggregationType, TelemetryReport } from \"../entities/TelemetryReportRequestEntity\";\n\nexport type TelemetryVariables = {\n registry: string,\n from: string,\n to: string,\n interval: number,\n type: TelemetryType,\n aggregationType: AggregationType,\n}\n\nexport type WaterVolumeData = { id: string, value: number, createdAt: string };\n\nexport type TelemetryResult = {\n getTelemetryReport: TelemetryReport,\n}\n\nexport const generateTelemetryReportQuery = (variables: TelemetryVariables) => {\n const { registry, from, to, type, aggregationType, interval } = variables;\n\n return `\n getTelemetryReport(\n registry: \"${registry}\",\n from: \"${from}\",\n to: \"${to}\",\n type: \"${type}\",\n aggregationType: \"${aggregationType}\",\n interval: ${interval}\n ) {\n ...TelemetryReport,\n }\n `\n};\n\nexport const query = gql`\n query getTelemetryReport(\n $registry: String!,\n $from: String!,\n $to: String!,\n $type: String!,\n $aggregationType: String!,\n $interval: Int!\n ) {\n getTelemetryReport(\n registry: $registry,\n from: $from,\n to: $to,\n type: $type,\n aggregationType: $aggregationType,\n interval: $interval\n ) {\n ...TelemetryReport,\n }\n }\n\n ${TelemetryReportEntity.fragment}\n`;\n\nexport default function (options: QueryHookOptions) {\n return useQuery(query, options);\n}","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport View, { ViewProps } from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\ntype GraphProps = {\n containerStyle?: React.CSSProperties,\n} & ViewProps;\n\nconst Graph: React.FC = ({ containerStyle, children, className, ...other }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default Graph;","import dayjs from 'dayjs';\n\nimport { NamedPeriod, Period } from '../../../../../types';\n\nexport type UsePeriodGraphPoints = {\n defaultPoints: number;\n namedPeriod: NamedPeriod | null | undefined;\n period: Period;\n};\n\nconst namedPeriodIntervals: Record number> = {\n days: () => 24 * 2,\n weeks: () => (7 * 24) / 3,\n months: (period: Period) => dayjs(period.to).diff(period.from, 'days'),\n};\n\nexport const getNamedPeriodInterval = (period: NamedPeriod) => {\n return namedPeriodIntervals[period];\n};\n\nconst usePeriodGraphPoints = (props: UsePeriodGraphPoints) => {\n const { defaultPoints, namedPeriod, period } = props;\n\n return {\n points: namedPeriod ? getNamedPeriodInterval(namedPeriod)(period) : defaultPoints,\n };\n};\n\nexport default usePeriodGraphPoints;\n","import React from 'react';\n\nimport { Typography } from 'antd';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport View from '../../View';\nimport { setEndOfDay } from '../../../Utils';\nimport DatePicker, { DatePickerProps } from '../DatePicker';\nimport useAntdLocale from '../../../hooks/useAntdLocale';\n\ntype DateRangeInputProps = {\n format: string;\n onChange: (values: DateTimePeriodValues) => void;\n defaultStart?: Dayjs | null;\n defaultEnd?: Dayjs | null;\n className?: string;\n placeholderFrom?: string;\n placeholderTo?: string;\n startDatePickerProps?: DatePickerProps;\n endDatePickerProps?: DatePickerProps;\n containerStyles?: React.CSSProperties;\n noFutureDate?: boolean;\n strictDateMode?: boolean;\n};\n\nexport type DateTimePeriodValues = [Dayjs | null, Dayjs | null];\n\nconst DateRangeInput: React.FC = props => {\n const {\n className,\n format,\n defaultStart,\n defaultEnd,\n placeholderFrom,\n placeholderTo,\n startDatePickerProps,\n endDatePickerProps,\n containerStyles,\n noFutureDate = false,\n strictDateMode = false,\n ...other\n } = props;\n\n const [startDate, setStartDate] = React.useState(\n defaultStart || startDatePickerProps?.value || null,\n );\n const [endDate, setEndDate] = React.useState(defaultEnd || endDatePickerProps?.value || null);\n const [endOpen, setEndOpen] = React.useState(false);\n\n const { antdLocale } = useAntdLocale();\n\n React.useEffect(() => {\n const startDateNewValue = startDatePickerProps?.value || null;\n const endDateNewValue = endDatePickerProps?.value || null;\n\n setStartDate(startDateNewValue);\n setEndDate(endDateNewValue);\n }, [endDatePickerProps, startDatePickerProps]);\n\n const disabledStartDate = (startValue: Dayjs | null) => {\n if (!startValue || !endDate) {\n return false;\n }\n\n const endValueUnixTime = endDate.unix();\n const startValueUnixTime = startValue.unix();\n\n return (\n startValueUnixTime > endValueUnixTime ||\n (strictDateMode && endValueUnixTime === startValueUnixTime)\n );\n };\n\n const disabledEndDate = (endValue: Dayjs | null) => {\n if (!endValue || !startDate) {\n return false;\n }\n\n const endValueUnixTime = endValue.unix();\n const startValueUnixTime = startDate.unix();\n\n return (\n endValueUnixTime < startValueUnixTime ||\n (noFutureDate && endValueUnixTime > setEndOfDay(dayjs()).unix()) ||\n (strictDateMode && endValueUnixTime === startValueUnixTime)\n );\n };\n\n const onStartChange = (value: Dayjs | null) => {\n setStartDate(value);\n //@ts-ignore\n other.onChange([value, endDate]);\n };\n\n const onEndChange = (value: Dayjs | null) => {\n setEndDate(value);\n //@ts-ignore\n other.onChange([startDate, value]);\n };\n\n const handleStartOpenChange = (open: boolean) => {\n if (!open) {\n setEndOpen(true);\n }\n };\n\n const handleEndOpenChange = (open: boolean) => {\n setEndOpen(open);\n };\n\n return (\n \n \n \n –\n \n \n \n );\n};\n\nexport default DateRangeInput;\n","import React, { CSSProperties } from 'react';\n\nimport { RadioChangeEvent } from 'antd/lib/radio';\n\nimport Radio from '../../../../../aqua-delivery-web-client-ui/components/ui/Radio';\n\nexport const PeriodButton: React.FC<{\n caption: string;\n value: string;\n onChange?: (e: RadioChangeEvent) => void;\n}> = ({ caption, value, onChange }) => {\n return (\n \n {caption}\n \n );\n};\n\ntype PeriodSwitcherProps = {\n onChange: (e: RadioChangeEvent) => void;\n defaultValue?: string;\n value: string | undefined | null;\n containerStyles?: CSSProperties;\n};\n\nconst PeriodSwitcher: React.FC = ({\n onChange,\n defaultValue,\n containerStyles,\n children,\n value,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default PeriodSwitcher;\n","import React, { useCallback } from 'react';\n\nimport { When } from 'react-if';\nimport { Col, Row } from 'antd';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport DateRangeInput, { DateTimePeriodValues } from '../../../../../../aqua-delivery-web-client-ui/components/ui/inputs/DateRangeInput';\nimport useLocalTranslation from '../../../../../../hooks/useLocalTranslation';\n\nimport PeriodSwitcher, { PeriodButton } from '../PeriodSwitcher';\nimport { DatePeriodState, getNamedPeriodDates } from '../../hooks/usePeriod';\nimport SectionHeader, { SectionHeaderProps } from './SectionHeader';\nimport { NamedPeriod } from '../../../../../../types';\n\ntype PeriodSectionHeaderProps = SectionHeaderProps & {\n setPeriod?: React.Dispatch>;\n period?: DatePeriodState;\n disableSwitcher?: boolean;\n timezone?: number;\n};\n\nconst PeriodSectionHeader: React.FC = ({\n setPeriod,\n period,\n disableSwitcher,\n timezone,\n ...other\n}) => {\n const onPeriodChange = useCallback(\n (namedPeriod: NamedPeriod) => {\n const { from, to } = getNamedPeriodDates(namedPeriod, timezone);\n\n setPeriod && setPeriod({ from, to, namedPeriod, useNamedPeriod: true });\n },\n [setPeriod, timezone],\n );\n\n const onDatepickerChange = useCallback(\n (values: [Dayjs | null, Dayjs | null]) => {\n const tz = timezone || dayjs().utcOffset();\n\n const [from, to] = values;\n\n setPeriod &&\n values[0] &&\n values[1] &&\n setPeriod({\n from: (from || dayjs()).clone().utcOffset(tz),\n to: (to || dayjs()).clone().utcOffset(tz),\n namedPeriod: null,\n useNamedPeriod: false,\n });\n },\n [setPeriod, timezone],\n );\n\n const periods = useLocalTranslation(\n t => t.vending.periodSwitcher,\n t => t,\n );\n\n const { from, to } = useLocalTranslation(\n t => t.vending.datePicker,\n t => t,\n );\n\n return (\n \n \n \n \n \n \n \n onPeriodChange(e.target.value)}\n value={period?.namedPeriod}\n >\n \n \n \n \n \n \n
\n \n );\n};\n\nexport default PeriodSectionHeader;\n","import { EntityType } from './types';\nimport { gql } from 'apollo-boost';\nimport { lcFirst } from './utils';\n\nexport type TScheme = {\n __schema: {\n types: any;\n };\n};\n\nexport type GenerateMutationOptions = {\n excludeFields?: string[];\n excludePayloadFields?: string[];\n extraFields?: Record;\n};\n\nexport type MutationType = 'create' | 'update' | 'delete' | 'add';\n\nexport default class Scheme {\n static get introspectionQuery() {\n return {\n variables: {},\n operationName: 'IntrospectionQuery',\n query: `query IntrospectionQuery {\n __schema {\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n description\n locations\n args {\n ...InputValue\n }\n }\n }\n }\n \n fragment FullType on __Type {\n kind\n name\n description\n fields(includeDeprecated: true) {\n name\n description\n args {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n description\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n fields(includeDeprecated: true) {\n name\n description\n args {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n }\n }\n \n fragment InputValue on __InputValue {\n name\n description\n type { ...TypeRef }\n defaultValue\n }\n \n fragment TypeRef on __Type {\n kind\n name\n description\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n `,\n };\n }\n\n private _scheme: any;\n private _fragmentTypes: any;\n\n constructor(sheme: { data: TScheme } | undefined = undefined) {\n if (!sheme) return;\n if (sheme && !sheme.data) {\n //console.log(sheme);\n }\n // // here we're filtering out any type information unrelated to unions or interfaces\n const filteredData = sheme.data.__schema.types.filter(\n (type: any) => type.possibleTypes !== null,\n );\n const apolloFragments = {\n __schema: {\n types: filteredData,\n },\n };\n\n this._fragmentTypes = apolloFragments;\n this._scheme = sheme.data;\n }\n\n public get fullScheme() {\n return this._scheme;\n }\n\n public get fragmentTypes() {\n return this._fragmentTypes;\n }\n\n public getEntityType(name: string): EntityType | undefined {\n const scheme = this.fullScheme;\n const type: EntityType = scheme.__schema.types.find(\n (type: EntityType) => type.name === name,\n );\n if (!type) {\n const Node = this.getEntityType('Node');\n if (!Node || !Node.possibleTypes) return undefined;\n const type = Node.possibleTypes.find((type: EntityType) => type.name === name);\n if (type) return type;\n } else {\n return type;\n }\n }\n\n public getMutation(name: string, mutationType: MutationType = 'create') {\n return this.getEntityType(`${mutationType}${name}Input`);\n }\n\n public getPayload(name: string, mutationType: MutationType = 'create') {\n return this.getEntityType(`${mutationType}${name}Payload`);\n }\n\n public getPossibleTypes(name: string): EntityType[] | null {\n const type = this.getEntityType(name);\n //console.log(type)\n //нашли интересующий нас тип и теперь прошерстим его и для каждого интерфейса найдем мутации создания\n //это нужно чтобы найти поля, участвующие в мутации.\n\n if (!type || !type.possibleTypes) return null;\n\n type.possibleTypes.forEach(item => {\n const mutation = this.getMutation(item.name);\n if (mutation) {\n item.inputFields = mutation.inputFields.filter(field => {\n if (field.name === 'clientMutationId') {\n return false;\n }\n const f = type.fields.find(item => item.name === field.name);\n //exclude interfaces and objects field\n if (\n f &&\n (f.type.kind === 'INTERFACE' ||\n f.type.kind === 'OBJECT' ||\n (f.type.ofType &&\n (f.type.ofType.kind === 'INTERFACE' ||\n f.type.ofType.kind === 'OBJECT')))\n ) {\n return false;\n }\n return true;\n });\n }\n });\n\n return type.possibleTypes;\n }\n\n public getDescriptionField(entityName: string, fieldName: string): string {\n let help: string = '';\n const entity = this.getEntityType(entityName);\n if (entity) {\n const fieldScheme = entity.inputFields.find(field => field.name === fieldName);\n if (fieldScheme) {\n help = fieldScheme.description || '';\n }\n }\n\n return help;\n }\n\n public getInputFields(\n entityName: string,\n mutationType: MutationType,\n options: GenerateMutationOptions = {},\n ) {\n const fields = this.getMutation(entityName, mutationType)!.inputFields;\n\n let variables = '';\n let inputVariables = '';\n\n const { excludeFields, extraFields = {} } = options;\n\n fields\n .filter(field => {\n if (options.excludeFields) {\n const excluded = !!excludeFields?.find(\n excludeItem => excludeItem === field.name,\n );\n if (excluded) {\n return false;\n }\n }\n return true;\n })\n .forEach(field => {\n let required = field.type.kind === 'NON_NULL' ? '!' : '';\n const list = field.type.kind === 'LIST';\n let typeName = field.type.name\n ? field.type.name\n : field.type.ofType\n ? field.type.ofType.name\n : '';\n if (list) {\n typeName = `[${typeName}${required}]` as any;\n required = '';\n }\n variables += `$${field.name}: ${typeName}${required},`;\n inputVariables += `${field.name}:$${field.name},`;\n });\n\n Object.entries(extraFields).forEach(field => {\n variables += `$${field[0]}: ${field[1]},`;\n inputVariables += `${field[0]}: $${field[1]},`;\n });\n\n return {\n variables,\n inputVariables,\n };\n }\n\n public generateMutation(\n entity: EntityType,\n mutationType: MutationType,\n options: GenerateMutationOptions = {},\n ) {\n const mutationName = `${mutationType}${entity.name}`;\n let returnedValues = '';\n\n entity.fields\n .filter(field => {\n if (options.excludeFields) {\n const excluded = !!options.excludeFields.find(\n excludeItem => excludeItem === field.name,\n );\n if (excluded) {\n return false;\n }\n }\n return true;\n })\n .forEach(field => {\n const isObject =\n (field.type &&\n (field.type.kind === 'OBJECT' || field.type.kind === 'INTERFACE')) ||\n (field.type.ofType &&\n (field.type.ofType.kind === 'OBJECT' ||\n field.type.ofType.kind === 'INTERFACE'));\n\n if (isObject) {\n return;\n }\n if (options.excludePayloadFields) {\n const excluded = !!options.excludePayloadFields.find(\n excludeItem =>\n excludeItem === field.name ||\n (excludeItem === '*' && field.name !== 'id'),\n );\n if (!excluded) {\n returnedValues += `${field.name},`;\n }\n } else {\n returnedValues += `${field.name},`;\n }\n });\n\n const { inputVariables, variables } = this.getInputFields(\n entity.name,\n mutationType,\n options,\n );\n\n return gql`mutation ${mutationName}(${variables}){\n ${mutationName}(\n input: {\n ${inputVariables}\n }\n ){\n ${lcFirst(entity.name)}{\n ${returnedValues}\n }\n }\n }`;\n }\n\n public getInterfacesFieldsFragments(_interface: string) {\n const possibleTypes = this.getPossibleTypes(_interface);\n\n let result = '';\n if (possibleTypes) {\n possibleTypes.forEach(item => {\n const fields = item.inputFields.reduce(\n (prev, current) => (prev += `${current.name},\\n`),\n '',\n );\n if (!item.inputFields.length) return;\n result += `\n ... on ${item.name}{\n ${fields}\n }\n `;\n });\n //console.log(result)\n return result;\n }\n return result;\n }\n}\n","import { AuthMethod } from \"../../routes/login/types\";\n\nexport default {\n title: 'Авторизация',\n form: {\n fields: {\n username: {\n placeholder: \"example@mail.com\",\n label: \"E-mail\",\n validations: {\n require: \"Поле обязательно для заполнения\",\n email: \"Вы указали невалидный E-mail\"\n }\n },\n password: {\n label: \"Пароль\",\n validations: {\n require: \"Поле обязательно для заполнения\",\n }\n },\n rememberMe: {\n label: \"Запомнить меня\",\n },\n phoneNumber: {\n label: \"Номер телефона\",\n validations: {\n phone: \"Вы указали невалидный номер телефона\",\n require: \"Поле обязательно для заполнения\",\n }\n }\n },\n submitButton: \"Войти\",\n authMethods: {\n [AuthMethod.Phone]: \"По номеру телефона\",\n [AuthMethod.Email]: \"По E-mail\"\n }\n },\n links: {\n registration: 'Регистрация',\n recoveryPassword: 'Я забыл пароль :('\n }\n}","import { StepName } from \"../../routes/partner-cabinet/routes/finish-registration/components/stepperHelper/StepNameEnum\";\n\nexport default {\n buttons: {\n next: \"Далее\",\n complete: \"Завершить\"\n },\n pricingPlans: {\n title: \"Спасибо\",\n title2: \"за регистрацию!\",\n subtitle: \"Выберите тарифный план\",\n pricesTable: {\n title: 'Тарифный план — ',\n },\n messages: {\n notSelectedPricingPlan: \"Выберите тарифный план\"\n },\n labels: {\n pricingPlanDuration: 'Продолжительность',\n pricingPlanMonthlyPrice: 'Цена в месяц',\n pricingPlanPrice: 'Сумма',\n launchAmount: \"Стартовый платёж\",\n pricingPlanActions: \"Выбрать\",\n }\n },\n payment: {\n title: \"Как будете оплачивать?\",\n card: {\n bankCard: {\n title: \"Онлайн-оплата\",\n // title: \"Оплатить картой\",\n content: \"Заплатите онлайн\",\n },\n contract: {\n title: \"Реквизиты\",\n content: \"Договор\",\n }\n },\n labels: {\n oferta: \"Договор_оферты\",\n paymentMethodsNotAvailable: \"К сожалению, вам недоступен ни один из существующих способов оплаты.\",\n callUs: \"Свяжитесь с нами по телефону:\",\n },\n fields: {\n file: {\n label: \"Загрузите реквизиты\",\n validators: {\n require: \"Поле обязательно для заполнения\"\n }\n }\n },\n buttons: {\n download: \"Скачать\",\n back: \"Назад на выбор тарифа\"\n },\n tooltips: {\n payWithOnlinePayment: 'Выберите один из доступных способов оплаты',\n },\n },\n company: {\n title: \"Расскажите\",\n title2: \"о вашей компании\",\n subtitle: `Нам нужно еще немного данных\n о вас для индивидуального приложения \n и сайта продаж`,\n buttons: {\n save: \"Сохранить\",\n next: \"Далее\",\n skip: \"Пропустить\",\n back: \"Назад\"\n },\n navigation: {\n about: \"О компании\",\n contacts: \"Контакты компании\",\n dispatchers: \"Диспетчера\",\n links: \"Ссылки\",\n paymmentMethods: \"Как будут платить клиенты?\",\n details: \"Реквизиты компании\",\n assets: \"Фирменный дизайн\"\n },\n steps: {\n main: {\n title: \"Информация о компании\",\n fields: {\n brandName: {\n label: \"Название бренда\",\n validators: {\n require: \"Вы пропустили поле\"\n }\n },\n memo: {\n label: \"Этот текст будет на сайте продаж и в клиентском приложении\",\n placeholder: \"Расскажите, с какого года вы на рынке, в чём ваши преимущества, какой у вас ассортимент\",\n validators: {\n require: \"Вы пропустили поле\"\n }\n }\n }\n },\n contacts: {\n title: \"Контакты компании\",\n fields: {\n directorPhoneNumber: {\n label: \"Телефон руководителя\",\n validators: {\n require: \"Вы пропустили поле\"\n }\n },\n directorEmail: {\n label: \"E-mail руководителя\",\n validators: {\n require: \"Вы пропустили поле\",\n email: \"Похоже вы указали невалидный E-mail\"\n }\n },\n companyPhoneNumber: {\n label: \"Телефон компании\",\n validators: {\n require: \"Вы пропустили поле\"\n }\n },\n companyEmail: {\n label: \"E-mail компании\",\n validators: {\n require: \"Вы пропустили поле\",\n email: \"Похоже вы указали невалидный E-mail\"\n }\n },\n pickupLocation: {\n label: \"Адрес самовывоза\",\n }\n }\n },\n dispatchers: {\n title: \"Информация о диспетчере\",\n fields: {\n dispatcherPhoneNumber: {\n label: \"Телефон диспетчера\",\n validators: {\n require: \"Вы пропустили поле\"\n }\n },\n dispatcherEmail: {\n label: \"E-mail диспетчера\",\n validators: {\n require: \"Вы пропустили поле\",\n email: \"Похоже вы указали невалидный E-mail\"\n }\n },\n }\n },\n links: {\n title: \"Ссылки на социальные сети\",\n fields: {\n site: { label: \"Сайт\", check: \"У нас нет сайта\" },\n vkLink: { label: \"Группа Вконтакте\", check: \"У нас нет группы\" },\n instagramLink: { label: \"Инстаграм\", check: \"У нас нет Инстаграма\" },\n misc: { label: \"Другие источники\" },\n }\n },\n paymentMethods: {\n title: \"Как будут платить клиенты?\",\n fields: {\n onlinePayment: {\n notSelected: \"Не выбрано\",\n },\n other: {\n label: \"Другой вариант\"\n } \n }\n },\n assets: {\n title: \"Загрузите логотип и брендбук (если есть)\",\n labels: {\n sendEmail: \"Или отправьте данные на почту\",\n sendEmail2: \"В теме письма напишите с какого вы города и название вашей компании/бренда\"\n }\n },\n details: {\n title: \"Загрузите реквизиты вашей компании\",\n fields: {\n companyDetails: {\n validators: {\n require: 'Реквизиты компании обязательны для загрузки'\n }\n }\n }\n },\n }\n },\n partnerFinish: {\n title: 'Спасибо за регистрацию!',\n discription:\n 'В ближайшее время мы с вами свяжемся, зададим несколько уточняющих вопросов и начнем собирать Ваше приложение.'\n },\n stepper: {\n [StepName.pricingPlan]: \"Выбор тарифа\",\n [StepName.payment]: \"Оплата\",\n [StepName.companyInfo]: \"О компании\",\n }\n}","import registration from './registration';\nimport preregistration from './preregistration';\nimport login from './login';\nimport layout from './layout';\nimport dashboard from './dashboard';\nimport staticPages from './staticPages';\nimport transactions from './transactions';\nimport partnerSettings from './partnerSettings';\nimport finishRegistration from './finishRegistration';\nimport recoveryPassword from './recoveryPassword';\nimport profile from './profile';\nimport vending from './vending';\nimport couriers from './couriers';\nimport materials from './materials';\nimport banners from './banners';\nimport smsReport from './smsReport';\n\nexport default {\n registration,\n preregistration,\n login,\n layout,\n dashboard,\n staticPages,\n transactions,\n partnerSettings,\n finishRegistration,\n recoveryPassword,\n profile,\n vending,\n couriers,\n materials,\n banners,\n smsReport,\n};\n","export default {\n title: 'Кабинет партнёра',\n labels: {\n tryOrderCabinet: 'Попробуйте демо-версию системы для диспетчеров',\n tryMobileApp: 'и демо-версию клиентского приложения',\n loading: 'Дождитесь окончания загрузки',\n },\n buttons: {\n skip: 'Пропустить',\n next: 'Далее',\n done: 'Завершить',\n },\n steps: {\n password: {\n title: 'Установите пароль, чтобы пользоваться системой',\n fields: {\n password: {\n label: 'Пароль',\n placeholder: 'Постарайтесь, чтобы пароль был нетривиальным*',\n help: '* используйте буквы, цифры и знаки препинания (желательно)',\n validators: {\n require: 'Поле обязательно для заполнения',\n equal: 'Пароли должны совпадать',\n },\n },\n repeatPassword: {\n label: 'Повторите пароль',\n validators: {\n require: 'Поле обязательно для заполнения',\n equal: 'Пароли должны совпадать',\n },\n },\n },\n },\n company: {\n title: 'Нам нужно еще немного данных о вашей компании',\n fields: {\n partnerName: {\n label: 'Название компании',\n placeholder: 'ООО \"Компания\"',\n validators: {\n require: 'Поле обязательно для заполнения',\n },\n },\n location: {\n label: 'Город',\n validators: {\n require: 'Поле обязательно для заполнения',\n },\n },\n itn: {\n label: 'ИНН',\n placeholder: '1234567890',\n validators: {\n require: 'Поле обязательно для заполнения',\n },\n },\n currency: {\n label: 'Используемая валюта',\n validators: {\n require: 'Поле обязательно для заполнения',\n },\n },\n country: {\n label: 'Страна',\n validators: {\n require: 'Поле обязательно для заполнения',\n },\n },\n contractEtching: {\n labelStart: 'Я подтверждаю, что ознакомился с',\n labelLink: ' договором-оферты ',\n labelFinish: 'и принимаю его условия',\n validators: {\n require: 'Подтвердите, что согласны с договором-оферты',\n },\n },\n },\n },\n },\n};\n","\nexport default {\n title: \"Регистрация\",\n result: {\n title: \"Вы зарегистрировались в системе\",\n message: \"Мы отправили Вам письмо на почту ({{email}}), пожалуйста откройте его и следуйте инструкциям.\",\n spam: 'Пожалуйста, если вы не получили письмо в течение пяти минут, то проверьте папку \"Спам\" - возможно, оно попало туда по ошибке.'\n },\n form: {\n fields: {\n firstName: {\n placeholder: \"Ваше имя\",\n label: \"Ваше имя:\",\n validations: {\n require: \"Поле обязательно для заполнения\"\n }\n },\n email: {\n placeholder: \"E-mail\",\n label: \"E-mail:\",\n validations: {\n require: \"Поле обязательно для заполнения\",\n email: \"Вы указали невалидный E-mail\"\n }\n },\n phoneNumber: {\n placeholder: \"Телефон\",\n label: \"Телефон:\",\n validations: {\n require: \"Поле обязательно для заполнения\"\n }\n },\n agreement: {\n label: \"I agree with the privacy policy\",\n validations: {\n require: \"Your consent is required\"\n }\n },\n },\n labels: {\n agreement: \"Нажимая кнопку «Отправить» Вы соглашаетесь с\"\n },\n links: {\n agreement: \"политикой конфиденциальности\"\n },\n submitButton: \"Отправить\",\n alreadyHaveAccount: 'У меня уже есть аккаунт',\n }\n}","export default {\n nav: {\n dashboard: 'Рабочий стол',\n balance: 'Баланс',\n reports: 'Отчеты',\n documents: 'Документы',\n vending: 'Киоски',\n couriers: 'Курьеры',\n materials: 'Материалы',\n banners: 'Баннеры',\n smsReport: 'SMS-отчет',\n },\n header: {\n company: 'Компания',\n user: 'Пользователь',\n },\n mobileMenu: {\n company: 'Настройки компании',\n user: 'Мой профиль',\n },\n footer: {\n contractOffer: 'Договор оферты',\n },\n buttons: {\n logout: 'Выйти',\n },\n};\n","export default {\n blocks: {\n marketerCabinet: {\n title: 'Кабинет маркетолога',\n body: 'Посмотреть отчёты и проанализировать ситуацию',\n },\n orderCabinet: {\n title: 'Кабинет заказов',\n body: 'Посмотреть заказы и клиентов, добавлять и редактировать',\n },\n settingsCabinet: {\n title: 'Кабинет настроек',\n body: 'Внести изменения к товарам, услугам, изображениям, описаниям и ценам',\n },\n clientApp: {\n title: 'Клиентское приложение',\n //body: \"Внести изменения к товарам, услугам, изображениям, описаниям и ценамь\"\n },\n orderSite: {\n title: 'Сайт для заказов',\n //body: \"Внести изменения к товарам, услугам, изображениям, описаниям и ценамь\"\n },\n knowledge: {\n title: 'База знаний',\n body: 'Найти ответы на вопросы по работе с системой',\n },\n },\n welcome: {\n title: 'Спасибо',\n title2: 'за регистрацию!',\n subTitle: 'Мы вам скоро позвоним сами :)',\n phone: 'Либо можете связаться с нами по телефону',\n subPhone: 'для дальнейших действий',\n },\n labels: {\n login: 'Логин',\n password: 'Пароль',\n links: {\n apple: 'App Store',\n google: 'Google Play',\n smartLink: 'Умная ссылка',\n },\n },\n tooltips: {\n copy: 'Скопировать',\n showPassword: 'Показать пароль',\n hidePassword: 'Скрыть пароль',\n smartLink:\n 'Адрес специальной страницы, с которой будет происходить автоматический редирект в стор приложений',\n },\n messages: {\n login: 'Логин скопирован',\n password: 'Пароль скопирован',\n linkCopied: 'Ссылка скопирована',\n },\n buttons: {\n goToCabinet: 'Перейти',\n },\n documents: {\n title: 'Документы',\n content: {\n table: {\n label: 'Счёт за',\n date: 'Дата',\n total: 'Сумма',\n panel: {\n header: 'Другое',\n extra: 'Акты',\n content: 'Акт',\n },\n error: 'Счета не найдены',\n },\n },\n state: {\n invoice_created: 'Оплатить',\n invoice_paid: 'Оплачен',\n invoice_archived: 'В архиве',\n },\n },\n};\n","export default {\n comingSoon: 'Страница еще в разработке',\n};\n","export default {\n title: 'История баланса',\n labels: {\n balance: 'Баланс',\n totalPay: 'Сумма к оплате',\n debit: 'Пополнения',\n paymentMethod: 'Выберите способ оплаты',\n },\n buttons: {\n deposit: 'Пополнить баланс',\n deposit2: 'Пополнить',\n },\n};\n","export default {\n intervals: {\n title: 'Районы и время доставки',\n labels: {\n deliveryTime: 'Время доставки',\n in: 'За',\n beforeEnd: 'минут до конца интервала',\n beforeStart: 'Окончание приема заказов',\n example: 'Например',\n title: 'Вы почти дошли до конца :)',\n subtitle: 'Осталось заполнить информацию о доставке',\n },\n messages: {\n deleted: 'Удалён',\n },\n dialogs: {\n delete: {\n title: 'Вы уверены?',\n content: 'Действие невозможно отменить',\n ok: 'Да, удалить',\n cancel: 'Нет',\n },\n },\n buttons: {\n addDelivery: 'Добавить доставку',\n delete: 'Удалить',\n addInterval: 'Добавить интервал',\n },\n helpers: {\n sameDayDelivery: {\n title: `До какого времени должен поступить заказ, чтобы вы его смогли доставить в данный период доставки.`,\n example: `Интервал доставки с 12:00 до 14:00. Заказы для\n этого интервала вы заканчиваете обрабатывать\n в 10:00 за 2 часа до начала интервала`,\n },\n expressDelivery: {\n title: `За какое время до конца интервала доставки\n должен поступить экспресс-заказ, чтобы его\n приняли?`,\n example: `Интервал доставки с 12:00 до 14:00. Экспресс-\n заказы для этого интервала вы заканчиваете\n принимать в 13:00, то есть за 60 минут до конца\n интервала`,\n },\n },\n fields: {\n districts: {\n label: 'Районы (если есть)',\n },\n payment: {\n label: 'Онлайн оплата (Выберите банк)',\n },\n days: {\n label: 'Дни доставки',\n validation: {\n require: 'Обязательно',\n },\n },\n from: {\n label: 'Начало',\n validation: {\n require: 'Обязательно',\n },\n },\n to: {\n label: 'Конец',\n validation: {\n require: 'Обязательно',\n },\n },\n sameDayDelivery: {\n label: 'Доставка \"день в день\"',\n },\n expressDelivery: {\n label: 'Экспресс-доставка',\n },\n },\n },\n};\n","export default {\n title: 'Восстановление пароля',\n form: {\n fields: {\n phone: {\n label: 'Телефон',\n validations: {\n require: 'Поле обязательно для заполнения',\n },\n },\n verificationCode: {\n label: 'Последние {{codeLength}} цифры номера',\n validations: {\n require: 'Поле обязательно для заполнения',\n },\n },\n password: {\n label: 'Новый пароль',\n validations: {\n require: 'Поле обязательно для заполнения',\n repeat: 'Пароли должны совпадать',\n },\n },\n repeatPassword: {\n label: 'Повторите новый пароль',\n validations: {\n require: 'Поле обязательно для заполнения',\n repeat: 'Пароли должны совпадать',\n },\n },\n },\n submitButton: 'Войти',\n },\n labels: {\n phoneStep:\n 'Введите номер телефона, на него поступит входящий звонок, отвечать на него не нужно',\n verificationStep:\n 'Вам поступит входящий звонок на номер {{phoneNumber}}, введите последние {{codeLength}} цифры входящего номера',\n createPasswordStep: 'Отлично :) Теперь введите новый пароль',\n },\n buttons: {\n sendCode: 'Отправить',\n createPassword: 'Сменить пароль',\n repeatVerification: 'Я не получил код :(',\n },\n messages: {\n successResetPassword: `Пароль успешно изменён`,\n requestResetPassword: `Код повторно отправлен на номер {{phoneNumber}}`,\n },\n};\n","export default {\n title: 'Кабинет компании',\n tabs: {\n companyProfile: 'Профиль компании',\n pricingPlans: 'Тарифы',\n integrations: 'Интеграции',\n },\n companyProfile: {\n fields: {\n companyName: {\n label: 'Название компании',\n placeholder: 'Введите название компании',\n validations: {\n require: 'Поле обязательно для заполнения',\n },\n },\n companyLogo: {\n label: 'Логотип',\n validations: {\n image: 'Логотип должен быть изображением',\n },\n },\n companyLocations: {\n label: 'Города:',\n },\n newCity: {\n label: 'Добавить город',\n validations: {\n require: 'Выберите своё местоположение из списка',\n },\n },\n itn: {\n label: 'ИНН',\n placeholder: 'Введите ИНН',\n validators: {\n notValid: 'ИНН не валиден',\n },\n },\n },\n submitButton: 'Сохранить',\n },\n plans: {\n pricesTable: {\n title: 'Тарифный план — ',\n },\n fields: {\n pricingPlanDuration: 'Продолжительность',\n pricingPlanMonthlyPrice: 'Цена в месяц',\n pricingPlanPrice: 'Сумма',\n },\n tariffDocumentName: 'Тарифные планы.pdf',\n yourPlan: 'ваш тариф',\n changePlan: 'Для смены тарифного плана вы можете связаться с нами по номеру',\n },\n integrations: {\n amo: {\n title: 'AmoCRM',\n amoButtonTitle: 'Подключить amoCRM',\n amoPopupTitle: 'Предоставить доступ для интеграции',\n connected: 'Интеграция подключена',\n },\n },\n messages: {\n successPricingPlanUpdate: 'Ваш тарифный план успешно изменён',\n successCompanyLogoUpdate: 'Логотип вашей компании успешно изменён',\n successCompanyNameUpdate: 'Название вашей компании было успешно обновлено',\n successCompanyLocationsUpdate: 'Список городов был успешно изменён',\n successCompanyLocationCreate: 'Город был успешно добавлен',\n successCompanyItnUpdate: 'ИНН был успешно обновлён',\n },\n};\n","import { FillingGraphLegends } from '../../routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/FillingsGraph';\nimport { VendingTelemetryStatus } from '../../routes/partner-cabinet/routes/vending/utils/vendingTelemetryUtils';\nimport { NamedPeriod } from '../../types';\n\nexport default {\n title: 'Киоски',\n liters: 'л.',\n meters: 'м.',\n registry: {\n timezoneTitle: 'Временная зона киоска',\n timezoneHelper: 'Для отображения времени на графиках используется временная зона киоска',\n },\n table: {\n columns: {\n address: 'Адрес',\n temperature: 'Температура, ℃',\n waterLevel: 'Уровень воды, м.',\n lastActivity: 'Последняя активность',\n timezone: 'Временная зона киоска',\n },\n timezoneHelper: 'Время отображается во временной зоне киоска',\n onTheMap: 'На карте',\n },\n waterVolume: {\n title: 'Уровень воды',\n },\n temperature: {\n title: 'Температура в киоске',\n },\n fillings: {\n title: 'Наливы',\n },\n temperatureGraph: {\n title: 'Динамика температуры',\n legend: 'Температура, ℃',\n },\n waterVolumeGraph: {\n title: 'Динамика уровня воды',\n legend: 'Уровень воды, м.',\n },\n fillingsGraph: {\n title: 'Динамика наливов',\n legend: 'Объём, л.',\n legends: {\n [FillingGraphLegends.TotalVolume]: 'Общий объём',\n [FillingGraphLegends.MobileAppVolume]: 'Приложение',\n },\n parameters: {\n title: 'Показатели за период',\n totalFillings: 'Общий объём наливов',\n mobileFillings: 'Через приложение',\n },\n },\n periodSwitcher: {\n [NamedPeriod.Days]: 'День',\n [NamedPeriod.Weeks]: 'Неделя',\n [NamedPeriod.Months]: 'Месяц',\n },\n datePicker: {\n from: 'Начало периода',\n to: 'Конец периода',\n },\n vendingPopup: {\n temperature: 'Температура',\n waterLevel: 'Давление воды',\n lastActivity: 'Последняя активность',\n liters: 'л.',\n meters: 'м.',\n goToVendingScreen: 'Перейти на экран киоска',\n timezone: 'Временная зона',\n },\n colorLegend: {\n [VendingTelemetryStatus.Active]: 'Работает',\n [VendingTelemetryStatus.NonActive]: 'Не работает',\n [VendingTelemetryStatus.Critical]: 'Критическое состояние',\n title: 'Состояние киоска',\n },\n};\n","export default {\n title: 'Курьеры',\n addCourier: 'Курьер',\n table: {\n columns: {\n name: 'ФИО',\n phoneNumber: 'Мобильный номер',\n email: 'Электронная почта',\n },\n tooltips: {\n notVerified: 'Курьер еще не подтвержден системой',\n deleteCourier: 'Удалить курьера',\n },\n },\n form: {\n title: 'Новый курьер',\n fields: {\n firstName: {\n label: 'Имя',\n placeholder: 'Иван',\n },\n middleName: {\n label: 'Фамилия',\n placeholder: 'Иванов',\n },\n familyName: {\n label: 'Отчество',\n placeholder: 'Иванович',\n },\n email: {\n label: 'E-mail',\n placeholder: 'example@mail.ru',\n },\n phoneNumber: {\n label: 'Телефон',\n },\n password: {\n label: 'Пароль',\n },\n },\n require: 'Поле обязательно для заполнения',\n submitButton: 'Добавить',\n messages: {\n success: 'Курьер создан',\n },\n },\n deleteButton: {\n title: 'Вы точно хотите удалить курьера {{firstName}} {{middleName}}?',\n titleNoMiddleName: 'Вы точно хотите удалить курьера {{firstName}}?',\n content: 'Это действие невозможно отменить.',\n ok: 'Да, удалить',\n cancel: 'Нет',\n messages: {\n success: 'Курьер удален',\n },\n },\n};\n","export default {\n title: 'Материалы',\n table: {\n columns: {\n material: 'Материал',\n purpose: 'Для чего он вам нужен?',\n },\n preview: 'Просмотр',\n },\n};\n","import { appScreens } from './../../routes/partner-cabinet/routes/banners/utils';\nexport default {\n title: {\n banners: 'Баннеры',\n newBanner: 'Новый баннер',\n editBanner: 'Редактировать баннер',\n editBannerShort: 'Редактировать',\n editStoryShort: 'Редактировать',\n displayLimits: 'Ограничение на показ баннера:',\n },\n types: {\n ClickBanner: 'Рекламный баннер',\n Story: 'История',\n InfoBanner: 'Информационный баннер',\n ProductSetBanner: 'Набор продуктов ',\n },\n form: {\n label: {\n type: 'Тип баннера',\n deliveryAreas: 'Зоны доставки',\n position: 'Позиция',\n bannerPreview: 'Превью баннера',\n storyPreview: 'Превью истории',\n banner: 'Баннер',\n story: 'История',\n storySlide: 'Слайд истории',\n link: 'Ссылка',\n screenInApp: 'Страница в приложении',\n productSetNumber: 'Номер набора продуктов',\n buttonCaption: 'Текст на кнопке',\n duration: 'Длительность',\n description: 'Описание',\n pageMobile: 'Страница',\n linkType: 'Тип ссылки',\n targetTab: 'Вкладка',\n linkTypes: {\n external: 'Внешняя ссылка',\n deeplink: 'На страницу в приложении',\n notSpecified: 'Не указан тип ссылки',\n },\n appScreens: {\n catalog: 'Каталог',\n about: 'О компании',\n invite: 'Пригласить друга',\n chat: 'Чат',\n contact: 'Форма обратной связи',\n mainProfile: 'Основной экран профиля',\n myProfile: 'Экран с данными профиля',\n coinsHistory: 'История начисления баллов',\n },\n enablePeriodLimit: 'По времени:',\n enableOrdersLimit: 'По количеству заказов клиента:',\n showOnStart: 'Показывать при старте',\n active: 'Активен',\n },\n button: {\n addBanner: 'Добавить баннер',\n addStory: 'Добавить историю',\n addSlideStory: 'Добавить слайд',\n deleteBanner: 'Удалить баннер',\n deleteStory: 'Удалить историю',\n deleteSlideStory: 'Удалить слайд',\n saveChanges: 'Сохранить изменения',\n },\n deleteConfirmation: {\n titleBanner: 'Вы действительно ходите удалить баннер?',\n titleStory: 'Вы действительно ходите удалить историю?',\n titleSlideStory: 'Вы действительно ходите удалить слайд?',\n content: 'Отменить данное действие невозможно',\n ok: 'Да, удалить',\n cancel: 'Отмена',\n },\n error: {\n required: 'Обязательное поле',\n notSpecified: 'Не определены для партнера',\n functionalityNotConnected: 'Функционал не подключен',\n },\n help: {\n noLonger: 'Не дольше {{DELAY_MAX_VALUE}} секунд',\n symbolsLeft: 'Символов осталось',\n uploadPreview: `Загрузить изображение\\n\\nРазмер превью любой, соотношение сторон 14:15\\nНе тяжелее двух мегабайт`,\n uploadBanner: `Загрузить изображение\\n\\nРазмер баннера любой, соотношение сторон 2:1\\nНе тяжелее двух мегабайт`,\n uploadStorySlide: `Загрузить изображение\\n\\nРазмеры слайда:\\n\\nВысота: 1920 px\\nШирина: 1080 px\\n\\nНе тяжелее\\nдвух мегабайт`,\n },\n message: {\n bannerUpdated: 'Баннер обновлен',\n storyUpdated: 'История обновлена',\n storySlideUpdated: 'Слайд обновлен',\n bannerDeleted: 'Баннер удален',\n storyDeleted: 'История удалена',\n storySlideDeleted: 'Слайд удален',\n clickBannerAdded: 'Рекламный баннер добавлен',\n storyAdded: 'История добавлена',\n storySlideAdded: 'Слайд добавлен',\n infoBannerAdded: 'Информационный баннер добавлен',\n productSetBannerAdded: 'Набор продуктов добавлен',\n },\n suffix: {\n sec: 'сек.',\n optional: '(необязательно)',\n },\n },\n tooltips: {\n limitQuantityOrders:\n 'Баннер видят только клиенты, у которых менее {{limitQuantityOrders}} заказов.',\n period: {\n activeFrom: 'Баннер отображается только с {{activeFrom}}.',\n activeTo: 'Баннер отображается только до {{activeTo}}',\n activeFromTo: 'Баннер отображается только с {{activeFrom}} до {{activeTo}}',\n },\n showOnStart: 'Баннер отображается во время запуска приложения.',\n settings: 'Настройки.',\n },\n emptyDescription: 'Описание отсутствует',\n};\n","export default {\n title: 'Отчет по отправленным SMS',\n table: {\n phone: 'Номер телефона',\n message: 'Сообщение',\n cost: 'Стоимость',\n createdAt: 'Создано',\n deliveryDate: 'Доставлено',\n type: 'Тип',\n totalCost: 'Общая стоимость',\n reportDownload: 'Скачать отчет за выбранный период',\n },\n type: {\n authorization: 'Авторизация',\n marketing: 'Маркетинг',\n },\n selector: {\n prefix: 'Тип сообщения:',\n notSelected: 'не выбран',\n },\n};\n","import registration from './registration';\nimport preregistration from './preregistration';\nimport login from './login';\nimport layout from './layout';\nimport dashboard from './dashboard';\nimport staticPages from './staticPages';\nimport transactions from './transactions';\nimport partnerSettings from './partnerSettings';\nimport finishRegistration from './finishRegistration';\nimport recoveryPassword from './recoveryPassword';\nimport profile from './profile';\nimport vending from './vending';\nimport couriers from './couriers';\nimport materials from './materials';\nimport banners from './banners';\nimport smsReport from './smsReport';\n\nexport default {\n registration,\n preregistration,\n login,\n layout,\n dashboard,\n staticPages,\n transactions,\n partnerSettings,\n finishRegistration,\n recoveryPassword,\n profile,\n vending,\n couriers,\n materials,\n banners,\n smsReport,\n};\n","export default {\n title: 'Cabinet of partner',\n labels: {\n tryOrderCabinet: 'Try demo version for operators',\n tryMobileApp: 'and mobile app demo version',\n loading: 'Wait for the download to finish',\n },\n buttons: {\n skip: 'Skip',\n next: 'Next',\n done: 'Complete',\n },\n steps: {\n password: {\n title: 'Set up a password to use the system',\n fields: {\n password: {\n label: 'Password',\n placeholder: 'Try to keep the password non-trivial*',\n help: '* use letters, numbers, and punctuation marks (preferably)',\n validators: {\n require: 'Required',\n equal: 'Passwords must match',\n },\n },\n repeatPassword: {\n label: 'Repeat password',\n validators: {\n require: 'Required',\n equal: 'Passwords must match',\n },\n },\n },\n },\n company: {\n title: 'We need more information about your company',\n fields: {\n partnerName: {\n label: 'Company Name',\n placeholder: 'Company LLC',\n validators: {\n require: 'Required',\n },\n },\n location: {\n label: 'City',\n validators: {\n require: 'Required',\n },\n },\n itn: {\n label: 'INN',\n placeholder: '1234567890',\n validators: {\n require: 'Required',\n },\n },\n currency: {\n label: 'Currency',\n validators: {\n require: 'Required',\n },\n },\n country: {\n label: 'Country',\n validators: {\n require: 'Required',\n },\n },\n contractEtching: {\n labelStart: 'I confirm that I have read the',\n labelLink: ' contract-offer ',\n labelFinish: 'and accept its terms',\n validators: {\n require: 'Required',\n },\n },\n },\n },\n },\n};\n","export default {\n title: \"Registration\",\n result: {\n title: \"You have registered in the system\",\n message: \"We have sent You an email ({{email}}), please open it and follow the instructions.\",\n spam: 'Please, if you have not received email within five minutes, check the Spam folder - it may have got there by mistake.'\n },\n form: {\n fields: {\n firstName: {\n placeholder: \"Your name\",\n label: \"Your name:\",\n validations: {\n require: \"Field is required\"\n }\n },\n email: {\n placeholder: \"E-mail\",\n label: \"E-mail:\",\n validations: {\n require: \"Field is required\",\n email: \"You specified an invalid email address\"\n }\n },\n phoneNumber: {\n placeholder: \"Phone\",\n label: \"Phone:\",\n validations: {\n require: \"Field is required\"\n }\n },\n agreement: {\n label: \"I agree with the privacy policy\",\n validations: {\n require: \"Your consent is required\"\n }\n },\n },\n labels: {\n agreement: 'By Clicking «Send» You agree to'\n },\n links: {\n agreement: \"privacy policy\"\n },\n submitButton: \"Submit\",\n alreadyHaveAccount: 'I already have an account',\n }\n}","import { AuthMethod } from \"../../routes/login/types\";\n\nexport default {\n title: 'Authorization',\n form: {\n fields: {\n username: {\n placeholder: \"example@mail.com\",\n label: \"E-mail\",\n validations: {\n require: \"this field is required\",\n email: \"You specified an invalid email address\"\n }\n },\n password: {\n label: \"Password\",\n validations: {\n require: \"this field is required\",\n }\n },\n rememberMe: {\n label: \"Remember me\",\n },\n phoneNumber: {\n label: \"Phone number\",\n validations: {\n phone: \"You specified an invalid phone number\",\n require: \"This field is required\",\n }\n }\n },\n submitButton: \"log In\",\n authMethods: {\n [AuthMethod.Phone]: \"By phone number\",\n [AuthMethod.Email]: \"By E-mail\"\n },\n },\n links: {\n registration: 'Registration',\n recoveryPassword: 'I forgot my password :('\n }\n}","export default {\n nav: {\n dashboard: 'Dashboard',\n balance: 'Balance',\n reports: 'Reports',\n documents: 'Documents',\n vending: 'Vendings',\n couriers: 'Couriers',\n materials: 'Materials',\n banners: 'Banners',\n smsReport: 'SMS report',\n },\n header: {\n company: 'Company',\n user: 'User',\n },\n mobileMenu: {\n company: 'Company settings',\n user: 'My profile',\n },\n footer: {\n contractOffer: 'User agreement',\n },\n buttons: {\n logout: 'Sign out',\n },\n};\n","export default {\n blocks: {\n marketerCabinet: {\n title: 'Marketing Panel',\n body: 'View reports and analyze data',\n },\n orderCabinet: {\n title: 'Sales Panel',\n body: 'View, add and edit orders and clients',\n },\n settingsCabinet: {\n title: 'Settings Panel',\n body: 'Make changes to products, services, images, descriptions, and prices',\n },\n clientApp: {\n title: 'My Mobile App',\n //body: \"Make changes to products, services, images, descriptions, and prices\"\n },\n orderSite: {\n title: 'My Website',\n //body: \"Make changes to products, services, images, descriptions, and prices\"\n },\n knowledge: {\n title: 'Knowledge base',\n body: 'Find answers to questions about working with the system',\n },\n },\n welcome: {\n title: 'Thank you',\n title2: 'for registration!',\n subTitle: 'We will call you soon :)',\n phone: 'Or you can contact us by phone',\n subPhone: 'for further actions',\n },\n labels: {\n login: 'Login',\n password: 'Password',\n links: {\n apple: 'App Store',\n google: 'Google Play',\n smartLink: 'Smart Link',\n },\n },\n tooltips: {\n copy: 'Copy',\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n smartLink:\n 'The address of a special page which redirects to the application store automatically',\n },\n messages: {\n login: 'Username copied',\n password: 'Password copied',\n linkCopied: 'Link copied',\n },\n buttons: {\n goToCabinet: 'Go',\n },\n documents: {\n title: 'Documents',\n content: {\n datepiker: {\n from: 'Beginning of period',\n to: 'End of period',\n select: 'All orders',\n },\n table: {\n label: 'Bill for',\n date: 'Date',\n total: 'Total',\n panel: {\n header: 'Other',\n extra: 'Act',\n content: 'Act',\n },\n error: 'No invoices found',\n },\n },\n state: {\n invoice_created: 'Pay',\n invoice_paid: 'Paid',\n invoice_archived: 'Archived',\n },\n },\n};\n","export default {\n comingSoon: \"The page is still in development\"\n}","export default {\n title: 'Balance history',\n labels: {\n balance: 'Balance',\n totalPay: 'Amount to be paid',\n debit: 'Debit',\n paymentMethod: 'Choose payment method',\n },\n buttons: {\n deposit: 'Add funds',\n deposit2: 'Add',\n },\n};\n","export default {\n intervals: {\n title: \"Delivery areas and schedule\",\n labels: {\n deliveryTime: \"Delivery Time\",\n in: 'For',\n beforeEnd: \"minute until the end of the interval\",\n beforeStart: \"End of order acceptance periods\",\n example: \"For Example\",\n title: \"You've almost there :)\",\n subtitle: \"Just fill out delivery information\"\n },\n messages: {\n deleted: \"Deleted\"\n },\n dialogs: {\n delete: {\n title: \"Are you sure?\",\n content: 'The action cannot be undone',\n ok: \"Yes, delete\",\n cancel: \"No\"\n }\n },\n buttons: {\n addDelivery: \"Add delivery\",\n delete: \"Delete\",\n addInterval: \"Add interval\"\n },\n helpers: {\n sameDayDelivery: {\n title: `Until when should the order arrive so that you can deliver it during this delivery period.`,\n example: `Delivery Interval from 12:00 to 14: 00. Orders for \n this interval you finish processing\n at 10:00 2 hour before the start of the interval`\n },\n expressDelivery: {\n title: `How long before the end of the delivery interval\n an Express order must be received in order for it\n accepted?`,\n example: `Delivery Interval from 12:00 to 14: 00. Express-\n orders for this interval you finish\n take at 13:00, that is, 60 minute before the end\n interval's`\n }\n },\n fields: {\n districts: {\n label: \"Districts (if any)\"\n },\n payment: {\n label: \"Online payment (Choice bank)\"\n },\n days: {\n label: \"Day of delivery\",\n validation: {\n require: \"Required\"\n }\n },\n from: {\n label: \"From\",\n validation: {\n require: \"Required\"\n }\n },\n to: {\n label: \"To\",\n validation: {\n require: \"Required\"\n }\n },\n sameDayDelivery: {\n label: 'Intraday delivery',\n },\n expressDelivery: {\n label: 'Express delivery'\n },\n }\n }\n\n}","import { StepName } from \"../../routes/partner-cabinet/routes/finish-registration/components/stepperHelper/StepNameEnum\";\n\nexport default {\n buttons: {\n next: \"Next\",\n complete: \"Complete\"\n },\n pricingPlans: {\n title: \"Thank You\",\n title2: \"for registering!\",\n subtitle: \"Choose your plan\",\n pricesTable: {\n title: 'Pricing plan — ',\n },\n messages: {\n notSelectedPricingPlan: \"Choose a pricing plan\"\n },\n labels: {\n pricingPlanDuration: 'Period',\n pricingPlanMonthlyPrice: 'Monthly payment',\n pricingPlanPrice: 'Price',\n launchAmount: \"Launch price\",\n pricingPlanActions: \"Choose\",\n }\n },\n payment: {\n title: \"Are you ready to start? Let's make a payment!\",\n card: {\n bankCard: {\n title: \"Online payment\",\n content: \"Pay online\",\n },\n contract: {\n title: \"Requisites\",\n content: \"Agreement \",\n }\n },\n labels: {\n oferta: \"Oferta Agreement\",\n paymentMethodsNotAvailable: \"Unfortunately, none of the existing payment methods are available to you.\",\n callUs: \"Contact us by phone:\",\n },\n fields: {\n file: {\n label: \"Upload the requisites\",\n validators: {\n require: \"This field is required\"\n }\n }\n },\n buttons: {\n download: \"Download\",\n back: \"Back to pricing plans\"\n },\n tooltips: {\n payWithOnlinePayment: 'Choose one of the available payment methods',\n },\n },\n company: {\n title: \"Tell us\",\n title2: \"about your company\",\n subtitle: `We need more information\n about your company for an individual app \n and sales website`,\n buttons: {\n save: \"Save\",\n next: \"Next\",\n skip: \"Skip\",\n back: \"Back\"\n },\n navigation: {\n about: \"About the company\",\n contacts: \"Company contacts\",\n dispatchers: \"Operator\",\n links: \"Links\",\n paymmentMethods: \"How will your customers pay?\",\n details: \"Company details\",\n assets: \"Brand design\",\n },\n steps: {\n main: {\n title: \"Company information\",\n fields: {\n brandName: {\n label: \"Brand Name\",\n validators: {\n require: \"please, fill it\"\n }\n },\n memo: {\n label: \"This text will be on the sales site and in the client application\",\n placeholder: \"Tell us what year you have been on the market, what are your advantages, what is your product range\",\n validators: {\n require: \"please, fill it\"\n }\n }\n }\n },\n contacts: {\n title: \"Company contacts\",\n fields: {\n directorPhoneNumber: {\n label: \"Manager's Phone number\",\n validators: {\n require: \"please, fill it\"\n }\n },\n directorEmail: {\n label: \"Manager's E-mail\",\n validators: {\n require: \"please, fill it\",\n email: \"It looks Like you entered an invalid email address\"\n }\n },\n companyPhoneNumber: {\n label: \"Company Phone\",\n validators: {\n require: \"please, fill it\"\n }\n },\n companyEmail: {\n label: \"Company's E-mail\",\n validators: {\n require: \"please, fill it\",\n email: \"It looks Like you entered an invalid email address\"\n }\n },\n pickupLocation: {\n label: \"Pickup address\",\n }\n }\n },\n dispatchers: {\n title: \"Operator\",\n fields: {\n dispatcherPhoneNumber: {\n label: \"Operator's Phone number\",\n validators: {\n require: \"please, fill it\"\n }\n },\n dispatcherEmail: {\n label: \"Operator's E-mail\",\n validators: {\n require: \"please, fill it\",\n email: \"It looks Like you entered an invalid email address\"\n }\n },\n }\n },\n links: {\n title: \"Links to social networks\",\n fields: {\n site: { label: \"Website\", check: \"we don't have any\" },\n vkLink: { label: \"Social Network page\", check: \"we don't have any\" },\n instagramLink: { label: \"Instagram\", check: \"we don't have Instagram\" },\n misc: { label: \"Other sources\" },\n }\n },\n paymentMethods: {\n title: \"How will your customers pay?\",\n fields: {\n onlinePayment: {\n notSelected: \"Not selected\",\n },\n other: {\n label: \"Other option\"\n }\n }\n },\n assets: {\n title: \"Upload your logo and brand book (if available)\",\n labels: {\n sendEmail: \"Or send data to email\",\n sendEmail2: \"In the subject line, write the city you are from and the name of your company / brand\"\n }\n },\n details: {\n title: \"Upload your company details\",\n fields: {\n companyDetails: {\n validators: {\n require: 'Company details are required for uploading'\n }\n }\n }\n },\n }\n },\n partnerFinish: {\n title: 'Thank you for registering!',\n discription:\n 'In the near future we will contact you, ask a few clarifying questions and start building your application.',\n },\n stepper: {\n [StepName.pricingPlan]: \"Pricing Plan\",\n [StepName.payment]: \"Payment\",\n [StepName.companyInfo]: \"About company\",\n }\n}","export default {\n title: 'Password recovery',\n form: {\n fields: {\n phone: {\n label: 'Phone',\n validations: {\n require: 'this field is required',\n },\n },\n verificationCode: {\n label: 'Last {{codeLength}} numbers',\n validations: {\n require: 'this field is required',\n },\n },\n password: {\n label: 'New password',\n validations: {\n require: 'this field is required',\n repeat: 'Passwords must match',\n },\n },\n repeatPassword: {\n label: 'Repeat the new password',\n validations: {\n require: 'this field is required',\n repeat: 'Passwords must match',\n },\n },\n },\n submitButton: 'Войти',\n },\n labels: {\n phoneStep:\n 'Enter your phone number, it will receive an incoming call, you do not need to answer',\n verificationStep:\n 'You will receive an incoming call to {{phoneNumber}}, enter the last {{codeLength}} numbers',\n createPasswordStep: 'Great :) Now enter your new password',\n },\n buttons: {\n sendCode: 'Send',\n createPassword: 'Change password',\n repeatVerification: \"I didn't get the code :(\",\n },\n messages: {\n successResetPassword: 'Password changed successfully',\n requestResetPassword: `Code re-sent to {{phoneNumber}}`,\n },\n};\n","export default {\n title: \"Company Panel\",\n tabs: {\n companyProfile: \"Company profile\",\n pricingPlans: \"Pricing plans\",\n integrations: \"Integrations\",\n },\n companyProfile: {\n fields: {\n companyName: {\n label: \"Company name\",\n placeholder: \"Type your company name\",\n validations: {\n require: \"This field is required\",\n }\n },\n companyLogo: {\n label: \"Logo\",\n validations: {\n image: \"Logo should be an image\",\n }\n },\n companyLocations: {\n label: \"Cities:\",\n },\n newCity: {\n label: \"Add city\",\n validations: {\n require: \"Choose your city from the list\",\n }\n },\n itn: {\n label: \"EIN Number\",\n placeholder: \"Type your EIN Number\",\n validators: {\n notValid: 'EIN Number is not valid',\n }\n }\n },\n submitButton: \"Save\",\n },\n plans: {\n pricesTable: {\n title: 'Pricing plan — ',\n },\n fields: {\n pricingPlanDuration: 'Period',\n pricingPlanMonthlyPrice: 'Monthly payment',\n pricingPlanPrice: 'Price',\n },\n tariffDocumentName: \"Pricing plans.pdf\",\n yourPlan: \"your pricing plan\",\n changePlan: \"To change the pricing plan, you can contact us at\",\n },\n integrations: {\n amo: {\n title: 'AmoCRM',\n amoButtonTitle: 'Connect amoCRM',\n amoPopupTitle: 'Grant access for integration',\n connected: 'Connected',\n },\n },\n messages: {\n successPricingPlanUpdate: \"Your pricing plan was successfully updated\",\n successCompanyLogoUpdate: \"Your company logo was successfully updated\",\n successCompanyNameUpdate: \"Your company name was successfully updated\",\n successCompanyLocationsUpdate: \"Cities list was successfully updated\",\n successCompanyLocationCreate: \"New city was successfully updated\",\n successCompanyItnUpdate: \"EIN Number was successfully updated\"\n }\n}","import { FillingGraphLegends } from '../../routes/partner-cabinet/routes/vending/components/graphs/FillingsGraph/FillingsGraph';\nimport { VendingTelemetryStatus } from '../../routes/partner-cabinet/routes/vending/utils/vendingTelemetryUtils';\nimport { NamedPeriod } from '../../types';\n\nexport default {\n title: 'Vendings',\n liters: 'ltr.',\n meters: 'm.',\n registry: {\n timezoneTitle: 'Vending timezone',\n timezoneHelper: 'The time zone of the vending is used to display the time on the charts',\n },\n table: {\n columns: {\n address: 'Address',\n temperature: 'Temperature, ℃',\n waterLevel: 'Water level, m.',\n lastActivity: 'Latest activity',\n timezone: 'Vending timezone',\n },\n timezoneHelper: 'Time is displayed in the vending timezone',\n onTheMap: 'On the map',\n },\n waterVolume: {\n title: 'Water level',\n },\n temperature: {\n title: 'Vending temperature',\n },\n fillings: {\n title: 'Fillings',\n },\n temperatureGraph: {\n title: 'Vending temperature dynamics',\n legend: 'Temperature, ℃',\n },\n waterVolumeGraph: {\n title: 'Water level dynamics',\n legend: 'Water level, m.',\n },\n fillingsGraph: {\n title: 'Filling dynamics',\n legend: 'Volume, ltr.',\n legends: {\n [FillingGraphLegends.TotalVolume]: 'Total volume',\n [FillingGraphLegends.MobileAppVolume]: 'Mobile app',\n },\n parameters: {\n title: 'Indicators for the period',\n totalFillings: 'Total volume of fillings',\n mobileFillings: 'Through the app',\n },\n },\n periodSwitcher: {\n [NamedPeriod.Days]: 'Day',\n [NamedPeriod.Weeks]: 'Week',\n [NamedPeriod.Months]: 'Month',\n },\n datePicker: {\n from: 'Beginning of period',\n to: 'End of period',\n },\n vendingPopup: {\n temperature: 'Temperature',\n waterLevel: 'Water level',\n lastActivity: 'Latest activity',\n liters: 'ltr.',\n meters: 'm.',\n goToVendingScreen: 'Go to the vending screen',\n timezone: 'Timezone',\n },\n colorLegend: {\n [VendingTelemetryStatus.Active]: 'Working',\n [VendingTelemetryStatus.NonActive]: 'Not working',\n [VendingTelemetryStatus.Critical]: 'Critical state',\n title: 'Vending state',\n },\n};\n","export default {\n title: 'Couriers',\n addCourier: 'Courier',\n table: {\n columns: {\n name: 'Name',\n phoneNumber: 'Phone number',\n email: 'E-mail',\n },\n tooltips: {\n notVerified: 'Courier has not yet been confirmed by the system',\n deleteCourier: 'Delete courier',\n },\n },\n form: {\n title: 'New courier',\n fields: {\n firstName: {\n label: 'First name',\n placeholder: 'John',\n },\n middleName: {\n label: 'Last name',\n placeholder: 'Smith',\n },\n familyName: {\n label: 'Middle name (optional)',\n placeholder: '',\n },\n email: {\n label: 'E-mail',\n placeholder: 'example@gmail.com',\n },\n phoneNumber: {\n label: 'Phone number',\n },\n password: {\n label: 'Password',\n },\n },\n require: 'This field is required',\n submitButton: 'Add',\n messages: {\n success: 'Courier created',\n },\n },\n deleteButton: {\n title: 'Are you sure you want to delete the courier {{firstName}} {{middleName}}?',\n titleNoMiddleName: 'Are you sure you want to delete the courier {{firstName}}?',\n content: 'This action cannot be undone.',\n ok: 'Yes, delete',\n cancel: 'No',\n messages: {\n success: 'The courier has been deleted',\n },\n },\n};\n","export default {\n title: 'Materials',\n table: {\n columns: {\n material: 'Material',\n purpose: 'How can it help you?',\n },\n preview: 'Preview',\n },\n};\n","export default {\n title: {\n banners: 'Banners',\n newBanner: 'New banner',\n editBanner: 'Edit banner',\n editBannerShort: 'Edit banner',\n editStoryShort: 'Edit story',\n displayLimits: 'Banner display limit:',\n },\n types: {\n ClickBanner: 'Advertising banner',\n Story: 'Story',\n InfoBanner: 'Information banner',\n ProductSetBanner: 'Set of products',\n },\n form: {\n label: {\n type: 'Banner type',\n deliveryAreas: 'Delivery Areas',\n position: 'Position',\n bannerPreview: 'Banner preview',\n storyPreview: 'Story preview',\n banner: 'Banner',\n story: 'Story',\n storySlide: 'Story slide',\n link: 'Link',\n screenInApp: 'Screen in the mobile app',\n productSetNumber: 'Product set number',\n buttonCaption: 'Button caption',\n duration: 'Duration',\n description: 'Description',\n pageMobile: 'Page in app',\n linkType: 'Link type',\n targetTab: 'Tab',\n linkTypes: {\n external: 'External link',\n deeplink: 'Link to a screen in the mobile app',\n notSpecified: 'Link type not specified',\n },\n appScreens: {\n catalog: 'Catalog',\n about: 'About',\n invite: 'Invite a friend',\n chat: 'Chat',\n contact: 'Contact',\n mainProfile: 'Main profile',\n myProfile: 'My profile',\n coinsHistory: 'Coins history',\n },\n enablePeriodLimit: 'By time:',\n enableOrdersLimit: 'By number of customer orders:',\n showOnStart: 'Show on start',\n active: 'Active',\n },\n button: {\n addBanner: 'Add banner',\n addStory: 'Add story',\n addSlideStory: 'Add slide',\n deleteBanner: 'Delete banner',\n deleteStory: 'Delete story',\n deleteSlideStory: 'Delete slide',\n saveChanges: 'Save changes',\n },\n deleteConfirmation: {\n titleBanner: 'Are you sure you want to delete the banner?',\n titleStory: 'Are you sure you want to delete the story?',\n titleSlideStory: 'Are you sure you want to delete the slide?',\n content: 'You cannot undo this action',\n ok: 'Yes, delete',\n cancel: 'Cancel',\n },\n error: {\n required: 'Required field',\n notSpecified: 'Not specified for partner',\n functionalityNotConnected: 'The functionality is not connected',\n },\n help: {\n noLonger: 'No longer than {{DELAY_MAX_VALUE}} sec.',\n symbolsLeft: 'Symbols left',\n uploadPreview: `Upload image\\n\\nPreview size is arbitrary, aspect ratio is 14:15\\nFile size should not exceed 2 megabytes`,\n uploadBanner: `Upload image\\n\\nPreview size is arbitrary, aspect ratio is 2:1\\nFile size should not exceed 2 megabytes`,\n uploadStorySlide: `Upload image\\n\\nSlide size:\\n\\nHeight: 1920 px\\nWidth: 1080 px\\n\\nFile size\\nshould not exceed\\n2 megabytes`,\n },\n message: {\n bannerUpdated: 'The banner has been updated',\n storyUpdated: 'The story has been updated',\n storySlideUpdated: 'The slide has been updated',\n bannerDeleted: 'The banner has been deleted',\n storyDeleted: 'The story has been deleted',\n storySlideDeleted: 'The slide has been deleted',\n clickBannerAdded: 'Advertising banner has been added',\n storyAdded: 'Story has been added',\n storySlideAdded: 'Slide has been added',\n infoBannerAdded: 'Information banner has been added',\n productSetBannerAdded: 'Set of products has been added',\n },\n suffix: {\n sec: 'sec.',\n optional: '(optional)',\n },\n },\n tooltips: {\n limitQuantityOrders:\n 'The banner is only visible to customers with less than {{limitQuantityOrders}} orders.',\n period: {\n activeFrom: 'Banner is only displayed with {{activeFrom}}.',\n activeTo: 'The banner is displayed only up to {{activeTo}}',\n\n activeFromTo: 'The banner is displayed only from {{activeFrom}} to {{activeTo}}',\n },\n showOnStart: 'Banner is displayed during app launch.',\n settings: 'Settings.',\n },\n emptyDescription: 'No description',\n};\n","export default {\n title: 'SMS report',\n table: {\n phone: 'Phone number',\n message: 'Message',\n cost: 'Cost',\n createdAt: 'Ceated at',\n deliveryDate: 'Delivered in',\n type: 'Type',\n totalCost: 'Total cost',\n reportDownload: 'Download report for the selected period',\n },\n type: {\n authorization: 'Authorization',\n marketing: 'Marketing',\n },\n selector: {\n prefix: 'Message type:',\n notSelected: 'not selected',\n },\n};\n","import { createTranslationMap } from '../aqua-delivery-web-client-ui/i18n';\nimport ru from './ru';\nimport en from './en';\n\nexport const translateMap: typeof ru = createTranslationMap(ru);\n\nexport default {\n ru,\n en,\n};\n","import { gql } from \"apollo-boost\";\n\nimport { BaseEntity } from \"../../types\";\n\nexport declare type TRegistry = BaseEntity<{\n username: string;\n active: boolean;\n empty: boolean | null;\n enabled: boolean;\n}>\n\nconst fragment = gql`\n fragment Registry on Registry {\n id,\n username,\n active,\n empty,\n enabled\n }\n`;\n\nconst RegistryEntity = {\n fragment,\n createId: (id: string) => `/iot/registries/${id}`,\n};\n\nexport default RegistryEntity","import React from 'react';\n\nimport { Locale } from 'antd/lib/locale-provider';\n\nimport { I18nContext } from '../aqua-delivery-web-client-ui/i18n';\n\nimport ru from 'antd/es/locale/ru_RU';\nimport en from 'antd/es/locale/en_US';\n\ntype AntdLocale = {\n antdLocale: Locale;\n};\n\nconst locales: Record = {\n ru,\n en,\n};\n\nexport default function (): AntdLocale {\n const { locale } = React.useContext(I18nContext);\n\n return {\n antdLocale: locales[locale],\n };\n}\n","import * as React from \"react\";\n\nexport type LoaderContextProps = {\n setLoaderState: (id: string, state: boolean)=>void\n}\n\nexport const LoaderContext = React.createContext({\n setLoaderState: ()=>{}\n})","import { Theme } from '@nivo/core';\n\nconst nivoTheme: Theme = {\n fontSize: 12,\n grid: {\n line: {\n stroke: '#D9D9D9',\n strokeWidth: 1,\n },\n },\n axis: {\n ticks: {\n text: {\n color: '#404040',\n fontSize: 12,\n opacity: 0.67,\n },\n line: {\n stroke: '#E6E6E6',\n strokeWidth: 2,\n },\n },\n },\n};\n\nexport default nivoTheme;\n","import { QueryHookOptions, useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nimport RegistryEntity, { TRegistry } from \"../entities/RegistryEntity\";\nimport PostalAddressEntity, { TPostalAddress } from \"../entities/PostalAddressEntity\";\n\nexport type GetRegistryVariables = {\n id: string,\n}\n\nexport type GetRegistryResult = {\n registry: TRegistry & {\n postalAddress: TPostalAddress,\n },\n}\n\nconst query = gql`\n query getRegistry($id: ID!) {\n registry(id: $id) {\n ...Registry,\n postalAddress {\n ...PostalAddress,\n }\n }\n }\n\n ${RegistryEntity.fragment}\n ${PostalAddressEntity.fragment}\n`;\n\nexport default function (options: QueryHookOptions) {\n return useQuery(query, options);\n}","import React from 'react';\n\nimport { PointTooltipProps } from '@nivo/line';\n\nimport View from '../../../../../../aqua-delivery-web-client-ui/components/View';\n\nconst PointTooltip: React.FC = ({ children, ...other }) => (\n \n {children}\n \n);\n\nexport default PointTooltip;","import React, { useContext, useMemo } from 'react';\n\nimport { Typography } from 'antd';\nimport { PointTooltipProps } from '@nivo/line';\n\nimport EmptyPanel from '../../../../../../aqua-delivery-web-client-ui/components/EmptyPanel';\nimport { formatWithSign } from '../../../../../../aqua-delivery-client-graphql/utils';\nimport useLocalTranslation from '../../../../../../hooks/useLocalTranslation';\nimport useTelemetry from '../../../../../../aqua-delivery-client-graphql/iot/queries/useTelemetry';\nimport TelemetryReportEntity, {\n TelemetryType,\n AggregationType,\n} from '../../../../../../aqua-delivery-client-graphql/iot/entities/TelemetryReportRequestEntity';\n\nimport BaseLineGraph from '../base-graph/BaseLineGraph';\nimport Section from '../section/Section';\nimport PointTooltip from '../base-graph/PointTooltip';\nimport {\n formatChartDataPeriod,\n transformTimelineChartData,\n getChartDataUtcPeriod,\n} from '../../utils/graphUtils';\nimport GraphLoader from '../base-graph/GraphLoader';\nimport usePeriod, { getNamedPeriodDates } from '../../hooks/usePeriod';\nimport { RegistryContext } from '../../Registry';\nimport PeriodSectionHeader from '../section/PeriodSectionHeader';\nimport Graph from '../base-graph/Graph';\nimport SectionHeader from '../section/SectionHeader';\nimport { NamedPeriod } from '../../../../../../types';\nimport usePeriodGraphPoints from '../../hooks/usePeriodGraphPoints';\n\ntype TemperatureGraphProps = {\n registryId: string;\n};\n\nconst TemperatureTooltip = (props: PointTooltipProps) => {\n const { dayjs } = useContext(RegistryContext);\n\n return (\n \n <>\n {formatWithSign(Number(props.point.data.y)) + '°'}\n \n {dayjs(props.point.data.x).format('DD.MM.YY HH:mm')}\n \n >\n \n );\n};\n\nconst defaultPeriod = NamedPeriod.Weeks;\n\nconst TemperatureGraph: React.FC = ({ registryId }) => {\n const { dayjs, timezone } = useContext(RegistryContext);\n\n const { period, utcPeriod, setPeriod, namedPeriod, isDailyPeriod } = usePeriod({\n namedPeriod: defaultPeriod,\n useNamedPeriod: true,\n ...getNamedPeriodDates(defaultPeriod, timezone),\n });\n\n const { points } = usePeriodGraphPoints({ defaultPoints: 60, namedPeriod, period });\n\n const { legend, title: graphTitle } = useLocalTranslation(\n t => t.vending.temperatureGraph,\n t => t,\n );\n\n const { title } = useLocalTranslation(\n t => t.vending.temperature,\n t => t,\n );\n\n const chartPeriodDates = getChartDataUtcPeriod(utcPeriod, timezone);\n const unitInterval = TelemetryReportEntity.getUnitInterval(chartPeriodDates, points);\n const formattedChartDataPeriod = formatChartDataPeriod(chartPeriodDates);\n\n const variables = {\n registry: registryId,\n type: TelemetryType.Temperature,\n aggregationType: AggregationType.Avg,\n interval: unitInterval,\n ...formattedChartDataPeriod,\n };\n\n const { data: temperature, loading: temperatureLoading } = useTelemetry({\n variables,\n fetchPolicy: 'network-only',\n pollInterval: 60 * 2000,\n });\n\n const chartData = useMemo(\n () =>\n transformTimelineChartData(\n TelemetryReportEntity.toObject(temperature?.getTelemetryReport.values).map(\n item => ({\n ...item,\n value: item.value && Math.round(item.value),\n }),\n ),\n ),\n [temperature],\n );\n\n const chartDataLength = chartData.aggregatedData.filter(item => item.y !== null).length;\n\n const minMaxValues = useMemo(() => {\n if (chartData.series.length === 0) {\n return {\n min: 0,\n max: 0,\n };\n }\n\n const verticalPadding = 1;\n\n const values = chartData.aggregatedData\n .map(item => item.y)\n .filter(item => item !== null) as number[];\n\n const min = Math.min(...values) - verticalPadding;\n const max = Math.max(...values) + verticalPadding;\n\n return { min, max };\n }, [chartData]);\n\n const areaBaselineValue = useMemo(() => {\n const { min, max } = minMaxValues;\n\n if (max < 0) return max;\n if (min > 0) return min;\n\n return 0;\n }, [minMaxValues]);\n\n return (\n \n \n \n \n \n \n {chartDataLength > 0 ? (\n \n Number.isInteger(Number(temperature))\n ? formatWithSign(Number(temperature))\n : '',\n }}\n axisBottomProps={{\n format: values =>\n dayjs(values).format(isDailyPeriod ? 'HH:mm' : 'DD.MM'),\n }}\n areaBaselineValue={areaBaselineValue}\n tooltip={TemperatureTooltip}\n {...minMaxValues}\n />\n ) : (\n \n )}\n \n \n \n );\n};\n\nexport default TemperatureGraph;\n","import React, { useMemo, useContext } from 'react';\n\nimport { PointTooltipProps } from '@nivo/line';\nimport { Typography } from 'antd';\n\nimport EmptyPanel from '../../../../../../aqua-delivery-web-client-ui/components/EmptyPanel';\nimport useLocalTranslation from '../../../../../../hooks/useLocalTranslation';\nimport useTelemetry from '../../../../../../aqua-delivery-client-graphql/iot/queries/useTelemetry';\nimport TelemetryReportEntity, {\n TelemetryType,\n AggregationType,\n} from '../../../../../../aqua-delivery-client-graphql/iot/entities/TelemetryReportRequestEntity';\nimport { roundNumber } from '../../../../../../aqua-delivery-client-graphql/utils';\n\nimport BaseLineGraph from '../base-graph/BaseLineGraph';\nimport Section from '../section/Section';\nimport PointTooltip from '../base-graph/PointTooltip';\nimport GraphLoader from '../base-graph/GraphLoader';\nimport {\n formatChartDataPeriod,\n transformTimelineChartData,\n getChartDataUtcPeriod,\n} from '../../utils/graphUtils';\nimport usePeriod, { getNamedPeriodDates } from '../../hooks/usePeriod';\nimport { RegistryContext } from '../../Registry';\nimport Graph from '../base-graph/Graph';\nimport PeriodSectionHeader from '../section/PeriodSectionHeader';\nimport SectionHeader from '../section/SectionHeader';\nimport { NamedPeriod } from '../../../../../../types';\nimport usePeriodGraphPoints from '../../hooks/usePeriodGraphPoints';\nimport { DatumValue } from '@nivo/core';\n\ntype VolumeGraphProps = {\n registryId: string;\n};\n\nconst WaterVolumeTooltip = (props: PointTooltipProps) => {\n const { dayjs } = useContext(RegistryContext);\n\n const [meters] = useLocalTranslation(\n t => t.vending,\n t => [t.meters],\n );\n\n return (\n \n <>\n {`${props.point.data.y} ${meters}`}\n \n {dayjs(props.point.data.x).format('DD.MM.YY HH:mm')}\n \n >\n \n );\n};\n\nconst defaultPeriod = NamedPeriod.Weeks;\n\nconst VolumeGraph: React.FC = ({ registryId }) => {\n const { dayjs, timezone } = useContext(RegistryContext);\n\n const { period, utcPeriod, setPeriod, namedPeriod, isDailyPeriod } = usePeriod({\n namedPeriod: defaultPeriod,\n useNamedPeriod: true,\n ...getNamedPeriodDates(defaultPeriod, timezone),\n });\n\n const { points } = usePeriodGraphPoints({ defaultPoints: 60, namedPeriod, period });\n\n const { legend, title: graphTitle } = useLocalTranslation(\n t => t.vending.waterVolumeGraph,\n t => t,\n );\n\n const { title } = useLocalTranslation(\n t => t.vending.waterVolume,\n t => t,\n );\n\n const chartPeriodDates = getChartDataUtcPeriod(utcPeriod, timezone);\n const unitInterval = TelemetryReportEntity.getUnitInterval(chartPeriodDates, points);\n const formattedChartDataPeriod = formatChartDataPeriod(chartPeriodDates);\n\n const variables = {\n registry: registryId,\n type: TelemetryType.Height,\n aggregationType: AggregationType.Avg,\n interval: unitInterval,\n ...formattedChartDataPeriod,\n };\n\n const { data: waterVolume, loading: waterVolumeLoading } = useTelemetry({\n variables,\n fetchPolicy: 'network-only',\n pollInterval: 60 * 2000,\n });\n\n const chartData = useMemo(\n () =>\n transformTimelineChartData(\n TelemetryReportEntity.toObject(\n waterVolume?.getTelemetryReport.values,\n ).map(event => ({ ...event, value: event.value && roundNumber(event.value, 2) })),\n ),\n [waterVolume],\n );\n\n const chartDataLength = chartData.aggregatedData.filter(item => item.y !== null).length;\n\n const minMaxValues = useMemo(() => {\n if (chartData.series.length === 0) return {};\n\n const values = chartData.aggregatedData\n .map(item => item.y)\n .filter(item => item !== null) as number[];\n\n const min = 0;\n const max = Math.max(...values) + 1;\n\n return { min, max };\n }, [chartData]);\n\n const axisLeftProps = useMemo(\n () => ({\n legend,\n format: (waterVolume: DatumValue) =>\n Number.isInteger(Number(waterVolume)) ? Number(waterVolume) : '',\n }),\n [legend],\n );\n\n const axisBottomProps = useMemo(\n () => ({\n format: (values: DatumValue) => dayjs(values).format(isDailyPeriod ? 'HH:mm' : 'DD.MM'),\n }),\n [dayjs, isDailyPeriod],\n );\n\n return (\n \n \n \n \n \n \n {chartDataLength > 0 ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n\nexport default VolumeGraph;\n","import React, { useCallback } from 'react';\n\nimport { RouteComponentProps, useHistory } from 'react-router-dom';\nimport { Spin, ConfigProvider, Typography } from 'antd';\nimport { When } from 'react-if';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport withNetworkLayer from '../../../../aqua-delivery-web-client-ui/components/network/withNetworkLayer';\nimport RegistryEntity from '../../../../aqua-delivery-client-graphql/iot/entities/RegistryEntity';\nimport useAntdLocale from '../../../../hooks/useAntdLocale';\nimport Title from '../../../../aqua-delivery-web-client-ui/components/page/Title';\nimport { TPostalAddress } from '../../../../aqua-delivery-client-graphql/iot/entities/PostalAddressEntity';\nimport useGetRegistry from '../../../../aqua-delivery-client-graphql/iot/queries/useGetRegistry';\nimport { getTimezoneFromCoordinates } from '../../../../aqua-delivery-web-client-ui/Utils';\nimport { createDayjsWithTimezone } from '../../../../aqua-delivery-web-client-ui/i18n';\nimport { formatWithSign } from '../../../../aqua-delivery-client-graphql/utils';\nimport useLocalTranslation from '../../../../hooks/useLocalTranslation';\nimport Help from '../../../../aqua-delivery-web-client-ui/components/Help';\n\nimport TemperatureGraph from './components/graphs/TemperatureGraph';\nimport VolumeGraph from './components/graphs/VolumeGraph';\nimport FillingsGraph from './components/graphs/FillingsGraph/FillingsGraph';\n\nimport './styles/styles.less';\n\ntype RouteParams = {\n id: string;\n};\n\ntype RegistryProps = RouteComponentProps;\n\nconst buildPageTitle = (postalAddress: TPostalAddress) => {\n return postalAddress.streetAddress\n ? `${postalAddress.streetAddress} (${postalAddress.addressLocality})`\n : postalAddress.addressLocality;\n};\n\nexport const RegistryContext = React.createContext<{\n timezone: number;\n dayjs: (date: Dayjs | Date | string | number) => Dayjs;\n}>({\n timezone: 0,\n dayjs: date => createDayjsWithTimezone(date, 0),\n});\n\nconst Registry: React.FC = props => {\n const [timezoneTitle, timezoneHelper] = useLocalTranslation(\n t => t.vending.registry,\n t => [t.timezoneTitle, t.timezoneHelper],\n );\n\n const history = useHistory();\n\n const goBack = useCallback(async () => history.push('/vending'), [history]);\n\n const { antdLocale } = useAntdLocale();\n\n const registryId = RegistryEntity.createId(props.match.params.id);\n\n const { data: registryData, loading } = useGetRegistry({\n variables: { id: registryId },\n });\n\n const postalAddress = registryData?.registry.postalAddress;\n\n const pageTitle = postalAddress && buildPageTitle(postalAddress);\n\n const coordinates = registryData?.registry.postalAddress.coordinates;\n\n const timezone = coordinates\n ? getTimezoneFromCoordinates(coordinates.latitude)\n : dayjs().utcOffset();\n\n return (\n createDayjsWithTimezone(date, timezone),\n }}\n >\n \n \n \n \n\n \n {timezoneTitle}:{' '}\n UTC{formatWithSign(timezone)}\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default withNetworkLayer({ service: 'iot' })(Registry);\n","import { Dayjs } from 'dayjs';\nimport generatePicker, {\n PickerDateProps,\n PickerTimeProps,\n RangePickerBaseProps,\n} from 'antd/lib/date-picker/generatePicker';\nimport dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs';\n\nimport 'antd/es/date-picker/style/index';\n\nexport type DatePickerProps = PickerDateProps;\nexport type TimePickerProps = PickerTimeProps;\nexport type RangePickerProps = Omit, 'picker'>;\n\nconst DatePicker = generatePicker(dayjsGenerateConfig);\n\nexport default DatePicker;\n","import * as React from \"react\";\nimport { Radio as RadioBase } from \"antd\";\nimport { RadioProps } from \"antd/lib/radio\";\nimport classNames from \"classnames\";\n\nconst Radio: React.FC & { \n Group: typeof RadioBase.Group,\n Button: typeof RadioBase.Button \n} = (props) => {\n return (\n \n \n \n )\n}\n\nRadio.Group = RadioBase.Group;\nRadio.Button = RadioBase.Button;\n\nexport default Radio;","import React, { forwardRef } from 'react';\n\nimport { default as AntdIcon, IconComponentProps } from '@ant-design/icons/es/components/AntdIcon';\n\nexport type AntSvgIconProps = Omit;\n\nconst AntSvgIcon = forwardRef(\n (props: AntSvgIconProps, ref) => {\n return ;\n },\n);\n\nexport default AntSvgIcon;\n","import React, { forwardRef } from 'react';\n\nimport { default as SearchOutlinedBase } from '@ant-design/icons-svg/es/asn/SearchOutlined';\nimport { default as CloseCircleOutlinedBase } from '@ant-design/icons-svg/es/asn/CloseCircleOutlined';\nimport { default as CloseCircleFilledBase } from '@ant-design/icons-svg/es/asn/CloseCircleFilled';\nimport { default as PlusOutlinedBase } from '@ant-design/icons-svg/es/asn/PlusOutlined';\nimport { default as MinusOutlinedBase } from '@ant-design/icons-svg/es/asn/MinusOutlined';\nimport { default as WarningTwoToneBase } from '@ant-design/icons-svg/es/asn/WarningTwoTone';\nimport { default as SyncOutlinedBase } from '@ant-design/icons-svg/es/asn/SyncOutlined';\nimport { default as DeleteOutlinedBase } from '@ant-design/icons-svg/es/asn/DeleteOutlined';\nimport { default as ExclamationCircleTwoToneBase } from '@ant-design/icons-svg/es/asn/ExclamationCircleTwoTone';\nimport { default as InfoCircleOutlinedBase } from '@ant-design/icons-svg/es/asn/InfoCircleOutlined';\nimport { default as HistoryOutlinedBase } from '@ant-design/icons-svg/es/asn/HistoryOutlined';\nimport { default as LinkOutlinedBase } from '@ant-design/icons-svg/es/asn/LinkOutlined';\nimport { default as UserOutlinedBase } from '@ant-design/icons-svg/es/asn/UserOutlined';\nimport { default as EnvironmentOutlinedBase } from '@ant-design/icons-svg/es/asn/EnvironmentOutlined';\nimport { default as LoadingOutlinedBase } from '@ant-design/icons-svg/es/asn/LoadingOutlined';\nimport { default as MoreOutlinedBase } from '@ant-design/icons-svg/es/asn/MoreOutlined';\nimport { default as EditOutlinedBase } from '@ant-design/icons-svg/es/asn/EditOutlined';\nimport { default as DownOutlinedBase } from '@ant-design/icons-svg/es/asn/DownOutlined';\nimport { default as SortDescendingOutlinedBase } from '@ant-design/icons-svg/es/asn/SortDescendingOutlined';\nimport { default as SortAscendingOutlinedBase } from '@ant-design/icons-svg/es/asn/SortAscendingOutlined';\nimport { default as CaretDownOutlinedBase } from '@ant-design/icons-svg/es/asn/CaretDownOutlined';\nimport { default as PlusCircleOutlinedBase } from '@ant-design/icons-svg/es/asn/PlusCircleOutlined';\nimport { default as CreditCardFilledBase } from '@ant-design/icons-svg/es/asn/CreditCardFilled';\nimport { default as CheckOutlinedBase } from '@ant-design/icons-svg/es/asn/CheckOutlined';\nimport { default as CopyOutlinedBase } from '@ant-design/icons-svg/es/asn/CopyOutlined';\nimport { default as AndroidFilledBase } from '@ant-design/icons-svg/es/asn/AndroidFilled';\nimport { default as AppleFilledBase } from '@ant-design/icons-svg/es/asn/AppleFilled';\nimport { default as MailOutlinedBase } from '@ant-design/icons-svg/es/asn/MailOutlined';\nimport { default as PhoneOutlinedBase } from '@ant-design/icons-svg/es/asn/PhoneOutlined';\nimport { default as ClockCircleOutlinedBase } from '@ant-design/icons-svg/es/asn/ClockCircleOutlined';\nimport { default as QuestionCircleFilledBase } from '@ant-design/icons-svg/es/asn/QuestionCircleFilled';\nimport { default as CheckCircleOutlinedBase } from '@ant-design/icons-svg/es/asn/CheckCircleOutlined';\nimport { default as PictureOutlinedBase } from '@ant-design/icons-svg/es/asn/PictureOutlined';\nimport { default as VideoCameraOutlinedBase } from '@ant-design/icons-svg/es/asn/VideoCameraOutlined';\nimport { default as FileOutlinedBase } from '@ant-design/icons-svg/es/asn/FileOutlined';\nimport { default as EyeOutlinedBase } from '@ant-design/icons-svg/es/asn/EyeOutlined';\nimport { default as DownloadOutlinedBase } from '@ant-design/icons-svg/es/asn/DownloadOutlined';\n\nimport { IconDefinition } from '@ant-design/icons-svg/es/types';\n\nimport AntSvgIcon, { AntSvgIconProps } from './components/icon/AntSvgIcon';\n\nexport type IconProps = Partial;\n\nconst createIcon = (icon: IconDefinition) =>\n forwardRef((props: IconProps, ref) => (\n \n ));\n\nconst SearchOutlined = createIcon(SearchOutlinedBase);\nconst AndroidFilled = createIcon(AndroidFilledBase);\nconst AppleFilled = createIcon(AppleFilledBase);\nconst CopyOutlined = createIcon(CopyOutlinedBase);\nconst MailOutlined = createIcon(MailOutlinedBase);\nconst PhoneOutlined = createIcon(PhoneOutlinedBase);\nconst CheckCircleOutlined = createIcon(CheckCircleOutlinedBase);\nconst ClockCircleOutlined = createIcon(ClockCircleOutlinedBase);\nconst QuestionCircleFilled = createIcon(QuestionCircleFilledBase);\nconst CreditCardFilled = createIcon(CreditCardFilledBase);\nconst CheckOutlined = createIcon(CheckOutlinedBase);\nconst CloseCircleOutlined = createIcon(CloseCircleOutlinedBase);\nconst CloseCircleFilled = createIcon(CloseCircleFilledBase);\nconst PlusOutlined = createIcon(PlusOutlinedBase);\nconst MinusOutlined = createIcon(MinusOutlinedBase);\nconst WarningTwoTone = createIcon(WarningTwoToneBase);\nconst SyncOutlined = createIcon(SyncOutlinedBase);\nconst DeleteOutlined = createIcon(DeleteOutlinedBase);\nconst LinkOutlined = createIcon(LinkOutlinedBase);\nconst UserOutlined = createIcon(UserOutlinedBase);\nconst MoreOutlined = createIcon(MoreOutlinedBase);\nconst EditOutlined = createIcon(EditOutlinedBase);\nconst ExclamationCircleTwoTone = createIcon(ExclamationCircleTwoToneBase);\nconst InfoCircleOutlined = createIcon(InfoCircleOutlinedBase);\nconst HistoryOutlined = createIcon(HistoryOutlinedBase);\nconst EnvironmentOutlined = createIcon(EnvironmentOutlinedBase);\nconst LoadingOutlined = createIcon(LoadingOutlinedBase);\nconst DownOutlined = createIcon(DownOutlinedBase);\nconst PlusCircleOutlined = createIcon(PlusCircleOutlinedBase);\nconst SortDescendingOutlined = createIcon(SortDescendingOutlinedBase);\nconst SortAscendingOutlined = createIcon(SortAscendingOutlinedBase);\nconst CaretDownOutlined = createIcon(CaretDownOutlinedBase);\nconst PictureOutlined = createIcon(PictureOutlinedBase);\nconst VideoCameraOutlined = createIcon(VideoCameraOutlinedBase);\nconst FileOutlined = createIcon(FileOutlinedBase);\nconst EyeOutlined = createIcon(EyeOutlinedBase);\nconst DownloadOutlined = createIcon(DownloadOutlinedBase);\n\nexport {\n SearchOutlined,\n CloseCircleOutlined,\n CloseCircleFilled,\n PlusOutlined,\n MinusOutlined,\n WarningTwoTone,\n SyncOutlined,\n DeleteOutlined,\n ExclamationCircleTwoTone,\n InfoCircleOutlined,\n HistoryOutlined,\n LinkOutlined,\n UserOutlined,\n EnvironmentOutlined,\n LoadingOutlined,\n MoreOutlined,\n EditOutlined,\n DownOutlined,\n SortAscendingOutlined,\n SortDescendingOutlined,\n CaretDownOutlined,\n PlusCircleOutlined,\n CreditCardFilled,\n CheckOutlined,\n CopyOutlined,\n AndroidFilled,\n AppleFilled,\n PhoneOutlined,\n MailOutlined,\n ClockCircleOutlined,\n QuestionCircleFilled,\n CheckCircleOutlined,\n PictureOutlined,\n VideoCameraOutlined,\n FileOutlined,\n EyeOutlined,\n DownloadOutlined,\n};\n","export default {\n months: {\n one: 'месяц',\n few: 'месяца',\n many: 'месяцев',\n other: 'месяцев',\n },\n days: {\n one: 'день',\n few: 'дня',\n many: 'дней',\n other: 'дней',\n },\n hours: {\n one: 'час',\n few: 'часа',\n many: 'часов',\n other: 'часов',\n },\n minutes: {\n one: 'минута',\n few: 'минуты',\n many: 'минут',\n other: 'минут',\n },\n partnersDative: {\n one: 'партнеру',\n few: 'партнерам',\n many: 'партнерам',\n other: 'партнерам',\n },\n};\n","export default {\n months: {\n one: 'month',\n other: 'months',\n },\n days: {\n one: 'day',\n other: 'days',\n },\n hours: {\n one: 'hour',\n other: 'hours',\n },\n minutes: {\n one: 'minute',\n other: 'minutes',\n },\n partnersDative: {\n one: 'partner',\n other: 'partners',\n },\n};\n","import * as React from 'react';\r\n\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport dayjsEn from 'dayjs/locale/en';\r\nimport dayjsRu from 'dayjs/locale/ru';\r\nimport timezone from 'dayjs/plugin/timezone';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport flatten from 'flat';\r\nimport { I18n } from 'i18n-js';\r\nimport { ru as pluralizeRu, PluralCategory } from 'make-plural';\r\n\r\nimport * as plural from './translations/plural';\r\nimport * as ui from './translations/ui';\r\n\r\nconst definedLocale = ['en', 'ru'] as const;\r\ntype DefinedLocale = typeof definedLocale[number];\r\n\r\nconst i18n = new I18n();\r\n\r\n// User-defined type guard function\r\nconst isLocaleDefined = (locale: any): locale is DefinedLocale => definedLocale.includes(locale);\r\n\r\nexport type Day =\r\n | 'monday'\r\n | 'tuesday'\r\n | 'wednesday'\r\n | 'thursday'\r\n | 'friday'\r\n | 'saturday'\r\n | 'sunday';\r\n\r\ndayjs.extend(utc);\r\ndayjs.extend(timezone);\r\n\r\ni18n.enableFallback = true;\r\ni18n.defaultLocale = 'en';\r\n\r\nconst createPluralization = (\r\n pluralizationFunction: (n: number | string, ord?: boolean) => PluralCategory,\r\n) => (count: number) => [pluralizationFunction(count)];\r\n\r\n//@ts-ignore\r\ni18n.pluralization['ru'] = createPluralization(pluralizeRu);\r\n\r\nconst uiTranslations: Record = ui;\r\nconst pluralTranslations: Record = plural;\r\n\r\nconst momentLocatization: Record = {\r\n ru: dayjsRu,\r\n en: dayjsEn,\r\n};\r\n\r\nconst setI18nConfig = ({\r\n translations,\r\n locale,\r\n}: {\r\n translations?: Record;\r\n locale?: string;\r\n}) => {\r\n if (translations) {\r\n Object.keys(translations).forEach(key => {\r\n if (uiTranslations[key]) {\r\n translations[key] = { ...translations[key], ui: uiTranslations[key] };\r\n }\r\n if (pluralTranslations[key]) {\r\n translations[key] = { ...translations[key], plural: pluralTranslations[key] };\r\n }\r\n });\r\n\r\n i18n.translations = translations;\r\n }\r\n\r\n if (locale) {\r\n localStorage.setItem('language', locale);\r\n i18n.locale = locale.replace(/-.+/, '');\r\n dayjs.locale(i18n.locale, momentLocatization[i18n.locale] || {});\r\n }\r\n};\r\n\r\nexport const setAppropriateLocale = (locale: string) => {\r\n const CIS = [\r\n 'az', // Azerbaijan\r\n 'be', // Belarus\r\n 'et', // Estonia\r\n 'hy', // Armenia\r\n 'ka', // Georgia\r\n 'kk', // Kazakhstan\r\n 'ky', // Kyrgyzstan\r\n 'lt', // Lithuania\r\n 'lv', // Latvia\r\n 'tg', // Tajikistan\r\n 'tk', // Turkmenistan\r\n 'uk', // Ukraine\r\n 'uz', // Uzbekistan\r\n ];\r\n\r\n if (isLocaleDefined(locale)) {\r\n return locale;\r\n } else if (CIS.includes(locale)) {\r\n return 'ru';\r\n } else {\r\n return 'en';\r\n }\r\n};\r\n\r\n// @ts-ignore\r\nconst userLocale = setAppropriateLocale((navigator.language || navigator.userLanguage) as string);\r\n\r\nif (process.env.REACT_APP_NAME === 'webclient') {\r\n const locale = localStorage.getItem('language');\r\n if (locale) setI18nConfig({ locale });\r\n} else {\r\n setI18nConfig({ locale: localStorage.getItem('language') || userLocale });\r\n}\r\n\r\nexport function t(name: string, params = {}) {\r\n return i18n.t(name, params);\r\n}\r\n\r\nexport function createTranslate(entity: string) {\r\n return function (name: string, params = {}) {\r\n return i18n.t(`${entity}.${name}`, params);\r\n };\r\n}\r\n\r\nexport function ucFirst(str: string) {\r\n if (!str || str.length === 0) return str;\r\n return str[0].toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function lcFirst(str: string) {\r\n if (!str || str.length === 0) return str;\r\n return str[0].toLowerCase() + str.slice(1);\r\n}\r\n\r\n// Upper case\r\nexport function translateUcFirst(name: string, params = {}) {\r\n return ucFirst(i18n.t(name, params));\r\n}\r\n// Lower case\r\nexport function translateLcFirst(name: string, params = {}) {\r\n return lcFirst(i18n.t(name, params));\r\n}\r\n\r\nexport function replace(text: string, replacement: { [x: string]: string | number }) {\r\n Object.keys(replacement).forEach(key => {\r\n text = text.replace(new RegExp(`{${key}}`, 'gm'), String(replacement[key]));\r\n });\r\n return text;\r\n}\r\n\r\nexport default i18n;\r\n\r\nexport const I18nSetConfig = setI18nConfig;\r\n\r\nexport function convertLocale(locale: string) {\r\n return locale.replace(/-.*/, '');\r\n}\r\n\r\nexport function createTranslationMap(translation: object) {\r\n const result = flatten