{"version":3,"sources":["webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.types.ts","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.vue?58ae","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.api.ts","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.validations.ts","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.ts","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.ts?ba12","webpack:///./src/modules/FindTravelAgentModule/FindTravelAgentModule.vue","webpack:///./src/common/ApiService/HttpVerb.ts","webpack:///./src/utils/loaderUtils.ts","webpack:///./src/common/ApiService/ApiService.ts","webpack:///./src/forms/Validations/CommonRules.ts","webpack:///./src/utils/toastUtils.ts"],"names":["names","Zip","travelAgentService","ApiService","showLoading","cancel","returnData","validations","BaseValidation","name","rules","required","zipCode","messages","getRules","getMessages","model","getModel","initialSearchModel","Distance","IsCanadian","Page","PageSize","searchTexts","Result","NotFound","travelAgents","this","updateRadius","value","Value","searchAgent","getResult","searchCanadianAgent","isCanadian","data","searchModel","Promise","call","verb","HttpVerb","POST","result","nextTick","Agents","map","a","Id","Agency","Agent","Category","Text","Title","Address","Fax","Phone","Email","Website","Image","Link","created","$on","mounted","radius","$el","p","Radiuses","slice","fixUlOnClose","setTimeout","FindTravelAgentModule","props","SortingOptions","components","vSelect","SearchResultsGrid","TextRow","FormValidationMixin","component","_vm","_h","$createElement","_c","_self","staticClass","_v","on","$event","preventDefault","submit","attrs","ref","length","_e","hideLoader","commit","service","options","cancelTokens","cache","defaultOptions","GET","handleErrors","cacheResults","redirectUrl","method","key","getCacheKey","undefined","resolve","axiosParams","createAxiosParams","addDataToParams","addCancelToken","request","then","r","handleError","window","location","href","toString","redirectObject","JSON","stringify","error","response","resp","errorCode","status","errors","Object","values","ModelState","forEach","err","Array","isArray","msg","push","Type","ToastType","Danger","Message","Data","Error","toLowerCase","includes","Item","SegmentElement","sendEvent","captcha_score","error_message","message","ExceptionMessage","baseURL","url","headers","params","callMetaName","tokens","source","CancelToken","cancelToken","token","stopOnSuccess","finally","catch","HandleStatusObject","success","fail","IsOk","empty","requireNonWhitespace","trim","requireWithDefault","defaultValue","byRegex","regex","invert","test","dangerous","symbolsNotAllowed","nameComplex","notEmpty","notOnlySymbol","phoneCode","phoneAndDashed","phoneAndDashedForUK","booking","separatedEmails","emailRegex","splitedEmails","replace","split","validatedEmails","filter","item","showToastMessage","delay","dispatch"],"mappings":"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","file":"97.8906c27583a91c2686d6.js","sourcesContent":["import SelectItem from '@/common/interfaces/SelectItem';\n\ninterface AgentItem {\n Agency: string;\n Agent: string;\n Address: string;\n Phone: string;\n Fax: string;\n Email?: string;\n Website?: string;\n}\n\nexport interface SearchResult {\n Agents: AgentItem[];\n CurrentPage: number;\n AllPages: number;\n Total: number;\n}\n\nexport interface FindTravelAgentBlockViewModel {\n Radiuses: SelectItem[];\n SortingOptions: SelectItem[];\n}\n\nexport interface SearchModel {\n Zip: string;\n Distance: number;\n IsCanadian: boolean;\n Page: number;\n PageSize: number;\n}\n\nexport interface SearchResultText {\n Result: string,\n NotFound: string\n}\n\nexport const names = {\n Zip: 'Zip',\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"find-travel-agent module module--mb\"},[_c('h3',{staticClass:\"find-travel-agent__title\"},[_vm._v(\"Find a Travel Agent\")]),_c('form',{staticClass:\"find-travel-agent__background-color-wrapper\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"find-travel-agent__input-wrapper\"},[_c('div',{staticClass:\"find-travel-agent__location\"},[_c('TextRow',{staticClass:\"transparent-wrapper legacy-input-wrapper\",attrs:{\"id\":\"location\",\"label\":\"Location\",\"placeholder\":\"Enter a zip code\",\"name\":_vm.names.Zip,\"pattern\":\"\\\\d*\",\"type\":\"text\",\"maxLength\":5}})],1),_c('div',{staticClass:\"select-wrapper find-travel-agent__dropdown\"},[_c('label',{staticClass:\"select-wrapper__label\",attrs:{\"for\":\"search-radius\"}},[_vm._v(\"Search radius\")]),_c('v-select',{ref:\"radius\",staticClass:\"select-wrapper\",attrs:{\"placeholder\":\"Select radius\",\"options\":_vm.p.Radiuses,\"searchable\":false,\"clearable\":false,\"label\":\"Text\"},on:{\"close\":_vm.fixUlOnClose,\"input\":_vm.updateRadius}})],1),_c('button',{staticClass:\"button button--white find-travel-agent__search-button find-travel-agent__search-button--top\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n Search\\n \")])]),_c('div',{staticClass:\"find-travel-agent__bottom-wrapper\"},[_c('button',{staticClass:\"button button--white find-travel-agent__search-button find-travel-agent__search-button--bottom\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n Search\\n \")]),_c('p',{staticClass:\"find-travel-agent__text\"},[_vm._v(\"\\n Looking for Travel Agents in Canada?\\n \"),_c('span',{staticClass:\"find-travel-agent__link cta\"},[_c('a',{on:{\"click\":function($event){return _vm.searchCanadianAgent()}}},[_vm._v(\"Click here\")])])])])]),(_vm.travelAgents)?_c('SearchResultsGrid',{attrs:{\"Items\":_vm.travelAgents,\"searchStr\":_vm.searchModel.Zip,\"emptyResults\":_vm.travelAgents.length === 0,\"searchTexts\":_vm.searchTexts}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { SearchModel, SearchResult } from './FindTravelAgentModule.types';\nimport ApiService from '@/common/ApiService/ApiService';\nimport { HttpVerb } from '@/common/ApiService/HttpVerb';\n\nconst travelAgentService = new ApiService('/api/TravelAgentsService/', {\n showLoading: false,\n cancel: true,\n returnData: true,\n});\n\nexport const searchAgents = async (data: SearchModel): Promise => {\n let result: SearchResult;\n result = await travelAgentService.call('SearchTravelAgents', data, {\n verb: HttpVerb.POST,\n });\n return result;\n};\n","import { required } from 'vuelidate/lib/validators';\nimport { zipCode } from '@/forms/Validations/CommonRules';\nimport BaseValidation from '@/forms/Validations/BaseValidation';\nimport { names } from './FindTravelAgentModule.types';\n\nconst zipValidation = new BaseValidation([\n {\n name: names.Zip,\n rules: { required, zipCode },\n messages: {\n required: 'Enter zip code',\n zipCode: 'Enter a valid zip code',\n },\n },\n]);\n\nconst validations = [zipValidation];\n\nexport default () => ({\n validations: BaseValidation.getRules(validations),\n messages: BaseValidation.getMessages(validations),\n model: BaseValidation.getModel(validations),\n});\n","import { Component, Mixins, Ref, Vue } from 'vue-property-decorator';\n\nimport {\n FindTravelAgentBlockViewModel,\n SearchModel,\n names,\n SearchResultText,\n} from './FindTravelAgentModule.types';\nimport { getComponentProps } from '@/utils/vueUtils';\nimport { searchAgents } from '@/modules/FindTravelAgentModule/FindTravelAgentModule.api';\nimport vSelect from 'vue-select';\nimport SearchResultsGrid from '@/components/SearchResultsGrid/SearchResultsGrid.vue';\nimport SearchResultTravelAgent from '@/common/interfaces/modules/SearchResultTravelAgent';\nimport TextRow from '@/forms/FormElements/Rows/TextRow/TextRow.vue';\nimport FormValidationMixin from '@/forms/FormElements/Mixins/FormValidationMixin';\nimport getValidation from './FindTravelAgentModule.validations';\nimport Message from '@/forms/Validations/Message';\nimport { fixDropdownAudioEye } from '@/utils/domUtils';\n\nconst { validations, model, messages } = getValidation();\n\n@Component({\n validations,\n props: getComponentProps({\n SortingOptions: [{ Text: 'Relevancy', Value: '' }],\n Radiuses: [\n { Text: '5 miles', Value: '5' },\n { Text: '10 miles', Value: '10' },\n ],\n }),\n components: {\n vSelect,\n SearchResultsGrid,\n TextRow,\n },\n})\nexport default class FindTravelAgentModule extends Mixins(FormValidationMixin) {\n names = names;\n\n model: SearchModel = model;\n\n messages: Message[] = messages;\n\n initialSearchModel: SearchModel = {\n Zip: '',\n Distance: 5,\n IsCanadian: false,\n Page: -1,\n PageSize: 10,\n };\n\n searchTexts: SearchResultText = {\n Result: 'travel agents match your criteria',\n NotFound: \"We couldn't find any travel agents near you. Please contact us directly for more information.\"\n }\n\n @Ref('radius') readonly radius: HTMLElement;\n\n get searchModel() {\n return { ...this.initialSearchModel, ...this.model };\n }\n travelAgents: SearchResultTravelAgent[] = null;\n\n updateRadius(value) {\n this.initialSearchModel.Distance = value.Value;\n }\n\n async searchAgent() {\n this.getResult(false);\n }\n\n async searchCanadianAgent() {\n this.getResult(true);\n }\n\n async getResult(isCanadian: boolean) {\n this.initialSearchModel.IsCanadian = isCanadian;\n const result = await searchAgents(this.searchModel);\n //Force search grid destroy\n this.travelAgents = null;\n Vue.nextTick(() => {\n this.travelAgents = result.Agents.map((a) => ({\n Id: `${a.Agency}-${a.Agent}`,\n Category: { Text: a.Agency, Value: a.Agency },\n Title: a.Agent,\n Address: a.Address,\n Fax: a.Fax,\n Phone: a.Phone,\n Email: a.Email,\n Website: a.Website,\n Image: null,\n Link: { Link: '', Title: '' },\n }));\n });\n }\n\n created() {\n this.$on('submit', () => {\n this.searchAgent();\n });\n }\n mounted() {\n // @ts-ignore\n fixDropdownAudioEye(this.radius.$el, this.p.Radiuses.slice(0, 2), false)\n }\n fixUlOnClose() {\n setTimeout(() => {\n // @ts-ignore\n fixDropdownAudioEye(this.radius.$el, this.p.Radiuses.slice(0, 2), false)\n }, 500);\n }\n}\n","import mod from \"-!../../../node_modules/ts-loader/index.js??ref--0!./FindTravelAgentModule.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/ts-loader/index.js??ref--0!./FindTravelAgentModule.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FindTravelAgentModule.vue?vue&type=template&id=7a5dd1a0&\"\nimport script from \"./FindTravelAgentModule.ts?vue&type=script&lang=ts&\"\nexport * from \"./FindTravelAgentModule.ts?vue&type=script&lang=ts&\"\nimport style0 from \"./FindTravelAgentModule.scss?vue&type=style&index=0&lang=scss&\"\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 null,\n null\n \n)\n\nexport default component.exports","export enum HttpVerb {\n GET = 'GET',\n POST = 'POST',\n DELETE = 'DELETE',\n PUT = 'PUT',\n PATCH = 'PATCH',\n}\n","import { HIDE_LOADER, SHOW_LOADER } from '@/store/modules/overlayModule';\nimport { getStore } from '@/store/index';\n\nexport const hideLoader = () => {\n getStore().commit(HIDE_LOADER);\n};\n\nexport const showLoader = () => {\n getStore().commit(SHOW_LOADER);\n};\n","import axios, { AxiosRequestConfig, CancelTokenSource, AxiosPromise, AxiosError } from 'axios';\nimport ApiServiceOptions from './ApiServiceOptions';\nimport { HttpVerb } from './HttpVerb';\nimport HandleStatusParams from './HandleStatusParams';\nimport { isLocal, devRoot, isString, isSSR } from '@/utils/commonUtils';\nimport { hideLoader, showLoader } from '@/utils/loaderUtils';\nimport { showToastMessage } from '@/utils/toastUtils';\nimport ToastType from '@/common/interfaces/enums/ToastType';\nimport { SegmentElement } from '@/plugins/utm/SegmentElement';\n\nexport const defaultErrorMessage = 'Something went wrong!';\n\nexport default class ApiService {\n private options: ApiServiceOptions;\n private cancelTokens: { [id: string]: CancelTokenSource } = {};\n private cache: { [key: string]: any } = {};\n constructor(service: string, options?: ApiServiceOptions) {\n const defaultOptions: ApiServiceOptions = {\n verb: HttpVerb.GET,\n cancel: true,\n showLoading: true,\n returnData: false,\n handleErrors: true,\n cacheResults: false,\n redirectUrl: false,\n };\n if (isLocal()) {\n service = `${devRoot}${service}`;\n }\n if (isSSR()) {\n service = `${devRoot}${service}`;\n }\n\n this.options = { service, ...defaultOptions, ...options };\n }\n\n call(method: string, data?: {}, options?: ApiServiceOptions): Promise {\n options = { ...this.options, ...options };\n\n let key = '';\n if (options.cacheResults) {\n key = this.getCacheKey(method, data);\n if (this.cache[key] !== undefined) {\n return Promise.resolve(this.cache[key]);\n }\n }\n\n const axiosParams = this.createAxiosParams(method, options);\n\n this.addDataToParams(axiosParams, data);\n\n if (options.cancel) {\n this.addCancelToken(axiosParams);\n }\n\n let request = axios.request(axiosParams);\n\n if (options.showLoading) {\n this.showLoading(request, options.redirectUrl !== true);\n }\n\n if (options.handleErrors) {\n request.then((r) => r, this.handleError);\n }\n\n if (options.returnData) {\n request = request.then((r) => r.data);\n }\n\n if (options.cacheResults) {\n request.then((r) => {\n this.cache[key] = r;\n });\n }\n\n if (options.redirectUrl) {\n request.then((r) => {\n if (isString(options.redirectUrl)) {\n window.location.href = options.redirectUrl.toString();\n } else {\n const redirectObject: { redirectUrl: string } = r as any;\n if (redirectObject.redirectUrl) window.location.href = redirectObject.redirectUrl;\n }\n });\n }\n\n return request;\n }\n\n private getCacheKey(method: string, data?: {}) {\n return `${method}:${JSON.stringify(data)}`;\n }\n\n private handleError(error: AxiosError) {\n if (error && error.response) {\n const resp = error.response;\n const errorCode = resp.status;\n if (errorCode === 400) {\n if (resp.data) {\n let errors = Object.values(resp.data?.ModelState || resp.data);\n if (isString(resp.data)) {\n errors = [resp.data];\n }\n\n const messages = [];\n errors.forEach((err) => {\n if (Array.isArray(err)) {\n err.forEach((msg) => {\n messages.push({\n Text: msg,\n Type: ToastType.Danger,\n });\n });\n } else {\n messages.push({\n Text: err,\n Type: ToastType.Danger,\n });\n }\n });\n if (messages.length) showToastMessage(messages);\n }\n }\n if (errorCode === 401) {\n if (resp.data.Message) {\n window.location.href = resp.data.Message;\n }\n }\n if (errorCode > 401 && errorCode < 500) {\n if (resp.data.Message) {\n showToastMessage([\n {\n Text: resp.data.Message,\n Type: ToastType.Danger,\n },\n ]);\n }\n }\n\n if (errorCode === 406 && resp.data.Data.Error && resp.data.Data.Error.toLowerCase().includes('captcha')) {\n if (resp.data.Data.Item) {\n SegmentElement.sendEvent('errorReceived', {\n captcha_score: resp.data.Data.Item,\n error_message: resp.data.Data.Error,\n }, true)\n }\n showToastMessage([\n {\n Text: resp.data.Data.Error,\n Type: ToastType.Danger,\n },\n ]);\n }\n\n if (errorCode >= 500 && errorCode < 600) {\n let message = resp.data.ExceptionMessage;\n if (!message && isString(resp.data)) {\n message = resp.data;\n }\n\n if (message) {\n showToastMessage([\n {\n Text: message,\n Type: ToastType.Danger,\n },\n ]);\n }\n }\n }\n }\n\n private createAxiosParams(method: string, options: ApiServiceOptions) {\n const axiosParams: AxiosRequestConfig = {\n method: options.verb,\n baseURL: options.service,\n url: method,\n headers: options.headers,\n };\n\n return axiosParams;\n }\n\n private addDataToParams(params: AxiosRequestConfig, data?: {}) {\n if (data) {\n if (params.method === HttpVerb.GET) {\n params.params = data;\n } else {\n params.data = data;\n }\n }\n }\n\n private addCancelToken(params: AxiosRequestConfig) {\n const callMetaName: string = `${params.method},${params.baseURL},${params.url}`;\n\n const tokens = this.cancelTokens;\n\n if (tokens[callMetaName] !== undefined) {\n tokens[callMetaName].cancel();\n }\n\n const source = axios.CancelToken.source();\n tokens[callMetaName] = source;\n\n params.cancelToken = source.token;\n }\n\n private showLoading(request: AxiosPromise, stopOnSuccess: boolean = true) {\n if (request) {\n showLoader();\n if (stopOnSuccess) {\n request.finally(() => {\n hideLoader();\n });\n } else {\n request.catch(() => {\n hideLoader();\n });\n }\n }\n }\n\n static HandleStatusObject(params: HandleStatusParams) {\n // const { response, success, fail, errorMessage, toastParams } = params;\n const { response, success, fail } = params;\n\n const status = (response as any).data || response;\n if (status.IsOk) {\n if (success) {\n success(status.Item);\n }\n } else {\n if (fail) {\n fail(status.error, status.Item);\n }\n\n // showErrorToast(errorMessage || status.Error || defaultErrorMessage, toastParams);\n }\n\n return status.IsOk;\n }\n}\n","export const empty = (value: any) => {\n const result = value === undefined || value === null || value === '';\n\n return result;\n};\n\nexport const twoWords = (value: any) => {\n return value.split(' ').filter(s => s).length > 1;\n};\n\nexport const requireNonWhitespace = (value: any) => {\n if (empty(value?.trim())) {\n return false;\n }\n\n return true;\n};\n\nexport const requireNonUndefined = (value: any) => {\n if (empty(value) && value !== undefined) {\n return false;\n }\n\n return true;\n};\n\nexport const requireWithDefault = (defaultValue: any) => (value: any) => {\n if (empty(value) || value === defaultValue) {\n return false;\n }\n\n return true;\n};\n\nexport const sameAsWithConvert = (prop: string, func: Function = (val: any) => val) => (\n value: any,\n model: any,\n) => func(value) === func(model[prop]);\n\nexport const byRegex = (regex: RegExp, invert: boolean = false) => {\n return (value: any) => {\n if (empty(value)) {\n return true;\n }\n\n let result = regex.test(value);\n\n if (invert) {\n result = !result;\n }\n\n return result;\n };\n};\n\nexport const dangerous = byRegex(/[<>]/, true);\nexport const symbolsNotAllowed = byRegex(/.*[#^*?'].*/, true);\n\nexport const nameComplex = (value: string) => {\n const notEmpty = byRegex(/.*[^ ].*/, false);\n const name = byRegex(\n /^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/,\n );\n const notOnlySymbol = byRegex(/^[,.'\"-]+$/, true)\n\n return notEmpty(value) && name(value) && notOnlySymbol(value);\n};\nexport const zipCode = byRegex(/(^\\d{5}$)|(^\\d{9}$)/);\nexport const phoneCode = byRegex(/^\\+?[0-9]{1,3}$/);\nexport const phoneAndDashed = byRegex(/^(\\d{8,10}|(\\d{3}-\\d{3}-\\d{4}))$/);\nexport const phoneAndDashedForUK = byRegex(/^(\\d{8,15}|\\d{3}-\\d{3}-\\d{4})$/);\nexport const phoneWithoutCode = byRegex(/^\\d{8,10}$/);\nexport const phoneWithCode = byRegex(/^\\+?[0-9]{9,13}$/);\nexport const booking = byRegex(/^\\d{4,6}$/);\nexport const IATAN = byRegex(/^\\d{3,32}$/);\n\nexport const timeRegex = (value) => {\n if (empty(value)) {\n return true;\n }\n\n return (\n /^(0?[1-9]|1[012]):([0-5][0-9]) [PpAa]{1}[Mm]{1}$/.test(value) ||\n /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(value)\n );\n};\n\nexport const separatedEmails = (value: string) => {\n const emailRegex = byRegex(\n /(^$|^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$)/,\n );\n const splitedEmails = value\n .trim()\n .replace(/\\s/g, '')\n .split(',');\n const validatedEmails = splitedEmails.filter((item) => emailRegex(item));\n return splitedEmails.length === validatedEmails.length && validatedEmails.length < 4;\n};\n","import { getStore } from '@/store/index';\nimport { SHOW_TOAST } from '@/store/modules/toastModule';\nimport NotificationToast from '@/common/interfaces/modules/NotificationToast';\n\nexport const showToastMessage = (messages: NotificationToast[], delay: number = 5000) => {\n getStore().dispatch(SHOW_TOAST, [messages, delay]);\n};\n"],"sourceRoot":""}