{"version":3,"sources":["redux/history.ts","actions/rootWidget/RootWidgetActionsTypes.ts","config/constants.ts","helpers/helpers.ts","helpers/constants.ts","reducers/RootWidgetReducer.ts","actions/reserveForm/ReserveFormActionsTypes.ts","reducers/ReseveFormReducer.ts","reducers/index.ts","config/systems.ts","config/api.js","helpers/dateHelpers.ts","helpers/localStorageHelpers.ts","api/index.ts","api/utils.ts","actions/rootWidget/RootWidgetActions.ts","actions/reserveForm/ReserveFormActions.ts","locales/index.ts","sagas/RootWidgetSagas.ts","sagas/ReserveFormSaga.ts","sagas/index.ts","redux/index.ts","containers/App/ShowIfInitializedComp/ShowInitialized.tsx","containers/App/ShowIfInitializedComp/index.tsx","containers/App/ThemeComp/ThemeComp.tsx","utils.ts","containers/App/ThemeComp/index.tsx","components/BookingForm/PersonSelect.tsx","components/BookingForm/DatePicker.tsx","components/BookingForm/WidgetReserveTimeSelect.tsx","components/Common/TextFieldComp.tsx","components/Common/TextAreaComp.tsx","components/Common/CheckBoxComp.tsx","components/BookingForm/PhoneField.tsx","components/BookingForm/BookingFields.tsx","components/BookingForm/index.tsx","containers/ReserveFormCont/ReserveForm.tsx","containers/ReserveFormCont/index.ts","components/SMSCodeForm/PinCode.tsx","components/SMSCodeForm/index.tsx","containers/SmsCodeFormCont/SmsCodeForm.tsx","containers/SmsCodeFormCont/index.ts","components/ReserveProcessing/index.tsx","containers/ReserveProcessingCont/ReserveProcessingCont.tsx","containers/ReserveProcessingCont/index.ts","components/Common/ReserveInfo.tsx","components/ReserveSuccess/index.tsx","containers/ReserveSuccessCont/ReserveSuccessCont.tsx","containers/ReserveSuccessCont/index.ts","components/Errors/UnknownError.tsx","components/Errors/ActiveReserveError.tsx","containers/ErrorCont/ErrorCont.tsx","containers/ErrorCont/index.ts","containers/RootWidgetCont/RootWidget.tsx","containers/RootWidgetCont/styles.ts","containers/RootWidgetCont/index.ts","containers/App/AppComp.tsx","containers/App/App.tsx","index.jsx"],"names":["history","createBrowserHistory","INIT_APP","INIT_APP_RESTAURANT_INFO","INIT_APP_WIDGET_STATE","SMS_CODE_VERIFY_REQUEST","SMS_CODE_VERIFY_SUCCESS","SMS_CODE_VERIFY_ERROR","GUEST_BOOKING_REQUEST","GUEST_BOOKING_QUEUE_PROCESSING","GUEST_BOOKING_SUCCESS","GUEST_BOOKING_ERROR","DELETE_RESERVE_REQUEST","DELETE_RESERVE_SUCCESS","DELETE_RESERVE_ERROR","REGISTRATION_REQUEST","REGISTRATION_REQUEST_SUCCESS","REGISTRATION_REQUEST_ERROR","RESEND_REGISTRATION_REQUEST","reserveWidgetState","FORM_STATE","SMS_VERIFY_STATE","PROCESSING_STATE","SUCCESS_STATE","ERROR","emptyTime","emptyString","weekDays","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","errorType","unknownError","activeReserve","phoneCode","ru","key","code","firstLabel","secondLabel","title","ukr","est","uz","am","ge","kz","ae","us","az","by","kg","tm","sortPhoneCodeByTitle","a","b","nameA","toUpperCase","nameB","onlyNumbers","value","replace","normalizePhone","onlyNums","length","concat","slice","azPos","azLength","getWidgetIdFromUrl","id","window","location","pathname","match","parseInt","isFullScreen","document","body","clientWidth","fallbackColors","mainColor","formBackground","pageBackground","formHeaderColor","formBaseColor","formFieldColor","fallbackValue","settings","isShowHeader","isEmailRequired","isSecurityEnabled","isLastNameRequired","colors","initState","widgetId","widgetState","confirmCodeRequested","timeLeft","restaurantInfoInitialized","restaurantInfo","address","name","phone","countryCode","bookingIsProcessing","smsCodeError","bookingId","undefined","bookingError","bookingReqData","comment","persons","time","date","dateForReq","fullName","smsNotificationIsEnabled","reducer","state","arguments","action","type","RootWidgetActionsTypes","_objectSpread","payload","bookingData","error","reserveInfo","GET_TABLES_COUNT_REQUEST","GET_TABLES_COUNT_SUCCESS","GET_TABLES_COUNT_ERROR","GET_MAX_PERSON_COUNT_REQUEST","GET_MAX_PERSON_COUNT_SUCCESS","GET_MAX_PERSON_COUNT_ERROR","RESTAURANT_SCHEDULE_REQUEST","RESTAURANT_SCHEDULE_SUCCESS","freeTables","freeTablesError","maxPersons","scheduleOptions","ReserveFormActionsTypes","systems","clientId","secretKey","host","process","api","token","restaurantWidget","restaurantTable","restaurantSchedule","widgetBooking","itsTomorrow","open","reserveTime","mergeDateAndTime","parseTime","split","moment","set","hour","minute","second","millisecond","getWidgetTimeList","targetDate","workTime","timeLabels","_workTime$weekDay","locale","format","start","end","endParse","endMoment","hours","minutes","startParse","startMoment","diff","interval","Math","ceil","roundCurrentTimeBy","add","timesToStop","i","push","parseDateForReq","getWidgetMergedSchedule","scheduleList","reduce","schedule","group","records","nextDay","day","getNextWeekDay","forEach","_defineProperty","previous","WIDGET_ACCESS_TOKEN_KEY","WIDGET_REFRESH_TOKEN_KEY","getToken","tokenName","widgetData","localStorage","getItem","tokens","JSON","parse","removeItem","setTokens","accessToken","refreshToken","data","setItem","stringify","setWidgetData","reserveId","userData","oldWidgetData","newData","getWidgetData","parseWidgetData","clearWidgetData","axios","create","withCredentials","interceptors","request","use","config","configResult","url","ConfigAPI","headers","Authorization","response","originalRequest","status","Promise","reject","_retry","base64BasicKey","btoa","post","refreshTokenReq","then","res","parseOldWidgetData","updateToken","access_token","refresh_token","getTablesCountReq","get","params","r","count","sendConfirmCodeReq","verifySmsCodeReq","URLSearchParams","grant_type","guestBookingReq","parsedName","firstName","lastName","splice","join","isNotificationEnabled","getRestaurantInfo","bookingStatus","getActiveBookingInfo","deleteBooking","delete","getRestaurantScheduleReq","getMaxPersonCountReq","maxCapacity","_regeneratorRuntime","e","t","Object","prototype","n","hasOwnProperty","o","defineProperty","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","queryWithRetry","requestFunction","retries","_callee","lastError","_context","t0","delay","ActionTypes","initAppRestaurantInfo","initAppWidgetState","sendRegistrationRequest","resendRegistrationRequest","verifySmsCode","smsCode","verifySmsCodeSuccess","verifySmsCodeError","guestBooking","guestBookingSuccess","guestBookingQueueProcessing","guestBookingError","getFreeTables","getRestaurantSchedule","getRestaurantScheduleSuccess","getMaxPersonCount","getMaxPersonCountError","i18next","init","lng","debug","resources","locales","_marked","_marked2","watchStatus","_marked3","initApp","_marked4","sendConfirmationCodeSaga","_marked5","verifyConfirmationCodeSaga","_marked6","approveReserveStatusSaga","_marked7","guestBookingSaga","_marked8","deleteReserveSaga","_marked9","saga","BOOKING_STATUS_ACCEPTED","BOOKING_STATUS_ERROR","BOOKING_STATUS_DECLINED","BOOKING_STATUS_CANCELED","BOOKING_STATUS_CREATED","BOOKING_SENT","BOOKING_STATUS_REQUEST_DELAY","INCORRECT_CODE_CODE","BOOKING_NOT_CLOSED","route","matched","_ref","select","router","matchPath","path","strict","Number","put","ReserveWidgetActions","ReserveFormActions","_context2","Sentry","addressString","restaurantName","_ref3","_context3","fork","apiUtils","city","street","home","info","assign","console","log","message","_yield$select","_yield$select2","confirmReqData","_context4","root","t1","_","isUndefined","_yield$select3","verifyReqData","errorMessage","_context5","apiResponse","_context6","_yield$select4","bookingInfo","_context7","_context8","_context9","all","takeLatest","LOCATION_CHANGE","ReserveWidgetActionsTypes","getFreeTablesSaga","getMaxPersonsCountSaga","_action$payload","scheduleData","onlyDefaultScheduleList","weekScheduleCollection","filter","rootSaga","rootWidget","reserveFormSaga","sagaMiddleware","createSagaMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","sentryReduxEnhancer","enhancer","applyMiddleware","routerMiddleware","store","createStore","combineReducers","reserveForm","form","run","ShowInitialized","initialized","children","React","createElement","Fragment","connect","ThemeComp","_useState","useState","_useState2","_slicedToArray","theme","setTheme","useEffect","createMuiTheme","themeColors","primary","primaryHover","darken","primarySelected","fade","primaryPostHover","typography","h4","fontFamily","fontSize","lineHeight","h5","h6","subtitle1","subtitle2","body1","caption","color","button","textTransform","palette","main","contrastText","secondary","text","hint","overrides","MuiInput","input","&:-webkit-autofill","-webkit-box-shadow","-webkit-text-fill-color","underline","&:hover:not($disabled):not($focused):not($error):before","borderBottomColor","MuiFormLabel","MuiDialog","backgroundColor","MuiBackdrop","MuiDialogContent","MuiTooltip","tooltip","maxWidth","padding","MuiPaper","MuiPickersToolbarText","toolbarTxt","MuiPickersCalendarHeader","iconButton","MuiMenu","paper","MuiMenuItem","&$selected","fontWeight","&:focus","&:hover","generateThemeOptions","MuiThemeProvider","styles","createStyles","isError","withStyles","_ref$meta","meta","touched","classes","capacityList","Array","fill","map","FormControl","fullWidth","InputLabel","htmlFor","Select","className","classNames","MenuItem","person","DatePickerComp","renderDate","isSame","MuiPickersUtilsProvider","libInstance","utils","MomentUtils","DatePicker","autoOk","variant","label","disablePast","invalidLabel","emptyLabel","TextFieldComponent","props","onClick","inputRef","colorError","TextField","InputProps","style","disabled","shrink","inputProps","selected","alignItems","TextFieldComp","staticValue","readOnly","formTextInput","textAlign","& .MuiTypography-root","textAreaCont","&& textarea","overflowX","_ref$rows","rows","multiline","maxLength","Typography","CheckBoxComp","FormControlLabel","control","Checkbox","HelperText","fieldWrap","display","paddingTop","phoneField","marginRight","endAdornment","number","change","_useState3","_useState4","focused","setFocused","first","substr","firstTwo","firstThree","getCodePhoneNumber","codeValue","firstCountryKey","getLocale","toLocaleLowerCase","onChange","target","disableUnderline","defaultValue","renderValue","codes","sort","_toConsumableArray","item","getPhoneCodes","onFocus","onBlur","BookingFields","_PureComponent","_this","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","onChangeDate","getSchedule","selectedTime","setState","updateBookingData","onChangeTime","onChangePersonsCount","personsCount","onChangeAgreement","checked","agreement","_inherits","_createClass","_this$state","_this$props","valueChanged","mergedDate","_this2","_this$state2","_this$props2","tables","Grid","container","spacing","xs","sm","Field","component","PersonSelect","WidgetReserveTimeSelect","PhoneField","TextAreaComp","tablesNumberText","tablesNumber","tablesNumberError","errorWrap","errorText","paddingBottom","href","textDecoration","PureComponent","fieldStyle","content","width","marginLeft","height","flexDirection","justifyContent","position","BookingForm","apply","handleSubmit","isLoading","fullScreen","formWrap","onSubmit","Button","btnStyle","CircularProgress","size","provideDesc","provideDescFullScreen","logo","marginBottom","reduxForm","validate","errors","ReserveFormCont","_getPrototypeOf2","_len","args","_key","handleSubmitForm","smsInfo","mergeDate","onBookingFieldsChange","onScheduleRequest","_this$props3","initialValues","dispatch","bindActionCreators","ReserveForm","discardNaN","string","result","char","PinCode","textInputs","handleKeyDown","element","currentId","dataset","prevElement","keyCode","focus","handleInput","fieldMaxLength","numberOnly","inputs","nextElement","neWinputs","newValue","rest","handleChange","onFullFilled","needToClear","fieldsCount","isFullFilled","String","_this$props4","safariStyles","navigator","vendor","indexOf","userAgent","inputsCont","inputField","safariInput","ref","data-id","tabIndex","onInput","onKeyDown","defaultProps","margin","outline","border","background","borderBottom","SMSCodeForm","tick","timeLeftFromReq","clearInterval","showResend","startResendTimer","setInterval","handleSendSmsCode","handleVerifySmsCode","phoneNumber","align","seconds","onClickResendSms","flex","marginTop","opacity","SmsCodeForm","_state$root","processCont","processText","processCancel","handleDeleteBooking","ReserveProcessingCont","ReserveProcessing","confirmedPaper","confirmedInfo","confirmedCell","confirmedIcon","Paper","elevation","GroupIcon","AccessTimeIcon","Index","successCont","restaurantInfoWrap","ReserveInfo","RootWidget","ReserveSuccess","ReserveSuccessCont","cancelSharpIcon","msgWrap","CancelSharpIcon","ErrorCont","_Component","errorBody","UnknownError","ActiveReserveError","DialogContent","Component","widgetContent","Dialog","aria-labelledby","scroll","DialogTitle","minHeight","AppComp","CssBaseline","Route","ReserveWidget","App","Provider","Router","ShowIfInitialized","_process$env","REACT_APP_SENTRY_DSN","REACT_APP_NAME","REACT_APP_VERSION","sentryConfig","dsn","environment","integrations","Integrations","BrowserTracing","tracesSampleRate","release","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.b2f2292b.chunk.js","sourcesContent":["import { createBrowserHistory, History } from 'history';\n\nconst history: History = createBrowserHistory();\n\nexport default history;\n","export const INIT_APP = 'INIT_APP';\nexport const INIT_APP_RESTAURANT_INFO = 'INIT_APP_RESTAURANT_INFO';\nexport const INIT_APP_WIDGET_STATE = 'INIT_APP_WIDGET_STATE';\n\nexport const SMS_CODE_VERIFY_REQUEST = 'SMS_CODE_VERIFY_REQUEST';\nexport const SMS_CODE_VERIFY_SUCCESS = 'SMS_CODE_VERIFY_SUCCESS';\nexport const SMS_CODE_VERIFY_ERROR = 'SMS_CODE_VERIFY_ERROR';\n\nexport const GUEST_BOOKING_REQUEST = 'GUEST_BOOKING_REQUEST';\nexport const GUEST_BOOKING_QUEUE_PROCESSING = 'GUEST_BOOKING_QUEUE_PROCESSING';\nexport const GUEST_BOOKING_SUCCESS = 'GUEST_BOOKING_SUCCESS';\nexport const GUEST_BOOKING_ERROR = 'GUEST_BOOKING_ERROR';\n\nexport const DELETE_RESERVE_REQUEST = 'DELETE_RESERVE_REQUEST';\nexport const DELETE_RESERVE_SUCCESS = 'DELETE_RESERVE_SUCCESS';\nexport const DELETE_RESERVE_ERROR = 'DELETE_RESERVE_ERROR';\n\nexport const REGISTRATION_REQUEST = 'REGISTRATION_REQUEST';\nexport const REGISTRATION_REQUEST_SUCCESS = 'REGISTRATION_REQUEST_SUCCESS';\nexport const REGISTRATION_REQUEST_ERROR = 'REGISTRATION_REQUEST_ERROR';\n\nexport const RESEND_REGISTRATION_REQUEST = 'RESEND_REGISTRATION_REQUEST';\n","import { IBookingErrorType } from '../types/IRootWidgetStore';\n\nexport const reserveWidgetState = {\n FORM_STATE: 'FORM_STATE',\n SMS_VERIFY_STATE: 'SMS_VERIFY_STATE',\n PROCESSING_STATE: 'PROCESSING_STATE',\n SUCCESS_STATE: 'SUCCESS_STATE',\n ERROR: 'ERROR',\n};\n\nexport const emptyTime = '-';\n\nexport const emptyString = '-';\n\nexport const weekDays = {\n MONDAY: 'MONDAY',\n TUESDAY: 'TUESDAY',\n WEDNESDAY: 'WEDNESDAY',\n THURSDAY: 'THURSDAY',\n FRIDAY: 'FRIDAY',\n SATURDAY: 'SATURDAY',\n SUNDAY: 'SUNDAY',\n};\n\nexport const errorType: {\n [types: string]: IBookingErrorType\n} = {\n unknownError: 'unknownError',\n activeReserve: 'activeReserve'\n};\n\ninterface IPhoneCode {\n key: string;\n code: string;\n firstLabel: string;\n secondLabel: string;\n title: string;\n}\n\ninterface IPhoneCodes {\n [key: string]: IPhoneCode;\n}\n\nexport const phoneCode: IPhoneCodes = {\n ru: {\n key: 'ru',\n code: '+7',\n firstLabel: '🇷🇺 (+7)',\n secondLabel: '🇷🇺 Россия (+7)',\n title: 'Россия',\n },\n ukr: {\n key: 'ukr',\n code: '+380',\n firstLabel: '🇺🇦 (+380)',\n secondLabel: '🇺🇦 Украина (+380)',\n title: 'Украина',\n },\n est: {\n key: 'est',\n code: '+372',\n firstLabel: '🇪🇪 (+372)',\n secondLabel: '🇪🇪 Эстония (+372)',\n title: 'Эстония',\n },\n uz: {\n key: 'uz',\n code: '+998',\n firstLabel: '🇺🇿 (+998)',\n secondLabel: '🇺🇿 Узбекистан (+998)',\n title: 'Узбекистан',\n },\n am: {\n key: 'am',\n code: '+374',\n firstLabel: '🇦🇲 (+374)',\n secondLabel: '🇦🇲 Армения (+374)',\n title: 'Армения',\n },\n ge: {\n key: 'ge',\n code: '+995',\n firstLabel: '🇬🇪 (+995)',\n secondLabel: '🇬🇪 Грузия (+995)',\n title: 'Грузия',\n },\n kz: {\n key: 'kz',\n code: '+77',\n firstLabel: '🇰🇿 (+77)',\n secondLabel: '🇰🇿 Казахстан (+77)',\n title: 'Казахстан',\n },\n ae: {\n key: 'ae',\n code: '+971',\n firstLabel: '🇦🇪 (+971)',\n secondLabel: '🇦🇪 ОАЭ (+971)',\n title: 'ОАЭ',\n },\n us: {\n key: 'us',\n code: '+1',\n firstLabel: '🇺🇸 (+1)',\n secondLabel: '🇺🇸 США (+1)',\n title: 'США',\n },\n az: {\n key: 'az',\n code: '+994',\n firstLabel: '🇦🇿 (+994)',\n secondLabel: '🇦🇿 Азербайджан (+994)',\n title: 'Азербайджан',\n },\n by: {\n key: 'by',\n code: '+375',\n firstLabel: '🇧🇾 (+375)',\n secondLabel: '🇧🇾 Белоруссия (+375)',\n title: 'Белоруссия',\n },\n kg: {\n key: 'kg',\n code: '+996',\n firstLabel: '🇰🇬 (+996)',\n secondLabel: '🇰🇬 Кыргызстан (+996)',\n title: 'Кыргызстан',\n },\n tm: {\n key: 'tm',\n code: '+993',\n firstLabel: '🇹🇲 (+993)',\n secondLabel: '🇹🇲 Туркменистан (+993)',\n title: 'Туркменистан',\n },\n};\n\nconst sortPhoneCodeByTitle = (a: IPhoneCode, b: IPhoneCode) => {\n const nameA = a.title.toUpperCase();\n const nameB = b.title.toUpperCase();\n\n if (nameA < nameB) {\n return -1;\n }\n\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n};\n\nexport const getPhoneCodes = (firstCountryKey?: string): Array<IPhoneCode> => {\n const codes = Object.values(phoneCode).sort(sortPhoneCodeByTitle);\n\n if (firstCountryKey) {\n return [\n phoneCode[firstCountryKey],\n ...codes.filter(item => item.key !== firstCountryKey),\n ];\n }\n\n return codes;\n};\n","import { phoneCode } from '../config/constants';\n\nfunction onlyNumbers(value: string) {\n return value.replace(/[^\\d]/g, '');\n}\n\n/** @description Разбор номера на код и номер */\nfunction getCodePhoneNumber(number: string): {\n code: string,\n number: string,\n} {\n const onlyNums = onlyNumbers(number);\n const first = onlyNums.length >= 1 && onlyNums.substr(0, 1);\n const firstTwo = onlyNums.length >= 2 && onlyNums.substr(0, 2);\n const firstThree = onlyNums.length >= 3 && onlyNums.substr(0, 3);\n\n if (first) {\n if (firstThree) {\n if (`+${firstThree}` === phoneCode.uz.code) {\n return {\n code: phoneCode.uz.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.uz.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.am.code) {\n return {\n code: phoneCode.am.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.am.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.ge.code) {\n return {\n code: phoneCode.ge.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.ge.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.az.code) {\n return {\n code: phoneCode.az.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.az.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.ae.code) {\n return {\n code: phoneCode.ae.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.ae.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.by.code) {\n return {\n code: phoneCode.by.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.by.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.kg.code) {\n return {\n code: phoneCode.kg.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.kg.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.tm.code) {\n return {\n code: phoneCode.tm.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.tm.code),\n };\n }\n }\n\n if (firstTwo) {\n if (`+${firstTwo}` === phoneCode.ukr.code) {\n return {\n code: phoneCode.ukr.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.ukr.code),\n };\n }\n\n if (`+${firstTwo}` === phoneCode.est.code) {\n return {\n code: phoneCode.est.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.est.code),\n };\n }\n\n if (`+${firstTwo}` === phoneCode.kz.code) {\n return {\n code: phoneCode.kz.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.kz.code),\n };\n }\n }\n\n if (`+${first}` === phoneCode.ru.code) {\n return {\n code: phoneCode.ru.code,\n number: normalizePhone(onlyNums.slice(1), phoneCode.ru.code),\n };\n }\n\n if (`+${first}` === phoneCode.us.code) {\n return {\n code: phoneCode.us.code,\n number: normalizePhone(onlyNums.slice(1), phoneCode.us.code),\n };\n }\n }\n\n return {\n code: phoneCode.ru.code,\n number: '',\n };\n}\n\n/** @description Нормализация номера телефона в формат +7 999 9999999 или +380 99 999999 для полей ввода */\nconst normalizePhone = (value: string, code: string): string => {\n const onlyNums = onlyNumbers(value);\n if (onlyNums) {\n if (\n code === phoneCode.ru.code\n || code === phoneCode.us.code\n ) {\n if (onlyNums.length <= 3) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 3)} ${onlyNums.slice(3, 10)}`;\n\n } else if (code === phoneCode.az.code) {\n // Если добавляют 0 перед кодом, например +994 055 225 2206\n const azPos = onlyNums[0] === '0' ? 3 : 2;\n const azLength = onlyNums[0] === '0' ? 10 : 9;\n\n if (onlyNums.length <= azPos) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, azPos)} ${onlyNums.slice(azPos, azLength)}`;\n\n } else if (\n code === phoneCode.ukr.code\n || code === phoneCode.uz.code\n || code === phoneCode.am.code\n || code === phoneCode.ge.code\n || code === phoneCode.kz.code\n || code === phoneCode.ae.code\n || code === phoneCode.by.code\n || code === phoneCode.kg.code\n || code === phoneCode.tm.code\n ) {\n if (onlyNums.length <= 2) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 2)} ${onlyNums.slice(2, 9)}`;\n\n } else if (code === phoneCode.est.code) {\n if (onlyNums.length <= 2) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 2)} ${onlyNums.slice(2, 8)}`;\n }\n\n return value;\n }\n\n return '';\n};\n\nfunction getWidgetIdFromUrl() {\n const id = window.location.pathname.match(/\\d+/g);\n\n if (id && id.length > 0) {\n return parseInt(id[0]);\n }\n\n return 0\n}\n\nfunction isFullScreen() {\n return document.body.clientWidth < 960;\n}\n\nfunction isSafari() {\n return navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&\n navigator.userAgent &&\n navigator.userAgent.indexOf('CriOS') == -1 &&\n navigator.userAgent.indexOf('FxiOS') == -1;\n}\n\nexport {\n normalizePhone,\n getWidgetIdFromUrl,\n isFullScreen,\n isSafari,\n onlyNumbers,\n getCodePhoneNumber,\n};\n","import {\n TWidgetColors,\n TWidgetSettings,\n} from '../types/IRootWidgetStore';\n\ntype Settings = {\n settings: Required<TWidgetSettings> & {\n colors: Required<TWidgetColors>\n }\n}\n\nexport const fallbackColors: Required<TWidgetColors> = {\n mainColor: '#6ae9c5',\n formBackground: '#ffffff',\n pageBackground: '#737577',\n formHeaderColor: '#323232',\n formBaseColor: '#323232',\n formFieldColor: '#aaaaaa',\n}\n\nexport const fallbackValue: Settings = {\n settings: {\n isShowHeader: true,\n isEmailRequired: false,\n isSecurityEnabled: false,\n isLastNameRequired: false,\n colors: fallbackColors,\n },\n};\n","import { IAppActions } from '../types/IAppActions';\nimport { IRootWidgetStore } from '../types/IRootWidgetStore';\nimport * as RootWidgetActionsTypes from '../actions/rootWidget/RootWidgetActionsTypes';\nimport { reserveWidgetState } from '../config/constants';\nimport { getWidgetIdFromUrl } from '../helpers/helpers';\nimport {fallbackColors} from \"../helpers/constants\";\n\nexport const initState: IRootWidgetStore = {\n widgetId: getWidgetIdFromUrl(),\n widgetState: reserveWidgetState.FORM_STATE,\n confirmCodeRequested: false,\n timeLeft: 0,\n restaurantInfoInitialized: true,\n restaurantInfo: {\n address: ' ',\n name: ' ',\n phone: ' ',\n countryCode: '',\n settings: {\n isShowHeader: false,\n isEmailRequired: false,\n isSecurityEnabled: false,\n isLastNameRequired:false,\n colors: fallbackColors,\n }\n },\n bookingIsProcessing: false,\n smsCodeError: '',\n bookingId: undefined,\n bookingError: undefined,\n bookingReqData: {\n comment: '',\n persons: 0,\n time: '-',\n date: '-',\n dateForReq: '',\n fullName: '',\n phone: '',\n smsNotificationIsEnabled: true,\n }\n};\n\nexport default function reducer(state = initState, action: IAppActions): IRootWidgetStore {\n switch (action.type) {\n case RootWidgetActionsTypes.INIT_APP_RESTAURANT_INFO: {\n return {\n ...state,\n restaurantInfo: action.payload.restaurantInfo,\n restaurantInfoInitialized: true,\n }\n }\n\n case RootWidgetActionsTypes.REGISTRATION_REQUEST:\n return {\n ...state,\n confirmCodeRequested: true,\n bookingReqData: action.payload.bookingData,\n };\n\n case RootWidgetActionsTypes.REGISTRATION_REQUEST_SUCCESS:\n let widgetState = reserveWidgetState.SMS_VERIFY_STATE\n if (state.restaurantInfo.countryCode !== 'RU') {\n widgetState = reserveWidgetState.PROCESSING_STATE\n }\n\n return {\n ...state,\n widgetState: widgetState,\n confirmCodeRequested: true,\n timeLeft: action.payload.timeLeft,\n };\n\n case RootWidgetActionsTypes.REGISTRATION_REQUEST_ERROR:\n return {\n ...state,\n confirmCodeRequested: false,\n };\n\n case RootWidgetActionsTypes.SMS_CODE_VERIFY_REQUEST:\n return {\n ...state,\n smsCodeError: '',\n };\n\n case RootWidgetActionsTypes.GUEST_BOOKING_REQUEST:\n return {\n ...state,\n widgetState: reserveWidgetState.PROCESSING_STATE,\n confirmCodeRequested: false,\n bookingReqData: action.payload.bookingData,\n };\n\n case RootWidgetActionsTypes.SMS_CODE_VERIFY_SUCCESS:\n return {\n ...state,\n widgetState: reserveWidgetState.PROCESSING_STATE,\n };\n\n case RootWidgetActionsTypes.SMS_CODE_VERIFY_ERROR:\n return {\n ...state,\n smsCodeError: action.payload.smsCodeError,\n };\n\n case RootWidgetActionsTypes.GUEST_BOOKING_SUCCESS:\n return {\n ...state,\n widgetState: reserveWidgetState.SUCCESS_STATE,\n };\n\n case RootWidgetActionsTypes.GUEST_BOOKING_ERROR:\n return {\n ...state,\n widgetState: reserveWidgetState.ERROR,\n bookingError: {\n type: action.error,\n bookingData: action.bookingData,\n },\n };\n\n case RootWidgetActionsTypes.GUEST_BOOKING_QUEUE_PROCESSING:\n return {\n ...state,\n bookingIsProcessing: true,\n bookingId: action.payload.bookingId,\n };\n\n case RootWidgetActionsTypes.DELETE_RESERVE_SUCCESS:\n return {\n ...state,\n bookingIsProcessing: false,\n widgetState: reserveWidgetState.FORM_STATE,\n };\n\n case RootWidgetActionsTypes.INIT_APP_WIDGET_STATE: {\n if (action.payload.state === reserveWidgetState.PROCESSING_STATE) {\n return {\n ...state,\n bookingReqData: action.payload.reserveInfo,\n widgetState: reserveWidgetState.PROCESSING_STATE\n }\n }\n\n return {\n ...state,\n bookingReqData: action.payload.reserveInfo,\n }\n }\n\n default:\n return state;\n }\n}\n","export const GET_TABLES_COUNT_REQUEST = 'GET_TABLES_COUNT_REQUEST';\nexport const GET_TABLES_COUNT_SUCCESS = 'GET_TABLES_COUNT_SUCCESS';\nexport const GET_TABLES_COUNT_ERROR = 'GET_TABLES_COUNT_ERROR';\n\nexport const GET_MAX_PERSON_COUNT_REQUEST = 'GET_MAX_PERSON_COUNT_REQUEST';\nexport const GET_MAX_PERSON_COUNT_SUCCESS = 'GET_MAX_PERSON_COUNT_SUCCESS';\nexport const GET_MAX_PERSON_COUNT_ERROR = 'GET_MAX_PERSON_COUNT_ERROR';\n\nexport const RESTAURANT_SCHEDULE_REQUEST = 'RESTAURANT_SCHEDULE_REQUEST';\nexport const RESTAURANT_SCHEDULE_SUCCESS = 'RESTAURANT_SCHEDULE_SUCCESS';\n","import { IAppActions } from '../types/IAppActions';\nimport { IReserveFormStore } from '../types/IReserveFormStore';\nimport * as ReserveFormActionsTypes from '../actions/reserveForm/ReserveFormActionsTypes';\n\nexport const initState: IReserveFormStore = {\n freeTables: 0,\n freeTablesError: false,\n maxPersons: 8,\n date: '',\n persons: 0,\n scheduleOptions: [],\n};\n\nexport default function reducer(state = initState, action: IAppActions): IReserveFormStore {\n switch (action.type) {\n case ReserveFormActionsTypes.GET_TABLES_COUNT_REQUEST:\n return {\n ...state,\n date: action.payload.date,\n persons: action.payload.persons,\n };\n\n case ReserveFormActionsTypes.GET_TABLES_COUNT_SUCCESS:\n return {\n ...state,\n freeTables: action.payload.freeTables,\n freeTablesError: !action.payload.freeTables || action.payload.freeTables === 0,\n };\n\n case ReserveFormActionsTypes.RESTAURANT_SCHEDULE_SUCCESS:\n return {\n ...state,\n scheduleOptions: action.payload.scheduleOptions,\n };\n\n case ReserveFormActionsTypes.GET_MAX_PERSON_COUNT_SUCCESS:\n case ReserveFormActionsTypes.GET_MAX_PERSON_COUNT_ERROR:\n return {\n ...state,\n maxPersons: action.payload.persons,\n };\n\n case ReserveFormActionsTypes.GET_TABLES_COUNT_ERROR: {\n return {\n ...state,\n freeTablesError: true,\n freeTables: 0,\n }\n }\n\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\nimport { connectRouter as router } from 'connected-react-router';\nimport { reducer as form } from 'redux-form';\n\nimport root from './RootWidgetReducer';\nimport reserveForm from './ReseveFormReducer';\n\nexport default (history: any) => combineReducers({\n reserveForm,\n root,\n router: router(history),\n form,\n});\n","const systems: { [details: string]: string; } = {\n clientId: 'guestme-client',\n secretKey: '9ACepV68zJ2x3AtN',\n};\n\nexport default systems;\n","const host = process.env.REACT_APP_BACKEND_URL_VAR;\nconst api = `${host}/api`;\nconst token = `${host}/oauth/token`;\nconst restaurantWidget = `${api}/restaurant-widget`;\nconst restaurantTable = `${api}/restaurant-table/widget`;\nconst restaurantSchedule = `${api}/restaurant-schedule/widget`;\nconst widgetBooking = `${api}/widget/booking`;\n\nexport {\n restaurantWidget,\n restaurantTable,\n restaurantSchedule,\n token,\n widgetBooking,\n};\n","import moment, { Moment } from 'moment';\nimport { emptyString, weekDays } from '../config/constants';\n\n/**\n * @description Округление текущей даты\n * @param roundBy - дефолтное значение 15\n * @returns {Object}\n */\nconst roundCurrentTimeBy = (roundBy: number = 15): Moment => {\n const interval = roundBy * 60 * 1000;\n // @ts-ignore\n return moment(Math.ceil(moment() / interval) * interval);\n};\n\n/** @description Проверка на завтра */\nexport function itsTomorrow(open: string, reserveTime: string): boolean {\n return parseInt(open) > parseInt(reserveTime);\n}\n\n/** @description Функция для получения следующего дня недели */\nfunction getNextWeekDay(day: string): string {\n switch (day) {\n case weekDays.MONDAY:\n return weekDays.TUESDAY;\n case weekDays.TUESDAY:\n return weekDays.WEDNESDAY;\n case weekDays.WEDNESDAY:\n return weekDays.THURSDAY;\n case weekDays.THURSDAY:\n return weekDays.FRIDAY;\n case weekDays.FRIDAY:\n return weekDays.SATURDAY;\n case weekDays.SATURDAY:\n return weekDays.SUNDAY;\n case weekDays.SUNDAY:\n return weekDays.MONDAY;\n default: return emptyString;\n }\n}\n\n/**\n * @description Слияние даты и времени для запроса на бронирование\n * @param {date} date\n * @param {string} time\n */\nconst mergeDateAndTime = (date: any, time: any): Moment => {\n const parseTime = time.split(':');\n return moment(date).set(({\n hour: parseTime[0], minute: parseTime[1], second: 0, millisecond: 0,\n }));\n};\n\n/**\n * Формирование списка опций выбора доступного времени виджета\n * @param targetDate - Нужная дата\n * @param workTime - Время работы по дням\n * @returns {Array}\n */\nconst getWidgetTimeList = (targetDate: any, workTime: any) => {\n const timeLabels = [];\n const weekDay = moment(targetDate)\n .locale('en')\n .format('dddd')\n .toUpperCase();\n const { start, end } = workTime[weekDay];\n\n if (start && end) {\n const endParse = end.split(':');\n const endMoment = moment().hours(endParse[0]).minutes(endParse[1]);\n\n const startParse = start.split(':');\n let startMoment = moment().hours(startParse[0]).minutes(startParse[1]);\n const isToday = moment(0, 'HH').diff(targetDate, 'day') === 0;\n\n // Делаем невозможность выбора в прошлом\n if (isToday && moment() > startMoment) {\n startMoment = roundCurrentTimeBy();\n }\n\n // Если открытие позже закрытия, считаем и на следующий день\n if (parseInt(startParse[0]) > parseInt(endParse[0])) {\n endMoment.add(1, 'day');\n }\n\n const timesToStop = endMoment.diff(startMoment, 'minutes') / 15;\n\n for (let i = 0; i <= timesToStop; i += 1) {\n startMoment.add(i === 0 ? 0 : 15, 'minutes');\n timeLabels.push(startMoment.format('HH:mm'));\n }\n }\n\n return timeLabels;\n};\n\n/** @description Парсинг даты для отправки на бэк */\nconst parseDateForReq = (date: string | Moment): string => moment(date).format('YYYY-MM-DDTHH:mm:ss');\n\n/** @description Мержим расписание для формирования списка времени работы ресторана для виджета */\nconst getWidgetMergedSchedule = (scheduleList: Array<any>) => {\n return scheduleList.reduce((schedule: any, group) => {\n if (group.records.length > 1) {\n const nextDay = getNextWeekDay(group.day);\n const time = {\n start: '',\n end: '',\n };\n\n group.records.forEach((i: any) => i.day === group.day\n ? time.start = i.start\n : time.end = i.end);\n\n return {\n ...schedule,\n [group.day]: {\n ...schedule[group.day],\n start: time.start,\n end: time.end,\n },\n [nextDay]: {\n ...schedule[nextDay],\n previous: time.end,\n },\n };\n }\n\n return {\n ...schedule,\n [group.day]: {\n ...schedule[group.day],\n start: group.records[0].start,\n end: group.records[0].end,\n },\n };\n }, {});\n};\n\nexport {\n roundCurrentTimeBy,\n mergeDateAndTime,\n getWidgetMergedSchedule,\n parseDateForReq,\n getWidgetTimeList,\n};\n","import moment from 'moment';\n\nimport { getWidgetIdFromUrl } from './helpers';\nimport { IBookingData } from '../types/IRootWidgetStore';\n\nconst WIDGET_ACCESS_TOKEN_KEY = 'WIDGET_ACCESS_TOKEN_KEY';\nconst WIDGET_REFRESH_TOKEN_KEY = 'WIDGET_REFRESH_TOKEN_KEY';\n\ntype widgetData = {\n WIDGET_ACCESS_TOKEN_KEY: string;\n WIDGET_REFRESH_TOKEN_KEY: string;\n date: string;\n reserveId: number;\n userData: IBookingData\n};\n\n/**\n * @description Получить токен по ключу\n * @param tokenName\n */\nfunction getToken(tokenName: string): string | null {\n const id = getWidgetIdFromUrl();\n const widgetData = localStorage.getItem(`${id}`);\n\n if (!widgetData) {\n return null;\n }\n\n const tokens = JSON.parse(widgetData);\n\n if (tokens[tokenName]) {\n const currentTime = moment();\n\n if (currentTime.diff(moment(tokens.date), 'h') < 24) {\n return tokens[tokenName];\n } else {\n localStorage.removeItem(`${id}`);\n }\n\n return null;\n }\n\n return null;\n}\n\n/**\n * @description Сохраняем токены в локал сторадж\n * т.к этот метод вызывается в момент авторизации/регистрации юзера то перетераем старрые данные\n * @param accessToken\n * @param refreshToken\n */\nfunction setTokens(\n accessToken: string,\n refreshToken: string,\n) {\n const id = getWidgetIdFromUrl();\n\n const data = {\n [WIDGET_ACCESS_TOKEN_KEY]: accessToken,\n [WIDGET_REFRESH_TOKEN_KEY]: refreshToken,\n date: moment().format(),\n };\n\n localStorage.setItem(`${id}`, JSON.stringify(data));\n}\n\n\n/**\n * @description Обновление токена\n * @param accessToken\n * @param refreshToken\n */\nfunction updateToken(accessToken: string, refreshToken: string) {\n const id = getWidgetIdFromUrl();\n const oldWidgetData = localStorage.getItem(`${id}`);\n\n if (oldWidgetData) {\n const parseOldWidgetData = JSON.parse(oldWidgetData);\n\n const newData = {\n ...parseOldWidgetData,\n [WIDGET_ACCESS_TOKEN_KEY]: accessToken,\n [WIDGET_REFRESH_TOKEN_KEY]: refreshToken,\n };\n\n localStorage.setItem(`${id}`, JSON.stringify(newData))\n }\n}\n\n/**\n * @description Сохраняем данные о брони\n * @param reserveId\n * @param userData\n */\nfunction setWidgetData(\n reserveId: number,\n userData: any,\n) {\n const id = getWidgetIdFromUrl();\n const oldWidgetData = localStorage.getItem(`${id}`);\n\n if (oldWidgetData) {\n const newData: widgetData = {\n ...JSON.parse(oldWidgetData),\n reserveId,\n userData,\n };\n\n localStorage.setItem(`${id}`, JSON.stringify(newData));\n }\n}\n\n/** @description Запрашиваем данные виджета */\nfunction getWidgetData() {\n const id = getWidgetIdFromUrl();\n const widgetData = localStorage.getItem(`${id}`);\n\n if (widgetData) {\n const parseWidgetData: widgetData = JSON.parse(widgetData);\n const currentTime = moment();\n\n if (currentTime.diff(moment(parseWidgetData.date), 'h') < 24) {\n return {\n reserveId: parseWidgetData.reserveId,\n userData: parseWidgetData.userData,\n };\n } else {\n localStorage.removeItem(`${id}`);\n return null;\n }\n }\n\n return null;\n}\n\n/** @description Удаляем данные о видежте */\nfunction clearWidgetData() {\n const id = getWidgetIdFromUrl();\n\n localStorage.removeItem(`${id}`)\n}\n\n/** @description Получить access токен авторизации */\nconst getAccessToken = () => getToken(WIDGET_ACCESS_TOKEN_KEY);\n\n/** @description Получить refresh токен авторизации */\nconst getRefreshToken = () => getToken(WIDGET_REFRESH_TOKEN_KEY);\n\n\nexport {\n clearWidgetData,\n setWidgetData,\n getAccessToken,\n getRefreshToken,\n getWidgetData,\n updateToken,\n setTokens,\n};\n","import axios, { AxiosRequestConfig } from 'axios';\nimport moment from 'moment';\n\nimport systems from '../config/systems';\nimport * as ConfigAPI from '../config/api';\nimport { parseDateForReq } from '../helpers/dateHelpers';\nimport { IBookingDataReq, TRestaurant } from '../types/IRootWidgetStore';\nimport {\n getAccessToken,\n getRefreshToken,\n updateToken,\n} from '../helpers/localStorageHelpers';\n\nconst api = axios.create({ withCredentials: true });\n\n/**\n * Запрос на получение обновление токена\n * @param refreshToken\n * @returns {Promise<AxiosResponse<T>>}\n */\nexport const refreshTokenReq = (refreshToken: string) => {\n const userData = `refresh_token=${refreshToken}&grant_type=refresh_token`;\n const base64BasicKey = btoa(`${systems.clientId}:${systems.secretKey}`);\n\n return api.post(\n ConfigAPI.token, userData, { headers: { Authorization: `Basic ${base64BasicKey}` } },\n );\n};\n\napi.interceptors.request.use((config: AxiosRequestConfig) => {\n const accessToken = getAccessToken();\n const configResult = { ...config };\n\n if (accessToken && accessToken !== 'undefined' && config.url !== ConfigAPI.token) {\n configResult.headers.Authorization = `Bearer ${accessToken}`;\n }\n return configResult;\n});\n\napi.interceptors.response.use(response => response, (error) => {\n const originalRequest = error.config;\n\n if (error.response && error.response.status === 401 && originalRequest.url === ConfigAPI.token) {\n return Promise.reject(error);\n }\n\n if (error.response && error.response.status === 401 && !originalRequest._retry) { // eslint-disable-line no-underscore-dangle\n originalRequest._retry = true; // eslint-disable-line no-underscore-dangle\n const refreshToken = getRefreshToken();\n\n if (refreshToken) {\n return refreshTokenReq(refreshToken).then((res: {\n status: number;\n data: {\n access_token: string;\n refresh_token: string;\n }\n }) => {\n if (res.status === 200) {\n updateToken(res.data.access_token, res.data.refresh_token);\n originalRequest.headers.Authorization = `Bearer ${res.data.access_token}`;\n\n return axios(originalRequest);\n }\n return null;\n });\n }\n return null;\n }\n return Promise.reject(error);\n});\n\n/**\n * Запрос на получение количества столов для резерва по выбранным параметрам\n * @param widgetId\n * @param date - дата\n * @param persons - количество персон\n * @returns {Promise<AxiosResponse<T>>}\n */\nexport const getTablesCountReq = (widgetId: number, date: string, persons: number) => api\n .get(`${ConfigAPI.restaurantTable}/${widgetId}/free/count`, {\n params: {\n time: parseDateForReq(date),\n persons,\n },\n }).then(r => r.data.count);\n\n/**\n * Отправить запрос на отправку кода подтверждения\n * @param phone - Номер телефона\n * @param widgetId - Id виджета\n */\nexport const sendConfirmCodeReq = (phone: string, widgetId: number) => api.post((`${ConfigAPI.restaurantWidget}/${widgetId}/confirmation/code/request`), {\n phone,\n});\n\n/**\n * Проверка кода подтверждения\n * @param code\n * @param phone\n */\nexport const verifySmsCodeReq = (code: string, phone: string) => {\n const base64BasicKey = btoa(`${systems.clientId}:${systems.secretKey}`);\n const data = new URLSearchParams({\n phone,\n code,\n grant_type: 'sms_code',\n })\n\n return api\n .post(ConfigAPI.token, data, { headers: { Authorization: `Basic ${base64BasicKey}` } })\n .then(\n response => response.data,\n error => error.response.data,\n );\n};\n\n/**\n * Резервирования для виджета\n * @param bookingData\n */\nexport const guestBookingReq = (bookingData: IBookingDataReq) => {\n const {\n widgetId,\n comment,\n persons,\n date,\n fullName,\n smsNotificationIsEnabled,\n phone,\n } = bookingData;\n const parsedName = fullName.split(' ');\n return api\n .post(ConfigAPI.widgetBooking, {\n widgetId,\n comment,\n persons,\n date: parseDateForReq(date),\n firstName: parsedName[0],\n lastName: parsedName.splice(1).join(\" \"),\n isNotificationEnabled: smsNotificationIsEnabled,\n phone,\n })\n .then(res => res.data);\n};\n\n/**\n * Загрузка данных по ресторану\n * @param {number} widgetId\n */\nexport const getRestaurantInfo = (widgetId: number): Promise<TRestaurant> => api\n .get(`${ConfigAPI.restaurantWidget}/${widgetId}/info`)\n .then(res => res.data);\n\n/**\n * Проверка статуса бронирования\n * @param bookingId\n */\nexport const bookingStatus = (bookingId: number) => api\n .get(`${ConfigAPI.widgetBooking}/${bookingId}/status`)\n .then(res => res.data);\n\n/** *\n * Запрос информации по брони, для кейсов когда у юзера есть активная бронь в этом ресторане\n */\nexport const getActiveBookingInfo = (bookingId: number) => api\n .get(`${ConfigAPI.widgetBooking}/${bookingId}`)\n .then(res => res.data);\n\n/**\n * Дроп бронирования\n * @param bookingId\n */\nexport const deleteBooking = (bookingId: number) => api\n .delete(`${ConfigAPI.widgetBooking}/${bookingId}`);\n\n/**\n * Загрузка расписания ресторана по id и дате c исклюючениями\n * @param widgetId\n * @param date\n */\nexport const getRestaurantScheduleReq = (\n widgetId: number, date: string,\n) => api.get(`${ConfigAPI.restaurantSchedule}/${widgetId}`, {\n params: {\n date: moment(date).format('YYYY-MM-DD'),\n },\n}).then(res => res.data);\n\n/**\n * Запрос на получение максимальной вместимости столов\n * @param widgetId\n */\nexport const getMaxPersonCountReq = (widgetId: number) => api\n .get(`${ConfigAPI.restaurantTable}/${widgetId}/capacity/maximum`)\n .then(r => r.data.maxCapacity);\n","import { delay } from 'redux-saga/effects'\n\ntype RequestCall<T, TP> = (args: TP) => Promise<T>;\n\nexport function* queryWithRetry<T, R, P>(requestFunction: RequestCall<T, P>, params: P, retries = 5) {\n let lastError = null;\n for (let i = 0; i < retries; i++) {\n try {\n return yield requestFunction(params);\n } catch (err) {\n if (err && err.response && err.response.status == 404) {\n throw new Error(err);\n }\n\n lastError = err;\n if (i < (retries - 1)) {\n yield delay((i + 1) * 3000);\n }\n }\n }\n\n // Stop failed several attempts\n throw new Error(lastError || 'request failed');\n}\n","import * as ActionTypes from './RootWidgetActionsTypes';\nimport { IRootWidgetActions } from './IRootWidgetActions';\nimport {\n TRestaurant,\n IBookingData,\n IBookingErrorType,\n TErrorBookingData\n} from '../../types/IRootWidgetStore';\n\n/** @description Экшен для запроса инфы о ресторане при ините виджета */\nexport function getRestaurantInfo(widgetId: number): IRootWidgetActions {\n return {\n type: ActionTypes.INIT_APP,\n payload: {\n widgetId,\n },\n };\n}\n\n/** @description Экшен для успешной обработки запроса инфы о ресторане при ините виджета */\nexport function initAppRestaurantInfo(restaurantInfo: TRestaurant): IRootWidgetActions {\n return {\n type: ActionTypes.INIT_APP_RESTAURANT_INFO,\n payload: {\n restaurantInfo,\n },\n };\n}\n\n/** @description Экшен для успешной обработки запроса инфы о ресторане при ините виджета */\nexport function initAppWidgetState(reserveInfo: IBookingData, state?: string): IRootWidgetActions {\n return {\n type: ActionTypes.INIT_APP_WIDGET_STATE,\n payload: {\n reserveInfo,\n state,\n },\n };\n}\n\n/** @description Экшен для запроса кода регистрации */\nexport function sendRegistrationRequest(bookingData: IBookingData): IRootWidgetActions {\n return {\n type: ActionTypes.REGISTRATION_REQUEST,\n payload: {\n bookingData,\n },\n };\n}\n\n/** @description Экшен для обработки запроса кода регистрации */\nexport function sendRegistrationRequestSuccess(timeLeft: number): IRootWidgetActions {\n return {\n type: ActionTypes.REGISTRATION_REQUEST_SUCCESS,\n payload: {\n timeLeft,\n },\n };\n}\n\n/** @description Экшен для запроса кода регистрации */\nexport function sendRegistrationRequestError(): IRootWidgetActions {\n return {\n type: ActionTypes.REGISTRATION_REQUEST_ERROR,\n };\n}\n\n/** @description Экшен для повторного запроса кода регистрации */\nexport function resendRegistrationRequest(): IRootWidgetActions {\n return {\n type: ActionTypes.RESEND_REGISTRATION_REQUEST,\n };\n}\n\n/** @description Экшен для отправки запроса на проверку смс */\nexport function verifySmsCode(smsCode: string): IRootWidgetActions {\n return {\n type: ActionTypes.SMS_CODE_VERIFY_REQUEST,\n payload: {\n smsCode,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на проверку смс */\nexport function verifySmsCodeSuccess(): IRootWidgetActions {\n return {\n type: ActionTypes.SMS_CODE_VERIFY_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на проверку смс */\nexport function verifySmsCodeError(error: string): IRootWidgetActions {\n return {\n type: ActionTypes.SMS_CODE_VERIFY_ERROR,\n payload: {\n smsCodeError: error,\n },\n };\n}\n\n/** @description Экшен для отправки запроса на резервирование столика */\nexport function guestBooking(bookingData: IBookingData): IRootWidgetActions {\n return {\n type: ActionTypes.GUEST_BOOKING_REQUEST,\n payload: {\n bookingData,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на резервирование столика */\nexport function guestBookingSuccess(): IRootWidgetActions {\n return {\n type: ActionTypes.GUEST_BOOKING_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на резервирование столика */\nexport function guestBookingQueueProcessing(bookingId: number): IRootWidgetActions {\n return {\n type: ActionTypes.GUEST_BOOKING_QUEUE_PROCESSING,\n payload: {\n bookingId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на резервирование столика */\nexport function guestBookingError(error: IBookingErrorType, bookingData?: TErrorBookingData): IRootWidgetActions {\n return {\n type: ActionTypes.GUEST_BOOKING_ERROR,\n error,\n bookingData,\n };\n}\n\n/** @description Экшен для удаления бронирования */\nexport function deleteBooking(bookingId: number): IRootWidgetActions {\n return {\n type: ActionTypes.DELETE_RESERVE_REQUEST,\n payload: {\n bookingId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного удаления бронирования */\nexport function deleteBookingSuccess(): IRootWidgetActions {\n return {\n type: ActionTypes.DELETE_RESERVE_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на удаление бронирования */\nexport function deleteBookingError(error: string): IRootWidgetActions {\n return {\n type: ActionTypes.DELETE_RESERVE_ERROR,\n error,\n };\n}\n","import * as ActionTypes from './ReserveFormActionsTypes';\nimport { IReserveFormActions } from './IReserveFormActions';\n\n/** @description Экшен для отправки запроса на получение свободных столов */\nexport function getFreeTables(date: string, persons: number): IReserveFormActions {\n return {\n type: ActionTypes.GET_TABLES_COUNT_REQUEST,\n payload: {\n date,\n persons,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на получение столов */\nexport function getFreeTablesSuccess(freeTables: number): IReserveFormActions {\n return {\n type: ActionTypes.GET_TABLES_COUNT_SUCCESS,\n payload: {\n freeTables,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на получение столов */\nexport function getFreeTablesError(): IReserveFormActions {\n return {\n type: ActionTypes.GET_TABLES_COUNT_ERROR,\n };\n}\n\n/** @description Экшен для отправки запроса на получение расписания ресторана */\nexport function getRestaurantSchedule(date: string): IReserveFormActions {\n return {\n type: ActionTypes.RESTAURANT_SCHEDULE_REQUEST,\n payload: {\n date,\n },\n };\n}\n\n/** @description Экшен для успешного запроса на получение расписания ресторана */\nexport function getRestaurantScheduleSuccess(scheduleOptions: Array<string>): IReserveFormActions {\n return {\n type: ActionTypes.RESTAURANT_SCHEDULE_SUCCESS,\n payload: {\n scheduleOptions,\n },\n };\n}\n\n/** @description Экшен для запроса максимальной вместимости столов */\nexport function getMaxPersonCount(widgetId: number): IReserveFormActions {\n return {\n type: ActionTypes.GET_MAX_PERSON_COUNT_REQUEST,\n payload: {\n widgetId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса максимальной вместимости столов */\nexport function getMaxPersonCountSuccess(persons: number): IReserveFormActions {\n return {\n type: ActionTypes.GET_MAX_PERSON_COUNT_SUCCESS,\n payload: {\n persons,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса максимальной вместимости столов */\nexport function getMaxPersonCountError(persons: number): IReserveFormActions {\n return {\n type: ActionTypes.GET_MAX_PERSON_COUNT_SUCCESS,\n payload: {\n persons,\n },\n };\n}\n","// TODO Поправить типизацию i18next\n// @ts-ignore\nimport i18next from 'i18next';\nimport locales from './locales.json';\n\nexport default i18next.init({\n lng: 'ru',\n debug: true,\n resources: locales,\n});\n","import {\n put, all, takeLatest, delay, call, select, fork,\n} from 'redux-saga/effects';\nimport _ from 'lodash';\nimport { LOCATION_CHANGE } from 'connected-react-router';\nimport { matchPath } from 'react-router';\nimport * as Sentry from '@sentry/react';\n\nimport {\n verifySmsCodeReq,\n guestBookingReq,\n bookingStatus,\n getRestaurantInfo,\n deleteBooking,\n sendConfirmCodeReq,\n getActiveBookingInfo,\n} from '../api';\nimport * as apiUtils from '../api/utils'\nimport * as ReserveWidgetActionsTypes\n from '../actions/rootWidget/RootWidgetActionsTypes';\nimport * as ReserveWidgetActions from '../actions/rootWidget/RootWidgetActions';\nimport * as IReserveActions from '../actions/rootWidget/IRootWidgetActions';\nimport * as ReserveFormActions\n from '../actions/reserveForm/ReserveFormActions';\n\nimport locales from '../locales';\nimport {\n setWidgetData,\n setTokens,\n getWidgetData,\n clearWidgetData\n} from '../helpers/localStorageHelpers';\nimport { IAppStore } from '../types/IAppStore';\nimport { errorType, reserveWidgetState } from '../config/constants';\nimport { IGetRestaurantInfo } from '../actions/rootWidget/IRootWidgetActions';\nimport { fallbackValue } from '../helpers/constants';\n\nconst BOOKING_STATUS_ACCEPTED = 'ACCEPTED';\nconst BOOKING_STATUS_ERROR = 'ERROR';\nconst BOOKING_STATUS_DECLINED = 'DECLINED';\nconst BOOKING_STATUS_CANCELED = 'CANCELED';\nconst BOOKING_STATUS_CREATED = 'CREATED';\nconst BOOKING_SENT = 'SENT';\n\nconst BOOKING_STATUS_REQUEST_DELAY = 5000;\nconst INCORRECT_CODE_CODE = 'code_incorrect';\nconst BOOKING_NOT_CLOSED = 'guest_have_not_closed_booking';\n\n/**\n * @description Trigger data fetching, since main component wont be rendered\n * until restaurant data initialized\n */\nfunction* init() {\n const route = yield select((state: IAppStore) => state.router.location);\n const matched = matchPath(route.pathname, {\n path: '/:key',\n strict: false\n })\n if (matched) {\n // @ts-ignore\n const { key }: { key: string | null } = (matched.params || { key: null });\n const widgetId = typeof key === 'string' ? Number(key) : null;\n if (widgetId) {\n yield put(ReserveWidgetActions.getRestaurantInfo(widgetId));\n yield put(ReserveFormActions.getMaxPersonCount(widgetId));\n }\n }\n}\n\n/**\n * @description watch widget status,\n */\nfunction* watchStatus(widgetData: any) {\n if (widgetData) {\n try {\n const state = yield call(bookingStatus, widgetData.reserveId);\n\n if (state.status === BOOKING_STATUS_CREATED || state.status === BOOKING_SENT) {\n yield put(ReserveWidgetActions.initAppWidgetState(\n widgetData.userData,\n reserveWidgetState.PROCESSING_STATE\n ));\n\n // blocks execution until resolved\n const isApproved = yield call(approveReserveStatusSaga, widgetData.reserveId);\n\n if (isApproved) {\n yield put(ReserveWidgetActions.guestBookingSuccess());\n }\n }\n\n if (state.status === BOOKING_STATUS_ACCEPTED) {\n yield put(ReserveWidgetActions.initAppWidgetState(widgetData.userData));\n yield put(ReserveWidgetActions.guestBookingSuccess());\n }\n\n if (state.status === BOOKING_STATUS_CANCELED) {\n clearWidgetData();\n }\n } catch (e) {\n Sentry.captureException(e);\n clearWidgetData();\n }\n }\n}\n\n/** @description Сага для инита виджета */\nfunction* initApp(action: IGetRestaurantInfo) {\n const widgetData = getWidgetData();\n\n yield fork(watchStatus, widgetData);\n\n try {\n const restaurantInfo = yield apiUtils.queryWithRetry(getRestaurantInfo, action.payload.widgetId);\n const { address } = restaurantInfo || { address: {} };\n const addressString = `${address.city}, ${address.street}, ${address.home}`;\n const restaurantName = restaurantInfo ? restaurantInfo.name : 'Рестаран';\n const settings = restaurantInfo ? restaurantInfo.settings : null;\n const { phone } = restaurantInfo ? restaurantInfo.info : '';\n\n yield put(ReserveWidgetActions.initAppRestaurantInfo({\n address: addressString,\n name: restaurantName,\n phone,\n countryCode: address.countryCode,\n settings: Object.assign({}, fallbackValue.settings, settings)\n }));\n\n Sentry.setContext('restaurant', {\n widgetId: action.payload.widgetId,\n address: addressString,\n name: restaurantName,\n phone,\n });\n } catch (e) {\n Sentry.captureException(e);\n console.log('initApp', e.message);\n }\n}\n\n/** @description Сага для запроса кода подтверждения*/\nfunction* sendConfirmationCodeSaga() {\n try {\n const { phone } = yield select((state: IAppStore) => state.root.bookingReqData);\n const { countryCode } = yield select((state: IAppStore) => state.root.restaurantInfo);\n const widgetId = yield select((state: IAppStore) => state.root.widgetId);\n\n const confirmReqData = yield sendConfirmCodeReq(phone, widgetId);\n yield put(ReserveWidgetActions.sendRegistrationRequestSuccess(confirmReqData.data.timeLeft));\n\n if(countryCode !== 'RU'){\n try {\n yield put(ReserveWidgetActions.verifySmsCodeSuccess());\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveWidgetActions.verifySmsCodeError(locales.t('common.errors.reserveWidget.smsCodeError')));\n }\n }\n\n } catch (e) {\n Sentry.captureException(e);\n\n let error = locales.t('common.errors.reserveWidget.unknownError');\n\n if (!_.isUndefined(e.response.data[0]) && e.response.data[0].code === 'mobile_phone_is_incorrect') {\n error = locales.t('common.errors.reserveWidget.phoneParseError');\n }\n yield put(ReserveWidgetActions.sendRegistrationRequestError());\n }\n}\n\n/** @description Сага для подтверждения кода из смс */\nfunction* verifyConfirmationCodeSaga(action: IReserveActions.ISendSmsCode) {\n try {\n const { phone } = yield select((state: IAppStore) => state.root.bookingReqData);\n const { smsCode } = action.payload;\n const verifyReqData = yield verifySmsCodeReq(smsCode, phone);\n\n if (!verifyReqData || verifyReqData.error) {\n let errorMessage = locales.t('common.errors.reserveWidget.smsCodeError');\n\n if (!verifyReqData || verifyReqData.error === INCORRECT_CODE_CODE) {\n errorMessage = locales.t('common.errors.reserveWidget.pinIncorrect');\n }\n\n yield put(ReserveWidgetActions.verifySmsCodeError(errorMessage));\n } else {\n setTokens(verifyReqData.access_token, verifyReqData.refresh_token);\n\n yield put(ReserveWidgetActions.verifySmsCodeSuccess());\n }\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveWidgetActions.verifySmsCodeError(locales.t('common.errors.reserveWidget.smsCodeError')));\n }\n}\n\n/**\n * @description Сага для проверки статуса бронирования,\n * - вызывается \"bookingStatus\" с интервалом \"BOOKING_STATUS_REQUEST_DELAY\"\n * @param bookingId\n */\nfunction* approveReserveStatusSaga(bookingId: number) {\n\n yield put(ReserveWidgetActions.guestBookingQueueProcessing(bookingId));\n\n while (true) {\n try {\n const apiResponse = yield call(bookingStatus, bookingId);\n const { status } = apiResponse;\n\n if (status === BOOKING_STATUS_ACCEPTED) {\n return true;\n }\n if (status === BOOKING_STATUS_ERROR || status === BOOKING_STATUS_DECLINED) {\n yield put(ReserveWidgetActions.guestBookingError(apiResponse.status));\n return false;\n }\n if (status === BOOKING_STATUS_CANCELED) {\n return false;\n }\n\n yield delay(BOOKING_STATUS_REQUEST_DELAY);\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveWidgetActions.guestBookingError(locales.t('common.errors.reserveWidget.unknownError')));\n return false;\n }\n }\n}\n\n/** @description Сага для бронирования */\nfunction* guestBookingSaga() {\n const widgetId = yield select((state: IAppStore) => state.root.widgetId);\n const {\n persons,\n dateForReq,\n comment,\n fullName,\n smsNotificationIsEnabled,\n phone,\n } = yield select((state: IAppStore) => state.root.bookingReqData);\n\n try {\n const bookingInfo = yield call(guestBookingReq, {\n widgetId,\n persons,\n date: dateForReq,\n comment,\n fullName,\n smsNotificationIsEnabled,\n phone,\n });\n\n setWidgetData(bookingInfo.id, {\n persons,\n date: dateForReq,\n comment,\n fullName,\n smsNotificationIsEnabled,\n phone,\n });\n\n const isApproved = yield call(approveReserveStatusSaga, bookingInfo.id);\n\n if (isApproved) {\n yield put(ReserveWidgetActions.guestBookingSuccess());\n }\n } catch (e) {\n Sentry.captureException(e);\n\n if (e.response && e.response.data[0]) {\n const response = e.response.data[0];\n\n switch (response.code) {\n case BOOKING_NOT_CLOSED:\n const bookingData = yield call(getActiveBookingInfo, response.params.id);\n yield put(ReserveWidgetActions.guestBookingError(errorType.activeReserve, {\n ...bookingData,\n phone,\n fullName,\n }));\n break;\n default:\n yield put(ReserveWidgetActions.guestBookingError(errorType.unknownError));\n break;\n }\n\n } else yield put(ReserveWidgetActions.guestBookingError(errorType.unknownError));\n }\n}\n\n/** @description Удаление бронирования */\nfunction* deleteReserveSaga(action: IReserveActions.IDeleteBooking) {\n try {\n yield deleteBooking(action.payload.bookingId);\n yield put(ReserveWidgetActions.deleteBookingSuccess());\n clearWidgetData();\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveWidgetActions.deleteBookingError(e));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(LOCATION_CHANGE, init),\n takeLatest(ReserveWidgetActionsTypes.INIT_APP, initApp),\n takeLatest([\n ReserveWidgetActionsTypes.REGISTRATION_REQUEST,\n ReserveWidgetActionsTypes.RESEND_REGISTRATION_REQUEST,\n ], sendConfirmationCodeSaga),\n takeLatest(ReserveWidgetActionsTypes.SMS_CODE_VERIFY_REQUEST, verifyConfirmationCodeSaga),\n takeLatest([ReserveWidgetActionsTypes.SMS_CODE_VERIFY_SUCCESS, ReserveWidgetActionsTypes.GUEST_BOOKING_REQUEST], guestBookingSaga),\n takeLatest(ReserveWidgetActionsTypes.DELETE_RESERVE_REQUEST, deleteReserveSaga),\n ]);\n}\n","import {\n put, all, takeLatest, select\n} from 'redux-saga/effects';\n\nimport * as Sentry from '@sentry/react';\n\nimport {\n getTablesCountReq,\n getRestaurantScheduleReq,\n getMaxPersonCountReq,\n} from '../api';\nimport * as ReserveFormActionsTypes from '../actions/reserveForm/ReserveFormActionsTypes';\nimport * as ReserveFormActions from '../actions/reserveForm/ReserveFormActions';\nimport * as IReserveFormActions from '../actions/reserveForm/IReserveFormActions';\nimport { getWidgetMergedSchedule, getWidgetTimeList } from '../helpers/dateHelpers';\nimport { IAppStore } from '../types/IAppStore';\n\n/** @description Получение списка всех доступных столов у ресторана подходящих под параметры фильтра. */\nfunction* getFreeTablesSaga(action: IReserveFormActions.IGetFreeTables) {\n try {\n const widgetId = yield select((state: IAppStore) => state.root.widgetId);\n const { date, persons } = action.payload;\n const count = yield getTablesCountReq(\n widgetId, date, persons,\n );\n\n yield put(ReserveFormActions.getFreeTablesSuccess(count));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveFormActions.getFreeTablesError());\n }\n}\n\n/** @description Получение расписания ресторана */\nfunction* getRestaurantSchedule(action: IReserveFormActions.IRestaurantScheduleRequest) {\n try {\n const widgetId = yield select((state: IAppStore) => state.root.widgetId);\n const { date } = action.payload;\n const scheduleData = yield getRestaurantScheduleReq(widgetId, date);\n\n const onlyDefaultScheduleList = scheduleData.filter((schedule: any) => !schedule.date);\n const weekScheduleCollection: any = getWidgetMergedSchedule(onlyDefaultScheduleList);\n const scheduleOptions = getWidgetTimeList(date, weekScheduleCollection);\n\n yield put(ReserveFormActions.getRestaurantScheduleSuccess(scheduleOptions));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveFormActions.getRestaurantScheduleSuccess([]));\n }\n}\n\n/** @description Получение максимального числа */\nfunction* getMaxPersonsCountSaga(action: IReserveFormActions.IGetMaxPersonCountReq) {\n try {\n const maxPersons = yield getMaxPersonCountReq(action.payload.widgetId);\n yield put(ReserveFormActions.getMaxPersonCountSuccess(maxPersons));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveFormActions.getMaxPersonCountError(8));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ReserveFormActionsTypes.GET_TABLES_COUNT_REQUEST, getFreeTablesSaga),\n takeLatest(ReserveFormActionsTypes.RESTAURANT_SCHEDULE_REQUEST, getRestaurantSchedule),\n takeLatest(ReserveFormActionsTypes.GET_MAX_PERSON_COUNT_REQUEST, getMaxPersonsCountSaga),\n ]);\n}\n","import { all } from 'redux-saga/effects';\n\nimport rootWidget from './RootWidgetSagas';\nimport reserveFormSaga from './ReserveFormSaga';\n\nexport default function* rootSaga() {\n yield all([\n rootWidget(),\n reserveFormSaga(),\n ]);\n}\n","import { applyMiddleware, createStore, compose } from 'redux';\nimport { routerMiddleware } from 'connected-react-router';\nimport createSagaMiddleware from 'redux-saga';\nimport * as Sentry from '@sentry/react';\nimport reducer from '../reducers';\nimport history from './history';\nimport rootSaga from '../sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst composeEnhancers = typeof window === 'object'\n// @ts-ignore\n && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n // @ts-ignore\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...\n }) : compose;\n\nconst sentryReduxEnhancer = Sentry.createReduxEnhancer();\n\nconst enhancer = composeEnhancers(\n applyMiddleware(\n sagaMiddleware,\n routerMiddleware(history),\n ),\n sentryReduxEnhancer,\n);\n\nconst store = createStore(\n reducer(history),\n enhancer,\n);\n\nsagaMiddleware.run(rootSaga);\n\nexport default store;\n","import React from 'react';\n\nimport { IProps } from \"./IShowInitialized\";\n\nconst ShowInitialized: React.FC<IProps> = ({\n initialized, children\n }) => {\n\n return <>\n {initialized ? children : null}\n </>;\n}\n\nexport default ShowInitialized;\n","import { connect } from 'react-redux';\n\nimport ShowInitialized from './ShowInitialized';\nimport { IAppStore } from '../../../types/IAppStore';\nimport { StateProps } from './IShowInitialized';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const { restaurantInfoInitialized } = state.root;\n return {\n initialized: restaurantInfoInitialized,\n }\n}\n\nexport default connect(mapStateToProps, null)(ShowInitialized);\n\n","import React, { useEffect, useState } from 'react';\nimport { Theme } from \"@material-ui/core\";\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { IProps } from \"./IThemeComp\";\nimport { generateThemeOptions } from \"../../../utils\";\n\nconst ThemeComp: React.FC<IProps> = ({\n colors, children\n }) => {\n const [theme, setTheme] = useState<Theme | null>(null);\n useEffect(() => {\n if (colors) setTheme(createMuiTheme(generateThemeOptions(colors)))\n }, [\n colors\n ]);\n\n return theme ? (\n <MuiThemeProvider theme={theme}>\n {children}\n </MuiThemeProvider>\n ) : null;\n}\n\nexport default ThemeComp;\n","import { ThemeOptions } from \"@material-ui/core/styles/createMuiTheme\";\nimport {\n darken,\n fade,\n} from \"@material-ui/core/styles/colorManipulator\";\nimport { TWidgetColors } from \"./types/IRootWidgetStore\";\nimport { fallbackColors } from \"./helpers/constants\";\n\n/**\n * @description generates ThemeOptions, defaults are set if colors is missing values\n */\nexport function generateThemeOptions(colors?: TWidgetColors | null): ThemeOptions {\n const fontFamilyMedium = 'GolosTextWebMedium';\n\n const themeColors: Required<TWidgetColors> = Object.assign({}, fallbackColors, colors);\n\n const primary = themeColors.mainColor;\n const primaryHover = darken(primary, 0.1503);\n const primarySelected = fade(primary, 0.3);\n const primaryPostHover = fade(primary, 0.05);\n\n return {\n typography: {\n h4: {\n fontFamily: fontFamilyMedium,\n fontSize: 29,\n lineHeight: '32pt',\n },\n h5: {\n fontFamily: fontFamilyMedium,\n fontSize: 24,\n lineHeight: '28pt',\n },\n h6: {\n fontFamily: fontFamilyMedium,\n fontSize: 20,\n lineHeight: '24pt',\n },\n subtitle1: {\n fontSize: 16,\n lineHeight: '16pt',\n },\n subtitle2: {\n fontFamily: fontFamilyMedium,\n fontSize: 16,\n lineHeight: '16pt',\n },\n body1: {\n fontSize: 14,\n lineHeight: '1.4',\n },\n caption: {\n color: themeColors.formBaseColor,\n fontSize: 12,\n lineHeight: '14pt',\n },\n button: {\n textTransform: 'none',\n },\n fontFamily: '\"GolosTextWebRegular\", \"Roboto\", \"Arial\"',\n },\n palette: {\n primary: {\n main: primary,\n contrastText: themeColors.formHeaderColor,\n },\n secondary: {\n main: '#c0c0c0',\n contrastText: '#fff',\n },\n text: {\n primary: themeColors.formBaseColor,\n hint: themeColors.formFieldColor,\n },\n /**\n * @deprecated\n grey: {\n main: '#898989',\n },\n buttonGrey: {\n main: '#79919d',\n hover: '#667a86',\n contrastText: '#fff',\n },\n */\n },\n overrides: {\n MuiInput: {\n /**\n * @description reset values to form specific\n */\n input: {\n '&:-webkit-autofill': {\n '-webkit-box-shadow': `0 0 0px 1000px ${themeColors.formBackground} inset`,\n '-webkit-text-fill-color': `${themeColors.formBaseColor}`,\n },\n },\n underline: {\n '&:hover:not($disabled):not($focused):not($error):before': {borderBottomColor: primary},\n },\n },\n MuiFormLabel: {\n root: {\n color: themeColors.formFieldColor\n }\n },\n MuiDialog: {\n root: {\n backgroundColor: themeColors.pageBackground\n }\n },\n MuiBackdrop: {\n root: {\n backgroundColor: themeColors.pageBackground\n }\n },\n MuiDialogContent: {\n root: {\n backgroundColor: themeColors.formBackground\n }\n },\n MuiTooltip: {\n tooltip: {\n fontSize: 12,\n maxWidth: 360,\n padding: '16px 15px 17px 24px',\n },\n },\n MuiPaper: {\n root: {\n backgroundColor: themeColors.formBackground,\n }\n },\n // @ts-ignore\n MuiPickersToolbarText: {\n toolbarTxt: {\n color: themeColors.formFieldColor,\n }\n },\n // @ts-ignore\n MuiPickersCalendarHeader: {\n iconButton: {\n backgroundColor: themeColors.formBackground,\n }\n },\n MuiMenu: {\n paper: {\n backgroundColor: themeColors.formBackground,\n }\n },\n MuiMenuItem: {\n root: {\n color: themeColors.formBaseColor,\n '&$selected': {\n backgroundColor: primarySelected,\n fontWeight: 500,\n '&:focus': {\n backgroundColor: primarySelected,\n },\n '&:hover': {\n backgroundColor: primaryHover,\n },\n },\n '&:hover': {\n backgroundColor: primaryHover,\n },\n '&:focus': {\n backgroundColor: primaryPostHover,\n },\n },\n },\n },\n }\n}\n","import { connect } from 'react-redux';\n\nimport ThemeComp from './ThemeComp';\nimport { IAppStore } from '../../../types/IAppStore';\nimport { StateProps } from './IThemeComp';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const { settings } = state.root.restaurantInfo;\n return {\n colors: settings ? settings.colors : null,\n }\n}\n\nexport default connect(mapStateToProps, null)(ThemeComp);\n\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport classNames from 'classnames';\n\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\n\nimport locales from '../../locales';\n\nconst styles = createStyles({\n isError: {\n color: 'red',\n },\n fontSize: {\n fontSize: 14 // КОСТЫЛЬ ДЛЯ IOS\n }\n});\n\ninterface IProps extends WrappedFieldProps, WithStyles<typeof styles> {\n maxCapacity: number\n}\n\n/** @description Селектор для выбора количества персон */\nconst PersonSelect: React.FC<IProps> = (\n { input, meta: { touched, error }, maxCapacity, classes }\n) => {\n const isError = touched && !!error;\n const capacityList = new Array(maxCapacity)\n .fill('')\n .map((v, i) => i + 1);\n\n return (\n <FormControl fullWidth error={isError}>\n <InputLabel htmlFor=\"person\">{ locales.t('common.reserveModal.persons') }</InputLabel>\n <Select\n {...input}\n className={classNames(classes.fontSize, { [classes.isError]: isError })}\n >\n {\n input.value === 0 && (\n <MenuItem value={0}>\n { locales.t('common.reserveModal.emptyPersons') }\n </MenuItem>\n )\n }\n {\n capacityList.map(person => (\n <MenuItem key={person} value={person}>\n { `${person} чел.` }\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n );\n};\n\nexport default withStyles(styles)(PersonSelect);\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport MomentUtils from '@date-io/moment';\nimport moment from 'moment';\nimport \"moment/locale/ru\";\n\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport TextField from '@material-ui/core/TextField';\n\nimport locales from '../../locales';\nimport { emptyTime } from '../../config/constants';\n\ninterface IProps extends WrappedFieldProps {}\n\n// TODO Переписать логику отображения значений для \"Сегодня\" и \"Выберете дату\"\nconst DatePickerComp: React.FC<IProps> = (\n { input, meta: { touched, error }, }\n) => {\n const renderDate = input.value !== emptyTime && moment(input.value).isSame(moment(), 'day')\n ? ''\n : input.value;\n\n const isError = touched && error;\n\n const FieldComp = (props: any) => {\n const {\n error, label, value, onClick, inputRef,\n } = props;\n const colorError = error ? { color: 'red' } : {};\n\n return (\n <TextField\n inputRef={inputRef}\n value={value}\n onClick={onClick}\n label={label}\n error={error}\n fullWidth\n InputProps={{\n style: colorError,\n }}\n />\n );\n };\n\n return (\n <MuiPickersUtilsProvider libInstance={moment} utils={MomentUtils} locale=\"ru\">\n <DatePicker\n {...input}\n autoOk\n variant=\"inline\"\n value={input.value === emptyTime ? null : renderDate}\n label={locales.t('common.reserveModal.selectDate')}\n disablePast\n format=\"DD.MM.YYYY\"\n error={isError}\n invalidLabel={locales.t('common.rangeDatePicker.todayLabel')}\n emptyLabel={locales.t('common.rangeDatePicker.blank')}\n TextFieldComponent={FieldComp}\n />\n </MuiPickersUtilsProvider>\n);\n};\n\nexport default DatePickerComp;\n","import React, { ChangeEvent } from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport classNames from 'classnames';\n\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\n\nimport locales from '../../locales';\nimport { emptyTime } from '../../config/constants';\n\nconst styles = createStyles({\n isError: {\n color: 'red',\n },\n fontSize: {\n fontSize: 14 // КОСТЫЛЬ ДЛЯ IOS\n }\n});\n\ninterface IProps extends WrappedFieldProps, WithStyles<typeof styles> {\n time: Array<string>;\n selectedTime: string;\n handleSetTime: (event: ChangeEvent<HTMLSelectElement>) => void;\n}\n\n/** @description Селектор для выбора времени бронирования */\nconst WidgetReserveTimeSelect: React.FC<IProps> = ({\n input,\n meta: { touched, error },\n time,\n classes,\n}) => {\n const isError = touched && error;\n\n return (\n <FormControl fullWidth error={isError} disabled={!time || time.length === 0}>\n <InputLabel shrink htmlFor=\"age-native-label-placeholder\">\n {locales.t('common.reserveModal.time')}\n </InputLabel>\n <Select\n className={classNames(classes.fontSize, { [classes.isError]: isError })}\n {...input}\n inputProps={{\n name: 'time',\n id: 'time',\n }}\n fullWidth\n >\n {\n input.value === emptyTime && (\n <MenuItem selected value={emptyTime} key={emptyTime}>\n { locales.t('common.reserveModal.emptyTime') }\n </MenuItem>\n )\n }\n {\n time.map(t => (\n <MenuItem alignItems=\"center\" key={t} value={t}>\n { t }\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n );\n};\n\nexport default withStyles(styles)(WidgetReserveTimeSelect);\n","import React from 'react';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport TextField from '@material-ui/core/TextField';\n\ninterface IProps {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n staticValue: string;\n label: string;\n readOnly: boolean;\n type: string;\n}\n\nconst TextFieldComp: React.FC<IProps> = ({\n input, label, type, staticValue, readOnly, meta: { touched, error },\n}) => (\n <TextField\n fullWidth\n label={(touched && !!error) ? error : label}\n error={touched && !!error}\n type={type}\n {...input}\n disabled={!!staticValue}\n InputProps={{\n readOnly: !!readOnly,\n }}\n />\n);\n\nexport default TextFieldComp;\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core';\nimport { Theme } from \"@material-ui/core/styles\";\n\nconst styles = (theme: Theme) => createStyles({\n formTextInput: {\n // fontSize: '0.8125rem'\n },\n wrap: {\n textAlign: 'right',\n '& .MuiTypography-root': {\n color: theme.palette.text.hint\n }\n },\n textAreaCont: {\n '&& textarea': {\n overflowX: 'hidden',\n },\n },\n});\n\ninterface IProps extends WithStyles<typeof styles>, WrappedFieldProps {\n label: string;\n type: string;\n staticValue: string;\n rows: number;\n}\n\nconst TextAreaComp: React.FC<IProps> = ({\n input,\n label,\n type,\n staticValue,\n meta: { touched, error },\n rows = 3,\n classes,\n}) => (\n <FormControl fullWidth>\n <TextField\n className={classes.textAreaCont}\n {...input}\n multiline\n rows={rows}\n label={(touched && !!error) ? error : label}\n error={touched && !!error}\n type={type}\n inputProps={{ maxLength: 160 }}\n disabled={!!staticValue}\n />\n <div className={classes.wrap}>\n <Typography variant=\"caption\">\n {input.value ? input.value.length : 0}\n /160\n </Typography>\n </div>\n </FormControl>\n);\n\nexport default withStyles(styles)(TextAreaComp);\n","import React from 'react';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel';\nimport HelperText from '@material-ui/core/FormHelperText';\n\ninterface IProps {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n label: string;\n}\n\nconst CheckBoxComp: React.FC<IProps> = ({\n input,\n label,\n meta: { touched, error },\n}) => {\n // eslint-disable-next-line\n delete input.value; // грязный хак\n\n return (\n <>\n <FormControlLabel\n control={(\n <Checkbox\n color=\"primary\"\n {...input}\n />\n )}\n label={(\n <Typography variant=\"caption\">\n { label }\n {touched && error && (\n <HelperText error>{ error }</HelperText>\n )}\n </Typography>\n )}\n />\n </>\n );\n};\n\nexport default CheckBoxComp;\n","import React, { useState, useEffect } from 'react';\n\nimport { createStyles, withStyles, WithStyles } from '@material-ui/core';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport TextField from '@material-ui/core/TextField';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { getCodePhoneNumber, normalizePhone, onlyNumbers } from '../../helpers/helpers';\nimport { phoneCode, getPhoneCodes } from '../../config/constants';\n\nconst styles = createStyles({\n fieldWrap: {\n display: 'flex',\n paddingTop: 16,\n },\n phoneField: {\n marginRight: 8,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n staticValue: string;\n label: string;\n readOnly: boolean;\n type: string;\n endAdornment: any;\n disabled?: boolean;\n locale?: string;\n}\n\n// TODO видимо нужно рефакторить логику переключения локалей\nconst PhoneFieldComp: React.FC<IProps> = ({\n classes,\n input,\n label,\n type,\n staticValue,\n readOnly,\n endAdornment,\n meta: { touched, error },\n disabled,\n locale,\n}) => {\n const [value, change] = useState({\n code: phoneCode.ru.code,\n number: '',\n });\n\n const [focused, setFocused] = useState(false);\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n useEffect(() => {\n if (input.value !== '') {\n change({\n ...getCodePhoneNumber(input.value),\n });\n } else {\n let codeValue;\n switch (locale) {\n case 'UA':\n codeValue = phoneCode.ukr.code;\n break;\n case 'EE':\n codeValue = phoneCode.est.code;\n break;\n case 'UZ':\n codeValue = phoneCode.uz.code;\n break;\n case 'AM':\n codeValue = phoneCode.am.code;\n break;\n case 'GE':\n codeValue = phoneCode.ge.code;\n break;\n case 'KZ':\n codeValue = phoneCode.kz.code;\n break;\n case 'AE':\n codeValue = phoneCode.ae.code;\n break;\n case 'US':\n codeValue = phoneCode.us.code;\n break;\n case 'AZ':\n codeValue = phoneCode.az.code;\n break;\n case 'BY':\n codeValue = phoneCode.by.code;\n break;\n case 'KG':\n codeValue = phoneCode.kg.code;\n break;\n case 'TM':\n codeValue = phoneCode.tm.code;\n break;\n default:\n case 'RU':\n codeValue = phoneCode.ru.code;\n break;\n }\n change({\n ...value,\n code: codeValue,\n });\n }\n }, []);\n\n const onChange = (e: any) => {\n const number = normalizePhone(e.target.value, value.code);\n\n if (e.target.value === '') {\n input.onChange('');\n } else {\n input.onChange(`${value.code}${onlyNumbers(number)}`);\n }\n\n change({\n ...value,\n [e.target.name]: number,\n });\n };\n\n const onChangeCode = (e: any) => {\n input.onChange(`${e.target.value}${value.number}`);\n\n change({\n code: e.target.value,\n number: '', // normalizePhone(value.number, e.target.value),\n });\n };\n\n const getLocale = (locale?: string) => {\n if (!locale) {\n return phoneCode.ru.code;\n }\n\n switch (locale) {\n case 'RU':\n return phoneCode.ru.code;\n case 'UA':\n return phoneCode.ukr.code;\n case 'EE':\n return phoneCode.est.code;\n case 'UZ':\n return phoneCode.uz.code;\n case 'AM':\n return phoneCode.am.code;\n case 'GE':\n return phoneCode.ge.code;\n case 'KZ':\n return phoneCode.kz.code;\n case 'AE':\n return phoneCode.ae.code;\n case 'US':\n return phoneCode.us.code;\n case 'AZ':\n return phoneCode.az.code;\n case 'BY':\n return phoneCode.by.code;\n case 'KG':\n return phoneCode.kg.code;\n case 'TM':\n return phoneCode.tm.code;\n default:\n return phoneCode.ru.code;\n }\n };\n\n let firstCountryKey: undefined | string;\n\n useEffect(() => {\n change({\n ...value,\n code: getLocale(locale),\n });\n\n firstCountryKey = locale && Object.prototype.hasOwnProperty.call(phoneCode, locale.toLocaleLowerCase())\n ? undefined\n : 'ru';\n }, [locale]);\n\n return (\n <FormControl error={touched && !!error}>\n <InputLabel focused={focused}>\n { label }\n </InputLabel>\n <div className={classes.fieldWrap}>\n <Select\n name=\"code\"\n onChange={onChangeCode}\n disableUnderline\n className={classes.phoneField}\n defaultValue={getLocale(locale)}\n value={value.code}\n renderValue={(code) => {\n switch (code) {\n case phoneCode.ru.code:\n return phoneCode.ru.firstLabel;\n case phoneCode.ukr.code:\n return phoneCode.ukr.firstLabel;\n case phoneCode.est.code:\n return phoneCode.est.firstLabel;\n case phoneCode.uz.code:\n return phoneCode.uz.firstLabel;\n case phoneCode.am.code:\n return phoneCode.am.firstLabel;\n case phoneCode.ge.code:\n return phoneCode.ge.firstLabel;\n case phoneCode.kz.code:\n return phoneCode.kz.firstLabel;\n case phoneCode.ae.code:\n return phoneCode.ae.firstLabel;\n case phoneCode.us.code:\n return phoneCode.us.firstLabel;\n case phoneCode.az.code:\n return phoneCode.az.firstLabel;\n case phoneCode.by.code:\n return phoneCode.by.firstLabel;\n case phoneCode.kg.code:\n return phoneCode.kg.firstLabel;\n case phoneCode.tm.code:\n return phoneCode.tm.firstLabel;\n default:\n return phoneCode.ru.firstLabel;\n }\n }}\n >\n {getPhoneCodes(firstCountryKey).map(phoneCode => (\n <MenuItem value={phoneCode.code} key={phoneCode.key}>\n { phoneCode.secondLabel }\n </MenuItem>\n ))}\n </Select>\n <TextField\n name=\"number\"\n fullWidth\n type={type}\n error={touched && !!error}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n value={value.number}\n disabled={!!staticValue || disabled}\n InputProps={{\n readOnly: !!readOnly,\n endAdornment,\n }}\n />\n </div>\n </FormControl>\n );\n};\n\nexport default withStyles(styles)(PhoneFieldComp);\n","import React, { ChangeEvent, PureComponent } from 'react';\nimport { Field } from 'redux-form';\n\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid/Grid';\n\nimport { mergeDateAndTime, itsTomorrow } from '../../helpers/dateHelpers';\nimport PersonSelect from './PersonSelect';\nimport DatePicker from './DatePicker';\nimport { emptyTime } from '../../config/constants';\nimport WidgetReserveTimeSelect from './WidgetReserveTimeSelect';\nimport TextField from '../Common/TextFieldComp';\nimport locales from '../../locales';\nimport TextAreaComp from '../Common/TextAreaComp';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport classNames from 'classnames';\nimport CheckBoxComp from '../Common/CheckBoxComp';\nimport PhoneField from './PhoneField';\n\nconst styles = (theme: Theme) => createStyles({\n fieldStyle: {\n paddingTop: 23,\n },\n wrap: {\n display: 'flex',\n alignItems: 'center',\n },\n content: {\n padding: '0 8px',\n width: '100%',\n },\n tablesNumber: {\n fontSize: '29px',\n marginLeft: 5,\n color: theme.palette.primary.main,\n },\n tablesNumberError: {\n color: '#f44336',\n },\n tablesNumberText: {\n height: 50,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n errorWrap: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n color: theme.palette.text.secondary,\n },\n errorText: {\n position: 'absolute',\n }\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n valueChanged: (date: string, persons: number) => void;\n getSchedule: (date: string) => void;\n scheduleOptions: Array<string>;\n maxPersons: number;\n tables: number;\n freeTablesError: boolean;\n countryCode: string;\n}\n\ninterface IState {\n personsCount: number;\n date: string;\n selectedTime: string;\n agreement: boolean;\n}\n\n// TODO Вынести логику запроса свободных столов в сагу или контейнер формы.\nclass BookingFields extends PureComponent<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n personsCount: 0,\n date: emptyTime,\n selectedTime: emptyTime,\n agreement: false,\n };\n }\n\n onChangeDate = (date: string) => {\n const { getSchedule } = this.props;\n const { selectedTime } = this.state;\n\n this.setState({ date }, this.updateBookingData);\n getSchedule(mergeDateAndTime(date, selectedTime).format());\n };\n\n onChangeTime = (time: string) => {\n this.setState({ selectedTime: time }, this.updateBookingData);\n };\n\n onChangePersonsCount = (personsCount: string) => {\n this.setState({\n personsCount: parseInt(personsCount, 10),\n }, this.updateBookingData);\n };\n\n onChangeAgreement = (checked: boolean) => {\n this.setState({\n agreement: checked,\n }, this.updateBookingData);\n };\n\n updateBookingData() {\n const { date, personsCount, selectedTime } = this.state;\n const { scheduleOptions, valueChanged } = this.props;\n\n if (personsCount && selectedTime && selectedTime !== emptyTime) {\n const mergedDate = mergeDateAndTime(date, selectedTime);\n\n if (itsTomorrow(scheduleOptions[0], selectedTime)) {\n mergedDate.add(1, 'd');\n }\n valueChanged(mergedDate.format(), personsCount);\n }\n }\n\n render() {\n const { personsCount, date, selectedTime } = this.state;\n const { scheduleOptions, maxPersons, tables, freeTablesError, classes, countryCode} = this.props;\n\n return (\n <Grid container spacing={3}>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"persons\"\n component={PersonSelect}\n value={personsCount}\n maxCapacity={maxPersons}\n onChange={\n (e: ChangeEvent<HTMLSelectElement>) => this.onChangePersonsCount(e.target.value)\n }\n />\n </Grid>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"date\"\n component={DatePicker}\n value={date}\n onChange={\n (date: any) => this.onChangeDate(date)\n }\n />\n </Grid>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"time\"\n component={WidgetReserveTimeSelect}\n time={scheduleOptions || []}\n value={selectedTime}\n onChange={\n (e: ChangeEvent<HTMLSelectElement>) => this.onChangeTime(e.target.value)\n }\n />\n </Grid>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"name\"\n component={TextField}\n label={locales.t('common.reserveModal.name')}\n />\n </Grid>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"phone\"\n component={PhoneField}\n label={locales.t('common.reserveModal.phone')}\n locale={countryCode}\n />\n </Grid>\n <Grid item xs={12} sm={4}>\n <Field\n name=\"comment\"\n component={TextAreaComp}\n multiline\n label={locales.t('common.reserveModal.comment')}\n rows={1}\n />\n </Grid>\n <Grid item xs={12} sm={12} className={classes.tablesNumberText}>\n {\n !tables && !freeTablesError ? (\n <Typography\n variant=\"caption\"\n style={{ lineHeight: 1, }}\n >\n { locales.t('common.reserveWidget.tablesForReserveInit') }\n </Typography>\n ) : (\n <Typography\n variant=\"body1\"\n style={{ lineHeight: 1, }}\n >\n { locales.t('common.reserveWidget.tablesForReserve') }\n <span className={\n classNames(\n classes.tablesNumber,\n {[classes.tablesNumberError]: freeTablesError}\n )\n }\n >\n { tables }\n </span>\n </Typography>\n )\n }\n {\n freeTablesError && (\n <div className={classes.errorWrap}>\n <Typography className={classes.errorText} variant=\"caption\" color=\"error\">\n { locales.t('common.reserveWidget.tablesForReserveError') }\n </Typography>\n </div>\n )\n }\n </Grid>\n {/*\n <Grid item xs={12}>\n <Field\n name=\"smsInfo\"\n type=\"checkbox\"\n label={locales.t('common.reserveWidget.smsInfo')}\n component={CheckBoxComp}\n />\n </Grid>\n */}\n <Grid item xs={12} style={{ paddingTop: '12pt', paddingBottom: '18pt' }}>\n <Field\n name=\"agreement\"\n type=\"checkbox\"\n label={\n <Typography variant=\"caption\">\n { locales.t('common.reserveWidget.agreementPhrase1') }\n {' '}\n <a\n href=\"https://guestme.ru/privacy_policy/\"\n style={{ textDecoration: 'underline' }}\n target=\"_blank\"\n >\n { locales.t('common.reserveWidget.agreementPhrase2') }\n </a>\n {' '}\n { locales.t('common.reserveWidget.agreementPhrase3') }\n </Typography>\n }\n component={CheckBoxComp}\n onChange={\n (e: ChangeEvent<HTMLInputElement>) => this.onChangeAgreement(e.target.checked)\n }\n />\n {/*\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n onChange={\n (e: ChangeEvent<HTMLInputElement>) => this.onChangeAgreement(e.target.checked)\n }\n />\n }\n label={\n <Typography variant=\"caption\">\n { locales.t('common.reserveWidget.agreementPhrase1') }\n {' '}\n <a\n href=\"https://guestme.ru/privacy_policy/\"\n style={{ textDecoration: 'underline' }}\n target=\"_blank\"\n >\n { locales.t('common.reserveWidget.agreementPhrase2') }\n </a>\n {' '}\n { locales.t('common.reserveWidget.agreementPhrase3') }\n </Typography>\n }\n />\n */}\n </Grid>\n </Grid>\n );\n }\n}\n\nexport default withStyles(styles)(BookingFields);\n","import React, { PureComponent } from 'react';\nimport { reduxForm } from 'redux-form';\nimport { compose } from 'recompose';\nimport classNames from 'classnames';\n\nimport Button from '@material-ui/core/Button/Button';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core/styles';\nimport { Theme } from \"@material-ui/core\";\n\nimport locales from '../../locales';\n\nimport BookingFields from './BookingFields';\nimport { isFullScreen } from '../../helpers/helpers';\n\nconst styles = (theme: Theme) => createStyles({\n formWrap: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n btnStyle: {\n fontSize: '18px',\n width: '100%',\n height: 52,\n marginBottom: '12px',\n },\n logo: {\n color: theme.palette.text.primary,\n fontWeight: 'bold',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'none',\n color: theme.palette.text.primary,\n }\n },\n provideDesc: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n color: theme.palette.text.hint,\n paddingBottom: 4,\n\n '& .MuiTypography-root': {\n color: theme.palette.text.hint,\n }\n },\n provideDescFullScreen: {\n display: 'block'\n }\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n handleSubmit: (data: any) => void;\n tables: number;\n isLoading: boolean;\n maxPersons: number;\n valueChanged: (date: string, persons: number) => void;\n getSchedule: (date: string) => void;\n scheduleOptions: Array<string>;\n freeTablesError: boolean;\n countryCode: string;\n}\n\nclass BookingForm extends PureComponent<IProps, {}> {\n render() {\n const {\n classes,\n handleSubmit,\n tables,\n isLoading,\n scheduleOptions,\n getSchedule,\n valueChanged,\n maxPersons,\n freeTablesError,\n countryCode,\n } = this.props;\n\n const fullScreen = isFullScreen();\n\n return (\n <form\n className={classes.formWrap}\n onSubmit={handleSubmit}\n >\n <BookingFields\n getSchedule={getSchedule}\n scheduleOptions={scheduleOptions}\n valueChanged={valueChanged}\n maxPersons={maxPersons}\n tables={tables}\n freeTablesError={freeTablesError}\n countryCode={countryCode}\n />\n <div>\n <Button\n disabled={isLoading || freeTablesError}\n className={classes.btnStyle}\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n >\n {locales.t('common.reserveWidget.reserve')}\n { isLoading && <CircularProgress size={20} /> }\n </Button>\n <div\n style={{ textAlign: 'center' }}\n className={classNames(classes.provideDesc, { [classes.provideDescFullScreen]: fullScreen })}\n >\n <Typography variant=\"caption\" style={{ fontSize: 9 }} >\n {locales.t('common.reserveWidget.serviceProvided')}\n \n <a\n className={classes.logo}\n href={\"https://guestme.ru/\"}\n target=\"_blank\"\n >\n GuestMe\n </a>\n \n { `— ${locales.t('common.reserveWidget.serviceProvidedDescription')}` }\n </Typography>\n {/*\n <Typography variant=\"caption\" style={{ fontSize: 9 }} >\n {locales.t('common.reserveWidget.servicePolicyDesc')}\n <a\n href={\"https://guestme.ru/privacy_policy/\"}\n style={{ textDecoration: 'underline' }}\n target=\"_blank\"\n >\n { locales.t('common.reserveWidget.servicePolicyDescLink') }\n </a>\n </Typography>\n */}\n </div>\n </div>\n </form>\n );\n }\n}\n\nconst validate = ({\n name, phone, persons, date, time, agreement,\n}: any) => {\n const errors: any = {};\n\n if (persons === 0) errors.persons = locales.t('common.reserveWidget.formErrors.personsError');\n if (date === '-') errors.date = locales.t('common.reserveWidget.formErrors.dateError');\n if (time === '-') errors.time = locales.t('common.reserveWidget.formErrors.timeError');\n if (!name) errors.name = locales.t('common.reserveWidget.formErrors.nameError');\n if (!phone) errors.phone = locales.t('common.reserveWidget.formErrors.phoneError');\n\n if (!agreement) {\n errors.agreement = locales.t('common.reserveWidget.formErrors.agreementError');\n }\n\n return errors;\n};\n\nexport default compose<any, any>(\n withStyles(styles),\n reduxForm({\n form: 'reserveWidgetForm',\n validate,\n }),\n)(BookingForm);\n","import React, { PureComponent } from 'react';\nimport BookingForm from '../../components/BookingForm';\nimport { IProps } from './IReserveForm';\nimport { itsTomorrow, mergeDateAndTime } from '../../helpers/dateHelpers';\n\nclass ReserveFormCont extends PureComponent<IProps> {\n handleSubmitForm = (data: any): void => {\n const { sendRegistrationRequest, guestBooking, freeTables, scheduleOptions } = this.props;\n\n if (freeTables > 0) {\n const {\n comment, date, name, persons, phone, smsInfo, time\n } = data;\n const { isSecurityEnabled, countryCode } = this.props;\n\n const mergeDate = mergeDateAndTime(date, time);\n\n const dateForReq = itsTomorrow(scheduleOptions[0], time)\n ? mergeDate.add(1, 'day').format()\n : mergeDate.format();\n\n if (!isSecurityEnabled || countryCode !== 'RU') {\n guestBooking({\n comment,\n persons,\n date: mergeDateAndTime(date, time).format(),\n dateForReq,\n time: time,\n fullName: name,\n phone,\n smsNotificationIsEnabled: !!smsInfo,\n });\n } else {\n sendRegistrationRequest({\n comment,\n persons,\n date: mergeDateAndTime(date, time).format(),\n dateForReq,\n time: time,\n fullName: name,\n phone,\n smsNotificationIsEnabled: !!smsInfo,\n });\n }\n }\n };\n\n onBookingFieldsChange = (\n date: string,\n personsCount: number,\n ) => {\n const { getFreeTables } = this.props;\n getFreeTables(date, personsCount);\n };\n\n onScheduleRequest = (date: string) => {\n const { getRestaurantSchedule} = this.props;\n\n getRestaurantSchedule(date);\n };\n\n render() {\n const {\n isLoading,\n freeTables,\n maxPersons,\n scheduleOptions,\n bookingData,\n freeTablesError,\n countryCode,\n } = this.props;\n\n return (\n <BookingForm\n isLoading={isLoading}\n freeTablesError={freeTablesError}\n tables={freeTables}\n maxPersons={maxPersons}\n countryCode={countryCode}\n scheduleOptions={scheduleOptions}\n onSubmit={this.handleSubmitForm}\n valueChanged={this.onBookingFieldsChange}\n getSchedule={this.onScheduleRequest}\n initialValues={{\n persons: bookingData.persons,\n date: bookingData.date,\n time: bookingData.time,\n phone: bookingData.phone,\n name: bookingData.fullName,\n comment: bookingData.comment,\n smsInfo: bookingData.smsNotificationIsEnabled,\n }}\n />\n );\n }\n}\n\nexport default ReserveFormCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport ReserveForm from './ReserveForm';\nimport { IAppStore } from '../../types/IAppStore';\nimport { DispatchProps, StateProps } from './IReserveForm';\nimport { IAppActions } from '../../types/IAppActions';\nimport {\n getFreeTables,\n getMaxPersonCount,\n getRestaurantSchedule,\n} from '../../actions/reserveForm/ReserveFormActions';\nimport {guestBooking, sendRegistrationRequest} from '../../actions/rootWidget/RootWidgetActions';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n return {\n freeTables: state.reserveForm.freeTables,\n freeTablesError: state.reserveForm.freeTablesError,\n maxPersons: state.reserveForm.maxPersons,\n isSecurityEnabled: state.root.restaurantInfo.settings.isSecurityEnabled,\n countryCode: state.root.restaurantInfo.countryCode,\n date: state.reserveForm.date,\n persons: state.reserveForm.persons,\n scheduleOptions: state.reserveForm.scheduleOptions,\n isLoading: state.root.bookingIsProcessing,\n bookingData: state.root.bookingReqData,\n }\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n getFreeTables,\n getMaxPersonCount,\n guestBooking,\n getRestaurantSchedule,\n sendRegistrationRequest,\n }, dispatch)\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReserveForm);\n\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport {\n createStyles, Theme, withStyles,\n} from '@material-ui/core/styles';\nimport { isSafari } from '../../helpers/helpers';\n\nconst styles = (theme: Theme) => createStyles({\n inputsCont: {\n display: 'flex',\n justifyContent: 'center',\n },\n inputField: {\n fontSize: '36px',\n fontFamily: theme.typography.fontFamily,\n fontWeight: 'bold',\n lineHeight: '43px',\n width: '32px',\n margin: '0 16px',\n textAlign: 'center',\n outline: 'none',\n border: 'none',\n color: theme.palette.text.primary,\n background: \"none\",\n borderBottom: `3px solid ${theme.palette.text.primary}`,\n },\n safariInput: {\n fontSize: '20px',\n textAlign: 'start',\n width: '32px',\n }\n});\n\nconst discardNaN = (string?: string) => {\n if (typeof string !== 'string') {\n return '';\n }\n\n let result = '';\n for (let i = 0; i < string.length; i += 1) {\n const char = string[i];\n\n if ((char >= '0' && char <= '9')) {\n result = `${result}${char}`;\n }\n }\n return result;\n};\n\nclass PinCode extends PureComponent<any, any> {\n value: string = '';\n\n textInputs: Array<any> = [];\n\n static propTypes = {\n fieldsCount: PropTypes.number,\n fieldMaxLength: PropTypes.number,\n numberOnly: PropTypes.bool,\n needToClear: PropTypes.bool,\n onChange: PropTypes.func,\n onFullFilled: PropTypes.func,\n };\n\n static defaultProps = {\n numberOnly: false,\n needToClear: false,\n onChange: () => null,\n onFullFilled: () => null,\n fieldsCount: 4,\n fieldMaxLength: 1,\n };\n\n constructor(props: any) {\n super(props);\n const inputs = [];\n\n for (let i = 0; i < props.fieldsCount; i += 1) {\n inputs[i] = '';\n }\n this.state = { inputs };\n }\n\n componentDidMount() {\n this.textInputs[0].focus();\n }\n\n handleKeyDown = (e: any) => {\n const element = e.target;\n const currentId = parseInt(element.dataset.id, 10);\n const prevElement = currentId > 0 ? this.textInputs[currentId - 1] : null;\n\n if (\n e.keyCode === 8\n && !element.value\n && prevElement\n ) {\n prevElement.focus();\n }\n };\n\n handleInput = (e: any) => {\n const { fieldMaxLength, numberOnly } = this.props;\n const { inputs } = this.state;\n const element = e.target;\n const currentId = parseInt(element.dataset.id, 10);\n let nextElement = this.textInputs[currentId + 1];\n const neWinputs = inputs.slice();\n let { value } = element;\n\n if (numberOnly && typeof value !== 'number') {\n value = discardNaN(value);\n }\n\n while (nextElement && nextElement.value && nextElement.value.length >= fieldMaxLength) {\n nextElement = this.textInputs[parseInt(nextElement.dataset.id, 10) + 1];\n }\n\n if (value.length === fieldMaxLength && nextElement) {\n nextElement.focus();\n }\n\n if (value.length > fieldMaxLength) {\n const newValue = value.substr(0, value.length - 1);\n const rest = value.substr(-1);\n\n value = newValue;\n\n if (nextElement) {\n neWinputs[nextElement.dataset.id] = `${neWinputs[nextElement.dataset.id]}${rest}`;\n nextElement.focus();\n }\n }\n\n neWinputs[currentId] = value;\n this.setState({ inputs: neWinputs });\n this.value = neWinputs.join('');\n this.handleChange(this.value);\n };\n\n handleChange = (value: string) => {\n const { onChange, onFullFilled, needToClear, fieldsCount } = this.props;\n\n onChange(value);\n\n if (this.isFullFilled()) {\n onFullFilled(value);\n if (needToClear) {\n this.setState({ inputs: Array(fieldsCount).fill('') });\n this.value = ''\n this.textInputs[0].focus();\n };\n }\n };\n\n isFullFilled = () => {\n const { fieldMaxLength, fieldsCount } = this.props;\n\n return String(this.value).length === fieldMaxLength * fieldsCount;\n };\n\n render() {\n const { fieldMaxLength, numberOnly, classes } = this.props;\n const { inputs } = this.state;\n const safariStyles = isSafari();\n\n return (\n <div className={classes.inputsCont}>\n {\n inputs.map((value: string, i: number) => (\n <input\n className={classNames(classes.inputField, {[classes.safariInput]: safariStyles})}\n ref={(ref) => {\n this.textInputs[i] = ref;\n }}\n data-id={i}\n type={numberOnly ? 'tel' : 'text'}\n tabIndex={i + 1}\n maxLength={fieldMaxLength}\n value={value}\n onInput={this.handleInput}\n onKeyDown={this.handleKeyDown}\n key={`code-${i}`}\n />\n ))\n }\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(PinCode);\n","import React, { PureComponent } from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button/Button';\nimport {\n createStyles, Theme, withStyles, WithStyles,\n} from '@material-ui/core/styles';\n\nimport locales from '../../locales';\nimport PinCode from './PinCode';\n\nconst styles = (theme: Theme) => createStyles({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n flex: 1,\n padding: '40px 16px',\n maxWidth: '470px',\n margin: '0 auto',\n },\n phone: {\n marginBottom: '32px',\n },\n btnStyle: {\n marginTop: '40px',\n width: '100%',\n height: 52,\n fontSize: '18px',\n },\n timeLeft: {\n marginTop: '24px',\n opacity: '.7',\n color: theme.palette.text.hint,\n },\n errorMessage: {\n marginTop: '24px',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n timeLeftFromReq: number;\n phoneNumber?: string;\n errorMessage: string;\n handleSendSmsCode: () => void;\n handleVerifySmsCode: (code: string) => void;\n}\n\ninterface IState {\n timeLeft: number;\n showResend: boolean;\n}\n\nclass SMSCodeForm extends PureComponent<IProps, IState> {\n interval: number = 0;\n\n constructor(props: any) {\n super(props);\n this.state = {\n timeLeft: 99,\n showResend: false,\n };\n }\n\n componentDidMount() {\n this.startResendTimer();\n }\n\n componentWillUnmount() {\n clearInterval(this.interval);\n }\n\n startResendTimer() {\n const { timeLeftFromReq } = this.props;\n\n this.setState({\n showResend: false,\n timeLeft: timeLeftFromReq,\n });\n\n this.interval = window.setInterval(this.tick, 1000);\n }\n\n onClickResendSms() {\n const { handleSendSmsCode } = this.props;\n handleSendSmsCode();\n this.startResendTimer();\n }\n\n onFullFilled(code: string) {\n const { handleVerifySmsCode } = this.props;\n handleVerifySmsCode(code);\n }\n\n tick = () => {\n const { timeLeft } = this.state;\n const { timeLeftFromReq } = this.props;\n\n if (timeLeft <= 0) {\n clearInterval(this.interval);\n this.setState({\n showResend: true,\n timeLeft: timeLeftFromReq,\n });\n } else {\n this.setState({\n timeLeft: timeLeft - 1,\n });\n }\n };\n\n render() {\n const { classes, phoneNumber, errorMessage } = this.props;\n const { showResend, timeLeft } = this.state;\n\n return (\n <div className={classes.container}>\n <Typography variant=\"subtitle1\" align=\"center\">\n {locales.t('common.reserveWidget.enterCode')}\n </Typography>\n <Typography variant=\"subtitle1\" align=\"center\" className={classes.phone}>\n <b>{ phoneNumber }</b>\n </Typography>\n <PinCode\n numberOnly\n needToClear\n onFullFilled={(code: string) => this.onFullFilled(code)}\n />\n {!showResend && (\n <Typography variant=\"subtitle1\" align=\"center\" className={classes.timeLeft}>\n {locales.t('common.reserveWidget.resendMessage')}\n <b>{locales.t('common.reserveWidget.resendMessageSec', { seconds: timeLeft })}</b>\n </Typography>\n )} \n {errorMessage && (\n <Typography variant=\"subtitle1\" align=\"center\" className={classes.errorMessage} color=\"error\">\n { errorMessage }\n </Typography>\n )}\n {showResend && (\n <Button\n className={classes.btnStyle}\n onClick={() => this.onClickResendSms()}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n {locales.t('common.reserveWidget.receiveSms')}\n </Button>\n )}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(SMSCodeForm);\n","import React, { PureComponent } from 'react';\n\nimport { IProps } from './ISmsCodeFormCont';\nimport SMSCodeForm from '../../components/SMSCodeForm';\n\nclass SmsCodeForm extends PureComponent<IProps, {}> {\n render() {\n const {\n resendRegistrationRequest,\n verifySmsCode,\n timeLeft,\n smsCodeError,\n phoneNumber,\n } = this.props;\n\n return (\n <SMSCodeForm\n phoneNumber={phoneNumber}\n handleSendSmsCode={resendRegistrationRequest}\n handleVerifySmsCode={verifySmsCode}\n timeLeftFromReq={timeLeft}\n errorMessage={smsCodeError}\n />\n );\n }\n}\n\nexport default SmsCodeForm\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './ISmsCodeFormCont';\n\nimport {\n verifySmsCode,\n resendRegistrationRequest,\n} from '../../actions/rootWidget/RootWidgetActions';\nimport SmsCodeForm from './SmsCodeForm';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n timeLeft,\n smsCodeError,\n bookingReqData,\n } = state.root;\n\n return {\n timeLeft,\n smsCodeError,\n phoneNumber: bookingReqData.phone,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n verifySmsCode,\n resendRegistrationRequest,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SmsCodeForm);\n","import React from 'react';\n\nimport {\n createStyles,\n Theme,\n WithStyles,\n withStyles\n} from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Typography from '@material-ui/core/Typography';\n\nimport locales from '../../locales';\n\nconst styles = (theme: Theme) => createStyles({\n processCont: {\n padding: '100px 48px 44px',\n maxWidth: '500px',\n margin: '0 auto',\n textAlign: 'center',\n },\n processText: {\n fontSize: '16px',\n color: theme.palette.text.primary,\n margin: '24px 0 42px',\n },\n processCancel: {\n width: '100%',\n height: 52,\n fontSize: '18px',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n bookingIsProcessing: boolean;\n handleDeleteBooking: () => void;\n}\n\nconst Index: React.FC<IProps> = ({classes, bookingIsProcessing, handleDeleteBooking}) => (\n <div className={classes.processCont}>\n <CircularProgress size={48} />\n <Typography\n className={classes.processText}\n color=\"initial\"\n variant=\"body1\"\n >\n { bookingIsProcessing\n ? locales.t('common.reserveWidget.queueProcessing')\n : locales.t('common.reserveWidget.requestProcessing')\n }\n </Typography>\n <Button\n onClick={handleDeleteBooking}\n size=\"large\"\n className={classes.processCancel}\n variant=\"contained\"\n color=\"primary\"\n >\n {locales.t('common.cancel')}\n </Button>\n </div>\n);\n\nexport default withStyles(styles)(Index);\n","import React, { PureComponent } from 'react';\n\nimport { IProps } from './IReserveProcessingCont';\nimport ReserveProcessing from '../../components/ReserveProcessing';\n\nclass ReserveProcessingCont extends PureComponent<IProps, {}> {\n /** @description Ручка для отмены брони */\n handleDeleteBooking = () => {\n const {\n bookingId,\n deleteBooking,\n } = this.props;\n\n if (bookingId) {\n deleteBooking(bookingId);\n }\n };\n\n render() {\n const {\n bookingIsProcessing,\n } = this.props;\n\n return (\n <ReserveProcessing\n handleDeleteBooking={this.handleDeleteBooking}\n bookingIsProcessing={bookingIsProcessing}\n />\n );\n }\n}\n\nexport default ReserveProcessingCont\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './IReserveProcessingCont';\n\nimport {\n deleteBooking,\n} from '../../actions/rootWidget/RootWidgetActions';\nimport ReserveProcessingCont from './ReserveProcessingCont';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n bookingIsProcessing,\n bookingId,\n widgetId\n } = state.root;\n\n return {\n widgetId,\n bookingIsProcessing,\n bookingId,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n deleteBooking,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReserveProcessingCont);\n","import React from 'react';\nimport moment from 'moment';\n\nimport {\n createStyles,\n Theme,\n WithStyles,\n withStyles\n} from '@material-ui/core/styles';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport GroupIcon from '@material-ui/icons/Group';\nimport Paper from '@material-ui/core/Paper';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\n\nimport locales from '../../locales';\nimport { TRestaurant } from '../../types/IRootWidgetStore';\n\nconst styles = (theme: Theme) => createStyles({\n confirmedPaper: {\n padding: '20px 24px',\n textAlign: 'left',\n },\n confirmedInfo: {\n margin: '20px 0 8px',\n },\n confirmedCell: {\n display: 'flex',\n alignItems: 'center',\n padding: '4px 0',\n color: theme.palette.text.primary,\n },\n confirmedIcon: {\n marginRight: '8px',\n },\n subtitle2: {\n color: theme.palette.text.primary,\n },\n caption: {\n color: theme.palette.text.hint,\n }\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n bookingData: any\n restaurantInfo: TRestaurant,\n}\n\nconst ReserveInfo: React.FC<IProps> = ({\n classes,\n bookingData,\n restaurantInfo,\n}) => {\n const { persons, date, fullName, phone } = bookingData;\n\n return (\n <Paper className={classes.confirmedPaper} elevation={3}>\n <Typography variant=\"subtitle2\" className={classes.subtitle2}>\n { restaurantInfo.name }\n </Typography>\n <Typography variant=\"caption\" className={classes.caption}>\n { restaurantInfo.address }\n </Typography>\n <Grid container className={classes.confirmedInfo}>\n <Grid item xs={7} sm={6} className={classes.confirmedCell}>\n <GroupIcon color=\"primary\" fontSize=\"small\" className={classes.confirmedIcon} />\n <Typography color=\"initial\" variant=\"body2\">\n { persons } {locales.t('common.reserveWidget.personSuffix')}\n </Typography>\n </Grid>\n <Grid item xs={5} sm={6} className={classes.confirmedCell}>\n <Typography color=\"initial\" variant=\"body2\">\n { fullName }\n </Typography>\n </Grid>\n <Grid item xs={7} sm={6} className={classes.confirmedCell}>\n <AccessTimeIcon color=\"primary\" fontSize=\"small\" className={classes.confirmedIcon} />\n <Typography variant=\"body2\">\n { moment(date).format('DD MMMM, HH:mm') }\n </Typography>\n </Grid>\n <Grid item xs={5} sm={6} className={classes.confirmedCell}>\n <Typography variant=\"body2\">\n { phone }\n </Typography>\n </Grid>\n </Grid>\n </Paper>\n );\n};\n\nexport default withStyles(styles)(ReserveInfo);\n","import React, { PureComponent } from 'react';\n\nimport {\n createStyles,\n Theme,\n WithStyles,\n withStyles\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography/Typography';\n\nimport locales from '../../locales';\nimport ReserveInfo from '../Common/ReserveInfo';\n\nconst styles = (theme: Theme) => createStyles({\n successCont: {\n maxWidth: '450px',\n margin: '0 auto',\n textAlign: 'center',\n paddingTop: '32px',\n },\n restaurantInfoWrap: {\n textAlign: 'center',\n marginTop: 33,\n },\n body1: {\n color: theme.palette.text.primary,\n }\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n bookingReqData: any\n restaurantInfo: any;\n}\n\nclass Index extends PureComponent<IProps> {\n render() {\n const {\n classes,\n bookingReqData,\n restaurantInfo,\n } = this.props;\n\n return (\n <div className={classes.successCont}>\n <Typography color=\"primary\" variant=\"h5\">\n {locales.t('common.reserveWidget.confirmedTitle')}\n </Typography>\n <Typography variant=\"body1\" className={classes.body1}>\n {locales.t('common.reserveWidget.confirmedDesc')}\n </Typography>\n <div className={classes.restaurantInfoWrap}>\n <ReserveInfo\n restaurantInfo={restaurantInfo}\n bookingData={bookingReqData}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Index);\n","import React, { PureComponent } from 'react';\n\nimport { IProps } from './IReserveSuccess';\nimport ReserveSuccess from '../../components/ReserveSuccess';\n\nclass RootWidget extends PureComponent<IProps, {}> {\n render() {\n const {\n restaurantInfo,\n bookingReqData,\n } = this.props;\n\n return (\n <ReserveSuccess\n bookingReqData={bookingReqData}\n restaurantInfo={restaurantInfo}\n />\n );\n }\n}\n\nexport default RootWidget\n","import { connect } from 'react-redux';\n\nimport ReserveSuccessCont from \"./ReserveSuccessCont\"\nimport { IAppStore } from '../../types/IAppStore';\nimport { StateProps } from './IReserveSuccess';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n restaurantInfo,\n bookingReqData,\n } = state.root;\n\n return {\n restaurantInfo,\n bookingReqData,\n };\n}\n\nexport default connect(mapStateToProps, {})(ReserveSuccessCont);\n","import React from 'react';\n\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core/styles';\nimport CancelSharpIcon from '@material-ui/icons/CancelSharp';\nimport Typography from '@material-ui/core/Typography';\n\nimport locales from '../../locales';\n\nconst styles = createStyles({\n wrap: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n cancelSharpIcon: {\n fontSize: '58px',\n margin: '72px 0 12px',\n },\n msgWrap: {\n maxWidth: 420,\n textAlign: 'center',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {}\n\nconst UnknownError: React.FC<IProps> = ({ classes }) => (\n <div className={classes.wrap}>\n <CancelSharpIcon color=\"error\" className={classes.cancelSharpIcon} />\n <div className={classes.msgWrap}>\n <Typography variant=\"subtitle1\" color=\"error\">\n {locales.t('common.reserveWidget.declineDesc')}\n </Typography>\n </div>\n </div>\n);\n\nexport default withStyles(styles)(UnknownError);\n","import React from 'react';\n\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\n\nimport locales from '../../locales';\nimport ReserveInfo from '../Common/ReserveInfo';\n\nconst styles = createStyles({\n wrap: {\n maxWidth: '450px',\n margin: '0 auto',\n textAlign: 'center',\n },\n restaurantInfoWrap: {\n textAlign: 'center',\n marginTop: 20,\n }\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n restaurantInfo?: any;\n bookingData: any;\n}\n\nconst ActiveReserveError: React.FC<IProps> = (props) => {\n const {\n classes,\n restaurantInfo,\n bookingData,\n } = props;\n return (\n <div className={classes.wrap}>\n <Typography color=\"error\" variant=\"h6\">\n {locales.t('common.errors.reserveWidget.activeReserve')}\n </Typography>\n <Typography variant=\"body2\">\n {locales.t('common.errors.reserveWidget.activeReserveDesc')} { restaurantInfo.phone }\n </Typography>\n <div className={classes.restaurantInfoWrap}>\n <Typography variant=\"body2\" style={{ marginBottom: 8 }}>\n {locales.t('common.reserveWidget.yourCurrentReserve')}\n </Typography>\n <ReserveInfo\n restaurantInfo={restaurantInfo}\n bookingData={bookingData}\n />\n </div>\n </div>\n );\n};\n\nexport default withStyles(styles)(ActiveReserveError);\n","import React, { Component } from 'react';\n\nimport DialogContent from '@material-ui/core/DialogContent';\n\nimport { IProps } from './IErrorCont';\nimport { errorType } from '../../config/constants';\nimport UnknownError from '../../components/Errors/UnknownError';\nimport ActiveReserveError from '../../components/Errors/ActiveReserveError';\n\nclass ErrorCont extends Component<IProps> {\n render() {\n const { bookingError, restaurantInfo } = this.props;\n let errorBody = <UnknownError />;\n\n if (bookingError) {\n switch (bookingError.type) {\n case errorType.activeReserve: {\n errorBody = (\n <ActiveReserveError\n restaurantInfo={restaurantInfo}\n bookingData={bookingError.bookingData}\n />\n );\n break;\n }\n default: {\n errorBody = (\n <UnknownError />\n );\n break;\n }\n }\n }\n\n return (\n <DialogContent>\n { errorBody }\n </DialogContent>\n );\n }\n}\n\nexport default ErrorCont;\n","import { connect } from 'react-redux';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { StateProps } from './IErrorCont';\n\nimport ErrorCont from './ErrorCont';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n widgetState,\n bookingError,\n restaurantInfo\n } = state.root;\n\n return {\n widgetState,\n bookingError,\n restaurantInfo,\n };\n}\n\nexport default connect(mapStateToProps, {})(ErrorCont);\n","import React, { PureComponent } from 'react';\n\nimport { withStyles } from '@material-ui/core';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\n\nimport styles from './styles';\nimport locales from '../../locales';\nimport { IProps } from './IRootWidget';\nimport { reserveWidgetState } from '../../config/constants';\nimport ReserveForm from '../ReserveFormCont';\nimport SMSCodeForm from '../SmsCodeFormCont';\nimport ReserveProcessing from '../ReserveProcessingCont';\nimport ReserveSuccess from '../ReserveSuccessCont';\nimport ErrorCont from '../ErrorCont';\nimport { isFullScreen } from '../../helpers/helpers';\nimport { fallbackValue } from '../../helpers/constants'\n\nclass RootWidget extends PureComponent<IProps, {}> {\n render() {\n const {\n classes,\n widgetState,\n restaurantInfo,\n } = this.props;\n\n let widgetContent = null;\n\n switch (widgetState) {\n case reserveWidgetState.FORM_STATE:\n widgetContent = (\n <ReserveForm />\n );\n break;\n\n case reserveWidgetState.SMS_VERIFY_STATE:\n widgetContent = (\n <SMSCodeForm />\n );\n break;\n\n case reserveWidgetState.PROCESSING_STATE:\n widgetContent = (\n <ReserveProcessing />\n );\n break;\n\n case reserveWidgetState.SUCCESS_STATE:\n widgetContent = (\n <ReserveSuccess />\n );\n break;\n case reserveWidgetState.ERROR: {\n widgetContent = (\n <ErrorCont />\n );\n break;\n }\n default:\n widgetContent = null;\n break;\n }\n\n return (\n <Dialog\n aria-labelledby=\"form-dialog-title\"\n maxWidth=\"md\"\n fullWidth\n fullScreen={isFullScreen()}\n scroll=\"body\"\n open\n >\n { (restaurantInfo.settings || fallbackValue.settings).isShowHeader\n ? (\n <DialogTitle className={classes.title}>\n {`${locales.t('common.reserveWidget.reserveTitle')} ${restaurantInfo.name}`}\n </DialogTitle>\n )\n : null}\n <DialogContent className={classes.content}>\n { widgetContent }\n </DialogContent>\n </Dialog>\n );\n }\n}\n\nexport default withStyles(styles)(RootWidget)\n","import { createStyles } from '@material-ui/core';\nimport { Theme } from \"@material-ui/core/styles\";\n\nexport default (theme: Theme) => createStyles({\n content: {\n minHeight: 371,\n paddingTop: 12,\n display: 'flex',\n color: theme.palette.text.primary,\n },\n title: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n});\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './IRootWidget';\n\nimport {\n verifySmsCode,\n guestBooking,\n deleteBooking,\n sendRegistrationRequest,\n} from '../../actions/rootWidget/RootWidgetActions';\nimport RootWidget from './RootWidget';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n widgetState,\n restaurantInfo,\n } = state.root;\n\n return {\n widgetState,\n restaurantInfo,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n verifySmsCode,\n guestBooking,\n deleteBooking,\n sendRegistrationRequest,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RootWidget);\n","import React, { Fragment } from 'react';\nimport CssBaseline from '@material-ui/core/CssBaseline';\n\nimport ReserveWidget from '../RootWidgetCont';\nimport { Route } from 'react-router';\n\nconst AppComp: React.FC<{}> = () => (\n <Fragment>\n <CssBaseline />\n <Route path={'/:key'} component={ReserveWidget} />\n </Fragment>\n);\n\nexport default AppComp;\n","import React from 'react';\nimport { Provider } from 'react-redux';\n\nimport { ConnectedRouter as Router } from 'connected-react-router';\nimport 'typeface-roboto';\nimport history from '../../redux/history';\nimport store from '../../redux';\nimport ShowIfInitialized from \"./ShowIfInitializedComp\";\nimport ThemeComp from './ThemeComp';\nimport AppComp from './AppComp';\n\nconst App = () => (\n <Provider store={store}>\n <Router history={history}>\n <ShowIfInitialized>\n <ThemeComp>\n <AppComp />\n </ThemeComp>\n </ShowIfInitialized>\n </Router>\n </Provider>\n);\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\n\nimport './index.css';\nimport App from './containers/App/App';\n\nconst { REACT_APP_SENTRY_DSN, REACT_APP_NAME, REACT_APP_VERSION } = process.env;\n\nif (REACT_APP_SENTRY_DSN) {\n const sentryConfig = {\n dsn: REACT_APP_SENTRY_DSN,\n environment: process.env.NODE_ENV,\n integrations: [\n new Integrations.BrowserTracing(),\n ],\n tracesSampleRate: 0.5,\n };\n\n if (REACT_APP_NAME && REACT_APP_VERSION) {\n sentryConfig.release = `${REACT_APP_NAME}@${REACT_APP_VERSION}`;\n }\n\n Sentry.init(sentryConfig);\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n"],"sourceRoot":""}