\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./ContactDetailsForm.vue?vue&type=template&id=66e02269&scoped=true\"\nimport script from \"./ContactDetailsForm.vue?vue&type=script&lang=js\"\nexport * from \"./ContactDetailsForm.vue?vue&type=script&lang=js\"\n\nimport \"./ContactDetailsForm.vue?vue&type=style&index=0&id=66e02269&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66e02269\"]])\n\nexport default __exports__\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QInput});\n","\r\n
\r\n \r\n \r\n {{$t('message.timezoneWarningDialog1')}} {{ data }} {{$t('message.timezoneWarningDialog2')}}
\r\n {{$t('message.timezoneWarningDialog3')}}\r\n {{ Intl.DateTimeFormat().resolvedOptions().timeZone }}\r\n \r\n\r\n \r\n \r\n OK \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./TimeZoneDialog.vue?vue&type=template&id=3b338144\"\nimport script from \"./TimeZoneDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TimeZoneDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QDialog,QCard,QCardSection,QCardActions,QSeparator,QBtn});\n","/**\r\n *\r\n * @param url Must begin with a forward slash!\r\n * @returns A Fullcalendar event source function\r\n */\r\nimport { H2OClientGet } from \"@/plugins/axiosconfig\";\r\n\r\nconst AuthTokenInjectedEventSource = (url, _params) => {\r\n return (info, successCallback, failureCallback) => {\r\n const { startStr, endStr } = info;\r\n H2OClientGet(url, {\r\n params: { start: startStr, end: endStr, ...(_params ?? {}) },\r\n })\r\n .then(({ data }) => successCallback(data))\r\n .catch((reason) => failureCallback(reason));\r\n };\r\n};\r\n\r\nexport default AuthTokenInjectedEventSource;\r\n","import { render } from \"./TimeSlotSelection.vue?vue&type=template&id=d883c784&scoped=true\"\nimport script from \"./TimeSlotSelection.vue?vue&type=script&lang=js\"\nexport * from \"./TimeSlotSelection.vue?vue&type=script&lang=js\"\n\nimport \"./TimeSlotSelection.vue?vue&type=style&index=0&id=d883c784&lang=css\"\nimport \"./TimeSlotSelection.vue?vue&type=style&index=1&id=d883c784&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d883c784\"]])\n\nexport default __exports__\nimport QLinearProgress from 'quasar/src/components/linear-progress/QLinearProgress.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QLinearProgress,QDialog,QCard,QCardSection,QSeparator,QInput,QCardActions,QBtn});\n","\r\n
\r\n
\r\n
\r\n {{$t(\"message.noAddressFoundFatal\")}}\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\n\r\n\r\n\r\n","import { render } from \"./AddressConfirmation.vue?vue&type=template&id=37cc7b72&scoped=true\"\nimport script from \"./AddressConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./AddressConfirmation.vue?vue&type=script&lang=js\"\n\nimport \"./AddressConfirmation.vue?vue&type=style&index=0&id=37cc7b72&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-37cc7b72\"]])\n\nexport default __exports__\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QInput,QSelect,QIcon,QField});\n","\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ $t(label) }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./HorizontalTimeline.vue?vue&type=template&id=1e2701ee&scoped=true\"\nimport script from \"./HorizontalTimeline.vue?vue&type=script&lang=js\"\nexport * from \"./HorizontalTimeline.vue?vue&type=script&lang=js\"\n\nimport \"./HorizontalTimeline.vue?vue&type=style&index=0&id=1e2701ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e2701ee\"]])\n\nexport default __exports__","import { render } from \"./BookingWizard.vue?vue&type=template&id=1ea126ad&scoped=true\"\nimport script from \"./BookingWizard.vue?vue&type=script&lang=js\"\nexport * from \"./BookingWizard.vue?vue&type=script&lang=js\"\n\nimport \"./BookingWizard.vue?vue&type=style&index=0&id=1ea126ad&lang=css\"\nimport \"./BookingWizard.vue?vue&type=style&index=1&id=1ea126ad&scoped=true&lang=css\"\nimport \"./BookingWizard.vue?vue&type=style&index=2&id=1ea126ad&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1ea126ad\"]])\n\nexport default __exports__\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QLinearProgress from 'quasar/src/components/linear-progress/QLinearProgress.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QCard,QBtn,QLinearProgress,QDialog,QCardSection,QSeparator,QField});\n","import { render } from \"./NewBookingApp.vue?vue&type=template&id=993df3ba\"\nimport script from \"./NewBookingApp.vue?vue&type=script&lang=js\"\nexport * from \"./NewBookingApp.vue?vue&type=script&lang=js\"\n\nimport \"./NewBookingApp.vue?vue&type=style&index=0&id=993df3ba&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import \"./styles/quasar.sass\";\r\nimport \"@quasar/extras/material-icons/material-icons.css\";\r\nimport Notify from 'quasar/src/plugins/notify/Notify.js';import LoadingBar from 'quasar/src/plugins/loading-bar/LoadingBar.js';import Loading from 'quasar/src/plugins/loading/Loading.js';import QSeparator from 'quasar/src/components/separator/QSeparator.js';import QCard from 'quasar/src/components/card/QCard.js';import QInput from 'quasar/src/components/input/QInput.js';import QDialog from 'quasar/src/components/dialog/QDialog.js';import QBtn from 'quasar/src/components/btn/QBtn.js';import QCardActions from 'quasar/src/components/card/QCardActions.js';import QCardSection from 'quasar/src/components/card/QCardSection.js';import QTooltip from 'quasar/src/components/tooltip/QTooltip.js';import QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';import QSpace from 'quasar/src/components/space/QSpace.js';import QLinearProgress from 'quasar/src/components/linear-progress/QLinearProgress.js';import QSpinner from 'quasar/src/components/spinner/QSpinner.js';import QSelect from 'quasar/src/components/select/QSelect.js';import QSpinnerDots from 'quasar/src/components/spinner/QSpinnerDots.js';import QIcon from 'quasar/src/components/icon/QIcon.js';import QSlider from 'quasar/src/components/slider/QSlider.js';;\r\n\r\n// To be used on app.use(Quasar, { ... })\r\nexport default {\r\n // corresponds to quasar.conf.js/framework/...\r\n config: {\r\n loadingBar: {\r\n position: \"bottom\",\r\n size: \"5px\",\r\n color: \"brand\",\r\n skipHijack: true,\r\n },\r\n loading: {\r\n delay: 250,\r\n },\r\n },\r\n components: {\r\n QSeparator,\r\n QCard,\r\n QInput,\r\n QDialog,\r\n QBtn,\r\n QCardActions,\r\n QCardSection,\r\n QTooltip,\r\n QCheckbox,\r\n QLinearProgress,\r\n QSpinner,\r\n QSelect,\r\n QSpinnerDots,\r\n QIcon,\r\n QSlider,\r\n QSpace,\r\n },\r\n plugins: {\r\n Notify,\r\n LoadingBar,\r\n Loading,\r\n },\r\n};\r\n","import { createStore } from \"vuex\";\r\nimport { _axios, H2OClientGet, H2OCompanyGet } from \"@/plugins/axiosconfig\";\r\nimport { GetEmbedConfig } from \"@/embedutil\";\r\n\r\nconst store = createStore({\r\n state() {\r\n return {\r\n token: \"\",\r\n utility_timezone: null,\r\n\r\n all_utilities: [],\r\n all_utilities_loading: true,\r\n isDev: process.env.VUE_APP_BUILD_NAME === \"LOCAL_DEV\",\r\n firstTimeslotMillis: null,\r\n };\r\n },\r\n getters: {\r\n timezoneLoading(state) {\r\n return state.utility_timezone == null;\r\n },\r\n },\r\n\r\n actions: {\r\n loadAllUtilities({ commit }) {\r\n commit(\"_set_all_utilities_loading\", true);\r\n let promise;\r\n const { companyID, clientID } = GetEmbedConfig();\r\n if (companyID == null && clientID == null) {\r\n promise = _axios.get(\"/v2/scheduling/projects\"); // no company or client prefix\r\n } else if (companyID) {\r\n // company prefix\r\n promise = H2OCompanyGet(\"/scheduling/projects\"); // no /v2!\r\n } else if (companyID != null && clientID == null){\r\n console.error(\r\n \"Got null companyID with not-null clientID. This error indicates that the application was not embedded correctly.\"\r\n );\r\n promise = _axios.get(\"/v2/scheduling/projects\"); // no company or client prefix\r\n }\r\n promise.then(function ({ data }) {\r\n commit(\"_set_all_utilities\", data);\r\n })\r\n .catch(function (reason) {\r\n console.error(\"Failed to load utilities: \", reason);\r\n window.h2o_asm_apps.booking_self_service_config.failureCallback(\r\n \"fetching utilities\",\r\n reason\r\n );\r\n })\r\n .finally(() => {\r\n commit(\"_set_all_utilities_loading\", false);\r\n });\r\n },\r\n\r\n getFirstTimeslot({ commit }) {\r\n const { companyID, clientID } = GetEmbedConfig();\r\n if (!(companyID && clientID)) {\r\n console.error(\r\n \"Can't fetch first timeslot because companyID or clientID is not defined: \",\r\n GetEmbedConfig()\r\n );\r\n }\r\n const one_day = 24 * 60 * 60 * 1000;\r\n H2OClientGet(\"/scheduling/timeslots\", {\r\n params: {\r\n returnFirstOnly: true,\r\n start:\r\n new Date(new Date().getTime() - one_day)\r\n .toISOString()\r\n .substring(0, 10) + \"T00:00:00-00:00\",\r\n end:\r\n new Date(new Date().getTime() + 30 * 6 * one_day)\r\n .toISOString()\r\n .substring(0, 10) + \"T00:00:00-00:00\",\r\n isSelfBooked: true,\r\n },\r\n })\r\n .then(({ data }) => {\r\n commit(\"_set_first_timeslot_millis\", data[0]?.dateMillis);\r\n })\r\n .catch((reason) => {\r\n console.error(\"Failed to get start time of first free time slot\");\r\n window.gtag(\"event\", \"self_service_failure\", {\r\n label: \"Failed to get start time of first free time slot\",\r\n error_description: \"\" + reason,\r\n });\r\n }); // don't show error in UI\r\n },\r\n },\r\n\r\n mutations: {\r\n _set_first_timeslot_millis(state, millis) {\r\n state.firstTimeslotMillis = millis;\r\n },\r\n\r\n _set_all_utilities(state, all) {\r\n state.all_utilities = all;\r\n },\r\n\r\n _set_all_utilities_loading(state, loading) {\r\n state.all_utilities_loading = loading;\r\n },\r\n\r\n set_auth_token(state, token) {\r\n state.token = token;\r\n },\r\n\r\n set_utility_timezone(state, timezone) {\r\n console.log(\"set_utility_timezone with timezone: \", timezone);\r\n if (!timezone) {\r\n console.error(\"Replacing empty timezone with US/Mountain!\");\r\n timezone = \"US/Mountain\";\r\n }\r\n state.utility_timezone = timezone;\r\n },\r\n },\r\n});\r\n\r\nexport default store;\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","import { render } from \"./CancelButton.vue?vue&type=template&id=06fd21b9\"\nimport script from \"./CancelButton.vue?vue&type=script&lang=js\"\nexport * from \"./CancelButton.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./OkayButton.vue?vue&type=template&id=3d5f9543\"\nimport script from \"./OkayButton.vue?vue&type=script&lang=js\"\nexport * from \"./OkayButton.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { render } from \"./BookingDetails.vue?vue&type=template&id=65df10ca&scoped=true\"\nimport script from \"./BookingDetails.vue?vue&type=script&lang=js\"\nexport * from \"./BookingDetails.vue?vue&type=script&lang=js\"\n\nimport \"./BookingDetails.vue?vue&type=style&index=0&id=65df10ca&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-65df10ca\"]])\n\nexport default __exports__\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QLinearProgress from 'quasar/src/components/linear-progress/QLinearProgress.js';\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QCard,QCardSection,QLinearProgress,QInput,QCardActions,QDialog,QSeparator,QField});\n","import { render } from \"./BookingDetailsApp.vue?vue&type=template&id=6bd18246\"\nimport script from \"./BookingDetailsApp.vue?vue&type=script&lang=js\"\nexport * from \"./BookingDetailsApp.vue?vue&type=script&lang=js\"\n\nimport \"./BookingDetailsApp.vue?vue&type=style&index=0&id=6bd18246&lang=css\"\nimport \"./BookingDetailsApp.vue?vue&type=style&index=1&id=6bd18246&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// internationalization using https://vue-i18n.intlify.dev/guide/\r\n\r\nexport const messages = {\r\n en_US: {\r\n message: {\r\n yourWaterUtility: 'Your Water Utility',\r\n bookAnAppointment: 'Book an Appointment',\r\n confirmTheAddress: \"Confirm the Address for this Appointment\",\r\n confirmContactDetails: \"Confirm your Contact Details\",\r\n chooseADate: \"Choose a Date{tz}\",\r\n next: \"Next\",\r\n back: \"Back\",\r\n\r\n identification: \"Identification\",\r\n findMyAccount: \"Find my Account\",\r\n contactInfo: \"Contact Info\",\r\n contactInformation: \"Contact Information\",\r\n selectATime: \"Select a Time\",\r\n chooseTime: \"Choose Time\",\r\n confirmAddress: \"Confirm Address\",\r\n addressConfirmation: \"Address Confirmation\",\r\n\r\n allDone: \"All Done!\",\r\n doneAndRedirect: \"Your appointment has been created successfully. You will be redirected shortly.\",\r\n exactlyAsStated: \"Please enter this value exactly as it occurs on your last bill.\",\r\n required: \"This field is required\",\r\n\r\n yourName: \"Your Name\",\r\n yourEmailAddress: \"Your Email Address\",\r\n yourPhoneNumber: \"Your Phone Number\",\r\n\r\n nameOnTheAccount: \"Name on the account\",\r\n accountName: \"Full Account Name:\",\r\n selfBookingAccountType: \"Account Number:\",\r\n selfBookingAccountTypePlaceholder: \"Your Account Number\",\r\n serviceAddress: \"Service Address:\",\r\n selectAnAddress: \"Select an address\",\r\n\r\n timeZone: \"Time Zone\",\r\n scheduleAt: \"Schedule appointment at\",\r\n cancel: \"Cancel\",\r\n createAppointment: \"Create Appointment\",\r\n additionalComments: \"Additional notes or comments:\",\r\n tryFindAccountAgain: \"Records not found - please ensure the name and number match your bill exactly, and try again.\",\r\n slotOverbooked: \"This slot is no longer free, please choose another.\",\r\n\r\n canceledAppointment: \"Canceled appointment\",\r\n\r\n timezoneWarningDialog1: \"Please choose a day and time in timezone:\",\r\n timezoneWarningDialog2: \"This is the time zone of your water utility.\",\r\n timezoneWarningDialog3: \"Your local time zone is:\",\r\n\r\n error: \"Error\",\r\n invalidPhoneNumber: \"Invalid Phone Number | Invalid Phone Number(s)\",\r\n invalidEmail: \"Not a valid email | Invalid email(s)\",\r\n noMatchesFound: \"No matches found.\",\r\n noAddressFoundFatal: \"No address found. Please contact your water utility to resolve this issue.\",\r\n missingEmbedCompanyClientFatal: \"Missing companyID and/or clientID values: {companyID}, {clientID}. Please contact administrators if this issue persists.\",\r\n\r\n failedToFindAccountFatal: \"Failed to find your account, please make your appointment by phone.\",\r\n failedCreateAppointment: \"Failed to create an appointment.\",\r\n\r\n unexpectedFatalError: \"An unexpected error occurred. Please contact administrators if this issue persists.\",\r\n\r\n cancelAppointmentFailed: \"Failed to cancel appointment.\"\r\n },\r\n },\r\n\r\n es_US: {\r\n message: {\r\n yourWaterUtility: 'Su Servicio de Agua',\r\n bookAnAppointment: 'Reservar una Cita',\r\n confirmTheAddress: 'Confirme la Dirección para esta Cita',\r\n confirmContactDetails: 'Confirme sus Datos de Contacto',\r\n chooseADate: 'Elija una Fecha{tz}',\r\n next: 'Siguiente',\r\n back: 'Atrás',\r\n\r\n identification: 'Identificación',\r\n findMyAccount: 'Encontrar mi Cuenta',\r\n contactInfo: 'Información de Contacto',\r\n contactInformation: 'Información de Contacto',\r\n selectATime: 'Seleccione una Hora',\r\n chooseTime: 'Elija Hora',\r\n confirmAddress: 'Confirmar Dirección',\r\n addressConfirmation: 'Confirmación de Dirección',\r\n\r\n allDone: '¡Todo Listo!',\r\n doneAndRedirect: 'Su cita ha sido creada exitosamente. Será redirigido en breve.',\r\n exactlyAsStated: 'Por favor, introduzca este valor tal como aparece en su última factura.',\r\n required: 'Este campo es obligatorio',\r\n\r\n yourName: 'Su Nombre',\r\n yourEmailAddress: 'Su Dirección de Correo Electrónico',\r\n yourPhoneNumber: 'Su Número de Teléfono',\r\n\r\n nameOnTheAccount: 'Nombre en la cuenta',\r\n accountName: 'Nombre de Cuenta:',\r\n selfBookingAccountType: 'Número de Cuenta:',\r\n selfBookingAccountTypePlaceholder: 'Su Número de Cuenta',\r\n serviceAddress: 'Dirección del Servicio:',\r\n selectAnAddress: 'Seleccione una dirección',\r\n\r\n timeZone: 'Zona Horaria',\r\n scheduleAt: 'Programar cita en',\r\n cancel: 'Cancelar',\r\n createAppointment: 'Crear Cita',\r\n additionalComments: 'Notas o comentarios adicionales:',\r\n tryFindAccountAgain: 'Registros no encontrados - por favor, asegúrese de que el nombre y el número coincidan exactamente con su factura e intente nuevamente.',\r\n slotOverbooked: 'Este horario ya no está disponible, por favor elija otro.',\r\n\r\n canceledAppointment: 'Cita cancelada',\r\n\r\n timezoneWarningDialog1: 'Por favor, elija un día y hora en la zona horaria:',\r\n timezoneWarningDialog2: 'Esta es la zona horaria de su servicio de agua.',\r\n timezoneWarningDialog3: 'Su zona horaria local es:',\r\n\r\n error: 'Error',\r\n invalidPhoneNumber: 'Número de Teléfono Inválido | Número(s) de Teléfono Inválido(s)',\r\n invalidEmail: 'Correo electrónico no válido | Correo(s) electrónico(s) inválido(s)',\r\n noMatchesFound: 'No se encontraron coincidencias.',\r\n noAddressFoundFatal: 'No se encontró la dirección. Por favor, contacte a su servicio de agua para resolver este problema.',\r\n missingEmbedCompanyClientFatal: 'Faltan los valores de companyID y/o clientID: {companyID}, {clientID}. Por favor, contacte a los administradores si este problema persiste.',\r\n\r\n failedToFindAccountFatal: 'No se pudo encontrar su cuenta, por favor haga su cita por teléfono.',\r\n failedCreateAppointment: 'Falló en crear una cita.',\r\n\r\n unexpectedFatalError: 'Ocurrió un error inesperado. Por favor, contacte a los administradores si este problema persiste.',\r\n\r\n cancelAppointmentFailed: 'Falló en cancelar la cita.'\r\n }\r\n }\r\n}","import \"./setup_gtag\";\r\nimport { createApp } from \"vue\";\r\nimport NewBookingApp from \"./NewBookingApp.vue\";\r\nimport Notify from 'quasar/src/plugins/notify/Notify.js';import Quasar from 'quasar/src/vue-plugin.js';;\r\nimport quasarUserOptions from \"./quasar-user-options\";\r\nimport store from \"./plugins/vuexconfig.js\";\r\nimport { _axios } from \"./plugins/axiosconfig.js\";\r\nimport VueAxios from \"vue-axios\";\r\nimport \"./self_service_config\";\r\nimport BookingDetailsApp from \"./BookingDetailsApp\";\r\nimport { ResetEmbedConfig } from \"@/embedutil\";\r\nimport \"@fontsource/work-sans\";\r\nimport {messages} from \"@/messages\";\r\nimport { createI18n } from \"vue-i18n\";\r\n\r\nconsole.info(\r\n window !== window.parent\r\n ? \"Appointment Scheduling Module running in an iframe.\"\r\n : \"Appointment Scheduling Module running as standalone application.\"\r\n);\r\n\r\nlet secretKey = new URLSearchParams(window.parent.location.search).get(\"key\");\r\n\r\n_axios.interceptors.request.use(\r\n function (config) {\r\n // Do something before request is sent\r\n let token = store.state.token;\r\n if (token) {\r\n config.headers.token = token;\r\n }\r\n if (secretKey) {\r\n config.headers.secretkey = secretKey;\r\n }\r\n return config;\r\n },\r\n function (error) {\r\n // Do something with request error\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// Add a response interceptor\r\n_axios.interceptors.response.use(\r\n function (response) {\r\n // Do something with response data\r\n console.debug(`axios response: `, response);\r\n return response;\r\n },\r\n function (error) {\r\n // Do something with response error\r\n console.error(\"axios error response: \", error);\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nlet existing_api = window.h2o_asm_apps ?? {};\r\n\r\n/**\r\n * API object for embedding components etc.\r\n */\r\nwindow.h2o_asm_apps = {\r\n ...existing_api,\r\n};\r\n\r\n/**\r\n * Use parent configuration if possible, else fall back to default.\r\n */\r\nwindow.h2o_asm_apps.booking_self_service_config = {\r\n // these values are set in the query part of the parent window\r\n\r\n secretKey, // the presence of this value determines whether we start in \"new booking\" or \"view booking details\" mode\r\n appointmentID: new URLSearchParams(window.parent.location.search).get(\"ID\"),\r\n\r\n successCallback: function () {\r\n window.gtag(\"event\", \"self_service_success\", {});\r\n window.parent.postMessage(\r\n { h2o_self_service_type: \"h2o_self_service_success\" },\r\n \"*\"\r\n ); // FIXME change this origin in deployment\r\n },\r\n failureCallback: function (errorDescription, errorObject) {\r\n /**\r\n * Get a useful string representation of the error\r\n */\r\n const axiosErrorPrint = (error) => {\r\n let out = error?.message ? \"message: \" + error?.message : \"\";\r\n\r\n out += error?.response?.status\r\n ? \"status: \" + error?.response?.status\r\n : \"\";\r\n\r\n return out || \"\" + error;\r\n };\r\n\r\n window.gtag(\"event\", \"self_service_failure\", {\r\n label: errorDescription,\r\n error_description: axiosErrorPrint(errorObject),\r\n });\r\n Notify.create({\r\n message:\r\n \"An unexpected error occurred. Please contact administrators if this issue persists.\", // TODO translate\r\n type: \"negative\",\r\n });\r\n console.error(\r\n \"failureCallback with error description, error object, representation: \",\r\n errorDescription,\r\n errorObject,\r\n axiosErrorPrint(errorObject)\r\n );\r\n window.parent.postMessage(\r\n {\r\n h2o_self_service_type: \"h2o_self_service_failure\",\r\n errorDescription,\r\n errorObject,\r\n },\r\n \"*\"\r\n );\r\n },\r\n // these values are set directly in the query part of the embedded iframe's URL\r\n companyID: null,\r\n\r\n /**\r\n * Only use the following if water utility is constant:\r\n */\r\n clientID: null,\r\n};\r\n\r\nResetEmbedConfig();\r\n\r\n/**----------------Appointment Scheduling Module, Copyright H2OAnalytics 2022----------------*/\r\n\r\nconst app = secretKey ? createApp(BookingDetailsApp) : createApp(NewBookingApp);\r\n\r\napp.use(VueAxios, _axios);\r\napp.use(store);\r\napp.use(Quasar, quasarUserOptions);\r\napp.use(createI18n({\r\n locale: new URLSearchParams(window.location.search).get(\"locale\") ?? \"en_US\",\r\n fallbackLocale: \"en_US\",\r\n messages\r\n}));\r\n\r\napp.mount(\"#app\");","console.info(\"self_service_config adding success and failure listeners...\");\r\n\r\n/**-----------------------------------------------------------------------*/\r\n\r\nwindow.h2oEventListeners = window.h2oEventListeners ?? {\r\n unknownTypeCallback: function (data) {\r\n console.error(\"Got unrecognized message type: \", data?.type);\r\n },\r\n\r\n initializedCallback: function (data) {\r\n console.info(\"H2O Booking self-service initialization complete: \", data);\r\n },\r\n\r\n successCallback: function (data) {\r\n console.info(\r\n \"This is the default h2o self-service booking success callback. Appointment created: \",\r\n data\r\n );\r\n },\r\n\r\n failureCallback: function (data) {\r\n console.error(\r\n \"This is the default h2o self-service booking error callback. Failure: \",\r\n data\r\n );\r\n },\r\n};\r\n\r\nwindow.addEventListener(\"message\", function (event) {\r\n console.warn(\"Got message from origin: \" + event.origin);\r\n if (!event.data) {\r\n return;\r\n }\r\n let callbackFunction = null;\r\n switch (event.data.h2o_self_service_type) {\r\n case null:\r\n case undefined:\r\n break;\r\n\r\n case \"h2o_self_service_initialized\":\r\n callbackFunction = window.h2oEventListeners.initializedCallback;\r\n break;\r\n case \"h2o_self_service_success\":\r\n callbackFunction = window.h2oEventListeners.successCallback;\r\n break;\r\n case \"h2o_self_service_failure\":\r\n callbackFunction = window.h2oEventListeners.failureCallback;\r\n break;\r\n default:\r\n callbackFunction = window.h2oEventListeners.unknownTypeCallback;\r\n }\r\n if (callbackFunction != null) {\r\n callbackFunction(event.data);\r\n }\r\n});\r\n","(() => {\r\n if(process.env.NODE_ENV !== \"production\"){\r\n console.warn(\"Test build, not using gtag...\");\r\n window.gtag = function(){console.warn(\"Ignoring gtag log.\")}\r\n return;\r\n }\r\n const existingScript = document.getElementById(\"global-site-tag\");\r\n\r\n if (!existingScript) {\r\n const script = document.createElement(\"script\");\r\n script.setAttribute(\"async\", \"\");\r\n script.src = \"https://www.googletagmanager.com/gtag/js?id=G-MP0WQES0G6\";\r\n script.id = \"global-site-tag\";\r\n document.body.appendChild(script);\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.gtag = function () {\r\n window.dataLayer.push(arguments);\r\n };\r\n window.gtag(\"js\", new Date());\r\n\r\n window.gtag(\"config\", \"G-MP0WQES0G6\", { send_page_view: false }); // disable page views, send manually\r\n }\r\n})();\r\n","// style-loader: Adds some css to the DOM by adding a