{"version":3,"file":"static/chunks/pages/_site/[city]/constructor-6adfdb87d48efda8.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/dayjs/plugin/duration.js","webpack://_N_E/../../node_modules/lodash/_baseFilter.js","webpack://_N_E/../../node_modules/lodash/_baseValues.js","webpack://_N_E/../../node_modules/lodash/_castFunction.js","webpack://_N_E/../../node_modules/lodash/_createFind.js","webpack://_N_E/../../node_modules/lodash/_createRound.js","webpack://_N_E/../../node_modules/lodash/filter.js","webpack://_N_E/../../node_modules/lodash/find.js","webpack://_N_E/../../node_modules/lodash/findIndex.js","webpack://_N_E/../../node_modules/lodash/forEach.js","webpack://_N_E/../../node_modules/lodash/isEqual.js","webpack://_N_E/../../node_modules/lodash/map.js","webpack://_N_E/../../node_modules/lodash/round.js","webpack://_N_E/../../node_modules/lodash/toFinite.js","webpack://_N_E/../../node_modules/lodash/toInteger.js","webpack://_N_E/../../node_modules/lodash/values.js","webpack://_N_E/?891e","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/tariff/calculate/index.ts","webpack://_N_E/../../packages/ui-react/src/components/DiscountLabel/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/DiscountLabel/PercentDiscountLabel/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepMenuItem/StepMenuItem.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepMenuItem/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepMenuItem/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepMenuContainer/StepMenuContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/constants/actions.ts","webpack://_N_E/./src/features/tariffBuilder/types/EEntity.ts","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepMenuContainer/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/StepMenu/StepTabs/index.tsx","webpack://_N_E/./src/features/tariffBuilder/actions/addEntity.ts","webpack://_N_E/./src/features/tariffBuilder/types/ESteps.ts","webpack://_N_E/./src/features/tariffBuilder/actions/addTvEntity.ts","webpack://_N_E/./src/features/tariffBuilder/actions/decrementEntity.ts","webpack://_N_E/./src/features/tariffBuilder/actions/flushDecoders.ts","webpack://_N_E/./src/features/tariffBuilder/actions/incrementEntity.ts","webpack://_N_E/./src/features/tariffBuilder/actions/initialization.ts","webpack://_N_E/./src/features/tariffBuilder/actions/initialized.ts","webpack://_N_E/./src/features/tariffBuilder/actions/removeAllTvEntities.ts","webpack://_N_E/./src/features/tariffBuilder/actions/removeEntity.ts","webpack://_N_E/./src/features/tariffBuilder/actions/removeTvEntity.ts","webpack://_N_E/./src/features/tariffBuilder/actions/selectSpeed.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setAgreementData.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setChangePlanWebcabData.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setClientContactPhone.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setClientName.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setClientPhone.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setCurrentTariff.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setLoading.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setReplanIsError.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setRequestId.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setSelectedTimeSlot.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setSpeedRestrictions.ts","webpack://_N_E/./src/features/tariffBuilder/actions/setStep.ts","webpack://_N_E/./src/features/tariffBuilder/actions/toggleHasSmartTv.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/getBaseTv.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/selectIsAllowToShowTvPackets.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getBaseTvItem.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/hasSelectedEquipment.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/changePlanWebcabThunk.ts","webpack://_N_E/../../packages/api-domru/src/api-content/_dto/shop-item.types.ts","webpack://_N_E/./src/features/tariffBuilder/constants/analytics.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/getSummaryOfferInfo.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/submitRequest.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/transformEquipmentForRequest.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/getSelectedEntities.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/getSummaryInfo.ts","webpack://_N_E/./src/features/tariffBuilder/components/alerts/currentTariffSummaryText.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/isBaseTvSelected.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/createAgreement.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/isLimitationsReached.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/getDecoders.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/isSelectedDecoderInCurrentTariff.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/createRequestThunk.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/initialization.tsx","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/tariff/current/index.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/initializationAgreement.ts","webpack://_N_E/./src/features/tariffBuilder/components/toast/BaseInfoToast.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/BaseErrorToast.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/RecalculateFallDown.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/RouterNotSupplySpeed.tsx","webpack://_N_E/./src/features/tariffBuilder/helpers/getUpdatedValue.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareRouters/prepareCharacteristic.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareRouters/prepareCosts.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareRouters/index.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareBaseSubscription.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareDecoders.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareDescription.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareSpeed.ts","webpack://_N_E/./src/features/tariffBuilder/helpers/transformer/prepareTvSubscription.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/isSpeedRestrictionByEqual100.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/getRecalculateBody.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/recalculate.tsx","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/helpers/getAbortControllerRecreater.ts","webpack://_N_E/./src/features/tariffBuilder/actions/thunk/replanRequest.ts","webpack://_N_E/./src/features/tariffBuilder/components/RulesBannerBlock/styled.tsx","webpack://_N_E/./src/features/tariffBuilder/components/RulesBannerBlock/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/Section/index.tsx","webpack://_N_E/./src/features/tariffBuilder/reducer/initialState.ts","webpack://_N_E/./src/features/tariffBuilder/reducer/reducer.ts","webpack://_N_E/./src/features/tariffBuilder/Ctx.tsx","webpack://_N_E/./src/features/tariffBuilder/hooks/useCtxDispatch.ts","webpack://_N_E/./src/features/tariffBuilder/hooks/useCtxSelector.ts","webpack://_N_E/./src/features/tariffBuilder/containers/CreateAgreementContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/CreateAgreement.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/MovixIs.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/selectCurrentTariff.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/AboutSmartTv.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/CheckSmartTvContainer/styled.ts","webpack://_N_E/./src/features/tariffBuilder/containers/CheckSmartTvContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/EquipmentDescription/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/EquipmentDescription/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/EquipmentImages/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/EquipmentImages/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/BasePopupWithScroll/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/MaximumTotalLimit.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getEntityPurchaseOptions.ts","webpack://_N_E/./src/features/tariffBuilder/containers/PurchaseOptionsContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/DecodersContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getDecoderById.ts","webpack://_N_E/./src/features/tariffBuilder/components/DecodersBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/IsMyRouterFits.tsx","webpack://_N_E/./src/features/tariffBuilder/components/EquipmentCharacteristics/index.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getRouters.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/isSelectedRouterInCurrentTariff.ts","webpack://_N_E/./src/features/tariffBuilder/containers/RoutersContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getRouterById.ts","webpack://_N_E/./src/features/tariffBuilder/components/RoutersBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/MovixNotSelected.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/Equipment.tsx","webpack://_N_E/./src/features/tariffBuilder/components/AddressCheckBlock/RequestForm/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/AddressCheckBlock/RequestForm/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/AddressCheckBlock/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/AddressCheckBlock/index.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getSelectedEntity.ts","webpack://_N_E/./src/features/tariffBuilder/containers/AddressContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/FillAddress.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/isContactDataValid.ts","webpack://_N_E/./src/features/tariffBuilder/containers/ContactsContainer/CreatablePhoneSelectWrapper.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/ContactsContainer/TextBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/ContactsContainer/TextBlockAuth.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/ContactsContainer/styled.ts","webpack://_N_E/./src/features/tariffBuilder/containers/ContactsContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/FillContacts.tsx","webpack://_N_E/./src/features/tariffBuilder/components/CallbackContacts/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/CallbackContacts/index.tsx","webpack://_N_E/./src/features/tariffBuilder/styled.tsx","webpack://_N_E/./src/features/tariffBuilder/components/SummaryInfo/index.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getPhone.ts","webpack://_N_E/./src/features/tariffBuilder/selectors/selectClientName.ts","webpack://_N_E/./src/features/tariffBuilder/containers/AgreementInfoContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/FinalContainer/ChangePlanWebcabAlerts.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/FinalContainer/CurrentTariffFinal.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/selectFinalData.ts","webpack://_N_E/./src/features/tariffBuilder/containers/FinalContainer/EmployeeVisitInfo.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/FinalContainer/Final.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/FinalContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/Final.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/OnlineCinemaAdditionalInfo/styled.tsx","webpack://_N_E/./src/features/tariffBuilder/components/popups/OnlineCinemaAdditionalInfo/index.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/SelectVisitDateContainer/SelectVisitDate.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getEntities.ts","webpack://_N_E/./src/features/tariffBuilder/containers/EntitiesContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getAgreementId.ts","webpack://_N_E/./src/features/tariffBuilder/containers/SelectVisitDateContainer/SelectVisitDateCurrentTariff.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/SelectVisitDateContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/SelectVisitDate.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getSpeedLines.ts","webpack://_N_E/./src/features/tariffBuilder/containers/SpeedLineWithDescription/styled.ts","webpack://_N_E/./src/features/tariffBuilder/containers/ConnectedEntitiesContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/SpeedLineWithDescription/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/InternetSpeedBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/components/alerts/ConnectedOnlineCinemas.tsx","webpack://_N_E/./src/features/tariffBuilder/components/alerts/ConnectedTvPackages.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/selectConnectedSubscriptionsNames.tsx","webpack://_N_E/./src/features/tariffBuilder/components/OnlineCinemasBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/components/SubscriptionsGroup/styled.tsx","webpack://_N_E/./src/features/tariffBuilder/constants/steps.tsx","webpack://_N_E/./src/features/tariffBuilder/components/SubscriptionsGroup/index.tsx","webpack://_N_E/./src/features/tariffBuilder/components/toast/BaseTvDisabled.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/getAdditionalTv.ts","webpack://_N_E/./src/features/tariffBuilder/containers/TvSubscriptionsContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/components/TvBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/selectors/selectIsShowTvBlock.ts","webpack://_N_E/./src/features/tariffBuilder/pages/SpeedAndTv.tsx","webpack://_N_E/./src/features/tariffBuilder/components/AdditionalSubscriptionsBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/components/AntivirusBlock.tsx","webpack://_N_E/./src/features/tariffBuilder/pages/Subscriptions.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/ProgressBarContainer.tsx","webpack://_N_E/./src/features/tariffBuilder/components/TotalInfo/styled.ts","webpack://_N_E/./src/features/tariffBuilder/components/TotalInfo/index.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/SummaryInfoContainer/styled.ts","webpack://_N_E/./src/features/tariffBuilder/containers/SummaryInfoContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/containers/FinalSummaryInfoContainer/index.tsx","webpack://_N_E/./src/features/tariffBuilder/Constructor.tsx","webpack://_N_E/./src/features/tariffBuilder/index.tsx","webpack://_N_E/./pages/_site/[city]/constructor/index.tsx","webpack://_N_E/./src/api/requests/contentRequest.js","webpack://_N_E/./src/components/PersonForm/index.tsx","webpack://_N_E/./src/features/managementAgreement/selectors/helpers/getClientPersonalAddressStr.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/AddressVerification.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/PersonalVerification.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/SubmitRequest.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/Constructor.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/ChangeTariff.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/analytics/ConstructorCurrentTariff.analytics.ts","webpack://_N_E/./src/features/tariffBuilder/constants/abnVariants.ts","webpack://_N_E/./src/helpers/hooks/useProgressiveImage.tsx","webpack://_N_E/./src/helpers/hooks/useScroll.ts","webpack://_N_E/./src/helpers/storage.ts","webpack://_N_E/./src/store/selectors/auth/selectIsAuth.ts","webpack://_N_E/./src/store/selectors/selectCallCenterNumber.ts","webpack://_N_E/./src/store/selectors/service.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/change-tariff/change-plan-webcab/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v2/change-tariff/create-request/index.ts","webpack://_N_E/../../packages/api-domru/src/api-request/v1/managing-connection-request/re-plan/index.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v1/sale-agent/saleAgentTypes.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v1/sale-agent/time-slots/index.ts","webpack://_N_E/../../packages/ui-react/src/components/Modal/Strip/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/Modal/Sheet/Sheet.tsx","webpack://_N_E/../../packages/ui-react/src/components/Modal/Sheet/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/Modal/Sheet/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/Separator/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/AccordionAnimate/AccordionAnimateBody.js","webpack://_N_E/../../packages/ui-react/src/components/accordions/AccordionAnimate/AccordionAnimateHeader.js","webpack://_N_E/../../packages/ui-react/src/components/accordions/AccordionAnimate/index.js","webpack://_N_E/../../packages/ui-react/src/components/controls/baseSwitcher/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/Installment.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/Purchase.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/select/creatableSelect/index.js","webpack://_N_E/../../packages/ui-react/src/components/svg/time/CalendarSecond.tsx","webpack://_N_E/../../packages/ui-react/src/components/typography/formatting/index.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/Toaster/helpers/getStartPositionByDirection.ts","webpack://_N_E/../../packages/ui-react/src/experimental/Toaster/constants.ts","webpack://_N_E/../../packages/ui-react/src/experimental/Toaster/Toast.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/Toaster/Toaster.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/Toaster/useToaster.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/containers/BlockContainer.tsx","webpack://_N_E/../../packages/ui-react/src/components/Modal/Overlay/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Modal/BottomSheet/BottomSheet.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Modal/BottomSheet/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Modal/BottomSheet/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Modal/StickyBottomSheet/index.tsx","webpack://_N_E/./static/images/defaultImageFallback.svg","webpack://_N_E/./static/images/tariff-builder/electric-plug.svg","webpack://_N_E/./static/images/tariff-builder/film.svg","webpack://_N_E/./static/images/tariff-builder/high-voltage.svg","webpack://_N_E/../../packages/ui-react/src/components/accordions/AccordionAnimate/image/bottom.svg","webpack://_N_E/../../node_modules/@swc/helpers/src/_construct.mjs","webpack://_N_E/../../node_modules/@swc/helpers/src/_wrap_native_super.mjs","webpack://_N_E/../../node_modules/@swc/helpers/src/_is_native_function.mjs"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},l=function(t){return s.p(t)+\"s\"},m=function(t){return t<0},$=function(t){return m(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?m(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function m(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[l(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[l(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=m.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=v(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[l(t)]},y.get=function(t){var s=this.$ms,n=l(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[l(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},m}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var root = require('./_root'),\n toInteger = require('./toInteger'),\n toNumber = require('./toNumber'),\n toString = require('./toString');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nmodule.exports = createRound;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var createRound = require('./_createRound');\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nmodule.exports = round;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/constructor\",\n function () {\n return require(\"private-next-pages/_site/[city]/constructor/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/constructor\"])\n });\n }\n ","import { RequestDto } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/RequestDto';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/**\n * Метод расчета данны тарифа для конструктора\n * @link https://master.api-tariffs.sandbox.d2c.r-one.io/docs/#/Tariff/TariffController_calculate\n */\nconst calculate = (request: RequestDto, withAuth = false): IRequest => ({\n uri: 'v1/tariff/calculate',\n method: 'POST',\n body: JSON.stringify(request),\n withProvider: true,\n withAuth,\n});\n\nexport default calculate;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport type TDiscountLabel = {\n $bgColor?: COLORS,\n}\n\nconst DiscountLabel = styled.div`\n display: inline-block;\n text-align: center;\n white-space: nowrap;\n flex-shrink: 0;\n \n width: 38px;\n height: 26px;\n line-height: 26px !important;\n border-radius: 6px;\n transform: rotate(-3.117deg);\n \n background-color: ${({ $bgColor = COLORS.ButtonAccent }) => $bgColor};\n color: ${COLORS.TextWhite};\n ${FONTS.MediumXXS};\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n width: 56px;\n height: 32px;\n line-height: 32px !important;\n transform: rotate(-4.392deg);\n ${FONTS.H5};\n }\n`;\n\nexport default DiscountLabel;\n","import DiscountLabel, { TDiscountLabel } from '@r1-frontend/ui-react/components/DiscountLabel';\n\ntype TPercentDiscountLabelProps = {\n children: number,\n}\n\nexport type TPercentDiscountLabel = TPercentDiscountLabelProps & TDiscountLabel;\n\nconst PercentDiscountLabel = ({ children, ...props }: TPercentDiscountLabel): JSX.Element =>\n \n -{children}%\n ;\n\n\nexport default PercentDiscountLabel;\n","import { SyntheticEvent } from 'react';\n\nimport { TSvgProps } from '@r1-frontend/ui-react/components/svg/createSvg';\nimport { withRadius } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { Label } from './styled';\n\nexport type TStepMenuItemProps = {\n isCurrent?: boolean,\n isLastActivated?: boolean,\n\n label: string,\n className?: string,\n\n onClick: (e: SyntheticEvent) => void,\n\n Icon?: (props: TSvgProps) => JSX.Element,\n Image?: string,\n}\n\nconst StepMenuItem = ({ isCurrent, isLastActivated = false, label, Icon, Image, className, ...props }: TStepMenuItemProps): JSX.Element => {\n\n return (\n \n {Image && }\n {Icon && }\n\n \n \n );\n};\n\nexport default withRadius(StepMenuItem, { $radius: 32 });\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport StepMenuItem, { TStepMenuItemProps } from '@r1-frontend/ui-react/components/StepMenu/StepMenuItem/StepMenuItem';\nimport Svg from '@r1-frontend/ui-react/components/svg/Svg';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const StyledStepMenuItem = styled(StepMenuItem)`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n \n padding: 8px;\n min-width: 32px;\n \n cursor: pointer;\n transition: transform .2s;\n\n background-color: ${COLORS.ButtonSecondary};\n \n &:active {\n transform: scale(0.89);\n }\n\n & > ${Svg}, & > img {\n height: 20px;\n width: 20px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n & > ${Svg}, & > img {\n height: 16px;\n width: 16px;\n }\n }\n`;\n\nexport const Label = styled.p`\n ${FONTS.MediumXS};\n color: ${COLORS.TextPrimary};\n margin: 0;\n`;\n","import { StyledStepMenuItem as StepMenuItem } from './styled';\n\nexport default StepMenuItem;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport StepMenuItem from '@r1-frontend/ui-react/components/StepMenu/StepMenuItem';\nimport Svg from '@r1-frontend/ui-react/components/svg/Svg';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const StyledStepMenuContainer = styled.nav`\n display: flex;\n flex-direction: row;\n gap: 12px;\n width: 100%;\n\n ${StepMenuItem} {\n background-color: ${COLORS.ButtonSecondary};\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 4px 0;\n gap: 4px;\n \n &:not(.current) {\n flex: initial;\n & > p {\n display: none;\n }\n }\n }\n }\n\n ${StepMenuItem}.last-activated ~ ${StepMenuItem}{\n background-color: ${COLORS.BgSurface};\n cursor: initial;\n transform: none;\n pointer-events: none;\n \n & > p {\n color: ${COLORS.TextDisabled};\n }\n\n & > ${Svg}, & > img {\n filter: grayscale(1);\n opacity: .3;\n }\n }\n`;\n","export enum EAction {\n Initialization = '@tariffBuilder/initialization',\n Initialized = '@tariffBuilder/initialized',\n Finalization = '@tariffBuilder/finalization',\n Loading = '@tariffBuilder/set/loading',\n\n SetStep = '@tariffBuilder/step/set',\n\n SelectSpeed = '@tariffBuilder/speed/select',\n\n AddEntity = '@tariffBuilder/entity/select',\n RemoveEntity = '@tariffBuilder/entity/remove',\n AddTvEntity = '@tariffBuilder/entity/select/tv',\n RemoveTvEntity = '@tariffBuilder/entity/remove/tv',\n RemoveAllTvEntities = '@tariffBuilder/entity/remove/tv/all',\n IncrementEntity = '@tariffBuilder/entity/increment',\n DecrementEntity = '@tariffBuilder/entity/decrement',\n\n toggleHasSmartTv = '@tariffBuilder/entity/toggleHasSmartTv',\n flushDecoders = '@tariffBuilder/decoders/flushSelected',\n\n ChangeCost = '@tariffBuilder/entity/changeCost',\n\n SetClientName = '@tariffBuilder/client/SetClientName',\n SetClientPhone = '@tariffBuilder/client/SetClientPhone',\n\n SetSelectedTimeSlot = '@tariffBuilder/SetSelectedTimeSlot',\n SetSpeedRestrictions = '@tariffBuilder/client/SetSpeedRestrictions',\n\n SetAgreementData = '@tariffBuilder/SetAgreementData',\n\n SetCurrentTariff = '@tariffBuilder/currentTariff/set',\n SetClientContactPhone = '@tariffBuilder/clientContactPhone/set',\n SetChangePlanWebcabData = '@tariffBuilder/changePlanWebcabData/set',\n SetRequestId = '@tariffBuilder/requestId/set',\n SetReplanIsError = '@tariffBuilder/replanIsError/set',\n}\n","export enum EEntity {\n speed = 'speed',\n onlineCinemas = 'onlineCinemas',\n tv = 'tv',\n antivirus = 'antivirus',\n additional = 'additional',\n routers = 'routers',\n decoders = 'decoders',\n security = 'security',\n entertainments = 'entertainments',\n services = 'services', // Only for selectedEntitiesIds\n}\n","import { StyledStepMenuContainer as StepMenuContainer } from './StepMenuContainer';\n\nexport default StepMenuContainer;\n","import { StepTabs } from './StepTabs';\n\nexport default StepTabs;\n","import StepMenuContainer from '@r1-frontend/ui-react/components/StepMenu/StepMenuContainer';\nimport StepMenuItem from '@r1-frontend/ui-react/components/StepMenu/StepMenuItem';\nimport { TSvgProps } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nexport type TStepTabsItem = {\n id: number,\n label: string,\n Icon?: (props: TSvgProps) => JSX.Element,\n Image?: string,\n}\n\ntype TStepTabsProps = {\n items: TStepTabsItem[],\n current?: number, // the id of TStepTabsItems\n activatedSteps?: number,\n onClick: (id: number) => void,\n};\n\nexport const StepTabs = ({ items, onClick, activatedSteps = 0, current = 0 }: TStepTabsProps): JSX.Element => {\n\n const handleClick = (id: number) => () => {\n onClick(id);\n };\n\n return (\n <>\n {items.map(stepItem => (\n \n ))}\n \n );\n\n};\n","import { ConstructorAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TAddEntityArgs = {\n entity: Exclude,\n key: number,\n quantity?: number,\n period?: number,\n cost?: number,\n title?: string,\n}\n\nconst addEntity = (entityData: TAddEntityArgs, analytics: ConstructorAnalytics): IAction => {\n const { entity, key, quantity = 1, period = 1, title = '', cost } = entityData;\n\n if (title) {\n switch (entity) {\n case EEntity.decoders:\n analytics.addProductSuccess({ type: 'decoder', title, cost, period });\n break;\n case EEntity.routers:\n analytics.addProductSuccess({ type: 'router', title, cost, period });\n break;\n case EEntity.onlineCinemas:\n analytics.clickedOnlineCinemaCheckBox(title);\n break;\n case EEntity.additional:\n analytics.clickedSubscriptionCheckBox(title);\n break;\n case EEntity.antivirus:\n analytics.clickedAntivirusCheckBox(title);\n break;\n }\n }\n\n return ({\n type: EAction.AddEntity,\n payload: {\n entity,\n key,\n quantity,\n period,\n },\n });\n};\n\nexport default addEntity;\n","export enum ESteps {\n SpeedAndTv = 1,\n Subscriptions = 2,\n Equipment = 3,\n FillAddress = 4,\n FillContacts = 5,\n CreateAgreement = 6,\n SelectVisitData = 7,\n\n Final = 8,\n}\n","import { ConstructorAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TAddEntityArgs = {\n entity: EEntity,\n group: string,\n key: number,\n groupTitle?: string,\n itemTitle?: string,\n}\n\nconst addTvEntity = (entityData: TAddEntityArgs, analytics: ConstructorAnalytics): IAction => {\n const { entity, group, key, groupTitle = '', itemTitle = '' } = entityData;\n const label = group === 'base' ? 'Базовый пакет каналов' : `package:${groupTitle}|channel:${itemTitle}|`;\n\n analytics.clickedTvChannelCheckBox(label);\n\n return ({\n type: EAction.AddTvEntity,\n payload: {\n entity,\n group,\n key,\n },\n });\n};\n\nexport default addTvEntity;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TDecrementEntityProps = {\n entity: Extract,\n key: number,\n}\n\nconst decrementEntity = ({ entity, key }: TDecrementEntityProps): IAction => ({\n type: EAction.DecrementEntity,\n payload: {\n entity,\n key,\n },\n});\n\nexport default decrementEntity;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst flushDecoders = (): IAction => ({\n type: EAction.flushDecoders,\n payload: null,\n});\n\nexport default flushDecoders;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TIncrementEntityProps = {\n entity: Extract,\n key: number,\n}\n\nconst incrementEntity = ({ entity, key }: TIncrementEntityProps): IAction => ({\n type: EAction.IncrementEntity,\n payload: {\n entity,\n key,\n },\n});\n\nexport default incrementEntity;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { TLimitations } from '~/src/features/tariffBuilder/types/TLimitations';\nimport { IAction } from '~/src/store';\n\nconst initialization = (routerLimits: TLimitations, decoderLimits: TLimitations): IAction => ({\n type: EAction.Initialization,\n payload: {\n routerLimits,\n decoderLimits,\n },\n});\n\nexport default initialization;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst initialized = (data: any): IAction => ({\n type: EAction.Initialized,\n payload: data,\n});\n\nexport default initialized;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst removeAllTvEntities = (): IAction => ({\n type: EAction.RemoveAllTvEntities,\n payload: null,\n});\n\nexport default removeAllTvEntities;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TRemoveEntityProps = {\n entity: Exclude,\n key: number,\n}\n\nconst removeEntity = ({ entity, key }: TRemoveEntityProps): IAction => ({\n type: EAction.RemoveEntity,\n payload: {\n entity,\n key,\n },\n});\n\nexport default removeEntity;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IAction } from '~/src/store';\n\ntype TAddEntityArgs = {\n entity: EEntity,\n group: string,\n key: number,\n}\n\nconst removeTvEntity = ({ entity, group, key }: TAddEntityArgs): IAction => ({\n type: EAction.RemoveTvEntity,\n payload: {\n entity,\n group,\n key,\n },\n});\n\nexport default removeTvEntity;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\ntype TSelectEntityArgs = {\n id: number,\n}\n\nconst selectSpeed = ({ id }: TSelectEntityArgs): IAction => ({\n type: EAction.SelectSpeed,\n payload: {\n id,\n },\n});\n\nexport default selectSpeed;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\ntype TSetAgreementData = {\n agreementId: string | number | null,\n agreementNumber: string | number | null,\n isDouble?: boolean,\n hasError?: boolean,\n errorMessage?: string,\n}\n\nconst setAgreementData = (data: Partial): IAction => ({\n type: EAction.SetAgreementData,\n payload: data,\n});\n\nexport default setAgreementData;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IChangePlanWebcabData } from '~/src/features/tariffBuilder/reducer/initialState';\nimport { IAction } from '~/src/store';\n\nconst setChangePlanWebcabData = (payload: IChangePlanWebcabData): IAction => ({\n type: EAction.SetChangePlanWebcabData,\n payload,\n});\n\nexport default setChangePlanWebcabData;\n","import { IOption } from '@r1-frontend/ui-react/components/select/creatableSelect';\n\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setClientContactPhone = (contactPhone: IOption): IAction => ({\n type: EAction.SetClientContactPhone,\n payload: {\n contactPhone,\n },\n});\n\nexport default setClientContactPhone;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setClientName = (clientName: string): IAction => ({\n type: EAction.SetClientName,\n payload: {\n clientName,\n },\n});\n\nexport default setClientName;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setClientPhone = (clientPhone: string): IAction => ({\n type: EAction.SetClientPhone,\n payload: {\n clientPhone,\n },\n});\n\nexport default setClientPhone;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { TCurrentTariff } from '~/src/features/tariffBuilder/types/TCurrentTariff';\nimport { IAction } from '~/src/store';\n\nconst setCurrentTariff = (state: TCurrentTariff): IAction => ({\n type: EAction.SetCurrentTariff,\n payload: {\n state,\n },\n});\n\nexport default setCurrentTariff;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setLoading = (state: boolean): IAction => ({\n type: EAction.Loading,\n payload: {\n state,\n },\n});\n\nexport default setLoading;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setReplanIsError = (isError: boolean): IAction => ({\n type: EAction.SetReplanIsError,\n payload: {\n isError,\n },\n});\n\nexport default setReplanIsError;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setRequestId = (requestId: string): IAction => ({\n type: EAction.SetRequestId,\n payload: {\n requestId,\n },\n});\n\nexport default setRequestId;\n","import { TReturnType } from '@r1-frontend/service-engineer-visit';\n\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\ntype TTimeSlot = Omit\n\nconst setSelectedTimeSlot = (timeSlot: TTimeSlot): IAction => ({\n type: EAction.SetSelectedTimeSlot,\n payload: {\n timeSlot,\n },\n});\n\nexport default setSelectedTimeSlot;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nexport type TSetSpeedRestrictionsProps = {\n min?: number,\n max?: number,\n}\n\nconst setSpeedRestrictions = (restrictions: TSetSpeedRestrictionsProps): IAction<\n EAction.SetSpeedRestrictions,\n { restrictions: TSetSpeedRestrictionsProps }\n> => ({\n type: EAction.SetSpeedRestrictions,\n payload: {\n restrictions,\n },\n});\n\nexport default setSpeedRestrictions;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setStep = (stepId: number): IAction => ({\n type: EAction.SetStep,\n payload: {\n stepId,\n },\n});\n\nexport default setStep;\n","import { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst toggleHasSmartTv = (): IAction => ({\n type: EAction.toggleHasSmartTv,\n payload: null,\n});\n\nexport default toggleHasSmartTv;\n","import filter from 'lodash/filter';\nimport map from 'lodash/map';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getBaseTv = (state: TInitialState) => {\n const tvGroups = filter(state[EEntity.tv], group => (group.alias === 'base'));\n return map(\n tvGroups,\n group => ({\n ...group,\n selectedCount: Object.values(group.items).reduce((cur, acc) => {\n cur += acc.quantity;\n return cur;\n }, 0),\n items: map(group.items, (tvItem, key) => ({ ...tvItem, isSelected: tvItem.quantity > 0, key: Number(key) })),\n }),\n );\n};\n\nexport default getBaseTv;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst selectIsAllowToShowTvPackets = (state: TInitialState) => state.currentTariff?.isAllowToShowTvPackets;\n\nexport default selectIsAllowToShowTvPackets;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nimport getBaseTv from './getBaseTv';\nimport selectIsAllowToShowTvPackets from './selectIsAllowToShowTvPackets';\n\nconst getBaseTvItem = (state: TInitialState) => {\n const [firstBaseTv] = getBaseTv(state);\n const isAllowToShowTvPackets = selectIsAllowToShowTvPackets(state);\n const [baseTvItem] = Object.values(firstBaseTv.items);\n\n return {\n ...baseTvItem,\n isSelected: baseTvItem.isSelected,\n disabled: isAllowToShowTvPackets,\n };\n};\n\nexport default getBaseTvItem;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\n/**\n * Checks the availability of equipment\n */\nexport const hasSelectedEquipment = (state: TInitialState) => {\n const decoders = Object.values(state[EEntity.decoders]);\n const routers = Object.values(state[EEntity.routers]);\n return [...decoders, ...routers].some((equip) => equip.quantity > 0);\n};\n","import isEmpty from 'lodash/isEmpty';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport {\n changePlanWebcab,\n RequestDto as IChangeTariffPlanBodyDto,\n} from '@r1-frontend/api-domru/api-profile/v1/change-tariff/change-plan-webcab';\n\nimport { setChangePlanWebcabData, setLoading, setStep } from '~/src/features/tariffBuilder/actions';\nimport { constructorCurrentTariffAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport getBaseTvItem from '~/src/features/tariffBuilder/selectors/getBaseTvItem';\nimport { hasSelectedEquipment } from '~/src/features/tariffBuilder/selectors/hasSelectedEquipment';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\nconst getVasKitServices = (state: TInitialState, services: number[]): number[] | undefined => {\n if (!isEmpty(state[EEntity.tv])) {\n const baseTvItem = getBaseTvItem(state);\n return [...new Set(services)].filter(item => item !== baseTvItem.id);\n }\n return services;\n};\n\nconst changePlanWebcabThunk = (trId: number | null) => async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n const state = getState();\n\n const { planId, salePackageId, selectedEntityIds, client } = state;\n const { contactPhone, phone } = client;\n\n dispatch(setLoading(true));\n\n const hasEquipment = hasSelectedEquipment(state);\n\n const vasKitServices = getVasKitServices(state, selectedEntityIds.services);\n\n const requestBody: IChangeTariffPlanBodyDto = {\n trId: String(trId),\n // TODO - доработку на бэк, избавиться от параметра 0.\n nextMonth: 0,\n planId: Number(planId),\n isNeedRequest: false,\n promoId: Number(salePackageId),\n vasKitServices: vasKitServices,\n phoneNumber: phone ? phone : undefined,\n contactId: contactPhone?.isContactId ? Number(contactPhone.value) : undefined,\n };\n const response = await doRequest.apiProfile(changePlanWebcab(requestBody));\n\n if (!response.isSuccess) {\n dispatch(setChangePlanWebcabData({ hasError: true, errorCode: response.error.code, errorMessage: response.error.message }));\n constructorCurrentTariffAnalytics.changeTariff.confirmTariffChangingError();\n }\n\n if (response.isSuccess) {\n dispatch(setChangePlanWebcabData({ data: response.payload }));\n if (!hasEquipment) {\n constructorCurrentTariffAnalytics.changeTariff.confirmTariffChangingSuccess();\n } else {\n constructorCurrentTariffAnalytics.changeTariff.confirmTariff100plusChangingSuccess();\n }\n }\n\n if (!hasEquipment) {\n dispatch(setStep(ESteps.Final));\n }\n\n dispatch(setLoading(false));\n};\n\nexport default changePlanWebcabThunk;\n","// @todo Types were taken from frontend/apps/b2c-domru/src/api/content/shop/getShopItems.ts\n// and deeper components, need to collect all them only in api-domru package now, to not cross dependencies from b2c-domru/src/api/content…\nexport enum EPriceTypes {\n Possess = 1,\n Leasing = 5,\n}\n\nexport enum EShopCategory {\n Antiviruses = 'antiviruses',\n SpeedBonuses = 'speed-bonuses',\n Routers = 'routers',\n Intercom = 'intercom',\n Sale = 'special-offers',\n PartnerServices = 'partner-service-with-phone-check',\n Decoders = 'decoders',\n BonusToAll = 'bonus-to-all',\n YandexStation = 'yandex-stanciya',\n YandexStationLite = 'yandex-stanciya-lite',\n SafeKids = 'safe-kids',\n LoyaltyProgram = 'loyalty-program',\n Products = 'products',\n Subscriptions = 'subscriptions',\n Multibundle = 'multibundle',\n Videocontrol = 'videocontrol',\n}\n\nexport enum EExpandShopItems {\n Advertising = 'advertising',\n Category = 'category',\n Props = 'props',\n Labels = 'labels',\n CategoryProps = 'category.props',\n}\n\nexport interface IShopEquipmentProp {\n id: number,\n name: string,\n title: string,\n default_value: string | null,\n field_type: string,\n as_is: number,\n import_field?: string,\n options?: string,\n import_suffix?: string,\n}\n\nexport interface IShopCategory {\n id: number,\n parent_id: number | null,\n parentName: string | null, // Заполнено если есть родительская категория\n name: EShopCategory,\n image: string | null,\n show_in_catalog: number,\n text_fail: string,\n text_success: string,\n title: string,\n type_id: number,\n button_text: string,\n button_text_exists: string,\n buy_by_call: number,\n buy_with_check_phone: number,\n how_it_works: string,\n why_it_is_easy: string,\n props?: IShopEquipmentProp[],\n [key: string]: unknown,\n}\n\nexport interface IPartnerVasContents {\n content_type_id: number,\n is_active: number,\n is_included_agr: number,\n is_need_phone: number,\n name: string,\n price: number,\n service_id: number,\n soc_id: number,\n}\n\nexport interface IShopLabel {\n id: number,\n name: string,\n title: string,\n color: string,\n color_text: string,\n}\n\nexport interface IShopProp {\n name: string,\n title: string,\n type: string,\n value?: string | string[],\n computedValue?: string,\n asIs?: number,\n}\n\nexport interface ICostRa {\n dur_type_id: number,\n duration: number,\n flag_ra: number,\n cost: number,\n}\n\nexport interface IShopPriceOptions {\n label: string,\n price: number,\n pricePromo?: number,\n type: EPriceTypes.Possess | EPriceTypes.Leasing,\n operType: string,\n}\n\nexport interface IShopPriceV2 {\n sort: number,\n type: number,\n date_close_promo: string | null,\n duration: number | null,\n id: number,\n lifetime_price: number | null,\n owner_id: number,\n price_type: string,\n value: number,\n}\n\nexport interface IUrl {\n id: number,\n manual: number,\n name: string,\n owner_id: number,\n type: string,\n url: string,\n}\n\nexport interface IAdvertising {\n companyName: string,\n erid: string,\n}\n\nexport interface IShopItem {\n advertising: IAdvertising | null,\n alias: string,\n body: string,\n body_full: string,\n button_link: string,\n button_text: string,\n category_id: number,\n exists: boolean,\n extra: unknown[],\n global_id: number,\n id: number,\n image: string,\n image_webp?: string,\n images: string[],\n costRa: ICostRa[],\n // 0 или 1\n is_sale: number,\n prices: IShopItemPrices,\n pricesV2: IShopPriceV2[],\n pricesPromo: IShopItemPrices,\n sort: null | number,\n title: string,\n title_short?: string,\n labels?: IShopLabel[],\n category?: IShopCategory,\n image_widgets?: string,\n image_widgets_background?: string,\n image_background?: string,\n image_background_webp?: string,\n image_for_tariff_card: string,\n image_for_tariff_card_webp?: string,\n image_for_tariff_card_height: number,\n image_for_tariff_card_width: number,\n props?: IShopProp[],\n priceOptions?: IShopPriceOptions[],\n partnerVasContents?: IPartnerVasContents,\n image_width?: number,\n image_height?: number,\n leftovers: number | null,\n showForDelivery?: 0 | 1 | null,\n checkProductId?: number,\n name: string,\n urls?: IUrl[],\n}\n\ninterface IMonth {\n value: number,\n lifetime_price: number,\n}\n\ninterface IRent {\n month: IMonth | null,\n year: number | null,\n}\n\nexport interface IShopItemPrices {\n leasing?: ILeasing[],\n possess?: number,\n rent?: IRent,\n}\n\nexport interface ILeasing {\n price: number,\n duration: number,\n}\n","export const GA_CATEGORY = 'constructor';\n","interface IGetSummaryOfferInfo {\n once: number,\n monthly: number,\n connection: number,\n tariff: number,\n}\n/**\n * Собирает информацию для комментария при создании договора\n */\nexport const getSummaryOfferInfo = ({\n once,\n monthly,\n connection,\n tariff,\n}: IGetSummaryOfferInfo) => {\n const inMonth = `Ежемесячно ${(monthly + tariff)}, тариф ${tariff}, `;\n const allEquipments = `оборудование ${monthly}.`;\n const oneTimePayment = `Разово ${once + connection}, подключение ${connection}, `;\n const itemsForOncePayment = `оборудование ${once}.`;\n const allSum = `Итого: ${once + monthly + connection + tariff}`;\n\n return inMonth +\n allEquipments +\n oneTimePayment +\n itemsForOncePayment +\n allSum;\n};\n","import { doRequest } from '@r1-frontend/do-request';\nimport { EPriceTypes } from '@r1-frontend/api-domru/api-content/_dto/shop-item.types';\nimport { requestByConnection, RequestDto, ResponseDto } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport { constructorAnalytics } from '~/src/features/tariffBuilder/analytics';\n\nconst SUCCESS_STATUS = [0, 6];\n\ntype TEquipData = {\n ids: number[],\n duration: number[],\n costType: number[],\n}\n\ninterface ISubmitRequestProps {\n hasTv: boolean,\n fio: string,\n phone: string,\n domain: string,\n salePackageId: number,\n routers: TEquipData,\n decoders: TEquipData,\n street?: string,\n house?: string,\n flat?: string,\n csrf: string,\n}\n\n/**\n * Отправка заявки на подключение\n */\nexport const submitRequest = async({\n hasTv,\n fio,\n phone,\n salePackageId,\n decoders,\n routers,\n street,\n house,\n flat,\n csrf,\n}: ISubmitRequestProps) => {\n\n const leasing_duration = routers.duration.find(duration => duration > 0);\n const cost_type = leasing_duration ? EPriceTypes.Leasing : EPriceTypes.Possess;\n\n const tv_equipment_duration = decoders.duration.find(duration => duration > 0);\n const tv_equipment_buy = tv_equipment_duration ? EPriceTypes.Leasing : EPriceTypes.Possess;\n\n const data: RequestDto = {\n check_call_type: window.location.pathname,\n fio,\n phone,\n csrf,\n plan: salePackageId,\n product_id: hasTv ? [EProductsId.internet, EProductsId.tv] : [EProductsId.internet],\n router: routers.ids,\n leasing_duration,\n cost_type,\n tv_equipment_id: decoders.ids,\n tv_equipment_duration,\n tv_equipment_buy,\n street,\n house_num: Number(house) || undefined,\n office: Number(flat) || undefined,\n };\n\n const response = await doRequest.apiRequest(\n requestByConnection(data),\n );\n\n if (response.isSuccess) {\n if (SUCCESS_STATUS.includes(response.payload.status)) {\n constructorAnalytics.submitRequest.requestConnectionSuccess();\n } else {\n constructorAnalytics.submitRequest.requestConnectionError(response.payload.message, response.payload.status);\n }\n } else {\n constructorAnalytics.submitRequest.requestConnectionError(response.error.message);\n }\n};\n","type TItem = {\n id: number,\n count?: number,\n duration?: number,\n}\n\ntype TEquipData = {\n ids: number[],\n duration: number[],\n costType: number[],\n}\n\n/**\n * Подготавливает список оборудования для заявки на подключение\n */\nexport const transformEquipmentForRequest = (equipItems: TItem[]) => {\n return equipItems.reduce((acc: TEquipData, equip) => {\n acc.ids.push(equip.id);\n acc.duration.push(equip.duration || 0);\n acc.costType.push(equip.duration ? 5 : 1);\n return acc;\n }, {\n ids: [],\n duration: [],\n costType: [],\n });\n};\n","import forEach from 'lodash/forEach';\nimport values from 'lodash/values';\n\nimport { TInitialState, TRouter } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nimport { IDecoderEntity } from '../types/entity';\n\ntype TSelectedItem = {\n id: number,\n type: EEntity | 'vas',\n count?: number,\n duration?: number,\n monthly?: number,\n planType?: number,\n}\n\nexport type TSelectedEntities = {\n items: TSelectedItem[],\n summary: {\n once: number,\n monthly: number,\n connection: number,\n tariff: number,\n },\n};\n\ntype TItemMap = {\n label: string,\n entities: Exclude[],\n}\n\nconst itemsMap: TItemMap[] = [\n { label: 'Телевидение', entities: [EEntity.tv] },\n { label: 'Подписки', entities: [EEntity.onlineCinemas, EEntity.additional, EEntity.antivirus, EEntity.security] },\n { label: 'Роутеры', entities: [EEntity.routers] },\n { label: 'Приставки', entities: [EEntity.decoders] },\n];\n\nconst INSTALLMENT_TYPE = 5; // тип покупка в рассрочку\nconst PURCHASE_TYPE = 1; // тип выкуп\n\nconst getEntityByGlobalId = (type: EEntity.decoders | EEntity.routers, globalId: number, state: TInitialState): TRouter | IDecoderEntity => {\n return Object.values(state[type]).find(item => item.globalId === globalId);\n};\n\n/**\n *\n * @deprecated\n * Добавили селект чтобы сохранить обратную совместимость.\n * Для создании заявки на смену тарифа нужны параметры planType и mountly\n *\n */\nexport const getSelectedEntitiesCurrentTariff = (state: TInitialState): TSelectedEntities => {\n const equipment = getSelectedEntities(state);\n\n const equipmentItems = equipment.items.map(item => {\n if (item.type === EEntity.routers || item.type === EEntity.decoders) {\n const entity = getEntityByGlobalId(item.type, item.id, state);\n return {\n ...item,\n planType: entity.costs[entity.selectedCost].period === 1 ? PURCHASE_TYPE : INSTALLMENT_TYPE,\n monthly: entity.costs[entity.selectedCost].period === 1 ? 0 : entity.costs[entity.selectedCost].cost,\n };\n }\n return item;\n });\n\n return { ...equipment, items: equipmentItems };\n};\n// This selector should be used for agreement creation function\nconst getSelectedEntities = (state: TInitialState): TSelectedEntities => {\n let isTvSelected = false;\n\n const result = itemsMap.reduce((acc, item) => {\n forEach(\n item.entities,\n entity => {\n switch (entity) {\n case EEntity.routers: {\n Object.values(state[EEntity.routers])\n .filter(router => router.quantity > 0)\n .forEach(router => {\n acc.items.push({\n id: router.globalId,\n type: EEntity.routers,\n count: router.quantity,\n duration: router.costs[router.selectedCost].period === 1 ? 0 : router.costs[router.selectedCost].period,\n });\n const payType = router.costs[router.selectedCost].period === 1 ? 'once' : 'monthly';\n acc.summary[payType] += router.costs[router.selectedCost].cost * router.quantity;\n });\n\n break;\n }\n case EEntity.decoders: {\n Object.values(state[EEntity.decoders])\n .filter(decoder => decoder.quantity > 0)\n .forEach(decoder => {\n acc.items.push({\n id: decoder.globalId,\n type: EEntity.decoders,\n count: decoder.quantity,\n duration: decoder.costs[decoder.selectedCost].period === 1 ? 0 : decoder.costs[decoder.selectedCost].period,\n });\n const payType = decoder.costs[decoder.selectedCost].period === 1 ? 'once' : 'monthly';\n acc.summary[payType] += decoder.costs[decoder.selectedCost].cost * decoder.quantity;\n });\n\n break;\n }\n case EEntity.tv: {\n forEach(\n state[EEntity.tv],\n tvGroup => {\n values(tvGroup.items)\n .filter(tvItem => tvItem.quantity > 0)\n .forEach(tvItem => {\n acc.items.push({\n id: tvItem.id,\n type: 'vas',\n });\n if (!isTvSelected) {\n isTvSelected = true;\n }\n acc.summary.tariff += tvItem.cost.final;\n });\n },\n );\n\n break;\n }\n default: {\n values(state[entity])\n .filter(e => e.quantity > 0)\n .forEach(i => {\n acc.items.push({\n id: i.id,\n type: 'vas',\n count: i.quantity,\n });\n acc.summary.tariff += i.cost.final * i.quantity;\n });\n }\n }\n },\n );\n\n return acc;\n }, { items: [], summary: { once: 0, monthly: 0, connection: 0, tariff: 0 } });\n\n const selectedSpeed = state[EEntity.speed][state.selectedSpeed];\n result.summary.connection = isTvSelected ? 1001 : 1000;\n result.summary.tariff += selectedSpeed.price;\n return result;\n};\n\nexport default getSelectedEntities;\n","import forEach from 'lodash/forEach';\nimport values from 'lodash/values';\n\nimport { currentTariffSummaryText } from '~/src/features/tariffBuilder/components/alerts/currentTariffSummaryText';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\ntype TSummaryItem = {\n title: string,\n cost: number,\n oldCost?: number,\n period?: number,\n}\n\nexport type TSummaryInfo = {\n groups: { header: string, cost: number, items: TSummaryItem[] }[],\n total: number,\n discount: number,\n discountValue: number,\n alert?: string,\n};\n\nconst itemsMap = [\n { label: 'Услуги в тарифе', entities: [EEntity.speed, EEntity.tv, EEntity.onlineCinemas, EEntity.additional, EEntity.antivirus, EEntity.security] },\n { label: 'Оборудование в тарифе', entities: [EEntity.routers, EEntity.decoders] },\n];\n\nconst getSummaryInfo = (state: TInitialState): TSummaryInfo => {\n // @todo: Better to decompose switch case scenario to different object, each responsible for specific type of SummaryInfo property\n // like a mono internet, but not a mono internet for the tariff constructor (it does not care for the tariff constructor ;-))\n let isTvSelected = false;\n\n const { currentTariff, currentStep } = state;\n\n const result = itemsMap.reduce((acc, item) => {\n const header = item.label;\n const items: TSummaryItem[] = [];\n let groupCost = 0;\n\n forEach(\n item.entities,\n entity => {\n switch (entity) {\n case EEntity.speed: {\n const selectedSpeed = state[EEntity.speed][state.selectedSpeed];\n\n if (selectedSpeed || selectedSpeed === 0) {\n const cost = selectedSpeed.price;\n\n acc.total += cost;\n groupCost += cost;\n\n items.push({\n title: `Скорость ${selectedSpeed.speed} Мбит/с`,\n cost,\n });\n }\n\n break;\n }\n case EEntity.routers: {\n Object.values(state[EEntity.routers])\n .filter(router => router.quantity > 0)\n .forEach(router => {\n const cost = router.costs[router.selectedCost].cost * router.quantity;\n const titlePostfix = router.quantity > 1 ? ` x${router.quantity}` : '';\n\n items.push({\n title: `${router.title}${titlePostfix}`,\n cost,\n period: router.selectedCost,\n });\n\n acc.total += cost;\n groupCost += cost;\n });\n\n break;\n }\n case EEntity.decoders: {\n Object.values(state[EEntity.decoders])\n .filter(decoder => decoder.quantity > 0)\n .forEach(decoder => {\n const cost = decoder.costs[decoder.selectedCost].cost * decoder.quantity;\n const titlePostfix = decoder.quantity > 1 ? ` x${decoder.quantity}` : '';\n\n items.push({\n title: `${decoder.title}${titlePostfix}`,\n cost,\n period: decoder.selectedCost,\n });\n\n acc.total += cost;\n groupCost += cost;\n });\n\n break;\n }\n case EEntity.tv: {\n forEach(\n state[EEntity.tv],\n tvGroup => {\n values(tvGroup.items)\n .filter(tvItem => tvItem.quantity > 0)\n .forEach(tvItem => {\n if (!isTvSelected) {\n isTvSelected = true;\n }\n const cost = tvItem.cost.final;\n\n items.push({\n title: tvItem.title,\n cost,\n });\n\n acc.total += cost;\n groupCost += cost;\n });\n },\n );\n\n break;\n }\n case EEntity.services:\n case EEntity.entertainments: return;\n default: {\n values(state[entity])\n .filter(e => e.quantity > 0)\n .forEach(i => {\n const cost = i.cost.final * i.quantity;\n\n items.push({\n title: i.title,\n cost,\n });\n\n acc.total += cost;\n groupCost += cost;\n });\n }\n }\n },\n );\n\n if (items.length > 0) {\n acc.groups.push({\n header,\n cost: groupCost,\n items,\n });\n }\n\n return acc;\n }, { groups: [], total: 0, discount: state.discount.percent, discountValue: state.discount.value });\n\n const connectionCost = {\n header: 'Подключение',\n cost: isTvSelected ? 1001 : 1000,\n items: [],\n };\n\n if (!currentTariff) {\n result.groups.push(connectionCost);\n result.total += connectionCost.cost;\n }\n\n if (currentTariff && currentStep !== ESteps.Final) {\n result.alert = currentTariffSummaryText(currentTariff);\n }\n\n return result;\n};\n\nexport default getSummaryInfo;\n","import format from '@r1-frontend/ui-react/components/costs/Cost/format';\n\nimport { TCurrentTariff } from '~/src/features/tariffBuilder/types/TCurrentTariff';\n\nexport const currentTariffSummaryText = (currentTariff: TCurrentTariff) => {\n const currentTariffText = `Ваш текущий тариф стоит ${format(currentTariff.cost, { monthly: true })}`;\n const servicesText = currentTariff.services\n ? `, а за дополнительные услуги в прошлом месяце вы заплатили ${format(currentTariff.services.cost)}`\n : '';\n\n return `${currentTariffText}${servicesText}`;\n};\n","import filter from 'lodash/filter';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst isBaseTvSelected = (state: TInitialState) => {\n if (isEmpty(state[EEntity.tv])) {\n return false;\n }\n\n const baseTvGroup = filter(state[EEntity.tv], group => (group.alias === 'base'));\n return Object.values(baseTvGroup[0].items)[0].quantity > 0;\n};\n\nexport default isBaseTvSelected;\n","import { doRequest } from '@r1-frontend/do-request';\nimport { IOfferCreateResponseDto, offerCreate } from '@r1-frontend/api-domru/full-buy/v2/agreement/offer-create';\nimport { IVerifiedAddressData } from '@r1-frontend/entities/ContactAddress/initialState';\n\nimport { getGaId } from '@r1-frontend/shared/helpers/getGaId';\n\nimport { getErrorMessage } from '~/src/features/full-buy/functions';\nimport { setAgreementData, setLoading, setStep } from '~/src/features/tariffBuilder/actions';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { getSummaryOfferInfo } from '~/src/features/tariffBuilder/helpers/getSummaryOfferInfo';\nimport { submitRequest } from '~/src/features/tariffBuilder/helpers/submitRequest';\nimport { transformEquipmentForRequest } from '~/src/features/tariffBuilder/helpers/transformer/transformEquipmentForRequest';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport getSelectedEntities from '~/src/features/tariffBuilder/selectors/getSelectedEntities';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\nimport isBaseTvSelected from '~/src/features/tariffBuilder/selectors/isBaseTvSelected';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { getAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\n\nconst createAgreement = (\n providerId: number,\n domain: string,\n verifiedAddress: IVerifiedAddressData,\n csrf: string,\n) => async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n const sendAnalytics = getAnalyticsSender(GA_CATEGORY);\n\n dispatch(setLoading(true));\n const state = getState();\n const selectedEquip = getSelectedEntities(state);\n const clientInfo = state.client;\n\n const {\n address,\n companyId,\n } = verifiedAddress;\n\n if (!address) {\n return;\n }\n const { street, house, flat } = address;\n const houseId = house?.value;\n\n const analyticsId = getGaId();\n\n if (!houseId || !flat) {\n return;\n }\n\n const createData = {\n address: {\n houseId: houseId,\n office: flat,\n companyId,\n },\n personalInformation: {\n clientName: clientInfo.name,\n clientPhone: clientInfo.phone,\n },\n tariff: {\n tariffId: Number(state.salePackageId),\n },\n items: selectedEquip.items,\n comment: getSummaryOfferInfo(selectedEquip.summary),\n analyticsId,\n };\n\n const respAgreement = await doRequest.fullBuy(\n offerCreate(providerId, createData),\n );\n\n /* Ошибка создания договора. Таймслоты пропускаем переходим к финальному шагу */\n if (!respAgreement.isSuccess) {\n dispatch(setAgreementData({\n agreementId: null,\n agreementNumber: null,\n isDouble: false,\n hasError: true,\n errorMessage: getErrorMessage({}),\n }));\n dispatch(setStep(ESteps.Final));\n sendAnalytics('create agreement', 'error');\n // Отправляем заявку на подключение\n const routers = selectedEquip.items.filter(el => el.type === EEntity.routers);\n const decoders = selectedEquip.items.filter(el => el.type === EEntity.decoders);\n submitRequest({\n hasTv: isBaseTvSelected(state),\n fio: clientInfo.name,\n phone: clientInfo.phone,\n domain,\n csrf,\n salePackageId: Number(state.salePackageId),\n routers: transformEquipmentForRequest(routers),\n decoders: transformEquipmentForRequest(decoders),\n street: street?.label,\n house: house?.label,\n flat,\n });\n return;\n }\n\n const { isDouble, fromCache } = respAgreement.payload;\n const agreementNumber = respAgreement.isSuccess ? Number(respAgreement.payload.agreementNumber) : null;\n const agreementId = respAgreement.isSuccess ? Number(respAgreement.payload.agreementId) : null;\n\n /* Создан двойной договор. Таймслоты пропускаем переходим к финальному шагу */\n if (Number(isDouble) || fromCache) {\n // TODO рефакторинг, не обрабатывается ситуация если fromCache = true, уточнить flow для fromCache = true\n dispatch(setAgreementData({\n agreementId: null,\n agreementNumber: null,\n isDouble: !!isDouble,\n hasError: true,\n errorMessage: getErrorMessage({ isDouble: !!Number(isDouble), isFromCache: !!fromCache }),\n }));\n\n dispatch(setStep(ESteps.Final));\n\n sendAnalytics('create agreement', 'double');\n return;\n }\n\n if (!agreementId) {\n throw new Error('FullBuy Error. Required agreementId!');\n }\n\n if (!agreementNumber) {\n throw new Error('FullBuy Error. Required agreementNumber!');\n }\n\n /* Договор создан без ошибок, переходим к тайм-слотам */\n dispatch(setAgreementData({\n agreementId,\n agreementNumber,\n isDouble: false,\n hasError: false,\n errorMessage: '',\n }));\n dispatch(setStep(ESteps.SelectVisitData));\n\n dispatch(setLoading(false));\n\n const summaryInfo = getSummaryInfo(state);\n\n sendAnalytics('create agreement', `success ${agreementNumber} tariffId: ${state.salePackageId} total amount: ${summaryInfo}`);\n};\n\nexport default createAgreement;\n","import reduce from 'lodash/reduce';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst isLimitationsReached = (entityName: Extract) => (state: TInitialState) => {\n const limits = state.limitations[entityName];\n const entities = state[entityName];\n\n const selected = reduce(\n entities,\n (result, entity) => {\n if (entity.quantity === 0) {\n return result;\n }\n\n if (entity.selectedCost > 1) {\n result.installment += entity.quantity;\n }\n\n result.total += entity.quantity;\n\n return result;\n },\n {\n total: 0,\n installment: 0,\n },\n );\n\n return {\n total: selected.total >= limits.total,\n installment: selected.installment >= limits.installment,\n };\n};\n\nexport default isLimitationsReached;\n","import map from 'lodash/map';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport isLimitationsReached from '~/src/features/tariffBuilder/selectors/isLimitationsReached';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getDecoders = (state: TInitialState) => {\n const decoders = state[EEntity.decoders];\n\n const limitations = isLimitationsReached(EEntity.decoders)(state);\n\n return map(\n decoders,\n ({ costs, selectedCost, quantity, ...decoder }, key) => {\n const displayedCost = limitations.installment && quantity === 0 ? 1 : selectedCost;\n return ({\n ...decoder,\n ...costs[displayedCost],\n quantity,\n isSelected: quantity > 0,\n displayedCost,\n\n key: Number(key),\n });\n },\n );\n};\n\nexport default getDecoders;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport getDecoders from '~/src/features/tariffBuilder/selectors/getDecoders';\n\nconst isSelectedDecoderInCurrentTariff = (state: TInitialState) => {\n if (state.currentTariff) {\n return getDecoders(state).some(el => el.isSelected);\n }\n return false;\n};\n\nexport default isSelectedDecoderInCurrentTariff;\n","import { batch } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport {\n createRequest,\n RequestDto as ICreateRequestBodyDto,\n ResponseDto as ICreateRequestResponseDto,\n} from '@r1-frontend/api-domru/api-profile/v2/change-tariff/create-request';\n\nimport { setLoading, setRequestId, setStep } from '~/src/features/tariffBuilder/actions';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { getSelectedEntitiesCurrentTariff } from '~/src/features/tariffBuilder/selectors/getSelectedEntities';\nimport isSelectedDecoderInCurrentTariff from '~/src/features/tariffBuilder/selectors/isSelectedDecoderInCurrentTariff';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\nconst createRequestThunk = () => async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n dispatch(setLoading(true));\n const state = getState();\n const selectedEquip = getSelectedEntitiesCurrentTariff(state);\n const isSelectedDecoder = isSelectedDecoderInCurrentTariff(state);\n const clientInfo = state.client;\n const planId = state.planId;\n const salePackageId = state.salePackageId;\n const { contactPhone, phone } = clientInfo;\n\n const routers = selectedEquip.items.filter(el => el.type === EEntity.routers);\n const [firstRouter] = routers;\n const [firstDecoder] = selectedEquip.items.filter(el => el.type === EEntity.decoders);\n\n const requestBody: ICreateRequestBodyDto = {\n connectInt: routers.length > 0 ? 3 : 0,\n connectTv: isSelectedDecoder ? 2 : 0,\n planId,\n operTypeInt: firstRouter?.planType,\n numberPhone: phone ? Number(phone) : undefined,\n contactId: contactPhone?.isContactId ? Number(contactPhone.value) : undefined,\n promoId: salePackageId ? Number(salePackageId) : undefined,\n\n operTypeTv: firstDecoder?.planType,\n\n routerId: firstRouter?.id,\n leasingPriceMonthInt: firstRouter?.monthly,\n leasingDurationInt: firstRouter?.duration,\n\n boxtvId: firstDecoder?.id,\n leasingPriceMonthTv: firstDecoder?.monthly,\n leasingDurationTv: firstDecoder?.duration,\n };\n\n const response = await doRequest.apiProfile(createRequest(requestBody));\n\n if (response.isSuccess) {\n batch(() => {\n dispatch(setRequestId(response.payload.request_id));\n dispatch(setStep(ESteps.SelectVisitData));\n });\n } else {\n dispatch(setStep(ESteps.Final));\n }\n\n dispatch(setLoading(false));\n};\n\nexport default createRequestThunk;\n","import round from 'lodash/round';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { current } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/current';\nimport { TResponseDto } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/current/dto/ResponseDto';\n\nimport { initialization as initializationAction, setCurrentTariff } from '~/src/features/tariffBuilder/actions';\nimport { recalculate } from '~/src/features/tariffBuilder/actions/thunk';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TLimitations } from '~/src/features/tariffBuilder/types/TLimitations';\n\nconst initialization = (routerLimits: TLimitations, decoderLimits: TLimitations, withCurrent?: boolean) => async(dispatch: TCtxDispatch) => {\n dispatch(initializationAction(routerLimits, decoderLimits));\n\n if (withCurrent) {\n const response = await doRequest.apiTariffs(current());\n\n if (response.isSuccess) {\n dispatch(setCurrentTariff({ ...response.payload, speed: round(response.payload.speed, -2) }));\n }\n }\n\n dispatch(recalculate());\n};\n\nexport default initialization;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/**\n * Получение данных по текущему тарифу пользователя\n * @link https://master.api-tariffs.sandbox.d2c.r-one.io/docs/#/Tariff/TariffController_current\n */\nexport const current = (): IRequest => ({\n uri: 'v1/tariff/current',\n method: 'GET',\n withProvider: true,\n withAuth: true,\n});\n","import { IVerifiedAddressData } from '@r1-frontend/entities/ContactAddress/initialState';\n\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nimport createAgreement from './createAgreement';\nimport createRequestThunk from './createRequestThunk';\n\n\nconst initializationAgreement = (providerId: number, domain: string, address: IVerifiedAddressData, csrf: string) =>\n async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n const { currentTariff } = getState();\n\n if (currentTariff) {\n dispatch(createRequestThunk());\n } else if (address) {\n dispatch(createAgreement(providerId, domain, address, csrf));\n }\n };\n\nexport default initializationAgreement;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\ntype TProps = {\n message: string | JSX.Element,\n}\n\nconst BaseInfoToast = ({ message, ...props }: TProps) => (\n \n \n {message}\n \n \n);\n\nexport default styled(BaseInfoToast)`\n max-width: 345px;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { InfoCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\ntype TProps = {\n children: string | JSX.Element,\n}\n\nconst BaseErrorToast = ({ children, ...props }: TProps) => (\n \n \n {children}\n \n \n);\n\nexport default styled(BaseErrorToast)`\n width: 100%;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n max-width: 345px;\n }\n`;\n","import OpenChat from '~/src/components/OpenChatLink';\n\nimport BaseErrorToast from './BaseErrorToast';\n\nconst RecalculateFallDown = ({ ...props }): JSX.Element => \n <>\n Произошла ошибка, попробуйте повторить действие, перезагрузите страницу или напишите в чат поддержки\n \n;\n\nexport default RecalculateFallDown;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { InfoCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\ntype TRouterNotSupplySpeed = {\n onLinkClick: () => void,\n}\n\nconst RouterNotSupplySpeed = ({ onLinkClick, ...props }: TRouterNotSupplySpeed) => (\n \n Роутер, который вы выбрали раньше, не поддерживает новую скорость, поэтому мы удалили его из заявки.\n Пожалуйста, выберите новый роутер.\n \n \n);\n\nexport default styled(RouterNotSupplySpeed)`\n max-width: 345px;\n & a {\n cursor: pointer;\n }\n`;\n","export const getUpdatedValue = (current:U, incoming:T, selectedVases: number[], formatter: (curr: U, inc: T, sv: number[]) => void) => {\n if (!incoming) {\n return current;\n }\n return formatter(current, incoming, selectedVases);\n};\n","import { CharacteristicsResponse } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { Flash } from '@r1-frontend/ui-react/components/svg/main';\nimport { TRouterCardCharacteristicsProps } from '@r1-frontend/ui-react/organisms/Card/Router/Router';\nimport { truncate } from '@r1-frontend/shared/helpers/truncate';\n\nconst prepareCharacteristic = (characteristic: CharacteristicsResponse): TRouterCardCharacteristicsProps => {\n return {\n title: truncate(characteristic.title, 20),\n value: truncate(characteristic.value, 10),\n Icon: Flash,\n };\n};\n\nexport default prepareCharacteristic;\n","import { CostResponse } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { TCost } from '~/src/features/tariffBuilder/types/entity';\n\nconst prepareCosts = (costResult: Record, cost: CostResponse): Record => {\n costResult[cost.duration || 1] = {\n cost: cost.cost,\n period: cost.duration || 1,\n };\n\n return costResult;\n};\n\nexport default prepareCosts;\n","import find from 'lodash/find';\nimport map from 'lodash/map';\nimport reduce from 'lodash/reduce';\n\nimport { EquipmentResponse } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport prepareCharacteristic from '~/src/features/tariffBuilder/helpers/transformer/prepareRouters/prepareCharacteristic';\nimport prepareCosts from '~/src/features/tariffBuilder/helpers/transformer/prepareRouters/prepareCosts';\nimport { TRouter } from '~/src/features/tariffBuilder/reducer';\n\nconst prepareRouters = (current: Record, incoming: Record) => {\n return reduce(incoming, (result: Record, incomingRouter, key) => {\n const {\n costs: incomingCosts,\n characteristics: incomingCharacteristics,\n id,\n ...router\n } = incomingRouter;\n\n const numberKey = Number(key);\n\n const characteristics = map(incomingCharacteristics.slice(0, 4), prepareCharacteristic);\n const costs = reduce(incomingCosts, prepareCosts, {});\n\n const currentRouter = find(current, { id: Number(id) });\n\n if (!currentRouter) {\n result[numberKey] = {\n ...router,\n id: Number(id),\n costs,\n characteristics,\n\n selectedCost: Math.max(...Object.keys(costs).map(Number)),\n quantity: 0,\n };\n } else {\n result[numberKey] = {\n ...currentRouter,\n };\n }\n\n return result;\n }, {});\n};\n\nexport default prepareRouters;\n","import reduce from 'lodash/reduce';\n\nimport { BaseSubscription } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { TBaseSubscription } from '~/src/features/tariffBuilder/reducer/initialState';\n\nconst prepareBaseSubscription = (current: Record, incoming: { entities: Record}, selectedVases: number[]) => {\n return reduce(incoming.entities, (result, incomingSubscription, key) => {\n const {\n id,\n images,\n\n oldCost,\n deltaCost,\n cost,\n\n ...subscription\n } = incomingSubscription;\n\n const isSelectedByResponse = selectedVases.includes(id);\n\n const numericId = Number(key);\n const finalCost = {\n previous: oldCost,\n fact: deltaCost,\n final: cost,\n };\n if (!result[numericId]) {\n result[numericId] = {\n ...subscription,\n id: Number(id),\n cost: finalCost,\n imagePath: images,\n quantity: isSelectedByResponse ? 1 : 0,\n };\n } else {\n result[numericId] = {\n ...result[numericId],\n cost: finalCost,\n };\n }\n\n return result;\n }, current);\n};\n\nexport default prepareBaseSubscription;\n","import reduce from 'lodash/reduce';\n\nimport { EquipmentResponse } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport prepareCosts from '~/src/features/tariffBuilder/helpers/transformer/prepareRouters/prepareCosts';\nimport { IDecoderEntity } from '~/src/features/tariffBuilder/types/entity';\n\nconst prepareDecoders = (current: Record, incoming: Record) => {\n if (!incoming) {\n return {};\n }\n\n return reduce(incoming, (result, incomingDecoder, key) => {\n const {\n costs: incomingCosts,\n id,\n ...router\n } = incomingDecoder;\n\n const numericId = Number(key);\n const costs = reduce(incomingCosts, prepareCosts, {});\n\n if (!result[numericId]) { // the first iteration on initialization\n result[numericId] = {\n ...router,\n group: 'decoder',\n id: Number(id),\n costs,\n\n selectedCost: Math.max(...Object.keys(costs).map(Number)),\n quantity: 0,\n };\n } else { // others iterations, we do not need other data\n result[numericId] = {\n ...result[numericId],\n costs,\n };\n }\n\n return result;\n }, current);\n};\n\nexport default prepareDecoders;\n","import {\n BaseEntity,\n EquipmentResponse,\n TvGroup,\n} from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TIncomingEntities = {\n tv: Record,\n onlineCinemas: BaseEntity,\n entertainments: BaseEntity,\n antivirus: BaseEntity,\n security: BaseEntity,\n routers: Record,\n decoders: Record,\n}\n\nconst prepareDescription = (incoming: TIncomingEntities) => {\n return {\n [EEntity.onlineCinemas]: {\n header: incoming[EEntity.onlineCinemas]?.header,\n description: incoming[EEntity.onlineCinemas]?.description,\n },\n [EEntity.additional]: {\n header: incoming[EEntity.entertainments]?.header,\n description: incoming[EEntity.entertainments]?.description,\n },\n [EEntity.antivirus]: {\n header: incoming[EEntity.antivirus]?.header,\n description: incoming[EEntity.antivirus]?.description,\n },\n [EEntity.security]: {\n header: incoming[EEntity.security]?.header,\n description: incoming[EEntity.security]?.description,\n },\n };\n};\n\nexport default prepareDescription;\n","import map from 'lodash/map';\n\nimport { Speed } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nconst prepareSpeed = (incoming: Speed[], isTvSelected: boolean) => {\n return map(incoming, (speed, key) => {\n return {\n id: Number(key),\n speed: speed.speed,\n price: Number(speed.cost || 0),\n alias: speed.alias || speed.speed,\n title: speed.title || speed.speed,\n descriptionList: speed.advantages[isTvSelected ? 'bundle' : 'mono'],\n };\n });\n};\n\nexport default prepareSpeed;\n","import reduce from 'lodash/reduce';\n\nimport { TvGroup } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { TTvSubscription } from '~/src/features/tariffBuilder/reducer/initialState';\n\nconst prepareTvSubscription = (current: Record, incoming: Record, selectedVases: number[]) => {\n return reduce(incoming, (result, group: TvGroup, alias: string) => {\n result[alias] = {\n alias,\n title: group.header,\n imagePath: group.image,\n items: reduce(group.entities, (itemsResult, item) => {\n const isSelectedByResponse = selectedVases.includes(item.id);\n\n // @ts-ignore\n itemsResult[item.id] = {\n id: item.id,\n contentId: item.contentId,\n title: item.title,\n cost: {\n previous: item.oldCost,\n fact: item.deltaCost,\n final: item.cost,\n },\n quantity: isSelectedByResponse ? 1 : current?.[alias]?.items?.[item.id]?.quantity || 0,\n };\n\n return itemsResult;\n }, {}),\n };\n\n return result;\n }, current);\n};\n\nexport default prepareTvSubscription;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\n/**\n * Возвращает true если на адресе ограничена скорость интернета\n */\nconst isSpeedRestrictionByEqual100 = (state: TInitialState) => {\n return state.speedRestrictions !== undefined && state.speedRestrictions.min === 100 && state.speedRestrictions.max === 100;\n};\n\nexport default isSpeedRestrictionByEqual100;\n","import isEmpty from 'lodash/isEmpty';\n\nimport { RequestDto } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/RequestDto';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport isSpeedRestrictionByEqual100 from '~/src/features/tariffBuilder/selectors/isSpeedRestrictionByEqual100';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getRecalculateBody = (state: TInitialState): RequestDto => {\n const entities = state.selectedEntityIds;\n\n if (!isEmpty(state[EEntity.speed])) {\n return {\n ...(isSpeedRestrictionByEqual100(state) ? {} : { speed: Number(state[EEntity.speed][state.selectedSpeed].speed) }),\n ...entities,\n speedRestrictions: state.speedRestrictions,\n };\n }\n\n if (state.currentTariff?.speed) {\n return {\n speed: state.currentTariff.speed,\n };\n }\n\n return {};\n};\n\nexport default getRecalculateBody;\n","import map from 'lodash/map';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport calculate from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate';\nimport { ResponseDto } from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate/dto/ResponseDto';\n\nimport { TUseToaster } from '@r1-frontend/ui-react/experimental/Toaster';\nimport { isResponseCanceled } from '@r1-frontend/shared/helpers/isResponseCanceled';\n\nimport { initialized, setLoading, setStep } from '~/src/features/tariffBuilder/actions';\nimport { getAbortControllerRecreater } from '~/src/features/tariffBuilder/actions/thunk/helpers/getAbortControllerRecreater';\nimport BaseInfoToast from '~/src/features/tariffBuilder/components/toast/BaseInfoToast';\nimport RecalculateFallDown from '~/src/features/tariffBuilder/components/toast/RecalculateFallDown';\nimport RouterNotSupplySpeed from '~/src/features/tariffBuilder/components/toast/RouterNotSupplySpeed';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { getUpdatedValue } from '~/src/features/tariffBuilder/helpers/getUpdatedValue';\nimport { prepareRouters } from '~/src/features/tariffBuilder/helpers/transformer';\nimport prepareBaseSubscription from '~/src/features/tariffBuilder/helpers/transformer/prepareBaseSubscription';\nimport prepareDecoders from '~/src/features/tariffBuilder/helpers/transformer/prepareDecoders';\nimport prepareDescription from '~/src/features/tariffBuilder/helpers/transformer/prepareDescription';\nimport prepareSpeed from '~/src/features/tariffBuilder/helpers/transformer/prepareSpeed';\nimport prepareTvSubscription from '~/src/features/tariffBuilder/helpers/transformer/prepareTvSubscription';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport getRecalculateBody from '~/src/features/tariffBuilder/selectors/getRecalculateBody';\nimport isBaseTvSelected from '~/src/features/tariffBuilder/selectors/isBaseTvSelected';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\nconst infoToastId = 'infoToastId';\nconst routerToastId = 'routerNotSupplySpeed';\n\nconst createAbortController = getAbortControllerRecreater();\n\nconst recalculate = (toaster?: TUseToaster) => async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n const state = getState();\n\n const onLinkClick = () => {\n dispatch(setStep(ESteps.Equipment));\n toaster && toaster.remove(routerToastId);\n };\n\n if (!state.loading) {\n toaster && toaster.add(, true, infoToastId);\n dispatch(setLoading(true));\n }\n\n const calculateBody = getRecalculateBody(state);\n\n const abortController = createAbortController();\n\n const requestWithSignal = {\n /**\n * If current tariff is defined, then user is authorized\n */\n ...calculate(calculateBody, !!state.currentTariff),\n signal: abortController.signal,\n };\n\n const response = await doRequest.apiTariffs(requestWithSignal);\n\n if (response.isSuccess) {\n toaster && toaster.remove(infoToastId);\n dispatch(setLoading(false));\n\n const incomingRoutersId = map(response.payload.entities.routers, router => Number(router.id));\n const filteredRouters = state.selectedEntityIds[EEntity.routers].filter(id => incomingRoutersId.includes(Number(id)));\n if (filteredRouters.length < state.selectedEntityIds[EEntity.routers].length) {\n toaster && toaster.add(, false, routerToastId);\n }\n const selectedVases = response.payload.selectedVases || [];\n const preparedSpeed = prepareSpeed(response.payload.speed, isBaseTvSelected(state));\n\n const currentTariffSpeedIndex = preparedSpeed.findIndex(item => item.speed === state.currentTariff?.speed);\n const selectedSpeed = ~currentTariffSpeedIndex\n ? preparedSpeed[currentTariffSpeedIndex].id\n // If there are speed limits, we should choose the first option\n : (state[EEntity.speed].length != response.payload.speed.length ? 0 : state.selectedSpeed);\n\n dispatch(initialized({\n [EEntity.speed]: preparedSpeed,\n [EEntity.onlineCinemas]: getUpdatedValue(state[EEntity.onlineCinemas], response.payload.entities.onlineCinemas, selectedVases, prepareBaseSubscription),\n\n [EEntity.tv]: getUpdatedValue(state[EEntity.tv], response.payload.entities.tv, selectedVases, prepareTvSubscription),\n [EEntity.additional]: getUpdatedValue(state[EEntity.additional], response.payload.entities.entertainments, selectedVases, prepareBaseSubscription),\n\n [EEntity.antivirus]: getUpdatedValue(state[EEntity.antivirus], response.payload.entities.antivirus, selectedVases, prepareBaseSubscription),\n [EEntity.security]: getUpdatedValue(state[EEntity.security], response.payload.entities.security, selectedVases, prepareBaseSubscription),\n [EEntity.routers]: getUpdatedValue(state[EEntity.routers], response.payload.entities.routers, [], prepareRouters),\n // after speed changed we should to remove selected routers that do not satisfy condition by a speed\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [EEntity.services]: selectedVases,\n [EEntity.routers]: filteredRouters,\n },\n\n [EEntity.decoders]: prepareDecoders(state[EEntity.decoders], response.payload.entities?.decoders),\n\n selectedSpeed,\n\n entityDescription: prepareDescription(response.payload.entities),\n discount: response.payload.discount,\n salePackageId: response.payload.salePackageId,\n planId: response.payload.planId,\n\n // reset current tariff speed after first initialization, if exists\n currentTariff: state.currentTariff?.speed\n ? {\n ...state.currentTariff,\n speed: null,\n }\n : state.currentTariff,\n }));\n } else {\n if (isResponseCanceled(response.error.message)) {\n return;\n }\n\n // @todo move from this action to a container.\n toaster && toaster.add();\n toaster && toaster.remove(infoToastId);\n dispatch(setLoading(false));\n }\n};\n\nexport default recalculate;\n","/**\n * Создает новый контроллер, прерывает предыдущий\n */\nexport const getAbortControllerRecreater = () => {\n let controller: AbortController | null = null;\n\n return () => {\n controller && controller.abort();\n controller = new AbortController();\n return controller;\n };\n};\n","import { captureException } from '@sentry/node';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { replan } from '@r1-frontend/api-domru/api-request/v1/managing-connection-request/re-plan';\nimport { IReplanResponse } from '@r1-frontend/api-domru/api-request/v1/managing-connection-request/re-plan/dto/IReplanResponse';\n\nimport { setReplanIsError, setSelectedTimeSlot, setStep } from '~/src/features/tariffBuilder/actions';\nimport { TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\n/**\n * Возвращает время в формате для передачи в запрос.\n * '/v1/managing-connection-request/re-plan'\n * @param time - \"10:00\"\n * @returns \"10:00-11:00\"\n */\nconst getTimeRange = (time: string): string => {\n const [hour] = time.split(':');\n if (isNaN(Number(hour))) {\n return hour;\n }\n return `${hour}:00-${Number(hour) + 1}:00`;\n};\n\nexport interface IParams {\n agreementId?: number,\n selectedDate: string,\n selectedTime: string,\n comment: string,\n}\n\nconst replanRequest = ({\n agreementId,\n selectedDate,\n selectedTime,\n comment,\n}: IParams) => async(dispatch: TCtxDispatch, getState: () => TInitialState) => {\n const state = getState();\n const { client } = state;\n\n if (!agreementId) {\n return;\n }\n\n const planTime = getTimeRange(selectedTime);\n\n const phoneParam = client.contactPhone?.isContactId\n ? {\n contactId: client.contactPhone.value,\n numberPhone: null,\n }\n : {\n contactId: null,\n numberPhone: client.phone,\n };\n\n /**\n * TODO - Удалить agreementId когда бэк будет готов.\n * Задача по бэку - https://ticket.ertelecom.ru/browse/WEB-48483\n * Задача на фронт - https://ticket.ertelecom.ru/browse/WEB-48498\n */\n const response = await doRequest.apiRequest(\n replan({\n agreementId,\n planDate: selectedDate,\n planTime,\n text: comment,\n ...phoneParam,\n }),\n );\n\n if (!response.isSuccess) {\n dispatch(setReplanIsError(true));\n captureException(response.error);\n }\n\n if (response.isSuccess) {\n dispatch(setSelectedTimeSlot({ date: response.payload.plan_date, hour: response.payload.plan_time, comment }));\n }\n dispatch(setStep(ESteps.Final));\n};\n\nexport default replanRequest;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\n\nexport const Wrapper = styled.div<{ bgImage: string, bgWebpImage: string }>`\n min-width: 320px;\n height: 96px;\n background: url(${({ bgWebpImage, bgImage }) => useProgressiveImage(bgWebpImage, {\n hasTimeout: true,\n timeoutDelay: 1,\n }, bgImage)}) no-repeat;\n background-size: cover;\n justify-content: space-between;\n flex-wrap: nowrap;\n\n img, p {\n height: 100%;\n }\n\n p {\n display: flex;\n align-items: center;\n ${FONTS.S};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 64px;\n\n p {\n ${FONTS.XXS};\n }\n\n img {\n width: 96px;\n }\n }\n`;\n\nexport const ImageBlock = styled(LazyLoadImage)`\n width: auto;\n height: 100%;\n background-repeat: no-repeat;\n background-position: center;\n object-fit: cover;\n`;\n","import React from 'react';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { IndentContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { ImageBlock, Wrapper } from './styled';\n\nconst RulesBannerBlock = ({ ...props }): JSX.Element => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n return (\n \n \n

\n Выбирайте и платите только за те услуги, которые вам нужны.\n Чем больше услуг, тем выгоднее тариф\n

\n
\n {isMobile\n ? \n \n \n : \n \n \n }\n
\n );\n};\n\nexport default withRadius(RulesBannerBlock, { $desktop: 32, $mobile: 24 });\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nconst Section = styled.section`\n display: block;\n margin-bottom: 32px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 48px;\n }\n`;\n\nexport default Section;\n","import { IOption } from '@r1-frontend/ui-react/components/select/creatableSelect';\nimport { TRouterCardProps } from '@r1-frontend/ui-react/organisms/Card/Router/Router';\nimport { TSpeedLineItemWithDescription } from '@r1-frontend/ui-react/organisms/SpeedLine/SpeedLineWithDescription';\nimport { TArrayTwoOrMore } from '@r1-frontend/shared/types/Array';\n\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IDecoderEntity, TToasterNotify } from '~/src/features/tariffBuilder/types/entity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TCurrentTariff } from '~/src/features/tariffBuilder/types/TCurrentTariff';\nimport { TLimitations } from '~/src/features/tariffBuilder/types/TLimitations';\n\nexport type TBaseSubscription = {\n id: number,\n imagePath: { desktop: string, mobile: string },\n title: string,\n cost: {\n previous: number, // oldCost - old cost\n fact: number, // delta - plus for tariff\n final: number, // cost - inside summary\n },\n benefits?: string[],\n description: string,\n descriptionFull: string,\n quantity: number,\n selectedCost?: number, // not used...\n}\n\nexport type TTvSubscriptionItem = Omit &\n {\n contentId: number, // this parameter is using only for getting list of channels\n };\n\nexport type TTvSubscription = {\n alias: string,\n title: string,\n imagePath: string,\n items: Record,\n}\n\ntype TCost = {\n cost: number,\n period: number,\n}\n\ntype TClient = {\n name: string,\n phone: string,\n contactPhone?: IOption,\n}\n\nexport type TTimeSlot = {\n date: string,\n hour: string,\n comment?: string,\n}\n\nexport type TRouter = Pick<\n TRouterCardProps,\n 'images' | 'title' | 'description' | 'labels' | 'characteristics'\n> & {\n id: number,\n globalId: number,\n costs: Record,\n\n quantity: number,\n selectedCost: number,\n}\n\nexport type TEntityDescription = {\n header?: string,\n description?: string,\n}\n\nexport interface IChangePlanWebcabData {\n data?: string,\n hasError?: boolean,\n errorCode?: string | number,\n errorMessage?: string,\n}\n\nexport type TInitialState = {\n initialized: boolean,\n loading: boolean,\n currentStep: ESteps,\n\n discount: {\n percent: number,\n value: number,\n },\n\n [EEntity.speed]: TArrayTwoOrMore,\n selectedSpeed: number,\n speedRestrictions?: { min?: number, max?: number },\n\n [EEntity.onlineCinemas]: Record,\n [EEntity.tv]: Record,\n [EEntity.additional]: Record,\n [EEntity.antivirus]: Record,\n [EEntity.security]: Record,\n\n [EEntity.routers]: Record,\n [EEntity.decoders]: Record,\n\n entityDescription: Record,\n\n selectedEntityIds: {\n [EEntity.services]: number[],\n [EEntity.decoders]: number[],\n [EEntity.routers]: number[],\n },\n\n hasSmartTv: boolean,\n\n limitations: {\n [EEntity.routers]: TLimitations,\n [EEntity.decoders]: TLimitations,\n },\n toaster: TToasterNotify,\n\n client: TClient,\n\n selectedTimeSlot: TTimeSlot | null,\n\n agreement: {\n agreementId: number | null,\n agreementNumber: string | null,\n isDouble: boolean,\n hasError: boolean,\n errorMessage: string,\n },\n\n salePackageId: string | null,\n\n planId?: number,\n\n maximumTakenStep: ESteps,\n\n currentTariff?: TCurrentTariff,\n changePlanWebcabData?: IChangePlanWebcabData,\n requestId?: string,\n replanIsError?: boolean,\n}\n\nconst toaster: TToasterNotify = {\n type: 'info',\n message: '',\n};\n\nconst initialState: TInitialState = {\n initialized: false,\n loading: false,\n\n currentStep: ESteps.SpeedAndTv,\n maximumTakenStep: ESteps.SpeedAndTv,\n\n discount: {\n percent: 0,\n value: 0,\n },\n\n // @todo remove\n // @ts-ignore\n speed: {},\n selectedSpeed: 0,\n speedRestrictions: undefined,\n\n onlineCinemas: {},\n tv: {},\n additional: {},\n antivirus: {},\n security: {},\n routers: {},\n decoders: {},\n\n entityDescription: {},\n\n hasSmartTv: false,\n\n limitations: {\n routers: { total: 0, installment: 0 },\n decoders: { total: 0, installment: 0 },\n },\n toaster: toaster,\n\n selectedEntityIds: {\n [EEntity.services]: [],\n [EEntity.decoders]: [],\n [EEntity.routers]: [],\n },\n\n client: { name: '', phone: '' },\n\n selectedTimeSlot: null,\n\n salePackageId: null,\n\n agreement: {\n agreementId: null,\n agreementNumber: null,\n isDouble: false,\n hasError: false,\n errorMessage: '',\n },\n};\n\nexport default initialState;\n","/* eslint-disable complexity */\nimport deepClone from 'lodash/cloneDeep';\nimport forEach from 'lodash/forEach';\n\nimport * as actions from '~/src/features/tariffBuilder/actions';\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { IDecoderEntity } from '~/src/features/tariffBuilder/types/entity';\nimport { InferValueTypes } from '~/src/store';\n\nimport initialState, { TBaseSubscription, TInitialState, TRouter } from './initialState';\n\nexport type TAction = ReturnType>\n\nconst reducer = (state: TInitialState = initialState, action: TAction) => {\n switch (action.type) {\n case EAction.Initialization:\n return {\n ...state,\n initialized: false,\n limitations: {\n [EEntity.routers]: action.payload.routerLimits,\n [EEntity.decoders]: action.payload.decoderLimits,\n },\n };\n case EAction.Initialized:\n return {\n ...state,\n initialized: true,\n loading: false,\n\n // @ts-ignore\n ...action.payload,\n };\n case EAction.Loading: {\n return {\n ...state,\n loading: action.payload.state,\n };\n }\n case EAction.SetStep: {\n return {\n ...state,\n currentStep: action.payload.stepId,\n maximumTakenStep: action.payload.stepId > state.maximumTakenStep\n ? action.payload.stepId\n : state.maximumTakenStep,\n };\n }\n case EAction.SelectSpeed: {\n return {\n ...state,\n selectedSpeed: action.payload.id,\n };\n }\n case EAction.SetCurrentTariff: {\n return {\n ...state,\n currentTariff: {\n ...action.payload.state,\n /**\n * Сalculate method of the api-tariff answers with a 403 status code, when sending a speed that is a multiple of 50.\n * To fix this, round the speed to the nearest whole number\n */\n speed: action.payload.state?.speed,\n },\n };\n }\n case EAction.SetChangePlanWebcabData: {\n return {\n ...state,\n changePlanWebcabData: action.payload,\n };\n }\n case EAction.SetRequestId: {\n return {\n ...state,\n requestId: action.payload.requestId,\n };\n }\n case EAction.AddEntity: {\n const { entity: entityName, key, period } = action.payload;\n\n const newEntityState = deepClone(state[entityName][key]);\n newEntityState.quantity = 1;\n\n if (period) {\n newEntityState.selectedCost = period;\n }\n\n const selectedEntityType =\n ([EEntity.onlineCinemas, EEntity.antivirus, EEntity.additional, EEntity.security].includes(entityName))\n ? EEntity.services\n : entityName as EEntity.decoders | EEntity.routers;\n\n return {\n ...state,\n [entityName]: {\n ...state[entityName],\n [key]: {\n ...state[entityName][key],\n ...newEntityState,\n },\n },\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [selectedEntityType]: [\n ...state.selectedEntityIds[selectedEntityType],\n state[entityName][key].id,\n ],\n },\n };\n }\n case EAction.AddTvEntity: {\n const { entity: entityName, key, group } = action.payload;\n\n const newStateForTv = deepClone(state[EEntity.tv]);\n newStateForTv[group].items[key].quantity = 1;\n\n return {\n ...state,\n [entityName]: newStateForTv,\n selectedEntityIds: {\n ...state.selectedEntityIds,\n ['services']: [\n ...state.selectedEntityIds['services'],\n state[EEntity.tv][group].items[key].id,\n ],\n },\n };\n }\n case EAction.IncrementEntity: {\n const { entity: entityName, key } = action.payload;\n\n return {\n ...state,\n [entityName]: {\n ...state[entityName],\n [key]: {\n ...state[entityName][key],\n quantity: state[entityName][key].quantity + 1,\n },\n },\n };\n }\n case EAction.DecrementEntity: {\n const { entity: entityName, key } = action.payload;\n\n const newEntityState = deepClone(state[entityName][key]);\n const selectedEntityType =\n ([EEntity.onlineCinemas, EEntity.antivirus, EEntity.additional, EEntity.security].includes(entityName))\n ? EEntity.services\n : entityName;\n let selectedEntities = [...state.selectedEntityIds[selectedEntityType]];\n newEntityState.quantity -= 1;\n\n if (newEntityState.quantity === 0) {\n if (state.limitations?.[entityName] && !state.limitations[entityName].installment) {\n newEntityState.selectedCost = Math.max(...Object.keys(newEntityState.costs).map(Number));\n }\n selectedEntities = selectedEntities.filter(eid => eid !== newEntityState.id);\n }\n\n return {\n ...state,\n [entityName]: {\n ...state[entityName],\n [key]: {\n ...state[entityName][key],\n ...newEntityState,\n },\n },\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [selectedEntityType]: selectedEntities,\n },\n };\n }\n case EAction.RemoveEntity: {\n const { entity: entityName, key } = action.payload;\n const selectedEntityType =\n ([EEntity.onlineCinemas, EEntity.antivirus, EEntity.additional, EEntity.security].includes(entityName))\n ? EEntity.services\n : entityName as EEntity.decoders | EEntity.routers;\n const selectedEntities = [...state.selectedEntityIds[selectedEntityType]].filter(eid => eid !== state[entityName][key].id);\n return {\n ...state,\n [entityName]: {\n ...state[entityName],\n [key]: {\n ...state[entityName][key],\n quantity: 0,\n },\n },\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [selectedEntityType]: selectedEntities,\n },\n };\n }\n case EAction.RemoveTvEntity: {\n const { entity: entityName, key, group } = action.payload;\n\n const selectedEntities = [...state.selectedEntityIds[EEntity.services]].filter(eid => eid !== state[EEntity.tv][group].items[key].id);\n\n const newStateForTv = deepClone(state[EEntity.tv]);\n newStateForTv[group].items[key].quantity = 0;\n\n return {\n ...state,\n [entityName]: newStateForTv,\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [EEntity.services]: selectedEntities,\n },\n };\n }\n case EAction.RemoveAllTvEntities: {\n const newStateForTv = deepClone(state[EEntity.tv]);\n const idsToDelete: number[] = [];\n forEach(newStateForTv, (entity) => {\n forEach(entity.items, (item) => {\n item.quantity = 0;\n idsToDelete.push(item.id);\n });\n });\n const selectedEntities = [...state.selectedEntityIds['services']].filter(eid => !idsToDelete.includes(eid));\n\n return {\n ...state,\n [EEntity.tv]: newStateForTv,\n selectedEntityIds: {\n ...state.selectedEntityIds,\n ['services']: selectedEntities,\n },\n };\n }\n case EAction.ChangeCost: {\n const { entity: entityName, key, period } = action.payload;\n\n const newEntityState = deepClone(state[entityName][key]);\n\n if (period) {\n newEntityState.selectedCost = period;\n }\n\n return {\n ...state,\n [entityName]: {\n ...state[entityName],\n [key]: {\n ...state[entityName][key],\n ...newEntityState,\n },\n },\n };\n }\n case EAction.SetClientName: {\n return {\n ...state,\n client: { ...state.client, name: action.payload.clientName },\n };\n }\n case EAction.SetClientPhone: {\n return {\n ...state,\n client: { ...state.client, phone: action.payload.clientPhone },\n };\n }\n case EAction.SetClientContactPhone: {\n return {\n ...state,\n client: { ...state.client, contactPhone: action.payload.contactPhone },\n };\n }\n case EAction.SetSpeedRestrictions: {\n return {\n ...state,\n selectedSpeed: 0,\n speedRestrictions: action.payload.restrictions,\n };\n }\n case EAction.toggleHasSmartTv: {\n return {\n ...state,\n hasSmartTv: !state.hasSmartTv,\n };\n }\n case EAction.flushDecoders: {\n const decoders = deepClone(state[EEntity.decoders]);\n\n for (const idx in decoders) {\n const decoder = decoders[idx];\n if (decoder.quantity > 0) {\n decoder.quantity = 0;\n decoder.selectedCost = Math.max(...Object.keys(decoder.costs).map(Number));\n }\n }\n\n return {\n ...state,\n hasSmartTv: false,\n [EEntity.decoders]: decoders,\n selectedEntityIds: {\n ...state.selectedEntityIds,\n [EEntity.decoders]: [],\n },\n };\n }\n case EAction.SetSelectedTimeSlot: {\n return {\n ...state,\n selectedTimeSlot: action.payload.timeSlot,\n };\n }\n case EAction.SetAgreementData: {\n return {\n ...state,\n agreement: { ...state.agreement, ...action.payload },\n };\n }\n case EAction.SetReplanIsError: {\n return {\n ...state,\n replanIsError: action.payload.isError,\n };\n }\n case EAction.Finalization:\n default:\n return { ...state };\n }\n};\n\nexport default reducer;\n","import { createContext, ReactNode } from 'react';\nimport useThunkReducer, { ThunkDispatch } from 'react-hook-thunk-reducer';\nimport uniqueId from 'lodash/uniqueId';\n\nimport { TUseToaster, useToaster } from '@r1-frontend/ui-react/experimental/Toaster';\n\nimport { initialState, reducer, TAction, TInitialState } from './reducer';\n\nexport type TCtxDispatch = ThunkDispatch\n\nexport type TCtx = {\n state: TInitialState,\n dispatch: TCtxDispatch,\n debugMode?: boolean,\n toaster: TUseToaster,\n}\n\nexport const Ctx = createContext({\n state: initialState,\n dispatch: () => null,\n debugMode: false,\n toaster: {\n getId: () => uniqueId(),\n add: () => true,\n remove: () => true,\n clear: () => true,\n toasts: [],\n },\n});\n\nconst Context = ({ children, debugMode = false }: { children: ReactNode, debugMode?: boolean }): JSX.Element => {\n const [state, dispatch] = useThunkReducer(reducer, initialState);\n const toaster = useToaster();\n\n debugMode && console.log(\n state,\n );\n return \n {children}\n ;\n};\n\nexport default Context;\n","import { useContext } from 'react';\n\nimport { recalculate } from '~/src/features/tariffBuilder/actions/thunk';\nimport { EAction } from '~/src/features/tariffBuilder/constants/actions';\nimport { Ctx, TCtxDispatch } from '~/src/features/tariffBuilder/Ctx';\nimport { TAction } from '~/src/features/tariffBuilder/reducer';\n\nconst forRecalculate = [\n EAction.SelectSpeed,\n EAction.AddEntity,\n EAction.AddTvEntity,\n EAction.IncrementEntity,\n EAction.DecrementEntity,\n EAction.RemoveEntity,\n EAction.RemoveTvEntity,\n EAction.RemoveAllTvEntities,\n EAction.SetSpeedRestrictions,\n];\n\nconst useCtxDispatch = (): TCtxDispatch => {\n const { dispatch, debugMode, toaster } = useContext(Ctx);\n\n return (action: TAction) => {\n debugMode && console.table(action);\n dispatch(action);\n\n if (forRecalculate.includes(action.type)) {\n dispatch(recalculate(toaster));\n }\n };\n};\n\n\nexport default useCtxDispatch;\n","import { useContext } from 'react';\n\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst useCtxSelector = (selector: (state: TInitialState) => T) => {\n const { state } = useContext(Ctx);\n\n return selector(state);\n};\n\nexport default useCtxSelector;\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport InteractiveLoader from '~/src/components/InteractiveLoader';\nimport { useStorageAddress } from '~/src/features/full-buy/ContactAddress/useStorageAddress';\nimport { initializationAgreement } from '~/src/features/tariffBuilder/actions/thunk';\nimport { useCtxDispatch } from '~/src/features/tariffBuilder/hooks';\nimport { TState } from '~/src/store';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\nconst agreementCreationStatuses = [\n 'Создаем заявку...',\n 'Проверяем данные...',\n 'Добавляем заявку в базу...',\n 'Защищаем ваши данные...',\n 'Передаем информацию...',\n 'Боремся с бюрократией...',\n 'Ищем свободного инженера...',\n 'Проверяем доступные дату и время...',\n 'Ещё немного формальностей...',\n];\n\nconst CreateAgreementContainer = (): JSX.Element => {\n const dispatch = useCtxDispatch();\n\n const { address, providerId, domain, csrf } = useSelector((state:TState) => ({\n address: state.contactAddress.verifiedAddressData,\n providerId: state.city.provider.providerId,\n domain: state.city.currentCity.domain,\n csrf: selectCsrf(state),\n }));\n\n useStorageAddress();\n\n useEffect(() => {\n dispatch(initializationAgreement(providerId, domain, address, csrf));\n }, [providerId, domain, address]);\n\n return (\n \n );\n};\n\nexport default CreateAgreementContainer;\n","import Section from '~/src/features/tariffBuilder/components/Section';\nimport CreateAgreementContainer from '~/src/features/tariffBuilder/containers/CreateAgreementContainer';\n\nconst CreateAgreement = (): JSX.Element => {\n return (\n
\n \n
\n );\n};\n\nexport default CreateAgreement;\n","import { useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport ListItemWithIcon from '@r1-frontend/ui-react/components/List/WithIcon';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport { Forward, VideoAdd, VideoVertical, VoiceSquare } from '@r1-frontend/ui-react/components/svg/media';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nconst MovixIs = (): JSX.Element => {\n const [isOpen, changePopupState] = useState(false);\n\n const handleClosePopup = () => {\n changePopupState(false);\n };\n\n const handleOpenPopup = () => {\n changePopupState(true);\n };\n\n return (\n <>\n Все преимущества приставки\n\n \n \n \n \n

ТВ приставка Movix — это:

\n\n \n Доступ к магазину с тысячами приложений и игр\n До 195 телеканалов, перемотка и запись телепередач\n Все подписки, объединенные в одном личном кабинете\n Голосовой поиск и родительский контроль\n \n
\n\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default MovixIs;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst selectCurrentTariff = (state: TInitialState) => state.currentTariff;\n\nexport default selectCurrentTariff;\n","import { ConstructorAnalytics, constructorAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { constructorCurrentTariffAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\n\nexport const useConstructorAnalytics = (): ConstructorAnalytics => {\n const currentTariff = useCtxSelector(state => selectCurrentTariff(state));\n\n if (currentTariff) {\n return constructorCurrentTariffAnalytics;\n }\n return constructorAnalytics;\n};\n","import { useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst AboutSmartTv = (): JSX.Element => {\n const [isOpen, changePopupState] = useState(false);\n\n const handleClosePopup = () => {\n changePopupState(false);\n };\n\n const handleOpenPopup = () => {\n changePopupState(true);\n };\n\n return (\n <>\n Smart TV\n\n \n \n \n

Про Smart TV

\n \n Телевизор со Smart TV — это как большой планшет. На него можно устанавливать приложения, выходить\n в интернет, смотреть видео и т. д.\n \n \n Если телевизор со Smart TV, то на пульте дистанционного управления должна быть кнопка вызова этой\n функции. На этой кнопке обычно нанесена иконка в виде домика, или\n надпись «Smart» или «Smart TV».\n \n
\n\n \n \n \n
\n
\n \n );\n};\n\nexport default AboutSmartTv;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const CheckSmartTvContainer = styled.div`\n background-color: ${COLORS.BgSurface};\n padding: 24px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n`;\n\nexport const ContentWrapper = styled(FullWidthListContainer)`\n justify-content: space-between;\n align-items: flex-start;\n flex-wrap: nowrap;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n }\n`;\n\nexport const ControlWrapper = styled.div`\n flex-wrap: nowrap;\n gap: 8px;\n white-space: nowrap;\n ${FONTS.MediumS};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n justify-content: space-between;\n }\n`;\n","import BaseSwitcher from '@r1-frontend/ui-react/components/controls/baseSwitcher';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { toggleHasSmartTv } from '~/src/features/tariffBuilder/actions';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport AboutSmartTv from '~/src/features/tariffBuilder/components/popups/AboutSmartTv';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\n\nimport * as ST from './styled';\n\nconst CheckSmartTvContainer = (): JSX.Element => {\n\n const dispatch = useCtxDispatch();\n\n const hasSmartTv = useCtxSelector(state => state.hasSmartTv);\n\n const analytics = useConstructorAnalytics();\n\n const onChangeHandler = () => {\n dispatch(toggleHasSmartTv());\n if (!hasSmartTv) {\n analytics.clickedHaveSmartTvCheckBox();\n }\n };\n\n return (\n \n \n \n Если у вас , можно отказаться от приставки, тариф будет дешевле.\n \n \n У меня есть Smart TV\n \n \n \n \n );\n};\n\nexport default CheckSmartTvContainer;\n","import styled from 'styled-components';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\n/**\n * maxRows - количество отображаемых строк, если не передано - не обрезаются.\n */\nexport const Text = styled(Paragraph4)<{ maxRows?: number }>`\n width: 100%;\n color: ${COLORS.TextHint};\n ${p => p.maxRows ? textOverflowLineClamp(p.maxRows) : ''};\n`;\n","import React from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n description: string,\n rowCount?: number,\n}\n\nconst EquipmentDescription = ({\n description = '',\n rowCount = 4,\n} : IProps): JSX.Element => {\n return (\n \n );\n};\n\nexport default React.memo(EquipmentDescription);\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const ImageDisplay = styled.div`\n justify-content: center;\n width: 100%;\n height: 240px;\n \n img {\n height: 100%;\n width: 100%;\n object-fit: contain;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 150px;\n margin: 0 auto;\n }\n`;\n\nexport const ImageItem = styled.div<{ isSelected: boolean }>`\n justify-content: center;\n width: 54px;\n height: 54px;\n border-radius: ${BorderRadius.labelRadius};\n overflow: hidden;\n cursor: pointer;\n ${({ isSelected }) => isSelected ? `border: 2px solid ${COLORS.ButtonAccent};` : ''}\n\n img {\n height: 100%;\n }\n`;\n\n","import React, { useState } from 'react';\n\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport * as ST from './styled';\n\nexport interface IEquipPreview {\n images?: string[],\n}\n\nconst EquipmentImages = ({\n images = [],\n} : IEquipPreview): JSX.Element | null => {\n const imagesCount = images?.length || 0;\n const [selectedImageIdx, setSelectedImageIdx] = useState(0);\n\n if (!imagesCount) {\n return null;\n }\n\n return (\n \n \n Продукт\n \n {imagesCount > 1 &&\n \n {images.map((image, idx) => (\n setSelectedImageIdx(idx)}\n isSelected={selectedImageIdx === idx}\n >\n {`Картинка\n \n ))}\n \n }\n \n );\n};\n\nexport default React.memo(EquipmentImages);\n","import CustomScrollbar from '@r1-frontend/ui-react/components/CustomScrollbar';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { FullWidthListContainer, IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { TListSize } from '@r1-frontend/ui-react/experimental/containers/ListContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\ninterface IPopupState {\n isOpen: boolean,\n children: React.ReactNode,\n dPadding?: string,\n mPadding?: string,\n onClose: () => void,\n}\n\nconst popupIndent = 64;\nconst desktopIndent = 32;\nconst mobileIndent = 24;\nconst scrollIndent = 12;\nconst desktopHeaderHeight = 56;\nconst mobileHeaderHeight = 44;\nconst popupHeight = `calc(100vh - ${popupIndent}px)`;\nconst desktopHeight = `calc(100vh - ${popupIndent + 2 * desktopIndent + desktopHeaderHeight }px)`;\nconst mobileHeight = `calc(100vh - ${popupIndent + 2 * mobileIndent + mobileHeaderHeight }px)`;\n\n/**\n * Базовый попап подстроенный под кастомный скролл\n */\nexport const BasePopupWithScroll = ({\n isOpen,\n onClose,\n children,\n}: IPopupState): JSX.Element => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n return (\n \n \n {children}\n \n \n );\n};\n\ninterface IProps {\n children: JSX.Element | JSX.Element[],\n $desktop?: TListSize,\n $mobile?: TListSize,\n}\n\n/**\n * Компонент скрола\n */\nexport const TheScrollbar = ({ children, $desktop = 24, $mobile = 24 }: IProps) => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n return \n \n {children}\n \n ;\n};\n","import React from 'react';\n\nimport BaseErrorToast from './BaseErrorToast';\n\ntype TMaximumTotalLimitProps = {\n equipmentName: string,\n}\n\nconst MaximumTotalLimit = ({ equipmentName, ...props }: TMaximumTotalLimitProps) => \n <>\n Вы достигли лимита по количеству {equipmentName} в заявке. Удалите что-нибудь, чтобы добавить новый.\n \n;\n\nexport default MaximumTotalLimit;\n","import reduce from 'lodash/reduce';\n\nimport isLimitationsReached from '~/src/features/tariffBuilder/selectors/isLimitationsReached';\nimport { TCost } from '~/src/features/tariffBuilder/types/entity';\n\nimport { TInitialState } from '../reducer';\nimport { EEntity } from '../types/EEntity';\n\n/**\n * Get purchase option list (cost variations) by the entity name (EEntity) and the entity ID\n * @param entityName\n * @param id\n */\nconst getEntityPurchaseOptions = (\n entityName: Extract,\n id: number,\n) => (state: TInitialState) => {\n const entity = state[entityName][id];\n const limitations = isLimitationsReached(entityName)(state);\n\n return reduce(entity.costs, (result: Record, value, key) => {\n result[Number(key)] = value;\n\n // purchase do not need to disabled\n if (value.period === 1) {\n return result;\n }\n\n // if limits reached by an installment purchase and a selected cost of current entity is purchase we should disable installment options\n result[Number(key)].disabled = limitations.installment && entity.quantity === 0;\n\n return result;\n }, {});\n};\n\nexport default getEntityPurchaseOptions;\n","import PurchaseOptions from '@r1-frontend/ui-react/components/costs/PurchaseOptions';\nimport { TPeriod } from '@r1-frontend/ui-react/components/costs/PurchaseOptions/types';\n\nimport { useCtxSelector } from '../hooks';\nimport getEntityPurchaseOptions from '../selectors/getEntityPurchaseOptions';\nimport { EEntity } from '../types/EEntity';\n\ntype TPurchaseOptionsContainerProps = {\n entityName: Extract,\n id: number,\n onSelect: (cost: number, period: TPeriod) => void,\n};\n\nconst PurchaseOptionsContainer = ({ entityName, id, onSelect }: TPurchaseOptionsContainerProps): JSX.Element => {\n const options = useCtxSelector(getEntityPurchaseOptions(entityName, id));\n\n return ;\n};\n\nexport default PurchaseOptionsContainer;\n","import React, { useContext, useEffect, useState } from 'react';\n\nimport { TPeriod } from '@r1-frontend/ui-react/components/costs/PurchaseOptions/types';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport TVSetTopSelectable from '@r1-frontend/ui-react/organisms/Card/TVSetTopSelectable';\n\nimport addEntity from '~/src/features/tariffBuilder/actions/addEntity';\nimport decrementEntity from '~/src/features/tariffBuilder/actions/decrementEntity';\nimport incrementEntity from '~/src/features/tariffBuilder/actions/incrementEntity';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport EquipmentDescription from '~/src/features/tariffBuilder/components/EquipmentDescription';\nimport EquipmentImages from '~/src/features/tariffBuilder/components/EquipmentImages';\nimport { BasePopupWithScroll, TheScrollbar } from '~/src/features/tariffBuilder/components/popups/BasePopupWithScroll';\nimport MaximumTotalLimit from '~/src/features/tariffBuilder/components/toast/MaximumTotalLimit';\nimport PurchaseOptionsContainer from '~/src/features/tariffBuilder/containers/PurchaseOptionsContainer';\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { getDecoderById } from '~/src/features/tariffBuilder/selectors/getDecoderById';\nimport getDecoders from '~/src/features/tariffBuilder/selectors/getDecoders';\nimport isLimitationsReached from '~/src/features/tariffBuilder/selectors/isLimitationsReached';\nimport isSelectedDecoderInCurrentTariff from '~/src/features/tariffBuilder/selectors/isSelectedDecoderInCurrentTariff';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\n// @todo merge with same others Routers|Decoders|Entities|TvSubscriptions(Container)\ntype TOwnState = {\n selectedId: undefined,\n isPopupOpen: false,\n} | {\n selectedId: number,\n isPopupOpen: true,\n}\n\nconst DecodersContainer = (): JSX.Element => {\n const [{ selectedId, isPopupOpen }, setState] = useState({\n selectedId: undefined,\n isPopupOpen: false,\n });\n\n const { decoders, limitations, selectedDecoder, hasDecoderInCurrentTariff } = useCtxSelector(state => ({\n decoders: getDecoders(state),\n limitations: isLimitationsReached(EEntity.decoders)(state),\n selectedDecoder: getDecoderById(selectedId)(state),\n // TODO - когда биллинг будет готов принимать массив, удалить.\n hasDecoderInCurrentTariff: isSelectedDecoderInCurrentTariff(state),\n }));\n\n const dispatch = useCtxDispatch();\n const { toaster } = useContext(Ctx);\n\n const analytics = useConstructorAnalytics();\n\n useEffect(() => {\n if (limitations.total) {\n toaster.add();\n }\n }, [limitations.total]);\n\n const handleAdd = (key: number) => () => {\n const currentDecoder = decoders.find(el => el.key === key);\n\n setState(prev => ({ ...prev, selectedId: key, isPopupOpen: true }));\n analytics.clickedAddProduct({ type: 'decoder', title: `${currentDecoder?.title}` });\n };\n const handleIncrement = (key: number) => () => {\n dispatch(incrementEntity({\n entity: EEntity.decoders,\n key,\n }));\n };\n const handleDecrement = (key: number) => () => {\n dispatch(decrementEntity({\n entity: EEntity.decoders,\n key,\n }));\n };\n\n const handleClosePopup = () => {\n setState(prev => ({ ...prev, selectedId: undefined, isPopupOpen: false }));\n };\n\n const handleSelectPurchaseOption = (key: number) => (cost: number, period: TPeriod) => {\n const currentDecoder = decoders.find(el => el.key === key);\n dispatch(addEntity({\n entity: EEntity.decoders,\n key,\n period,\n cost,\n title: currentDecoder?.title,\n },\n analytics));\n handleClosePopup();\n };\n\n return (\n <>\n \n {decoders.map(({ key, id, displayedCost, ...decoder }) => 1 && limitations.installment))}\n />)}\n \n\n {(isPopupOpen && selectedId && selectedDecoder) && (\n \n

{selectedDecoder.title}

\n\n \n \n \n \n \n \n )}\n \n );\n};\n\nexport default DecodersContainer;\n","import { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nimport { TInitialState } from '../reducer';\n\n/**\n * Get decoder entity by id\n * @param id\n */\nexport const getDecoderById = (\n id: number | undefined,\n) => (state: TInitialState) => {\n if (id) {\n return state[EEntity.decoders][id];\n }\n\n return undefined;\n};\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport MovixIs from '~/src/features/tariffBuilder/components/popups/MovixIs';\nimport CheckSmartTvContainer from '~/src/features/tariffBuilder/containers/CheckSmartTvContainer';\nimport DecodersContainer from '~/src/features/tariffBuilder/containers/DecodersContainer';\n\nconst DecodersBlock = (): JSX.Element => {\n return (\n \n \n

Выберите модель ТВ приставки

\n Приставка нужна, чтобы смотреть ТВ-каналы и подписки. \n
\n\n \n\n \n
\n );\n};\n\nexport default DecodersBlock;\n","import { useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst IsMyRouterFits = (): JSX.Element => {\n const [isOpen, changePopupState] = useState(false);\n\n const handleClosePopup = () => {\n changePopupState(false);\n };\n\n const handleOpenPopup = () => {\n changePopupState(true);\n };\n\n return (\n <>\n Подходит ли мне мой роутер?\n\n \n \n \n

Подходит ли мой роутер?

\n \n
  • 1. Устройство должно работать в двух диапазонах — 2,4 и 5 ГГц.
  • \n
  • 2. Поддерживать стандарт Wi-Fi 5 или новее.
  • \n
  • 3. Иметь порты WAN и LAN с пропускной способностью 1 Гбит/c.
  • \n
    \n
    \n\n \n \n \n
    \n
    \n \n );\n};\n\nexport default IsMyRouterFits;\n","import React from 'react';\n\nimport Characteristics from '@r1-frontend/ui-react/components/List/Characteristics';\nimport { TCharacteristicsProps } from '@r1-frontend/ui-react/components/List/Characteristics/Characteristics';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { usePartialList } from '@r1-frontend/shared/hooks/usePartialList';\n\ninterface IProps {\n characteristics: TCharacteristicsProps[],\n rowCount?: number,\n}\n\nconst EquipmentCharacteristics = ({\n characteristics = [],\n rowCount = 3,\n} : IProps): JSX.Element | null => {\n const [partialCharacteristics, isPartial, setIsPartial] = usePartialList(characteristics, rowCount);\n\n if (!characteristics.length) {\n return null;\n }\n\n return (\n \n {partialCharacteristics.map((item) => {\n return (\n \n );\n })}\n\n {(characteristics.length > rowCount) &&\n setIsPartial(!isPartial)}\n >\n {isPartial ? 'Показать больше' : 'Скрыть'}\n \n }\n \n );\n};\n\nexport default React.memo(EquipmentCharacteristics);\n","import map from 'lodash/map';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport isLimitationsReached from '~/src/features/tariffBuilder/selectors/isLimitationsReached';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getRouters = (state: TInitialState) => {\n const routers = state[EEntity.routers];\n\n const limitations = isLimitationsReached(EEntity.routers)(state);\n\n return map(\n routers,\n ({ costs, selectedCost, quantity, ...router }, key) => {\n const displayedCost = limitations.installment && quantity === 0 ? 1 : selectedCost;\n return ({\n ...router,\n ...costs[displayedCost],\n quantity,\n isSelected: quantity > 0,\n displayedCost,\n\n key: Number(key),\n });\n },\n );\n};\n\nexport default getRouters;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport getRouters from '~/src/features/tariffBuilder/selectors/getRouters';\n\nconst isSelectedRouterInCurrentTariff = (state: TInitialState) => {\n if (state.currentTariff) {\n return getRouters(state).some(el => el.isSelected);\n }\n return false;\n};\n\nexport default isSelectedRouterInCurrentTariff;\n","import React, { useContext, useEffect, useState } from 'react';\n\nimport { TPeriod } from '@r1-frontend/ui-react/components/costs/PurchaseOptions/types';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport RouterCard from '@r1-frontend/ui-react/organisms/Card/Router';\n\nimport addEntity from '~/src/features/tariffBuilder/actions/addEntity';\nimport decrementEntity from '~/src/features/tariffBuilder/actions/decrementEntity';\nimport incrementEntity from '~/src/features/tariffBuilder/actions/incrementEntity';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport EquipmentCharacteristics from '~/src/features/tariffBuilder/components/EquipmentCharacteristics';\nimport EquipmentImages from '~/src/features/tariffBuilder/components/EquipmentImages';\nimport { BasePopupWithScroll, TheScrollbar } from '~/src/features/tariffBuilder/components/popups/BasePopupWithScroll';\nimport MaximumTotalLimit from '~/src/features/tariffBuilder/components/toast/MaximumTotalLimit';\nimport PurchaseOptionsContainer from '~/src/features/tariffBuilder/containers/PurchaseOptionsContainer';\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { getRouterById } from '~/src/features/tariffBuilder/selectors/getRouterById';\nimport getRouters from '~/src/features/tariffBuilder/selectors/getRouters';\nimport isLimitationsReached from '~/src/features/tariffBuilder/selectors/isLimitationsReached';\nimport isSelectedRouterInCurrentTariff from '~/src/features/tariffBuilder/selectors/isSelectedRouterInCurrentTariff';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\n// @todo merge with same others Routers|Decoders|Entities|TvSubscriptions(Container)\ntype TOwnState = {\n selectedId: undefined,\n isPopupOpen: false,\n} | {\n selectedId: number,\n isPopupOpen: true,\n}\n\nconst RoutersContainer = (): JSX.Element => {\n\n const [{ selectedId, isPopupOpen }, setState] = useState({\n selectedId: undefined,\n isPopupOpen: false,\n });\n\n const { limitations, routers, hasRouterInCurrentTariff } = useCtxSelector(state => ({\n limitations: isLimitationsReached(EEntity.routers)(state),\n routers: getRouters(state),\n // TODO - когда биллинг будет готов принимать массив, удалить.\n hasRouterInCurrentTariff: isSelectedRouterInCurrentTariff(state),\n }));\n const selectedRouter = useCtxSelector(getRouterById(selectedId));\n const dispatch = useCtxDispatch();\n const { toaster } = useContext(Ctx);\n\n const analytics = useConstructorAnalytics();\n\n useEffect(() => {\n if (limitations.total) {\n toaster.add();\n }\n }, [limitations.total]);\n\n const handleAdd = (key: number) => () => {\n const currentRouter = routers.find(el => el.key === key);\n\n setState(prev => ({ ...prev, selectedId: key, isPopupOpen: true }));\n analytics.clickedAddProduct({ type: 'router', title: `${currentRouter?.title}` });\n };\n\n const handleIncrement = (key: number) => () => {\n dispatch(incrementEntity({\n entity: EEntity.routers,\n key,\n }));\n };\n const handleDecrement = (key: number) => () => {\n dispatch(decrementEntity({\n entity: EEntity.routers,\n key,\n }));\n };\n\n const handleClosePopup = () => {\n setState(prev => ({ ...prev, selectedId: undefined, isPopupOpen: false }));\n };\n\n const handleSelectPurchaseOption = (key: number) => (cost: number, period: TPeriod) => {\n const currentRouter = routers.find(el => el.key === key);\n dispatch(addEntity({\n entity: EEntity.routers,\n key,\n period,\n cost,\n title: `${currentRouter?.title}`,\n },\n analytics));\n handleClosePopup();\n };\n\n return (\n <>\n \n {routers.map(({ key, ...router }) => 1 && limitations.installment))}\n />)}\n \n\n {(isPopupOpen && selectedId && selectedRouter) &&\n \n

    {selectedRouter.title}

    \n\n \n \n \n \n \n \n }\n \n );\n};\n\nexport default RoutersContainer;\n","import { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nimport { TInitialState } from '../reducer';\n\n/**\n * Get router entity by id\n * @param id\n */\nexport const getRouterById = (\n id: number | undefined,\n) => (state: TInitialState) => {\n if (id) {\n return state[EEntity.routers][id];\n }\n\n return undefined;\n};\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport IsMyRouterFits from '../components/popups/IsMyRouterFits';\nimport RoutersContainer from '../containers/RoutersContainer';\n\ntype TRoutersBlockProps = {\n speed: string | number,\n};\n\nconst RoutersBlock = ({ speed }: TRoutersBlockProps): JSX.Element => {\n return (\n <>\n \n

    Роутеры, которые поддерживают скорость {speed} мбит/с

    \n \n А еще обеспечивают стабильный сигнал даже в очень просторных квартирах... \n \n \n
    \n\n \n \n );\n};\n\nexport default RoutersBlock;\n","import React from 'react';\n\nimport { NBHYPHEN } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport BaseErrorToast from './BaseErrorToast';\n\nconst MovixNotSelected = ({ ...props }) => \n <>\n Вы не выбрали ТВ{NBHYPHEN}приставку Movix. Приставка нужна, чтобы смотреть ТВ{NBHYPHEN}каналы и подписки, если у вас нет Smart TV.\n \n;\n\nexport default MovixNotSelected;\n","import { useContext } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\n\nimport { setStep } from '~/src/features/tariffBuilder/actions';\nimport { constructorAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { constructorCurrentTariffAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport DecodersBlock from '~/src/features/tariffBuilder/components/DecodersBlock';\nimport RoutersBlock from '~/src/features/tariffBuilder/components/RoutersBlock';\nimport Section from '~/src/features/tariffBuilder/components/Section';\nimport MovixNotSelected from '~/src/features/tariffBuilder/components/toast/MovixNotSelected';\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getDecoders from '~/src/features/tariffBuilder/selectors/getDecoders';\nimport isBaseTvSelected from '~/src/features/tariffBuilder/selectors/isBaseTvSelected';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TCurrentTariff } from '~/src/features/tariffBuilder/types/TCurrentTariff';\n\nconst getActionBtnText = (currentTariff?: TCurrentTariff): string => {\n if (!currentTariff) {\n return 'Перейти к оформлению';\n }\n return 'Перейти к оформлению тарифа';\n};\n\nconst Equipment = (): JSX.Element => {\n const dispatch = useCtxDispatch();\n\n const { hasSmartTv, hasDecoder, isTvSelected, speed, currentTariff } = useCtxSelector(state => {\n return {\n hasSmartTv: state.hasSmartTv,\n hasDecoder: getDecoders(state).some(el => el.isSelected),\n isTvSelected: isBaseTvSelected(state),\n speed: state[EEntity.speed][state.selectedSpeed].speed,\n currentTariff: selectCurrentTariff(state),\n };\n });\n const { toaster } = useContext(Ctx);\n\n const handleButtonClick = () => {\n if (isTvSelected && !(hasSmartTv || hasDecoder)) {\n toaster.add();\n return;\n }\n\n if (currentTariff) {\n dispatch(setStep(ESteps.FillContacts));\n constructorCurrentTariffAnalytics.clickedMoveToChangeTariff();\n\n } else {\n constructorAnalytics.clickedMoveToFullbuyForm();\n dispatch(setStep(ESteps.FillAddress));\n }\n };\n\n return (\n <>\n
    \n \n
    \n\n {isTvSelected && (\n
    \n \n
    \n )}\n \n \n {getActionBtnText(currentTariff)}\n \n \n \n );\n};\n\nexport default Equipment;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const EditableContactsForm = styled.div`\n position: relative;\n flex-direction: column;\n align-items: flex-start;\n row-gap: 12px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n align-items: stretch;\n }\n`;\n\nexport const BlockWrap = styled.div`\n display: grid;\n flex-wrap: nowrap;\n align-items: flex-start;\n grid-template-columns: 524px min-content;\n column-gap: 12px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: 1fr;\n row-gap: 24px;\n } \n`;\n\n","import { memo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { selectAddressParamsMemoize } from '@r1-frontend/entities/ContactAddress/selectors/selectAddressParams';\n\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult'; // TODO заменить на объединение строк\nimport { useResultPopup } from '@r1-frontend/ui-react/components/popups/useResultPopup';\n\nimport { PersonForm } from '~/src/components/PersonForm';\nimport {\n isGigabitCanConnected,\n isGigaSpeedRequired,\n isTariffCanConnected,\n submitRequest,\n} from '~/src/features/full-buy/functions';\nimport { selectCurrentTariff } from '~/src/features/full-buy/store/selectors/selectCurrentTariff';\nimport { TState } from '~/src/store';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\nimport * as ST from './styled';\n\n/**\n * Форма для отправки заявки на подключение\n */\nconst RequestForm = (): JSX.Element => {\n const router = useRouter();\n const csrf = useSelector(selectCsrf);\n const onClickClose = () => router.push('/');\n const [PopupResult, showResult] = useResultPopup(onClickClose);\n const [fio, setFio] = useState('');\n const [phone, setPhone] = useState('');\n\n const {\n tariffPackage,\n products,\n unifiedSelectedAddress,\n } = useSelector((state: TState) => ({\n tariffPackage: selectCurrentTariff(state),\n products: state.fullBuy.products, // TODO требуется адаптация формы для Конструктора!\n unifiedSelectedAddress: state.fullBuy.selectedAddress,\n }));\n\n const { isMono, speed, sale_package_id, tariff_name, additionalProducts } = tariffPackage || {};\n\n const { addressParams, isHouseConnected, gigabitAvail } = useSelector((state: TState) => ({\n addressParams: selectAddressParamsMemoize(state),\n isHouseConnected: state.contactAddress.verifiedAddressData.isHouseConnected,\n gigabitAvail: state.contactAddress.verifiedAddressData.gigabitAvail,\n }));\n\n const gigabitMayConnect = isGigabitCanConnected(gigabitAvail);\n const requiredGigaSpeed = isGigaSpeedRequired(speed || 0);\n const shouldConnect = isTariffCanConnected(isHouseConnected, requiredGigaSpeed, gigabitMayConnect);\n\n const onSubmitRequest = async() => {\n const resp = await submitRequest({\n isMono: !!isMono,\n fio,\n phone,\n csrf,\n sale_package_id,\n tariff_name,\n additionalProducts: additionalProducts || [],\n products: products || [],\n address: unifiedSelectedAddress?.address.value,\n street: addressParams?.street?.label,\n house: addressParams?.house?.label,\n flat: addressParams?.flat,\n shouldConnect,\n });\n\n const { ok, message } = resp;\n\n showResult({\n type: ok ? EResultPopupStatus.SUCCESS : EResultPopupStatus.ERROR,\n title: ok ? 'Заявка на подключение отправлена' : 'Произошла ошибка',\n text: ok ? 'Мы свяжемся с вами в ближайшее время' : message,\n });\n };\n\n return (\n \n \n \n \n \n \n );\n};\n\nexport default memo(RequestForm);\n","import styled from 'styled-components';\n\nimport BaseAlert from '@r1-frontend/ui-react/components/Alert';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const NoWrapText = styled.span`\n display: contents;\n white-space: nowrap;\n`;\n\nexport const BoldText = styled.span`\n display: contents;\n ${FONTS.H5};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H6};\n }\n`;\n\nexport const Alert = styled(BaseAlert)`\n flex-direction: column;\n gap: 10px;\n width: 100%;\n align-items: baseline;\n padding: 24px;\n overflow: visible;\n`;\n","import React, { useMemo } from 'react';\n\nimport { EAvailableSpeed, EVerificationStatus } from '@r1-frontend/entities/ContactAddress/initialState';\n\nimport { TAlertIcon } from '@r1-frontend/ui-react/components/Alert';\nimport { TAlertTypes } from '@r1-frontend/ui-react/components/Alert/TAlertTypes';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { InfoCircle, TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport RequestForm from './RequestForm';\n\nimport * as ST from './styled';\n\ntype TResultTypes = 'notConnected' | 'canConnected' | 'gigabitError' | 'checkError' | 'flatError';\n\ninterface IResult {\n getText: (args: { speed?: React.ReactText, availableSpeed: EAvailableSpeed }) => JSX.Element,\n hasCallRequest: boolean,\n messageType: TAlertTypes,\n icon: TAlertIcon,\n}\n\nconst results: Record = {\n canConnected: {\n getText: ({ speed }) => <>По вашему адресу можно подключить тариф «Конструктор {speed} Мбит/с»,\n hasCallRequest: false,\n messageType: 'success',\n icon: () => ,\n },\n notConnected: {\n getText: () => <>Ваш дом пока не подключён к Дом.ру. Можем сообщить вам, когда подключим.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.,\n hasCallRequest: true,\n messageType: 'error',\n icon: () => ,\n },\n gigabitError: {\n getText: ({ availableSpeed }) => {\n return availableSpeed === EAvailableSpeed.between100and1000\n ? <>\n Пока в вашем доме можно подключить только тарифы со скоростью меньше 1000 Мбит/с.\n \n : <>\n Пока в вашем доме можно подключить только тариф с максимальной скоростью 100 Мбит/с.\n ;\n },\n hasCallRequest: false,\n messageType: 'info',\n icon: () => ,\n },\n checkError: {\n getText: () => <>Не смогли проверить ваш адрес. Пожалуйста, оставьте ваши ФИО и номер телефона — мы позвоним вам и всё проверим.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.,\n hasCallRequest: true,\n messageType: 'error',\n icon: () => ,\n },\n flatError: {\n getText: () => <>Этот тариф недоступен по вашему адресу. Оставьте свои контакты — мы перезвоним и подберём другой вариант.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.,\n hasCallRequest: true,\n messageType: 'error',\n icon: () => ,\n },\n};\n\nexport interface IAddressCheckMessageProps {\n speed: React.ReactText,\n gigabitMayConnect: boolean,\n requiredGigaSpeed: boolean,\n isNotFlatAddress?: boolean,\n isHouseConnected: boolean,\n addressStatus: EVerificationStatus,\n handleGigabitBtnClick: () => void,\n availableSpeed: EAvailableSpeed,\n}\n\n/**\n * Выводит сообщение с результатом проверки адреса или null, если адрес ещё не проверялся\n */\nexport const AddressCheckBlock = ({\n speed,\n gigabitMayConnect,\n requiredGigaSpeed,\n isNotFlatAddress,\n isHouseConnected,\n addressStatus,\n handleGigabitBtnClick,\n availableSpeed,\n}: IAddressCheckMessageProps): JSX.Element => {\n const isGigabitError = requiredGigaSpeed && !gigabitMayConnect;\n const isTariffCanConnect = isHouseConnected && !isGigabitError;\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n const resultType = useMemo(() => {\n switch (true) {\n // Проверка адреса не прошла\n case (addressStatus === EVerificationStatus.error):\n return 'checkError';\n // Проверка адреса не прошла\n case (isNotFlatAddress):\n return 'flatError';\n // Тариф можно подключить\n case (isTariffCanConnect):\n return 'canConnected';\n // Дом не подключен\n case (!isHouseConnected):\n return 'notConnected';\n // Нет гигабитной сети\n case (isGigabitError):\n return 'gigabitError';\n default:\n return 'checkError';\n }\n }, [isTariffCanConnect, isGigabitError, isHouseConnected, addressStatus]);\n\n const result = results[resultType];\n\n // Адрес ещё не проверяли\n if (addressStatus === EVerificationStatus.notVerified || addressStatus === EVerificationStatus.verifying) {\n return ;\n }\n\n return (\n <>\n \n \n {result.getText({ speed, availableSpeed })}\n \n {result.hasCallRequest &&\n \n }\n \n {isHouseConnected && isGigabitError &&\n \n \n \n }\n \n );\n};\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getSelectedEntity = (state: TInitialState) => state[EEntity.speed][state.selectedSpeed];\n\nexport default getSelectedEntity;\n","import React, { useCallback, useMemo } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { checkAddress } from '@r1-frontend/entities/ContactAddress/actions/checkAddress';\nimport { fillAddressAction } from '@r1-frontend/entities/ContactAddress/actions/fillAddress';\nimport { setAddressEdit } from '@r1-frontend/entities/ContactAddress/actions/setAddressEdit';\nimport { EAvailableSpeed } from '@r1-frontend/entities/ContactAddress/initialState';\nimport { isAddressFilled } from '@r1-frontend/entities/ContactAddress/selectors/isAddressFilled';\nimport { EVerificationStatus } from '@r1-frontend/entities/ContactDetail/initialState';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { RoundedBlock } from '@r1-frontend/ui-react/experimental/blocks';\nimport { FullWidthListContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { IAddress } from '@r1-frontend/shared/types/IAddress';\n\nimport AddressInputFields from '~/src/components/AddressInputFields';\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { GIGABIT_SPEED, MEGABIT_SPEED } from '~/src/features/full-buy/consts';\nimport { ConfirmedForm } from '~/src/features/full-buy/ContactAddress/ConfirmedForm';\nimport { setSpeedRestrictions, setStep } from '~/src/features/tariffBuilder/actions';\nimport { constructorAnalytics } from '~/src/features/tariffBuilder/analytics';\nimport { AddressCheckBlock } from '~/src/features/tariffBuilder/components/AddressCheckBlock';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSelectedEntity from '~/src/features/tariffBuilder/selectors/getSelectedEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TState } from '~/src/store';\n\nconst AddressContainer = ({ ...props }): JSX.Element => {\n const localDispatch = useCtxDispatch();\n const globalDispatch = useDispatch();\n const { speed } = useCtxSelector(getSelectedEntity);\n\n const {\n contactAddress: {\n isEdit,\n verifiedAddressData: {\n isHouseConnected,\n isPrivate,\n status: addressStatus,\n address: verifiedAddress,\n availableSpeed,\n },\n },\n isConfirmButtonActive,\n } = useSelector((state: TState) => ({\n contactAddress: state.contactAddress,\n isConfirmButtonActive: isAddressFilled(state),\n }), shallowEqual);\n\n const currentSpeedAcrossEnum = useMemo(() => {\n if (speed === null) {\n return null;\n }\n\n if (Number(speed) >= GIGABIT_SPEED) {\n return EAvailableSpeed.more1000;\n }\n\n if (Number(speed) > MEGABIT_SPEED) {\n return EAvailableSpeed.between100and1000;\n }\n\n return EAvailableSpeed.lessOrEqual100;\n }, [speed]);\n\n const shouldConnect = isHouseConnected && addressStatus === EVerificationStatus.verified && (\n (Number(currentSpeedAcrossEnum) > EAvailableSpeed.lessOrEqual100 && Number(currentSpeedAcrossEnum) <= availableSpeed) ||\n (Number(currentSpeedAcrossEnum) === EAvailableSpeed.lessOrEqual100)\n );\n\n const checkAddressData = () => {\n constructorAnalytics.addressVerification.clickedAddressVerification();\n\n globalDispatch(checkAddress(false, false, (result) => constructorAnalytics.addressVerification.addressVerification(result)));\n globalDispatch(setAddressEdit(false));\n };\n\n const onEdit = useCallback(() => {\n globalDispatch(setAddressEdit(true));\n }, [globalDispatch]);\n\n const onFillAddress = useCallback((address: IAddress) => {\n globalDispatch(fillAddressAction(address));\n }, [globalDispatch]);\n\n const handleGigabitBtnClick = () => {\n localDispatch(setSpeedRestrictions({\n min: availableSpeed === EAvailableSpeed.lessOrEqual100 ? 100 : undefined,\n max: availableSpeed === EAvailableSpeed.lessOrEqual100 ? 100 : availableSpeed === EAvailableSpeed.between100and1000 ? 900 : undefined,\n }));\n localDispatch(setStep(ESteps.SpeedAndTv));\n };\n\n const nextStepHandler = () => {\n localDispatch(setStep(ESteps.FillContacts));\n constructorAnalytics.addressVerification.confirmCheckAddress();\n };\n\n return (\n
    \n {isEdit && <>\n \n

    Проверьте, доступен ли тариф «Конструктор {speed} Мбит/с» по вашему адресу

    \n
    \n \n \n \n constructorAnalytics.addressVerification.addressInputFieldsCallback(action)}\n defaultAddress={verifiedAddress}\n withSatelliteFilter={false}\n />\n \n \n \n \n \n \n \n \n }\n {!isEdit && \n EAvailableSpeed.lessOrEqual100}\n requiredGigaSpeed={Number(currentSpeedAcrossEnum) > EAvailableSpeed.lessOrEqual100}\n isHouseConnected={isHouseConnected}\n speed={speed}\n isNotFlatAddress={Boolean(isPrivate)}\n addressStatus={addressStatus}\n handleGigabitBtnClick={handleGigabitBtnClick}\n availableSpeed={availableSpeed}\n />\n \n \n \n {shouldConnect && \n \n }\n \n }\n
    \n );\n};\n\nexport default styled(AddressContainer)`\n ${RoundedBlock} {\n width: 100%;\n }\n \n width: 100%;\n`;\n","import Section from '~/src/features/tariffBuilder/components/Section';\nimport AddressContainer from '~/src/features/tariffBuilder/containers/AddressContainer';\n\nconst FillAddress = (): JSX.Element => {\n return <>\n
    \n \n
    \n ;\n};\n\nexport default FillAddress;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst isContactDataValid = (state: TInitialState) => {\n const { client, currentTariff } = state;\n const { name, phone, contactPhone } = client;\n const isPhoneValid = phone.length === 11;\n\n if (currentTariff) {\n const isContactId = contactPhone && contactPhone?.value !== -1;\n return isPhoneValid || isContactId;\n }\n\n const isNameValid = Boolean(name.trim());\n\n return isNameValid && isPhoneValid;\n};\n\nexport default isContactDataValid;\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { InputContainer } from '@r1-frontend/ui-react/components/inputSimple/styles';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IOption } from '@r1-frontend/ui-react/components/select/creatableSelect';\nimport { CreatablePhoneSelect } from '@r1-frontend/ui-react/components/select/creatableSelect';\n\nimport { setClientContactPhone, setClientPhone } from '~/src/features/tariffBuilder/actions';\nimport { useCtxDispatch } from '~/src/features/tariffBuilder/hooks';\nimport { TState } from '~/src/store';\n\ninterface IProps {\n className?: string,\n fillPhone: string,\n contactPhone?: IOption,\n}\n\nconst CreatablePhoneSelectWrapper = ({ fillPhone, contactPhone, className }: IProps): JSX.Element => {\n const dispatch = useCtxDispatch();\n\n const phones = useSelector((state: TState) => state.auth.clientContacts?.phone);\n\n const onChangePhone = (option: IOption) => {\n dispatch(setClientContactPhone(option));\n };\n\n const onFillPhone = (option: IOption) => {\n dispatch(setClientPhone(option.value));\n };\n\n const phoneOptions:IOption[] = useMemo(() => {\n return (phones || []).map(item => ({ label: item.value, value: `${item.id}`, isContactId: true }));\n }, [phones]);\n\n return (\n
    \n \n
    \n );\n};\n\nexport default styled(CreatablePhoneSelectWrapper)`\n display: flex;\n flex-wrap: nowrap;\n gap: 10px;\n width: 100%;\n > div {\n @media (min-width: ${wideBreakpoints.mobile}) {\n max-width: 256px;\n }\n }\n & ${InputContainer},\n & ${InputContainer} + div {\n margin: 0;\n @media (min-width: ${wideBreakpoints.mobile}) {\n max-width: 256px;\n }\n }\n`;\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nexport const TextBlock = (): JSX.Element => {\n return (\n \n

    Введите ваши ФИО и номер телефона

    \n Нам это нужно для создания вашей заявки на подключение тарифа.\n Важное: заявку можно оставить только если вам уже 18 лет. Дальше останется только выбрать дату и время визита инженера.\n \n
    \n );\n};\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\ninterface ITextBlockAuthProps {\n hasEquipment: boolean,\n}\nexport const TextBlockAuth = ({ hasEquipment }: ITextBlockAuthProps): JSX.Element => {\n return (\n \n

    Подтвердите ваш номер телефона

    \n {hasEquipment && (\n Нам это нужно для создания вашей заявки на доставку оборудования.\n Важное: заявку можно оставить только если вам уже 18 лет. Дальше останется только выбрать дату и время визита инженера.\n \n )}\n
    \n );\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const PersonFormWrapper = styled.div`\n width: 100%;\n max-width: 524px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: none;\n } \n`;\n","import { useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { useOnceExecute } from '@r1-frontend/shared/hooks/useOnceExecute';\n\nimport { ConfirmNumberPopup } from '~/src/components/ConfirmNumberPopup';\nimport { PersonForm } from '~/src/components/PersonForm';\nimport { setClientName, setClientPhone } from '~/src/features/tariffBuilder/actions';\nimport setStep from '~/src/features/tariffBuilder/actions/setStep';\nimport { changePlanWebcabThunk } from '~/src/features/tariffBuilder/actions/thunk';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { hasSelectedEquipment } from '~/src/features/tariffBuilder/selectors/hasSelectedEquipment';\nimport isContactDataValid from '~/src/features/tariffBuilder/selectors/isContactDataValid';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TState } from '~/src/store';\nimport { selectTerminalResource } from '~/src/store/selectors/service';\n\nimport CreatablePhoneSelectWrapper from './CreatablePhoneSelectWrapper';\nimport { TextBlock } from './TextBlock';\nimport { TextBlockAuth } from './TextBlockAuth';\n\nimport { PersonFormWrapper } from './styled';\n\n\nconst getActionBtnText = (isContactId: boolean, hasEquipment: boolean) => {\n if (!isContactId) {\n return 'Подтвердить';\n }\n if (hasEquipment) {\n return 'Продолжить';\n }\n return 'Сменить тариф';\n};\n\nconst ContactsContainer = (): JSX.Element => {\n const dispatch = useCtxDispatch();\n\n const { name, phone, isDataValid, currentTariff, contactPhone, hasEquipment, loading } = useCtxSelector(state => ({\n name: state.client.name,\n phone: state.client.phone,\n contactPhone: state.client.contactPhone,\n currentTariff: selectCurrentTariff(state),\n isDataValid: isContactDataValid(state),\n hasEquipment: hasSelectedEquipment(state),\n loading: state.loading,\n }));\n\n const analytics = useConstructorAnalytics();\n\n const trId = useSelector((state: TState) => selectTerminalResource(state));\n\n const [isShowPopup, setIsShowPopup] = useState(false);\n\n const firstInputPhone = useOnceExecute(() => {\n analytics.personalVerification.enterPhoneNumber();\n });\n\n const firstInputFio = useOnceExecute(() => {\n analytics.personalVerification.enterFio();\n });\n\n const onChangeFio = (value: string) => {\n dispatch(setClientName(value));\n firstInputFio();\n };\n\n const onChangePhone = (value: string) => {\n dispatch(setClientPhone(value));\n firstInputPhone();\n };\n\n const onConfirmPhone = () => {\n if (currentTariff && !hasEquipment) {\n dispatch(changePlanWebcabThunk(trId));\n } else {\n dispatch(setStep(ESteps.CreateAgreement));\n }\n\n analytics.personalVerification.stepPersonalData('confirm');\n };\n\n const onCloseConfirmPopup = () => {\n setIsShowPopup(false);\n };\n\n const handleButtonClick = () => {\n if (currentTariff && contactPhone?.isContactId) {\n if (hasEquipment) {\n dispatch(setStep(ESteps.CreateAgreement));\n } else {\n dispatch(changePlanWebcabThunk(trId));\n }\n return;\n }\n setIsShowPopup(true);\n analytics.personalVerification.openedPersonalDataVerification();\n };\n\n return (\n <>\n {currentTariff ? : }\n \n \n {currentTariff\n ? \n : \n \n }\n \n \n \n \n \n\n \n \n );\n};\n\nexport default ContactsContainer;\n","import Section from '~/src/features/tariffBuilder/components/Section';\nimport ContactsContainer from '~/src/features/tariffBuilder/containers/ContactsContainer';\n\n// Switching to the next step is implemented in the ContactsContainer\nconst FillContacts = (): JSX.Element => {\n return (\n
    \n \n
    \n );\n};\n\nexport default FillContacts;\n","import styled from 'styled-components';\n\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BlockContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Phone = styled.a`\n ${FONTS.S};\n color: ${COLORS.TextSecondary};\n text-decoration: none;\n`;\n\nexport const SBlockContainer = styled(BlockContainer)`\n align-items: center;\n justify-content: space-between;\n flex-wrap: nowrap;\n gap: 32px;\n \n & ${ButtonGroup} {\n flex: 1;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n }\n`;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { TState } from '~/src/store';\nimport { openChat } from '~/src/store/actions/chat';\nimport selectCallCenterNumber from '~/src/store/selectors/selectCallCenterNumber';\n\nimport * as ST from './styled';\n\nconst CallbackContacts = (): JSX.Element => {\n const dispatch = useDispatch();\n\n const {\n callCenter,\n callCenterNumber,\n } = useSelector((state: TState) => ({\n callCenter: state.city.currentCity.callCenter,\n callCenterNumber: selectCallCenterNumber(state),\n }));\n\n const href = `tel:+${callCenterNumber}`;\n\n const callTouchHandler = () => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.fullBuy,\n action: 'click calltouch',\n });\n };\n\n const openChatHandler = () => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.fullBuy,\n action: 'click chat',\n });\n\n dispatch(openChat());\n };\n\n return (\n \n \n

    Если остались вопросы

    \n \n Позвоните в поддержку \n \n {callCenter}\n . Мы всегда на связи.\n \n
    \n \n \n Написать в поддержку\n \n \n
    \n );\n};\n\nexport default CallbackContacts;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const DoubleColumnLayout = styled.div`\n width: 100%;\n margin-top: 32px;\n \n display: grid;\n flex-wrap: nowrap;\n grid-template-columns: 1fr 480px;\n align-items: flex-start;\n gap: 32px;\n max-width: 100%;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n grid-template-columns: 1fr 384px;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: 100%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 16px;\n }\n`;\n\nexport const Block = styled.div`\n display: block;\n`;\n\nexport const TwoInRow = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: nowrap;\n`;\n\nexport const TwoInRowWithExtraSpace = styled(TwoInRow)`\n margin-bottom: 12px;\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const TabsContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n gap: 8px;\n margin: 0 0 32px;\n \n & > nav {\n gap: 8px;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n div:last-child {\n display: none;\n }\n margin: 0 0 48px;\n }\n`;\n\nexport const RightSide = styled.div`\n @media (min-width: ${wideBreakpoints.laptop}) {\n height: 100%;\n }\n`;\n","import styled from 'styled-components';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { Cost } from '@r1-frontend/ui-react/components/costs';\nimport DiscountLabel from '@r1-frontend/ui-react/components/DiscountLabel/PercentDiscountLabel';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Separator } from '@r1-frontend/ui-react/components/Separator';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport { H3, H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport ConnectionConditions from '~/src/components/ConnectionConditions/ConnectionConditions';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport { TSummaryInfo } from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\n\nimport { TwoInRow, TwoInRowWithExtraSpace } from '~/src/features/tariffBuilder/styled';\n\nexport const SummaryInfo = ({\n discount,\n total,\n discountValue,\n groups,\n alert,\n ...props\n}: TSummaryInfo): JSX.Element => {\n\n const analytics = useConstructorAnalytics();\n\n const clickedOpenConnectionCostPopup = analytics.clickedOpenConnectionCostPopup.bind(analytics);\n\n return (\n \n

    Ваш тариф {discount}

    \n \n {groups.map(group => (\n \n {group.header} {group.cost}\n {group.items.length > 0 && (\n \n {group.items.map(item => (<>\n \n {item.title}\n \n {item.period && item.period > 1 && (\n \n В рассрочку на {item.period} мес — {item.cost}\n \n )}\n {item.period && item.period === 1 && (\n \n В собственность — {item.cost}\n \n )}\n ))}\n \n )}\n {group.header === 'Подключение' && (\n \n )}\n \n ))}\n \n\n \n\n
    \n \n

    Итого при подключении:

    \n

    {total}

    \n
    \n \n

    Скидка:

    \n

    {discountValue}

    \n
    \n
    \n\n {alert && (\n \n \n \n )}\n
    \n );\n};\n\nexport default styled(SummaryInfo)`\n width: 100%;\n height: 100%;\n\n & > ${H3} > div {\n margin-left: 8px;\n }\n\n & > ${ListContainer} {\n overflow: auto;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & > ${H3} > div {\n margin-left: 8px;\n }\n }\n`;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst getPhone = (state: TInitialState) => {\n const { currentTariff, client } = state;\n if (currentTariff && client.contactPhone?.value !== -1) {\n return client.contactPhone?.label;\n }\n\n return client.phone;\n};\n\nexport default getPhone;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nconst selectClientName = (clientPersonalName = '') => (state: TInitialState) => {\n if (state.currentTariff) {\n return clientPersonalName;\n }\n return state.client.name;\n};\n\nexport default selectClientName;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { getAddressByStr } from '@r1-frontend/entities/ContactAddress/selectors/helpers';\n\nimport { CallCalling } from '@r1-frontend/ui-react/components/svg/call';\nimport { Location } from '@r1-frontend/ui-react/components/svg/location';\nimport { User } from '@r1-frontend/ui-react/components/svg/users';\n\nimport InfoBlock from '~/src/features/full-buy/InfoBlock'; // @todo отвязаться от full-buy\nimport InfoBlockItem from '~/src/features/full-buy/InfoBlock/Item'; // @todo отвязаться от full-buy\nimport { getClientPersonalAddressStr } from '~/src/features/managementAgreement/selectors/helpers/getClientPersonalAddressStr';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getPhone from '~/src/features/tariffBuilder/selectors/getPhone';\nimport selectClientName from '~/src/features/tariffBuilder/selectors/selectClientName';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { TState } from '~/src/store';\n\n\nconst AgreementInfoContainer = () => {\n const { address, clientPersonalAddress, clientPersonalFio } = useSelector((state:TState) => ({\n address: state.contactAddress.verifiedAddressData.address,\n clientPersonalAddress: state.auth.clientPersonal?.address,\n clientPersonalFio: state.auth.clientPersonal?.fio,\n }));\n\n const { agreementNumber, phone, currentTariff, clientName } = useCtxSelector((state) => ({\n agreementNumber: state.agreement.agreementNumber,\n phone: getPhone(state),\n clientName: selectClientName(clientPersonalFio)(state),\n currentTariff: selectCurrentTariff(state),\n }));\n\n return (\n \n }\n title={'ФИО'}\n content={clientName}\n />\n }\n title={'Номер телефона'}\n content={phone}\n />\n }\n title={currentTariff ? 'Адрес доставки' : 'Адрес подключения'}\n content={currentTariff ? getClientPersonalAddressStr(clientPersonalAddress) : getAddressByStr(address)}\n />\n \n );\n};\n\nexport default AgreementInfoContainer;\n","import Alert from '@r1-frontend/ui-react/components/Alert';\nimport { InfoCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\n\ninterface IProps {\n openChatHandler: () => void,\n}\nexport const ChangePlanWebcabAlerts = ({ openChatHandler }: IProps): JSX.Element => {\n const changePlanWebcabData = useCtxSelector(state => state.changePlanWebcabData);\n\n if (changePlanWebcabData?.hasError && changePlanWebcabData.errorCode === 'INSUFFICIENT_MONEY') {\n return (\n \n \n Недостаточно средств на договоре для смены тарифного плана. Пожалуйста, пополните Ваш баланс.\n \n \n );\n }\n\n if (changePlanWebcabData?.hasError) {\n return (\n \n \n Не удалось сменить тариф. Попробуйте ещё раз или напишите в поддержку.\n \n \n );\n }\n\n return (\n \n Теперь у вас новый тариф. Перезагрузите роутер, чтобы активировать новую скорость.\n \n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport Link from 'next/link';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { InfoCircle, TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport CallbackContacts from '~/src/features/tariffBuilder/components/CallbackContacts';\nimport SummaryInfo from '~/src/features/tariffBuilder/components/SummaryInfo';\nimport AgreementInfoContainer from '~/src/features/tariffBuilder/containers/AgreementInfoContainer';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\nimport { hasSelectedEquipment } from '~/src/features/tariffBuilder/selectors/hasSelectedEquipment';\nimport { openChat } from '~/src/store/actions/chat';\n\nimport { ChangePlanWebcabAlerts } from './ChangePlanWebcabAlerts';\n\nconst CurrentTariffFinal = (): JSX.Element => {\n const isLaptop = useMatchMediaByWidth(wideBreakpoints.laptop);\n const dispatch = useDispatch();\n\n const { summaryInfo, requestId, selectedTimeSlot, hasEquipment, isReplanError } = useCtxSelector(state => ({\n summaryInfo: getSummaryInfo(state),\n requestId: state.requestId,\n selectedTimeSlot: state.selectedTimeSlot,\n hasEquipment: hasSelectedEquipment(state),\n isReplanError: state.replanIsError,\n }));\n\n const openChatHandler = () => {\n dispatch(openChat());\n };\n\n return (\n \n {!requestId && hasEquipment &&\n \n Не удалось создать заявку.\n \n }\n \n {isReplanError &&\n \n \n При подтверждении даты визита инженера произошла ошибка. Наш специалист перезвонит вам для решения вопроса.\n \n \n }\n {selectedTimeSlot &&\n \n \n Назначен визит инженера.\n Следите за статусом или изменяйте заявку в личном кабинете.\n \n \n }\n {isLaptop &&\n <>\n \n \n \n \n \n \n \n }\n \n \n Перейти в личный кабинет\n \n \n \n \n );\n};\n\nexport default CurrentTariffFinal;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\n\nimport { hasSelectedEquipment } from './hasSelectedEquipment';\n\n/**\n * Select data for final page\n */\nexport const selectFinalData = (state: TInitialState) => {\n return {\n agreementData: {\n isDouble: state.agreement.isDouble,\n hasError: state.agreement.hasError,\n },\n hasEquipment: hasSelectedEquipment(state),\n slot: state.selectedTimeSlot,\n };\n};\n","import React, { FC } from 'react';\n\nimport { House } from '@r1-frontend/ui-react/components/svg/building';\nimport { Electricity } from '@r1-frontend/ui-react/components/svg/devices';\nimport { CalendarSecond, Clock } from '@r1-frontend/ui-react/components/svg/time';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport ListItemWithIcon from '@r1-frontend/ui-react/organisms/ListItemWithIcon';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport InfoBlock from '~/src/features/full-buy/InfoBlock';\n\ninterface IProps {\n date?: string,\n sla?: string,\n isInstallationHardware: boolean,\n}\n\nconst EmployeeVisitInfo: FC = ({ date, sla, isInstallationHardware }) => {\n return (\n \n \n \n Просверлит отверстие между квартирой и подъездом и проложит кабель.
    \n Если интернет-кабель в квартире уже есть — проверит его и заменит при необходимости.
    \n Настроит оборудование и покажет, как всё работает. А ещё поможет оплатить услуги через сайт или мобильное приложение «Мой\n Дом.ру».\n )\n }\n />\n \n \n
    \n );\n};\n\nexport default EmployeeVisitInfo;\n","import React, { useCallback, useMemo } from 'react';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { InfoCircle, TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { USER_LOGIN_ROUTE } from '~/src/constants/routes';\nimport CallbackContacts from '~/src/features/tariffBuilder/components/CallbackContacts';\nimport SummaryInfo from '~/src/features/tariffBuilder/components/SummaryInfo';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport AgreementInfoContainer from '~/src/features/tariffBuilder/containers/AgreementInfoContainer';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\nimport { selectFinalData } from '~/src/features/tariffBuilder/selectors/selectFinalData';\nimport { getAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\n\nimport EmployeeVisitInfo from './EmployeeVisitInfo';\n\nconst Final = (): JSX.Element => {\n const sendAnalytics = getAnalyticsSender(GA_CATEGORY);\n const isLaptop = useMatchMediaByWidth(wideBreakpoints.laptop);\n const router = useRouter();\n\n const {\n agreementData,\n hasEquipment,\n slot,\n } = useCtxSelector(selectFinalData);\n\n const summaryInfo = useCtxSelector(getSummaryInfo);\n const { agreement } = useCtxSelector((state) => (state));\n\n const onGoToPayment = useCallback(() => {\n router.push({\n pathname:'/payments',\n query: {\n pay: 'online',\n agreement: agreement.agreementNumber,\n s: summaryInfo.total,\n },\n });\n\n sendAnalytics('click payment', 'btn: \"Оплатить\"');\n }, []);\n\n const dateTime = useMemo(() => {\n const [hour, minutes] = slot?.hour.split(':') || ['00', '00'];\n return `${slot?.date} c ${slot?.hour} по ${String(Number(hour) + 1).padStart(2, '0')}:${minutes}`;\n }, [slot?.date, slot?.hour]);\n\n return (\n \n {agreementData.isDouble &&\n \n \n К вашим данным уже привязан другой договор. Скоро позвоним, чтобы во всём разобраться.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.\n \n \n }\n {agreementData.hasError && !agreementData.isDouble &&\n \n \n Не удалось создать договор. Скоро позвоним, чтобы во всём разобраться.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.\n \n \n }\n {!agreementData.hasError &&\n <>\n \n \n Назначен визит инженера. В течение часа вам придет смс с информацией по вашей заявке.\n Следите за статусом или изменяйте заявку в личном кабинете.\n \n \n \n {isLaptop &&\n <>\n \n {!agreement.hasError &&\n

    Оплатить можно только до или во время визита инженера

    \n }\n \n \n \n {!agreement.hasError &&\n \n }\n \n \n \n }\n \n }\n {!!dateTime && !agreementData.hasError &&\n \n \n Перейти в личный кабинет\n \n \n }\n \n
    \n );\n};\n\nexport default Final;\n","import React from 'react';\n\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\n\nimport CurrentTariffFinal from './CurrentTariffFinal';\nimport Final from './Final';\n\nconst FinalContainer = (): JSX.Element => {\n const currentTariff = useCtxSelector(state => state.currentTariff);\n\n if (currentTariff) {\n return ;\n }\n\n return ;\n};\n\nexport default FinalContainer;\n","import Section from '~/src/features/tariffBuilder/components/Section';\nimport FinalContainer from '~/src/features/tariffBuilder/containers/FinalContainer';\n\nconst Final = (): JSX.Element => {\n return <>\n
    \n \n
    \n ;\n};\n\nexport default Final;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\nimport Svg from '@r1-frontend/ui-react/components/svg/Svg';\n\nexport const ImageBlock = styled(LazyLoadImage)<{ src?: string }>`\n width: 100%;\n background-size: cover;\n`;\n\nexport const BenefitsText = styled.div`\n flex-direction: row;\n flex-wrap: nowrap;\n width: 100%;\n gap: 8px;\n\n ${Svg} {\n max-width: 24px;\n width: 100%;\n }\n`;\n","import { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TBaseSubscription } from '~/src/features/tariffBuilder/reducer/initialState';\n\nimport * as ST from './styled';\n\ninterface IProps {\n titlePrefix: string | null,\n onClose: () => void,\n subscription?: (TBaseSubscription & { isSelected: boolean }),\n}\n\nconst OnlineCinemaAdditionalInfo = ({\n titlePrefix,\n onClose,\n subscription,\n ...props\n}: IProps): JSX.Element | null => {\n const [benefits, setBenefits] = useState([]);\n useEffect(() => {\n if (!subscription) {\n return;\n }\n const matchAll = Array.from(subscription.descriptionFull.matchAll(/
  • (.*?)<\\/li>/g));\n setBenefits(matchAll.map(item => item[1]));\n }, [subscription]);\n\n if (!subscription) {\n return null;\n }\n\n return (\n
    \n \n \n

    {titlePrefix && `${titlePrefix} `}{subscription.title}

    \n \n {benefits.map((item: string, index: number) =>\n \n \n \n )\n }\n \n \n \n Закрыть\n \n \n
    \n
    \n );\n};\n\nexport default styled(OnlineCinemaAdditionalInfo)`\n ${ListContainer} {\n margin-bottom: 16px;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { batch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { selectTimeSlot } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/select-time-slot';\nimport { ResponseDto } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/select-time-slot/dto/ResponseDto';\nimport { saleAgentTimeSlots } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots';\nimport { RequestDto } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots/dto/RequestDto';\nimport { ResponseDto as GetTimeSlotsResponseDto } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots/dto/ResponseDto';\n\nimport DateOfServiceEngineerVisitWrapper, {\n ESaleAgentClientName,\n TReturnType,\n} from '@r1-frontend/service-engineer-visit';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { Danger } from '@r1-frontend/ui-react/components/svg/main';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { setSelectedTimeSlot } from '~/src/features/tariffBuilder/actions';\nimport setStep from '~/src/features/tariffBuilder/actions/setStep';\nimport CallbackContacts from '~/src/features/tariffBuilder/components/CallbackContacts';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { getAgreementId } from '~/src/features/tariffBuilder/selectors/getAgreementId';\nimport { hasSelectedEquipment } from '~/src/features/tariffBuilder/selectors/hasSelectedEquipment';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { getAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\nimport { selectDomain } from '~/src/store/selectors/domain';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nexport const TIME_SLOT_YK_ERROR = 'Предварительное согласование с УК/ТСЖ';\n\nexport const enum ESlotsContainerState {\n SHOW_SLOTS = 1,\n HIDE_SLOTS = 2,\n SLOTS_EMPTY = 3\n}\n\nexport type TSlotResult = {\n state: ESlotsContainerState,\n result: TReturnType | null,\n errorMsg?: string,\n}\n\nconst SelectVisitDateContainer = (): JSX.Element | null => {\n const sendAnalytics = getAnalyticsSender(GA_CATEGORY);\n const dispatch = useCtxDispatch();\n const { hasEquipment, agreementId } = useCtxSelector(state => ({\n hasEquipment: hasSelectedEquipment(state),\n agreementId: getAgreementId(state),\n }));\n\n const providerId = useSelector(selectProviderId);\n const domain = useSelector(selectDomain);\n\n const [slotResult, setSlotResult] = useState({ state: ESlotsContainerState.SHOW_SLOTS, result: null });\n const [failureResponseFromSelectSlot, setFailureResponseFromSelectSlot] = useState(false);\n\n useEffect(() => {\n if (slotResult.result !== null && slotResult.result.date && slotResult.result.hour && agreementId) {\n sendAnalytics('request connection', 'start');\n\n (async(slot: TReturnType, agreement: number) => {\n const requestData = {\n agreementId: agreement,\n dateFrom: `${slot.date} ${slot.hour}`,\n saleAgentClientName: ESaleAgentClientName.FULL_BUY_SITE,\n info: slot.comment,\n };\n\n const resp = await doRequest.fullBuy(\n selectTimeSlot(providerId, requestData),\n );\n\n if (resp.isSuccess) {\n batch(() => {\n dispatch(setSelectedTimeSlot(slot));\n dispatch(setStep(ESteps.Final));\n });\n\n sendAnalytics('request connection', 'success');\n } else {\n setFailureResponseFromSelectSlot(true);\n setSlotResult(prevState => ({ ...prevState, state: ESlotsContainerState.HIDE_SLOTS }));\n sendAnalytics('request connection', 'error');\n }\n })(slotResult.result, agreementId);\n }\n }, [slotResult.result]);\n\n const handleConfirm = (result: TReturnType | null, errorMsg?: string) => {\n setSlotResult(prevState => ({\n ...prevState,\n state: result === null ? ESlotsContainerState.SLOTS_EMPTY : ESlotsContainerState.SHOW_SLOTS,\n result,\n errorMsg,\n }));\n };\n\n const getTimeSlots = (providerId: number, body: RequestDto) => {\n return doRequest.fullBuy(saleAgentTimeSlots(providerId, body));\n };\n\n if (!agreementId) {\n return null;\n }\n\n return (\n \n

    Визит инженера

    \n {(slotResult.state === ESlotsContainerState.SHOW_SLOTS && !failureResponseFromSelectSlot) &&\n
    \n                \n                    {hasEquipment\n                        ? <>Привезёт и подключит оборудование, проложит кабель, проверит и покажет, как всё работает.\n                             Поможет оплатить услуги онлайн: на сайте или в мобильном приложении.\n                        : <>\n                            Инженер проложит кабель, подключит и настроит услуги.{'\\n'}\n                            А ещё покажет, как все работает, ответит на вопросы и поможет оплатить услуги на сайте или в мобильном приложении.{'\\n'}\n                            Мы можем вам позвонить и уточнить детали. Убедитесь, что у вас отключен автоответчик и антиспам приложения.\n                        \n                    }\n                \n            
    \n }\n {slotResult.state === ESlotsContainerState.SLOTS_EMPTY &&\n \n \n {slotResult.errorMsg?.includes(TIME_SLOT_YK_ERROR)\n ? <>Нужно согласование ТСЖ или УК, чтобы инженер смог подключить вам услуги.\n Ожидайте звонка специалиста — он поможет спланировать визит инженера\n : <>На ближайшие 5 дней нет свободных инженеров. Если мы не перезвоним вам сегодня, напишите в чат поддержки.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.\n \n }\n \n \n }\n {failureResponseFromSelectSlot && (\n \n \n При подтверждении даты визита инженера произошла ошибка. Наш специалист перезвонит вам для решения вопроса.\n \n \n )}\n {slotResult.state === ESlotsContainerState.SHOW_SLOTS &&\n null}\n contractId={agreementId}\n clientName={ESaleAgentClientName.FULL_BUY_SITE}\n withComment={true}\n gaCategory={GA_CATEGORY}\n domain={domain}\n />\n }\n {(slotResult.state === ESlotsContainerState.SLOTS_EMPTY || failureResponseFromSelectSlot) &&\n <>\n

    Если остались вопросы

    \n \n \n }\n
    \n );\n};\n\nexport default SelectVisitDateContainer;\n","import map from 'lodash/map';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { TBaseSubscription } from '~/src/features/tariffBuilder/reducer/initialState';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TExpectedEntity = Exclude\ntype TReturnType = (TBaseSubscription & { isSelected: boolean, key: number })[];\n\nconst getEntities = (entity: TExpectedEntity) => (state: TInitialState): TReturnType => {\n const entities = state[entity];\n\n return map(\n entities,\n (oneOf, key) => ({\n ...oneOf,\n isSelected: oneOf.quantity > 0,\n\n key: Number(key),\n }),\n );\n};\n\nexport default getEntities;\n","import React, { useMemo, useState } from 'react';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { TvSubscription } from '@r1-frontend/ui-react/organisms/TariffSubscription';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport addEntity from '~/src/features/tariffBuilder/actions/addEntity';\nimport removeEntity from '~/src/features/tariffBuilder/actions/removeEntity';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport OnlineCinemaAdditionalInfo from '~/src/features/tariffBuilder/components/popups/OnlineCinemaAdditionalInfo';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getEntities from '~/src/features/tariffBuilder/selectors/getEntities';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TOwnState = {\n selectedId: undefined,\n isPopupOpen: false,\n} | {\n selectedId: number,\n isPopupOpen: true,\n}\n\ntype TProps = {\n entityName: EEntity.onlineCinemas | EEntity.antivirus | EEntity.security | EEntity.additional,\n}\n\nconst EntitiesContainer = ({ entityName }: TProps): JSX.Element => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n const entities = useCtxSelector(state => getEntities(entityName)(state));\n const dispatch = useCtxDispatch();\n const [{ selectedId, isPopupOpen }, setState] = useState({\n selectedId: undefined,\n isPopupOpen: false,\n });\n\n const analytics = useConstructorAnalytics();\n\n const entitiesMap = useMemo(() => {\n return new Map(entities.map(e => [e.key, e]));\n }, [entities]);\n\n const handleSelect = (key: number) => () => {\n const entity = entitiesMap.get(key);\n if (entity && !entity.isSelected) {\n dispatch(addEntity({\n entity: entityName,\n title: entity.title,\n key,\n },\n analytics));\n } else {\n dispatch(removeEntity({\n entity: entityName,\n key,\n }));\n }\n };\n\n const handleIconClick = (key: number) => () => {\n setState({ isPopupOpen: true, selectedId: key });\n };\n\n const handleClosePopup = () => {\n setState({ selectedId: undefined, isPopupOpen: false });\n };\n\n return <>\n \n <>\n {entities.map(({ title, isSelected, cost, key, ...item }) => (\n \n {title}\n \n ))}\n \n \n\n {(isPopupOpen && selectedId) && (\n \n \n \n )}\n ;\n};\n\nexport default EntitiesContainer;\n","import { TInitialState } from '../reducer';\n\nexport const getAgreementId = (state: TInitialState) => {\n return state.agreement.agreementId;\n};\n","import React, { useState } from 'react';\nimport { batch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { saleAgentTimeSlots } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots';\nimport { RequestDto } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots/dto/RequestDto';\nimport { ResponseDto as GetTimeSlotsResponseDto } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots/dto/ResponseDto';\n\nimport DateOfServiceEngineerVisitWrapper, {\n ESaleAgentClientName,\n TReturnType,\n} from '@r1-frontend/service-engineer-visit';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { Danger } from '@r1-frontend/ui-react/components/svg/main';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { changePlanWebcabThunk, replanRequest } from '~/src/features/tariffBuilder/actions/thunk';\nimport CallbackContacts from '~/src/features/tariffBuilder/components/CallbackContacts';\nimport { useCtxDispatch } from '~/src/features/tariffBuilder/hooks';\nimport { TState } from '~/src/store';\nimport { selectDomain } from '~/src/store/selectors/domain';\nimport { selectTerminalResource } from '~/src/store/selectors/service';\n\nimport { ESlotsContainerState, TIME_SLOT_YK_ERROR, TSlotResult } from './SelectVisitDate';\n\nconst GA_CATEGORY_AUTH = 'constructor_authorized';\n\nconst SelectVisitDateCurrentTariff = (): JSX.Element | null => {\n const dispatch = useCtxDispatch();\n\n const { domain, agreementId, trId } = useSelector((state: TState) => ({\n trId: selectTerminalResource(state),\n domain: selectDomain(state),\n agreementId: state.auth.clientPersonal?.agreementId,\n }));\n\n const [slotResult, setSlotResult] = useState({ state: ESlotsContainerState.SHOW_SLOTS, result: null });\n\n const handleConfirm = (result: TReturnType | null, errorMsg?: string) => {\n setSlotResult(prevState => ({\n ...prevState,\n state: result === null ? ESlotsContainerState.SLOTS_EMPTY : ESlotsContainerState.SHOW_SLOTS,\n result,\n errorMsg,\n }));\n batch(() => {\n dispatch(replanRequest({ agreementId, selectedDate: `${result?.date}`, selectedTime: `${result?.hour}`, comment: `${result?.comment}` }));\n dispatch(changePlanWebcabThunk(trId));\n });\n };\n\n const getTimeSlots = (providerId: number, body: RequestDto) => {\n return doRequest.fullBuy(saleAgentTimeSlots(providerId, body));\n };\n\n if (!agreementId) {\n return null;\n }\n\n return (\n \n

    Выберите дату визита инженера

    \n {(slotResult.state === ESlotsContainerState.SHOW_SLOTS && !slotResult.errorMsg) &&\n
    \n                \n                    Инженер подключит и настроит оборудование примерно за 60 минут.\n                \n            
    \n }\n {slotResult.state === ESlotsContainerState.SLOTS_EMPTY &&\n \n \n {slotResult.errorMsg?.includes(TIME_SLOT_YK_ERROR)\n ? <>Нужно согласование ТСЖ или УК, чтобы инженер смог подключить вам услуги.\n Ожидайте звонка специалиста — он поможет спланировать визит инженера\n : <>На ближайшие 5 дней нет свободных инженеров. Если мы не перезвоним вам сегодня, напишите в чат поддержки.\n Чтобы мы смогли дозвониться — проверьте, что у вас отключен автоответчик и антиспам приложения.\n \n }\n \n \n }\n {slotResult.errorMsg && (\n \n \n При подтверждении даты визита инженера произошла ошибка. Наш специалист перезвонит вам для решения вопроса.\n \n \n )}\n {slotResult.state === ESlotsContainerState.SHOW_SLOTS &&\n null}\n contractId={agreementId}\n clientName={ESaleAgentClientName.FULL_BUY_SITE}\n withComment={true}\n gaCategory={GA_CATEGORY_AUTH}\n domain={domain}\n />\n }\n {(slotResult.state === ESlotsContainerState.SLOTS_EMPTY || slotResult.errorMsg) &&\n <>\n

    Если остались вопросы

    \n \n \n }\n
    \n );\n};\n\nexport default SelectVisitDateCurrentTariff;\n","import { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\n\nimport SelectVisitDate from './SelectVisitDate';\nimport SelectVisitDateCurrentTariff from './SelectVisitDateCurrentTariff';\n\nconst SelectVisitDateContainer = (): JSX.Element => {\n const currentTariff = useCtxSelector(state => state.currentTariff);\n\n if (currentTariff) {\n return ;\n }\n\n return (\n \n );\n};\n\nexport default SelectVisitDateContainer;\n","import Section from '~/src/features/tariffBuilder/components/Section';\nimport SelectVisitDateContainer from '~/src/features/tariffBuilder/containers/SelectVisitDateContainer';\n\nconst SelectVisitDate = (): JSX.Element => {\n return (\n
    \n \n
    \n );\n};\n\nexport default SelectVisitDate;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getSpeedLines = (state: TInitialState) => state[EEntity.speed];\n\nexport default getSpeedLines;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: baseline;\n \n & > p {\n display: none;\n }\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n & > p {\n display: flex;\n }\n }\n`;\n","import Alert from '@r1-frontend/ui-react/components/Alert';\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport ConnectedOnlineCinemas from '~/src/features/tariffBuilder/components/alerts/ConnectedOnlineCinemas';\nimport ConnectedTvPackages from '~/src/features/tariffBuilder/components/alerts/ConnectedTvPackages';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport selectConnectedSubscriptionsNames from '~/src/features/tariffBuilder/selectors/selectConnectedSubscriptionsNames';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TConnectedEntitiesContainerProps = {\n entityName: EEntity.tv | EEntity.onlineCinemas,\n}\n\nconst Alerts = {\n [EEntity.tv]: ConnectedTvPackages,\n [EEntity.onlineCinemas]: ConnectedOnlineCinemas,\n};\n\nconst ConnectedEntitiesContainer = ({ entityName }: TConnectedEntitiesContainerProps) => {\n const {\n currentTariff,\n connectedSubscriptions,\n } = useCtxSelector((state: TInitialState) => {\n const subscriptionsNames = selectConnectedSubscriptionsNames(state);\n\n return {\n currentTariff: selectCurrentTariff(state),\n connectedSubscriptions: subscriptionsNames[entityName] ?? null,\n };\n });\n\n if (!currentTariff) {\n return null;\n }\n\n const AlertText = Alerts[entityName];\n\n return (\n \n {connectedSubscriptions && \n \n \n \n \n \n }\n \n );\n};\n\nexport default ConnectedEntitiesContainer;\n","import { useRef } from 'react';\n\nimport { Cost } from '@r1-frontend/ui-react/components/costs';\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport SpeedLineWithDescription from '@r1-frontend/ui-react/organisms/SpeedLine/SpeedLineWithDescription';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport selectSpeed from '~/src/features/tariffBuilder/actions/selectSpeed';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSpeedLines from '~/src/features/tariffBuilder/selectors/getSpeedLines';\nimport isSpeedRestrictionByEqual100 from '~/src/features/tariffBuilder/selectors/isSpeedRestrictionByEqual100';\n\nimport * as ST from './styled';\n\nconst SpeedLineWithDescriptionContainer = (): JSX.Element => {\n const numberOfCalls = useRef(0);\n\n const { speedItems, startDot, isOnly100 } = useCtxSelector(state => ({\n speedItems: getSpeedLines(state),\n startDot: state.selectedSpeed,\n isOnly100: isSpeedRestrictionByEqual100(state),\n }));\n const dispatch = useCtxDispatch();\n\n const analytics = useConstructorAnalytics();\n\n const handleSpeedSelect = (indexOfSelectedElement: number) => {\n numberOfCalls.current += 1;\n if (numberOfCalls.current > 1) {\n dispatch(selectSpeed({\n id: indexOfSelectedElement,\n }));\n }\n if (numberOfCalls.current === 2) {\n // Аналитику отправляем на второй вызов обработчика, так как первый вызов происходит при монтировании компонента\n analytics.moveSpeedSlider();\n }\n };\n\n const [firstSpeed] = speedItems;\n const descriptionList = firstSpeed?.descriptionList;\n\n return (\n <>\n {isOnly100\n ? \n \n \n

    \n {`По вашему адресу доступна только одна скорость${NBSP}–${NBSP}100${NBSP}Мбит/с`}\n

    \n \n {500}\n \n
    \n {descriptionList &&\n \n {descriptionList.map(description => (\n \n ))}\n \n }\n
    \n \n : \n }\n \n );\n};\n\nexport default SpeedLineWithDescriptionContainer;\n","import { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport SpeedLineWithDescriptionContainer from '~/src/features/tariffBuilder/containers/SpeedLineWithDescription';\n\nconst InternetSpeedBlock = (): JSX.Element => {\n return (\n <>\n \n

    Безлимитный интернет

    \n Чем быстрее интернет, тем дешевле всё остальное\n
    \n\n \n \n \n \n );\n};\n\nexport default InternetSpeedBlock;\n","type TConnectedOnlineCinemasProps = {\n length?: number,\n names?: string,\n}\n\nconst ConnectedOnlineCinemas = ({ length, names }: TConnectedOnlineCinemasProps) => {\n if (!length || !names) {\n return null;\n }\n\n if (length > 1) {\n return (\n <>\n У вас уже подключены онлайн-кинотеатры {names}. Если\n вы хотите продолжить пользоваться ими в составе\n тарифа-конструктора, выберите их ниже и пользуйтесь\n онлайн-кинотеатрами дальше по новой цене. Подробнее в чеке.\n \n );\n }\n\n return (\n <>\n У вас уже подключен онлайн-кинотеатр {names}. Если\n вы хотите продолжить пользоваться им в составе\n тарифа-конструктора, выберите его ниже и пользуйтесь\n онлайн-кинотеатром дальше по новой цене. Подробнее в чеке.\n \n );\n};\n\nexport default ConnectedOnlineCinemas;\n","type TConnectedTvPackagesProps = {\n length?: number,\n names?: string,\n};\n\nconst ConnectedTvPackages = ({ length, names }: TConnectedTvPackagesProps) => {\n if (!length || !names) {\n return null;\n }\n\n if (length > 1) {\n return (\n <>\n У вас уже подключены ТВ-пакеты {names}. Если вы хотите\n продолжить пользоваться ими в составе тарифа-конструктора,\n выберите их ниже и пользуйтесь ТВ-пакетами дальше по новой цене. Подробнее в чеке.\n \n );\n }\n\n return (\n <>\n У вас уже подключен ТВ-пакет {names}. Если вы хотите\n продолжить пользоваться им в составе тарифа-конструктора,\n выберите его ниже и пользуйтесь ТВ-пакетом дальше по новой цене. Подробнее в чеке.\n \n );\n};\n\nexport default ConnectedTvPackages;\n","import reduce from 'lodash/reduce';\nimport { createSelector } from 'reselect';\n\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { TService } from '~/src/features/tariffBuilder/types/TCurrentTariff';\n\nconst prepareNames = (services?: TService[]) => {\n if (!services || !services.length) {\n return;\n }\n\n const names = services.map(service => service.name);\n\n if (names.length > 1) {\n return `${names.slice(0, names.length - 1).join(', ')}${NBSP}и${NBSP}${names.slice(-1)}`;\n }\n\n return services[0].name;\n};\n\ntype TConnectedSubscriptionNames = {\n length: number,\n names?: string,\n}\n\ntype TEntity = EEntity.onlineCinemas | EEntity.tv;\n\nconst selectConnectedSubscriptionsNames = createSelector(\n (state: TInitialState) => state.currentTariff?.services,\n (services) => {\n return reduce, Record>(\n {\n onlineCinemas: services?.onlineCinemas,\n tv: services?.tv,\n },\n (result, value, key) => {\n if (value && value.length) {\n result[key] = {\n length: value.length,\n names: prepareNames(value),\n };\n }\n\n return result;\n },\n {},\n );\n },\n);\n\nexport default selectConnectedSubscriptionsNames;\n","import { Cost } from '@r1-frontend/ui-react/components/costs';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport ConnectedEntitiesContainer from '~/src/features/tariffBuilder/containers/ConnectedEntitiesContainer';\nimport EntitiesContainer from '~/src/features/tariffBuilder/containers/EntitiesContainer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TOnlineCinemasProps = {\n header?: string,\n description?: string,\n}\n\nconst OnlineCinemasBlock = ({ header, description }: TOnlineCinemasProps): JSX.Element => {\n const defaultDescription = <>\n Добавьте в ваш тариф подписки по специальной цене и смотрите кино на любом устройстве без рекламы.\n Первая — 150, последующие — 100\n ;\n\n return (\n <>\n \n

    {header ? header : 'Онлайн-кинотеатры'}

    \n {description\n ? \n : {defaultDescription}\n }\n
    \n\n \n \n \n );\n};\n\nexport default OnlineCinemasBlock;\n","import styled from 'styled-components';\n\nimport { AccordionAnimate } from '@r1-frontend/ui-react/components/accordions/AccordionAnimate';\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const SRounderContainer = styled(RounderContainer)`\n background-color: ${COLORS.BgMain};\n padding: 10px 16px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 4px 16px;\n }\n`;\n\nexport const SAccordionAnimate = styled(AccordionAnimate)`\n width: 100%;\n flex-direction: column;\n`;\n\nexport const Icon = styled.img`\n width: 40px;\n height: 40px;\n`;\n\nexport const Head = styled.div`\n width: 100%;\n align-items: center;\n gap: 12px;\n`;\n\nexport const Title = styled.div`\n align-items: center;\n gap: 8px;\n`;\n\nexport const SubscriptonsWrap = styled.div`\n width: 100% ;\n padding: 8px 8px 0 8px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 8px 0 0 0;\n }\n`;\n\nexport const SubscriptionItem = styled.div`\n width: 100%;\n padding: 12px 0;\n\n &:not(:last-child) {\n border-bottom: 1px solid ${COLORS.Outline_Light};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n &:last-child {\n padding-bottom: 0;\n }\n }\n`;\n\nexport const ArrowButton = styled(Button)<{isShow: boolean}>`\n margin-left: auto;\n transform: scaleY(${({ isShow }) => isShow ? '-1' : '1'});\n`;\n","import { TStepTabsItem } from '@r1-frontend/ui-react/components/StepMenu/StepTabs';\n\nimport * as Page from '~/src/features/tariffBuilder/pages';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport electricPlug from '~/static/images/tariff-builder/electric-plug.svg';\nimport film from '~/static/images/tariff-builder/film.svg';\nimport highVoltage from '~/static/images/tariff-builder/high-voltage.svg';\n\nexport type TStep = TStepTabsItem & {\n Page: () => JSX.Element,\n} | {\n id: number,\n Page: () => JSX.Element,\n};\n\nconst steps: Record = {\n [ESteps.SpeedAndTv]: { id: ESteps.SpeedAndTv, label: 'Скорость и ТВ', Image: highVoltage, Page: Page.SpeedAndTv },\n [ESteps.Subscriptions]: { id: ESteps.Subscriptions, label: 'Подписки', Image: film, Page: Page.Subscriptions },\n [ESteps.Equipment]: { id: ESteps.Equipment, label: 'Оборудование', Image: electricPlug, Page: Page.Equipment },\n // [ESteps.Security]: { id: ESteps.Security, label: 'Безопасность', Icon: Moscow, Page: Page.Security },\n\n [ESteps.FillAddress]: { id: ESteps.FillAddress, Page: Page.FillAddress },\n [ESteps.FillContacts]: { id: ESteps.FillContacts, Page: Page.FillContacts },\n [ESteps.CreateAgreement]: { id: ESteps.CreateAgreement, Page: Page.CreateAgreement },\n [ESteps.SelectVisitData]: { id: ESteps.SelectVisitData, Page: Page.SelectVisitDate },\n\n [ESteps.Final]: { id: ESteps.Final, Page: Page.Final },\n};\n\nexport default steps;\n","import { useState } from 'react';\n\nimport { AccordionAnimateBody, AccordionAnimateHeader } from '@r1-frontend/ui-react/components/accordions/AccordionAnimate';\nimport { SingleArrowDown } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { SwitchableSubscription } from '@r1-frontend/ui-react/organisms/TariffSubscription';\n\nimport * as ST from './styled';\n\nexport interface ISubscriptionGroupItem {\n id: number,\n contentId: number,\n title: string,\n isSelected: boolean,\n cost: {\n previous: number,\n fact: number,\n final: number,\n },\n key: number,\n}\n\ninterface IProps {\n groupName: string,\n title: string,\n items: Array,\n icon: string,\n selectedCount: number,\n onSelect: (key: number, group: string, isSelected: boolean) => () => void,\n onIconClick?: (contentId: number) => void,\n\n disabled?: boolean,\n}\n\nconst SubscriptionsGroup = ({\n groupName,\n title,\n items = [],\n icon,\n selectedCount = 0,\n disabled = false,\n\n onSelect,\n onIconClick,\n}: IProps) => {\n const [isShow, setIsShow] = useState(false);\n\n const handleIconClick = (id: number) => {\n typeof onIconClick === 'function' && onIconClick(id);\n };\n\n return (\n \n \n setIsShow(!isShow)}>\n \n \n \n

    {title}

    \n {selectedCount}/{items.length}\n
    \n }\n isShow={isShow}\n size='medium'\n />\n
    \n
    \n \n \n {items.map(item => (\n \n handleIconClick(item.contentId)}\n onToggle={onSelect(item.key, groupName, item.isSelected)}\n disabled={disabled}\n >{item.title}\n \n ))}\n \n \n
    \n
    \n );\n};\n\nexport default SubscriptionsGroup;\n","import React from 'react';\n\nimport BaseErrorToast from './BaseErrorToast';\n\nconst BaseTvDisabled = ({ ...props }) => \n <>\n Вы отключили Базовый пакет каналов и дополнительные каналы отключились вместе с ним.\n \n;\n\nexport default BaseTvDisabled;\n","import filter from 'lodash/filter';\nimport map from 'lodash/map';\n\nimport { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst getAdditionalTv = (state: TInitialState) => {\n const tvGroups = filter(state[EEntity.tv], group => (group.alias !== 'base'));\n return map(\n tvGroups,\n group => ({\n ...group,\n selectedCount: Object.values(group.items).reduce((cur, acc) => {\n cur += acc.quantity;\n return cur;\n }, 0),\n items: map(group.items, (tvItem, key) => ({ ...tvItem, isSelected: tvItem.quantity > 0, key: Number(key) })),\n }),\n );\n};\n\nexport default getAdditionalTv;\n","import React, { useContext, useState } from 'react';\nimport { batch } from 'react-redux';\n\nimport { Separator } from '@r1-frontend/ui-react/components/Separator';\nimport {\n BlockContainer,\n ListContainer,\n} from '@r1-frontend/ui-react/experimental/containers';\nimport { SwitchableSubscription } from '@r1-frontend/ui-react/organisms/TariffSubscription';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport ChannelListPopup from '~/src/components/Bundles/ChannelListPopup';\nimport { flushDecoders, removeAllTvEntities } from '~/src/features/tariffBuilder/actions';\nimport addTvEntity from '~/src/features/tariffBuilder/actions/addTvEntity';\nimport removeTvEntity from '~/src/features/tariffBuilder/actions/removeTvEntity';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport SubscriptionsGroup from '~/src/features/tariffBuilder/components/SubscriptionsGroup';\nimport BaseTvDisabled from '~/src/features/tariffBuilder/components/toast/BaseTvDisabled';\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getAdditionalTv from '~/src/features/tariffBuilder/selectors/getAdditionalTv';\nimport getBaseTvItem from '~/src/features/tariffBuilder/selectors/getBaseTvItem';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\ntype TOwnState = {\n selectedId: undefined,\n isPopupOpen: false,\n} | {\n selectedId: number,\n isPopupOpen: true,\n}\n\nconst TvSubscriptionsContainer = (): JSX.Element => {\n const { additionalTvSubscriptions, baseTvItem, tv } = useCtxSelector(state => ({\n additionalTvSubscriptions: getAdditionalTv(state),\n tv: state.tv,\n baseTvItem: getBaseTvItem(state),\n }));\n\n const dispatch = useCtxDispatch();\n const { toaster } = useContext(Ctx);\n const [{ selectedId, isPopupOpen }, setState] = useState({\n selectedId: undefined,\n isPopupOpen: false,\n });\n\n const analytics = useConstructorAnalytics();\n\n const handleSelect = (key: number, group: string, isSelected: boolean) => () => {\n if (isSelected) {\n if (group === 'base') {\n batch(() => {\n dispatch(removeAllTvEntities());\n dispatch(flushDecoders());\n });\n toaster.add();\n } else {\n dispatch(removeTvEntity({\n entity: EEntity.tv,\n group,\n key,\n }));\n }\n } else {\n const groupTitle = tv[group].title;\n const itemTitle = tv[group].items[key].title;\n\n dispatch(addTvEntity({\n entity: EEntity.tv,\n group,\n key,\n groupTitle,\n itemTitle,\n },\n analytics));\n }\n };\n\n const handleIconClick = (id: number) => () => {\n setState({ isPopupOpen: true, selectedId: id });\n };\n\n const handleClosePopup = () => {\n setState({ selectedId: undefined, isPopupOpen: false });\n };\n\n return <>\n \n \n \n {baseTvItem.title}\n \n\n \n\n \n {additionalTvSubscriptions.map(tvSubscription => handleIconClick(_id)()}\n disabled={!baseTvItem.isSelected}\n />)}\n \n \n \n\n {(isPopupOpen && selectedId) && (\n \n )}\n ;\n};\n\nexport default TvSubscriptionsContainer;\n","import { useSelector } from 'react-redux';\n\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport { EEntity } from '~/src/features/tariffBuilder//types/EEntity';\nimport ConnectedEntitiesContainer from '~/src/features/tariffBuilder/containers/ConnectedEntitiesContainer';\nimport TvSubscriptionsContainer from '~/src/features/tariffBuilder/containers/TvSubscriptionsContainer';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nconst TvBlock = (): JSX.Element => {\n const companyName = useSelector(selectCompanyName);\n\n return (\n <>\n \n

    ТВ-каналы

    \n \n Много и все про разное: спорт, кино, путешествия, хобби. Для взрослых и детей.\n Стоимость каждого пакета ТВ-каналов в тарифе Конструктор ниже благодаря скидке от {companyName}.\n \n
    \n\n \n\n \n \n \n \n );\n};\n\nexport default TvBlock;\n","import { TInitialState } from '~/src/features/tariffBuilder/reducer';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport selectIsAllowToShowTvPackets from '~/src/features/tariffBuilder/selectors/selectIsAllowToShowTvPackets';\n\n\nconst selectIsShowTvBlock = (state: TInitialState) => {\n const isAllowToShowTvPackets = selectIsAllowToShowTvPackets(state);\n const currentTariff = selectCurrentTariff(state);\n\n return isAllowToShowTvPackets || !currentTariff;\n};\n\nexport default selectIsShowTvBlock;\n\n\n","import Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\n\nimport { setStep } from '~/src/features/tariffBuilder/actions';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport InternetSpeedBlock from '~/src/features/tariffBuilder/components/InternetSpeedBlock';\nimport OnlineCinemasBlock from '~/src/features/tariffBuilder/components/OnlineCinemasBlock';\nimport Section from '~/src/features/tariffBuilder/components/Section';\nimport TvBlock from '~/src/features/tariffBuilder/components/TvBlock';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport selectIsShowTvBlock from '~/src/features/tariffBuilder/selectors/selectIsShowTvBlock';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\nconst SpeedAndTv = (): JSX.Element => {\n const dispatch = useCtxDispatch();\n\n const { entityDescription, isShowTvBlock } = useCtxSelector(state => ({\n entityDescription: state.entityDescription,\n isShowTvBlock: selectIsShowTvBlock(state),\n }));\n\n const analytics = useConstructorAnalytics();\n\n const handleButtonClick = () => {\n dispatch(setStep(ESteps.Subscriptions));\n analytics.clickedMoveToSubscription();\n };\n\n return (\n <>\n
    \n \n
    \n\n
    \n \n
    \n\n {isShowTvBlock && (\n
    \n \n
    \n )}\n\n \n \n \n \n );\n};\n\nexport default SpeedAndTv;\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport EntitiesContainer from '~/src/features/tariffBuilder/containers/EntitiesContainer';\nimport { TEntityDescription } from '~/src/features/tariffBuilder/reducer/initialState';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst AdditionalSubscriptionsBlock = ({ header, description }: TEntityDescription): JSX.Element => {\n const defaultDescription = <>\n Будте уверены — интернет не пропадет и в нужный момент будет всегда под рукой.\n Сеть под нашим контролем круглосуточно\n ;\n\n return (\n <>\n \n

    {header ? header : 'Книги, игры, музыка и экономия'}

    \n {description\n ? \n : {defaultDescription}\n }\n
    \n\n \n \n );\n};\n\nexport default AdditionalSubscriptionsBlock;\n","import { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\n\nimport EntitiesContainer from '~/src/features/tariffBuilder/containers/EntitiesContainer';\nimport { TEntityDescription } from '~/src/features/tariffBuilder/reducer/initialState';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\n\nconst AntivirusBlock = ({ header, description }: TEntityDescription): JSX.Element => {\n const defaultDescription = <>\n Будте уверены — интернет не пропадет и в нужный момент будет всегда под рукой.\n Сеть под нашим контролем круглосуточно\n ;\n\n return (\n <>\n \n

    {header ? header : 'Антивирусы'}

    \n {description\n ? \n : {defaultDescription}\n }\n
    \n\n \n \n );\n};\n\nexport default AntivirusBlock;\n","import Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\n\nimport { setStep } from '~/src/features/tariffBuilder/actions';\nimport { useConstructorAnalytics } from '~/src/features/tariffBuilder/analytics/hooks/useConstructorAnalytics';\nimport AdditionalSubscriptionsBlock from '~/src/features/tariffBuilder/components/AdditionalSubscriptionsBlock';\nimport AntivirusBlock from '~/src/features/tariffBuilder/components/AntivirusBlock';\nimport Section from '~/src/features/tariffBuilder/components/Section';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport { EEntity } from '~/src/features/tariffBuilder/types/EEntity';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\n\nconst Subscriptions = (): JSX.Element => {\n const dispatch = useCtxDispatch();\n const entityDescription = useCtxSelector(state => state.entityDescription);\n\n const analytics = useConstructorAnalytics();\n\n const handleButtonClick = () => {\n dispatch(setStep(ESteps.Equipment));\n analytics.clickedMoveToEquipment();\n };\n\n return (\n <>\n
    \n \n
    \n\n
    \n \n
    \n \n \n \n \n );\n};\n\nexport default Subscriptions;\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport SteppableProgressBar from '@r1-frontend/ui-react/organisms/SteppableProgressBar';\n\nimport { MEGABIT_AVAIL_CODES_LIST, MEGABIT_SPEED } from '~/src/features/full-buy/consts';\nimport { setStep } from '~/src/features/tariffBuilder/actions';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSelectedEntity from '~/src/features/tariffBuilder/selectors/getSelectedEntity';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TState } from '~/src/store';\n\nconst ProgressBarContainer = (): JSX.Element => {\n const currentStep = useCtxSelector(state => (state.currentStep));\n const { speed, currentTariff, requestId } = useCtxSelector(state => ({\n speed: getSelectedEntity(state),\n currentTariff: selectCurrentTariff(state),\n requestId: state.requestId,\n }));\n const { isHouseConnected, gigabitAvail } = useSelector((state: TState) => (state.contactAddress.verifiedAddressData));\n const dispatch = useCtxDispatch();\n\n const progress = (currentStep - ESteps.FillAddress + 1) / (ESteps.Final - ESteps.FillAddress);\n\n const canConnectAfterCheckedAddress = useMemo(() => {\n const gigabitMayConnect = MEGABIT_AVAIL_CODES_LIST.includes(gigabitAvail);\n\n const requiredGigaSpeed = !!speed && (Number(speed) > MEGABIT_SPEED);\n\n return requiredGigaSpeed\n ? (isHouseConnected && gigabitMayConnect)\n : isHouseConnected;\n }, [isHouseConnected, gigabitAvail, speed]);\n\n const onClickHandler = () => {\n if (!currentTariff) {\n dispatch(setStep(currentStep - 1));\n return;\n }\n if (currentStep === ESteps.FillContacts) {\n dispatch(setStep(ESteps.Equipment));\n } else {\n dispatch(setStep(currentStep - 1));\n }\n };\n\n const dynamicProps: { title: string, imgName?: string } = useMemo(() => {\n switch (currentStep) {\n case ESteps.FillContacts: {\n return {\n title: 'Оформление заявки',\n onClick: onClickHandler,\n };\n }\n case ESteps.FillAddress: {\n return {\n title: canConnectAfterCheckedAddress ? 'Уже прокладываем маршрут...' : 'Проверка адреса',\n imgName: canConnectAfterCheckedAddress ? 'dog-walking.gif' : '',\n onClick: onClickHandler,\n };\n }\n case ESteps.CreateAgreement: {\n return {\n title: 'Осталось совсем чуть-чуть...',\n };\n }\n case ESteps.SelectVisitData: {\n return {\n title: 'Остался последний шаг',\n };\n }\n case ESteps.Final: {\n return {\n title: (currentTariff && !requestId) ? '' : 'Вы молодец! Заявка отправлена.',\n imgName: 'lightblue-paper-airplane.gif',\n };\n }\n default: {\n return {\n title: '',\n };\n }\n }\n }, [currentStep, canConnectAfterCheckedAddress, currentTariff, requestId]);\n\n const props = {\n progress: progress,\n imgPath: '/static/images/full-buy/for-progress-bar',\n\n ...dynamicProps,\n };\n\n return (\n \n \n \n );\n};\n\nexport default ProgressBarContainer;\n","import styled from 'styled-components';\n\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nexport const TotalInfo = styled(ListContainer)`\n width: 100%;\n`;\n\nexport const PriceWrap = styled(ListContainer)`\n align-items: center;\n`;\n","import { Cost } from '@r1-frontend/ui-react/components/costs';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph3 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TwoInRow } from '~/src/features/tariffBuilder/styled';\nimport * as ST from './styled';\n\ninterface IProps {\n total: number,\n discountValue: number,\n}\n\nconst TotalInfo = ({ total, discountValue }: IProps): JSX.Element => {\n return (\n \n

    Итого:

    \n \n {!!discountValue &&\n \n {total + discountValue}\n \n }\n

    {total}

    \n
    \n
    \n );\n};\n\nexport default TotalInfo;\n","import styled from 'styled-components';\n\nimport { RounderContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\n\nexport const RoundedStickyBlock = styled(withRadius(\n RounderContainer,\n { $radius: 24 },\n))`\n width: 100%;\n position: sticky;\n top: 120px;\n margin-top: 54px;\n padding: 24px;\n height: max-content;\n\n background-color: ${COLORS.BgSurface};\n`;\n","import { useState } from 'react';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport BottomSheet from '@r1-frontend/ui-react/organisms/Modal/BottomSheet';\nimport StickyBottomSheet from '@r1-frontend/ui-react/organisms/Modal/StickyBottomSheet';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport SummaryInfo from '~/src/features/tariffBuilder/components/SummaryInfo';\nimport TotalInfo from '~/src/features/tariffBuilder/components/TotalInfo';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\n\nimport * as ST from './styled';\n\nconst SummaryInfoContainer = (): JSX.Element => {\n const [isBottomSheetShown, setIsBottomSheetShown] = useState(false);\n const isLaptop = useMatchMediaByWidth(wideBreakpoints.laptop);\n const summaryInfo = useCtxSelector(getSummaryInfo);\n\n\n const toggleStickyClick = () => {\n setIsBottomSheetShown(prev => !prev);\n };\n\n return (\n <>\n {isLaptop\n ? <>\n \n \n \n \n \n \n \n : \n \n \n \n \n }\n \n );\n};\n\nexport default SummaryInfoContainer;\n","import { useCallback } from 'react';\nimport { useRouter } from 'next/router';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { BlockContainer, FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport SummaryInfo from '~/src/features/tariffBuilder/components/SummaryInfo';\nimport { GA_CATEGORY } from '~/src/features/tariffBuilder/constants/analytics';\nimport { useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\nimport selectCurrentTariff from '~/src/features/tariffBuilder/selectors/selectCurrentTariff';\nimport { getAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\n\nimport AgreementInfoContainer from '../AgreementInfoContainer';\n\nconst SummaryInfoContainer = (): JSX.Element | null => {\n const sendAnalytics = getAnalyticsSender(GA_CATEGORY);\n\n const isLaptop = useMatchMediaByWidth(wideBreakpoints.laptop);\n const summaryInfo = useCtxSelector(getSummaryInfo);\n const { agreement, currentTariff } = useCtxSelector(state => ({\n agreement: state.agreement,\n currentTariff: selectCurrentTariff(state),\n }));\n const router = useRouter();\n\n const onGoToPayment = useCallback(() => {\n router.push({\n pathname:'/payments',\n query: {\n pay: 'online',\n agreement: agreement.agreementNumber,\n s: summaryInfo.total,\n },\n });\n\n sendAnalytics('click payment', 'btn: \"Оплатить\"');\n }, []);\n\n if (isLaptop) {\n return null;\n }\n\n return (\n <>\n \n {!agreement.hasError && !currentTariff &&\n

    Оплатить можно только до или во время визита инженера

    \n }\n \n \n \n \n {!agreement.hasError && !currentTariff &&\n \n }\n \n \n \n \n );\n};\n\nexport default SummaryInfoContainer;\n","import React, { useContext, useEffect, useMemo } from 'react';\nimport { SkeletonTheme } from 'react-loading-skeleton';\nimport { useSelector } from 'react-redux';\nimport reduce from 'lodash/reduce';\nimport styled from 'styled-components';\n\nimport PercentDiscountLabel from '@r1-frontend/ui-react/components/DiscountLabel/PercentDiscountLabel';\nimport { WithSkeleton, WithSkeletonContext } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport StepTabs from '@r1-frontend/ui-react/components/StepMenu';\nimport { TStepTabsItem } from '@r1-frontend/ui-react/components/StepMenu/StepTabs';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport BaseToaster from '@r1-frontend/ui-react/experimental/Toaster/Toaster';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\n\nimport { setStep } from '~/src/features/tariffBuilder/actions';\nimport { initialization } from '~/src/features/tariffBuilder/actions/thunk';\nimport RulesBannerBlock from '~/src/features/tariffBuilder/components/RulesBannerBlock';\nimport steps from '~/src/features/tariffBuilder/constants/steps';\nimport ProgressBarContainer from '~/src/features/tariffBuilder/containers/ProgressBarContainer';\nimport SummaryInfoContainer from '~/src/features/tariffBuilder/containers/SummaryInfoContainer';\nimport { Ctx } from '~/src/features/tariffBuilder/Ctx';\nimport { useCtxDispatch, useCtxSelector } from '~/src/features/tariffBuilder/hooks';\nimport getSummaryInfo from '~/src/features/tariffBuilder/selectors/getSummaryInfo';\nimport { ESteps } from '~/src/features/tariffBuilder/types/ESteps';\nimport { TLimitations } from '~/src/features/tariffBuilder/types/TLimitations';\nimport { useScroll } from '~/src/helpers/hooks/useScroll';\nimport { useValueByBreakpoint } from '~/src/helpers/hooks/useValueByBreakpoint';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport FinalSummaryInfoContainer from './containers/FinalSummaryInfoContainer';\n\nimport { Block, DoubleColumnLayout, RightSide, TabsContainer } from '~/src/features/tariffBuilder/styled';\n\ntype TConstructorProps = {\n routerLimitations: TLimitations,\n decoderLimitations: TLimitations,\n withCurrent?: boolean,\n className?: string,\n}\n\nconst Constructor = ({ routerLimitations, decoderLimitations, withCurrent, ...props }: TConstructorProps): JSX.Element | null => {\n const companyName = useSelector(selectCompanyName);\n\n const scrollToTop = useScroll({ absolute: 'top' });\n const dispatch = useCtxDispatch();\n const { toaster: toasterData } = useContext(Ctx);\n\n const { currentStep, summaryInfo, initialized, maximumTakenStep } = useCtxSelector(state => ({\n initialized: state.initialized,\n currentStep: state.currentStep,\n maximumTakenStep: state.maximumTakenStep,\n summaryInfo: getSummaryInfo(state),\n }));\n\n const verticalIndent = useValueByBreakpoint({\n desktop: 165,\n laptop: 135,\n });\n\n const Page = steps[currentStep].Page;\n\n const memoSteps = useMemo(() => {\n return reduce(steps, (result: TStepTabsItem[], step) => {\n if ('label' in step && 'Image' in step) {\n result.push(step);\n }\n\n return result;\n }, []);\n }, []);\n\n useEffect(() => {\n dispatch(initialization(routerLimitations, decoderLimitations, withCurrent));\n }, []);\n\n useEffect(() => {\n scrollToTop(null);\n }, [Page]);\n\n const handleSelectStep = (stepId: number) => {\n dispatch(setStep(stepId));\n };\n\n return (\n
    \n \n \n \n \n \n {currentStep < ESteps.FillAddress && (\n \n \n

    Тариф Конструктор от {companyName}

    \n \n
    \n
    \n )}\n {currentStep > ESteps.Equipment\n ? \n : \n \n \n \n {summaryInfo.discount}\n \n }\n \n
    \n\n \n {currentStep === ESteps.Final\n ? \n : \n }\n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default styled(Constructor)`\n width: 100%;\n\n .react-skeleton-flex-1 {\n display: flex;\n flex: 1;\n }\n\n .react-skeleton-flex-1.fd-row {\n flex-direction: row;\n }\n\n .react-skeleton-flex-1.gap8 {\n gap: 8px;\n }\n\n .react-skeleton-flex-1.gap16 {\n gap: 16px;\n }\n`;\n","import { useSelector } from 'react-redux';\n\nimport WideContainer from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nimport { IS_LOCAL_ENVIROMENT } from '~/src/constants';\nimport { selectIsAuth } from '~/src/store/selectors/auth/selectIsAuth';\n\nimport Constructor from './Constructor';\nimport Context from './Ctx';\n\nconst TariffBuilder = (): JSX.Element => {\n const isAuth = useSelector(selectIsAuth);\n\n return (\n \n \n \n \n \n );\n};\n\nexport default TariffBuilder;\n","import React from 'react';\nimport { NextPage } from 'next';\n\nimport calculate from '@r1-frontend/api-domru/api-tariffs/v1/tariff/calculate';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Layout from '~/src/features/_layout';\nimport Constructor from '~/src/features/tariffBuilder';\nimport { isConstructorAuthEnabled } from '~/src/features/tariffBuilder/constants/abnVariants';\nimport { initialProps } from '~/src/helpers/basePageFunc';\nimport getRequester from '~/src/helpers/getRequester';\nimport { nonPermanentRedirect } from '~/src/helpers/url';\n\ntype TConstructorPageProps = {\n cityIn: string,\n companyName: string,\n}\n\nconst ConstructorPage: NextPage = ({ cityIn, companyName }): JSX.Element => {\n return (\n \n \n \n );\n};\n\nConstructorPage.getInitialProps = async(ctx): Promise => {\n const { req, res, store, query } = ctx;\n\n const { validatedAccessToken } = await initialProps(ctx, { isNeedAuthData: true });\n\n const { city: { currentCity }, auth: { clientProducts } } = store.getState();\n const doRequest = getRequester(req);\n\n const constructorResponse = await doRequest.apiTariffs(calculate({}));\n\n if (validatedAccessToken && !isConstructorAuthEnabled()) {\n nonPermanentRedirect({ res, location: '/' });\n }\n\n if (validatedAccessToken && !clientProducts?.isConstructor && !query.bannerId) {\n nonPermanentRedirect({ res, location: '/lk/change-tariff' });\n }\n\n /**\n * If the calculate method of the api-tariff answers with a 404 status code, we should redirect to the root of the\n * site. The 404 status code from the method means that the billing service does not correctly process a request by\n * a providerId\n */\n if (!constructorResponse.isSuccess && constructorResponse.error.status === 404) {\n nonPermanentRedirect({ res, location: '/' });\n }\n\n return {\n cityIn: currentCity.cityIn,\n companyName: currentCity.companyName,\n };\n};\n\nexport default ConstructorPage;\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\nimport axios from 'axios';\nimport { stringify } from 'qs';\nimport cookies from 'react-cookies';\n\nimport { ACCESS_TOKEN_COOKIE, NO_CACHE_COOKIE } from '~/src/constants';\n\n/**\n * Запрос в ApiContent\n */\nconst axiosContent = axios.create({\n baseURL: isServerSide()\n ? process.env.NEXT_PUBLIC_HOST_API_CONTENT_INNER || process.env.NEXT_PUBLIC_HOST_API_CONTENT\n : process.env.NEXT_PUBLIC_HOST_API_CONTENT,\n});\n\naxiosContent.interceptors.request.use(\n (config) => {\n const token = cookies.load(ACCESS_TOKEN_COOKIE);\n const noCacheKey = cookies.load(NO_CACHE_COOKIE);\n\n const headers = {\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (!config.headers['Authorization'] && token) {\n headers['Authorization'] = `Bearer ${ token }`;\n }\n\n if (noCacheKey) {\n headers['no-cache-key'] = noCacheKey;\n }\n config.headers = { ...config.headers, ...headers };\n\n return config;\n },\n (error) => Promise.reject(error),\n);\n\n/**\n * @deprecated\n * @type {AxiosInstance}\n */\nconst contentRequest = Object.create(axiosContent);\n\ncontentRequest.get = async(url, options) => {\n if (options) {\n options.paramsSerializer = params => {\n return stringify(params);\n };\n }\n return axiosContent.get(url, options);\n};\nexport default contentRequest;\n","import React, { useCallback } from 'react';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { ResponseDto } from '@r1-frontend/api-domru/dadata/suggest/dto/ResponseDto';\nimport suggestFio from '@r1-frontend/api-domru/dadata/suggest/fio';\n\nimport { IPersonFormProps, PersonForm as PersonFormComponent } from '@r1-frontend/ui-react/organisms/Forms/PersonForm';\n\ntype TProps = Omit;\n\nexport const PersonForm = ({\n fio,\n phone,\n onChangeFio,\n onChangePhone,\n isNeedToBlockInvalidFio = false,\n actionButtonProps,\n}: TProps): JSX.Element => {\n const onLoadSuggestions = useCallback(async(value) => {\n const resp = await doRequest.dadataProxy(\n suggestFio(value),\n );\n\n return resp.isSuccess\n ? resp.payload?.suggestions.map(suggestion => suggestion.value)\n : [];\n }, []);\n\n return (\n \n );\n};\n","import { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport { IAddress } from '~/src/store/reducers/auth';\n\nexport const getClientPersonalAddressStr = (address?: IAddress): string => {\n if (!address) {\n return '';\n }\n\n const city = address.city ? `г.${NBSP}${address.city}` : '';\n const steet = address.street ? `ул.${NBSP}${address.street}` : '';\n const house = address.house ? `д.${NBSP}${address.house}` : '';\n const flat = address.flat ? `кв.${NBSP}${address.flat}` : '';\n\n return `${city}, ${steet}, ${house}, ${flat}`;\n};\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nexport class AddressVerificationAnalytics extends BaseAnalytics {\n constructor(category = 'address_verification') {\n super();\n this.category = category;\n }\n\n clickedAddressVerification() {\n this.send('click address verification');\n }\n\n addressVerification(label: string) {\n this.send('address verification', label);\n }\n\n confirmCheckAddress() {\n this.send('step_check_address', 'confirm');\n }\n\n addressInputFieldsCallback(action: string) {\n this.send(action);\n }\n}\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nexport class PersonalVerificationAnalytics extends BaseAnalytics {\n constructor(category = 'personal_verification') {\n super();\n this.category = category;\n }\n\n openedPersonalDataVerification() {\n this.send('open_personal_data_verification');\n }\n\n stepPersonalData(label: string) {\n this.send('step_personal_data', label);\n }\n\n enterPhoneNumber() {\n this.send('enter phone_number');\n }\n\n enterFio() {\n this.send('enter fio');\n }\n}\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nexport class SubmitRequestAnalytics extends BaseAnalytics {\n constructor(category = 'submit_request') {\n super();\n this.category = category;\n }\n\n requestConnectionSuccess() {\n this.send('request connection', 'success');\n }\n\n requestConnectionError(message: string, status?: number) {\n const label = status ? `error status: ${status} message ${message}` : `error ${message}`;\n this.send('request connection', label);\n }\n}\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { AddressVerificationAnalytics } from './AddressVerification.analytics';\nimport { PersonalVerificationAnalytics } from './PersonalVerification.analytics';\nimport { SubmitRequestAnalytics } from './SubmitRequest.analytics';\n\ntype TEntityType = 'decoder' | 'router';\n\ninterface IAddProductSuccessParams {\n type: TEntityType,\n title: string,\n period: number,\n cost?: number,\n}\n\ninterface IAddProductParams {\n type: TEntityType,\n title: string,\n}\n\nexport class ConstructorAnalytics extends BaseAnalytics {\n personalVerification: PersonalVerificationAnalytics;\n addressVerification: AddressVerificationAnalytics;\n submitRequest: SubmitRequestAnalytics;\n\n constructor(category = 'constructor') {\n super();\n this.category = category;\n this.personalVerification = new PersonalVerificationAnalytics(this.category);\n this.addressVerification = new AddressVerificationAnalytics(this.category);\n this.submitRequest = new SubmitRequestAnalytics(this.category);\n }\n\n moveSpeedSlider() {\n this.send('move_speed_slider');\n }\n\n clickedHaveSmartTvCheckBox() {\n this.send('click_on_the_i_have_smart_tv_check_box');\n }\n\n clickedMoveToEquipment() {\n this.send('click_move_to_equipment');\n }\n\n clickedMoveToSubscription() {\n this.send('click_move_to_subscription');\n }\n\n clickedOnlineCinemaCheckBox(label: string) {\n this.send('click_on_the_online_cinema_check_box', label);\n }\n\n clickedTvChannelCheckBox(label: string) {\n this.send('click_on_the_tv_channel_check_box', label);\n }\n\n clickedSubscriptionCheckBox(title: string) {\n this.send('click_on_the_subscription_check_box', title);\n }\n\n clickedAntivirusCheckBox(title: string) {\n this.send('click_on_the_antivirus_check_box', title);\n }\n\n addProductSuccess({ type, title, period, cost }: IAddProductSuccessParams) {\n const label = `type:${type}|name:${title}|price:${cost}|dur:${period}|`;\n this.send('add_product_success', label);\n }\n\n clickedAddProduct({ type, title }: IAddProductParams) {\n this.send('click_add_product', `type:${type}|name:${title}|`);\n }\n\n clickedMoveToFullbuyForm() {\n this.send('click_move_to_fullbuy_form');\n }\n\n clickedOpenConnectionCostPopup() {\n this.send('connection_cost_popup', 'view_popup');\n }\n}\n\n\nexport const constructorAnalytics = new ConstructorAnalytics();\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nexport class ChangeTariffAnalytics extends BaseAnalytics {\n constructor(category = 'change_tariff') {\n super();\n this.category = category;\n }\n\n confirmTariffChangingError() {\n this.send('confirm_tariff_changing', 'error');\n }\n\n confirmTariffChangingSuccess() {\n this.send('confirm_tariff_changing', 'success');\n }\n\n confirmTariff100plusChangingSuccess() {\n this.send('confirm_tariff100plus_changing', 'success');\n }\n}\n","import { ChangeTariffAnalytics } from './ChangeTariff.analytics';\nimport { ConstructorAnalytics } from '.';\n\nclass ConstructorCurrentTariffAnalytics extends ConstructorAnalytics {\n changeTariff: ChangeTariffAnalytics\n\n constructor(category = 'constructor_authorized') {\n super();\n this.category = category;\n this.changeTariff = new ChangeTariffAnalytics(this.category);\n }\n\n clickedMoveToChangeTariff() {\n this.send('click_move_to_change_tariff');\n }\n}\n\nexport const constructorCurrentTariffAnalytics = new ConstructorCurrentTariffAnalytics();\n\n\n","import { getABNVariant } from '~/src/helpers/abn-tests';\n\nexport const CONSTRUCTOR_AUTH = {\n testName: 'constructor_auth',\n variants: {\n on: 'constructor_auth_on',\n off: 'constructor_auth_off',\n },\n};\n\nexport const isConstructorAuthEnabled = () => getABNVariant(CONSTRUCTOR_AUTH.testName) === CONSTRUCTOR_AUTH.variants.on;\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport defaultImageFallback from '~/static/images/defaultImageFallback.svg';\n\ninterface ITimeout {\n hasTimeout?: boolean,\n timeoutDelay?: number,\n}\n\ninterface IOptions {\n timeout?: ITimeout,\n fallbackSrc?: string,\n}\n\ntype TEvent = Event | string | undefined;\n\nexport interface IProgressiveImageExtendedResult {\n sourceLoaded: string,\n isFallback: boolean,\n errorEvent: TEvent,\n}\n\nconst getImage = (onSuccess: () => void, onError: OnErrorEventHandlerNonNull, src?: string) => {\n if (src && isClientSide()) {\n const img = new Image();\n img.src = src;\n img.onload = onSuccess;\n if (onError) {\n img.onerror = onError;\n }\n } else {\n onError('No src');\n }\n};\n\n// использовать только для картинок (LazyLoadImage, img, picture),\n// не подходит для фоновых изображений (css: background, background-image), для них ручная проверка - useWebp\nexport function useProgressiveImage(\n src?: string,\n timeout?: ITimeout,\n fallbackSrc = defaultImageFallback,\n): string {\n const [sourceLoaded, setSourceLoaded] = useState('');\n const { hasTimeout = false, timeoutDelay = 0 } = timeout || {};\n\n const onSuccess = useCallback(\n () => hasTimeout\n ? setTimeout(() => setSourceLoaded(src as string), timeoutDelay)\n : setSourceLoaded(src as string),\n [src, hasTimeout, timeoutDelay],\n );\n\n const onError = useCallback(() => {\n setSourceLoaded(fallbackSrc);\n }, [fallbackSrc]);\n\n useMemo(() => getImage(onSuccess, onError, src), [onError, onSuccess, src]);\n\n return sourceLoaded;\n}\n\nexport function useProgressiveImageWithFallbackDetection(\n src?: string,\n options?: IOptions,\n): IProgressiveImageExtendedResult {\n const {\n timeout,\n fallbackSrc = defaultImageFallback,\n } = options || {};\n const [sourceLoaded, setSourceLoaded] = useState('');\n const [isFallback, setIsFallback] = useState(false);\n const [errorEvent, setErrorEvent] = useState(undefined);\n\n const { hasTimeout = false, timeoutDelay = 0 } = timeout || {};\n\n const onSuccess = useCallback(\n () => hasTimeout\n ? setTimeout(() => setSourceLoaded(src as string), timeoutDelay)\n : setSourceLoaded(src as string),\n [src, hasTimeout, timeoutDelay],\n );\n\n const onError = useCallback((event) => {\n setSourceLoaded(fallbackSrc);\n setIsFallback(true);\n setErrorEvent(event);\n }, [fallbackSrc]);\n\n useMemo(() => getImage(onSuccess, onError, src), [onError, onSuccess, src]);\n\n return ({ sourceLoaded, isFallback, errorEvent });\n}\n","import React, { useCallback } from 'react';\n\ntype TRef = React.RefObject;\n\ninterface IScrollSettings {\n alignment?: ScrollLogicalPosition,\n behavior?: ScrollBehavior,\n absolute?: 'top' | 'bottom',\n}\n\n/**\n * Хук скролла к элементу\n *\n * Если нужен просто скролл (вверх/вниз страницы) без привязки к элементу, используйте настройку { absolute: 'top' | 'bottom' }\n *\n * @function\n * @name hooks.useScroll\n * @param {Object} settings - Настройки поведения скролла. С аргументом offsetY отработает только свойство settings.behavior.\n * @param {number} offsetY - Скроллинг со сдвигом позиции.\n * @returns {(ref: TRef) => void}\n */\nexport function useScroll(\n settings?: IScrollSettings,\n offsetY?: number,\n): (ref: TRef | null) => void {\n return useCallback((ref) => {\n const behavior = settings?.behavior || 'smooth';\n\n if (settings?.absolute) {\n window.scrollTo({ top: settings.absolute === 'top' ? 0 : document.body.scrollHeight, behavior });\n return;\n }\n\n if (offsetY) {\n const top = ref?.current?.getBoundingClientRect().top || 0;\n const y = top + window.pageYOffset + offsetY;\n window.scrollTo({ top: y, behavior });\n } else {\n ref?.current?.scrollIntoView({\n behavior,\n block: settings?.alignment || 'center',\n });\n }\n }, [settings, offsetY]);\n}\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\n// Записывает объект в хранилище sessionStorage\nexport const setSessionStorageByKey = (key: string, params: Record): boolean => {\n if (isServerSide()) {\n return false;\n }\n\n try {\n sessionStorage.setItem(key, JSON.stringify(params));\n return true;\n } catch {\n return false;\n }\n};\n\n// Возвращает объект из хранилища sessionStorage\nexport const getSessionStorageByKey = (key: string): Record | null => {\n if (isServerSide()) {\n return null;\n }\n\n try {\n const values = sessionStorage.getItem(key);\n return values ? JSON.parse(values) : null;\n } catch {\n return null;\n }\n};\n\n// Возвращает объект из хранилища с нужным типом\nexport const getSessionStorageDataWithTypes = (key: string): T | null => {\n if (isServerSide()) {\n return null;\n }\n\n const dataString = sessionStorage.getItem(key);\n\n if (dataString) {\n const parsedData: T = JSON.parse(dataString);\n return parsedData;\n }\n return null;\n};\n\n// Удаляет объект из хранилища по ключу\nexport const removeSessionStorageDataByKey = (key: string): void => {\n if (!isServerSide()) {\n sessionStorage.removeItem(key);\n }\n};\n","\nimport { TState } from '~/src/store';\n\nexport const selectIsAuth = (state: TState) => {\n return state.auth.isAuth;\n};\n","import { TState } from '~/src/store';\n\nconst selectCallCenterNumber = (state: TState): string => state.city.currentCity.callCenter.replace(/\\D/g, '');\n\nexport default selectCallCenterNumber;\n","import { createSelector } from 'reselect';\n\nimport { IServices } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { PRODUCTS } from '~/src/constants';\nimport { TState } from '~/src/store';\nimport { IClientPersonal } from '~/src/store/reducers/auth';\n\nexport const selectClientServices = (state: TState): IServices[] | null => {\n return state.auth.clientProducts?.services || null;\n};\n\n/**\n * Получить agreementId\n *\n * @function\n * @name store.selectors.service.selectClientAgreementId\n * @param {object} state - Состояние\n * @returns {number}\n */\nexport const selectClientAgreementId = (state: TState): IClientPersonal['agreementId'] | null => {\n return state.auth.clientPersonal?.agreementId || null;\n};\n\nexport const selectActiveServicesIds = createSelector(\n selectClientServices,\n (items) => {\n if (items == null) {\n return [];\n }\n return items\n .reduce((acc, val) => {\n if (val.activated === 1) {\n acc.push(val.productId);\n }\n return acc;\n }, []);\n },\n);\n\nexport const selectNotSuspendServicesIds = createSelector(\n selectClientServices,\n (items) => {\n if (!items) {\n return [];\n }\n return items\n .reduce((acc, val) => {\n if (val.suspendStatus === 0) {\n acc.push(val.productId);\n }\n return acc;\n }, []);\n },\n);\n\nexport const selectInternetService = createSelector(\n selectClientServices,\n (items: IServices[] | null) => items ? items.find((item) => item.productId === PRODUCTS.internet) : null,\n);\n\nexport const selectTerminalResource = function(state: TState): number | null {\n const internetServiceItem = selectInternetService(state);\n if (!internetServiceItem) {\n return null;\n }\n return internetServiceItem.terminalResources[0].id;\n};\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\nexport type { RequestDto } from './dto/RequestDto';\n\n/**\n * Смена тарифа/пакета\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v1#/Tariffs/bae45717eb8c85efb15fcf08b59e99f3\n * */\nexport const changePlanWebcab = (body: RequestDto): IRequest => ({\n uri: '/v1/change-tariff/change-plan-webcab',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(body),\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\nexport type { RequestDto } from './dto/RequestDto';\nexport type { ResponseDto } from './dto/ResponseDto';\n\n/**\n * Создает заявки БП подключения Интернет (с ПП Переключение на 100+,\n * Переключение на wi-fi и Доставка оборудования Интернет) и Дом.ru TV\n * (с пп мини-IP и Доставка оборудования ТВ)\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v2#/Tariffs/86ca9fd3cd20b78f113529cce4b27717\n * */\nexport const createRequest = (body: RequestDto): IRequest => ({\n uri: '/v2/change-tariff/create-request',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(body),\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { IReplanRequest } from './dto/IReplanRequest';\n\n/**\n * Изменение времени/телефона всех заявок на договоре, одновременно.\n * https://master.api-request.sandbox.d2c.r-one.io/docs/v1#/ManagingConnectionRequest/b08f858bfc0beaaa99ba85bd90a2646c\n */\nexport const replan = (body: IReplanRequest): IRequest => ({\n uri: '/v1/managing-connection-request/re-plan',\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(body),\n});\n","export enum ESaleAgentClientName {\n FULL_BUY_SITE = 'FULL_BUY_SITE',\n FULL_BUY_EQUIPMENT_SITE = 'FULL_BUY_EQUIPMENT_SITE',\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Получение доступных тайм-слотов\n */\nexport const saleAgentTimeSlots = (providerId: number, data: RequestDto): IRequest => ({\n uri: `/v1/${providerId}/sale-agent/time-slots`,\n method: 'POST',\n body: JSON.stringify(data),\n withProvider: true,\n});\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type TVerticalPosition = 'left' | 'right';\nexport type THorizontalPosition = 'top' | 'bottom';\n\nexport type TVerticalProps = {\n $position: TVerticalPosition,\n}\n\nexport type THorizontalProps = {\n $position: THorizontalPosition,\n}\n\nconst Strip = styled.div`\n display: block;\n position: absolute;\n cursor: pointer;\n\n background: ${COLORS.Outline_Light};\n border-radius: 12px;\n`;\n\nconst VerticalStrip = styled(Strip)`\n top: calc(50% - 20px);\n\n height: 40px;\n width: 4px;\n ${({ $position }) => `${$position === 'left' ? 'right' : 'left'}: 10px`};\n`;\n\nconst HorizontalStrip = styled(Strip)`\n left: calc(50% - 20px);\n\n width: 40px;\n height: 4px;\n ${({ $position }) => `${$position === 'top' ? 'bottom' : 'top'}: 10px`};\n`;\n\nexport {\n HorizontalStrip,\n VerticalStrip,\n};\n","import React, { ReactNode, SyntheticEvent } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { HorizontalStrip, VerticalStrip } from '@r1-frontend/ui-react/components/Modal/Strip';\nimport { TSvgProps } from '@r1-frontend/ui-react/components/svg/createSvg';\nimport { Close } from '@r1-frontend/ui-react/components/svg/main';\nimport { TRadius } from '@r1-frontend/ui-react/experimental/containers/RounderContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type TSheetPosition = |\n 'top' |\n 'right' |\n 'bottom' |\n 'left';\n\nexport type TSheetProps = {\n children: ReactNode | string,\n position?: TSheetPosition,\n onStripClick?: () => void,\n onIconClick?: (e: SyntheticEvent) => void,\n Icon?: (props: TSvgProps) => JSX.Element,\n\n $radius?: TRadius,\n $bgColor?: COLORS,\n}\n\nconst Sheet = ({\n children,\n position = 'bottom',\n onStripClick,\n onIconClick = () => true,\n Icon = Close,\n ...props\n}: TSheetProps): JSX.Element => {\n const StripComponent = position === 'top' || position === 'bottom' ? HorizontalStrip : VerticalStrip;\n\n return
    \n {/* Typescript could not satisfy types of StripComponent */}\n {/* @ts-ignore */}\n \n\n {Icon && (\n }\n />\n )}\n\n {children}\n
    ;\n};\n\nexport default Sheet;\n","import styled, { css } from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport BaseSheet, { TSheetProps } from './Sheet';\n\nconst getStylesByPosition = (props: TSheetProps) => {\n const radius = props.$radius || 32;\n const position = props.position || 'bottom';\n\n const map = {\n 'right': `${radius}px 0 0 ${radius}px`,\n 'left': `0 ${radius}px ${radius}px 0`,\n 'top': `0 0 ${radius}px ${radius}px`,\n 'bottom': `${radius}px ${radius}px 0 0`,\n };\n\n const paddingMap = { 'top': 'bottom', 'right': 'left', 'bottom': 'top', 'left': 'right' };\n\n const defaultPadding = 20;\n\n return css`\n border-radius: ${map[position]};\n padding-${paddingMap[position]}: ${defaultPadding}px;\n `;\n};\n\nconst Sheet = styled(BaseSheet)`\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n\n background-color: ${({ $bgColor = COLORS.BgSurface }) => $bgColor};\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n border: 1px solid ${COLORS.Outline_Light};\n\n overflow-y: hidden;\n\n transition: .5s;\n transform: translateY(0);\n\n width: 100%;\n max-height: calc(100vh - 80px);\n height: auto;\n\n box-sizing: border-box;\n\n ${getStylesByPosition};\n\n ${Button} {\n position: absolute;\n top: 16px;\n right: 16px;\n }\n`;\n\nexport default Sheet;\n","import Sheet from './styled';\n\nexport default Sheet;\n","import styled, { css } from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Separator = styled.hr<{ $height?: number, $color?: COLORS, $hideLast?: boolean }>`\n height: ${({ $height = 1 }) => `${$height}px`};\n background-color: ${({ $color = COLORS.Control }) => $color};\n width: 100%;\n margin: 0;\n border-width: 0;\n\n ${({ $hideLast }) => $hideLast && css`\n &:last-child {\n display: none;\n }\n `}\n`;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport styled from 'styled-components';\n\nconst defaultProps = {\n duration: 0.3,\n isAnimate: true,\n isShow: false,\n};\n\nconst propTypes = {\n duration: PropTypes.number,\n isAnimate: PropTypes.bool,\n isShow: PropTypes.bool,\n};\n\nconst AccordionBody = styled.div`\n max-height: ${props => props.maxHeight || null};\n overflow: hidden;\n transition: max-height ${({ duration }) => duration}s ease;\n width: 100%;\n`;\n\nexport class AccordionAnimateBody extends Component {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n constructor(props) {\n super(props);\n this.state = { maxHeight: '0px' };\n this.bodyRef = React.createRef();\n }\n\n bodyHide = () => {\n if (this.props.isAnimate === false) {\n this.setState({ maxHeight: '0px' });\n return;\n }\n\n this.setState({ maxHeight: `${this.bodyRef.current.scrollHeight}px` });\n this.bodyRef.current.offsetHeight;\n this.setState({ maxHeight: '0px' });\n }\n\n bodyShow = () => {\n if (this.props.isAnimate === false) {\n this.clearStyle();\n return;\n }\n\n this.setState({ maxHeight: `${this.bodyRef.current.scrollHeight}px` });\n }\n\n clearStyle = () => {\n this.setState({ maxHeight: null });\n }\n\n componentDidMount() {\n if (this.props.isShow === false) {\n this.setState({ maxHeight: '0px' });\n }\n }\n\n componentDidUpdate({ isShow }) {\n if (isShow !== this.props.isShow) {\n if (this.props.isShow === true) {\n this.bodyShow();\n } else {\n this.bodyHide();\n }\n }\n }\n\n render() {\n return (\n {\n return;\n }}\n data-test={'AccordionBody'}\n {...this.props}\n >\n {this.props.children}\n \n );\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\nimport { FONTS } from '../../../tokens/fonts';\n\nconst defaultProps = {\n onClick: () => {\n return;\n },\n};\n\nconst propTypes = {\n onClick: PropTypes.func,\n text: PropTypes.string,\n};\n\nconst AccordionHeader = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n user-select: none;\n width: 100%;\n`;\n\nconst AccordionHeaderText = styled.span`\n border-bottom: 1px dotted ${COLORS.blue};\n color: ${COLORS.blue};\n display: inline-block;\n ${FONTS.S};\n`;\n\nconst AccordionHeaderIcon = styled.img`\n margin-left: 10px;\n transform: ${({ isShow }) => isShow ? 'rotate(-180deg)' : 'rotate(0deg)'};\n transform-origin: 50% 50%;\n transition: transform 0.3s ease;\n height: 7px;\n width: 12px;\n`;\n\nexport function AccordionAnimateHeader(props) {\n let headerContent = props.children;\n\n if (props.text !== undefined) {\n headerContent = (\n \n {props.text}\n \n \n );\n }\n\n return (\n \n {headerContent}\n \n );\n}\n\nAccordionAnimateHeader.defaultProps = defaultProps;\nAccordionAnimateHeader.propTypes = propTypes;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport { AccordionAnimateBody } from './AccordionAnimateBody';\nimport { AccordionAnimateHeader } from './AccordionAnimateHeader';\n\nconst defaultProps = {\n isShow: false,\n isAnimate: true,\n onToggle: () => {\n return;\n },\n};\n\nconst propTypes = {\n isShow: PropTypes.bool,\n isAnimate: PropTypes.bool,\n onToggle: PropTypes.func,\n};\n\nexport class AccordionAnimate extends Component {\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n\n constructor(props) {\n super(props);\n\n this.state = {\n isShow: this.props.isShow,\n };\n }\n\n getHeader(child) {\n return React.cloneElement(child, {\n isShow: this.state.isShow,\n onClick: this.accordionToggle,\n });\n }\n\n getBody(child) {\n return React.cloneElement(child, {\n duration: this.props.duration,\n isShow: this.state.isShow,\n isAnimate: this.props.isAnimate,\n });\n }\n\n accordionToggle = () => {\n this.setState(({ isShow }) => {\n return { isShow: !isShow };\n }, () => {\n this.props.onToggle(this.state.isShow);\n });\n }\n\n componentDidUpdate({ isShow }) {\n if (isShow !== this.props.isShow) {\n this.setState({\n isShow: this.props.isShow,\n });\n }\n }\n\n render() {\n return (\n
    \n {React.Children.map(this.props.children, (child) => {\n if (child.type && child.type.name === AccordionAnimateHeader.name) {\n return this.getHeader(child);\n } else if (child.type && child.type.name === AccordionAnimateBody.name) {\n return this.getBody(child);\n } else {\n return child;\n }\n })}\n
    \n );\n }\n}\n\nexport { AccordionAnimateBody } from './AccordionAnimateBody';\nexport { AccordionAnimateHeader } from './AccordionAnimateHeader';\n","import React, { FC, useCallback, useState } from 'react';\n\nimport { Label } from './styled';\n\nexport interface IBaseSwitcherProps {\n id?: string,\n name?: string,\n value?: string,\n checked?: boolean,\n disabled?: boolean,\n required?: boolean,\n onChange?: (event: React.ChangeEvent, state?: boolean) => void,\n className?: string,\n [key: string]: unknown,\n}\n\nconst BaseSwitcher: FC = ({\n id,\n name = '',\n value = '',\n checked,\n disabled = false,\n required,\n children,\n onChange,\n className,\n ...props\n}) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n const onChangeHandler = useCallback((event: React.ChangeEvent) => {\n if (!disabled) {\n if (required) {\n if (!isChecked) {\n setIsChecked(true);\n onChange && onChange(event, true);\n }\n } else {\n setIsChecked(!isChecked);\n onChange && onChange(event, !isChecked);\n }\n }\n }, [disabled, isChecked, onChange, required]);\n\n return (\n \n \n {children}\n \n );\n};\n\nexport default BaseSwitcher;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport BaseRadio from '@r1-frontend/ui-react/components/controls/baseRadio';\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, ListContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TInstallmentOptionProps } from './types';\n\nconst Installment = ({\n options,\n onSelect,\n\n ...props\n}: TInstallmentOptionProps): JSX.Element => {\n return (\n \n \n {Object.entries(options).map(([id, option]) => (\n \n \n {option.cost}\n \n \n ))}\n \n \n );\n};\n\nexport default styled(withRadius(Installment, { $radius: 16 }))`\n background-color: ${COLORS.BgMain};\n cursor: pointer;\n\n label {\n width: 100%;\n }\n\n input[type='radio'] {\n cursor: pointer;\n align-self: center;\n }\n\n & ${ListContainer} + ${ListContainer} ${DescribedCost} {\n cursor: pointer;\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n flex-wrap: nowrap;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & ${ListContainer}:first-child ${DescribedCost} {\n cursor: pointer;\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n & ${ListContainer} + ${ListContainer} {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid ${COLORS.BgSecondary};\n }\n\n & ${Button}.selected * {\n color: ${COLORS.TextWhite} !important;\n }\n`;\n","import styled from 'styled-components';\n\nimport BaseRadio from '@r1-frontend/ui-react/components/controls/baseRadio';\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TPurchaseOptionProps } from './types';\n\nconst Purchase = ({\n cost,\n period,\n onSelect,\n\n ...props\n}: TPurchaseOptionProps): JSX.Element => {\n return (\n \n \n {cost}\n \n \n );\n};\n\nexport default styled(withRadius(Purchase, { $radius: 16 }))`\n background-color: ${COLORS.BgMain};\n cursor: pointer;\n\n label {\n width: 100%;\n cursor: pointer;\n }\n\n input[type='radio'] {\n cursor: pointer;\n align-self: center;\n }\n\n ${DescribedCost} {\n cursor: pointer;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${DescribedCost} {\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n }\n }\n`;\n","import React, { useState } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { TPeriod, TPurchaseOptionsProps } from '@r1-frontend/ui-react/components/costs/PurchaseOptions/types';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer, ListContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Installment from './Installment';\nimport Purchase from './Purchase';\n\nconst PO = ({\n options,\n onSelect,\n\n ...props\n}: TPurchaseOptionsProps): JSX.Element => {\n const {\n 1: purchaseOption,\n ...elseOptions\n } = options;\n\n const [selectedOption, setOption] = useState<{ cost: number, period: TPeriod } | undefined>(undefined);\n\n const handleSelect = (cost: number, period: TPeriod) => () => {\n setOption({ cost, period });\n };\n\n const handleConfirm = () => {\n if (selectedOption) {\n onSelect(selectedOption.cost, selectedOption.period);\n }\n };\n\n return (\n \n

    Варианты покупки

    \n \n {purchaseOption && }\n {!isEmpty(elseOptions) && (\n \n )}\n \n \n
    \n );\n};\n\nexport default styled(withRadius(PO, { $radius: 24 }))`\n background-color: ${COLORS.BgSurface};\n width: 100%;\n\n & ${Button} {\n width: 100%;\n }\n`;\n","import MaskedInput from '@r1-frontend/ui-react/components/input';\nimport clone from 'lodash/clone';\nimport React, { Fragment, useCallback, useMemo } from 'react';\nimport Creatable from 'react-select/creatable';\n\nimport InputSimple, { phoneDecorator } from '../../inputSimple';\nimport { replaceValueForPhone } from '../../inputSimple/decorators/helpers/phoneDecorator';\nimport {\n ClearIndicator,\n Control,\n customStyles,\n DropdownIndicator,\n Menu,\n MenuList,\n Option,\n} from '../dropdown';\nimport Select from '../select';\n\nexport function CreatablePhoneSelectV2({\n options,\n placeholder = 'Выберите телефон',\n createOptionPosition = 'first',\n label = '7',\n ...rest\n}) {\n const innerOptions = useMemo(() => {\n return options.map((option) => {\n return {\n ...option,\n label: label + option.label.toString().substring(1),\n };\n });\n }, [options]);\n\n return ;\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction formatCreateLabel(value) {\n return 'Новый телефон ' + value;\n}\n\n/**\n * @param {string} inputValue\n * @param {{action:string}} meta\n * @returns {string|*}\n */\nfunction handleInputChange(inputValue, meta) {\n if (meta.action === 'input-change') {\n return replaceValueForPhone(inputValue);\n }\n return inputValue;\n}\n\nconst InputPhone = phoneDecorator(InputSimple);\n\nexport function CreatablePhoneSelect({\n options,\n onChange,\n value,\n inputValue,\n onInputChange,\n placeholder = 'Выберите телефон',\n inputPlaceHolder = 'Номер телефона',\n createLabel = 'Указать телефон',\n createValue = -1,\n errorMessage = 'Введите телефон в формате +7 (999) 999-99-99',\n onMenuOpen = () => ({}),\n onMenuClose = () => ({}),\n masked,\n hasError,\n}) {\n const clonedOptions = useMemo(() => {\n const clonedOptionsInner = clone(options);\n\n clonedOptionsInner.push({\n label: createLabel,\n value: createValue,\n });\n\n return clonedOptionsInner;\n }, [options, createLabel, createValue]);\n\n const isShowInput = value && value.value === createValue;\n\n const onMaskedInputChange = useCallback(\n (value) =>\n onInputChange({\n value,\n label: value,\n }),\n [onInputChange],\n );\n\n const inputProps = {\n value: inputValue,\n placeholder: inputPlaceHolder,\n onChange: masked ? onMaskedInputChange : onInputChange,\n errorMessage: errorMessage,\n className: 'ym-disable-keys',\n hasError: hasError,\n };\n\n return \n \n {\n isShowInput && (masked\n ? \n : \n )\n }\n ;\n}\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst CalendarSecond = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n \n \n \n );\n};\n\nexport default createSvg(\n CalendarSecond,\n 'calendar-2',\n);\n","import styled, { CSSProperties } from 'styled-components';\n\ntype TPreProps = {\n $whiteSpace?: CSSProperties['whiteSpace'],\n $withIndent?: boolean,\n}\n\nexport const Pre = styled.pre`\n white-space: ${({ $whiteSpace = 'pre' }) => $whiteSpace};\n margin: ${({ $withIndent = true }) => $withIndent ? 'revert' : '0'};\n`;\n","import { keyframes } from 'styled-components';\n\nimport { TOAST_TRAVEL_DISTANCE } from '@r1-frontend/ui-react/experimental/Toaster/constants';\nimport { TToastDirection } from '@r1-frontend/ui-react/experimental/Toaster/types';\n\nconst getStartPositionByDirection = ({ direction }: { direction: TToastDirection }) => {\n switch (direction) {\n case 'ttb': {\n return keyframes`\n from {\n transform: translateY(${TOAST_TRAVEL_DISTANCE * -1}px);\n }\n `;\n }\n case 'btt': {\n return keyframes`\n from {\n transform: translateY(${TOAST_TRAVEL_DISTANCE}px);\n }\n `;\n }\n case 'ltr': {\n return keyframes`\n from {\n transform: translateX(${TOAST_TRAVEL_DISTANCE * -1}px);\n }\n `;\n }\n case 'rtl': {\n return keyframes`\n from {\n transform: translateX(${TOAST_TRAVEL_DISTANCE}px);\n }\n `;\n }\n }\n};\n\nexport default getStartPositionByDirection;\n","export const TOASTER_ID = 'b2c-domru_toaster';\n\nexport const TOAST_TRAVEL_DISTANCE = 60;\n\nexport const TOAST_HIDE_AFTER_EXPIRATION = 5;\n\nexport const TOAST_SHOW_DURATION = 1;\nexport const TOAST_HIDE_DURATION = .5;\nexport const TOAST_SLIDE_DURATION = 1;\n","import React, { useEffect, useRef } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport {\n TOAST_HIDE_AFTER_EXPIRATION,\n TOAST_HIDE_DURATION,\n TOAST_SHOW_DURATION,\n TOAST_SLIDE_DURATION,\n} from '@r1-frontend/ui-react/experimental/Toaster/constants';\nimport getStartPositionByDirection from '@r1-frontend/ui-react/experimental/Toaster/helpers/getStartPositionByDirection';\nimport { TToast, TToastDirection } from '@r1-frontend/ui-react/experimental/Toaster/types';\n\nconst Toast = (\n {\n id,\n children,\n permanent,\n removeHandler = () => true,\n ...props\n }: TToast & { removeHandler?: (id: string) => void },\n): JSX.Element => {\n const toastRef = useRef(null);\n\n useEffect(() => {\n (async() => {\n if (toastRef !== null && toastRef.current !== null && !permanent) {\n await Promise.allSettled(\n toastRef.current.getAnimations().map(animation => animation.finished),\n );\n removeHandler(id);\n }\n })();\n }, [toastRef, permanent]);\n\n return
    \n {children}\n
    ;\n};\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n }\n`;\n\nconst fadeOut = keyframes`\n to {\n opacity: 0;\n }\n`;\n\nconst StyledToast = styled(Toast)<{ direction: TToastDirection, permanent: boolean }>`\n display: inline-block;\n\n ${({ permanent = false }) => permanent\n ? css`\n animation: ${fadeIn} ${TOAST_SHOW_DURATION}s ease,\n ${getStartPositionByDirection} ${TOAST_SLIDE_DURATION}s ease;\n `\n : css`\n animation: ${fadeIn} ${TOAST_SHOW_DURATION}s ease,\n ${getStartPositionByDirection} ${TOAST_SLIDE_DURATION}s ease,\n ${fadeOut} ${TOAST_HIDE_DURATION}s ease ${TOAST_HIDE_AFTER_EXPIRATION}s;\n `\n }\n`;\nexport default StyledToast;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { TToast, TToasterPosition, TUnionToastDirection } from '@r1-frontend/ui-react/experimental/Toaster/types';\n\nimport Toast from './Toast';\n\nexport type TToasterProps = {\n $verticalIndent: number,\n $horizontalIndent: number,\n\n toasts: Omit[],\n removeToastHandler: (id: string) => void,\n className?: string,\n} & TUnionToastDirection\n\nconst Toaster = (\n {\n direction,\n toasts,\n removeToastHandler,\n\n ...props\n }: TToasterProps,\n): JSX.Element => {\n const _toasts = Object.values(toasts);\n\n return
    0 ? 'active' : 'passive'}`}>\n {_toasts.map((toast: Omit) => {\n return \n {toast.children}\n ;\n })}\n
    ;\n};\n\nexport const StyledToaster = styled(Toaster) <{ position: TToasterPosition, $horizontalIndent: number, $verticalIndent: number }>`\n display: flex;\n flex-direction: column;\n justify-items: flex-start;\n flex-wrap: wrap;\n gap: 1vh;\n width: auto;\n position: fixed;\n\n &.active {\n z-index: 11000;\n }\n \n &.passive {\n z-index: -1;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n padding-right: 20px;\n padding-left: 20px;\n }\n\n ${({ position, $horizontalIndent = 10, $verticalIndent = 10 }) => {\n const result = [];\n if (position.includes('l')) {\n result.push(`padding-left: ${$horizontalIndent}px`);\n result.push('left: 0');\n }\n if (position.includes('r')) {\n result.push(`padding-right: ${$horizontalIndent}px`);\n result.push('right: 0;');\n }\n if (position.includes('t')) {\n result.push(`padding-block-start: ${$verticalIndent}px`);\n result.push('inset-block-start: 0');\n result.push('top: 0');\n result.push('flex-direction: column-reverse');\n }\n\n if (position.includes('b')) {\n result.push(`padding-block-end: ${$verticalIndent}px`);\n result.push('inset-block-end: 0');\n result.push('bottom: 0');\n }\n\n if (position.includes('c')) {\n result.push('width: 100%');\n result.push('justify-content: center');\n }\n\n return css`\n ${result.join(';')}\n `;\n }}\n`;\n\nexport default StyledToaster;\n","import { ReactNode, useState } from 'react';\nimport { uniqueId } from 'lodash';\n\nimport { TToast } from './types';\n\nexport type TAddPermanentToastArgs = {\n permanent?: never,\n id?: never,\n} | {\n permanent: boolean,\n id: string,\n};\n\nexport type TAddToastArgs = {\n children: ReactNode | JSX.Element,\n} & TAddPermanentToastArgs;\n\nexport type TUseToaster = {\n getId: () => string,\n add: (children: ReactNode | JSX.Element, permanent?: boolean, id?: string) => void,\n remove: (id: string) => void,\n clear: () => void,\n toasts: Omit[],\n}\n\nconst useToaster = (): TUseToaster => {\n\n const [toasts, changeToasts] = useState[]>([]);\n\n const getId = () => uniqueId();\n\n const add = (children: ReactNode | JSX.Element, permanent = false, id: string = uniqueId()): void => {\n changeToasts(prev => ([\n ...prev,\n { id, children, permanent },\n ]));\n };\n\n const remove = (id: string) => {\n changeToasts(prev => {\n const newStack = prev.filter(toast => toast.id !== id);\n return [...newStack];\n });\n };\n\n const clear = () => {\n changeToasts([]);\n };\n\n return {\n getId,\n add,\n remove,\n clear,\n toasts,\n };\n};\n\nexport default useToaster;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { getPaddingByIncomingIndent, TContainerProps } from './IndentContainer';\nimport { getRadiusByIncomingProps, TRounderProps } from './RounderContainer';\n\n/**\n * Обертка добавляет компоненту, цвет бэкграунда, скругление и паддинги\n * indent: $united или $mobile & $desktop.\n * rounder: $radius или $desktop & $mobile.\n * bgColor: цвет подложки (default COLORS.BgSurface).\n */\nconst BlockContainer = styled.div<{\n indent: TContainerProps,\n rounder: TRounderProps,\n bgColor?: string,\n}>`\n ${p => getPaddingByIncomingIndent(p.indent)};\n ${p => getRadiusByIncomingProps(p.rounder)};\n background-color: ${p => p.bgColor || COLORS.BgSurface};\n position: relative;\n width: 100%;\n`;\n\nexport default BlockContainer;\n","import { useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport useScrollLock from '@r1-frontend/shared/hooks/useScrollLock';\n\nconst Overlay = ({ ...props }): JSX.Element => {\n const { lockScroll, unlockScroll } = useScrollLock();\n\n useEffect(() => {\n lockScroll();\n return unlockScroll;\n });\n\n return
    ;\n};\n\nexport default styled(Overlay)`\n display: block;\n cursor: pointer;\n\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n\n background: rgba(0, 0, 0, .5);\n opacity: 0.5;\n`;\n","import { ReactNode, ReactPortal, SyntheticEvent, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { uniqueId } from 'lodash';\n\nimport { Overlay, Sheet } from '@r1-frontend/ui-react/components/Modal';\nimport { createRootElement } from '@r1-frontend/shared/helpers/dom';\n\nimport * as S from './styled';\n\nexport type BottomSheetProps = {\n children: ReactNode,\n onClose: () => void,\n isShown: boolean,\n id?: string,\n}\n\nconst BottomSheet = ({\n children,\n onClose = () => true,\n\n isShown = false,\n id,\n\n ...props\n}: BottomSheetProps): ReactPortal | null => {\n const [popupRoot, setPopupRoot] = useState(null);\n\n useEffect(() => {\n const root = createRootElement(`bottom-sheet-${id ? id : uniqueId()}`);\n setPopupRoot(root);\n\n return () => {\n popupRoot && popupRoot.remove();\n };\n }, []);\n\n const onCloseHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n onClose();\n };\n\n return popupRoot\n ? createPortal(\n
    \n {isShown && }\n \n \n {children}\n \n \n
    ,\n popupRoot,\n )\n : null;\n};\n\nexport default BottomSheet;\n","import styled from 'styled-components';\n\nimport { Sheet } from '@r1-frontend/ui-react/components/Modal';\n\nimport BaseBottomSheet from './BottomSheet';\n\nexport const Content = styled.div`\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n\n overflow-y: hidden;\n\n transition: .5s;\n transform: translateY(0);\n\n width: 100%;\n max-height: calc(100vh - 80px);\n height: auto;\n\n box-sizing: border-box;\n z-index: 2;\n`;\n\nexport const BottomSheet = styled(BaseBottomSheet)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n visibility: visible;\n transition: opacity 0.5s, visibility 0.5s;\n\n &[aria-hidden=\"true\"] {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n\n ${Content} {\n transform: translateY(100%);\n }\n }\n\n ${Sheet} {\n padding: 18px 16px 16px 16px;\n }\n`;\n","import { BottomSheet } from './styled';\n\nexport default BottomSheet;\n","import React, { ReactNode, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { uniqueId } from 'lodash';\nimport styled from 'styled-components';\n\nimport { Sheet } from '@r1-frontend/ui-react/components/Modal';\nimport { SingleArrowUp } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { createRootElement } from '@r1-frontend/shared/helpers/dom';\n\nexport type TStickyBottomSheetProps = {\n children: ReactNode,\n onClick: () => void,\n id?: string,\n}\n\nconst StickyBottomSheet = ({ children, id, ...props }: TStickyBottomSheetProps): React.ReactPortal | null => {\n const [popupRoot, setPopupRoot] = useState(null);\n\n useEffect(() => {\n const root = createRootElement(`sticky-bottom-sheet-${id ? id : uniqueId()}`);\n setPopupRoot(root);\n\n return () => {\n popupRoot && popupRoot.remove();\n };\n }, []);\n\n return popupRoot\n ? createPortal(\n
    \n \n {children}\n \n
    ,\n popupRoot,\n )\n : null;\n};\n\nexport default styled(StickyBottomSheet)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 2;\n visibility: visible;\n\n ${Sheet} {\n // 52px for right indent is summarize of open button width (28px) / 8px gap from button / 16px default indent from right side\n padding: 16px 52px 16px 16px;\n }\n`;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiNGQUZBRkEiIGZpbGwtb3BhY2l0eT0iMC4xNSIvPjwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0idXJsKCNwYXR0ZXJuMCkiLz4KPGRlZnM+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfNzQyNV82OTI0MCIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxMzg4ODkpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTBfNzQyNV82OTI0MCIgd2lkdGg9IjcyIiBoZWlnaHQ9IjcyIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQU1BQUFCaU0wTjFBQUFDOFZCTVZFVUFBQUNKaVlubjRlWXlORGFTa3BFb0xDK0JnWUhRdm12VzB0RmpaR1VuS2kxOGFrbXdrMW1WZ1dWd1R3OXhWaUl5TlRwS1Nrck53Rm5NdjFoTlRVMWZZR0JuYUdtUmczUVJFUkpDUkVaMlZCKzNqQ1UvUUVJeU1qSTZPenROVGxCSVNVcDFaVUZVVjFscFNnMTBVeFFxS3l0SVMwOHBLU2g3V1NFME16STFPRHU0alNVNU9qcGpZMlBKdFYxU1UxUzFsMkJ4Y1hCcWFtcEFRVUpRVVZJZEd4c2NIUjA3T3p0QlFrTlJVbEhOd1Z1QVhTSXVMU3l4aHlTbWZ5WTNOemQxV1NSMVdTTXRMQ294TUM5Q1JFWllXRmhCUkVkSFNVdENRMFpGUmtkZlgxOXZhVjJyakZLdGxXODdQRHhsVnlGZVFnd1BFQkFvS0NkRlJVV1JrcFI0ZVhvSkNRcERSVWREUmtvdkxpM0h1bFV2TGkwbEp5cE5UVTFDUWtKdVR4c1pHUmhCUWtTTmJTMC9RRUltSnlsSVJqNDlQajRwS1NsaFN5RllXRmgzV3laSVNrdzJPRHBiVzF0TVRVM1J5M0xOdlcxZVhsM0R0blI1YTByL0FBQTJLQXNqSXlRMU5qWkdSMGZGcVQySWlZcDFWaGdhR2hrME9EdS9zVkhaMFdPdm9FcHFUUnhqU0IxVVZGU0thUjI4a1MzT3VsdVRnRVJlWGw0eU1qRnBhV2xPVVZQR25rQmxaV1UvUGowK1BUeTdxbDBZR0Jnek1qTTNOemMwTkRRME5UWTRPRGc1T1RrMk5qWUtDZ29iR3h3WEdCZ1BEZzR3THpBM096NFhGaGM2T2pvMU5qY2RIUjAxT1R3NE96MHhNVEVvS0NnUkVSRU1EQXdpSlNjbUpTVWFHaG9xS1NrZUhoNGFHUmtURXhNdkxpMG5LeTQ0T2pzc0t5c25KeWNWRlJVTkRRMDZQVDg3UEQwaElDQUhDQWhLUzBzM09Uc3RMUzBrSXlORlJVVTlQVDBtS1N3aUlpSnRiVzgyT0RrdU1qWUZCUVZ2Y1hMRnNVekhxanVSa3BPS2k0eUJnb05yYTJ4WldsdFdWbGRSVVZGTlRrOC9QeitHaDRpRWhJWjdmSDFUVTFUTHVsSkRRME5CUVVFeU5EUjRlWHBuYVdyRHJVaEhSMGRBUTBVdE1UU2FkU2dnSkNhT2o1R05qWTlEUmttcmtqa3ZORGVwaHpLbGdTNmZleXVWY0NaK2ZvQjBkWGJJdGsvRHB6cVltWnBmWUdGWFdWekp1MU81bnp1UWF5U0laU0M4cDBaYlhXRE93MWRXUVJmd0tvOWdBQUFBa1hSU1RsTUFEUUtJQ2ZjRlZRVCs5MEltR2YyazlPM2o0VmdrSFJiejVOVzRqWHhxYVdNOEt2MzgrL2Z2MWMvQXI1eE9Ua1VpR1JUNDlmVHk4ZkRwMk5MQXViV3ZvNXlhajRpRWduMTJiMkl4SFJEKy92djQ5ZlR6OC9Qdjd1cmYzOXpaMTlIT3g4ZXZyNmlub0oyVWpvdUVkRzlGUWprM053YjkvUHIxOWZQdTU5L2MyOWpOeUxPdW01bUxkbTVzWTFsV1VFNUpwSjllTmdBQUJzbEpSRUZVV01QTjJGV1EwMUFVQnVDMkxBdkYzZDNkM2QzZDNkM2QzUjJhYXJySlZxQk5xYVZRb2FWUW9BVUt5KzZ5aTd1N3V6MXhrcktoREUyQXdnUC85S21UK2VhY201UGN1ZUg5Rk1HTVdidy96NXlmLzVxK3ZORU0zaitJWVAyREY0MnEvUXNwOCtJbkozSlhFL3c5RkRPcERFZ1ovb0hVZFZLWjIvOUlhZ2xTcm44aDVXK1o3YitUc3JiNGg5TFRueVJCcVh6UlNkZC9sR0tLTGExVUtnb3BPMGpoVXhCVHRQL1YxRXA1LzFyaVQ4a1JmSFhXV3lWak5GTHA5NHpFVDVjK1ZmZ3M0WFhGZkx3b3BVSFZ2am1YdlJlRVF2SEFtYXlYWitTV1BvSkVPZTR6bDI5Y3RodDc1V0Y3YlV4ZnQ2VXJsL1RoM2JJZGxIUFlmVmppdC9nY0hWZ3VuZFhvODhLMVhUaWtIaDhlckJpYjN0M05yY1l0SnEzZnlMYmFXVVk5ZVB1eU1ydVVmMEtQTXQxdHU5eHFjS3dtcGNkWWljOXlaZWRSajk2ZXJGeURRNXByMzZWV3kzR0xTR1FGYUREckpNMXV6Q254V3graEhKdEZCSkRKWWl4Zm5jZVdrbzBmWFdTVitPa3k3VldyWmVEUWtOWm9HOGZubGdwbllYWGtJUWRpMHRxU3k3VmhsekpYWUpIZ3ZoK1FNNDdWYXZVY2VuYU9XM3BNU1pFZDhVR3Q2RnUwTnUrMVUrZkt0WXY1TTRsMlpHR08waXk3bEVKSkhXTC9RS0lkMlErT1hxSStmT2hDMHFuRUFTVUU3Rkloa0pwbStjRTVLaE1yZm5Ca2Nrb0szTHRhc0RxUFMzcnhFcVF3Ui96ZGlRTUhrY25sYWtvSzNndU16TWNsUGFHa2NFZHFUM1Bpd0JITHFZQjArdm1wTjBVeS9rSnFsb1Z4Tk9HT0F4SExaRFNrUG5NaitYd2lOTWNwblhqWHJBWTloMktOUXNJNG9wQURFazJkOFFyUFhSdk41NUJLRHI5OS9WMnpMdUJvRkZLSlhSbm1LQUJLazl5WFU0Sm42NVRnY1VwUFB6NVkwenFTQXhDZDBESWxKNTR2V0R4dkxJZTA4c09EN21hTlZDb3hoems2cVVZTUNWa0FVYzFkVGMwMHBBckhQamQ3MVJlYlJpcEJHQ2VPY3FDZ01FbnQzbmZ6L3MxYmQ0N0VjK3lZL0NwbWplUzdvNHBUR25VU2hVS2pTWlBBQVdqZnpqM2FPNm1KYnlhek9iRE9Qem9tSXc0T1FHbVNYTDUzRnppMzd1eU9mMzFPMko3ZGdiYkFpWU9tNkhyQWtVcWxDc1lDS09RYzJYa3oxVnN4TDd1RFVBNHdURDNnZ0VTSGdnN3MzYmVMZHZZZGxwVGZ4dXBjUVJCZHFKNDQrSUdEU0NRMFJGUGdITjI3QzV6ZDRLanhlc1VpUHljeFU5TGp1RTZuQndjZ3hnRXByU2phaWQ5NTdBN3QxQzBhRzlrcG1sNnZQNGlISEpCVWxBTVFReWxnalE1UURsV1BYS2NjejQrOGVSZXJaN0w2SFQ2VEtnNGtxaDZmRGZrUkFpYys1TGpsdUpZb3lvdVl2RU5VS0NGU3F1aEFZeUdIb1NSUVVGbzk4VzRacnNXY1RmSkhoR3FOa3lsUmpDQ2RUcHF5K213NkpCUUdPdnJkc2JnSWY5a2lrVGVCZkdNdm0wa013d2lDQk10aUJ5Y3Q0YzZlZUxjWTE3b3dqMkpmRHBidHBHYmJrWU43elZPcUNNQklpOTRXTHNFSy9lajREMTg0ZlQ5SCs4aFNiSzFTMVVzVWFWNnh2RjNwVW5sQUNvYzBlMFBPTG5BTW1PK1FNSGd0K1g2T1BCd250cGlhTXljMm9DUXpJMTBKY3pTVVkvUUdFeE92SmlYWExwNVJ3SG5XbWxaZmFZQ2FEbjZUSk44ZEJlWDRid1RPM3IxMzl2eTFnc1hHZDR6aGttSTcxdGNhbkNEaE9yb2d6YzVkT3grQ3MxY0tqa3VwT1AzOGJFTEMzWE1YSEFYMjVDak80NVNtTmZBWW5CYUhIU1J3RHFRNU5xM0I0UFRMVXBLZW5VcElTSkw2OVcvdVQrYkhja3FkQ2pwY2hOSm94cEVyNE1RekRrbzRMZmlsNU1DelU4L1BJSTZrWU00aVl6cHdkcGV4NmxBZGdZazhldnpLem0rTzVLQVczUTl6SnZJaGg1SURTV2N1NndQM3JwWHR1U2ZIWmg1bk9xK3VyWFdSV3NjdHhsR2krMUhVNENLc1B1U1NWM3JKTG55VmVNYWlUNzVmUk1BdDFkb3dGSEZpRnMzTm5lQWNvSnpqNkg2Z01OTHFzL3QxK3BTN3AxSVBHZ1BCMmpCTjNCRjBudGpmVDNwdlVnNWlONkg3U1FzSlJSa3dVa1dhbEh1RDUxTmtqc0M5MXhWci9zYnB2ZW93bGZqSW52aWppTm1FdVR3S3RSR2p1c1BBY25oUFg1S1poYS9PNDYxKzY2aVpwOER1ZlRldjRPYTZyVFkyWDVCNlNPSEJVQlFheER4Nm5kMXNURTA0ZTRaNW4zQ241Z2lWVHUvejF5c2F3K05QemVtOXBQQ1JCdlQ0Y1pYVktsS1p4TUdyaDBqUGZPWXR3RGtHNlVRRVJpNHBGa3NOVi9HYzNodmQ5RXJYY2RTRllRWmk5NDNUYXRKMDZVS0Q5cjlUVXI3UmF0T0k3YkJmMEZMRE9zUEtrc2RobmREakJxMGUxeFBPeTBtQlR3TjR2eVZON1ppWEdmaXFuVW9VTURneHFqdW55aXB5WVhqU3VjVG5RdDZmSjJNcmkweHV0dExkRVNncU9odzRkZmRzWDE0VXlaTXpKV2RaZ3VyT0FEZlBhVSs1ZWpkaFVUUlE3TmEyYlhwaWNZUUJCUXZGUlBqcDh3bDlvdnpHTk1aM1dHMGtVSkZSQlpKVmQvcDhsSkNnUk02VStrMWFOKzk5U09jTVNWR3RFWDN2MnVhcHhlTnZhbmdESnlrSnFRUGYvZjRpR1RzMTdGMitRTDkrQmVvTy9BcGdIdVdMNFd4ZndRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.357.4/frontend/_next/static/images/film-0925c71c3eb5d95a8c0a5bbad6b051d6.svg\";","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0idXJsKCNwYXR0ZXJuMCkiLz4KPGRlZnM+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuMCIgcGF0dGVybkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfNzQyNV82OTIwNiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxMzg4ODkpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTBfNzQyNV82OTIwNiIgd2lkdGg9IjcyIiBoZWlnaHQ9IjcyIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQU1BQUFCaU0wTjFBQUFDK2xCTVZFVUFBQURWcnh6L3FBRDNwQWZNbFRINnJRUC9wQURrbHhycHRRMzlxd0RRb1MvK3JRSDlsUUw1bVFmOG1RTC9xQUQ5bWdUNm1nYjRwZ3I3dHdQbG9Cem1vUnJybXhQL2xRRC9tUUgrcHdIL213SCtsd0wvbndEK3VnRDlzZ0Q3ckFMMW1RejFtd3ppbmhyeHVRZitud0x2bUJQK2tRTCtvQUgrbUFINnFoUC9zUUQ5ckFINWx3YjBtd3I5dGdEMW53M3NuaEg0bmdmOW1BSGlxeVQwbXdiUnBDeittZ3I5cHhMK2xBRCt3Z0grc1FIK3J3SDlvZ2I2bXdYN3FCVDZwQVg5bHdMNXJ4YjRwaFgydkNMNXJ3NzB4eEg0cHc3OW1RTDFveEQvbWdEOG1nUDhvZ1QzcEJEOG5nUDVud1h3c2g3dXFSVG91U3pxdENUNG1RWHVxeGoydkJEcHJSN3pyUWJuckIvMm13YllyaTdxbmhidG54UDlyaGY5b1FIOHhnVDh6QVQvekFEOHB4TCt0Z0g4cHhQL3VBRDN0QjcvblFEOGxnTDFzUm4welF6enNSbjFvaFg5bkFQd3Jobit1d0R6clJUM3lBZm13U0gxbVFmOG1BTGt3aURvcHh6OHdRSC91d0RvcHgvWXNEai8vOWovLzlyLy85Myt1d3Iva2dEL2pnRC8vK0QvcUFEL2tRRC8wd0Qvb3dEL21nRC9vUkQvc0JIL25oSC9teEQvLzk3Ly85ei81MEQvcUE3L21BSC9xd0QvLzhYLy83Yi9yUkwvbFFML3JnRC9uZ0QvLzlQLy84di8vOGovK0lELzZHTC9zUUQvLzliLy85RC8vODcvLzcvLzYzRC82anYvdmhYL3BCTC90Z0QvbkFELy85Ly8vYS8rK1h6LzQwbi9zeHYvdGd2L3JBdi9xQWovbEFIL3JRRC9yQUQvLytMLy9LbisrWHIvNjJyLzdWMy80VWIvcXhUL3B4VC9tQS8vblFmL29BSC8wQUQveFFEL3dnRC92Z0QvdWdELy83ci8vclAvL1o3LytKaisrWUwvOG9MLzZGci80Rm4vNWxiLzIwZi81RUgveHkzLzNpbi8yU2ovd1NmL3p5RC96aHIvdUJuL3hSYitwaEw5cFF2L2t3ai9vd2IvelFEL3lRRC95QUQvcFFELy84Ly8rNkwvL1pYLytaTC8rWW4vOW4zLzhYdi83M24vOG1yLytHZi8xVVQvNEVEL3pEci8xRG4vM1RUL3lqUC91U0gvMUFmL21RZi91QVQvOVhyLytIYi84V1QvNUZELzdFLy83VVAvNGpyLzBUWC81REQvM1NILzBSWDlzZ3IvbndoNll5d3pBQUFBZTNSU1RsTUFBME5IQnRuWkNVU2JIL1R0bEJMWnpsaEZSU0lYRHZ6NDlQUHcySjZjbVZSUFRrUkNKZjd6OCtQYTJjdkhuSTZMZ1Z3M054VDgrdmIwOVBUdjdPcnA1TmZYMWN2SXhjSy91N2Fwb1o2WmtvZUNkblJyV2s1RFFqOHNLeHYrL1ByNDkvWDA4T0RmMjlxOHZMQ3RxYUtlbUpocVoyZGpXMUJKUFRIQ3ZVTWJBQUFFT0VsRVFWUll3NjNXWlZSVFlSakE4VHVkb29nSVNpZ3FpdDNkM2QzZDNkMjF6YnZ0c3A0TE5oaGptdzduQUZrNUVhUWs3RllFU2J1N084N3haVHQrOEJ5UDk3am4vai9jajcvelBuZDc3cjNZZnpleklrWkpUZno4cVhHV0QvZWx3cWxRcjNZbmFoeitTRjlLSExuN1FQRHp5TkdCNEU3bFludUlQd1ZPRFc2QmZaUXZCWTdpbXFsNUdDWE9GZTdvSUFybXV2YkoycWNtL0Q3ZktIajBqRGZHQyt6d1RQY2UyUHJ2aER1Nzc1OTR3ZHRBaHpxWjF0am9XSHZMenVEeldIWDdFcTdLeHRPQUR2Zk5lYTNtbkd6WkxyQ1RhT1NjZWpsM0lnMzR1NXMvbitCb0g2Y09uZ1Z4cHRmZ21wOG5TYVJuOGkwVFFVNXJydm5LU1NibitCZkxZRytBVTZVU1YzL2xOaVBla0x6Yk5Bbm81TjAxU0NSSmVUbER2U0VPajF2d1ZpT1I3RDJiUFg4VHhJbmltUjVHczZTc1U5K3poZ1pDbkRoaGloSTV5ajFsQzdhQ0hOdDVvMVRLWXNTOEtsblZGZUxZRXlPWVRDWXI0dXV4OEkyMWFsWDhzNXFvSmsyNmVKRTcvT0lMQ2NpUmFoNitDZzlmMkxQbjRsNjlldmV1NXFvT3FubnprQll0UXNhU3ZBb2FWNHJqWnp4TFlqQlJ0NzZGbzQ2VmxHVmxaZWZrNU9ibW1zMTZCUzlPamVONDhPZzVaQTVmSHZmaXBJSEJZREExS2VFdTZGaEphV2xwV1ZaMmRrNnVXUitaaVJ5aTlyaEFVc2NodjNwSHczQkI5L2ZzTDIrUHU0c1hMejU1Y3RtVW9YWVVoYlFQSW5GYTgzRTgvOTVlbDhOa0d2WnB0ZEdvZmFpYmUxRTNUejVQRTZlbjkrbEljcU5ydGVZVGJOVjdMV0xjRlBvSGxDZUo1M0E0aDFFUlIxTkZZbkcvS1hRU3AxV1VnNTF4K1ZFTTZuVE13U05IRGg0c3Y4U2NQbjAzZ2NsQlJSd1ZIaENKV2s2bGtUazhPVTZvQ3dzTGJUK3MxdDEvbE16NDdRZ0dUaU54ZHJTNndjZlpydFNaUEs1Q29YQTZENkVpRHptNWw1SWs4UzVIY0dEZ0RPemZiVitxaUZJVEJJR2o1RkVJY2taR1J1cjFlblJWNUo4eHhNZEhKQ0xuK2hEUzE5TFU5YUVOVUZYZGhZYUd0bXRYSDlWdWlKTnIwMFZMSkc1bjVTeU1OTnBmOHg3R3kzeDhuTVU2bmlnVUNLNnZEc0E4akQ1aEh2L3FMU2JMK0VFbEVIUmY1L21qc2xGL3VlcU1nV1U4cnhLSnVvL3Y2ckhqUFlMLzg1eVdaVHlMbkVVVGdqeDI2QjM0OHFjbnBNcXpLckZveVNUQTkxR2p2dmpMVXd5bERqa2thMEV5V0ZzODdZRkdxVXRORjdmY1JzTUFnd1cvUHFkVTZtVHA0a0hUTUF3eUdQRTBRYXVURllrSG9iV0FETWEyM0ZIcTdFWGlZV2d0SUlNMUU4UWFrMldFZU1Sc0REU1lqL3BDUXF5TTZMWW1BT1FFdENVdTNZNlZzYnVOQ1FRNTlQYk5MTytRVTd0OVZ3eFVtSThnSlRtTjNhSmpFTXdKYUtPK2tKTEdyanZaQytiUXF6ZTc5REdWN2JPWmpzRnE2R1BacjJJUDhLY0JuYVp0QkplRnhJb3dxT05WL1hXZWtQQ2JpV0hnd1V4Q1luZ1hLSU1Hazlud1VXZ3R3SU5sRkFldkRjREErZGVWQjQrZEEzZWEramw2VlBmRktCak0wY08xRnZEQjNHc0JIOHhuQ3gzT29CMGIwSW1HVVZCRHY0YVVPSUhqd3NDR0crcmk2WGwrQVVlQjU4Ti9TQ0N5QUFBQUFFbEZUa1N1UW1DQyIvPgo8L2RlZnM+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIgNyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSIjMDA3QUU1Ij4KICAgIDxwYXRoIGQ9Ik0xMS41NjY0IDEuMzQ3NjZDMTEuNTY2NCAxLjQzODggMTEuNTI3MyAxLjUyMzQ0IDExLjQ0OTIgMS42MDE1Nkw2LjI1MzkxIDYuNzk2ODhDNi4xNzU3OCA2Ljg3NSA2LjA5MTE1IDYuOTE0MDYgNiA2LjkxNDA2QzUuOTA4ODUgNi45MTQwNiA1LjgyNDIyIDYuODc1IDUuNzQ2MDkgNi43OTY4OEwwLjU1MDc4MSAxLjYwMTU2QzAuNDcyNjU2IDEuNTIzNDQgMC40MzM1OTQgMS40Mzg4IDAuNDMzNTk0IDEuMzQ3NjZDMC40MzM1OTQgMS4yNDM0OSAwLjQ3MjY1NiAxLjE1MjM0IDAuNTUwNzgxIDEuMDc0MjJMMS4wOTc2NiAwLjUyNzM0NEMxLjE3NTc4IDAuNDQ5MjE5IDEuMjYwNDIgMC40MTAxNTYgMS4zNTE1NiAwLjQxMDE1NkMxLjQ1NTczIDAuNDEwMTU2IDEuNTQwMzYgMC40NDkyMTkgMS42MDU0NyAwLjUyNzM0NEw2IDQuOTAyMzRMMTAuMzk0NSAwLjUyNzM0NEMxMC40NTk2IDAuNDQ5MjE5IDEwLjU0NDMgMC40MTAxNTYgMTAuNjQ4NCAwLjQxMDE1NkMxMC43Mzk2IDAuNDEwMTU2IDEwLjgyNDIgMC40NDkyMTkgMTAuOTAyMyAwLjUyNzM0NEwxMS40NDkyIDEuMDc0MjJDMTEuNTI3MyAxLjE1MjM0IDExLjU2NjQgMS4yNDM0OSAxMS41NjY0IDEuMzQ3NjZaIi8+Cjwvc3ZnPgo=\"","import _setPrototypeOf from \"./_set_prototype_of.mjs\";\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () { }));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n construct = Reflect.construct;\n } else {\n construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return construct.apply(null, arguments);\n}\n\nexport default function _construct(Parent, args, Class) {\n return construct.apply(null, arguments);\n}\n","import construct from './_construct.mjs';\nimport isNativeFunction from './_is_native_function.mjs';\nimport getPrototypeOf from './_get_prototype_of.mjs';\nimport setPrototypeOf from './_set_prototype_of.mjs';\n\nfunction wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n wrapNativeSuper = function wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return wrapNativeSuper(Class);\n}\n\nexport default function _wrapNativeSuper(Class) {\n return wrapNativeSuper(Class);\n}\n","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n"],"names":["module","exports","t","s","n","i","e","r","o","u","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","g","f","$l","l","p","m","$","Math","ceil","floor","y","abs","v","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","valueOf","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","baseEach","collection","predicate","result","value","index","push","arrayMap","object","props","key","identity","baseIteratee","isArrayLike","findIndexFunc","fromIndex","iterable","iteratee","undefined","root","toInteger","toNumber","toString","nativeIsFinite","isFinite","nativeMin","min","methodName","func","number","precision","pair","split","arrayFilter","baseFilter","isArray","find","createFind","baseFindIndex","nativeMax","max","array","length","arrayEach","castFunction","baseIsEqual","other","baseMap","round","createRound","INFINITY","toFinite","remainder","baseValues","window","__NEXT_P","request","withAuth","uri","method","body","JSON","stringify","withProvider","styled","$bgColor","COLORS","FONTS","wideBreakpoints","children","DiscountLabel","withRadius","isCurrent","isLastActivated","label","Icon","Image","className","li","img","src","Label","$radius","StyledStepMenuItem","StepMenuItem","Svg","items","onClick","activatedSteps","current","StepMenuContainer","stepItem","id","EAction","EEntity","speed","onlineCinemas","tv","antivirus","additional","routers","decoders","security","entertainments","services","entityData","analytics","entity","quantity","period","title","cost","addProductSuccess","type","clickedOnlineCinemaCheckBox","clickedSubscriptionCheckBox","clickedAntivirusCheckBox","payload","group","groupTitle","itemTitle","clickedTvChannelCheckBox","routerLimits","decoderLimits","data","contactPhone","clientName","clientPhone","state","isError","requestId","timeSlot","restrictions","stepId","tvGroups","filter","alias","selectedCount","values","cur","acc","tvItem","isSelected","currentTariff","isAllowToShowTvPackets","firstBaseTv","getBaseTv","selectIsAllowToShowTvPackets","baseTvItem","disabled","hasSelectedEquipment","some","equip","ESteps","SpeedAndTv","Subscriptions","Equipment","FillAddress","FillContacts","CreateAgreement","SelectVisitData","Final","getVasKitServices","isEmpty","getBaseTvItem","Set","item","trId","dispatch","getState","planId","salePackageId","selectedEntityIds","client","phone","hasEquipment","vasKitServices","requestBody","response","setLoading","nextMonth","isNeedRequest","promoId","phoneNumber","contactId","isContactId","doRequest","changePlanWebcab","isSuccess","setChangePlanWebcabData","hasError","errorCode","error","code","errorMessage","message","constructorCurrentTariffAnalytics","setStep","GA_CATEGORY","getSummaryOfferInfo","once","monthly","connection","tariff","EPriceTypes","Possess","Leasing","EShopCategory","EExpandShopItems","SUCCESS_STATUS","submitRequest","hasTv","fio","street","house","flat","csrf","leasing_duration","cost_type","tv_equipment_duration","tv_equipment_buy","check_call_type","location","pathname","plan","product_id","EProductsId","router","ids","tv_equipment_id","house_num","office","requestByConnection","includes","status","constructorAnalytics","transformEquipmentForRequest","equipItems","costType","itemsMap","entities","getSelectedEntitiesCurrentTariff","equipment","getSelectedEntities","equipmentItems","globalId","getEntityByGlobalId","planType","costs","selectedCost","isTvSelected","count","payType","summary","decoder","tvGroup","final","selectedSpeed","price","currentStep","header","groupCost","total","titlePostfix","groups","discount","percent","discountValue","connectionCost","alert","currentTariffText","servicesText","currentTariffSummaryText","baseTvGroup","providerId","domain","verifiedAddress","sendAnalytics","selectedEquip","clientInfo","address","companyId","houseId","analyticsId","createData","respAgreement","isDouble","fromCache","agreementNumber","agreementId","summaryInfo","getAnalyticsSender","getGaId","personalInformation","name","tariffId","comment","offerCreate","setAgreementData","getErrorMessage","el","isBaseTvSelected","isFromCache","Error","getSummaryInfo","entityName","limits","limitations","selected","installment","isLimitationsReached","displayedCost","getDecoders","isSelectedDecoder","firstRouter","firstDecoder","isSelectedDecoderInCurrentTariff","connectInt","connectTv","operTypeInt","numberPhone","operTypeTv","routerId","leasingPriceMonthInt","leasingDurationInt","boxtvId","leasingPriceMonthTv","leasingDurationTv","createRequest","batch","setRequestId","request_id","withCurrent","initializationAction","setCurrentTariff","recalculate","createRequestThunk","createAgreement","Alert","InfoCircleFlip","Paragraph4","InfoCircle","BaseErrorToast","OpenChat","onLinkClick","getUpdatedValue","incoming","selectedVases","formatter","characteristic","truncate","Flash","costResult","incomingRouter","characteristics","numberKey","incomingCharacteristics","prepareCharacteristic","incomingCosts","prepareCosts","currentRouter","incomingSubscription","images","oldCost","deltaCost","subscription","isSelectedByResponse","numericId","finalCost","previous","fact","imagePath","incomingDecoder","description","descriptionList","advantages","image","itemsResult","contentId","speedRestrictions","isSpeedRestrictionByEqual100","infoToastId","routerToastId","createAbortController","controller","abort","AbortController","getAbortControllerRecreater","toaster","calculateBody","abortController","requestWithSignal","incomingRoutersId","filteredRouters","preparedSpeed","currentTariffSpeedIndex","remove","loading","BaseInfoToast","getRecalculateBody","calculate","signal","RouterNotSupplySpeed","prepareSpeed","findIndex","initialized","prepareBaseSubscription","prepareTvSubscription","prepareRouters","prepareDecoders","entityDescription","prepareDescription","isResponseCanceled","RecalculateFallDown","getTimeRange","time","hour","isNaN","selectedDate","selectedTime","planTime","phoneParam","replan","planDate","text","setReplanIsError","captureException","setSelectedTimeSlot","date","plan_date","plan_time","Wrapper","bgWebpImage","bgImage","useProgressiveImage","hasTimeout","timeoutDelay","ImageBlock","LazyLoadImage","isMobile","useMatchMediaByWidth","IndentContainer","$desktop","$mobile","WebpImage","urlWebp","maximumTakenStep","hasSmartTv","selectedTimeSlot","agreement","initialState","action","changePlanWebcabData","newEntityState","deepClone","selectedEntityType","newStateForTv","selectedEntities","eid","idsToDelete","idx","replanIsError","Ctx","createContext","debugMode","getId","uniqueId","clear","toasts","useThunkReducer","reducer","useToaster","console","log","Provider","forRecalculate","useContext","table","selector","agreementCreationStatuses","useCtxDispatch","useSelector","contactAddress","verifiedAddressData","city","provider","currentCity","selectCsrf","useStorageAddress","useEffect","initializationAgreement","InteractiveLoader","textItems","delay","loopSegmentAtIndex","Section","CreateAgreementContainer","useState","isOpen","changePopupState","handleClosePopup","ControlElement","DefaultPopup","onClose","ListContainer","$size","H3","$withIndent","style","marginRight","ListItemWithIcon","VideoVertical","Forward","VideoAdd","VoiceSquare","ButtonGroup","Button","bType","size","useConstructorAnalytics","useCtxSelector","selectCurrentTariff","TextWrapper","$color","b","BorderRadius","ContentWrapper","FullWidthListContainer","ControlWrapper","BlockContainer","indent","$united","rounder","ST","AboutSmartTv","BaseSwitcher","checked","onChange","toggleHasSmartTv","clickedHaveSmartTvCheckBox","Text","maxRows","textOverflowLineClamp","EquipmentDescription","rowCount","dangerouslySetInnerHTML","__html","$smaller","React","ImageDisplay","ImageItem","EquipmentImages","imagesCount","selectedImageIdx","setSelectedImageIdx","alt","popupHeight","desktopHeight","popupIndent","mobileHeight","BasePopupWithScroll","width","height","overflowY","TheScrollbar","CustomScrollbar","customStyles","view","position","paddingRight","paddingBottom","maxHeight","equipmentName","onSelect","options","getEntityPurchaseOptions","PurchaseOptions","selectedId","isPopupOpen","setState","selectedDecoder","hasDecoderInCurrentTariff","MaximumTotalLimit","handleAdd","currentDecoder","prev","clickedAddProduct","handleIncrement","incrementEntity","handleDecrement","decrementEntity","$direction","TVSetTopSelectable","onButtonClick","onIncrement","onDecrement","onCostClick","PurchaseOptionsContainer","addEntity","MovixIs","DecodersContainer","CheckSmartTvContainer","EquipmentCharacteristics","usePartialList","partialCharacteristics","isPartial","setIsPartial","Characteristics","getRouters","hasRouterInCurrentTariff","isSelectedRouterInCurrentTariff","selectedRouter","$wrap","RouterCard","labels","IsMyRouterFits","RoutersContainer","NBHYPHEN","getActionBtnText","hasDecoder","RoutersBlock","DecodersBlock","MovixNotSelected","EditableContactsForm","BlockWrap","RequestForm","useRouter","useResultPopup","PopupResult","showResult","setFio","setPhone","tariffPackage","products","fullBuy","unifiedSelectedAddress","selectedAddress","isMono","sale_package_id","tariff_name","additionalProducts","addressParams","selectAddressParamsMemoize","isHouseConnected","gigabitAvail","gigabitMayConnect","isGigabitCanConnected","requiredGigaSpeed","isGigaSpeedRequired","shouldConnect","isTariffCanConnected","onSubmitRequest","resp","ok","EResultPopupStatus","PersonForm","onChangeFio","onChangePhone","isNeedToBlockInvalidFio","actionButtonProps","memo","BoldText","BaseAlert","results","canConnected","getText","hasCallRequest","messageType","icon","TickCircle","notConnected","gigabitError","availableSpeed","EAvailableSpeed","checkError","flatError","AddressCheckBlock","isNotFlatAddress","addressStatus","handleGigabitBtnClick","isGigabitError","isTariffCanConnect","resultType","useMemo","EVerificationStatus","Throbber","localDispatch","globalDispatch","useDispatch","getSelectedEntity","isConfirmButtonActive","isAddressFilled","shallowEqual","isEdit","isPrivate","currentSpeedAcrossEnum","GIGABIT_SPEED","MEGABIT_SPEED","onEdit","useCallback","setAddressEdit","onFillAddress","fillAddressAction","div","RoundedBlock","$indent","AddressInputFields","catchAddressData","disableCityChange","gtmCategory","gtmSenderCallback","defaultAddress","withSatelliteFilter","PolicyNote","buttonText","agreeUrl","POLICY_PAGE_LINK","checkAddress","Boolean","setSpeedRestrictions","ConfirmedForm","isDisableBtn","AddressContainer","isPhoneValid","trim","fillPhone","phones","auth","clientContacts","phoneOptions","CreatablePhoneSelect","option","setClientContactPhone","inputValue","onInputChange","setClientPhone","createLabel","placeholder","inputPlaceHolder","data-test","InputContainer","TextBlock","TextBlockAuth","PersonFormWrapper","isDataValid","isContactDataValid","selectTerminalResource","isShowPopup","setIsShowPopup","firstInputPhone","useOnceExecute","personalVerification","enterPhoneNumber","firstInputFio","enterFio","CreatablePhoneSelectWrapper","setClientName","changePlanWebcabThunk","openedPersonalDataVerification","ConfirmNumberPopup","onClosePopup","onConfirmed","stepPersonalData","dataLayerPushCategory","ContactsContainer","Phone","SBlockContainer","callCenter","callCenterNumber","selectCallCenterNumber","href","dataLayerPush","event","EVENTS","category","CATEGORIES","openChat","DoubleColumnLayout","Block","TwoInRow","TwoInRowWithExtraSpace","TabsContainer","RightSide","clickedOpenConnectionCostPopup","Cost","isMonthly","ConnectionConditions","analyticsCallback","Separator","$height","H4","$inline","clientPersonalName","clientPersonalAddress","clientPersonal","clientPersonalFio","getPhone","selectClientName","InfoBlock","isCollapsable","isRightSide","wrapper","InfoBlockItem","User","content","CallCalling","Location","getClientPersonalAddressStr","getAddressByStr","ChangePlanWebcabAlerts","openChatHandler","isLaptop","isReplanError","AgreementInfoContainer","SummaryInfo","Link","passHref","CallbackContacts","selectFinalData","agreementData","slot","sla","isInstallationHardware","isBiggerFont","CalendarSecond","Electricity","br","House","Clock","onGoToPayment","query","pay","dateTime","padStart","EmployeeVisitInfo","USER_LOGIN_ROUTE","CurrentTariffFinal","FinalContainer","BenefitsText","titlePrefix","benefits","setBenefits","matchAll","Array","from","descriptionFull","desktop","visibleByDefault","oneOf","getEntities","entitiesMap","Map","handleSelect","removeEntity","handleIconClick","WithSkeleton","inline","containerClassName","TvSubscription","onToggle","onIconClick","fullWidth","OnlineCinemaAdditionalInfo","getAgreementId","TIME_SLOT_YK_ERROR","ESlotsContainerState","SHOW_SLOTS","HIDE_SLOTS","SLOTS_EMPTY","slotResult","selectProviderId","selectDomain","setSlotResult","failureResponseFromSelectSlot","setFailureResponseFromSelectSlot","requestData","dateFrom","saleAgentClientName","ESaleAgentClientName","info","selectTimeSlot","prevState","Pre","$whiteSpace","Danger","errorMsg","DateOfServiceEngineerVisitWrapper","getTimeSlotsFunc","saleAgentTimeSlots","onConfirm","onClickConfirm","contractId","withComment","gaCategory","replanRequest","SelectVisitDateCurrentTariff","SelectVisitDate","SelectVisitDateContainer","HeaderWrapper","numberOfCalls","useRef","speedItems","getSpeedLines","startDot","isOnly100","firstSpeed","NBSP","UnorderedList","SpeedLineWithDescription","indexOfSelectedElement","selectSpeed","moveSpeedSlider","experimentalModeForConstructor","SpeedLineWithDescriptionContainer","names","prepareNames","service","join","createSelector","Alerts","ConnectedTvPackages","ConnectedOnlineCinemas","subscriptionsNames","selectConnectedSubscriptionsNames","connectedSubscriptions","AlertText","defaultDescription","ConnectedEntitiesContainer","EntitiesContainer","SRounderContainer","RounderContainer","SAccordionAnimate","AccordionAnimate","Head","Title","SubscriptonsWrap","SubscriptionItem","ArrowButton","isShow","groupName","setIsShow","AccordionAnimateHeader","rounded","SingleArrowDown","AccordionAnimateBody","SwitchableSubscription","additionalTvSubscriptions","getAdditionalTv","removeAllTvEntities","flushDecoders","BaseTvDisabled","removeTvEntity","addTvEntity","tvSubscription","SubscriptionsGroup","_id","ChannelListPopup","freePackets","companyName","selectCompanyName","TvSubscriptionsContainer","isShowTvBlock","selectIsShowTvBlock","InternetSpeedBlock","OnlineCinemasBlock","TvBlock","clickedMoveToSubscription","AdditionalSubscriptionsBlock","AntivirusBlock","clickedMoveToEquipment","highVoltage","Page","film","electricPlug","progress","canConnectAfterCheckedAddress","MEGABIT_AVAIL_CODES_LIST","onClickHandler","dynamicProps","imgName","imgPath","SteppableProgressBar","PriceWrap","Paragraph3","isPreviously","RoundedStickyBlock","isBottomSheetShown","setIsBottomSheetShown","toggleStickyClick","StickyBottomSheet","TotalInfo","BottomSheet","isShown","top","marginTop","padding","routerLimitations","decoderLimitations","scrollToTop","useScroll","absolute","verticalIndent","useValueByBreakpoint","laptop","steps","memoSteps","step","initialization","SkeletonTheme","borderRadius","WithSkeletonContext","isLoading","BaseToaster","direction","toasterData","removeToastHandler","$verticalIndent","$horizontalIndent","RulesBannerBlock","ProgressBarContainer","StepTabs","PercentDiscountLabel","FinalSummaryInfoContainer","SummaryInfoContainer","isAuth","selectIsAuth","Context","IS_LOCAL_ENVIROMENT","WideContainer","Constructor","ConstructorPage","cityIn","Layout","withMenu","withFooter","withChat","bgColor","getInitialProps","ctx","req","res","store","validatedAccessToken","clientProducts","constructorResponse","initialProps","isNeedAuthData","getRequester","apiTariffs","isConstructorAuthEnabled","nonPermanentRedirect","isConstructor","bannerId","axiosContent","axios","baseURL","isServerSide","process","interceptors","use","config","token","cookies","ACCESS_TOKEN_COOKIE","noCacheKey","NO_CACHE_COOKIE","headers","Promise","reject","contentRequest","create","url","paramsSerializer","params","onLoadSuggestions","suggestFio","suggestions","suggestion","PersonFormComponent","steet","AddressVerificationAnalytics","clickedAddressVerification","send","addressVerification","confirmCheckAddress","addressInputFieldsCallback","BaseAnalytics","PersonalVerificationAnalytics","SubmitRequestAnalytics","requestConnectionSuccess","requestConnectionError","ConstructorAnalytics","clickedMoveToFullbuyForm","ChangeTariffAnalytics","confirmTariffChangingError","confirmTariffChangingSuccess","confirmTariff100plusChangingSuccess","ConstructorCurrentTariffAnalytics","changeTariff","clickedMoveToChangeTariff","CONSTRUCTOR_AUTH","on","off","getABNVariant","getImage","onSuccess","onError","isClientSide","onload","onerror","timeout","fallbackSrc","defaultImageFallback","sourceLoaded","setSourceLoaded","setTimeout","useProgressiveImageWithFallbackDetection","isFallback","setIsFallback","errorEvent","setErrorEvent","settings","offsetY","ref","behavior","scrollTo","document","scrollHeight","getBoundingClientRect","pageYOffset","scrollIntoView","block","alignment","setSessionStorageByKey","sessionStorage","setItem","getSessionStorageByKey","getItem","parse","getSessionStorageDataWithTypes","dataString","removeSessionStorageDataByKey","removeItem","selectClientServices","selectClientAgreementId","selectNotSuspendServicesIds","val","activated","productId","suspendStatus","selectInternetService","PRODUCTS","internetServiceItem","terminalResources","FULL_BUY_SITE","FULL_BUY_EQUIPMENT_SITE","Strip","VerticalStrip","$position","HorizontalStrip","onStripClick","Close","StripComponent","BaseSheet","radius","css","$hideLast","propTypes","PropTypes","isAnimate","AccordionBody","bodyHide","bodyRef","offsetHeight","bodyShow","clearStyle","componentDidMount","componentDidUpdate","render","onTransitionEnd","Component","defaultProps","AccordionHeader","AccordionHeaderText","AccordionHeaderIcon","headerContent","require","accordionToggle","getHeader","child","getBody","required","isChecked","setIsChecked","onChangeHandler","input","entries","BaseRadio","DescribedCost","isReverse","installmentPeriod","elseOptions","selectedOption","setOption","purchaseOption","Purchase","Installment","CreatablePhoneSelectV2","createOptionPosition","rest","innerOptions","substring","Creatable","styles","components","IndicatorSeparator","ClearIndicator","Control","DropdownIndicator","Menu","MenuList","Option","formatCreateLabel","handleInputChange","meta","replaceValueForPhone","InputPhone","phoneDecorator","InputSimple","createValue","onMenuOpen","onMenuClose","masked","clonedOptions","clonedOptionsInner","isShowInput","onMaskedInputChange","inputProps","Fragment","Select","MaskedInput","createSvg","strokeWidth","path","strokeLinecap","strokeLinejoin","keyframes","TOAST_TRAVEL_DISTANCE","fadeIn","fadeOut","permanent","removeHandler","toastRef","allSettled","getAnimations","animation","finished","getStartPositionByDirection","_toasts","toast","Toast","changeToasts","newStack","getPaddingByIncomingIndent","getRadiusByIncomingProps","useScrollLock","lockScroll","unlockScroll","popupRoot","setPopupRoot","createRootElement","onCloseHandler","stopPropagation","createPortal","aria-hidden","Overlay","S","Sheet","Content","BaseBottomSheet","SingleArrowUp","isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","call","Parent","args","Class","apply","instance","Function","arguments","_construct","wrapNativeSuper","_cache","fn","indexOf","TypeError","has","set","constructor","enumerable","writable","configurable","_wrapNativeSuper"],"sourceRoot":""}