1webpackJsonp([19],{3109:function(e,t,n){"use strict";function r(e){s||n(3172)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(3134),i=n(3174),o=n(0),s=!1,c=r,l=Object(o.a)(a.a,i.a,i.b,!1,c,"data-v-04595bcb",null);l.options.__file="src/components/booking/ExternalBooking/components/ExternalBookingReceiver.vue",t.default=l.exports},3134:function(e,t,n){"use strict";var r=n(76),a=n.n(r),i=n(18),o=n.n(i),s=n(383),c=n.n(s),l=n(5),d=n.n(l),u=n(68),b=n.n(u),m=n(6),g=n.n(m),f=n(1),p=n.n(f),x=n(4),v=n(15),k=n(105);t.a={name:"ExternalBookingReceiver",components:{Loader:v.default},data:function(){return{status:"loading-decode-token",successMessage:"Booking data received. URL has been cleared for your privacy.",errorMessage:"",bookingData:null,useToken:!1}},created:function(){this.captureExternalData()},computed:p()({},Object(x.e)("bookingExternal",{loadingDecodeToken:function(e){return e.loadingDecodeToken}})),metaInfo:function(){return{meta:[{name:"referrer",content:"no-referrer"}]}},beforeDestroy:function(){try{var e=document.querySelector('meta[name="referrer"]');e&&e.setAttribute("content","no-referrer")}catch(e){}},watch:{loadingDecodeToken:function(e){!1===e&&(this.status="error")}},methods:p()({},Object(x.b)({decodeToken:"bookingExternal/decodeToken"}),{closeExternalBookingWindow:k.c,normalizeQueryParam:function(e){return null==e?"":Array.isArray(e)?String(e[0]||"").trim():String(e).trim()},captureExternalData:function(){var e=this;return g()(d.a.mark(function t(){var n,r,a,i,o,s,c;return d.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.$route.query,e.useToken=!1,r=null,a="savety-api",i=n.token,o=n.external_from||n.externalForm,!i){t.next=20;break}return r=e.normalizeQueryParam(i),a=e.normalizeQueryParam(o)||"savety-api",t.next=11,e.decodeToken({token:i,external_from:a});case 11:if(s=t.sent,!s.error){t.next=16;break}return e.status="error",e.errorMessage=s.message||"à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¸´à¸à¸¥à¸´à¸à¸à¹à¸à¸²à¸£à¸à¸à¸à¹à¸à¹ à¸à¸£à¸¸à¸à¸²à¸¥à¸à¸à¹à¸«à¸¡à¹à¸à¸µà¸à¸à¸£à¸±à¹à¸à¸«à¸£à¸·à¸à¸à¸´à¸à¸à¹à¸à¸à¸¹à¹à¹à¸«à¹à¸à¸£à¸´à¸à¸²à¸£",t.abrupt("return");case 16:c=s.data,n=c,n.thirdPartyName=c.thirdPartyName,e.useToken=!0;case 20:if(0!==b()(n).length){t.next=23;break}return e.status="empty",t.abrupt("return");case 23:!0===e.useToken?e.status="loading-decode-token":e.status="loading",e.$nextTick(function(){try{var t=e.mapQueryToBookingData(n),i=e.validatePayload(t);e.mergePayloadExtrasFromRaw(i,t),r&&(i.externalEncryptedToken=r,i.externalFrom=a),e.clearStaleExternalSessionIfAccountChanged(i.customer),e.bookingData=i,e.$emit("on-data-received",i),e.status="success",e.$emit("on-success",!0),!1===e.useToken&&e.clearUrlParams()}catch(t){e.errorMessage=t.message||"Invalid or missing booking data.",e.status="error",!1===e.useToken&&e.clearUrlParams()}});case 25:case"end":return t.stop()}},t,e)}))()},mergePayloadExtrasFromRaw:function(e,t){var n=new c.a(["customer","project","geo","parentServiceId","thirdPartyName","villageCode","provinceId","districtId","subDistrictId"]),r=!0,a=!1,i=void 0;try{for(var s,l=o()(b()(t));!(r=(s=l.next()).done);r=!0){var d=s.value;n.has(d)||(e[d]=t[d])}}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}},mapQueryToBookingData:function(e){return{customer:{firstName:e.firstName,lastName:e.lastName,phone:e.phone,email:e.email},project:{projectName:e.projectName,houseNumber:e.houseNumber,zipCode:e.zipCode,subDistrict:e.subDistrict,district:e.district,province:e.province,provinceId:e.provinceId||e.province_id,districtId:e.districtId||e.district_id,subDistrictId:e.subDistrictId||e.sub_district_id},geo:{lat:e.lat,lng:e.lng},parentServiceId:e.parentServiceId,thirdPartyName:e.thirdPartyName,villageCode:e.villageCode}},validatePayload:function(e){var t=function(e){return"string"==typeof e?e.trim():null==e?"":String(e)},n=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,r=function(e){if(null==e||""===e)return null;var t=Number(e);return a()(t)?null:t},i=e.customer||{},o={firstName:t(i.firstName),lastName:t(i.lastName),phone:t(i.phone),email:t(i.email)};if(o.email&&!n.test(o.email))throw new Error("รูà¸à¹à¸à¸à¸à¸µà¹à¸¡à¸¥à¹à¸¡à¹à¸à¸¹à¸à¸à¹à¸à¸");var s=e.project||{},c={projectName:t(s.projectName),houseNumber:t(s.houseNumber),zipCode:t(s.zipCode),subDistrict:t(s.subDistrict),district:t(s.district),province:t(s.province)},l=r(null!=s.provinceId?s.provinceId:e.provinceId),d=r(null!=s.districtId?s.districtId:e.districtId),u=r(null!=s.subDistrictId?s.subDistrictId:e.subDistrictId);null!=l&&(c.provinceId=l),null!=d&&(c.districtId=d),null!=u&&(c.subDistrictId=u);var b=e.geo||{},m=b.lat,g=b.lng;if(null!=m&&""!==m&&(m=Number(m)),null!=g&&""!==g&&(g=Number(g)),null!=m&&(a()(m)||m<-90||m>90))throw new Error("Invalid latitude.");if(null!=g&&(a()(g)||g<-180||g>180))throw new Error("Invalid longitude.");var f={lat:m,lng:g},p={customer:o,project:c,geo:f},x=e.parentServiceId;null==x||""===x||a()(Number(x))||(p.parentServiceId=Number(x));var v=e.thirdPartyName,h=e.villageCode;return v&&(p.thirdPartyName=v),h&&(p.villageCode=h),null!=l&&(p.provinceId=l),null!=d&&(p.districtId=d),null!=u&&(p.subDistrictId=u),Object(k.s)(o.email)||(p.contactEmailRequiredFromUser=!0),p},clearStaleExternalSessionIfAccountChanged:function(e){try{var t=this.$store.state.auth.user,n=t&&t.email?String(t.email).trim().toLowerCase():"",r=e&&e.email?String(e.email).trim().toLowerCase():"";if(!n||!r)return;if(n===r)return;this.$store.commit("auth/SET_TOKEN",null),this.$store.commit("auth/SET_USER",null),this.$store.commit("bookingExternal/SET_USER_INFO",null),this.$store.commit("bookingExternal/SET_USER_PLACE",null),this.$store.commit("bookingExternal/SET_IS_VERIFIED",!1);try{localStorage.removeItem("externalBookingLinkPayload")}catch(e){}}catch(e){}},clearUrlParams:function(){this.$route.path===this.$router.currentRoute.path&&this.$router.replace({path:this.$route.path,query:{}}).catch(function(){})}})}},3172:function(e,t,n){var r=n(3173);"string"==typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);n(3)("12a8931c",r,!1,{})}
1,3173:function(e,t,n){t=e.exports=n(2)(!1),t.push([e.i,'\n@charset "UTF-8";\n.external-booking-loader[data-v-04595bcb] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 100%;\n min-height: 100vh;\n min-height: 100dvh;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));\n}\n\n/** root หà¸à¹à¸² (à¹à¸à¹à¸ .eb-thank-you) à¸à¸à¸à¹à¸ªà¸à¸à¹à¸à¹ Loader */\n.external-booking-page--loader-only[data-v-04595bcb] {\n padding: 0 !important;\n}\n\n/** à¸à¸¸à¹à¸¡à¸¢à¹à¸à¸à¸à¸¥à¸±à¸ â ExternalBookingBackBar à¹à¸¥à¸°à¸à¸µà¹à¸à¸·à¹à¸à¸à¸µà¹à¹à¸à¹ class à¸à¸µà¹ */\n.external-booking-back[data-v-04595bcb] {\n margin: 0 0 0.75rem;\n width: 2.25rem;\n height: 2.25rem;\n border: none;\n background: #f1f5f9;\n color: #475569;\n border-radius: 10px;\n cursor: pointer;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n font-size: 0.95rem;\n -webkit-transition: background 0.2s, color 0.2s;\n transition: background 0.2s, color 0.2s;\n}\n.external-booking-back[data-v-04595bcb]:hover {\n background: #e2e8f0;\n color: #0f172a;\n}\n.external-booking-back[data-v-04595bcb]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.35);\n box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.35);\n}\n\n/**\n * à¸à¸§à¸²à¸¡à¸à¸§à¹à¸²à¸à¸à¸à¸¥à¸±à¸¡à¸à¹à¹à¸à¸·à¹à¸à¸«à¸² â à¸à¸¸à¸à¸«à¸à¹à¸² external\n * mobile: min(100%, 32rem) â tablet+: 500px\n */\n/**\n * à¹à¸à¸à¸à¸¸à¹à¸¡à¸à¸¥à¸±à¸ â à¸à¸³à¸à¸±à¸à¸à¸§à¸²à¸¡à¸à¸§à¹à¸²à¸à¹à¸à¸µà¸¢à¸§à¸à¸±à¸à¸à¸à¸¥à¸±à¸¡à¸à¹à¹à¸à¸·à¹à¸à¸«à¸² (mixin à¸à¹à¸²à¸à¸à¸)\n * à¹à¸à¹à¹à¸ ExternalBookingBackBar\n */\n.eb-external-booking-back-bar[data-v-04595bcb] {\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n max-width: min(100%, 32rem);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n@media (min-width: 768px) {\n.eb-external-booking-back-bar[data-v-04595bcb] {\n max-width: 500px;\n}\n}\n.beneat-modal-body-scroll[data-v-04595bcb] {\n height: 100%;\n max-height: 400px;\n overflow: auto;\n}\n.external-booking-receiver[data-v-04595bcb] {\n width: 100%;\n max-width: 100%;\n margin: 0 auto;\n}\n.status-box[data-v-04595bcb] {\n padding: 1.25rem;\n border-radius: 10px;\n text-align: center;\n}\n@media (min-width: 768px) {\n.status-box[data-v-04595bcb] {\n padding: 1.5rem;\n border-radius: 12px;\n}\n}\n.status-loading[data-v-04595bcb] {\n background: #f0f9ff;\n border: 1px solid #bae6fd;\n}\n.status-success[data-v-04595bcb] {\n background: #f0fdf4;\n border: 1px solid #bbf7d0;\n}\n.status-error[data-v-04595bcb] {\n background: #fef2f2;\n border: 1px solid #fecaca;\n}\n.status-empty[data-v-04595bcb] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n}\n.message[data-v-04595bcb] {\n margin: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #334155;\n}\n.status-error .message[data-v-04595bcb] {\n color: #991b1b;\n}\n.spinner[data-v-04595bcb] {\n width: 2rem;\n height: 2rem;\n margin: 0 auto 0.75rem;\n border: 3px solid #e2e8f0;\n border-top-color: #0ea5e9;\n border-radius: 50%;\n -webkit-animation: spin-data-v-04595bcb 0.8s linear infinite;\n animation: spin-data-v-04595bcb 0.8s linear infinite;\n}\n@-webkit-keyframes spin-data-v-04595bcb {\nto {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n@keyframes spin-data-v-04595bcb {\nto {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n',""])},3174:function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return a});var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"external-booking-receiver"},["loading-decode-token"===e.status?n("div",{staticClass:"external-booking-loader",attrs:{"aria-busy":"true","aria-live":"polite"}},[n("Loader")],1):"loading"===e.status?n("div",{staticClass:"status-box status-loading"},[n("div",{staticClass:"spinner",attrs:{"aria-hidden":"true"}}),e._v(" "),n("p",{staticClass:"message"},[e._v("Processing...")])]):"success"===e.status?n("div",{staticClass:"status-box status-success"},[n("p",{staticClass:"message"},[e._v(e._s(e.successMessage))])]):"error"===e.status?n("div",{staticClass:"status-box status-error"},[n("p",{staticClass:"message"},[e._v(e._s(e.errorMessage))])]):n("div",{staticClass:"status-box status-empty d-flex flex-column justify-content-center align-items-center gap-3"},[n("p",{staticClass:"message"},[e._v("\n à¹à¸¡à¹à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥\n ")]),e._v(" "),n("button",{staticClass:"btn btn-primary mt-3 w-100",staticStyle:{"max-width":"200px"},on:{click:e.closeExternalBookingWindow}},[e._v(" \n ยà¹à¸à¸à¸à¸¥à¸±à¸\n ")])])])},a=[];r._withStripped=!0}}); 2//# sourceMappingURL=19.b1749ec6d895fd58f1d6.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.