{"version":3,"sources":["images/logo_for_app_surplusV1.jpg","components/Header/index.js","components/Loader/index.js","services/scheduler/constants.js","services/create_schedule/constants.js","services/pickup_slot/constants.js","services/scheduler/utils.js","services/scheduler/reducer.js","services/create_calendar/constants.js","services/create_calendar/reducer.js","services/create_schedule/reducer.js","services/pickup_slot/reducer.js","services/redirect/constants.js","services/redirect/reducer.js","services/loader/constants.js","services/loader/reducer.js","store.js","components/SlotPicker/DayCell.js","components/SlotPicker/index.js","components/DatePicker/index.js","components/Messages/index.js","components/SlotPicker/HourSlots.js","components/Scheduler/index.js","url_constants.js","services/create_schedule/api.js","utils/thunk_utils.js","services/create_schedule/actions.js","components/SubmitButton/index.js","utils/yup.js","pages/CreateSchedule/schema.js","pages/CreateSchedule/InviteForm.js","components/NotificationModal/index.js","components/ConfirmationPopup/index.js","components/PagePreloader/index.js","components/ActionButton/index.js","components/PhoneNumberInput/index.js","components/ContactForm/index.js","components/ContactInfo/index.js","utils/constants.js","components/AddressForm/SearchBox.js","components/AddressForm/GoogleMap.js","utils/geocode.js","components/AddressForm/AddressModal.js","pages/CreateSchedule/index.js","components/Form/schema.js","components/Form/index.js","services/create_calendar/api.js","pages/CreateCalendar/index.js","services/create_calendar/actions.js","pages/PickupSlot/PickupForm.js","services/pickup_slot/api.js","pages/PickupSlot/index.js","services/pickup_slot/actions.js","pages/FinalPage/index.js","components/RedirectHandler/index.js","root.js","serviceWorker.js","index.js"],"names":["module","exports","Header","eventName","useSelector","state","scheduleCreationData","slotPickupData","eventNameHtml","className","alt","src","logo","ColorLinearProgress","withStyles","colorPrimary","backgroundColor","barColorPrimary","LinearProgress","visible","loader","getSanitizedSchedule","schedules","isEmpty","JSON","parse","reduce","acc","cur","date","time","getSchedulesJSON","schedule","data","key","length","push","hasEmptyDays","hourSlots","Object","values","some","el","initialState","activeDateSlot","address","removeProp","obj","newObj","k","getNewSchedule","newSchedule","isMulti","keys","activeDay","slots","scheduler","action","type","constants","undefined","createScheduleConst","scheduleJSON","buyerSchedules","addressName","pickupSlotConst","error","pending","createCalendar","newEvent","sentAt","isSuccesMessageVisible","isCancelMessageVisible","specialInstructions","isUpdateMode","createSchedule","name","schedulesJSON","rest","isActive","value","pickupSchedule","calendarContent","isTimeProposal","isBooked","buyerEmail","receiver","REDIRECT_TO","url","SHOW_LOADER","HIDE_LOADER","middleware","thunk","logger","store","createStore","combineReducers","calendarCreationData","redirect","applyMiddleware","DayCell","checkIsEmpty","setActiveDate","dispatch","useDispatch","classNames","selectedTimeSlotsAmount","selectedDays","selectedDay","selectedDaysAmount","useEffect","actionConstants","onClick","SlotPicker","map","day","IsCheckInCurrentDay","DatePicker","format","onChange","modifiers","readOnly","moment","toDate","onDayClick","disabled","disabledDays","before","Date","SuccessMessage","title","iconSize","style","fontSize","InfoMessage","title2","extendMoment","Moment","HourSlots","step","dateRange","selectedSlots","multiselect","customTimeSlots","getSortedTimeSlot","array","sort","a","b","a1","_d","b1","handleChange","useCallback","slot","includes","filter","getEmptyMessage","Array","isArray","range","by","m","getSlots","isAfter","replace","Scheduler","submitSenderer","hoursMultiselect","datePickerModifiers","IsSeller","IsBuyer","useState","isSlotEmpty","setIsSlotEmpty","setSelectedDay","hasOwnProperty","checkDateExists","isvalid","checkEmptySlotOrNot","isCheckCurrentDay","showSlot","isSelectedSlot","numberOfMonths","EVENT","axios","method","id","createAsyncAction","fn","opt","result","options","requestData","requestOptions","start","finish","loaderConstants","event","redirectConstants","Error","api","updateSchedule","cancelSchedule","confirmSchedule","onValueChange","SubmitButton","root","color","lightBlue","fontFamily","Button","disableError","restProps","Tooltip","variant","endIcon","yup","mixed","default","path","required","string","email","max","object","shape","InviteForm","inactiveMessage","onSubmit","readOnlyOptions","onInstructionsChange","additionalFieldsRenderer","warningMessage","sellerEmail","defaultEmailValue","defaultInstructionsValue","setEmail","setError","instructions","setInstructions","handleSubmit","schema","validate","abortEarly","then","catch","err","inner","errors","TextField","margin","label","fullWidth","e","target","helperText","multiline","rowsMax","NotificationModal","isOpened","handleClose","titleRenderer","descriptionRenderer","Dialog","open","onClose","aria-labelledby","DialogTitle","DialogContent","DialogActions","ConfirmationPopup","opened","handleConfirm","description","aria-describedby","DialogContentText","autoFocus","ActionButton","brown","NumberFormatCustom","props","inputRef","other","getInputRef","formattedValue","mask","PhoneNumberInput","InputProps","inputComponent","ContactForm","setName","phone","setPhone","setExtension","extension","Grid","container","spacing","item","xs","md","inputProps","maxLength","pattern","ContactInfo","API_KEY","StandaloneSearchBox","compose","withProps","googleMapURL","loadingElement","height","containerElement","flexGrow","minHeight","mapElement","withScriptjs","withGoogleMap","onMapClick","onMarkerClick","defaultCenter","lat","lng","defaultZoom","draggableCursor","draggingCursor","position","require","lifecycle","componentWillMount","refs","this","setState","places","onSearchBoxMounted","ref","searchBox","onPlacesChanged","getPlaces","data-standalone-searchbox","bounds","placeholder","onInputChange","Geocode","setApiKey","setLanguage","enableDebug","makeStyles","theme","appBar","marginLeft","flex","React","forwardRef","Slide","direction","CreateSchedule","bookedAt","isModalVisible","sellerName","sellerPhone","sellerPhoneExtension","buyerName","buyerPhone","buyerPhoneExtension","eventAddress","city","zipcode","eventId","match","params","guid","cancelOpened","toggleCancelModalState","setWarningMessage","isSubmitted","setSubmitFlag","hasSomeSlots","getContactInfo","info","formData","isSellerUpdate","datetime","split","toISOString","userSelectedDatetime","isReadOnlyMode","flag","toggleUpdateMode","commonChange","contactFormRenderer","console","log","PagePreloader","marginBottom","utc","local","href","isSeller","isBuyer","Form","setEventName","setErrors","CreateCalendar","PickupForm","inactive","submitTitle","getDisableError","PickupSlot","isModalOpened","defaultBuyerName","defaultBuyerPhone","defaultBuyerPhoneExtension","setBuyerName","setBuyerPhone","setBuyerPhoneExtension","contactInfo","sendPickupData","window","location","reload","schedulerConstants","isWhat","getLastMessage","fullAddress","getAddress","withRouter","history","Root","Loader","RedirectHandler","exact","to","component","FinalPage","Boolean","hostname","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.6f9ba027.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo_for_app_surplusV1.fa480b3d.jpg\";","import React from 'react';\r\n//import logo from '../../logo.jpeg'\r\nimport logo from '../../images/logo_for_app_surplusV1.jpg'\r\nimport { useSelector } from 'react-redux';\r\n\r\nconst Header = () => {\r\n const eventName = useSelector(state => state.scheduleCreationData.eventName || state.slotPickupData.eventName);\r\n const eventNameHtml = eventName ?

{eventName}

: null;\r\n\r\n return (\r\n
\r\n logo\r\n {\r\n //
\r\n //

Department of Administrative Services

\r\n //

Surplus Scheduler

\r\n //
\r\n }\r\n\r\n {eventNameHtml}\r\n
\r\n );\r\n}\r\n\r\nexport default Header;","import React from 'react'\r\nimport {useSelector} from 'react-redux';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\nconst ColorLinearProgress = withStyles({\r\n colorPrimary: {\r\n backgroundColor: '#fff',\r\n },\r\n barColorPrimary: {\r\n backgroundColor: '#2e7d32',\r\n },\r\n})(LinearProgress);\r\n\r\nexport default () => {\r\n const visible = useSelector(state => state.loader.visible);\r\n return (\r\n
\r\n {visible && }\r\n
\r\n );\r\n};","export default {\r\n TOGGLE_DAY: 'TOGGLE_DAY',\r\n TOGGLE_SLOT: 'TOGGLE_SLOT',\r\n SET_ACTIVE_DAY_SLOT: 'SET_ACTIVE_DAY_SLOT',\r\n RESET_SCHEDULER_STATE: 'RESET_SCHEDULER_STATE',\r\n SET_ADDRESS: 'SET_ADDRESS',\r\n CONFIRM_SCHEDULE: 'CONFIRM_SCHEDULE',\r\n}","export default {\r\n CREATE_SCHEDULE: 'CREATE_SCHEDULE',\r\n UPDATE_SCHEDULE: 'UPDATE_SCHEDULE',\r\n CANCEL_SCHEDULE: 'CANCEL_SCHEDULE',\r\n CONFIRM_SCHEDULE: 'CONFIRM_SCHEDULE',\r\n GET_SCHEDULE: 'GET_SCHEDULE',\r\n RESET_SCHEDULE_CREATION_DATA: 'RESET_SCHEDULE_CREATION_DATA',\r\n HIDE_SCHEDULE_CREATION_SUCCESS_MESSAGE: 'HIDE_SCHEDULE_CREATION_SUCCESS_MESSAGE',\r\n TOGGLE_UPDATE_MODE: 'TOGGLE_UPDATE_MODE',\r\n ON_VALUE_CHANGE: 'ON_VALUE_CHANGE',\r\n}","export default {\r\n GET_PICKUP_DATA: 'GET_PICKUP_DATA',\r\n SEND_PICKUP_DATA: 'SEND_PICKUP_DATA',\r\n PROPOSE_NEW_TIME: 'PROPOSE_NEW_TIME',\r\n SET_TIME_PROPOSAL_MODE: 'SET_TIME_PROPOSAL_MODE',\r\n TOGGLE_SUCCESS_MESSAGE: 'TOGGLE_SUCCESS_MESSAGE',\r\n}","export const getSanitizedSchedule = (schedules, isEmpty = false) => {\r\n return (JSON.parse(schedules) || []).reduce((acc, cur) => {\r\n return {...acc, [cur.date]: isEmpty ? [] : cur.time}\r\n }, {})\r\n};\r\n\r\nexport const getSchedulesJSON = (schedule) => {\r\n const data = [];\r\n for (let key in schedule) {\r\n if (!schedule[key].length) continue;\r\n data.push({\r\n date: key,\r\n time: schedule[key]\r\n })\r\n }\r\n return data;\r\n};\r\n\r\nexport const hasEmptyDays = (schedule) => {\r\n const hourSlots = Object.values(schedule);\r\n\r\n return hourSlots.length && hourSlots.some(el => !el.length);\r\n};","import constants from './constants';\r\nimport createScheduleConst from './../create_schedule/constants';\r\nimport pickupSlotConst from './../pickup_slot/constants';\r\nimport {getSanitizedSchedule} from './utils';\r\n\r\nconst initialState = {\r\n activeDateSlot: null,\r\n schedule: {},\r\n address: null,\r\n}\r\n\r\nconst removeProp = (key, obj) => {\r\n const newObj = {};\r\n for (let k in obj) {\r\n if (k === key) continue;\r\n newObj[k] = obj[k];\r\n }\r\n return newObj;\r\n}\r\n\r\nconst getNewSchedule = (schedule, data) => {\r\n let newSchedule = {};\r\n if (!data.isMulti) {\r\n newSchedule = Object.keys(schedule).reduce((acc, cur) => {\r\n return {...acc, [cur]: []}\r\n }, {})\r\n } else {\r\n newSchedule = {...schedule};\r\n }\r\n\r\n return {\r\n ...newSchedule,\r\n [data.activeDay]: data.slots\r\n }\r\n}\r\n\r\nconst scheduler = (state = initialState, action) => {\r\n switch (action.type) {\r\n case constants.SET_ACTIVE_DAY_SLOT:\r\n return {...state, activeDateSlot: action.data}\r\n case constants.TOGGLE_DAY:\r\n return {\r\n ...state,\r\n schedule: state.schedule[action.data]\r\n ? removeProp(action.data, state.schedule)\r\n : {...state.schedule, [action.data]: []},\r\n activeDateSlot: state.activeDateSlot === action.data\r\n // ? null\r\n //? state.activeDateSlot\r\n ? Object.keys(state.schedule).length > 1 ? (Object.keys(state.schedule)[Object.keys(state.schedule).length - 1] == state.activeDateSlot ? Object.keys(state.schedule)[Object.keys(state.schedule).length - 2] : state.activeDateSlot) : state.activeDateSlot\r\n : (state.schedule[action.data] === undefined) ? action.data: state.activeDateSlot\r\n }\r\n case constants.TOGGLE_SLOT:\r\n return {\r\n ...state,\r\n schedule: getNewSchedule(state.schedule, action.data)\r\n }\r\n case `${createScheduleConst.GET_SCHEDULE}_ENDED`: {\r\n const scheduleJSON = action.data.data.buyerSchedules || action.data.data.schedules;\r\n const {addressName} = (action.data.data.address || {});\r\n\r\n const address = addressName ? action.data.data.address : null;\r\n return {\r\n ...state,\r\n address,\r\n schedule: getSanitizedSchedule(scheduleJSON, !!action.data.data.buyerSchedules)\r\n }\r\n }\r\n case `${constants.CONFIRM_SCHEDULE}_ENDED`: {\r\n const scheduleJSON = action.data.data.buyerSchedules || action.data.data.schedules;\r\n const { addressName } = (action.data.data.address || {});\r\n\r\n const address = addressName ? action.data.data.address : null;\r\n return {\r\n ...state,\r\n address,\r\n schedule: getSanitizedSchedule(scheduleJSON, !!action.data.data.buyerSchedules)\r\n }\r\n }\r\n\r\n case `${pickupSlotConst.GET_PICKUP_DATA}_ENDED`: {\r\n const {addressName} = (action.data.data.address || {});\r\n\r\n const address = addressName ? action.data.data.address : null;\r\n\r\n return {\r\n ...state,\r\n address,\r\n schedule: getSanitizedSchedule(action.data.data.schedules, true)\r\n }\r\n }\r\n case `${pickupSlotConst.SEND_PICKUP_DATA}_ENDED`:\r\n \r\n return {\r\n ...state,\r\n schedule: getSanitizedSchedule(action.data.data.schedules, true)\r\n }\r\n case constants.SET_ADDRESS:\r\n return {...state, address: action.data}\r\n\r\n case constants.RESET_SCHEDULER_STATE:\r\n return {...state, activeDateSlot: null, schedule: {}};\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default scheduler","export default {\r\n CREATE_CALENDAR: 'CREATE_CALENDAR',\r\n RESET_DATA: 'RESET_DATA'\r\n}","import constants from './constants';\r\n\r\nconst initialState = {\r\n error: null,\r\n pending: false\r\n}\r\n\r\nconst createCalendar = (state = initialState, action) => {\r\n switch (action.type) {\r\n case `${constants.CREATE_CALENDAR}_STARTED`:\r\n return {...state, pending: true}\r\n case `${constants.CREATE_CALENDAR}_ENDED`: {\r\n const {newEvent, sentAt} = action.data.data;\r\n return {...state, pending: false, ...newEvent, sentAt}\r\n }\r\n case constants.RESET_DATA:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default createCalendar","import constants from './constants';\r\nimport {getSanitizedSchedule} from './../scheduler/utils';\r\n\r\nconst initialState = {\r\n error: null,\r\n pending: false,\r\n data: {},\r\n isSuccesMessageVisible: false,\r\n isCancelMessageVisible: false,\r\n eventName: '',\r\n specialInstructions: null,\r\n isUpdateMode: false\r\n}\r\n\r\nconst createSchedule = (state = initialState, action) => {\r\n switch (action.type) {\r\n case `${constants.GET_SCHEDULE}_STARTED`:\r\n case `${constants.CREATE_SCHEDULE}_STARTED`:\r\n case `${constants.UPDATE_SCHEDULE}_STARTED`:\r\n case `${constants.CANCEL_SCHEDULE}_STARTED`:\r\n case `${constants.CONFIRM_SCHEDULE}_STARTED`:\r\n return {...state, pending: true}\r\n\r\n case `${constants.GET_SCHEDULE}_ENDED`:\r\n case `${constants.UPDATE_SCHEDULE}_ENDED`:\r\n case `${constants.CREATE_SCHEDULE}_ENDED`: {\r\n const {\r\n name: eventName,\r\n schedules: schedulesJSON,\r\n ...rest\r\n } = action.data.data;\r\n\r\n const schedules = getSanitizedSchedule(schedulesJSON);\r\n\r\n return {\r\n ...state,\r\n pending: false,\r\n isSuccesMessageVisible: action.type !== `${constants.GET_SCHEDULE}_ENDED`,\r\n eventName,\r\n schedules,\r\n ...rest\r\n }\r\n }\r\n\r\n case `${constants.CANCEL_SCHEDULE}_ENDED`:\r\n return {...state, isCancelMessageVisible: true, pending: false, isActive: false}\r\n\r\n case `${constants.CONFIRM_SCHEDULE}_ENDED`:\r\n const {\r\n name: eventName,\r\n schedules: schedulesJSON,\r\n ...rest\r\n } = action.data.data;\r\n\r\n const schedules = getSanitizedSchedule(schedulesJSON);\r\n\r\n return {\r\n ...state,\r\n pending: false,\r\n schedules,\r\n ...rest\r\n }\r\n\r\n //return {...state, pending: false, ...action.data.data}\r\n\r\n case constants.TOGGLE_UPDATE_MODE:\r\n return {...state, isUpdateMode: action.data};\r\n\r\n case constants.HIDE_SCHEDULE_CREATION_SUCCESS_MESSAGE:\r\n return {...state, isSuccesMessageVisible: false}\r\n\r\n case constants.ON_VALUE_CHANGE:\r\n return {...state, [action.data.name]: action.data.value}\r\n case constants.RESET_SCHEDULE_CREATION_DATA:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default createSchedule","import constants from './constants';\r\nimport {getSanitizedSchedule} from './../scheduler/utils';\r\n\r\nconst initialState = {\r\n error: null,\r\n pending: false,\r\n data: {},\r\n isSuccesMessageVisible: false,\r\n pickupSchedule: {},\r\n calendarContent: '',\r\n eventName: '',\r\n isTimeProposal: false,\r\n isBooked: false\r\n}\r\n\r\nconst createSchedule = (state = initialState, action) => {\r\n switch (action.type) {\r\n case `${constants.GET_PICKUP_DATA}_STARTED`:\r\n case `${constants.SEND_PICKUP_DATA}_STARTED`:\r\n case `${constants.PROPOSE_NEW_TIME}_STARTED`:\r\n return {...state, pending: true}\r\n\r\n case `${constants.GET_PICKUP_DATA}_ENDED`: {\r\n const {\r\n receiver: buyerEmail,\r\n name: eventName,\r\n schedules,\r\n ...rest\r\n } = action.data.data;\r\n const pickupSchedule = getSanitizedSchedule(schedules);\r\n\r\n return {\r\n ...state,\r\n ...rest,\r\n pending: false,\r\n pickupSchedule,\r\n buyerEmail,\r\n eventName,\r\n }\r\n }\r\n\r\n case `${constants.SEND_PICKUP_DATA}_ENDED`:\r\n const {\r\n schedules,\r\n ...rest\r\n } = action.data.data;\r\n const pickupSchedule = getSanitizedSchedule(schedules);\r\n\r\n return { ...state, ...rest, pending: false, isSuccesMessageVisible: true, pickupSchedule}\r\n\r\n case `${constants.PROPOSE_NEW_TIME}_ENDED`: {\r\n return {...state, ...action.data.data, pending: false}\r\n }\r\n\r\n case constants.SET_TIME_PROPOSAL_MODE:\r\n return {...state, isTimeProposal: true};\r\n\r\n case constants.TOGGLE_SUCCESS_MESSAGE:\r\n return {...state, isSuccesMessageVisible: action.data};\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default createSchedule","export default {\r\n REDIRECT_TO: 'REDIRECT_TO',\r\n}","import constants from './constants';\r\n\r\nconst initialState = {\r\n url: '',\r\n eventName:''\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case constants.REDIRECT_TO:\r\n return { ...state, url: action.data.url, eventName: action.data.eventName }\r\n default:\r\n return state;\r\n }\r\n}","export default {\r\n SHOW_LOADER: 'SHOW_LOADER',\r\n HIDE_LOADER: 'HIDE_LOADER'\r\n};","import constants from './constants';\r\n\r\nconst initialState = {\r\n visible: false\r\n};\r\n\r\nconst scheduler = (state = initialState, action) => {\r\n switch (action.type) {\r\n case constants.SHOW_LOADER:\r\n return {...state, visible: true}\r\n case constants.HIDE_LOADER:\r\n return {...state, visible: false}\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default scheduler","import {createStore, combineReducers, applyMiddleware} from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport logger from 'redux-logger';\r\nimport scheduler from './services/scheduler/reducer';\r\nimport calendarCreationData from './services/create_calendar/reducer';\r\nimport scheduleCreationData from './services/create_schedule/reducer';\r\nimport slotPickupData from './services/pickup_slot/reducer';\r\nimport redirect from './services/redirect/reducer';\r\nimport loader from './services/loader/reducer';\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\nconst initialAppState = {};\r\n\r\nconst middleware = [thunk, logger];\r\n\r\nconst store = createStore(\r\n combineReducers({\r\n scheduler,\r\n calendarCreationData,\r\n scheduleCreationData,\r\n slotPickupData,\r\n loader,\r\n redirect\r\n }),\r\n initialAppState,\r\n applyMiddleware(...middleware)\r\n);\r\n\r\nexport default store;","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport actionConstants from '../../services/scheduler/constants';\r\nimport classNames from 'classname';\r\n\r\nconst DayCell = ({ value, checkIsEmpty, buyerSchedules, setActiveDate }) => {\r\n const dispatch = useDispatch();\r\n const scheduler = useSelector(state => state.scheduler);\r\n const activeDay = useSelector(state => state.scheduler.activeDateSlot);\r\n\r\n const handleClick = () => {\r\n if (buyerSchedules) {\r\n dispatch({ type: actionConstants.SET_ACTIVE_DAY_SLOT, data: value });\r\n setActiveDate(value);\r\n }\r\n else {\r\n var IsSelectedSlots = checkIsEmpty(activeDay, true);\r\n if (IsSelectedSlots) {\r\n dispatch({ type: actionConstants.SET_ACTIVE_DAY_SLOT, data: value })\r\n setActiveDate(value);\r\n }\r\n }\r\n }\r\n const isActive = value === scheduler.activeDateSlot;\r\n const className = classNames({\r\n 'day-cell': true,\r\n 'day-cell--active': isActive\r\n });\r\n\r\n const selectedTimeSlotsAmount = (scheduler.schedule[value] || []).length;\r\n const selectedDays = Object.keys(scheduler.schedule) || [];\r\n const selectedDay = selectedDays[0];\r\n\r\n const selectedDaysAmount = selectedDays.length;\r\n\r\n useEffect(() => {\r\n if (selectedDaysAmount === 1) {\r\n dispatch({ type: actionConstants.SET_ACTIVE_DAY_SLOT, data: selectedDay });\r\n }\r\n }, [selectedDaysAmount, dispatch, selectedDay]);\r\n\r\n return (\r\n
\r\n {selectedTimeSlotsAmount > 0 && (\r\n \r\n {selectedTimeSlotsAmount}\r\n \r\n )}\r\n {value}\r\n
\r\n );\r\n}\r\n\r\nexport default DayCell;","import React from 'react';\r\nimport DayCell from './DayCell';\r\n\r\nconst SlotPicker = ({ selectedDays, checkIsEmpty, buyerSchedules, setActiveDate}) => {\r\n return (\r\n
\r\n {!selectedDays.length ? (\r\n
\r\n No Date Selected\r\n
\r\n ) : selectedDays.map(el => checkIsEmpty(day, IsCheckInCurrentDay)} setActiveDate={(activeDay) => setActiveDate(activeDay)}/>)\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default SlotPicker;","import React from 'react';\r\nimport moment from 'moment';\r\nimport DayPicker from 'react-day-picker';\r\nimport 'react-day-picker/lib/style.css';\r\n\r\nconst DatePicker = ({format, selectedDays, onChange, modifiers, readOnly, ...rest}) => {\r\n const matchStyle = `\r\n .DayPicker-Day--highlighted {\r\n background-color: #2e7d32;\r\n color: #fff;\r\n }\r\n .DayPicker-Day--highlighted:hover {\r\n background-color: #2e7d32!important;\r\n color: #fff;\r\n }\r\n.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside) {\r\n background-color: #299C26;\r\n}\r\n\r\n.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover {\r\n background-color: #299C26;\r\n}`;\r\n const getSelectedDays = () => {\r\n return selectedDays.map((el) => moment(el, format).toDate());\r\n }\r\n const handleClick = (date, modifiers = {}) => {\r\n if (modifiers.disabled) return;\r\n onChange(moment(date).format(format))\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DatePicker;","import React from 'react';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport classNames from 'classname';\r\n\r\nexport const SuccessMessage = ({ title, iconSize }) => {\r\n return (\r\n
\r\n \r\n {title}\r\n
\r\n );\r\n};\r\n\r\nexport const InfoMessage = ({ title, logger, iconSize, title2 }) => {\r\n const className = classNames({\r\n 'info-message': true,\r\n 'info-message--logger': logger,\r\n })\r\n return (\r\n
\r\n \r\n
\r\n {title}\r\n {title2}\r\n
\r\n
\r\n );\r\n};","import React, {useCallback} from 'react';\r\nimport Moment from 'moment';\r\nimport { extendMoment } from 'moment-range';\r\nimport classNames from 'classname';\r\nimport {InfoMessage} from './../Messages/index';\r\nconst moment = extendMoment(Moment);\r\n\r\nconst HourSlots = ({\r\n step,\r\n dateRange,\r\n activeDay,\r\n onChange,\r\n selectedSlots=[],\r\n multiselect=true,\r\n customTimeSlots=null,\r\n readOnly,\r\n setActiveDate\r\n}) => {\r\n const getSlots = () => {\r\n if (Array.isArray(customTimeSlots)) {\r\n return customTimeSlots = getSortedTimeSlot(customTimeSlots);\r\n }\r\n const range = moment.range(`2018-01-01 ${dateRange[0]}`, `2018-01-01 ${dateRange[1]}`);\r\n return [...range.by('minutes', {step})]\r\n .map(m => m.format('HH:mm A'));\r\n }\r\n const formatTimeSlot = (time) => {\r\n return moment('2018-01-01 ' + time.replace(\" AM\", \"\").replace(\" PM\", \"\")).format(\"hh:mm A\")\r\n }\r\n\r\n const getSortedTimeSlot = (array) => {\r\n array = array.sort(function (a, b) {\r\n let a1 = moment(activeDay + \" \" + a, 'MM/DD/YYYY HH:mm A')._d;\r\n let b1 = moment(activeDay + \" \" + b, 'MM/DD/YYYY HH:mm A')._d;\r\n return a1 < b1 ? -1 : a1 > b1 ? 1 : 0;\r\n });\r\n return array;\r\n }\r\n\r\n const handleChange = useCallback((slot) => () => {\r\n setActiveDate(activeDay);\r\n if (!multiselect) {\r\n onChange({slots: [slot], activeDay, isMulti: multiselect});\r\n return;\r\n }\r\n\r\n const slots = selectedSlots.includes(slot)\r\n ? selectedSlots.filter(el => el !== slot)\r\n : [...selectedSlots, slot];\r\n onChange({slots, activeDay, isMulti: multiselect});\r\n }, [onChange, selectedSlots, activeDay, multiselect]);\r\n\r\n const getEmptyMessage = () => {\r\n return !activeDay && (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Time Slots - {!activeDay ? 'No Date Selected' : activeDay}

\r\n {!readOnly && activeDay && !selectedSlots.length && }\r\n
\r\n
\r\n {!getEmptyMessage() ? (\r\n <>\r\n {getSlots().map(el => {\r\n const disabled =\r\n moment(new Date(), 'MM/DD/YYYY HH:mm A').isAfter(moment(`${activeDay} ${el}`, 'MM/DD/YYYY HH:mm A'), 'minute')\r\n const className = classNames({\r\n 'slot-list__item': true,\r\n 'slot-list__item--active': selectedSlots.includes(el),\r\n 'slot-list__item--disabled': disabled,\r\n });\r\n return (\r\n null : handleChange(el)}\r\n className={className}\r\n >\r\n {formatTimeSlot(el)}\r\n
\r\n );\r\n })}\r\n \r\n ) : (\r\n
{getEmptyMessage()}
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default HourSlots;","import React, { useEffect, useState } from 'react';\r\nimport 'react-day-picker/lib/style.css';\r\nimport SlotPicker from '../SlotPicker/index';\r\nimport DatePicker from '../DatePicker/index';\r\nimport actionConstants from '../../services/scheduler/constants';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport HourSlots from '../SlotPicker/HourSlots';\r\nimport { InfoMessage } from './../Messages/index';\r\nconst dateFormat = 'MM/DD/YYYY'\r\n\r\nconst Scheduler = ({\r\n submitSenderer = () => null,\r\n customTimeSlots = null,\r\n hoursMultiselect = true,\r\n datePickerModifiers,\r\n readOnly = false,\r\n IsSeller = false,\r\n IsBuyer = false,\r\n buyerSchedules\r\n}) => {\r\n const dispatch = useDispatch();\r\n const activeDay = useSelector(state => state.scheduler.activeDateSlot);\r\n const schedule = useSelector(state => state.scheduler.schedule);\r\n var selectedDays = useSelector(state => Object.keys(state.scheduler.schedule))\r\n const [isSlotEmpty, setIsSlotEmpty] = useState(false);\r\n const [selectedDay, setSelectedDay] = useState(null);\r\n\r\n if (selectedDays !== undefined && selectedDays !== null && selectedDays.length > 0) {\r\n selectedDays = selectedDays.sort(function (a, b) {\r\n a = new Date(a);\r\n b = new Date(b);\r\n if (a > b) return 1;\r\n if (a < b) return -1;\r\n return 0;\r\n });\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (IsSeller) {\r\n checkIsEmpty(activeDay, true);\r\n if (selectedDay === null || selectedDay === undefined || selectedDay === \"\") {\r\n setSelectedDay(activeDay);\r\n }\r\n }\r\n }, [activeDay, schedule])\r\n\r\n const handleDayClick = (day) => {\r\n //if (!readOnly) {\r\n // showSlot(day);\r\n //} \r\n if (readOnly === true) {\r\n if (checkDateExists(day)) {\r\n showSlot(day);\r\n }\r\n return;\r\n }\r\n\r\n if (customTimeSlots) {\r\n if (checkDateExists(day)) {\r\n showSlot(day);\r\n }\r\n return;\r\n }\r\n\r\n if (IsBuyer && (readOnly !== true && readOnly !== false && readOnly !== \"\")) {\r\n if (checkDateExists(day)) {\r\n showSlot(day);\r\n }\r\n return;\r\n }\r\n //if (readOnly || customTimeSlots) return;\r\n\r\n if (IsSeller) {\r\n let isSelectedSlot = checkEmptySlotOrNot(day, false)\r\n if (isSelectedSlot) {\r\n dispatch({ type: actionConstants.TOGGLE_DAY, data: day });\r\n setIsSlotEmpty(false)\r\n setSelectedDay(day)\r\n }\r\n else {\r\n setIsSlotEmpty(true)\r\n\r\n }\r\n }\r\n else {\r\n dispatch({ type: actionConstants.TOGGLE_DAY, data: day });\r\n }\r\n }\r\n\r\n const isEmpty = (obj) => {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n }\r\n \r\n const checkDateExists = (day) => {\r\n var isvalid = false;\r\n if (!isEmpty(schedule)) {\r\n if (schedule[day] !== undefined) {\r\n isvalid = true;\r\n }\r\n }\r\n return isvalid;\r\n }\r\n\r\n const checkEmptySlotOrNot = (day, isCheckCurrentDay) => {\r\n var isvalid = true;\r\n if (!isEmpty(schedule)) {\r\n if (!schedule[day] || isCheckCurrentDay === true) {\r\n for (let key in schedule) {\r\n if (schedule[key].length <= 0) {\r\n isvalid = false\r\n }\r\n }\r\n }\r\n }\r\n return isvalid;\r\n }\r\n\r\n const showSlot = (value) => {\r\n dispatch({ type: actionConstants.SET_ACTIVE_DAY_SLOT, data: value })\r\n }\r\n const checkIsEmpty = (day, IsCheckInCurrentDay) => {\r\n var isSelectedSlot = \"\";\r\n if (IsSeller) {\r\n isSelectedSlot = checkEmptySlotOrNot(day, IsCheckInCurrentDay)\r\n if (isSelectedSlot) {\r\n setIsSlotEmpty(false)\r\n }\r\n else {\r\n setIsSlotEmpty(true)\r\n }\r\n }\r\n else {\r\n isSelectedSlot = true;\r\n }\r\n return isSelectedSlot;\r\n }\r\n const setActiveDate=(activeDay) => {\r\n setSelectedDay(activeDay);\r\n }\r\n const handleSlotClick = (data) => {\r\n if (readOnly) return;\r\n dispatch({ type: actionConstants.TOGGLE_SLOT, data })\r\n checkIsEmpty(data.activeDay, false);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {}\r\n \r\n {\r\n IsSeller && !buyerSchedules && isSlotEmpty &&\r\n
\r\n \r\n
\r\n }\r\n {\r\n IsSeller && buyerSchedules && isSlotEmpty && (\r\n
\r\n \r\n
)\r\n }\r\n checkIsEmpty(day, IsCheckInCurrentDay)}\r\n setActiveDate={(activeDay) => setActiveDate(activeDay)}\r\n />\r\n\r\n
\r\n
\r\n setActiveDate(activeDay)}\r\n />\r\n
\r\n\r\n
{submitSenderer()}
\r\n
\r\n );\r\n}\r\n\r\nexport default Scheduler","const CTXT = '';\r\n\r\nexport const EVENT = `${CTXT}/api/event`;\r\n//export const EVENT = 'http://scheduler.doas.ga.gov/api/event';","import axios from 'axios'\r\nimport {EVENT} from '../../url_constants';\r\n\r\nexport default {\r\n createSchedule(data = {}) {\r\n return axios({\r\n method: 'PUT',\r\n url: EVENT,\r\n data\r\n });\r\n },\r\n updateSchedule(data = {}) {\r\n return axios({\r\n method: 'POST',\r\n url: `${EVENT}/update`,\r\n data\r\n });\r\n },\r\n cancelSchedule(data = {}) {\r\n return axios({\r\n method: 'POST',\r\n url: `${EVENT}/cancel`,\r\n data\r\n });\r\n },\r\n getSchedule(id) {\r\n return axios({\r\n method: 'GET',\r\n url: `${EVENT}?eventId=${id}`\r\n });\r\n },\r\n confirmSchedule(data) {\r\n return axios({\r\n method: 'POST',\r\n url: `${EVENT}/book`,\r\n data\r\n });\r\n },\r\n}","import loaderConstants from '../services/loader/constants';\r\nimport redirectConstants from '../services/redirect/constants';\r\n\r\nexport function createAsyncAction(type, fn, opt) {\r\n let result;\r\n const options = opt || {};\r\n return (requestData, requestOptions) => async (dispatch) => {\r\n start(dispatch, requestData, options, type);\r\n try {\r\n result = !!fn ? await fn(requestData, requestOptions) : requestData;\r\n } catch (e) {\r\n result = e;\r\n }\r\n finish(dispatch, requestData, result, type, options);\r\n return result;\r\n };\r\n}\r\n\r\nfunction start(dispatch, requestData, options, type) {\r\n dispatch({type: loaderConstants.SHOW_LOADER});\r\n dispatch({\r\n type: `${type}_STARTED`,\r\n requestData: {\r\n ...requestData,\r\n ...options\r\n }\r\n });\r\n}\r\n\r\nfunction finish(dispatch, requestData, result, type) {\r\n const event = result.data.newEvent || result.data;\r\n if (event.isActive !== undefined && !event.isActive) {\r\n dispatch({ type: redirectConstants.REDIRECT_TO, data: { url: '/final', eventName: event.name } });\r\n }\r\n dispatch({type: loaderConstants.HIDE_LOADER});\r\n dispatch({type: result instanceof Error ? 'ERROR' : `${type}_ENDED`, data: result, requestData});\r\n}","import constants from './constants';\r\nimport api from './api';\r\nimport {createAsyncAction} from '../../utils/thunk_utils';\r\n\r\nexport const toggleUpdateMode = (flag) => ({\r\n type: constants.TOGGLE_UPDATE_MODE,\r\n data: flag,\r\n})\r\n\r\nexport const createSchedule = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.CREATE_SCHEDULE,\r\n api.createSchedule\r\n )(data))\r\n};\r\n\r\nexport const updateSchedule = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.UPDATE_SCHEDULE,\r\n api.updateSchedule\r\n )(data))\r\n};\r\n\r\nexport const getSchedule = (id) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.GET_SCHEDULE,\r\n api.getSchedule\r\n )(id))\r\n};\r\n\r\nexport const cancelSchedule = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.CANCEL_SCHEDULE,\r\n api.cancelSchedule\r\n )(data))\r\n};\r\n\r\nexport const confirmSchedule = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.CONFIRM_SCHEDULE,\r\n api.confirmSchedule\r\n )(data))\r\n};\r\n\r\nexport const onValueChange = (data) => ({\r\n type: constants.ON_VALUE_CHANGE,\r\n data,\r\n})\r\n\r\n","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Send from '@material-ui/icons/Send';\r\nimport { lightBlue } from '@material-ui/core/colors';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst SubmitButton = withStyles(() => ({\r\n root: {\r\n color: lightBlue[50],\r\n backgroundColor: lightBlue[500],\r\n fontFamily: 'alternate_gothic_no2_d_regular',\r\n fontSize:'1.2rem',\r\n '&:hover': {\r\n backgroundColor: lightBlue[700],\r\n },\r\n },\r\n}))(Button);\r\n\r\nexport default ({onClick, title, disableError = '', ...restProps}) => {\r\n if (disableError) {\r\n return (\r\n \r\n \r\n }\r\n onClick={() => null}\r\n className='submit-button'\r\n >\r\n {title}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n }\r\n onClick={onClick}\r\n className='submit-button login-submit-button'\r\n >\r\n {title}\r\n \r\n );\r\n};","import * as yup from 'yup';\r\n\r\nyup.setLocale({\r\n mixed: {\r\n default: ({ path }) => `Please input a valid ${path}.`,\r\n required: 'This field is required',\r\n },\r\n string: {\r\n email: 'Please input a valid email address',\r\n max: ({ max }) =>\r\n `The text entered exceeds the maximum length of ${max} characters`,\r\n },\r\n});\r\n\r\nexport default yup;","import yup from '../../utils/yup';\r\n\r\nexport default yup.object().shape({\r\n email: yup.string().email().required()\r\n});","import React, { useState } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport 'react-multi-email/style.css';\r\nimport SubmitButton from './../../components/SubmitButton/index';\r\nimport schema from './schema'\r\nimport { InfoMessage } from '../../components/Messages/index';\r\n\r\nconst InviteForm = ({\r\n inactiveMessage = '',\r\n onSubmit,\r\n readOnlyOptions = null,\r\n isUpdateMode,\r\n onInstructionsChange = () => null,\r\n additionalFieldsRenderer = () => null,\r\n warningMessage,\r\n sellerEmail=null\r\n}) => {\r\n const defaultEmailValue = (readOnlyOptions || {}).receiver || '';\r\n const defaultInstructionsValue = (readOnlyOptions || {}).specialInstructions || '';\r\n\r\n const [email, setEmail] = useState(defaultEmailValue); \r\n const [error, setError] = useState('');\r\n const [instructions, setInstructions] = useState(defaultInstructionsValue);\r\n\r\n const handleSubmit = async () => {\r\n if ( sellerEmail == email) {\r\n setError(\"Not allowed to enter buyer email same as of seller.\")\r\n return;\r\n }\r\n schema.validate({ email }, { abortEarly: false })\r\n .then(() => {\r\n onSubmit({\r\n email,\r\n instructions\r\n })\r\n })\r\n .catch((err) => {\r\n const error = err.inner.reduce((acc, cur) => ({ ...acc, [cur.path]: cur.errors[0] }), {}).email\r\n setError(error)\r\n })\r\n }\r\n\r\n const getDisableError = () => {\r\n return inactiveMessage && inactiveMessage;\r\n }\r\n\r\n const handleInstructionsChange = (e) => {\r\n onInstructionsChange(e.target.value);\r\n setInstructions(e.target.value);\r\n }\r\n\r\n return (\r\n
\r\n {!readOnlyOptions &&

Specify Buyer Email, Special Instructions and Address

}\r\n\r\n { setEmail(e.target.value); setError('') }}\r\n value={email}\r\n error={!!error}\r\n helperText={error}\r\n disabled={!!readOnlyOptions}\r\n />\r\n\r\n \r\n\r\n {additionalFieldsRenderer()}\r\n\r\n {!readOnlyOptions && (\r\n
\r\n {warningMessage && }\r\n \r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default InviteForm;","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nexport default function NotificationModal({\r\n isOpened,\r\n handleClose,\r\n titleRenderer,\r\n descriptionRenderer,\r\n}) {\r\n return (\r\n \r\n \r\n \r\n {titleRenderer()}\r\n \r\n \r\n {descriptionRenderer()}\r\n \r\n {handleClose && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nconst ConfirmationPopup = ({\r\n opened,\r\n handleClose = () => null,\r\n handleConfirm = () => null,\r\n title='',\r\n description='',\r\n}) => {\r\n return (\r\n \r\n {title}\r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConfirmationPopup;","import React from 'react';\r\n\r\nexport default () => (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n)","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { brown } from '@material-ui/core/colors';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst ActionButton = withStyles(() => ({\r\n root: {\r\n color: brown[50],\r\n backgroundColor: brown[500],\r\n '&:hover': {\r\n backgroundColor: brown[700],\r\n },\r\n },\r\n}))(Button);\r\n\r\nexport default ({onClick, title, disableError = '', ...restProps}) => {\r\n if (disableError) {\r\n return (\r\n \r\n \r\n null}\r\n className='action-button'\r\n disabled\r\n >\r\n {title}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n};","import React from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport NumberFormat from 'react-number-format';\r\n\r\nfunction NumberFormatCustom(props) {\r\n const { inputRef, onChange, ...other } = props;\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.formattedValue,\r\n },\r\n });\r\n }}\r\n format=\"###-###-####\"\r\n mask=\"_\"\r\n />\r\n );\r\n}\r\n\r\nconst PhoneNumberInput = (props) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default PhoneNumberInput;","import React from 'react';\r\nimport { Grid, TextField } from '@material-ui/core/';\r\nimport PhoneNumberInput from '../../components/PhoneNumberInput/index';\r\n\r\nconst ContactForm = ({ disabled, name, setName, phone, setPhone, setExtension, extension, error, buyerEmail, isTimeProposal }) => {\r\n \r\n return (\r\n
\r\n

Enter Your Contact Information

\r\n {isTimeProposal ?
\r\n \r\n \r\n setName(e.target.value)}\r\n fullWidth\r\n margin=\"normal\"\r\n variant=\"outlined\"\r\n disabled={true}\r\n error={!!error}\r\n helperText={error}\r\n className=\"contacts-form__disable\"\r\n />\r\n \r\n \r\n
: null}\r\n
\r\n \r\n \r\n setName(e.target.value)}\r\n fullWidth\r\n margin=\"normal\"\r\n variant=\"outlined\"\r\n disabled={disabled}\r\n error={!!error}\r\n helperText={error}\r\n />\r\n \r\n \r\n \r\n \r\n setPhone(e.target.value)}\r\n />\r\n \r\n \r\n setExtension(e.target.value)}\r\n value={extension}\r\n inputProps={{ maxLength: 10 }}\r\n margin=\"normal\"\r\n label=\"Extension\"\r\n disabled={disabled}\r\n pattern=\"/^[0-9-+()]*$/\"\r\n variant=\"outlined\"\r\n className=\"w-100\" />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ContactForm;","import React from 'react';\r\n\r\nconst ContactInfo = ({ title, name, email, phone, extension }) => {\r\n if (!name && !email && !phone) return null;\r\n return (\r\n
\r\n {title &&

{title}

}\r\n
\r\n {name &&
\r\n Name: {name}\r\n
}\r\n {(phone || extension) && (
\r\n {phone && (\r\n <>\r\n Phone: {phone}\r\n \r\n )\r\n }\r\n {extension && (\r\n <>\r\n Extension {extension}\r\n \r\n )\r\n }\r\n
\r\n )\r\n }\r\n {email &&
\r\n Email: {email}\r\n
}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ContactInfo;","export const API_KEY = 'AIzaSyDfGZ8CYBUoJg0P6fnQZZuOGvdq4-K0BC0';","import React from \"react\"\r\nimport { compose, withProps, lifecycle } from \"recompose\"\r\nimport { withScriptjs } from \"react-google-maps\"\r\nimport {API_KEY} from '../../utils/constants';\r\n\r\nconst { StandaloneSearchBox } = require(\"react-google-maps/lib/components/places/StandaloneSearchBox\");\r\n\r\nexport default compose(\r\n withProps({\r\n googleMapURL: `https://maps.googleapis.com/maps/api/js?key=${API_KEY}&language=en&v=3.exp&libraries=geometry,drawing,places`,\r\n loadingElement:
,\r\n containerElement:
,\r\n }),\r\n lifecycle({\r\n componentWillMount() {\r\n const refs = {}\r\n\r\n this.setState({\r\n places: [],\r\n onSearchBoxMounted: ref => {\r\n refs.searchBox = ref;\r\n },\r\n onPlacesChanged: () => {\r\n const places = refs.searchBox.getPlaces();\r\n this.props.onPlacesChanged(places);\r\n\r\n this.setState({\r\n places,\r\n });\r\n },\r\n })\r\n },\r\n }),\r\n withScriptjs\r\n)(props =>\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n","import React from \"react\"\r\nimport { compose, withProps } from \"recompose\"\r\nimport { withScriptjs, withGoogleMap, GoogleMap, Marker } from \"react-google-maps\"\r\nimport {API_KEY} from '../../utils/constants'\r\n\r\nexport default compose(\r\n withProps({\r\n googleMapURL: `https://maps.googleapis.com/maps/api/js?key=${API_KEY}&language=en&v=3.exp&libraries=geometry,drawing,places`,\r\n loadingElement:
,\r\n containerElement:
,\r\n mapElement:
,\r\n }),\r\n withScriptjs,\r\n withGoogleMap\r\n)(({\r\n onMapClick,\r\n onMarkerClick,\r\n address\r\n}) => {\r\n const defaultCenter = address\r\n ? {lat: address.lat, lng: address.lng}\r\n : {lat: 33.7502588, lng: -84.3864037}\r\n return (\r\n \r\n {address && }\r\n \r\n );\r\n}\r\n);","import Geocode from \"react-geocode\";\r\nimport {API_KEY} from './constants'\r\n\r\nGeocode.setApiKey(API_KEY);\r\nGeocode.setLanguage(\"en\");\r\nGeocode.enableDebug();\r\n\r\nconst fromLatLng = async (coordinates, cb) => {\r\n if (!coordinates) return;\r\n const {lat, lng} = coordinates;\r\n try {\r\n const response = await Geocode.fromLatLng(lat, lng);\r\n cb(response.results[0].formatted_address);\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\nexport {\r\n Geocode as default,\r\n fromLatLng\r\n};","import React, {useState, useEffect} from \"react\"\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport GoogleMap from './GoogleMap';\r\nimport SearchBox from './SearchBox';\r\nimport {fromLatLng} from '../../utils/geocode';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n appBar: {\r\n position: 'relative',\r\n },\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n flex: 1,\r\n },\r\n}));\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nexport default function FullScreenDialog({\r\n handleSubmit = () => null,\r\n readOnly,\r\n defaultAddress,\r\n disabled\r\n}) {\r\n const {\r\n addressName: defaultAddressName,\r\n coordinates: defaultCoordinates\r\n } = defaultAddress || {}\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const [isMapVisible, setMapVisibility] = useState(true);\r\n const [address, setAddress] = useState(defaultCoordinates);\r\n const [addressName, setAddressName] = useState(defaultAddressName);\r\n\r\n useEffect(() => {\r\n !isMapVisible && setMapVisibility(true);\r\n }, [address, isMapVisible])\r\n\r\n const handleMarkerClick = (data) => {\r\n }\r\n\r\n const onMapClick = (data) => {\r\n if (readOnly) return;\r\n const coordinates = address\r\n ? null\r\n : {\r\n lat: data.latLng.lat(),\r\n lng: data.latLng.lng()\r\n };\r\n setAddress(coordinates);\r\n\r\n if (address) {\r\n setAddressName('');\r\n return;\r\n }\r\n fromLatLng(coordinates, (addressName) => {\r\n setAddressName(addressName)\r\n })\r\n };\r\n\r\n const handlePlaceChange = (data) => {\r\n setMapVisibility(false);\r\n const location = data[0].geometry.location;\r\n setAddressName(data[0].formatted_address);\r\n setAddress({lat: location.lat(), lng: location.lng()});\r\n }\r\n\r\n const handleInputChange = (e) => {\r\n setAddressName(e.target.value);\r\n }\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setAddressName(defaultAddressName);\r\n setAddress(defaultCoordinates);\r\n\r\n setOpen(false);\r\n };\r\n\r\n const onSave = () => {\r\n handleSubmit({\r\n coordinates: address,\r\n addressName\r\n })\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {defaultAddressName ? defaultAddressName : 'Address is not specified'}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {readOnly ? 'Address preview' : 'Select address'}\r\n \r\n {!readOnly && (\r\n \r\n )}\r\n \r\n \r\n\r\n {!readOnly && }\r\n {isMapVisible && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n}","import React, { useEffect, useState } from 'react';\r\nimport Scheduler from '../../components/Scheduler/index';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { createSchedule, getSchedule, toggleUpdateMode, updateSchedule, cancelSchedule, confirmSchedule, onValueChange } from '../../services/create_schedule/actions';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport InviteForm from './InviteForm';\r\nimport NotificationModal from './../../components/NotificationModal/index';\r\nimport ConfirmationPopup from '../../components/ConfirmationPopup/index';\r\nimport actionConstants from '../../services/create_schedule/constants';\r\nimport PagePreloader from '../../components/PagePreloader/index';\r\nimport { SuccessMessage, InfoMessage } from '../../components/Messages/index';\r\nimport ActionButton from '../../components/ActionButton/index';\r\nimport { getSchedulesJSON, hasEmptyDays, getSanitizedSchedule } from '../../services/scheduler/utils';\r\nimport ContactForm from '../../components/ContactForm/index';\r\nimport ContactInfo from '../../components/ContactInfo/index';\r\nimport AddressModal from '../../components/AddressForm/AddressModal';\r\nimport { setAddress } from '../../services/scheduler/actions';\r\nimport { Grid, TextField } from '@material-ui/core/';\r\n\r\nconst CreateSchedule = (props) => {\r\n const {\r\n receiver,\r\n specialInstructions,\r\n sentAt,\r\n bookedAt,\r\n eventName,\r\n isUpdateMode,\r\n isCancelMessageVisible,\r\n buyerSchedules,\r\n isSuccesMessageVisible: isModalVisible,\r\n pending,\r\n isBooked,\r\n sellerEmail,\r\n sellerName,\r\n sellerPhone,\r\n sellerPhoneExtension,\r\n buyerName,\r\n buyerPhone,\r\n buyerPhoneExtension,\r\n eventAddress,\r\n city,\r\n state,\r\n zipcode\r\n } = useSelector((state) => state.scheduleCreationData);\r\n const eventId = props.match.params.guid;\r\n const schedule = useSelector(state => state.scheduler.schedule);\r\n const address = useSelector(state => state.scheduler.address);\r\n const activeDay = useSelector(state => state.scheduler.activeDateSlot)\r\n const [cancelOpened, toggleCancelModalState] = useState(false);\r\n const [warningMessage, setWarningMessage] = useState('');\r\n const [isSubmitted, setSubmitFlag] = useState(false);\r\n const [instructions, setInstructions] = useState('');\r\n const [name, setName] = useState('');\r\n\r\n const hasSomeSlots =\r\n Object.values(schedule)\r\n .some(el => el.length);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n getSchedule(eventId)(dispatch);\r\n }, [eventId, dispatch])\r\n\r\n useEffect(() => {\r\n if (hasEmptyDays(schedule)) {\r\n setWarningMessage('You have not selected time slots for some of your available dates.');\r\n } else {\r\n setWarningMessage('');\r\n }\r\n }, [schedule])\r\n\r\n const getCustomTimeslots = () => {\r\n if (!buyerSchedules) return null;\r\n const schedule = getSanitizedSchedule(buyerSchedules);\r\n return schedule[activeDay] || [];\r\n }\r\n\r\n const getContactInfo = () => {\r\n const info = {};\r\n if (sellerName) {\r\n info.sellerName = sellerName;\r\n }\r\n\r\n if (sellerPhone) {\r\n info.sellerPhone = sellerPhone;\r\n }\r\n if (sellerPhoneExtension) {\r\n info.sellerPhoneExtension = sellerPhoneExtension;\r\n }\r\n return info;\r\n };\r\n\r\n const onChange = (name) => (value) => {\r\n if (name == \"sellerName\") {\r\n setName('');\r\n value = value.replace(/[^A-Z a-z]/ig, '')\r\n }\r\n else if (name == \"sellerPhoneExtension\") {\r\n value = value.replace(/[^0-9 ()+]/ig, '')\r\n }\r\n \r\n dispatch(onValueChange({ name, value }))\r\n \r\n };\r\n\r\n const handleSubmit = (formData = {}) => { \r\n if (sellerName) {\r\n const requestData = {\r\n schedules: getSchedulesJSON(schedule),\r\n receiver: receiver || formData.email,\r\n specialInstructions: instructions || specialInstructions || formData.instructions,\r\n eventId,\r\n address,\r\n eventAddress: eventAddress,\r\n city: city,\r\n state: state,\r\n zipcode: zipcode,\r\n isSellerUpdate: true,\r\n ...getContactInfo()\r\n }\r\n\r\n if (buyerSchedules) {\r\n const { date, time } = getSchedulesJSON(schedule)[0] || {};\r\n const requestData = {\r\n datetime: (new Date(`${date} ${time[0].split(' ')[0]}`)).toISOString(),\r\n buyerEmail: receiver,\r\n eventId,\r\n schedules: getSchedulesJSON(schedule),\r\n userSelectedDatetime: moment(date + \" \" + time[0].split(' ')[0]).format(\"MM/DD/YYYY HH:mm\")\r\n }\r\n confirmSchedule(requestData)(dispatch);\r\n return;\r\n }\r\n\r\n setSubmitFlag(true);\r\n if (hasEmptyDays(schedule)) return;\r\n\r\n if (isUpdateMode) {\r\n updateSchedule(requestData)(dispatch);\r\n } else {\r\n createSchedule(requestData)(dispatch);\r\n }\r\n }\r\n else {\r\n setName(\"This field is required\")\r\n } \r\n }\r\n\r\n const handleCancel = () => {\r\n cancelSchedule({ eventId: eventId, isSeller: true, isBuyer: null })(dispatch);\r\n toggleCancelModalState(false);\r\n };\r\n\r\n const getReadOnlyOptions = () => {\r\n return receiver && { receiver, specialInstructions }\r\n }\r\n\r\n const isReadOnlyMode = () => {\r\n return (!isUpdateMode && receiver)\r\n || isBooked;\r\n }\r\n\r\n const handleChange = (flag) => {\r\n dispatch(toggleUpdateMode(flag));\r\n }\r\n\r\n const commonChange = (name, value, event) => {\r\n if (name === \"zipcode\") {\r\n // let isZipcode = /^[0-9 -]*$/\r\n value= value.replace(/[^0-9-]/ig, '')\r\n dispatch(onValueChange({ name, value }))\r\n //if (isZipcode.test(value) || value === \"\") {\r\n // dispatch(onValueChange({ name, value }))\r\n //}\r\n //else {\r\n // value = (zipcode === undefined || zipcode === null ? \"\" : zipcode);\r\n // dispatch(onValueChange({ name, value}))\r\n \r\n //}\r\n }\r\n else if (name === \"city\" || name === \"state\") {\r\n let isCityOrState = /^[a-zA-Z]+$/\r\n value = value.replace(/[^a-zA-Z]/ig, '');\r\n dispatch(onValueChange({ name, value }))\r\n //value.replace(/[^0-9-]/ig, '')\r\n //if (isCityOrState.test(value) || value === \"\" ) {\r\n // dispatch(onValueChange({ name, value }))\r\n //}\r\n }\r\n else {\r\n dispatch(onValueChange({ name, value }))\r\n }\r\n\r\n }\r\n\r\n const contactFormRenderer = () => {\r\n return (\r\n <>\r\n {\r\n //
\r\n // dispatch(setAddress(data))}\r\n // defaultAddress={address}\r\n // disabled={(!isUpdateMode && receiver) && !isBooked}\r\n // readOnly={isBooked}\r\n // />\r\n //
\r\n }\r\n \r\n \r\n commonChange(e.target.name, e.target.value, e)}\r\n label=\"Address\"\r\n variant=\"outlined\"\r\n inputProps={{ maxLength: 200 }}\r\n disabled={!!isReadOnlyMode()}\r\n className=\"w-100\" />\r\n \r\n \r\n commonChange(e.target.name, e.target.value, e)}\r\n label=\"City\"\r\n variant=\"outlined\"\r\n disabled={!!isReadOnlyMode()}\r\n className=\"w-100\" />\r\n \r\n \r\n commonChange(e.target.name, e.target.value, e)}\r\n label=\"State\"\r\n variant=\"outlined\"\r\n inputProps={{ maxLength: 100 }}\r\n disabled={!!isReadOnlyMode()}\r\n pattern=\"[a-z A-Z]\"\r\n className=\"w-100\" />\r\n \r\n \r\n {console.log(\"zipcode\", zipcode)}\r\n commonChange(e.target.name, e.target.value, e)}\r\n label=\"Zipcode\"\r\n variant=\"outlined\"\r\n inputProps={{ maxLength: 11 }}\r\n disabled={!!isReadOnlyMode()}\r\n className=\"w-100\" />\r\n \r\n \r\n\r\n {\r\n !buyerSchedules && !isBooked && (\r\n \r\n )\r\n }\r\n \r\n );\r\n };\r\n\r\n\r\n const renderSubmitForm = () => {\r\n let inactiveMessage = '';\r\n //if (!address) {\r\n // inactiveMessage = 'Please select an address';\r\n //}\r\n if (!hasSomeSlots) {\r\n inactiveMessage = 'Please select your available hours';\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n const renderPageActions = () => {\r\n if (isBooked) return null;\r\n\r\n if (!isUpdateMode && !buyerSchedules) return null;\r\n\r\n return (\r\n
\r\n {buyerSchedules && (\r\n \r\n )}\r\n {isUpdateMode && (\r\n \r\n )}\r\n toggleCancelModalState(true)} title='Cancel appointment' />\r\n
\r\n );\r\n }\r\n\r\n const getSuccessMessage = () => {\r\n return isUpdateMode\r\n ? `${eventName} was successfully updated.`\r\n : `Invite for ${eventName} has been successfully sent.`\r\n }\r\n\r\n const getTitle = () => {\r\n if (isBooked) {\r\n return (\r\n \r\n Scheduled Date/Time\r\n \r\n );\r\n }\r\n if (buyerSchedules) {\r\n return (\r\n \r\n Confirm proposed Date/Time or cancel appointment\r\n \r\n );\r\n }\r\n return isUpdateMode\r\n ? 'Updating an Appointment'\r\n : 'Start Scheduling';\r\n }\r\n\r\n if (pending) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n {isBooked && (\r\n {eventName} appointment was successfully scheduled\r\n }\r\n />\r\n )}\r\n
\r\n

