{"version":3,"sources":["webpack:///./src/components/Forms/Form.vue?35da","webpack:///./src/components/Forms/Form.vue?bd07","webpack:///./src/views/ContactUs.vue?8402","webpack:///./node_modules/client-website-ts-library/plugins/view/index.ts","webpack:///./src/components/Forms/Form.vue?9407","webpack:///./src/components/Forms/Form.vue","webpack:///./src/components/Forms/Form.vue?d965","webpack:///./src/components/Forms/Form.vue?4d45","webpack:///./src/views/ContactUs.vue?f7b9","webpack:///./src/views/ContactUs.vue","webpack:///./src/views/ContactUs.vue?e268","webpack:///./src/views/ContactUs.vue?8f5a"],"names":["prolistAnalyticsService","ServiceManager","Get","Analytics","headService","Require","Head","evt","obj","this","getAnalyticsEvent","call","getAnalyticsData","$route","path","name","undefined","triggerAnalyticsEvent","event","GetAll","forEach","adapter","Record","result","head","bind","Promise","then","meta","Update","UpdateWithStatic","requestAnimationFrame","updateHead","updateAnalytics","$on","render","_vm","_h","$createElement","_c","_self","staticClass","style","attrs","loading","on","loadAutosave","_v","_s","autosaveDate","_e","domProps","definition","Options","SubmittedText","_l","section","key","SectionId","ref","refInFor","errors","ctx","type","handleFieldInput","class","submitButtonClass","submitButtonColour","submitButtonBackgroundColour","submitForm","SubmitButtonText","staticRenderFns","context","errored","submitted","autosaveManager","FormAutosave","hasAutosave","submitPercent","recaptchaService","ReCaptcha","propertyAdressFormFieldValue","fieldBg","fieldColour","borderColour","labelColour","labelFocusedBg","labelFocusedColour","underlineInactive","underlineActive","progress","total","Math","round","console","log","Items","ClientWebsiteId","Website","Id","Forms","GetForm","def","enableAutosave","state","GetState","catch","Sections","sectionComponent","$refs","setData","fieldDef","$emit","filter","err","Key","collectData","includeRecaptcha","data","normalisedData","normaliseData","SubmitForm","Valid","Submitted","Result","resetRecaptcha","ValidationState","Errors","finally","resolve","reject","push","setTimeout","getRecaptchaResponse","recaptchaResponse","Log","Debug","Value","Reset","GetResponse","newValues","entry","Array","length","i","default","components","Section","Loader","component","office","CompanyName","Phone","Email","AddressLine1","AddressLine2","POBoxLine1","POBoxLine2","staticStyle","mapSettings","Offices","Settings","WebsiteId","Markers","Address","Title","FranchiseName","Map","Form"],"mappings":"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","file":"js/chunk-640cdc92.07eea04a.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=style&index=0&id=17a28286&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactUs.vue?vue&type=style&index=0&id=5ea73f20&scoped=true&lang=css&\"","import Vue from \"vue\";\r\nimport { Component } from \"vue-property-decorator\";\r\nimport { AnalyticsEvent, AnalyticsEventObject, AnalyticsPageView, IAnalyticsAdapter, PROListAnalyticsAdapter } from \"../../services/Analytics\";\r\nimport { HeadService } from \"../../services/HeadService\";\r\nimport { ServiceManager, ServiceType } from \"../../services/ServiceManager\";\r\nimport { RouteMeta } from \"../meta\";\r\n\r\ninterface ViewBase {\r\n getAnalyticsEvent?(): AnalyticsEvent | null;\r\n getAnalyticsData?(): AnalyticsEventObject | null;\r\n head?(): RouteMeta | Promise | null;\r\n}\r\n\r\n@Component\r\nclass ViewBase extends Vue {\r\n protected prolistAnalyticsService = ServiceManager.Get(ServiceType.Analytics, 'PROListAnalyticsAdapter');\r\n protected headService = ServiceManager.Require(ServiceType.Head)!;\r\n\r\n public updateAnalytics() {\r\n let evt: AnalyticsEvent | null = null;\r\n let obj: AnalyticsEventObject | null = null;\r\n\r\n if (typeof this.getAnalyticsEvent !== 'undefined') {\r\n evt = this.getAnalyticsEvent.call(this);\r\n } else if(typeof this.getAnalyticsData !== 'undefined') {\r\n obj = this.getAnalyticsData.call(this);\r\n }\r\n\r\n if (evt === null) evt = new AnalyticsPageView(this.$route.path, this.$route.name || '', obj || undefined);\r\n\r\n this.triggerAnalyticsEvent(evt);\r\n }\r\n\r\n public triggerAnalyticsEvent(event: AnalyticsEvent) {\r\n ServiceManager.GetAll(ServiceType.Analytics).forEach((adapter) => {\r\n adapter.Record(event);\r\n });\r\n }\r\n\r\n public triggerCustomAnalyticsEvent(event: AnalyticsEvent) {\r\n if (this.prolistAnalyticsService !== null) this.prolistAnalyticsService.Record(event);\r\n }\r\n\r\n protected updateHead() {\r\n if ('head' in this) {\r\n const result = this.head!.bind(this)();\r\n\r\n if(result instanceof Promise) {\r\n result.then((meta: RouteMeta | null) => {\r\n this.headService.Update(meta);\r\n });\r\n } else {\r\n this.headService.Update(result as RouteMeta | null);\r\n }\r\n } else {\r\n this.headService.UpdateWithStatic(this.$route.path);\r\n }\r\n }\r\n}\r\n\r\n@Component\r\nclass View extends ViewBase {\r\n public mounted() {\r\n requestAnimationFrame(() => {\r\n this.updateHead();\r\n this.updateAnalytics();\r\n });\r\n }\r\n}\r\n\r\n@Component\r\nclass AsyncView extends ViewBase {\r\n public mounted() {\r\n this.$on('updateView', () => {\r\n requestAnimationFrame(() => {\r\n this.updateHead();\r\n this.updateAnalytics();\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport {\r\n View,\r\n AsyncView\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{staticClass:\"form\",style:(_vm.formStyle)},[_c('Loader',{attrs:{\"loading\":_vm.loading}}),(_vm.hasAutosave)?_c('div',{staticClass:\"form__panel form__panel--autosaved\",on:{\"click\":_vm.loadAutosave}},[_c('p',[_vm._v(\" This form was autosaved at \"+_vm._s(_vm.autosaveDate)+\". Click here to load the autosave. \")])]):_vm._e(),(_vm.definition)?[(_vm.submitted)?_c('div',{staticClass:\"form__panel form__panel--success\"},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.definition.Options.SubmittedText)}})]):[_vm._l((_vm.definition.Sections),function(section){return _c('Section',{key:section.SectionId,ref:section.SectionId,refInFor:true,attrs:{\"def\":section,\"errors\":_vm.errors,\"form-context\":_vm.ctx,\"form-type\":_vm.type},on:{\"field_input\":_vm.handleFieldInput}})}),(_vm.errored)?_c('div',{staticClass:\"form__panel form__panel--errored\"},[_c('p',[_vm._v(\" Please fill out all red highlighted fields. \")])]):_vm._e(),_c('div',{staticClass:\"center-text\"},[_c('Button',{staticClass:\"form__submit-btn\",class:_vm.submitButtonClass,attrs:{\"loading\":_vm.loading,\"colour\":_vm.submitButtonColour,\"background-colour\":_vm.submitButtonBackgroundColour},on:{\"click\":_vm.submitForm}},[_vm._v(_vm._s(_vm.definition.Options.SubmitButtonText))])],1)]]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport { FormDefinition, FormSubmissionValidationError, FormField, FormValue } from 'client-website-ts-library/types/Forms';\r\nimport {\r\n AutosaveManager,\r\n ServiceManager,\r\n ServiceType,\r\n API,\r\n Config,\r\n Logger,\r\n LogLevel,\r\n ReCaptchaService,\r\n} from 'client-website-ts-library/services';\r\nimport { Context } from 'client-website-ts-library/types';\r\nimport { PDFFieldData } from 'client-website-ts-library/types/Forms/FieldTypes';\r\nimport { IRequestProgressDelegate } from 'client-website-ts-library/services/API/IRequestProgressDelegate';\r\n\r\nimport Section from './Section.vue';\r\nimport Loader from '../UI/Loader.vue';\r\n\r\n@Component({\r\n components: {\r\n Section,\r\n Loader,\r\n },\r\n})\r\nexport default class Form extends Vue implements IRequestProgressDelegate {\r\n @Prop({ default: () => ({ Items: [] }) })\r\n private readonly context!: Context;\r\n\r\n @Prop()\r\n private readonly type!: string;\r\n\r\n @Prop()\r\n private readonly submitButtonColour!: string;\r\n\r\n @Prop()\r\n private readonly submitButtonBackgroundColour!: string;\r\n\r\n @Prop()\r\n private readonly submitButtonClass!: string;\r\n\r\n @Prop()\r\n private readonly autosaveNamespace!: string;\r\n\r\n @Prop()\r\n private readonly enableAutosave!: boolean;\r\n\r\n @Prop({ default: 'var(--form-field-bg)' })\r\n private readonly fieldBg!: string;\r\n\r\n @Prop({ default: 'var(--form-field-colour)' })\r\n private readonly fieldColour!: string;\r\n\r\n @Prop({ default: 'var(--form-label-colour)' })\r\n private readonly labelColour!: string;\r\n\r\n @Prop({ default: 'var(--form-field-border-colour)' })\r\n private readonly borderColour!: string;\r\n\r\n @Prop({ default: 'var(--form-label-focused-bg)' })\r\n private readonly labelFocusedBg!: string;\r\n\r\n @Prop({ default: 'var(--form-label-focused-colour)' })\r\n private readonly labelFocusedColour!: string;\r\n\r\n @Prop({ default: '#eee' })\r\n private readonly underlineInactive!: string;\r\n\r\n @Prop({ default: 'var(--brand-primary)' })\r\n private readonly underlineActive!: string;\r\n\r\n @Prop({ default: true })\r\n private readonly includeRecaptcha!: boolean;\r\n\r\n private ctx: Context = this.context;\r\n\r\n private errored = false;\r\n\r\n private submitted = false;\r\n\r\n private errors: FormSubmissionValidationError[] = [];\r\n\r\n private loading = true;\r\n\r\n private definition: FormDefinition | null = null;\r\n\r\n private autosaveManager: AutosaveManager = ServiceManager.Require(ServiceType.FormAutosave);\r\n\r\n private hasAutosave = false;\r\n\r\n private autosaveDate: string | null = null;\r\n\r\n private submitPercent = 0;\r\n\r\n private recaptchaService = ServiceManager.Require(ServiceType.ReCaptcha) as ReCaptchaService;\r\n\r\n private propertyAdressFormFieldValue: string | null = null;\r\n\r\n get formStyle() {\r\n return {\r\n '--field-bg': this.fieldBg,\r\n '--field-colour': this.fieldColour,\r\n '--border-colour': this.borderColour,\r\n '--label-colour': this.labelColour,\r\n '--label-focused-bg': this.labelFocusedBg,\r\n '--label-focused-colour': this.labelFocusedColour,\r\n '--underline-inactive': this.underlineInactive,\r\n '--underline-active': this.underlineActive,\r\n };\r\n }\r\n\r\n onProgress(progress: number, total: number) {\r\n this.submitPercent = Math.round((progress / total) * 100);\r\n\r\n console.log(this.submitPercent);\r\n }\r\n\r\n mounted() {\r\n if (this.ctx === null) {\r\n this.ctx = {\r\n Items: [],\r\n ClientWebsiteId: Config.Website.Id,\r\n };\r\n }\r\n\r\n if (this.ctx.ClientWebsiteId === undefined) {\r\n this.ctx.ClientWebsiteId = Config.Website.Id;\r\n }\r\n\r\n API.Forms.GetForm(this.type, this.context).then((def) => {\r\n this.loading = false;\r\n this.definition = def;\r\n\r\n if (this.enableAutosave) {\r\n const state = this.autosaveManager.GetState(this.type);\r\n\r\n if (state !== null) {\r\n this.hasAutosave = true;\r\n }\r\n }\r\n }).catch(() => {\r\n this.errored = true;\r\n });\r\n }\r\n\r\n loadAutosave(): void {\r\n if (!this.hasAutosave) return;\r\n\r\n const state = this.autosaveManager.GetState(this.type);\r\n\r\n if (state === null) return;\r\n\r\n this.definition!.Sections.forEach((section) => {\r\n const sectionComponent = (this.$refs[section.SectionId] as Vue[])[0] as Section;\r\n\r\n sectionComponent.setData(state);\r\n });\r\n }\r\n\r\n private handleFieldInput(fieldDef: FormField): void {\r\n this.$emit('field_input', fieldDef);\r\n this.errors = this.errors.filter((err) => err.Key !== fieldDef.Key);\r\n }\r\n\r\n submitForm(): void {\r\n if (this.loading) return;\r\n\r\n this.loading = true;\r\n\r\n this.errors = [];\r\n\r\n this.collectData(this.includeRecaptcha).then((data) => {\r\n const normalisedData = Form.normaliseData(data);\r\n\r\n console.log(normalisedData);\r\n\r\n this.loading = false;\r\n\r\n // this.context.ClientWebsiteId = Config.Website.Id;\r\n\r\n // if (this.enableAutosave) this.autosaveManager.SetState(this.type, data);\r\n\r\n API.Forms.SubmitForm(this.type, this.context, normalisedData).then((result) => {\r\n this.loading = false;\r\n\r\n if (!result.Valid) {\r\n // Reset ReCaptcha\r\n this.resetRecaptcha();\r\n\r\n // Update errors\r\n this.errors = result.ValidationState.Errors;\r\n this.errored = true;\r\n } else if (result.Submitted) {\r\n // Inform the user that the form was submitted\r\n this.submitted = true;\r\n\r\n // this.$router.push({ path: '/thank-you' });\r\n\r\n this.$emit('submitted', result.Result);\r\n }\r\n }).catch(() => {\r\n // Reset ReCaptcha\r\n this.resetRecaptcha();\r\n\r\n // Inform the user that there was an error\r\n this.errored = true;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n });\r\n }\r\n\r\n private static normaliseData(data: FormValue[]): FormValue[] {\r\n const newValues: FormValue[] = [];\r\n\r\n data.forEach((entry) => {\r\n if (entry.Value instanceof Array) {\r\n if (entry.Value.length) {\r\n newValues.push({\r\n Key: `${entry.Key}_length`,\r\n Value: entry.Value.length,\r\n });\r\n\r\n for (let i = 0; i < entry.Value.length; i += 1) {\r\n newValues.push({\r\n Key: `${entry.Key}_${i}`,\r\n Value: entry.Value[i],\r\n });\r\n }\r\n }\r\n } else {\r\n newValues.push(entry);\r\n }\r\n });\r\n\r\n return newValues;\r\n }\r\n\r\n private collectData(includeRecaptcha: boolean): Promise {\r\n return new Promise((resolve, reject) => {\r\n const data: FormValue[] = [];\r\n\r\n // Loop through each form secction and collect the data from it\r\n this.definition!.Sections.forEach((section) => {\r\n const sectionComponent = (this.$refs[section.SectionId] as Vue[])[0] as Section;\r\n\r\n data.push(...sectionComponent.collectData());\r\n });\r\n\r\n // If we also need to submit the ReCaptcha response, make sure we call getResponse on the ReCaptcha component\r\n if (includeRecaptcha) {\r\n setTimeout(() => {\r\n this.loading = false;\r\n }, 1000);\r\n\r\n this.getRecaptchaResponse().then((recaptchaResponse: string) => {\r\n Logger.Log(LogLevel.Debug, '[Form]', 'Got ReCaptcha response');\r\n\r\n data.push({\r\n Key: '_recaptcha',\r\n Value: recaptchaResponse,\r\n });\r\n\r\n resolve(data);\r\n }).catch(reject);\r\n\r\n return;\r\n }\r\n\r\n // If we don't need ReCaptcha, resolve straight away\r\n resolve(data);\r\n });\r\n }\r\n\r\n private resetRecaptcha(): void {\r\n this.recaptchaService.Reset();\r\n }\r\n\r\n private getRecaptchaResponse(): Promise {\r\n return this.recaptchaService.GetResponse();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Form.vue?vue&type=template&id=17a28286&scoped=true&\"\nimport script from \"./Form.vue?vue&type=script&lang=ts&\"\nexport * from \"./Form.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Form.vue?vue&type=style&index=0&id=17a28286&scoped=true&lang=css&\"\nimport style1 from \"./Form.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17a28286\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Page',[_c('SiteMasthead',{attrs:{\"mini\":true,\"title\":\"Contact\"}}),_c('ContentRow',[_c('ContentContainer',{staticClass:\"content-container--narrow\"},[_c('div',{staticClass:\"contact__cta\"},[_c('a',{staticClass:\"btn\",attrs:{\"href\":\"/forms/sales-appraisal\"}},[_vm._v(\"SALES APPRAISAL\")]),_c('a',{staticClass:\"btn\",attrs:{\"href\":\"/forms/rental-appraisal\"}},[_vm._v(\"RENTAL APPRAISAL\")])])])],1),_c('ContentRow',[_c('ContentContainer',{staticClass:\"content-container--medium\"},[_c('hr'),_c('br'),_c('br'),(_vm.office)?_c('div',{staticClass:\"office__contact-methods\"},[_c('ul',[_c('li',{staticClass:\"office__contact-method\"},[_c('h2',[_vm._v(_vm._s(_vm.office.CompanyName))])]),(_vm.office.Phone)?_c('li',{staticClass:\"office__contact-method\"},[_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.office.Phone))}},[_vm._v(_vm._s(_vm.office.Phone))])]):_vm._e(),(_vm.office.Email)?_c('li',{staticClass:\"office__contact-method\"},[_c('a',{attrs:{\"href\":(\"mailto:\" + (_vm.office.Email))}},[_vm._v(_vm._s(_vm.office.Email))])]):_vm._e(),(_vm.office.AddressLine1)?_c('li',{staticClass:\"office__contact-method\"},[_vm._v(\" \"+_vm._s(_vm.office.AddressLine1)+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.office.AddressLine2)+\" \")]):_vm._e(),(_vm.office.POBoxLine1)?_c('li',{staticClass:\"office__contact-method\"},[_vm._v(\" \"+_vm._s(_vm.office.POBoxLine1)+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.office.POBoxLine2)+\" \")]):_vm._e()])]):_vm._e()])],1),_c('ContentRow',{attrs:{\"noPadding\":true}},[_c('ContentContainer',{staticClass:\"content-container--medium\"},[_c('div',{staticClass:\"contact__form\"},[_c('Form',{attrs:{\"type\":\"Generic.WebsiteContactForm\"}})],1)])],1),_c('ContentRow',{attrs:{\"noPadding\":true}},[_c('ContentContainer',{staticClass:\"content-container--medium\"},[_c('div',{staticClass:\"contact__image\"},[_c('img',{attrs:{\"src\":\"/assets/images/photos/contact.jpg\"}})])])],1),(_vm.mapSettings)?_c('Deferrable',[_c('Map',{staticStyle:{\"max-height\":\"500px\"},attrs:{\"settings\":_vm.mapSettings}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins } from 'vue-property-decorator';\r\nimport { Office, MapSettings, MapMarker } from 'client-website-ts-library/types';\r\nimport { API, Config } from 'client-website-ts-library/services';\r\nimport { Map } from 'client-website-ts-library/components';\r\nimport { View } from 'client-website-ts-library/plugins';\r\nimport Form from '@/components/Forms/Form.vue';\r\n\r\n@Component({\r\n components: {\r\n Map,\r\n Form,\r\n },\r\n})\r\nexport default class ContactUs extends Mixins(View) {\r\n private office: Office | null = null;\r\n\r\n private mapSettings: MapSettings | null = null;\r\n\r\n mounted() {\r\n API.Offices.Get(Config.Website.Settings!.WebsiteId).then((office) => {\r\n this.office = office;\r\n\r\n this.mapSettings = new MapSettings({\r\n Markers: [\r\n new MapMarker({\r\n Address: `${this.office.AddressLine1} ${this.office.AddressLine2}`,\r\n Title: this.office.FranchiseName,\r\n }),\r\n ],\r\n });\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactUs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactUs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactUs.vue?vue&type=template&id=5ea73f20&scoped=true&\"\nimport script from \"./ContactUs.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactUs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactUs.vue?vue&type=style&index=0&id=5ea73f20&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ea73f20\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}