{"version":3,"mappings":"gOAsBA,MAAMA,EAAQ,CAAC,CAAC,SAAAC,EAAU,OAAAC,EAAQ,QAAAC,EAAU,MAAqB,CACzD,MAAC,WAAAC,EAAY,WAAAC,CAAA,EAAcF,EAC3BG,EAA0B,CAC9B,yCACA,6BACA,CACE,cAAc,OAAAL,EAAQ,KACtB,YAAY,OAAAC,EAAM,KAClB,aAAa,YAAK,UAAUC,CAAO,EAAC,IACtC,EAAE,KAAK,IAAI,CACb,EAEAI,EAAI,MAAMD,EAAwB,KAAK,GAAG,CAAC,EAGpC,YAAO,OAAO,MAAQ,CAAC,EAE9B,OAAO,KAAK,KAAK,CACf,GAAIL,EACJ,GAAIC,EACJ,GAAIE,EACJ,GAAIC,CAAA,CACL,CACH,EAEeG,EAAA,CAAC,MAAAR,CAAK,EC5CfS,EAAmB,CACvB,OAAO,CACLD,EAAM,MAAM,CAAC,SAAU,qBAAsB,OAAQ,OAAO,EAEhE,EAEME,EAAsB,CAC1B,OAAO,CACLF,EAAM,MAAM,CAAC,SAAU,wBAAyB,OAAQ,OAAO,EAEnE,EAEeG,EAAA,CACb,iBAAAF,EACA,oBAAAC,CACF,ECgCK,IAAAE,OACHA,EAAA,QAAwC,UACxCA,EAAA,gBAAwC,kBACxCA,EAAA,aAAwC,eACxCA,EAAA,QAAwC,UACxCA,EAAA,gBAAwC,kBACxCA,EAAA,oCAAwC,sCACxCA,EAAA,sCAAwC,wCACxCA,EAAA,6BAAwC,+BACxCA,EAAA,aAAwC,eACxCA,EAAA,iBAAwC,mBAVrCA,OAAA,IAuBL,MAAMC,EAAS,CAAC,CAAC,2BAAAC,EAA4B,WAAAC,EAAY,mCAAAC,EAAoC,kBAAAC,KACpFC,EAAQ,QAAAC,EAAA,IACb,OACE,wBACF,OAED,KAAMC,GACEC,EACL,CACE,IAAMD,EAAO,iDAAiD,EAC9D,KAAM,OAGN,SAAU,OAGV,YAAc,kCACd,KAAc,KAAK,UAAU,CAC3B,2BAAAN,EACA,WAAAC,EACA,mCAAAC,EACA,OAAoCM,EAAK,OACzC,kBAAAL,CACD,EACH,EACA,CACE,qBAAsB,CAAC,CAAC,iBAAAM,KAAsB,CAC5C,OAAQA,EAAkB,CACxB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOC,EAA2B,WACpC,QACE,OAAOA,EAA2B,eACtC,CACF,CAEJ,CACD,EACA,KAAK,CAAC,CAAC,KAAAC,MAEJ,CACE,YAAa,UACb,KAAM,CACJ,2BAA4BA,EAAK,KAAK,2BAE1C,EAEH,EACA,MAAOC,GAAoB,CAC1B,GAAIA,aAA2B,MACvB,MAAAA,EAGF,MAAE,SAAAC,GAAaD,EACrB,OAAQC,EAAS,OAAQ,CACvB,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACK,OAAC,YAAa,cAA4B,EACpD,IAAK,KACK,OAAC,YAAa,iBAA+B,EACvD,IAAK,KACK,OAAC,YAAa,cAA4B,EACpD,IAAK,KACH,OAAOA,EAAS,OACf,KAAMC,GACDA,EAAgB,KAAK,aAAe,wCAC9B,CACN,YAAa,uCACf,EAGEA,EAAgB,KAAK,aAAe,+BAC9B,CACN,YAAa,8BACf,EAGEA,EAAgB,KAAK,aAAe,sCAC9B,CACN,YAAa,qCACf,EAGEA,EAAgB,KAAK,aAAe,kBAC9B,CACN,YAAa,iBACf,EAGM,CACN,YAAa,SACf,CACD,EACA,MAAOC,IAENC,EACED,EACA,CACE,aACE,0DAEN,EACQ,CAAC,YAAa,SAAuB,EAC9C,EACH,IAAK,KACK,OAAC,YAAa,kBAAgC,EACxD,QACU,OAAC,YAAa,SAAuB,EACjD,CACD","names":["track","category","action","options","eventLabel","eventValue","debug_message_fragments","log","Event","SendPhoneEnquiry","SendSpaciousEnquiry","YahooGemini_Conversions","ResultTypeEnums","create","user_authentication_handle","listing_id","listing_contact_request_attributes","reject_promotions","Promise","__vitePreload","Routes","q_ajax_3","I18n","http_status_code","AJAX_ERROR_HANDLER_ACTIONS","data","reason_or_error","response","responsePayload","e","captureException"],"ignoreList":[],"sources":["../../../app/assets/javascripts/app/tracking/yahoo_gemini/event.ts","../../../app/assets/javascripts/app/tracking/yahoo_gemini/conversions.ts","../../../app/assets/javascripts/app/resources/listing_contact_requests/create/index.ts"],"sourcesContent":["\nimport log from \"plugins/loglevel/index\"\n\ninterface EventParams {\n category: string\n action: string\n options?: {\n eventLabel?: string\n eventValue?: number\n }\n}\n\ndeclare global {\n interface Window {\n dotq: undefined | any[] | {\n push: (el: any) => void,\n },\n }\n}\n\n\n// @see https://help.bingads.microsoft.com/#apex/3/en/help:app51208/-1/en-US\nconst track = ({category, action, options = {}}: EventParams) => {\n const {eventLabel, eventValue} = options\n const debug_message_fragments = [\n \"[App.Tracking.YahooGemini.Event.track]\",\n \"about to track event with:\",\n [\n `category: [${category}]`,\n `action: [${action}]`,\n `options: [${JSON.stringify(options)}]`,\n ].join(\" ,\"),\n ]\n\n log.debug(debug_message_fragments.join(\" \"))\n\n\n window.dotq = window.dotq || []\n\n window.dotq.push({\n ec: category ,\n ea: action,\n el: eventLabel,\n ev: eventValue,\n })\n}\n\nexport default {track}\n","\nimport Event from \"./event\"\n\nconst SendPhoneEnquiry = {\n track(){\n Event.track({category: \"send_phone_enquiry\", action: \"send\"})\n },\n}\n\nconst SendSpaciousEnquiry = {\n track(){\n Event.track({category: \"send_spacious_enquiry\", action: \"send\"})\n },\n}\n\nexport default {\n SendPhoneEnquiry,\n SendSpaciousEnquiry,\n}\n","\n// region JS Imports\n\n// region External Modules\nimport Promise from \"bluebird\"\n\nimport I18n from \"plugins/i18n-js\"\n// endregion External Modules\n\n// region Private Modules\nimport {\n captureException,\n} from \"app/error_reporting\"\nimport {\n q_ajax_3,\n ERROR_HANDLER_ACTIONS as AJAX_ERROR_HANDLER_ACTIONS,\n} from \"app/utils/q_ajax/q_ajax_3\"\n// endregion Private Modules\n\n// region Public Components\n// endregion Public Components\n\n// region Private Components\n// endregion Private Components\n\n// endregion JS Imports\n\n\ninterface ResourceAttributes {\n requester_name?: string | null,\n\n requester_email_address: string,\n\n requester_phone_number: string,\n requester_phone_number_country_code?: string | null,\n\n additional_message?: string | null,\n\n anticipated_checkin_date?: string | null,\n stay_duration_in_days?: string | null,\n}\n\ninterface Input {\n user_authentication_handle: string,\n listing_id: string | number,\n listing_contact_request_attributes: ResourceAttributes,\n reject_promotions?: boolean | null,\n}\n\n/* eslint-disable no-unused-vars */\nenum ResultTypeEnums {\n SUCCESS = \"SUCCESS\",\n UNAUTHENTICATED = \"UNAUTHENTICATED\",\n UNAUTHORIZED = \"UNAUTHORIZED\",\n INVALID = \"INVALID\",\n LISTING_EXPIRED = \"LISTING_EXPIRED\",\n CONFLICTING_RESOURCE_ALREADY_EXISTS = \"CONFLICTING_RESOURCE_ALREADY_EXISTS\",\n LISTING_CONTACT_EMAIL_OR_PHONE_ABSENT = \"LISTING_CONTACT_EMAIL_OR_PHONE_ABSENT\",\n INVALID_CONTACT_PHONE_NUMBER = \"INVALID_CONTACT_PHONE_NUMBER\",\n SERVER_ERROR = \"SERVER_ERROR\",\n TOO_MANY_REQUEST = \"TOO_MANY_REQUEST\",\n}\n/* eslint-enable no-unused-vars */\n\ninterface DataResult {\n listing_contact_request_id: number | string,\n}\n\ninterface PromiseResolvePayload {\n result_type: ResultTypeEnums,\n data?: DataResult,\n}\n\nconst create = ({user_authentication_handle, listing_id, listing_contact_request_attributes, reject_promotions}: Input): Promise<PromiseResolvePayload> => {\n return Promise.resolve(\n import(\n \"plugins/js-routes\"\n )\n )\n .then((Routes) => {\n return q_ajax_3(\n {\n url: Routes.create_api_web_app_listing_contact_requests_path(),\n type: \"POST\",\n\n // Expect JSON in response\n dataType: \"JSON\",\n\n // Sending JSON to server\n contentType: \"application/json; charset=utf-8\",\n data: JSON.stringify({\n user_authentication_handle: user_authentication_handle,\n listing_id: listing_id,\n listing_contact_request_attributes: listing_contact_request_attributes,\n locale: I18n.locale,\n reject_promotions: reject_promotions,\n }),\n },\n {\n custom_error_handler: ({http_status_code}) => {\n switch (http_status_code) {\n case 401:\n case 403:\n case 422:\n case 429:\n return AJAX_ERROR_HANDLER_ACTIONS.STOP_RETRY\n default:\n return AJAX_ERROR_HANDLER_ACTIONS.CONTINUE_RETRY\n }\n },\n },\n )\n })\n .then(({data}) => {\n return (\n {\n result_type: ResultTypeEnums.SUCCESS,\n data: {\n listing_contact_request_id: data.data.listing_contact_request_id,\n },\n }\n )\n })\n .catch((reason_or_error) => {\n if (reason_or_error instanceof Error) {\n throw reason_or_error\n }\n\n const { response } = reason_or_error\n switch (response.status) {\n case 500:\n case 502:\n case 503:\n case 504:\n return ({result_type: ResultTypeEnums.SERVER_ERROR})\n case 401:\n return ({result_type: ResultTypeEnums.UNAUTHENTICATED})\n case 403:\n return ({result_type: ResultTypeEnums.UNAUTHORIZED})\n case 422:\n return response.json()\n .then((responsePayload: any) => {\n if (responsePayload.data.error_type === \"listing_contact_email_or_phone_absent\") {\n return ({\n result_type: ResultTypeEnums.LISTING_CONTACT_EMAIL_OR_PHONE_ABSENT,\n })\n }\n\n if (responsePayload.data.error_type === \"invalid_contact_phone_number\") {\n return ({\n result_type: ResultTypeEnums.INVALID_CONTACT_PHONE_NUMBER,\n })\n }\n\n if (responsePayload.data.error_type === \"conflicting_resource_already_exists\") {\n return ({\n result_type: ResultTypeEnums.CONFLICTING_RESOURCE_ALREADY_EXISTS,\n })\n }\n\n if (responsePayload.data.error_type === \"listing_expired\") {\n return ({\n result_type: ResultTypeEnums.LISTING_EXPIRED,\n })\n }\n\n return ({\n result_type: ResultTypeEnums.INVALID,\n })\n })\n .catch((e: any) => {\n // Got error parsing = just report as invalid\n captureException(\n e,\n {\n error_source:\n \"app/resources/listing_contact_requests/create/index.es6\",\n }\n )\n return ({result_type: ResultTypeEnums.INVALID})\n })\n case 429:\n return ({result_type: ResultTypeEnums.TOO_MANY_REQUEST})\n default:\n return ({result_type: ResultTypeEnums.INVALID})\n }\n })\n}\n\nexport { create, ResultTypeEnums }\n"],"file":"assets/index-1WWql7OZ.js"}