{getTitle()}

\r\n {renderPageActions()}\r\n
\r\n {!isReadOnlyMode() &&

Select Dates and Times Available

}\r\n\r\n \r\n\r\n {isBooked && (\r\n
\r\n toggleCancelModalState(true)} title='Cancel appointment' />\r\n
\r\n )}\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n {receiver && !buyerSchedules && !isBooked && (\r\n \r\n Notification was sent to {receiver} on {moment(moment.utc(sentAt).toDate()).local().format('MM/DD/YYYY hh:mm A')}\r\n  with availability details.\r\n {!isUpdateMode && (\r\n \r\n  If you wish to change availability schedule or cancel the appointment, \r\n handleChange(true)} className='changer-link' href='#'>click here.\r\n \r\n )}\r\n \r\n )}\r\n />\r\n )}\r\n\r\n {isBooked && (\r\n \r\n Email Notification with {eventName} appointment details was sent to {sellerEmail} on {moment(moment.utc(bookedAt).toDate()).local().format('MM/DD/YYYY HH:mm A')}.\r\n\r\n \r\n \r\n )}\r\n />\r\n )}\r\n\r\n (\r\n \r\n )}\r\n descriptionRenderer={() => (\r\n
\r\n Buyer ({receiver}) will receive email notification.\r\n
\r\n )}\r\n isOpened={isCancelMessageVisible}\r\n />\r\n\r\n\r\n (\r\n \r\n )}\r\n descriptionRenderer={() => (\r\n
\r\n Buyer ({receiver}) will receive email notification.\r\n
\r\n )}\r\n isOpened={isModalVisible}\r\n //isOpened={true}\r\n handleClose={() => {\r\n handleChange(false);\r\n dispatch({ type: actionConstants.HIDE_SCHEDULE_CREATION_SUCCESS_MESSAGE })\r\n }}\r\n />\r\n\r\n toggleCancelModalState(false)}\r\n opened={cancelOpened}\r\n />\r\n
\r\n )\r\n}\r\n\r\nexport default CreateSchedule;","import yup from '../../utils/yup';\r\n\r\nexport default yup.object().shape({\r\n eventName: yup.string().max(100).required(),\r\n email: yup.string().email().required()\r\n});","import React, {useState} from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport schema from './schema';\r\nimport SubmitButton from './../SubmitButton/index';\r\n\r\nconst Form = ({onSubmit}) => {\r\n const [email, setEmail] = useState('');\r\n const [eventName, setEventName] = useState('');\r\n const [errors, setErrors] = useState({});\r\n\r\n const handleSubmit = async () => {\r\n schema.validate({email, eventName}, { abortEarly: false })\r\n .then((data) => {\r\n onSubmit(data);\r\n setEmail('');\r\n setEventName('');\r\n })\r\n .catch((err) => {\r\n const errors = err.inner.reduce((acc, cur) => ({...acc, [cur.path]: cur.errors[0]}), {})\r\n setErrors(errors)\r\n })\r\n }\r\n\r\n return (\r\n \r\n {setEmail(e.target.value); setErrors({...errors, email: null})}}\r\n value={email}\r\n error={!!errors.email}\r\n helperText={errors.email}\r\n />\r\n\r\n {setEventName(e.target.value); setErrors({...errors, eventName: null})}}\r\n error={!!errors.eventName}\r\n helperText={errors.eventName}\r\n />\r\n\r\n \r\n Send\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Form;","import axios from 'axios';\r\nimport {EVENT} from '../../url_constants';\r\n\r\nexport default {\r\n createCalendar(data = {}) {\r\n return axios({\r\n method: 'POST',\r\n url: EVENT,\r\n data\r\n });\r\n },\r\n}","import React from 'react';\r\nimport Form from '../../components/Form/index';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { createCalendar } from '../../services/create_calendar/actions';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport { SuccessMessage, InfoMessage } from './../../components/Messages/index';\r\nimport moment from 'moment';\r\nconst CreateCalendar = () => {\r\n const dispatch = useDispatch();\r\n const creationData = useSelector(state => state.calendarCreationData);\r\n const { name, sellerEmail, sentAt } = creationData || {};\r\n const handleSubmit = (data) => {\r\n dispatch(createCalendar(data));\r\n };\r\n return (\r\n
\r\n
\r\n

Welcome - Start Scheduling an Appointment  

\r\n \r\n \r\n
\r\n\r\n {sentAt && (\r\n
\r\n \r\n {name}\r\n  appointment created successfully. Check your email for a link to your appointment.\r\n \r\n )}\r\n />\r\n
\r\n )}\r\n
\r\n {sentAt && (\r\n
\r\n \r\n Email Notification with {name} appointment link sent to {sellerEmail} on {moment(sentAt).format('MM/DD/YYYY HH:mm A')}.\r\n \r\n )}\r\n logger\r\n />\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default CreateCalendar;","import constants from './constants';\r\nimport api from './api';\r\nimport {createAsyncAction} from '../../utils/thunk_utils';\r\n\r\nexport const createCalendar = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.CREATE_CALENDAR,\r\n api.createCalendar\r\n )(data));\r\n};","import React from 'react';\r\nimport SubmitButton from './../../components/SubmitButton/index';\r\nimport {InfoMessage} from '../../components/Messages/index';\r\n\r\nconst PickupForm = ({onSubmit, inactive, email = '', submitTitle, warningMessage}) => {\r\n const handleSubmit = () => {\r\n onSubmit({email});\r\n };\r\n const getDisableError = () => {\r\n let disableError = '';\r\n\r\n if (inactive) {\r\n disableError = 'Please select your available hours';\r\n }\r\n\r\n return disableError;\r\n }\r\n return (\r\n
\r\n
\r\n {warningMessage && }\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PickupForm;","import axios from 'axios';\r\nimport {EVENT} from '../../url_constants';\r\n\r\nexport default {\r\n getPickupData(id) {\r\n return axios({\r\n method: 'GET',\r\n url: `${EVENT}?eventId=${id}`,\r\n });\r\n },\r\n sendPickupData(data) {\r\n return axios({\r\n method: 'POST',\r\n url: `${EVENT}/book`,\r\n data\r\n });\r\n },\r\n proposeNewTime(data) {\r\n return axios({\r\n method: 'POST',\r\n url: `${EVENT}/propose-new-time`,\r\n data\r\n });\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport Scheduler from '../../components/Scheduler/index';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport PickupForm from './PickupForm';\r\nimport NotificationModal from './../../components/NotificationModal/index';\r\nimport PagePreloader from '../../components/PagePreloader/index';\r\nimport ConfirmationPopup from '../../components/ConfirmationPopup/index';\r\nimport { getPickupData, sendPickupData, setTimeProposalMode, proposeNewTime, toggleSuccessMessage } from '../../services/pickup_slot/actions';\r\nimport { cancelSchedule } from '../../services/create_schedule/actions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { SuccessMessage, InfoMessage } from '../../components/Messages/index';\r\nimport ActionButton from '../../components/ActionButton/index';\r\nimport { getSchedulesJSON, hasEmptyDays } from '../../services/scheduler/utils'\r\nimport Moment from 'moment';\r\nimport schedulerConstants from '../../services/scheduler/constants';\r\nimport ContactForm from '../../components/ContactForm/index';\r\nimport ContactInfo from '../../components/ContactInfo/index';\r\nimport AddressModal from '../../components/AddressForm/AddressModal';\r\nimport { extendMoment } from 'moment-range';\r\nconst moment = extendMoment(Moment);\r\n\r\nconst PickupSlot = (props) => {\r\n const eventId = props.match.params.guid;\r\n const dispatch = useDispatch();\r\n const schedule = useSelector(state => state.scheduler.schedule);\r\n const activeDay = useSelector(state => state.scheduler.activeDateSlot);\r\n const address = useSelector(state => state.scheduler.address);\r\n const [warningMessage, setWarningMessage] = useState('');\r\n const [cancelOpened, toggleCancelModalState] = useState(false);\r\n const [isSubmitted, setSubmitFlag] = useState(false);\r\n const [name, setName] = useState('');\r\n const {\r\n pickupSchedule,\r\n pending,\r\n buyerEmail,\r\n calendarContent,\r\n isSuccesMessageVisible: isModalOpened,\r\n specialInstructions,\r\n isTimeProposal,\r\n isBooked,\r\n eventName,\r\n bookedAt,\r\n buyerSchedules,\r\n buyerName: defaultBuyerName = '',\r\n buyerPhone: defaultBuyerPhone = '',\r\n buyerPhoneExtension: defaultBuyerPhoneExtension = '',\r\n sellerEmail,\r\n sellerName = '',\r\n sellerPhone = '',\r\n eventAddress,\r\n city,\r\n state,\r\n zipcode,\r\n sellerPhoneExtension\r\n } = useSelector(state => state.slotPickupData)\r\n const [buyerName, setBuyerName] = useState(defaultBuyerName);\r\n const [buyerPhone, setBuyerPhone] = useState(defaultBuyerPhone);\r\n const [buyerPhoneExtension, setBuyerPhoneExtension] = useState(defaultBuyerPhoneExtension);\r\n const onChange = (name) => (value) => {\r\n if (name == \"buyerPhoneExtension\") {\r\n value = value.replace(/[^0-9 ()+]/ig, '')\r\n setBuyerPhoneExtension(value)\r\n }\r\n else {\r\n setName('');\r\n value = value.replace(/[^A-Z a-z]/ig, '')\r\n setBuyerName(value)\r\n }\r\n \r\n };\r\n \r\n const hasSomeSlots =\r\n Object.values(schedule)\r\n .some(el => el.length);\r\n\r\n useEffect(() => {\r\n getPickupData(eventId)(dispatch);\r\n }, [eventId, dispatch]);\r\n\r\n useEffect(() => {\r\n if (hasEmptyDays(schedule)) {\r\n setWarningMessage('You have not selected time slots for some of your available dates.');\r\n } else {\r\n setWarningMessage('');\r\n }\r\n }, [schedule])\r\n\r\n const getContactInfo = () => {\r\n const info = {};\r\n if (buyerName) {\r\n info.buyerName = buyerName;\r\n }\r\n\r\n if (buyerPhone) {\r\n info.buyerPhone = buyerPhone;\r\n }\r\n\r\n if (buyerPhoneExtension) {\r\n info.buyerPhoneExtension = buyerPhoneExtension;\r\n }\r\n return info;\r\n }\r\n\r\n const handleSubmit = (formData) => {\r\n if (buyerName) {\r\n const scheduleJSON = getSchedulesJSON(schedule);\r\n const contactInfo = getContactInfo();\r\n if (isTimeProposal) {\r\n setSubmitFlag(true);\r\n if (hasEmptyDays(schedule)) return;\r\n proposeNewTime({\r\n eventId,\r\n buyerSchedules: scheduleJSON,\r\n ...contactInfo,\r\n })(dispatch);\r\n } else {\r\n const { date, time } = scheduleJSON[0] || {};\r\n const requestData = {\r\n datetime: (new Date(`${date} ${time[0].split(' ')[0]}`)).toISOString(),\r\n buyerEmail: formData.email,\r\n eventId,\r\n schedules: getSchedulesJSON(schedule),\r\n userSelectedDatetime: moment(date + \" \" + time[0].split(' ')[0]).format(\"MM/DD/YYYY HH:mm\"),\r\n ...contactInfo,\r\n }\r\n sendPickupData(requestData)(dispatch);\r\n }\r\n }\r\n else {\r\n setName(\"This field is required\")\r\n }\r\n }\r\n\r\n const handleCancel = () => {\r\n cancelSchedule({ eventId: eventId, isSeller: false, isBuyer: true })(dispatch);\r\n toggleCancelModalState(false);\r\n };\r\n const cancelChanges = () => {\r\n window.location.reload();\r\n };\r\n const contactFormRenderer = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n const renderSubmitForm = () => {\r\n return !buyerSchedules && !isBooked && (\r\n <>\r\n {contactFormRenderer()}\r\n \r\n \r\n );\r\n }\r\n\r\n const renderPageActions = () => {\r\n if (isTimeProposal)\r\n return (\r\n
\r\n {\r\n cancelChanges()\r\n }}\r\n title='Cancel Changes'\r\n />\r\n
\r\n ); \r\n if (isBooked || buyerSchedules) return null;\r\n\r\n return (\r\n
\r\n {\r\n dispatch(setTimeProposalMode(true))\r\n dispatch({ type: schedulerConstants.RESET_SCHEDULER_STATE })\r\n }}\r\n title='Propose New Time'\r\n />\r\n
\r\n );\r\n }\r\n\r\n const renderLogger = () => {\r\n if (isBooked) {\r\n return (\r\n \r\n Email Notification with {eventName} appointment details was sent to {buyerEmail} on {moment(moment.utc(bookedAt).toDate()).local().format('MM/DD/YYYY HH:mm A')}.\r\n \r\n )}\r\n />\r\n );\r\n }\r\n\r\n return buyerSchedules && (\r\n \r\n Email Notification with {eventName} appointment details was sent to {buyerEmail}.\r\n \r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (pending) {\r\n return \r\n }\r\n\r\n const getCustomTimeslots = () => {\r\n if (isTimeProposal) return null;\r\n\r\n return pickupSchedule[activeDay] || [];\r\n }\r\n\r\n const getTitle = () => {\r\n if (isBooked) {\r\n return {eventName} Appointment was successfully scheduled\r\n }\r\n return isTimeProposal\r\n //? 'Propose Appointment Date/Time'\r\n ? 'Propose New Date/Time'\r\n : `${buyerSchedules ? 'Proposed' : 'Select'} Appointment Date/Time`\r\n };\r\n\r\n const getAddress = () => {\r\n var fullAddress = \"\";\r\n if (eventAddress !== undefined && eventAddress !== \"\" && eventAddress !== null) {\r\n fullAddress += eventAddress;\r\n }\r\n if (city !== undefined && city !== \"\" && city !== null) {\r\n if (fullAddress !== \"\") {\r\n fullAddress += \", \" + city;\r\n }\r\n else {\r\n fullAddress += city;\r\n }\r\n }\r\n if (state !== undefined && state !== \"\" && state !== null) {\r\n if (fullAddress !== \"\") {\r\n fullAddress += \", \" + state;\r\n }\r\n else {\r\n fullAddress += state;\r\n }\r\n }\r\n if (zipcode !== undefined && zipcode !== \"\" && zipcode !== null) {\r\n if (fullAddress !== \"\") {\r\n fullAddress += \", \" + zipcode;\r\n }\r\n else {\r\n fullAddress += zipcode;\r\n }\r\n }\r\n\r\n return fullAddress;\r\n }\r\n const formatTimeSlot = (time) => {\r\n return moment('2018-01-01 ' + time.replace(\" AM\", \"\").replace(\" PM\", \"\")).format(\"hh:mm A\")\r\n }\r\n\r\n const getLastMessage = (isWhat) => {\r\n var msg = \"\";\r\n //if (isWhat == \"isBuyer\") {\r\n // //\r\n // msg = 'Select dates highlighted to view available times. Click \"CONFIRM APPOINTMENT\" to confirm your selection.'; \r\n //}\r\n //else if (isWhat == \"isSeller\") {\r\n\r\n //} \r\n //else if (isWhat == \"isBooked\") {\r\n // msg = 'Select dates highlighted to view available times.';\r\n //}\r\n //else if (isWhat == \"isBooked\") {\r\n // msg = 'Your event is scheduled for { Date and Time }.If you wish to cancel, please click on CANCEL EVENT';\r\n //}\r\n if (isBooked) {\r\n const scheduleJSON = getSchedulesJSON(pickupSchedule);\r\n msg = 'Your appointment is scheduled for ' + scheduleJSON[0].date + ' ' + formatTimeSlot(scheduleJSON[0].time[0]) + '. If you wish to cancel, please click on CANCEL APPOINTMENT.';\r\n return msg;\r\n }\r\n else if (isTimeProposal) {\r\n msg = 'Select dates highlighted to view available times. Click Propose New Date/Time to confirm your selection.';\r\n return msg;\r\n }\r\n msg = 'Select dates highlighted to view available times. Click \"CONFIRM APPOINTMENT\" to confirm your selection.';\r\n return msg;\r\n }\r\n return (\r\n
\r\n {buyerSchedules && !isBooked && (\r\n {eventName} Appointment proposed Date/Time was successfully sent\r\n }\r\n />\r\n )}\r\n
\r\n

\r\n {getTitle()}\r\n

\r\n\r\n {renderPageActions()}\r\n
\r\n
{\r\n // {isTimeProposal && {getLastMessage(\"isSeller\")}}\r\n // {!isTimeProposal && {!isBooked && getLastMessage(\"isBuyer\")}\r\n // {isBooked && getLastMessage(\"isBooked\")}} \r\n }\r\n {getLastMessage(\"isSeller\")}\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n {isBooked && (\r\n
\r\n toggleCancelModalState(true)} title='Cancel appointment' />\r\n
\r\n )}\r\n\r\n {(address || specialInstructions) && (\r\n
The seller provided the address and any special instructions for the appointment below. \r\n {(eventAddress) && (\r\n <>\r\n
Appointment Address
\r\n
{getAddress()}
\r\n {\r\n //\r\n }\r\n \r\n )}\r\n {specialInstructions && (\r\n <>\r\n
Special Instructions
\r\n
{specialInstructions}
\r\n \r\n )}\r\n
\r\n )\r\n }\r\n \r\n
\r\n
\r\n\r\n {renderLogger()}\r\n\r\n (\r\n \r\n )}\r\n descriptionRenderer={() => (\r\n\r\n
\r\n\r\n {\r\n // }\r\n // onClick={() => {\r\n // if (typeof window.navigator.msSaveBlob !== 'undefined') { // IE\r\n // var blob = new Blob([calendarContent], { type: 'text/calendar' });\r\n // window.navigator.msSaveBlob(blob, 'event.ics');\r\n // } else {\r\n // window.open(\"data:text/calendar;charset=utf8,\" + escape(calendarContent));\r\n // }\r\n // }}\r\n // className='submit-button'\r\n // >\r\n // Download iCalendar\r\n //\r\n }\r\n\r\n
\r\n )}\r\n isOpened={isModalOpened}\r\n handleClose={() => dispatch(toggleSuccessMessage(false))}\r\n />\r\n\r\n toggleCancelModalState(false)}\r\n opened={cancelOpened}\r\n />\r\n
\r\n )\r\n}\r\n\r\nexport default PickupSlot;","import constants from './constants';\r\nimport api from './api';\r\nimport {createAsyncAction} from '../../utils/thunk_utils';\r\n\r\nexport const setTimeProposalMode = (flag) => ({\r\n type: constants.SET_TIME_PROPOSAL_MODE,\r\n data: flag\r\n});\r\n\r\nexport const getPickupData = (id) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.GET_PICKUP_DATA,\r\n api.getPickupData\r\n )(id));\r\n};\r\n\r\nexport const sendPickupData = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.SEND_PICKUP_DATA,\r\n api.sendPickupData\r\n )(data));\r\n};\r\n\r\nexport const proposeNewTime = (data) => (dispatch) => {\r\n dispatch(createAsyncAction(\r\n constants.PROPOSE_NEW_TIME,\r\n api.proposeNewTime\r\n )(data));\r\n};\r\n\r\nexport const toggleSuccessMessage = (flag) => ({\r\n type: constants.TOGGLE_SUCCESS_MESSAGE,\r\n data: flag\r\n});","import React from 'react';\r\nimport DateRangeIcon from '@material-ui/icons/DateRange';\r\nimport { useSelector } from 'react-redux';\r\n\r\nexport default (props) => {\r\n\r\n const eventName = useSelector(state => state.redirect.eventName);\r\n return (\r\n
\r\n

\r\n
Your appointment, {eventName}, was canceled. Check your email inbox for updates.
\r\n\r\n {\r\n //Event was canceled. Check your email inbox to get updates\r\n }\r\n

\r\n
\r\n )\r\n};","import React, {useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport { withRouter } from \"react-router\";\r\n\r\nconst Redirect = ({history}) => {\r\n const url = useSelector(state => state.redirect.url);\r\n useEffect(() => {\r\n url && history.push(url);\r\n }, [url, history])\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport default withRouter(Redirect)","import React from 'react';\r\nimport {Route, Switch, BrowserRouter, Redirect} from 'react-router-dom';\r\nimport {Provider} from 'react-redux';\r\nimport Header from './components/Header/index';\r\nimport Loader from './components/Loader/index';\r\nimport store from './store';\r\nimport CreateSchedule from './pages/CreateSchedule/index';\r\nimport CreateCalendar from '../src/pages/CreateCalendar/index';\r\nimport PickupSlot from '../src/pages/PickupSlot/index';\r\nimport FinalPage from '../src/pages/FinalPage/index';\r\nimport RedirectHandler from '../src/components/RedirectHandler/index';\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\nconst CREATE_CALENDAR = '/doas-surplus';\r\nconst CREATE_SCHEDULE = '/surplus/:guid';\r\nconst PICKUP_SLOT = '/buyer/:guid';\r\nconst FINAL = '/final';\r\n\r\nconst Root = () => {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Root;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './styles/index.scss';\r\nimport App from './root';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}