{"version":3,"file":"chunks/253.chunk.7dcf87eb9bf28b443e03.js","mappings":"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","sources":["webpack://SMAesthetics/./common/react/components/Forms/FormikInput/FormikInput.tsx","webpack://SMAesthetics/./common/react/components/Forms/FormikField/FormikField.tsx","webpack://SMAesthetics/./common/react/utils/validationHelpers.ts","webpack://SMAesthetics/./common/react/components/Forms/PhoneInput/PhoneInput.tsx","webpack://SMAesthetics/./common/react/components/Core/ItemEditor/FormikRef.tsx","webpack://SMAesthetics/./common/react/components/Modal/LeaveConfirmationModal.tsx","webpack://SMAesthetics/./common/react/components/Core/ItemEditor/ItemEditor.tsx","webpack://SMAesthetics/./common/react/hooks/useMobileView.ts","webpack://SMAesthetics/./NorthernTunaCommon/react/objects/Device.ts","webpack://SMAesthetics/./NorthernTunaCommon/react/components/UI/LogoLoader/LogoLoader.tsx","webpack://SMAesthetics/./ClientApp/components/UI/Inquiry/Inquiry.tsx","webpack://SMAesthetics/delegated 5954 from dll-reference vendor_96a0480f35d3a07b6c08","webpack://SMAesthetics/delegated 8193 from dll-reference vendor_96a0480f35d3a07b6c08"],"sourcesContent":["import * as React from 'react';\n\nimport { FieldProps, ErrorMessage, getIn } from 'formik';\n\nexport type FormikInputRenderFunc = (fieldProps: FieldProps, inputProps?: React.HTMLProps) => React.ReactElement;\n\nexport interface FormikInputProps {\n\tfieldProps: FieldProps;\n\tcontainerClassName?: string;\n\trender?: FormikInputRenderFunc;\n\ttitle?: string;\n\tinputId?: string;\n\tshowValidateAfterSubmit?: boolean;\n\tinputProps?: React.HTMLProps;\n\tErrorComponent?: React.FC<{error: string}>;\n\twithValidIndicator?: boolean;\n\tcustomValidCondition?: (errors, touched, value, form) => boolean;\n}\n\nexport interface ValidFieldWrapperProps {\n\tfieldName: string;\n\tform: FieldProps['form'];\n\tcustomValidCondition?: (errors, touched, value, form) => boolean;\n}\n\nexport const ValidFieldWrapper: React.FC = ({\n\tfieldName,\n\tform,\n\tchildren,\n\tcustomValidCondition = (errors, touched, value, form) => !errors && value,\n}) => {\n\tconst errors = getIn(form.errors, fieldName);\n\tconst touched = getIn(form.touched, fieldName);\n\tconst value = getIn(form.values, fieldName);\n\n\treturn <>\n\t\t{customValidCondition(errors, touched, value, form) ?
: null}\n\t\t{children}\n\t;\n};\n\nconst defaultRender = ({ form, field }: FieldProps, inputProps?: React.HTMLProps) =>\n\t;\n\nexport const defaultErrorComponent: React.FC<{error: string | object}> = ({ error }) =>\n\t
\n\t\t{typeof error === 'string' ? error : Object.keys(error)\n\t\t\t.filter((key) => typeof error[key] === 'string')\n\t\t\t.map((key) => error[key])\n\t\t\t.join(', ')}\n\t
;\n\nexport const FormikInput: React.FC = ({\n\tfieldProps,\n\tcontainerClassName = 'form-group col-sm-6',\n\trender = defaultRender,\n\ttitle,\n\tinputId,\n\tshowValidateAfterSubmit = true,\n\tinputProps,\n\tErrorComponent = defaultErrorComponent,\n\twithValidIndicator,\n\tcustomValidCondition,\n}) => {\n\tconst { form, field } = fieldProps;\n\n\treturn
\n\t\t{title && }\n\t\t
\n\t\t\t{(showValidateAfterSubmit ? form.submitCount > 0 : true) && (\n\t\t\t\t }\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{withValidIndicator ? : null}\n\t\t\t{render(fieldProps, inputProps)}\n\t\t
\n\t
;\n};\n","import * as React from 'react';\n\nimport { Field, FieldProps } from 'formik';\n\nimport { FormikInput, FormikInputProps, FormikInputRenderFunc } from '@common/react/components/Forms/FormikInput/FormikInput';\n\ninterface DefaultRenders {\n\ttextarea: FormikInputRenderFunc;\n}\n\nconst defaultRenders: DefaultRenders = {\n\ttextarea: ({ field }: FieldProps) => ,\n};\n\nexport interface FormikFieldProps extends Omit {\n\tfieldName: string;\n\tdefaultRender?: keyof DefaultRenders;\n}\n\nconst FormikField: React.FC = (props) => {\n\treturn (\n\t\t\n\t\t\t{(fieldProps: FieldProps) =>\n\t\t\t\t\n\t\t\t}\n\t\t\n\t);\n};\n\nexport default FormikField;\n","import * as Yup from 'yup';\n\nimport { WithDeleted } from '@common/typescript/objects/WithDeleted';\n\nexport const phoneRegexp = /(\\(([0-9]{3})\\)\\s([0-9]{3})[-]([0-9]{4})|\\+([0-9]{11}))/;\n\nexport const formattedPhoneRegexp = /^\\+[1-9]+ \\([1-9]\\d{2}\\) \\d\\d\\d-\\d\\d\\d\\d$/;\n\nexport const stringOnlyLettersRegexp = /^[a-zA-Z]*$/;\n\nexport const simpleStringValidator = Yup.string().required();\n\nexport const nullableStringValidator = Yup.string().nullable().required();\n\nexport const nullableStringNotRequiredValidator = Yup.string().nullable().notRequired();\n\nexport const stringOnlyLettersValidator = Yup.string().matches(stringOnlyLettersRegexp, 'Use only letters').required();\n\nexport const simpleNumberValidator = Yup.number().required();\n\nexport const positiveNumberValidator = Yup.number().positive('Required field!');\n\nexport const notEmptyPositiveNumberValidator = Yup.number().required().positive('Required field!');\n\nexport const notNullValidator = Yup.mixed().test('is-not-null', 'Required field!', (value) => value !== null);\n\nexport const notNullPositiveValidator = Yup.mixed().test('is-not-null', 'Required field!', (value) => value !== null && value >= 0);\n\nexport const emailValidator = Yup.string().email().required();\n\nexport const optionalEmailValidator = Yup.string().email().nullable().notRequired();\n\nexport const dateValidator = Yup.number().required().nullable();\n\nexport const phoneRequiredValidator = Yup.string().matches(phoneRegexp, 'Invalid phone number').required();\n\nexport const phoneValidator = Yup.string().test('is-valid', 'Invalid phone number', (value) =>\n\t!value || phoneRegexp.test(value));\n\nexport const formattedPhoneValidator = Yup.string().test('is-formatted-valid', 'Invalid phone number', (value) =>\n\t!value || formattedPhoneRegexp.test(value));\n\nexport const alphaDigitPasswordValidator = Yup.string().matches(/^([0-9a-zA-Z])+$/, 'Password should only contains digits and latin letters');\n\nexport const nonEmptyArray = (message: string) => Yup.array().test(\n\t'Non-empty array',\n\tmessage,\n\t(value: Array | undefined) => (value ? value.some((v) => !v.deleted) : false),\n);\n\nexport const nameValidator = Yup.string().test({\n\tname: 'is-valid-name',\n\ttest(value) {\n\t\tif (value && (!value.match(/[a-z]/i) || value.match(/[^a-z ]{2,}/i))) {\n\t\t\treturn this.createError({\n\t\t\t\tmessage: 'Invalid Name',\n\t\t\t});\n\t\t}\n\t\treturn true;\n\t},\n});\n\nexport const nameWithNumbersValidator = Yup.string().test({\n\tname: 'is-valid-name',\n\ttest(value) {\n\t\tif (value && (!value.match(/[a-z0-9]/i) || value.match(/[^a-z0-9 ]{2,}/i))) {\n\t\t\treturn this.createError({\n\t\t\t\tmessage: 'Invalid Name',\n\t\t\t});\n\t\t}\n\t\treturn true;\n\t},\n});\n\nexport const nameValidatorWithLengthCheck = (maxNameLength) => nameValidator.max(maxNameLength, `max characters count: ${maxNameLength}`);\n\nexport const nameWithNumbersValidatorWithLengthCheck = (maxNameLength) =>\n\tnameWithNumbersValidator.max(maxNameLength, `max characters count: ${maxNameLength}`);\n\nexport const lengthValidator = (maxLength, customMessage?) => Yup.string().max(maxLength, customMessage);\n\nexport const lengthNullableValidator = (maxLength, customMessage?) => Yup.string().nullable().max(maxLength, customMessage);\n\nexport const lengthRequiredValidator = (maxLength, customMessage?) => Yup.string().max(maxLength, customMessage).required();\n\nexport const linesCountValidator = (maxLinesCount: number, chunkSize?: number) => Yup.string().test({\n\tname: 'max-rows-count',\n\ttest(value) {\n\t\tif (value) {\n\t\t\tif (chunkSize) {\n\t\t\t\tif (value.split(/\\r\\n|\\r|\\n/i).filter((str) => !!str)\n\t\t\t\t\t.reduce((sum, str) => sum + Math.ceil(str.length / chunkSize), 0) > maxLinesCount\n\t\t\t\t) {\n\t\t\t\t\treturn this.createError({\n\t\t\t\t\t\tmessage: `max lines count: ${maxLinesCount} (each line is ${chunkSize} characters long)`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (value.split(/\\r\\n|\\r|\\n/i).filter((str) => !!str).length > maxLinesCount) {\n\t\t\t\treturn this.createError({\n\t\t\t\t\tmessage: `max lines count: ${maxLinesCount}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n});\n\nexport const minNotNullValidator = (min) => Yup.mixed().test('min', `Must be >= ${min}`, (value) => value !== null && value >= min);\n\nexport const minMaxNotNullValidator = (min, max) => Yup.mixed().test('min', `Must be >= ${min}`, (value) => value !== null && value >= min)\n\t.test('max', `Must be <= ${max}`, (value) => value !== null && value <= max);\n\nexport const minMaxValidator = (min, max) => Yup.mixed().test('min', `Must be >= ${min}`, (value) => value === null || value >= min)\n\t.test('max', `Must be <= ${max}`, (value) => value === null || value <= max);\n","import * as React from 'react';\n\ntype formEventHandler = (event: React.FormEvent) => void;\n\ninterface PhoneInputProps {\n\tclassName: string;\n\tid: string;\n\tvalue: string;\n\tformat?: string;\n\tonChange: formEventHandler;\n}\n\ninterface PhoneInputState {\n\tvalue: string;\n}\n\n/**\n\tPhone format: +d (ddd) ddd-dddd\n d is used for digit, other symbols are left as is\n */\nexport default class PhoneInput extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.handleChange = this.handleChange.bind(this);\n\t}\n\n\thandleChange(event: React.FormEvent) {\n\t\tlet value = event.currentTarget.value.replace(/[^0-9]/g, '');\n\t\tconst format = this.props.format || '+d (ddd) ddd-dddd';\n\n\t\tif (value.length > format.replace(/[^d]/g, '').length) return;\n\n\t\tfor (let i = 0; i < value.length && i < format.length; i++) {\n\t\t\tif (value[i] !== format[i] && format[i] !== 'd') {\n\t\t\t\tvalue = value.slice(0, i) + format[i] + value.slice(i);\n\t\t\t}\n\t\t}\n\n\t\tevent.currentTarget.value = value;\n\t\tthis.props.onChange(event);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n}\n","import React from 'react';\n\nimport { FormikProps } from 'formik';\n\ninterface FormikRefProps {\n\tformikRef: React.MutableRefObject | null>;\n\tformikBug: FormikProps;\n}\n\nconst FormikRef: React.FC = ({ formikRef, formikBug }) => {\n\tReact.useEffect(() => {\n\t\tif (formikRef) {\n\t\t\tformikRef.current = formikBug;\n\t\t}\n\t}, [formikBug]);\n\n\treturn <>;\n};\n\nexport default FormikRef;\n","import React from 'react';\n\n// @eslint-disable-next-line\nimport { unstable_useBlocker as useBlocker } from 'react-router-dom';\n\nimport { Location } from 'history';\n\nimport { useModal } from '@common/react/components/Modal/ModalContextProvider';\nimport { BaseParams } from '@common/react/objects/BaseParams';\n\nexport interface LeaveConfirmationModalProps {\n\thandleBlockedNavigation: (nextLocation: Location) => boolean;\n\twhen?: boolean;\n\tonOk: (leaveLocation: () => void) => void;\n\tmessage?: string;\n\tcancelText?: string;\n\tokText?: string;\n\tonCancel?: () => void;\n\tconfirmProps?: BaseParams;\n}\n\nconst LeaveConfirmationModal: React.FC = ({\n\twhen, handleBlockedNavigation, onOk, cancelText = 'No', okText = 'Yes', onCancel, ...rest\n}) => {\n\tconst { message = 'Leave the page?' } = rest;\n\tconst modalContext = useModal();\n\tconst blocker = useBlocker(({ currentLocation, nextLocation }) => {\n\t\tif (!when) return false;\n\t\tif (`${currentLocation.pathname}${currentLocation.search}` === `${nextLocation.pathname}${nextLocation.search}`) {\n\t\t\treturn false;\n\t\t}\n\t\treturn !handleBlockedNavigation(nextLocation);\n\t});\n\n\tReact.useEffect(() => {\n\t\tif (blocker.state === 'blocked' && !when) {\n\t\t\tblocker.reset();\n\t\t}\n\t\tif (blocker.state === 'blocked' && when) {\n\t\t\tmodalContext.openConfirm({\n\t\t\t\ttitle: '',\n\t\t\t\tcontent: message,\n\t\t\t\tcancelText: 'No',\n\t\t\t\tokText: 'Yes',\n\t\t\t\tonCancel: () => {\n\t\t\t\t\tblocker.proceed?.();\n\t\t\t\t\tonCancel && onCancel();\n\t\t\t\t},\n\t\t\t\tonOk: () => {\n\t\t\t\t\tconst handleLeave = () => {\n\t\t\t\t\t\tblocker.proceed?.();\n\t\t\t\t\t};\n\t\t\t\t\tonOk(handleLeave);\n\t\t\t\t},\n\t\t\t\t...rest.confirmProps,\n\t\t\t});\n\t\t}\n\t}, [when, blocker]);\n\n\treturn (\n\t\t<>\n\t);\n};\n\nexport default LeaveConfirmationModal;\n","/**\n * ## ItemEditor.tsx ##\n * This file contains ItemEditor component\n * @packageDocumentation\n * */\n\nimport React from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport {\n\tForm, Formik, FormikProps, FormikConfig, FormikHelpers,\n} from 'formik';\nimport { isEqual } from 'lodash';\n\nimport { WithDeleted } from '@common/typescript/objects/WithDeleted';\nimport { Loading } from '@common/react/components/UI/Loading/Loading';\nimport Button from '@common/react/components/Forms/Button';\nimport {\n\tuseItemProviderContext,\n\tItemProviderContextState,\n} from '@common/react/components/Core/ItemProvider/ItemProvider';\nimport Loader from '@common/react/components/Core/LoadingProvider/Loader';\nimport FormikRef from '@common/react/components/Core/ItemEditor/FormikRef';\nimport LeaveConfirmationModal, { LeaveConfirmationModalProps } from '@common/react/components/Modal/LeaveConfirmationModal';\nimport { useModal } from '@common/react/components/Modal/ModalContextProvider';\n\ninterface State extends ItemProviderContextState {\n\tsuccess?: boolean;\n\thaveChanges?: boolean;\n}\n\n/**\n * This is the description of the interface. Requires ItemProvider wrapper\n *\n * @interface ItemEditorProps\n * @typeParam T - T Any WithDeleted entity\n */\ninterface ItemEditorProps {\n\t/**\n\t * render function in edit mode\n\t * @param formikBag - formik data object. FormikProps\n\t * @param deleteItem - function from the ItemProvider context. Submit a request to remove an item\n\t * @param state - itemProvider state,\n\t * @param toggleReadonly - function changing viewing mode\n\t * @return React.ReactNode\n\t */\n\tedit: (formikBag: FormikProps, deleteItem: () => void, state: State, toggleReadonly: () => void) => React.ReactNode;\n\t/**\n\t * render function in view mode\n\t * @param item - item from ItemProvider\n\t * @param toggleReadonly - function changing viewing mode\n\t * @return React.ReactNode\n\t */\n\tview?: (item: T, toggleReadonly: () => void) => React.ReactNode;\n\t/**\n\t * function that determines the initial value for the form\n\t * @param item - item from ItemProvider\n\t */\n\tgetInitialValues?: (item: T) => any;\n\t/**\n\t * element shown when loading. Default }/>\n\t */\n\tloadingNode?: React.ReactNode;\n\t/**\n\t * link to get formikBag outside the form\n\t */\n\tformRef?: any;\n\t/**\n\t * formik properties. It is possible to overwrite values such as initialValues, onSubmit, validationSchema\n\t */\n\tformikProps?: Partial>;\n\t/**\n\t * callback after item is saved\n\t * - For example: make some changes at state\n\t * @param item - saved item from ItemProvider\n\t * @param res - request response\n\t * @param values - form values before send\n\t */\n\tafterSubmit?: (item: T, res: any, values: T) => void;\n\t/**\n\t * callback before send request\n\t * - For example. You can show a modal confirmation before sending the request\n\t * @param values - current form values\n\t * @param actions - form actions\n\t * @param submit - item save function\n\t */\n\tbeforeSubmit?: (values: T, actions, submit: () => Promise) => void;\n\t/**\n\t * if true and customButtons are not defined, default buttons will be displayed\n\t */\n\twithButtons?: boolean;\n\t/**\n\t * function to handle cancel button click. If not defined, the cancel button will not be displayed\n\t */\n\tonCancel?: () => void;\n\t/**\n\t * function to show custom buttons\n\t * @param item - item from ItemProvider\n\t * @param formikBag - formik data object. FormikProps\n\t * @param disabled - disabled for save button\n\t * @param submit\n\t * @return React.ReactNode\n\t */\n\tcustomButtons?: (item: T, formikBag: FormikProps, disabled, submit: () => Promise) => React.ReactNode;\n\t/**\n\t * add some custom buttons near default submit button\n\t */\n\tbuttons?: React.ReactNode;\n\t/**\n\t * the time during which success messages will be displayed. Default 5000 ms\n\t */\n\tshowMessageDuration?: number;\n\t/**\n\t * by default 'Successfully saved'\n\t */\n\tsuccessMessage?: string;\n\t/**\n\t * determines whether the form values need to be reset after saving. Default true\n\t */\n\tresetFormAfterSubmit?: boolean;\n\t/**\n\t * determines whether error or success messages should be shown. Default true\n\t */\n\tshowMessages?: boolean;\n\t/**\n\t * readonly mode flag. Default value get from context\n\t */\n\treadonly?: boolean;\n\t/**\n\t * get request name before submit form\n\t */\n\tgetRequestName?: (values) => string;\n\t/**\n\t * the save button is disabled if there are no changes to the form\n\t */\n\tdetectChanges?: boolean;\n\t/**\n\t * text at default save button\n\t */\n\tsaveText?: string;\n\t/**\n\t * LeaveConfirmationModal component props\n\t */\n\tleaveConfirmationModalProps?: Omit;\n\t/**\n\t * custom equality check function. By default isEqual from lodash\n\t */\n\tcustomEqual?: (initialValues, values) => boolean;\n\t/**\n\t * custom formProps\n\t */\n\tformProps?: React.FormHTMLAttributes;\n}\n\nconst ItemEditorMessage: React.FC<{message: string}> = ({ message }) => {\n\tconst ref = React.useRef(null);\n\tReact.useEffect(() => {\n\t\tif (message) {\n\t\t\tref.current?.scrollIntoView({ block: 'center', behavior: 'auto' });\n\t\t}\n\t}, [message]);\n\n\treturn <>\n\t\t{message ?
{message}
: null}\n\t;\n};\n\n/**\n * ItemEditor component.\n *\n * @typeParam T - T Any {WithDeleted}\n * @param props - ItemEditorProps\n * @type {React.FC}\n * @returns React.ReactNode\n */\nexport const ItemEditor: (p: ItemEditorProps) => React.ReactElement = (props) => {\n\tconst context = useItemProviderContext();\n\n\tif (!context.state) throw 'Need ItemProvider context!';\n\n\tconst {\n\t\tstate: {\n\t\t\titem, loading, itemLoading, readonly: readonlyContext, error, validationSchema, type, message, transformAfterSave, getIdAfterSave,\n\t\t},\n\t\tactions: {\n\t\t\tupdate, deleteItem, setMessage, setError,\n\t\t},\n\t} = context;\n\tconst readonlyProps = props.readonly;\n\tconst preventAfterSubmit = React.useRef(false);\n\tconst ref = React.useRef>(null as any);\n\tconst location = useLocation();\n\n\tconst [readonly, setReadonly] = React.useState(readonlyProps ?? readonlyContext);\n\tconst {\n\t\tgetInitialValues = (item) => item,\n\t\tloadingNode = } />,\n\t\tformRef,\n\t\tformikProps,\n\t\tafterSubmit,\n\t\tview = () => {\n\t\t\treturn null;\n\t\t},\n\t\tedit,\n\t\twithButtons,\n\t\tonCancel,\n\t\tcustomButtons,\n\t\tbuttons,\n\t\tresetFormAfterSubmit = true,\n\t\tshowMessages = true,\n\t\tbeforeSubmit: defaultBeforeSubmit = null,\n\t\tshowMessageDuration = 5000,\n\t\tsuccessMessage = 'Successfully saved',\n\t\tgetRequestName,\n\t\tdetectChanges,\n\t\tsaveText = 'Save',\n\t\tleaveConfirmationModalProps = {},\n\t\tcustomEqual = isEqual,\n\t\tformProps,\n\t} = props;\n\n\tconst {\n\t\tmessage: leaveModalMessage = 'There is unsaved data on the current page. Save before leaving?',\n\t\thandleBlockedNavigation = (nextLocation) => nextLocation.pathname.includes(location.pathname),\n\t\t...otherLeaveConfirmationModalProps\n\t} = leaveConfirmationModalProps;\n\n\tconst modalContext = useModal();\n\n\tReact.useEffect(() => {\n\t\tconst callback = () => setReadonly(readonlyProps ?? readonlyContext);\n\t\tconst haveChanges = detectChanges ? !ref.current\n\t\t\t|| !customEqual(formikProps?.initialValues ?? ref.current.initialValues, ref.current.values) : false;\n\t\tif (haveChanges && ref.current && (readonlyProps ?? readonlyContext) && !readonly) {\n\t\t\tmodalContext.openConfirm({\n\t\t\t\tonCancel: callback,\n\t\t\t\tonOk: () => {\n\t\t\t\t\tpreventAfterSubmit.current = false;\n\t\t\t\t\tref.current?.submitForm()\n\t\t\t\t\t\t.then(() => callback());\n\t\t\t\t},\n\t\t\t\tcontent: leaveModalMessage,\n\t\t\t\tcancelText: otherLeaveConfirmationModalProps.cancelText || 'No',\n\t\t\t\tokText: otherLeaveConfirmationModalProps.okText || 'Yes',\n\t\t\t});\n\t\t} else {\n\t\t\tcallback();\n\t\t}\n\t}, [readonlyProps ?? readonlyContext, formikProps?.initialValues]);\n\n\tconst handleSubmit = (values: T, actions: FormikHelpers, beforeSubmit = defaultBeforeSubmit) => {\n\t\tconst submit = () => update(values, true, getRequestName ? getRequestName(values) : undefined)\n\t\t\t.then((res) => {\n\t\t\t\tsetMessage(successMessage);\n\t\t\t\thideSuccess();\n\t\t\t\tconst newValues = { ...transformAfterSave(values, res, item), id: getIdAfterSave(res, values) };\n\t\t\t\tif (resetFormAfterSubmit) {\n\t\t\t\t\tactions?.resetForm({\n\t\t\t\t\t\tvalues: getInitialValues(newValues),\n\t\t\t\t\t\tsubmitCount: 0,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t!preventAfterSubmit.current && afterSubmit && afterSubmit(newValues, res, values);\n\t\t\t\t\tpreventAfterSubmit.current = false;\n\t\t\t\t}, 0);\n\t\t\t});\n\n\t\treturn beforeSubmit == null ? submit() : beforeSubmit(values, actions, submit);\n\t};\n\n\tconst toggleReadonly = () => {\n\t\tsetReadonly((prev) => !prev);\n\t};\n\n\tconst hideSuccess = () => {\n\t\tsetTimeout(() => {\n\t\t\tsetMessage('');\n\t\t}, showMessageDuration < 500 ? 500 : showMessageDuration);\n\t};\n\n\tif (itemLoading || !item) {\n\t\treturn loadingNode;\n\t}\n\n\tif (readonly) {\n\t\treturn view(item, toggleReadonly);\n\t}\n\n\treturn {\n\t\t\tconst obj = new Proxy(values, {\n\t\t\t\tget: (target, prop) => {\n\t\t\t\t\tif (typeof prop === 'string' && !prop.includes('$')) {\n\t\t\t\t\t\tif (target && !(prop in target) && prop !== 'then' && prop !== 'catch') {\n\t\t\t\t\t\t\tsetError(`${prop} property is missing from Item`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn target[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn formikProps?.validate?.(obj) || validationSchema?.validate(obj, { abortEarly: false })\n\t\t\t\t.then(() => undefined)\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconst obj: any = {};\n\t\t\t\t\tif (typeof err === 'string') {\n\t\t\t\t\t\treturn err;\n\t\t\t\t\t}\n\t\t\t\t\tObject.keys(err)\n\t\t\t\t\t\t.filter((key) => err[key] !== 'ValidationError')\n\t\t\t\t\t\t.forEach((key) => {\n\t\t\t\t\t\t\tif (err[key]) obj[key] = err[key];\n\t\t\t\t\t\t});\n\t\t\t\t\treturn obj;\n\t\t\t\t});\n\t\t}}\n\t>\n\t\t{(formikBag: FormikProps) => {\n\t\t\tconst haveChanges = detectChanges ? !customEqual(formikProps?.initialValues ?? formikBag.initialValues, formikBag.values) : false;\n\t\t\tref.current = formikBag;\n\t\t\treturn
\n\t\t\t\t\n\t\t\t\t{detectChanges ? {\n\t\t\t\t\t\tpreventAfterSubmit.current = false;\n\t\t\t\t\t\tformikBag.submitForm()\n\t\t\t\t\t\t\t?.then(() => setTimeout(leaveLocation, 200));\n\t\t\t\t\t}}\n\t\t\t\t\t{...otherLeaveConfirmationModalProps}\n\t\t\t\t/> : null}\n\t\t\t\t{edit(formikBag, deleteItem, { ...context.state, success: !!message, haveChanges }, toggleReadonly)}\n\t\t\t\t{customButtons\n\t\t\t\t\t? customButtons(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\tformikBag,\n\t\t\t\t\t\tdetectChanges ? !haveChanges : false,\n\t\t\t\t\t\t() => formikBag.submitForm(),\n\t\t\t\t\t)\n\t\t\t\t\t: withButtons &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t{onCancel && }\n\t\t\t\t\t\t{buttons && buttons}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{showMessages && <>\n\t\t\t\t\t\n\t\t\t\t\t{error ?
{error}
: ''}\n\t\t\t\t}\n\t\t\t;\n\t\t}}\n\t;\n};\n","import * as React from 'react';\n\nexport const useMobileView = (\n\tsize = 520,\n\tonResize: (setIsMobile: React.Dispatch>) => void = (setIsMobile) => {\n\t\tsetIsMobile(window.innerWidth < size);\n\t},\n) => {\n\tconst [isMobile, setIsMobile] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tconst resize = () => {\n\t\t\tonResize(setIsMobile);\n\t\t};\n\n\t\tresize();\n\t\twindow.addEventListener('resize', resize);\n\t\treturn () => window.removeEventListener('resize', resize);\n\t}, []);\n\n\treturn isMobile;\n};\n","export enum Device {\n\tDesktop = 0,\n\tMobile = 1,\n\tAmp = 2\n}\n\nexport const DeviceTitle = {\n\t[Device.Desktop]: 'Desktop',\n\t[Device.Mobile]: 'Mobile',\n\t[Device.Amp]: 'AMP',\n};\n\nexport const DeviceIcon = {\n\t[Device.Desktop]: 'fa-television',\n\t[Device.Mobile]: 'fa-mobile fa-lg',\n\t[Device.Amp]: 'fa-flash',\n};\n","import React from 'react';\n\nimport '@commonTuna/react/scss/components/logoLoader.scss';\n\ninterface IProps {\n\tsize?: number;\n\twithScale?: number;\n}\n\nconst LogoLoader: React.FC = ({ size = 60, withScale = 1 }) => {\n\tconst len = size * Math.PI;\n\tconst strokeWidth = `${size * (withScale / 30)}`;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n\nexport const LogoLoaderPage: React.FC = (props) => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default LogoLoader;\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport * as Yup from 'yup';\n\nimport FormikField from '@common/react/components/Forms/FormikField/FormikField';\nimport { emailValidator, phoneValidator, simpleStringValidator } from '@common/react/utils/validationHelpers';\nimport PhoneInput from '@common/react/components/Forms/PhoneInput/PhoneInput';\nimport { ItemProvider } from '@common/react/components/Core/ItemProvider/ItemProvider';\nimport { ItemEditor } from '@common/react/components/Core/ItemEditor/ItemEditor';\nimport { useMobileView } from '@common/react/hooks/useMobileView';\n\nimport LogoLoader from '@commonTuna/react/components/UI/LogoLoader/LogoLoader';\nimport { Device } from '@commonTuna/react/objects/Device';\n\ninterface FormValues {\n\tid: number;\n\tname: string;\n\temail: string;\n\ttext: string;\n\tphone: string;\n\tpath: string;\n\tdevice: Device;\n}\n\ninterface Props {\n\tclassName?: string;\n\tidPrefix?: string;\n\thideTitle?: boolean;\n\ttitle?: string;\n}\n\nconst initialValues: FormValues = {\n\tid: -1,\n\tname: '',\n\temail: '',\n\ttext: '',\n\tphone: '',\n\tpath: '',\n\tdevice: Device.Desktop,\n};\n\nconst validationSchema = Yup.object().shape({\n\tname: simpleStringValidator,\n\tphone: phoneValidator,\n\temail: emailValidator,\n\t// text: simpleStringValidator\n});\n\nconst successMessage = 'Thank you! Your inquiry has been successfully sent. Our manager will contact you as soon as possible';\n\nconst NewConcatForm: React.FC = ({\n\tclassName = '', idPrefix = '', hideTitle, title = 'Book Appointment',\n}) => {\n\tconst [visible, setVisible] = React.useState(true);\n\n\tconst isMobile = useMobileView();\n\tconst location = useLocation();\n\n\tconst handleChange = (\n\t\te: React.ChangeEvent,\n\t\tform,\n\t\tname,\n\t) => {\n\t\tconst { value } = e.currentTarget;\n\t\tform.setFieldValue(name, value);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t initialValues}\n\t\t\t\tclearForSubmit={(values) => ({\n\t\t\t\t\tname: values.name,\n\t\t\t\t\temail: values.email,\n\t\t\t\t\ttext: values.text,\n\t\t\t\t\tphone: values.phone,\n\t\t\t\t\tmobile: isMobile,\n\t\t\t\t\tpath: location.pathname,\n\t\t\t\t\tdevice: isMobile ? Device.Mobile : Device.Desktop,\n\t\t\t\t})}\n\t\t\t\tonRequestError={() => setTimeout(() => setVisible(true), 1000)}\n\t\t\t\ttransformErrorMessage={() => 'Something went wrong'}\n\t\t\t>\n\t\t\t\t{({ state: { error, loading, message } }) => {\n\t\t\t\t\treturn <>\n\t\t\t\t\t\t{(loading || error) &&
\n\t\t\t\t\t\t\t{loading && }\n\t\t\t\t\t\t\t{!loading && error &&
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t\t
}\n\t\t\t\t\t\t
}\n\t\t\t\t\t\t{message\n\t\t\t\t\t\t\t\t&&
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{message}
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{title &&

{title}

}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbeforeSubmit={(values, actions, submit) => {\n\t\t\t\t\t\t\t\t\tsetVisible(false);\n\t\t\t\t\t\t\t\t\tsubmit();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tshowMessageDuration={7000}\n\t\t\t\t\t\t\t\tafterSubmit={() => {\n\t\t\t\t\t\t\t\t\tsetTimeout(() => setVisible(true), 5000);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tshowMessages={false}\n\t\t\t\t\t\t\t\tsuccessMessage={successMessage}\n\t\t\t\t\t\t\t\tedit={(formikBag, _) => {\n\t\t\t\t\t\t\t\t\treturn (<>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t (<>\n\t\t\t\t\t\t\t\t\t\t\t\t handleChange(e, form, field.name)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tSUBMIT\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{error &&
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t\t
}\n\t\t\t\t\t\t
\n\t\t\t\t\t;\n\t\t\t\t}}\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default NewConcatForm;\n","module.exports = (__webpack_require__(1939))(5954);","module.exports = (__webpack_require__(1939))(8193);"],"names":["ValidFieldWrapper","fieldName","form","children","customValidCondition","errors","touched","value","getIn","values","className","defaultRender","inputProps","field","type","id","name","defaultErrorComponent","error","Object","keys","filter","key","map","join","FormikInput","fieldProps","containerClassName","render","title","inputId","showValidateAfterSubmit","ErrorComponent","withValidIndicator","htmlFor","submitCount","ErrorMessage","msg","defaultRenders","textarea","props","Field","phoneRegexp","formattedPhoneRegexp","simpleStringValidator","Yup","required","emailValidator","nullable","notRequired","matches","positive","test","email","phoneValidator","match","this","createError","message","PhoneInput","handleChange","bind","event","currentTarget","replace","format","length","i","slice","onChange","React","formikRef","formikBug","current","when","handleBlockedNavigation","onOk","onCancel","cancelText","okText","rest","modalContext","useModal","blocker","useBlocker","currentLocation","nextLocation","pathname","search","state","reset","openConfirm","content","proceed","confirmProps","ItemEditorMessage","ref","scrollIntoView","block","behavior","ItemEditor","context","useItemProviderContext","item","loading","itemLoading","readonlyContext","readonly","validationSchema","transformAfterSave","getIdAfterSave","actions","update","deleteItem","setMessage","setError","readonlyProps","preventAfterSubmit","location","useLocation","setReadonly","getInitialValues","loadingNode","Loader","defaultLoader","Loading","formRef","formikProps","afterSubmit","view","edit","withButtons","customButtons","buttons","resetFormAfterSubmit","showMessages","beforeSubmit","defaultBeforeSubmit","showMessageDuration","successMessage","getRequestName","detectChanges","saveText","leaveConfirmationModalProps","customEqual","isEqual","formProps","leaveModalMessage","includes","otherLeaveConfirmationModalProps","callback","initialValues","submitForm","then","toggleReadonly","prev","hideSuccess","setTimeout","Formik","onSubmit","submit","undefined","res","newValues","resetForm","validate","obj","Proxy","get","target","prop","abortEarly","err","forEach","formikBag","haveChanges","Form","leaveLocation","success","Button","disabled","isLoading","onClick","Device","LogoLoader","size","withScale","len","Math","PI","strokeWidth","width","height","xmlns","r","cx","cy","style","strokeDasharray","strokeDashoffset","Desktop","Mobile","Amp","text","phone","path","device","shape","idPrefix","hideTitle","visible","setVisible","isMobile","onResize","setIsMobile","window","innerWidth","resize","addEventListener","removeEventListener","useMobileView","ItemProvider","withoutAdd","clearForSubmit","mobile","onRequestError","transformErrorMessage","_","e","setFieldValue","module","exports","__webpack_require__"],"sourceRoot":""}