{"version":3,"file":"static/chunks/3290-89bbdd185db370bc.js","mappings":"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","sources":["webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/changeSelectedSlotState.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/flushHour.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/initialized.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/requestSlots.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/selectDate.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/selectDeliveryOption.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/selectHour.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/setComment.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/setDeliveryOptions.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/setErrorMessage.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/setIsLoading.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/setSlots.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/simple/updateHoursForDay.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/selectDeliveryOption.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/initialization.ts","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getBodyForTimeSlotsRequest.ts","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getConfirmBody.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/onConfirm.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/selectDate.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/requestSlots.ts","webpack://_N_E/../../packages/service-engineer-visit/src/actions/thunk/selectHour.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/SelectableElement/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/constants/actions.ts","webpack://_N_E/../../packages/service-engineer-visit/src/constants/index.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/Comment/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/Comment/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/containers/CommentContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/areSlotsEmpty.ts","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getErrorMessage.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/DateOfServiceEngineerVisit.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/containers/DateOfServiceEngineerVisitWrapper.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/DayItem/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/DayItem/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/DateSelection/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/DateSelection/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getSlots.ts","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/moreSlotsButtonIsDisabled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/DateSelectionContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/DeliveryTypeItem/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/DeliveryTypeItem/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/DeliveryOptions/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/DeliveryOptions/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getDeliveryOptions.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/DeliveryOptionsContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/NotAvailableTimePopup/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/notAvailableTimePopupIsOpen.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/NotAvailableTimePopupContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/SubmitButton/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getSelectedDate.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/SubmitButtonContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/HourItem/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/HourItem/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/components/TimeSelection/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/components/TimeSelection/index.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getTimeOfDay.ts","webpack://_N_E/../../packages/service-engineer-visit/src/containers/TimeSelectionContainer.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/containers/styled.ts","webpack://_N_E/../../packages/service-engineer-visit/src/reducer/initialState.ts","webpack://_N_E/../../packages/service-engineer-visit/src/reducer/reducer.ts","webpack://_N_E/../../packages/service-engineer-visit/src/context/Context.tsx","webpack://_N_E/../../packages/service-engineer-visit/src/helpers/dataLayerPush.ts","webpack://_N_E/../../packages/service-engineer-visit/src/helpers/getWithInstallValue.ts","webpack://_N_E/../../packages/service-engineer-visit/src/helpers/hourListForDay.ts","webpack://_N_E/../../packages/service-engineer-visit/src/helpers/transformTimeSlots.ts","webpack://_N_E/../../packages/service-engineer-visit/src/hooks/useContextDispatch.ts","webpack://_N_E/../../packages/service-engineer-visit/src/hooks/useContextSelector.ts","webpack://_N_E/../../packages/service-engineer-visit/src/types/ESaleAgentClientName.ts","webpack://_N_E/../../packages/service-engineer-visit/src/index.ts","webpack://_N_E/../../packages/service-engineer-visit/src/selectors/getLoadingState.ts","webpack://_N_E/../../packages/service-engineer-visit/src/types/EDeliveryType.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/index.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/predifined.ts","webpack://_N_E/../../packages/ui-react/src/components/Scrollable/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/Cost/format.ts","webpack://_N_E/../../packages/ui-react/src/components/costs/Cost/Cost.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/Cost/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/Cost/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/helpers/divideByThousand.ts","webpack://_N_E/../../packages/ui-react/src/components/svg/arrows/SingleArrowUp.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/blocks/RoundedBlock/index.ts","webpack://_N_E/../../packages/ui-react/src/experimental/forms/Textarea/ResizableTextarea.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/forms/styled.ts","webpack://_N_E/../../packages/ui-react/src/experimental/purchase/cost/Cost/RubleSymbol.ts","webpack://_N_E/../../packages/ui-react/src/experimental/purchase/cost/Cost/index.tsx","webpack://_N_E/../../packages/ui-react/src/experimental/purchase/cost/Cost/styled.ts"],"sourcesContent":["import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst changeSelectedSlotState = (state: boolean | null): IAction => ({\n type: EServiceEngineerActions.CHANGE_SELECTED_SLOT_STATE,\n payload: { state },\n});\n\nexport default changeSelectedSlotState;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst flushHour = (): IAction => ({\n type: EServiceEngineerActions.FLUSH_HOUR,\n payload: null,\n});\n\nexport default flushHour;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { TIncomingData } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst initialized = (\n incomingData: TIncomingData,\n): IAction => ({\n type: EServiceEngineerActions.INITIALIZED,\n payload: {\n incomingData,\n },\n});\n\nexport default initialized;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst requestSlots = (days: number): IAction => ({\n type: EServiceEngineerActions.REQUEST_SLOTS,\n payload: { days },\n});\n\nexport default requestSlots;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nexport const selectDate = (date: string): IAction => {\n return {\n type: EServiceEngineerActions.SELECT_DATE,\n payload: { date },\n };\n};\n\nexport default selectDate;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\nexport const selectDeliveryOption = (deliveryOption: TDeliveryOption): IAction => ({\n type: EServiceEngineerActions.SELECT_DELIVERY_OPTION,\n payload: {\n deliveryOption,\n },\n});\n\nexport default selectDeliveryOption;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst selectHour = (hour: string): IAction => {\n return {\n type: EServiceEngineerActions.SELECT_HOUR,\n payload: { hour },\n };\n};\n\nexport default selectHour;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst setComment = (comment: string): IAction => ({\n type: EServiceEngineerActions.SET_COMMENT,\n payload: { comment },\n});\n\nexport default setComment;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\nconst setDeliveryOptions = (\n options: TDeliveryOption[],\n): IAction => ({\n type: EServiceEngineerActions.SET_DELIVERY_OPTIONS,\n payload: {\n options,\n },\n});\n\nexport default setDeliveryOptions;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst setErrorMessage = (message: string): IAction => ({\n type: EServiceEngineerActions.SET_ERROR_MESSAGE,\n payload: message,\n});\n\nexport default setErrorMessage;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst setIsLoading = (state: boolean): IAction => ({\n type: EServiceEngineerActions.SET_IS_LOADING,\n payload: state,\n});\n\nexport default setIsLoading;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { TDay } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst setSlots = (slots: Record): IAction }> => ({\n type: EServiceEngineerActions.SET_SLOTS,\n payload: { slots },\n});\n\nexport default setSlots;\n","import EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport { THour } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport { IAction } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nconst updateHoursForDay = (date: string, hours: Record): IAction }> => ({\n type: EServiceEngineerActions.UPDATE_HOURS_FOR_DAY,\n payload: { date, hours },\n});\n\nexport default updateHoursForDay;\n","import { batch } from 'react-redux';\n\nimport { requestSlots } from '@r1-frontend/service-engineer-visit/actions';\nimport {\n selectDeliveryOption as selectDeliveryOptionAction,\n} from '@r1-frontend/service-engineer-visit/actions/simple';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\n/**\n * @param deliveryOption\n * @param domain rudiment\n * @param productId\n */\nconst selectDeliveryOption = (deliveryOption: TDeliveryOption, domain: string, productId: number | undefined, gaLabel?: string | undefined) =>\n async(dispatch: TContextDispatch) => {\n batch(() => {\n dispatch(selectDeliveryOptionAction(deliveryOption));\n // @ts-ignore\n dispatch(requestSlots(productId, gaLabel));\n });\n };\n\nexport default selectDeliveryOption;\n","import { batch } from 'react-redux';\n\nimport { requestSlots } from '@r1-frontend/service-engineer-visit/actions';\nimport { initialized, setDeliveryOptions } from '@r1-frontend/service-engineer-visit/actions/simple';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { ESaleAgentClientName } from '@r1-frontend/service-engineer-visit/types/ESaleAgentClientName';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\n\nimport selectDeliveryOption from './selectDeliveryOption';\n\nexport type TInitializationProps = {\n getTimeSlotsFunc: TGetTimeSlots,\n contractId: number,\n clientName: ESaleAgentClientName,\n gaCategory: string,\n gaLabel?: string,\n productId?: number,\n dateFrom?: Date,\n numberOfDays?: number,\n maxNumberOfDays?: number,\n deliveryOptions?: TDeliveryOption[],\n selectedDeliveryOption?: TDeliveryOption,\n withComment?: boolean,\n};\n\nconst initialization = (\n {\n getTimeSlotsFunc,\n dateFrom = new Date(),\n numberOfDays = 7,\n maxNumberOfDays = 30,\n contractId,\n productId = undefined,\n clientName,\n deliveryOptions,\n selectedDeliveryOption = undefined,\n withComment = false,\n gaCategory,\n gaLabel,\n }: TInitializationProps,\n domain: string,\n) => (dispatch: TContextDispatch) => {\n dispatch(initialized({\n dateFrom,\n numberOfDays,\n maxNumberOfDays,\n contractId,\n clientName,\n productId,\n withComment,\n gaCategory,\n gaLabel,\n }));\n\n // if usage of container with the delivery options then will be dispatched the select delivery option with inner call the request slots action.\n // otherwise we should call it manually\n if (deliveryOptions) {\n batch(() => {\n dispatch(setDeliveryOptions(deliveryOptions));\n // @ts-ignore\n dispatch(selectDeliveryOption(selectedDeliveryOption ? selectedDeliveryOption : deliveryOptions[0], domain, productId, gaLabel));\n });\n } else {\n // @ts-ignore\n dispatch(requestSlots(productId, getTimeSlotsFunc, gaLabel));\n }\n};\n\nexport default initialization;\n\n","import dayjs from 'dayjs';\n\nimport { getWithInstallValue } from '@r1-frontend/service-engineer-visit/helpers';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getBodyForTimeSlotsRequest = (state: TInitialState, dateFrom: Date | string, dateTo: Date | string, productId: number | undefined = 0) => {\n if (!state._incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n const result = {\n dateFrom: dateFrom instanceof Date ? dayjs(dateFrom).format('DD.MM.YYYY') : dateFrom,\n dateTo: dateTo instanceof Date ? dayjs(dateTo).format('DD.MM.YYYY') : dateTo,\n agreementId: state._incomingData.contractId,\n saleAgentClientName: state._incomingData.clientName,\n withInstall: getWithInstallValue(state),\n buyProduct: productId,\n };\n\n if (state._incomingData.productId) {\n result['buyProduct'] = state._incomingData.productId;\n }\n\n return result;\n};\n\nexport default getBodyForTimeSlotsRequest;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\nconst getConfirmBody = (state: TInitialState): TReturnType => {\n const {\n selected,\n _incomingData,\n } = state;\n\n if (!_incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n const result = {\n date: `${selected.date}`,\n hour: `${selected.hour}:00`,\n } as TReturnType;\n\n if (selected.deliveryOption) {\n result['deliveryType'] = String(selected.deliveryOption.name);\n result['deliveryCost'] = Number(selected.deliveryOption.cost);\n }\n\n if (_incomingData.withComment) {\n result['comment'] = selected.comment;\n }\n\n return result;\n};\n\nexport default getConfirmBody;\n","import cookies from 'react-cookies';\nimport { batch } from 'react-redux';\n\nimport { changeSelectedSlotState, flushHour, setIsLoading, updateHoursForDay } from '@r1-frontend/service-engineer-visit/actions/simple';\nimport { PROVIDER_ID_COOKIE } from '@r1-frontend/service-engineer-visit/constants';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { dataLayerPush, transformTimeSlots } from '@r1-frontend/service-engineer-visit/helpers';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport getBodyForTimeSlotsRequest from '@r1-frontend/service-engineer-visit/selectors/getBodyForTimeSlotsRequest';\nimport getConfirmBody from '@r1-frontend/service-engineer-visit/selectors/getConfirmBody';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\nimport { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\nconst onConfirm = (\n domain = '',\n confirmCallback: (result: TReturnType | null) => void,\n getTimeSlotsFunc: TGetTimeSlots,\n productId?: number,\n gaLabel?: string,\n) => async(dispatch: TContextDispatch, getState: () => TInitialState) => {\n const {\n _incomingData,\n selected: {\n date,\n hour,\n },\n slots: stateSlots,\n } = getState();\n\n const providerId = cookies.load(PROVIDER_ID_COOKIE);\n\n if (!_incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n if (!date || !hour) {\n return;\n }\n\n dispatch(setIsLoading(true));\n\n const body = getBodyForTimeSlotsRequest(getState(), date, date, productId);\n\n const resp = await getTimeSlotsFunc(providerId, body);\n\n dataLayerPush({\n category: _incomingData.gaCategory || '',\n action: `request_connection_${!resp.isSuccess ? 'error' : 'success'}`,\n label: gaLabel,\n });\n\n if (!resp.isSuccess) {\n dataLayerPush({\n category: _incomingData.gaCategory,\n action: 'request connection',\n label: `error ${resp.error.message} ${domain}`,\n });\n batch(() => {\n dispatch(changeSelectedSlotState(false));\n dispatch(setIsLoading(false));\n dispatch(flushHour());\n });\n } else {\n const response = transformTimeSlots(Object.values(resp.payload.timeSlots));\n if (!response || !response[date]) {\n batch(() => {\n dispatch(changeSelectedSlotState(false));\n dispatch(setIsLoading(false));\n dispatch(flushHour());\n });\n return;\n }\n\n const selectedHourFromResponse = response[date].hours[hour];\n\n if (selectedHourFromResponse.active) {\n dispatch(changeSelectedSlotState(true));\n confirmCallback(getConfirmBody(getState()));\n } else {\n const updatedHours = JSON.parse(JSON.stringify(stateSlots[date].hours));\n updatedHours[hour].active = false;\n\n batch(() => {\n dispatch(updateHoursForDay(date, updatedHours));\n dispatch(changeSelectedSlotState(false));\n dispatch(setIsLoading(false));\n dispatch(flushHour());\n });\n }\n }\n};\n\nexport default onConfirm;\n","import { selectDate as selectDateAction, selectHour } from '@r1-frontend/service-engineer-visit/actions/simple';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst selectDate = (date: string) => (dispatch: TContextDispatch, getState: () => TInitialState) => {\n const {\n _incomingData,\n slots,\n } = getState();\n\n if (!_incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n dispatch(selectDateAction(date));\n\n for (const hourKey in slots[date].hours) {\n if (slots[date].hours[hourKey].active) {\n dispatch(selectHour(String(slots[date].hours[hourKey].from)));\n break;\n }\n }\n};\n\nexport default selectDate;\n","import cookies from 'react-cookies';\nimport { batch } from 'react-redux';\nimport { captureException } from '@sentry/node';\nimport dayjs from 'dayjs';\n\nimport { PROVIDER_ID_COOKIE } from '@r1-frontend/service-engineer-visit/constants';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { dataLayerPush, transformTimeSlots } from '@r1-frontend/service-engineer-visit/helpers';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport getBodyForTimeSlotsRequest from '@r1-frontend/service-engineer-visit/selectors/getBodyForTimeSlotsRequest';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\n\nimport { requestSlots as requestSlotsAction, setErrorMessage, setIsLoading, setSlots } from '../simple';\n\nimport selectDate from './selectDate';\n\nconst requestSlots = (\n productId: number | undefined,\n getTimeSlotsFunc: TGetTimeSlots,\n gaLabel?: string,\n) => async(dispatch: TContextDispatch, getState: () => TInitialState) => {\n const {\n _requestedDays,\n _incomingData,\n } = getState();\n\n const providerId = cookies.load(PROVIDER_ID_COOKIE);\n\n if (!_incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n const {\n numberOfDays,\n maxNumberOfDays,\n } = _incomingData;\n\n if (_requestedDays >= maxNumberOfDays) {\n return null;\n }\n\n dispatch(setIsLoading(true));\n\n const addingToStartDate = _requestedDays;\n let addingToEndDate = addingToStartDate + numberOfDays - 1; // 0,6; 7,13; 14,20; 21,27; 28,30;\n\n if (addingToEndDate > maxNumberOfDays) {\n addingToEndDate = maxNumberOfDays;\n }\n\n const dateFrom = dayjs(_incomingData.dateFrom).add(addingToStartDate, 'day').toDate();\n const dateTo = dayjs(_incomingData.dateFrom).add(addingToEndDate, 'day').toDate();\n\n dataLayerPush({\n category: _incomingData.gaCategory,\n action: 'getting_time_slots_start',\n label: gaLabel,\n });\n\n const body = getBodyForTimeSlotsRequest(getState(), dateFrom, dateTo, productId);\n\n const resp = await getTimeSlotsFunc(providerId, body);\n\n if (resp.isSuccess) {\n const slots = transformTimeSlots(Object.values(resp.payload.timeSlots));\n\n dataLayerPush({\n category: _incomingData.gaCategory,\n action: 'getting_time_slots_success',\n label: gaLabel,\n });\n\n batch(() => {\n dispatch(setSlots(slots));\n dispatch(setErrorMessage(''));\n // TS2345: Argument of type '(dispatch: TDispatch, getState: () => TInitialState) => void' is not\n // assignable to parameter of type 'IAction'.\n // @ts-ignore\n if (Object.keys(resp.payload.timeSlots).length > 0) {\n dispatch(selectDate(Object.values(slots)[0].date));\n dispatch(requestSlotsAction(addingToEndDate + 1));\n }\n });\n } else {\n dispatch(setErrorMessage(resp.error.message));\n dataLayerPush({\n category: _incomingData.gaCategory,\n action: 'getting_time_slots_error',\n label: gaLabel || resp.error ? resp.error.message : 'нет описания',\n });\n captureException(resp.error);\n }\n\n dispatch(setIsLoading(false));\n};\n\nexport default requestSlots;\n","import { selectHour as selectHourAction } from '@r1-frontend/service-engineer-visit/actions/simple';\nimport { TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst selectHour = (hour: string) => (dispatch: TContextDispatch, getState: () => TInitialState) => {\n const {\n _incomingData,\n } = getState();\n\n if (!_incomingData) {\n throw new Error('Incoming data is not set');\n }\n\n dispatch(selectHourAction(hour));\n};\n\nexport default selectHour;\n","import React, { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\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 type TSelectableElement = {\n $selected?: boolean,\n disabled?: boolean,\n}\n\ninterface ISelectableWrapperProps extends TSelectableElement {\n children: ReactNode | ReactNode[] | string,\n}\n\nconst SelectableWrapper = ({\n children,\n ...props\n}: ISelectableWrapperProps): JSX.Element => {\n return
{children}
;\n};\n\nconst SelectableElement = styled(SelectableWrapper)`\n display: block;\n border-radius: 20px;\n cursor: pointer;\n border: 2px solid transparent;\n padding: 2px;\n\n & > * {\n background-color: ${COLORS.BgSubstrate};\n border-radius: ${BorderRadius.componentRadius};\n }\n\n ${FONTS.S};\n\n ${({ $selected }) => $selected\n ? css`\n & > * {\n background-color: ${COLORS.BgMain};\n }\n\n border-color: ${COLORS.Brand_Blue};\n font-weight: bold;\n\n ${FONTS.MediumS};\n `\n : ''\n }\n\n ${({ disabled }) => disabled\n ? css`\n pointer-events: none;\n color: ${COLORS.TextDisabled};\n `\n : ''\n }\n`;\n\nexport default SelectableElement;\n","enum EServiceEngineerActions {\n INITIALIZED = '@serviceEngineer/initialized',\n\n SET_DELIVERY_OPTIONS = '@serviceEngineer/set/deliveryOptions',\n\n SELECT_DELIVERY_OPTION = '@serviceEngineer/select/deliveryOption',\n\n SELECT_DATE = '@serviceEngineer/select/date',\n FLUSH_HOUR = '@serviceEngineer/flush/hour',\n SELECT_HOUR = '@serviceEngineer/select/hour',\n\n SET_COMMENT = '@serviceEngineer/set/comment',\n SET_ERROR_MESSAGE = '@serviceEngineer/set/errorMessage',\n\n CONFIRM = '@serviceEngineer/confirm',\n\n SET_SLOTS = '@serviceEngineer/set/timeSlots',\n UPDATE_HOURS_FOR_DAY = '@serviceEngineer/update/hoursForDay',\n SET_IS_LOADING = '@serviceEngineer/loadingState/set',\n\n REQUEST_SLOTS = '@serviceEngineer/slots/request',\n\n CHANGE_SELECTED_SLOT_STATE = '@serviceEngineer/slots/change/slotState',\n}\n\nexport default EServiceEngineerActions;\n","// @todo check all available statuses from response of timeslots, type it in the ITime interface\nexport const TIME_SLOT_BUSY_STATUS = 2;\n\nexport const PROVIDER_ID_COOKIE = 'providerId';\n","import styled from 'styled-components';\n\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nexport const Block = styled.div`\n display: block;\n width: 100%;\n \n ${ResizableTextarea} {\n width: 100%;\n }\n`;\n","import React from 'react';\n\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nimport * as S from './styled';\n\nconst defaultPlaceholder = 'Комментарий для инженера';\n\ntype TCommentProps = {\n defaultValue?: string,\n handleInputComment: (e: React.ChangeEvent) => void,\n placeholder?: string,\n}\n\nconst Comment = ({ defaultValue, handleInputComment, placeholder = defaultPlaceholder }: TCommentProps): JSX.Element=> {\n return (\n \n \n \n \n \n );\n};\n\nexport default Comment;\n","import React from 'react';\n\nimport { setComment } from '@r1-frontend/service-engineer-visit/actions';\nimport Comment from '@r1-frontend/service-engineer-visit/components/Comment';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\n\ntype TCommentContainerProps = {\n placeholder?: string,\n}\n\nconst CommentContainer = ({ placeholder }: TCommentContainerProps) => {\n const { selectedComment } = useContextSelector(state => ({\n selectedComment: state.selected.comment,\n }));\n const dispatch = useContextDispatch();\n\n const handleInputComment = (e: React.ChangeEvent) => {\n dispatch(setComment(e.target.value));\n };\n\n return (\n \n );\n};\n\nexport default CommentContainer;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst areSlotsEmpty = (state: TInitialState) => Object.values(state.slots).length === 0;\n\nexport default areSlotsEmpty;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getErrorMessage = (state: TInitialState) => state.errorMessage;\n\nexport default getErrorMessage;\n","import React, { useCallback, useEffect } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\nimport { TInitializationProps } from '@r1-frontend/service-engineer-visit/actions/thunk/initialization';\nimport CommentContainer from '@r1-frontend/service-engineer-visit/containers/CommentContainer';\nimport DateSelectionContainer from '@r1-frontend/service-engineer-visit/containers/DateSelectionContainer';\nimport DeliveryOptionsContainer from '@r1-frontend/service-engineer-visit/containers/DeliveryOptionsContainer';\nimport NotAvailableTimePopupContainer from '@r1-frontend/service-engineer-visit/containers/NotAvailableTimePopupContainer';\nimport SubmitButtonContainer from '@r1-frontend/service-engineer-visit/containers/SubmitButtonContainer';\nimport TimeSelectionContainer from '@r1-frontend/service-engineer-visit/containers/TimeSelectionContainer';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport areSlotsEmpty from '@r1-frontend/service-engineer-visit/selectors/areSlotsEmpty';\nimport getErrorMessage from '@r1-frontend/service-engineer-visit/selectors/getErrorMessage';\nimport getLoadingState from '@r1-frontend/service-engineer-visit/selectors/getLoadingState';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\nimport { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\nimport { SkeletonTheme, WithSkeletonContext } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport {\n initialization,\n} from '../actions';\n\nimport * as S from './styled';\n\ntype TDeliveryTypeProps = {\n onDeliveryOptionSelected?: (deliveryOption: TDeliveryOption) => void,\n deliveryOptions: TDeliveryOption[],\n} | {\n onDeliveryOptionSelected?: never,\n deliveryOptions?: never,\n};\n\nexport type TProps = {\n onConfirm: (result: TReturnType | null, msg?: string) => void,\n onClickConfirm: () => void, // TODO, требуется другое решение. (сейчас используется для отправки события клика по кнопке подтвердить в аналитику)\n getTimeSlotsFunc: TGetTimeSlots,\n withComment?: boolean,\n onUpdateLoading?: () => void,\n domain: string,\n}\n\ntype DateOfServiceEngineerVisitContainerWithAgreementIdProps =\n TProps\n & TDeliveryTypeProps\n & Omit;\n\nconst DateOfServiceEngineerVisit = ({\n getTimeSlotsFunc,\n withComment,\n onConfirm,\n onClickConfirm,\n onDeliveryOptionSelected = () => true,\n domain,\n onUpdateLoading,\n ...initializationObject\n}: DateOfServiceEngineerVisitContainerWithAgreementIdProps): JSX.Element => {\n const { loading, isSlotsEmpty, errorMessage } = useContextSelector(state => ({\n loading: getLoadingState(state),\n isSlotsEmpty: areSlotsEmpty(state),\n errorMessage: getErrorMessage(state),\n }));\n const dispatch = useContextDispatch();\n\n const sendAnalytics = useCallback(({ action, label }: { action: string, label?: string }) => {\n return dataLayerPush({\n event: EVENTS.UAevent,\n category: initializationObject?.gaCategory || '',\n action,\n label: label || initializationObject?.gaLabel || 'start',\n });\n }, [initializationObject?.gaCategory]);\n\n useEffect(() => {\n dispatch(\n initialization(\n {\n ...initializationObject,\n getTimeSlotsFunc,\n withComment,\n },\n domain,\n ),\n );\n }, []);\n\n // todo: вынести в экшн\n useEffect(() => {\n if (!loading) {\n onUpdateLoading && onUpdateLoading();\n isSlotsEmpty && onConfirm(null, errorMessage);\n }\n }, [loading, isSlotsEmpty, onConfirm, errorMessage, onUpdateLoading]);\n\n return (\n \n \n \n \n {(initializationObject.deliveryOptions && initializationObject.deliveryOptions.length > 0) && (\n \n )}\n\n \n\n \n\n \n \n \n\n \n \n \n \n );\n};\n\nexport default DateOfServiceEngineerVisit;\n","import { TInitializationProps } from '@r1-frontend/service-engineer-visit/actions/thunk/initialization';\nimport DateOfServiceEngineerVisit\n from '@r1-frontend/service-engineer-visit/containers/DateOfServiceEngineerVisit';\nimport ContextProvider from '@r1-frontend/service-engineer-visit/context/Context';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\nimport { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\ntype TDeliveryTypeProps = {\n onDeliveryOptionSelected?: (deliveryOption: TDeliveryOption) => void,\n deliveryOptions: TDeliveryOption[],\n} | {\n onDeliveryOptionSelected?: never,\n deliveryOptions?: never,\n};\n\nexport type TProps = {\n onConfirm: (result: TReturnType | null, msg?: string) => void,\n onClickConfirm: () => void, // TODO, требуется другое решение. (сейчас используется для отправки события клика по кнопке подтвердить в аналитику)\n getTimeSlotsFunc: TGetTimeSlots,\n onUpdateLoading?: () => void,\n withComment?: boolean,\n domain: string,\n}\n\ntype DateOfServiceEngineerVisitContainerWithAgreementIdProps =\n TProps\n & TDeliveryTypeProps\n & Omit;\n\nconst DateOfServiceEngineerVisitWrapper = (props: DateOfServiceEngineerVisitContainerWithAgreementIdProps) => {\n return (\n \n \n \n );\n};\n\nexport default DateOfServiceEngineerVisitWrapper;\n","import styled from 'styled-components';\n\nexport const DayItem = styled.div`\n display: flex;\n\n flex-direction: column;\n gap: 8px;\n align-items: center;\n justify-content: center;\n \n width: 56px;\n\n padding: 12px 8px;\n`;\n\nexport const Child = styled.div`\n display: block;\n width: 40px;\n text-align: center;\n`;\n","import React from 'react';\n\nimport SelectableElement, { TSelectableElement } from '@r1-frontend/service-engineer-visit/components/SelectableElement';\n\nimport * as S from './styled';\n\nexport type TDayItemProps = {\n weekday: string,\n day: string | number,\n onClick: () => void,\n} & TSelectableElement;\n\nconst DayItem = ({ weekday, day, ...props }: TDayItemProps): JSX.Element => {\n return \n \n {day}\n {weekday}\n \n ;\n};\n\n\nexport default DayItem;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nexport const Block = styled.div`\n display: block;\n width: 100%;\n \n ${ResizableTextarea} {\n width: 100%;\n }\n`;\n\nexport const DaysSection = styled.div`\n display: block;\n \n ${Button} {\n margin-top: 20px;\n }\n`;\n\nconst DefaultWrapper = styled.div`\n display: flex;\n gap: 2px;\n`;\n\nexport const DaysWrapper = styled(DefaultWrapper)`\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: nowrap;\n`;\n","import React from 'react';\nimport dayjs from 'dayjs';\n\nimport DayItem from '@r1-frontend/service-engineer-visit/components/DayItem';\nimport { TDay } from '@r1-frontend/service-engineer-visit/reducer/initialState';\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 Scrollable from '@r1-frontend/ui-react/components/Scrollable';\nimport { SingleArrowRight } 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 TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport * as S from './styled';\n\nconst formatCurrentDateString = () => {\n return `Сегодня ${dayjs(new Date(), { locale: 'ru' }).format('DD MMMM')}`;\n};\n\ntype TDateSelectionProps = {\n slots: TDay[],\n selectedDate?: string,\n handleSelectDate: (date: string) => () => void,\n handleMore: () => void,\n requestedDays: number,\n moreButtonIsDisabled: boolean,\n}\n\nconst DateSelection = ({ slots, selectedDate, handleSelectDate, handleMore, requestedDays, moreButtonIsDisabled }: TDateSelectionProps): JSX.Element => {\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n return (\n \n \n

Дата

\n {formatCurrentDateString()}\n
\n \n \n <>\n 7}>\n \n {slots.map(day => (\n \n {day.isFirstDate && (\n \n {dayjs(day.date.split('.').reverse().join(','), { locale: 'ru' }).format('MMMM')}\n \n )}\n \n \n ))}\n \n \n }\n onClick={handleMore}\n disabled={moreButtonIsDisabled}\n />\n \n \n \n
\n );\n};\n\nexport default DateSelection;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getSlots = (state: TInitialState) => Object.values(state.slots);\n\nexport default getSlots;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst moreSlotsButtonIsDisabled = (state: TInitialState) => {\n return (state._incomingData?.maxNumberOfDays !== undefined &&\n state._requestedDays >= state._incomingData.maxNumberOfDays\n ) || state._loading;\n};\n\nexport default moreSlotsButtonIsDisabled;\n","import { requestSlots, selectDate } from '@r1-frontend/service-engineer-visit/actions';\nimport DateSelection from '@r1-frontend/service-engineer-visit/components/DateSelection';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport getSlots from '@r1-frontend/service-engineer-visit/selectors/getSlots';\nimport moreSlotsButtonIsDisabled from '@r1-frontend/service-engineer-visit/selectors/moreSlotsButtonIsDisabled';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\n\ntype TDateSelectionContainerProps = {\n sendAnalytics: ({ action, label }: { action: string, label?: string }) => void,\n getTimeSlotsFunc: TGetTimeSlots,\n productId?: number,\n gaLabel?: string,\n}\n\nconst DateSelectionContainer = ({ sendAnalytics, getTimeSlotsFunc, productId, gaLabel }: TDateSelectionContainerProps): JSX.Element => {\n const { slots, moreButtonIsDisabled, selectedDate, requestedDays } = useContextSelector(state => ({\n slots: getSlots(state),\n moreButtonIsDisabled: moreSlotsButtonIsDisabled(state),\n selectedDate: state.selected.date,\n requestedDays: state._requestedDays,\n }));\n const dispatch = useContextDispatch();\n\n const handleSelectDate = (date: string) => () => {\n dispatch(selectDate(date));\n sendAnalytics({\n action: 'choosed_date',\n label: gaLabel,\n });\n };\n\n const handleMore = () => {\n dispatch(requestSlots(productId, getTimeSlotsFunc, gaLabel));\n };\n\n return (\n \n );\n};\n\nexport default DateSelectionContainer;\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n justify-content: space-between;\n cursor: pointer;\n padding: 16px;\n`;\n\n","import React, { ReactNode, SyntheticEvent } from 'react';\n\nimport SelectableElement, { TSelectableElement } from '@r1-frontend/service-engineer-visit/components/SelectableElement';\n\nimport * as S from './styled';\n\nexport type TDeliveryTypeItemProps = {\n children: ReactNode,\n onClick: (e: SyntheticEvent) => void,\n} & TSelectableElement;\n\nconst DeliveryTypeItem = ({ children, ...props }: TDeliveryTypeItemProps): JSX.Element => {\n return (\n \n {children}\n \n );\n};\n\nexport default DeliveryTypeItem;\n","import styled from 'styled-components';\n\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nexport const Block = styled.div`\n display: block;\n width: 100%;\n \n ${ResizableTextarea} {\n width: 100%;\n }\n`;\n\nconst DefaultWrapper = styled.div`\n display: flex;\n gap: 2px;\n`;\n\nexport const DeliveryOptionsWrapper = styled(DefaultWrapper)`\n flex-direction: column;\n\n & > * {\n max-width: 314px;\n }\n`;\n","import React, { SyntheticEvent } from 'react';\n\nimport DeliveryTypeItem from '@r1-frontend/service-engineer-visit/components/DeliveryTypeItem';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Cost } from '@r1-frontend/ui-react/experimental/purchase/cost';\n\nimport * as S from './styled';\n\ntype TDeliveryOptionsProps = {\n deliveryOptions: TDeliveryOption[],\n selectedDeliveryOption?: TDeliveryOption,\n handleDeliveryOptionSelection: (option: TDeliveryOption) => (e: SyntheticEvent) => void,\n loading: boolean,\n}\n\nconst DeliveryOptions = ({ deliveryOptions, selectedDeliveryOption, handleDeliveryOptionSelection, loading }: TDeliveryOptionsProps): JSX.Element => {\n return (\n \n

Настроить оборудование?

\n\n \n {deliveryOptions.map(option =>\n \n {option.label}\n {option.cost}\n )}\n \n
\n );\n};\n\nexport default DeliveryOptions;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getDeliveryOptions = (state: TInitialState) => ({\n deliveryOptionsList: state.deliveryOptions,\n selectedDeliveryOption: state.selected.deliveryOption,\n});\n\nexport default getDeliveryOptions;\n","import React, { SyntheticEvent } from 'react';\n\nimport { selectDeliveryOption } from '@r1-frontend/service-engineer-visit/actions';\nimport DeliveryOptions from '@r1-frontend/service-engineer-visit/components/DeliveryOptions';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport getDeliveryOptions from '@r1-frontend/service-engineer-visit/selectors/getDeliveryOptions';\nimport getLoadingState from '@r1-frontend/service-engineer-visit/selectors/getLoadingState';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\ntype TDeliveryOptionsContainerProps = {\n domain: string,\n onDeliveryOptionSelected?: (deliveryOption: TDeliveryOption) => void,\n sendAnalytics: ({ action, label }: { action: string, label?: string }) => void,\n gaLabel?: string,\n productId?: number,\n}\n\nconst DeliveryOptionsContainer = ({ domain, onDeliveryOptionSelected, sendAnalytics, productId, gaLabel }: TDeliveryOptionsContainerProps) => {\n const { delivery, loading } = useContextSelector(state => ({\n delivery: getDeliveryOptions(state),\n loading: getLoadingState(state),\n }));\n const dispatch = useContextDispatch();\n\n const handleDeliveryOptionSelection = (option: TDeliveryOption) => (e: SyntheticEvent) => {\n // the event is calling at the label and the input in Radio Button component, so we should to stop event\n // propagation\n e.preventDefault();\n if (onDeliveryOptionSelected) {\n onDeliveryOptionSelected(option);\n }\n\n sendAnalytics({\n action: option.name === 'delivery_and_setup' ? 'click_delivery_and_installation' : 'click_only_delivery',\n label: gaLabel || 'start',\n });\n dispatch(selectDeliveryOption(option, domain, productId));\n };\n\n\n return (\n \n );\n};\n\nexport default DeliveryOptionsContainer;\n","import React from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport PopupResult, { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\n\ntype TNotAvailableTimePopupProps = {\n isOpen: boolean,\n handleClosePopup: () => void,\n title?: string,\n buttonText?: string,\n}\n\nconst NotAvailableTimePopup = ({ isOpen, handleClosePopup, title, buttonText }: TNotAvailableTimePopupProps): JSX.Element => {\n return (\n \n \n \n );\n};\n\nexport default NotAvailableTimePopup;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst notAvailableTimePopupIsOpen = (state: TInitialState) => state._selectedSlotAvailable === false;\n\nexport default notAvailableTimePopupIsOpen;\n","import React from 'react';\n\nimport { changeSelectedSlotState } from '@r1-frontend/service-engineer-visit/actions';\nimport NotAvailableTimePopup from '@r1-frontend/service-engineer-visit/components/NotAvailableTimePopup';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport notAvailableTimePopupIsOpen from '@r1-frontend/service-engineer-visit/selectors/notAvailableTimePopupIsOpen';\n\ntype TNotAvailableTimePopupContainerProps = {\n title?: string,\n buttonText?: string,\n}\n\nconst NotAvailableTimePopupContainer = ({ title, buttonText }: TNotAvailableTimePopupContainerProps): JSX.Element => {\n const dispatch = useContextDispatch();\n const { isOpen } = useContextSelector(state => ({\n isOpen: notAvailableTimePopupIsOpen(state),\n }));\n\n const handleClosePopup = () => {\n dispatch(changeSelectedSlotState(null));\n };\n\n return (\n \n );\n};\n\nexport default NotAvailableTimePopupContainer;\n","import React 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 { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\n\ntype TSubmitButtonProps = {\n handleConfirm: () => void,\n selectedDate: {weekday: string, from: string, to: string} | undefined,\n buttonIsDisabled: boolean,\n}\n\nconst SubmitButton = ({ selectedDate, handleConfirm, buttonIsDisabled }: TSubmitButtonProps): JSX.Element => {\n return (\n \n \n \n \n Подтвердить {selectedDate && (\n <>\n {selectedDate.weekday.toLowerCase()} c {selectedDate.from}00 по {selectedDate.to}00\n \n )}\n \n \n \n \n );\n};\n\nexport default SubmitButton;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getSelectedDate = (state: TInitialState): { weekday: string, from: string, to: string } | undefined => {\n const {\n selected,\n slots,\n } = state;\n\n if (selected.date && selected.hour) {\n const selectedSlot = slots[selected.date];\n const selectedHour = selectedSlot?.hours[selected.hour];\n\n if (selectedSlot && selectedHour) {\n return {\n weekday: selectedSlot.weekday,\n from: selectedHour.from,\n to: selectedHour.to,\n };\n }\n return;\n }\n return;\n};\n\nexport default getSelectedDate;\n","import React from 'react';\n\nimport { onConfirm as onConfirmAction } from '@r1-frontend/service-engineer-visit/actions';\nimport SubmitButton from '@r1-frontend/service-engineer-visit/components/SubmitButton';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport getLoadingState from '@r1-frontend/service-engineer-visit/selectors/getLoadingState';\nimport getSelectedDate from '@r1-frontend/service-engineer-visit/selectors/getSelectedDate';\nimport { TGetTimeSlots } from '@r1-frontend/service-engineer-visit/types/TGetTimeSlots';\nimport { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\ntype TSubmitButtonContainerProps = {\n domain: string,\n onConfirm: (result: TReturnType | null, msg?: string) => void,\n onClickConfirm: () => void,\n getTimeSlotsFunc: TGetTimeSlots,\n productId?: number,\n gaLabel?: string,\n}\n\nconst SubmitButtonContainer = ({ domain, onConfirm, onClickConfirm, getTimeSlotsFunc, productId, gaLabel }: TSubmitButtonContainerProps): JSX.Element => {\n const dispatch = useContextDispatch();\n const { selectedDate, loading } = useContextSelector(state => ({\n selectedDate: getSelectedDate(state),\n loading: getLoadingState(state),\n }));\n\n const handleConfirm = () => {\n dispatch(onConfirmAction(domain, onConfirm, getTimeSlotsFunc, productId, gaLabel));\n onClickConfirm();\n };\n\n const buttonIsDisabled = loading || !selectedDate || selectedDate && !(selectedDate.from && selectedDate.to);\n\n return (\n \n );\n};\n\nexport default SubmitButtonContainer;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const TimeItem = styled.div`\n display: flex;\n\n flex-direction: column;\n align-items: center;\n justify-content: center;\n \n width: 89px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n width: 90px;\n }\n\n white-space: nowrap;\n padding: 12px 8px;\n`;\n","import React from 'react';\n\nimport SelectableElement, {\n TSelectableElement,\n} from '@r1-frontend/service-engineer-visit/components/SelectableElement';\n\nimport { Cost } from '@r1-frontend/ui-react/components/costs';\n\nimport * as S from './styled';\n\nexport type TTimeItemProps = {\n from: string | number,\n to: string | number,\n cost?: number,\n onClick: () => void,\n} & TSelectableElement;\n\nconst TimeItem = ({ from, to, cost, ...props }: TTimeItemProps): JSX.Element => {\n return \n \n {props.$selected ? <>{from}-{to}:00 : <>{from}:00}\n {Number.isInteger(cost) && (\n {String(cost)}\n )}\n \n ;\n};\n\nexport default TimeItem;\n","import styled from 'styled-components';\n\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nexport const Block = styled.div`\n display: block;\n width: 100%;\n \n ${ResizableTextarea} {\n width: 100%;\n }\n`;\n\nconst DefaultWrapper = styled.div`\n display: flex;\n gap: 2px;\n`;\n\nexport const DaysWrapper = styled(DefaultWrapper)`\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: nowrap;\n`;\n\nexport const HoursWrapper = styled(DaysWrapper)`\n flex-wrap: wrap;\n padding-bottom: 0;\n`;\n","import React from 'react';\n\nimport HourItem from '@r1-frontend/service-engineer-visit/components/HourItem';\nimport { THour } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { WithSkeleton } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport * as S from './styled';\n\ntype TTimeSelectionProps = {\n timeList: THour[],\n handleSelectHour: (hour: string) => () => void,\n selectedHour?: string,\n}\n\nconst TimeSelection = ({ timeList, handleSelectHour, selectedHour }: TTimeSelectionProps): JSX.Element => {\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n return (\n \n

Время

\n \n \n {timeList.map((hour: THour) => (\n \n ))}\n \n \n
\n );\n};\n\nexport default TimeSelection;\n","import { THour, TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getTimeOfDay = (state: TInitialState): THour[] => {\n const { selected: { date }, slots } = state;\n if (date && slots[date]) {\n return Object.values(slots[date].hours);\n } else {\n return [];\n }\n};\n\nexport default getTimeOfDay;\n","import { selectHour } from '@r1-frontend/service-engineer-visit/actions';\nimport TimeSelection from '@r1-frontend/service-engineer-visit/components/TimeSelection';\nimport { useContextDispatch, useContextSelector } from '@r1-frontend/service-engineer-visit/hooks';\nimport getTimeOfDay from '@r1-frontend/service-engineer-visit/selectors/getTimeOfDay';\n\ntype TTimeSelectionContainerProps = {\n sendAnalytics: ({ action, label }: { action: string, label?: string }) => void,\n gaLabel?: string,\n}\n\nconst TimeSelectionContainer = ({ sendAnalytics, gaLabel }: TTimeSelectionContainerProps): JSX.Element => {\n const dispatch = useContextDispatch();\n const { timeList, selectedHour } = useContextSelector(state => ({\n timeList: getTimeOfDay(state),\n selectedHour: state.selected.hour,\n }));\n\n const handleSelectHour = (hour: string) => () => {\n dispatch(selectHour(hour));\n sendAnalytics({\n action: 'choosed_time',\n label: gaLabel,\n });\n };\n\n return (\n \n );\n};\n\nexport default TimeSelectionContainer;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { RoundedBlock } from '@r1-frontend/ui-react/experimental/blocks';\nimport { ResizableTextarea } from '@r1-frontend/ui-react/experimental/forms';\n\nexport const Block = styled.div`\n display: block;\n width: 100%;\n \n ${ResizableTextarea} {\n width: 100%;\n }\n`;\n\nexport const MainWrapper = styled(RoundedBlock)`\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 36px;\n\n padding: 24px;\n \n overflow: hidden;\n width: 100%;\n`;\n\nexport const InnerWrapper = styled.div`\n max-width: 295px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n max-width: 600px;\n width: 100%;\n }\n \n display: flex;\n flex-direction: row;\n \n gap: 28px;\n`;\n\nconst DefaultWrapper = styled.div`\n display: flex;\n gap: 2px;\n`;\n\nexport const DeliveryOptionsWrapper = styled(DefaultWrapper)`\n flex-direction: column;\n\n & > * {\n max-width: 314px;\n }\n`;\n\nexport const DaysSection = styled.div`\n display: block;\n \n ${Button} {\n margin-top: 20px;\n }\n`;\n\nexport const DaysWrapper = styled(DefaultWrapper)`\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: nowrap;\n`;\n\nexport const HoursWrapper = styled(DaysWrapper)`\n flex-wrap: wrap;\n padding-bottom: 0;\n`;\n","/**\n * the \"from\" and \"to\" properties have the string type because it might be \"00\", \"01\", \"02\", etc...\n */\nimport { ESaleAgentClientName } from '@r1-frontend/service-engineer-visit/types/ESaleAgentClientName';\nimport { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\n\nexport type THour = {\n from: string,\n to: string,\n active: boolean,\n cost?: number,\n};\n\nexport type TDay = {\n day: number,\n date: string,\n weekday: string,\n hours: Record,\n isFirstDate: boolean,\n};\n\nexport type TIncomingData = {\n dateFrom: Date,\n numberOfDays: number,\n maxNumberOfDays: number,\n contractId: number,\n clientName: ESaleAgentClientName,\n gaCategory: string,\n gaLabel?: string,\n productId?: number,\n withComment?: boolean,\n}\n\n\nexport type TInitialState = {\n _initialized: boolean,\n _loading: boolean,\n _incomingData?: TIncomingData,\n _requestedDays: number,\n _selectedSlotAvailable: boolean | null,\n\n slots: Record,\n errorMessage: string,\n deliveryOptions: TDeliveryOption[],\n\n selected: {\n date?: string,\n hour?: string,\n cost?: number,\n deliveryOption?: TDeliveryOption,\n comment: string,\n },\n};\n\nconst initialState: TInitialState = {\n _initialized: false,\n _loading: true,\n _incomingData: undefined,\n _requestedDays: 0,\n\n _selectedSlotAvailable: null,\n\n slots: {},\n errorMessage: '',\n deliveryOptions: [],\n\n selected: {\n date: undefined,\n hour: undefined,\n cost: undefined,\n deliveryOption: undefined,\n comment: '',\n },\n};\n\nexport default initialState;\n","/* eslint-disable complexity */\nimport EServiceEngineerActions from '@r1-frontend/service-engineer-visit/constants/actions';\nimport initialState, { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nimport * as actions from '../actions/simple';\n\n// автоматически собираем все типы ActionCreator\nexport type InferValueTypes = T extends { [key: string]: infer U } ? U : never;\n\nexport type TAllServiceEngineerActions = ReturnType>\n\n/**\n * Общие типы и интерфейсы для хранилища\n */\n\nexport interface IAction {\n type: T,\n payload: U,\n}\n\nexport type TDispatch = (action: IAction) => void\n\nconst reducer = (\n state: TInitialState = initialState,\n action: TAllServiceEngineerActions,\n): TInitialState => {\n switch (action.type) {\n case EServiceEngineerActions.INITIALIZED: {\n return {\n ...state,\n _initialized: true,\n _incomingData: action.payload.incomingData,\n };\n }\n case EServiceEngineerActions.SET_DELIVERY_OPTIONS: {\n return {\n ...state,\n deliveryOptions: action.payload.options,\n };\n }\n case EServiceEngineerActions.SET_SLOTS: {\n return {\n ...state,\n slots: {\n ...state.slots,\n ...action.payload.slots,\n },\n };\n }\n case EServiceEngineerActions.SET_ERROR_MESSAGE: {\n return {\n ...state,\n errorMessage: action.payload,\n };\n }\n case EServiceEngineerActions.UPDATE_HOURS_FOR_DAY: {\n return {\n ...state,\n slots: {\n ...state.slots,\n [action.payload.date]: {\n ...state.slots[action.payload.date],\n hours: action.payload.hours,\n },\n },\n };\n }\n case EServiceEngineerActions.SET_IS_LOADING: {\n return {\n ...state,\n _loading: action.payload,\n };\n }\n case EServiceEngineerActions.SELECT_DELIVERY_OPTION: {\n return {\n ...state,\n _requestedDays: 0,\n _selectedSlotAvailable: null,\n slots: {},\n selected: {\n ...state.selected,\n deliveryOption: action.payload.deliveryOption,\n },\n };\n }\n case EServiceEngineerActions.SELECT_DATE: {\n return {\n ...state,\n _selectedSlotAvailable: null,\n selected: {\n ...state.selected,\n date: action.payload.date,\n },\n };\n }\n case EServiceEngineerActions.SELECT_HOUR: {\n return {\n ...state,\n _selectedSlotAvailable: null,\n selected: {\n ...state.selected,\n hour: action.payload.hour,\n },\n };\n }\n case EServiceEngineerActions.SET_COMMENT: {\n return {\n ...state,\n selected: {\n ...state.selected,\n comment: action.payload.comment,\n },\n };\n }\n case EServiceEngineerActions.FLUSH_HOUR: {\n return {\n ...state,\n selected: {\n ...state.selected,\n hour: undefined,\n },\n };\n }\n case EServiceEngineerActions.REQUEST_SLOTS: {\n return {\n ...state,\n _requestedDays: action.payload.days,\n };\n }\n case EServiceEngineerActions.CHANGE_SELECTED_SLOT_STATE: {\n return {\n ...state,\n _selectedSlotAvailable: action.payload.state,\n };\n }\n case EServiceEngineerActions.CONFIRM: {\n return { ...state };\n }\n default: {\n const unknownAction: never = action;\n return state || unknownAction;\n }\n }\n};\n\nexport default reducer;\n","import { createContext, ReactNode } from 'react';\nimport useThunkReducer, { ThunkDispatch } from 'react-hook-thunk-reducer';\n\nimport initialState, { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport reducer, { TAllServiceEngineerActions } from '@r1-frontend/service-engineer-visit/reducer/reducer';\n\nexport type TContextDispatch = ThunkDispatch\n\nexport type TContext = {\n state: TInitialState,\n dispatch: TContextDispatch,\n debugMode?: boolean,\n}\n\nexport const Context = createContext({\n state: initialState,\n dispatch: () => null,\n debugMode: false,\n});\n\ntype TContextProviderProps = {\n children: ReactNode,\n debugMode?: boolean,\n}\n\nconst ContextProvider = ({ children, debugMode }: TContextProviderProps): JSX.Element => {\n const [state, dispatch] = useThunkReducer(reducer, initialState);\n\n if (debugMode) {\n console.log(state);\n }\n\n return (\n {children}\n );\n};\n\nexport default ContextProvider;\n","import { dataLayerPush as baseDataLayerPush, TDataLayerPushArgument } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nconst dataLayerPush = (params: Omit, 'event'>): void => baseDataLayerPush({\n event: EVENTS.UAevent,\n ...params,\n});\n\nexport default dataLayerPush;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\nimport { EDeliveryType } from '@r1-frontend/service-engineer-visit/types/EDeliveryType';\n\nconst getWithInstallValue = (state: TInitialState): number => {\n if (state.deliveryOptions && state.selected.deliveryOption) {\n return Number(state.selected.deliveryOption.name === EDeliveryType.deliveryAndSetup);\n } else {\n return 1;\n }\n};\n\nexport default getWithInstallValue;\n","import { THour } from '../reducer/initialState';\n\nconst START_FROM = 9;\nconst END_AT = 21;\n\n/**\n * Getting a list of all hours for service engineer calling\n * at ideal world this action must be implemented on back-end side\n */\nconst hourListForDay = ((): Record => {\n const result = {} as Record;\n\n for (let idx = START_FROM; idx < END_AT; idx++) {\n const from = String(idx);\n const to = String(idx + 1);\n result[from] = { from, to, active: false, cost: undefined };\n }\n\n return result;\n})();\n\nexport default hourListForDay;\n","import { ITimeSlot } from '@r1-frontend/api-domru/full-buy/v1/sale-agent/time-slots/dto/ResponseDto';\n\nimport { TIME_SLOT_BUSY_STATUS } from '@r1-frontend/service-engineer-visit/constants';\nimport { hourListForDay } from '@r1-frontend/service-engineer-visit/helpers';\nimport { TDay } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst transformTimeSlots = (timeSlots: ITimeSlot[]): Record => {\n const result: Record = {};\n\n if (!timeSlots || timeSlots.length === 0) {\n return result;\n }\n\n for (const slot of timeSlots) {\n const date = slot.date;\n result[date] = {\n date: date,\n weekday: slot.day,\n day: Number(date.split('.')[0]),\n hours: JSON.parse(JSON.stringify(hourListForDay)),\n isFirstDate: Number(date.split('.')[0]) === 1,\n };\n\n for (const time of slot.time) {\n const [hour] = time.hour_start.split(':');\n const currHour = `${Number(hour)}`;\n const currSlot = result[date].hours[currHour];\n // @todo add try catch for detect problem\n if (currSlot) {\n currSlot.active = time.status !== TIME_SLOT_BUSY_STATUS;\n currSlot.cost = time.cost;\n }\n }\n }\n\n return result;\n};\n\nexport default transformTimeSlots;\n","import { useContext } from 'react';\n\nimport { Context, TContextDispatch } from '@r1-frontend/service-engineer-visit/context/Context';\n\nconst useContextDispatch = (): TContextDispatch => {\n const { dispatch } = useContext(Context);\n\n return dispatch;\n};\n\nexport default useContextDispatch;\n","import { useContext } from 'react';\n\nimport { Context } from '@r1-frontend/service-engineer-visit/context/Context';\nimport { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst useContextSelector = (selector: (state: TInitialState) => T) => {\n const { state } = useContext(Context);\n\n return selector(state);\n};\n\nexport default useContextSelector;\n","// @todo move to the api request type\nexport enum ESaleAgentClientName {\n FULL_BUY_SITE = 'FULL_BUY_SITE',\n FULL_BUY_EQUIPMENT_SITE = 'FULL_BUY_EQUIPMENT_SITE',\n}\n","import DateOfServiceEngineerVisitWrapper\n from '@r1-frontend/service-engineer-visit/containers/DateOfServiceEngineerVisitWrapper';\n\nexport { default as CommentContainer } from '@r1-frontend/service-engineer-visit/containers/CommentContainer';\nexport { default as DateSelectionContainer } from '@r1-frontend/service-engineer-visit/containers/DateSelectionContainer';\nexport { default as DeliveryOptionsContainer } from '@r1-frontend/service-engineer-visit/containers/DeliveryOptionsContainer';\nexport { default as NotAvailableTimePopupContainer } from '@r1-frontend/service-engineer-visit/containers/NotAvailableTimePopupContainer';\nexport { default as TimeSelectionContainer } from '@r1-frontend/service-engineer-visit/containers/TimeSelectionContainer';\nexport { default as ContextProvider } from '@r1-frontend/service-engineer-visit/context/Context';\nexport { getDeliveryOptions } from '@r1-frontend/service-engineer-visit/helpers';\nexport { EDeliveryType } from '@r1-frontend/service-engineer-visit/types/EDeliveryType';\nexport { ESaleAgentClientName } from '@r1-frontend/service-engineer-visit/types/ESaleAgentClientName';\nexport type { TDeliveryOption } from '@r1-frontend/service-engineer-visit/types/TDeliveryOption';\nexport type { TReturnType } from '@r1-frontend/service-engineer-visit/types/TReturnType';\n\nexport default DateOfServiceEngineerVisitWrapper;\n","import { TInitialState } from '@r1-frontend/service-engineer-visit/reducer/initialState';\n\nconst getLoadingState = (state: TInitialState) => state._loading;\n\nexport default getLoadingState;\n","export enum EDeliveryType {\n deliveryAndSetup = 'delivery_and_setup',\n onlyDelivery = 'only_delivery',\n}\n","export type TArrayOfThree = [string, string, string];\n\n/**\n * @link https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html\n */\nconst getVariant = (value: number, variants: TArrayOfThree) => {\n const abs = Math.abs(value);\n\n return variants[\n abs % 10 == 1 && abs % 100 != 11\n ? 0\n : abs % 10 >= 2 && abs % 10 <= 4 && (abs % 100 < 10 || abs % 100 >= 20)\n ? 1\n : 2\n ];\n};\n\n/**\n * Cклоняет число\n * @param value Число\n * @param variants Варианты слов для склонения\n * @returns Один из вариантов в зависимости от переданного значения {value}\n * @example\n * pluralize(3, ['идея', 'идеи', 'идей']); // идеи\n */\nexport const pluralize = (value: number, variants: TArrayOfThree) =>\n getVariant(value, variants);\n\n/**\n * Получает функцию для склонения числа\n * @param variants Варианты слов для склонения\n * @example\n * const pluralize = getPluralize(['идея', 'идеи', 'идей']);\n */\nexport const getPluralize = (variants: TArrayOfThree) => (value: number) =>\n pluralize(value, variants);\n","import { TArrayOfThree } from '.';\n\n/**\n * Склонения для месяца\n *\n * @return ['месяц', 'месяца', 'месяцев']\n */\nexport const monthPluralize: TArrayOfThree = ['месяц', 'месяца', 'месяцев'];\n\n/**\n * Склонения для канала\n *\n * @return ['канал', 'канала', 'каналов']\n */\nexport const channelPluralize: TArrayOfThree = ['канал', 'канала', 'каналов'];\n\n/**\n * Склонения для дня\n *\n * @return ['день', 'дня', 'дней']\n */\nexport const dayPluralize: TArrayOfThree = ['день', 'дня', 'дней'];\n\n/**\n * Склонения для бонуса\n *\n * @return ['бонус', 'бонуса', 'бонусов']\n */\nexport const bonusPluralize: TArrayOfThree = ['бонус', 'бонуса', 'бонусов'];\n","import { ReactNode, SyntheticEvent, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type TWrapperProps = {\n $direction?: 'x' | 'y',\n}\n\nconst Wrapper = styled.div`\n display: inline-block;\n float: left;\n max-width: calc(100% - 48px - 12px);\n margin-right: 12px;\n ${({ $direction = 'y' }) => css`\n overflow-${$direction}: hidden;\n scroll-snap-type: ${$direction};\n `}\n cursor: grab;\n\n scrollbar-width: thin;\n scrollbar-color: ${COLORS.ButtonSecondary};\n\n /* Works on Chrome/Edge/Safari */\n\n ::-webkit-scrollbar {\n width: 3px;\n height: 3px;\n }\n\n ::-webkit-scrollbar-track {\n background: transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: ${COLORS.ButtonSecondary};\n }\n`;\n\nexport type TScrollableProps = {\n children: JSX.Element | ReactNode,\n scrollToEnd?: boolean,\n}\nconst Scrollable = ({ children, scrollToEnd = false, ...wrapperProps }: TScrollableProps & TWrapperProps): JSX.Element => {\n const ref = useRef(null);\n const [pos, setPos] = useState<{ left: number, top: number, x: number, y: number }>({\n left: 0,\n top: 0,\n x: 0,\n y: 0,\n });\n const [draggable, setDraggable] = useState(false);\n\n useEffect(() => {\n if (ref && ref.current !== null && scrollToEnd) {\n ref.current.scrollLeft = ref.current.scrollWidth;\n }\n }, [ref]);\n\n useEffect(() => {\n if (draggable) {\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n }\n\n return () => {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n };\n }, [draggable]);\n\n const mouseMoveHandler = (e: MouseEvent) => {\n const dx = e.clientX - pos.x;\n const dy = e.clientY - pos.y;\n\n // @ts-ignore\n ref.current.scrollLeft = pos.left - dx;\n // @ts-ignore\n ref.current.scrollTop = pos.top - dy;\n };\n\n const mouseDownHandler = (e: SyntheticEvent) => {\n if (ref !== null && ref.current !== null) {\n ref.current.style.cursor = 'grabbing';\n ref.current.style.userSelect = 'none';\n }\n\n setPos({\n left: e.currentTarget.scrollLeft,\n top: e.currentTarget.scrollTop,\n // @ts-ignore\n x: e.clientX,\n // @ts-ignore\n y: e.clientY,\n });\n setDraggable(true);\n };\n\n const mouseUpHandler = () => {\n setDraggable(false);\n // @ts-ignore\n ref.current.style.cursor = 'grab';\n // @ts-ignore\n ref.current.style.removeProperty('user-select');\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport default Scrollable;\n","import divideByThousand from '@r1-frontend/ui-react/components/costs/helpers/divideByThousand';\nimport { NBSP, RubleSymbol } from '@r1-frontend/ui-react/tokens/symbols';\n\ntype TMonthlyProps = {\n /**\n * Цена в месяц\n */\n monthly: boolean,\n annually?: never,\n}\n\ntype TAnnuallyProps = {\n monthly?: never,\n /**\n * Цена в год\n */\n annually: boolean,\n}\n\nexport type TFormatProps = TMonthlyProps | TAnnuallyProps;\n\nconst format = (cost: number | string, is?: TFormatProps) => {\n const period = !is ? '' : is.monthly ? '/мес' : '/год';\n\n return `${divideByThousand(cost)}${NBSP}${RubleSymbol}${period}`;\n};\n\nexport default format;\n","import format, { TFormatProps } from '@r1-frontend/ui-react/components/costs/Cost/format';\n\nexport interface IBaseCostProps {\n children: string | number,\n isPreviously?: boolean,\n className?: string,\n}\n\nexport interface IMonthlyCostProps extends IBaseCostProps {\n isMonthly?: boolean,\n isAnnually?: never,\n}\n\nexport interface IAnnuallyCostProps extends IBaseCostProps {\n isMonthly?: never,\n isAnnually?: boolean,\n}\n\nexport type TCostProps = IMonthlyCostProps | IAnnuallyCostProps;\n\nconst Cost = ({\n children,\n\n ...props\n}: TCostProps) => {\n const options: TFormatProps | undefined = props.isMonthly\n ? { monthly: true }\n : props.isAnnually\n ? { annually: true }\n : undefined;\n\n return (\n \n {format(children, options)}\n \n );\n};\n\nexport default Cost;\n","import styled from 'styled-components';\n\nimport Cost, { TCostProps } from './Cost';\n\nconst StyledCost = styled(Cost)`\n display: inline-block;\n white-space: nowrap;\n\n ${p => p.isPreviously && 'text-decoration: line-through;'}\n`;\n\nexport default StyledCost;\n","import Cost from '@r1-frontend/ui-react/components/costs/Cost/styled';\n\nexport default Cost;\n","const divideByThousand = (cost: number | string): string => {\n if (typeof cost === 'string') {\n cost = parseFloat(cost);\n }\n\n return new Intl.NumberFormat('ru', {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(cost);\n};\n\nexport default divideByThousand;\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst SingleArrowUp = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n \n \n \n );\n};\n\nexport default createSvg(\n SingleArrowUp,\n 'single-arrow-up',\n);\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 type RoundedBlockProps = {\n $radius?: BorderRadius,\n $bgColor?: COLORS,\n $indent?: string,\n}\n\n/**\n * @deprecated use '@r1-frontend/ui-react/experimental/containers/BlockContainer'\n */\nconst RoundedBlock = styled.div`\n display: block;\n border-radius: ${({ $radius = BorderRadius.componentRadius }) => $radius};\n background-color: ${({ $bgColor = COLORS.BgSurface }) => $bgColor};\n padding: ${({ $indent = '16px' }) => $indent};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n border-radius: ${({ $radius = BorderRadius.InnerBlockRadius }) => $radius};\n padding: ${({ $indent = '24px' }) => $indent};\n }\n`;\n\nexport default RoundedBlock;\n","import React, { SyntheticEvent, useEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { baseStyleOfFormElement } from '@r1-frontend/ui-react/experimental/forms/styled';\n\ntype TResizableTextareaRowsProps = {\n rows?: never,\n maxRows?: never,\n} | {\n rows: number,\n maxRows: number,\n}\n\nexport type TResizableTextarea = {\n onChange?: React.ChangeEventHandler,\n placeholder?: string,\n defaultValue?: string,\n}\n\n// @todo write documentation with examples (story)\nconst ResizableTextarea = (\n {\n rows = 1,\n maxRows = 2,\n\n ...props\n }: TResizableTextarea & TResizableTextareaRowsProps,\n): JSX.Element => {\n const ref = useRef(null);\n const initialState = useMemo(() => ({\n initialHeight: 0, // using for flush the textarea height when value is empty (deleted)\n currentHeight: 0,\n amountOfRows: 0, // numbers of displaying rows\n maxRowsReached: rows >= maxRows,\n }), [rows, maxRows]);\n\n if (rows > maxRows) {\n throw new Error('@r1-frontend/ui-react. The \"maxRows\" argument value can not be less than the \"rows\" argument value');\n }\n\n const [\n state,\n setState,\n ] = useState(initialState);\n\n useEffect(() => {\n if (ref !== null && ref.current !== null) {\n // @ts-ignore\n setState({ ...state, initialHeight: ref.current.scrollHeight });\n }\n }, [ref]);\n\n const handleInput = (e: SyntheticEvent) => {\n const { currentHeight, amountOfRows } = state;\n // @ts-ignore\n const { scrollHeight, value } = e.target;\n\n if (!value) {\n setState({ ...initialState, initialHeight: state.initialHeight });\n return;\n }\n\n if (currentHeight !== scrollHeight) {\n let _amountOfRows = scrollHeight > currentHeight ? amountOfRows + 1 : amountOfRows - 1;\n\n // a user deleting input text and count of displaying lines less the maxReachedRows because scrollHeight don't change, so we should display fewer lines forced\n if (_amountOfRows === maxRows && scrollHeight < currentHeight) {\n _amountOfRows -= 1;\n }\n const _state = {\n ...state,\n currentHeight: scrollHeight,\n amountOfRows: _amountOfRows,\n maxRowsReached: _amountOfRows >= maxRows,\n };\n setState(_state);\n }\n };\n\n return 0\n ? state.amountOfRows\n : rows}\n ref={ref}\n {...props}\n />;\n};\n\nexport default styled(ResizableTextarea)`\n ${baseStyleOfFormElement};\n resize: none;\n`;\n","import { css } from 'styled-components';\n\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\n// styles for all input form elements\nexport const baseStyleOfFormElement = css<{ $smaller?: boolean, $invalid?: boolean }>`\n box-sizing: border-box;\n\n background-color: ${COLORS.BgMain};\n border: 2px solid ${COLORS.BgSecondary};\n color: ${COLORS.TextPrimary};\n\n border-radius: ${BorderRadius.componentRadius};\n\n padding: ${({ $smaller = false }) => $smaller ? '8px' : '14px'} 16px;\n transition: border 0.2s ease-in;\n\n &:hover,\n &:focus,\n &:active {\n outline: none !important;\n border-color: ${COLORS.GRAY_DARK};\n }\n\n ${({ $invalid = false }) => $invalid\n ? `\n &:invalid {\n border-color: ${COLORS.Error};\n }`\n : ''};\n \n &:disabled {\n border-color: ${COLORS.BgSecondary};\n background-color: ${COLORS.BgSecondary};\n }\n\n &::placeholder {\n color: ${COLORS.TextDisabled};\n }\n\n ${FONTS.XS};\n`;\n","export const RubleSymbol = String.fromCharCode(8381);\n","import { RubleSymbol } from '@r1-frontend/ui-react/experimental/purchase/cost/Cost/RubleSymbol';\n\nimport * as S from './styled';\n\n// @todo for the children we should to receiving only the \"number\" type for formatting and displaying cost by human view here. For example: incoming 10000.0, displaying 10 000.00\n// on the other hand children may be a ReactNode or a JSX.Element. By my opinion the type \"number\" is enough\n//\n// We have to think about it ;-)\nexport type TCostProps = {\n children: string | number,\n isMonthly?: boolean,\n previousCost?: string | number,\n};\n\n/**\n * @deprecated\n * use @r1-frontend/ui-react/components/costs\n */\nconst Cost = ({ children, isMonthly = false, previousCost, ...props }: TCostProps): JSX.Element => {\n return \n {previousCost ? <>{previousCost} {RubleSymbol}{isMonthly && '/мес'}  : null}\n {children} {RubleSymbol}{isMonthly && '/мес'}\n ;\n};\n\nexport default Cost;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const CostWrapper = styled.div`\n display: inline-block;\n color: inherit;\n white-space: nowrap;\n`;\n\nexport const PreviousCost = styled.s`\n text-decoration-color: ${COLORS.TextInfo};\n color: ${COLORS.TextInfo};\n`;\n"],"names":["state","type","EServiceEngineerActions","payload","incomingData","days","date","deliveryOption","hour","comment","options","message","slots","hours","domain","productId","gaLabel","dispatch","batch","selectDeliveryOptionAction","requestSlots","getTimeSlotsFunc","dateFrom","Date","numberOfDays","maxNumberOfDays","contractId","undefined","clientName","deliveryOptions","selectedDeliveryOption","withComment","gaCategory","initialized","setDeliveryOptions","selectDeliveryOption","dateTo","_incomingData","Error","result","dayjs","format","agreementId","saleAgentClientName","withInstall","getWithInstallValue","buyProduct","selected","String","name","Number","cost","confirmCallback","getState","stateSlots","providerId","body","resp","response","updatedHours","cookies","PROVIDER_ID_COOKIE","setIsLoading","getBodyForTimeSlotsRequest","dataLayerPush","category","action","isSuccess","label","error","changeSelectedSlotState","flushHour","transformTimeSlots","Object","values","timeSlots","active","getConfirmBody","JSON","parse","stringify","updateHoursForDay","hourKey","selectDateAction","selectHour","from","_requestedDays","addingToStartDate","addingToEndDate","add","toDate","setSlots","setErrorMessage","keys","length","selectDate","requestSlotsAction","captureException","selectHourAction","SelectableElement","styled","children","props","div","COLORS","BorderRadius","FONTS","$selected","css","disabled","TIME_SLOT_BUSY_STATUS","Block","ResizableTextarea","defaultValue","handleInputComment","placeholder","S","WithSkeleton","width","height","onChange","useContextSelector","selectedComment","useContextDispatch","Comment","e","setComment","target","value","errorMessage","onConfirm","onClickConfirm","onDeliveryOptionSelected","onUpdateLoading","initializationObject","loading","getLoadingState","isSlotsEmpty","areSlotsEmpty","getErrorMessage","sendAnalytics","useCallback","event","EVENTS","useEffect","initialization","SkeletonTheme","borderRadius","WithSkeletonContext","isLoading","DeliveryOptionsContainer","DateSelectionContainer","TimeSelectionContainer","CommentContainer","SubmitButtonContainer","NotAvailableTimePopupContainer","ContextProvider","DateOfServiceEngineerVisit","DayItem","Child","weekday","day","DaysSection","Button","DefaultWrapper","DaysWrapper","selectedDate","handleSelectDate","handleMore","requestedDays","moreButtonIsDisabled","isMobile","useMatchMedia","wideBreakpoints","TextWrapper","H4","$smaller","$withIndent","Paragraph4","$color","locale","inline","Scrollable","scrollToEnd","map","React","isFirstDate","style","padding","split","reverse","join","onClick","data-testid","bType","rounded","Icon","SingleArrowRight","_loading","getSlots","moreSlotsButtonIsDisabled","DateSelection","Wrapper","DeliveryOptionsWrapper","handleDeliveryOptionSelection","option","DeliveryTypeItem","Cost","deliveryOptionsList","delivery","getDeliveryOptions","DeliveryOptions","preventDefault","isOpen","handleClosePopup","title","buttonText","PopupResult","onClose","EResultPopupStatus","_selectedSlotAvailable","notAvailableTimePopupIsOpen","NotAvailableTimePopup","handleConfirm","buttonIsDisabled","ButtonGroup","span","toLowerCase","sup","to","selectedSlot","selectedHour","getSelectedDate","SubmitButton","onConfirmAction","TimeItem","isInteger","HoursWrapper","timeList","handleSelectHour","HourItem","Boolean","getTimeOfDay","TimeSelection","MainWrapper","RoundedBlock","InnerWrapper","_initialized","initialState","Context","createContext","debugMode","useThunkReducer","reducer","console","log","Provider","params","baseDataLayerPush","EDeliveryType","idx","slot","hourListForDay","time","hour_start","currHour","currSlot","status","useContext","selector","ESaleAgentClientName","FULL_BUY_SITE","FULL_BUY_EQUIPMENT_SITE","DateOfServiceEngineerVisitWrapper","pluralize","variants","abs","Math","getVariant","getPluralize","monthPluralize","channelPluralize","dayPluralize","bonusPluralize","$direction","wrapperProps","ref","useRef","useState","left","top","x","y","pos","setPos","draggable","setDraggable","current","scrollLeft","scrollWidth","document","addEventListener","mouseMoveHandler","mouseUpHandler","removeEventListener","dx","clientX","dy","clientY","scrollTop","cursor","removeProperty","onMouseDown","userSelect","currentTarget","is","period","monthly","NBSP","divideByThousand","RubleSymbol","isMonthly","isAnnually","annually","p","isPreviously","parseFloat","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","createSvg","strokeWidth","g","id","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","$radius","$bgColor","$indent","rows","maxRows","useMemo","initialHeight","currentHeight","amountOfRows","maxRowsReached","setState","scrollHeight","handleInput","_amountOfRows","_state","textarea","onInput","onPaste","onCut","baseStyleOfFormElement","$invalid","fromCharCode","previousCost","CostWrapper","PreviousCost"],"sourceRoot":""}