PageSourceSearch

https://bookmyhelp.com/_next/static/chunks/9358-075cb3455c9b16c6.js

js bookmyhelp.com collected 2026-10-04 22:22:18 UTC 15,319 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9358],{59358:function(e,t,n){n.d(t,{BJ:function(){return trackInitialQuestionsSaved},Ed:function(){return discardBookingAnalyticsSession},My:function(){return trackMilestoneOnce},SW:function(){return trackBookingStateUpdate},Sd:function(){return trackServiceViewed},YR:function(){return trackHelperProfileViewed},Zu:function(){return p},_F:function(){return normalizeStripeError},cV:function(){return u},dc:function(){return trackBookingStep},dm:function(){return trackPaymentError},dy:function(){return g},ih:function(){return startBookingAnalyticsSession},rC:function(){return hasActiveBookingSession},uR:function(){return trackScheduleExpired},uu:function(){return trackNavigation},ws:function(){return trackHelperSelected},xy:function(){return getBookingAnalyticsContext}});var o=n(21575),i=n(41369),r=n(43654),c=n(75104),a=n(97142),s=n(91005),d=Object.freeze(["service_page","questions","helper_list","helper_profile","scheduling","authentication","summary","payment","confirmation"]);Object.freeze({EMAIL_SIGNUP:"email_signup",EMAIL_LOGIN:"email_login",ALREADY_AUTHENTICATED:"already_authenticated"});var u=Object.freeze({ANSWER_CHANGE:"answer_change",ADDRESS_CHANGE:"address_change",MULTIPLE_CHANGES:"multiple_changes",HELPER_CHANGE:"helper_change",SCHEDULE_CHANGE:"schedule_change",DISCOUNT_APPLIED:"discount_applied",DISCOUNT_REMOVED:"discount_removed",PROMOTION_CHANGE:"promotion_change",POINTS_CHANGE:"points_change"}),l=Object.freeze(Object.values(u)),_=Object.freeze({FORWARD:"forward",BACKTRACK:"backtrack",SCHEDULE_EXPIRED:"schedule_expired"}),g=Object.freeze({BACK_TO_SERVICE_PAGE:"back_to_service_page",LOGO_CLICK:"logo_click",LEFT_BOOKING_FLOW:"left_booking_flow"}),p=Object.freeze({QUESTIONS:"questions",ADDRESS:"service_location",QUESTIONS_AND_SERVICE_LOCATION:"questions_and_service_location",HELPER:"helper",SCHEDULE:"schedule",DISCOUNT:"discount",POINTS:"points"}),v=Object.freeze((0,o._)({},[p.QUESTIONS,p.ADDRESS].sort().join("+"),p.QUESTIONS_AND_SERVICE_LOCATION));Object.freeze({FORM_VIEWED:"form_viewed",PAYMENT_METHOD_ADDED:"payment_method_added",AUTHORIZATION_SUCCEEDED:"authorization_succeeded",AUTHORIZATION_FAILED:"authorization_failed",BOOKING_COMPLETED:"booking_completed"});var h="bmh_booking_analytics",m=Object.freeze(["booking_cta_clicked","booking_started","service_questions_viewed","service_questions_completed","helper_list_viewed","scheduling_started","schedule_completed","booking_identity_confirmed","sign_up","login","begin_checkout","payment_form_viewed","add_payment_info","payment_authorized","booking_completed"]),f=new Set(m),b=new Set;function uuid(){var e;return(null===(e=window.crypto)||void 0===e?void 0:e.randomUUID)?window.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function emptyState(){return{context:{},currentStep:void 0,stepContext:{},committed:{},emittedMilestones:[],emittedDiagnostics:[]}}function readState(){try{var e,t,n,o,i,r=sessionStorage.getItem(h);if(!r)return emptyState();var c=JSON.parse(r);return{context:null!==(e=c.context)&&void 0!==e?e:{},currentStep:c.currentStep,stepContext:null!==(t=c.stepContext)&&void 0!==t?t:{},committed:null!==(n=c.committed)&&void 0!==n?n:{},emittedMilestones:null!==(o=c.emittedMilestones)&&void 0!==o?o:[],emittedDiagnostics:null!==(i=c.emittedDiagnostics)&&void 0!==i?i:[]}}catch(e){return emptyState()}}function writeState(e){var t,n;e.emittedMilestones=(null!==(t=e.emittedMilestones)&&void 0!==t?t:[]).slice(-100),e.emittedDiagnostics=(null!==(n=e.emittedDiagnostics)&&void 0!==n?n:[]).slice(-200);try{sessionStorage.setItem(h,JSON.stringify(e))}catch(e){}isAnalyticsDebug()&&console.log("%c[analytics state]","color:#7d4a0a;font-weight:bold",{currentStep:e.currentStep,stepContext:e.stepContext,committed:e.committed,context:e.context})}function removeUndefined(e){return Object.fromEntries(Object.entries(e).filter(function(e){return void 0!==(0,a._)(e,2)[1]}))}var k=Object.freeze(["booking_session_id","booking_revision","service_id","service_name","country","booking_market","customer_booking_type","helper_id","selected_hours","expected_value","currency","promotion_id","discount_value","points_applied"]);function hasFiredMilestone(e,t){var n;return b.has(e)||(null!==(n=t.emittedMilestones)&&void 0!==n?n:[]).includes(e)}function isAnalyticsDebug(){try{var e=new URLSearchParams(window.location.search).get("debugAnalytics");if("1"===e)return sessionStorage.setItem("bmh_analytics_debug","1"),!0;if("0"===e)return sessionStorage.removeItem("bmh_analytics_debug"),!1;return"1"===sessionStorage.getItem("bmh_analytics_debug")}catch(e){return!1}}function logDebug(e,t){isAnalyticsDebug()&&console.log("%c[analytics] "+e,"color:#0a7d00;font-weight:bold",t)}var S=new Set;function pushEvent(e){var t,n,o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2?arguments[2]:void 0,a=readState(),s=null!==(o=null!=c?c:r.event_id)&&void 0!==o?o:uuid(),d=a.context,u=removeUndefined((0,i._)({event:e,event_id:s,user_id:null!==(t=null==(n=JSON.parse(localStorage.getItem("user_data")||"null"))?void 0:n.userId)&&void 0!==t?t:void 0,booking_session_id:d.booking_session_id,booking_revision:d.booking_revision,service_id:d.service_id,service_name:d.service_name,country:d.country,booking_market:d.booking_market,customer_booking_type:d.customer_booking_type,helper_id:d.helper_id,expected_value:d.expected_value,currency:d.currency},r));["expected_value","discount_value"].forEach(function(e){"number"==typeof u[e]&&Number.isFinite(u[e])&&(u[e]=Math.round(100*u[e])/100)}),function(e,t){if(f.has(e)){var n="".concat(e,":").concat(null!=t?t:"no_session");
1if(S.has(n)){console.error("%canalytics  DUPLICATE MILESTONE  %c".concat(e,"%c reached the dataLayer twice for booking session ").concat(t,". ")+"Milestones must fire at most once per booking session — find the call site that bypassed trackMilestoneOnce().","color:#ffffff;background:#c40000;font-weight:bold;padding:1px 4px","color:#c40000;font-weight:bold","color:#c40000");return}S.add(n)}}(e,d.booking_session_id);var l="booking_step_changed"===e?{label:"NAVIGATION",color:"#0b62c4"}:"booking_updated"===e?{label:"UPDATE    ",color:"#a3006e"}:"booking_abandoned"===e?{label:"ABANDONED ",color:"#b35c00"}:f.has(e)?{label:"MILESTONE ",color:"#0a7d00"}:{label:"OTHER     ",color:"#666666"};return console.log("%canalytics  ".concat(l.label,"%c ").concat(e),"color:".concat(l.color,";font-weight:bold"),"color:inherit",u),window.dataLayer=window.dataLayer||[],window.dataLayer.push(u),s}function setBookingAnalyticsContext(e){var t=readState();t.context=(0,i._)({},t.context,removeUndefined(e)),writeState(t)}function getBookingAnalyticsContext(){return readState().context}function hasActiveBookingSession(){return!!readState().context.booking_session_id}function trackServiceViewed(e){return pushEvent("service_viewed",e)}function startBookingAnalyticsSession(e){var t=uuid();return b.clear(),S.clear(),writeState({context:removeUndefined({booking_session_id:t,booking_revision:1,service_id:e.service_id,service_name:e.service_name,booking_market:e.booking_market,country:e.country}),currentStep:"service_page",stepContext:{},committed:{},emittedMilestones:[],emittedDiagnostics:[]}),trackMilestoneOnce("booking_cta_clicked",{current_step:"service_page"},uuid()),t}function discardBookingAnalyticsSession(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.trackAbandonment,n=e.abandonmentReason;void 0!==t&&t&&hasActiveBookingSession()&&pushEvent("booking_abandoned",{abandonment_step:readState().currentStep,abandonment_reason:n}),b.clear(),S.clear();try{sessionStorage.removeItem(h)}catch(e){}}function trackMilestoneOnce(e){var t,n,o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2?arguments[2]:void 0,d=readState(),u="".concat(e,":").concat(null!==(t=d.context.booking_session_id)&&void 0!==t?t:"no_session");if(hasFiredMilestone(u,d)){console.log("%canalytics  SKIPPED   %c".concat(e,"%c  already fired once for this booking session"),"color:#999999","color:#999999;font-weight:bold","color:#999999");return}var l=r.change_type,_=r.changed_component,g=(0,c._)(r,["change_type","changed_component"]);(l||_)&&logDebug(e,"change_type/changed_component stripped — milestones never describe booking-data changes"),b.add(u),(null!==(n=d.emittedMilestones)&&void 0!==n?n:[]).includes(u)||(d.emittedMilestones=(0,s._)(null!==(o=d.emittedMilestones)&&void 0!==o?o:[]).concat([u])),d.context=(0,i._)({},d.context,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return removeUndefined(Object.fromEntries(k.map(function(t){return[t,e[t]]})))}(g)),writeState(d);var p=pushEvent(e,g,a);if(!p){b.delete(u);return}return p}function trackInitialQuestionsSaved(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return trackMilestoneOnce("service_questions_completed",(0,r._)((0,i._)({},e),{current_step:"questions"}))}function stripChangeFields(e,t){var n=e.change_type,o=e.changed_component,i=(0,c._)(e,["change_type","changed_component"]);return o&&logDebug(t,"changed_component stripped — navigation never implies a booking-data change"),n&&logDebug(t,"caller change_type ignored — it is derived from the step movement"),i}function trackNavigation(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=readState(),o=n.currentStep,c=stripChangeFields(t,"booking_step_changed");return o===e?{previousStep:o,moved:!1}:(pushEvent("booking_step_changed",(0,r._)((0,i._)({},c),{previous_step:o,current_step:e,change_type:o?d.indexOf(e)>=d.indexOf(o)?_.FORWARD:_.BACKTRACK:_.FORWARD})),n.currentStep=e,n.stepContext=removeUndefined(c),writeState(n),{previousStep:o,moved:!0})}function trackBookingStep(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=trackNavigation(e,n).previousStep;if(t){var c=stripChangeFields(n,t);trackMilestoneOnce(t,(0,r._)((0,i._)({},c),{previous_step:o,current_step:e}))}}function trackScheduleExpired(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=readState(),n=t.currentStep,o=stripChangeFields(e,"booking_step_changed");pushEvent("booking_step_changed",(0,r._)((0,i._)({},o),{previous_step:n,current_step:"scheduling",change_type:_.SCHEDULE_EXPIRED})),t.currentStep="scheduling",t.stepContext=removeUndefined(o),writeState(t)}function advanceBookingRevision(){var e,t=(null!==(e=getBookingAnalyticsContext().booking_revision)&&void 0!==e?e:1)+1;return setBookingAnalyticsContext({booking_revision:t}),t}function trackBookingStateUpdate(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(e){var t,n,o,r,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=readState();if(!a.context.booking_session_id)return logDebug("booking_updated","suppressed — no active booking session"),"no_session";var d=(0,i._)({},null!==(o=a.committed)&&void 0!==o?o:{}),_=[],g=0,p=0;
1if((null!=e?e:[]).forEach(function(e){if(null==e?void 0:e.component){var t=function(e){for(var t=function stableStringify(e){return void 0===e?"null":null===e||"object"!=typeof e?JSON.stringify(e):Array.isArray(e)?"["+e.map(stableStringify).join(",")+"]":"{"+Object.keys(e).sort().filter(function(t){return void 0!==e[t]}).map(function(t){return JSON.stringify(t)+":"+stableStringify(e[t])}).join(",")+"}"}(e),n=5381,o=0;o<t.length;o+=1)n=(n<<5)+n+t.charCodeAt(o)|0;return"".concat(t.length,".").concat((n>>>0).toString(36))}(e.value),n=d[e.component];if(n!==t){if(d[e.component]=t,void 0===n&&!e.first_commit_is_update){g+=1,!1!==e.first_commit_advances_revision&&(p+=1);return}_.push(e)}}}),a.committed=d,writeState(a),0===_.length){if(0===g)return logDebug("booking_updated","not emitted — unchanged"),"unchanged";if(0===p)return logDebug("booking_updated","not emitted — first value recorded, booking_revision unchanged"),"initial";var h=advanceBookingRevision();return logDebug("booking_updated","not emitted — initial save, booking_revision now ".concat(h)),"initial"}var m=_.map(function(e){return e.component}).sort().join("+");return(t=(0,i._)({change_type:_.length>1?u.MULTIPLE_CHANGES:_[0].change_type,changed_component:_.length>1?null!==(r=v[m])&&void 0!==r?r:m:_[0].component},(n=Object).assign.apply(n,[{}].concat((0,s._)(_.map(function(e){var t;return null!==(t=e.payload)&&void 0!==t?t:{}})))),c),hasActiveBookingSession()?l.includes(t.change_type)?(advanceBookingRevision(),setBookingAnalyticsContext({helper_id:t.helper_id,selected_hours:t.selected_hours,expected_value:t.expected_value,currency:t.currency,promotion_id:t.promotion_id,discount_value:t.discount_value,points_applied:t.points_applied}),pushEvent("booking_updated",{changed_component:t.changed_component,changed_question_count:t.changed_question_count,helper_id:t.helper_id,selected_hours:t.selected_hours,expected_value:t.expected_value,currency:t.currency,promotion_id:t.promotion_id,discount_value:t.discount_value,points_applied:t.points_applied}),0):(logDebug("booking_updated",'suppressed — "'.concat(t.change_type,'" is not a booking-state change type')),1):(logDebug("booking_updated","suppressed — no active booking session"),1))?"unchanged":"updated"}(Array.isArray(e)?e:[e],t)}function trackHelperProfileViewed(e){return trackNavigation("helper_profile",{helper_id:String(e)}),pushEvent("helper_profile_viewed",{helper_id:String(e),current_step:"helper_profile"})}function trackHelperSelected(e){if(!hasActiveBookingSession()||null==e)return"no_session";var t=String(e);return setBookingAnalyticsContext({helper_id:t}),trackBookingStateUpdate({component:p.HELPER,value:t,change_type:u.HELPER_CHANGE,first_commit_advances_revision:!1,payload:{helper_id:t}})}function normalizeStripeError(e){var t=((null==e?void 0:e.code)||(null==e?void 0:e.decline_code)||"").toLowerCase(),n=((null==e?void 0:e.type)||"").toLowerCase();return"card_declined"===t?"card_declined":"insufficient_funds"===t?"insufficient_funds":"expired_card"===t?"expired_card":"incorrect_cvc"===t||"invalid_cvc"===t?"incorrect_cvc":"authentication_required"===t?"authentication_required":"processing_error"===t?"processing_error":"api_connection_error"===n||"network_error"===n?"network_error":"card_error"===n||"validation_error"===n?"card_declined":"unknown"}function trackPaymentError(e){var t,n,o=readState(),i=null!==(t=o.context.booking_session_id)&&void 0!==t?t:"no_session",r="payment_error:".concat(i,":").concat(e.payment_attempt_id);o.emittedDiagnostics.includes(r)||(pushEvent("payment_error",{payment_status:null!==(n=e.payment_status)&&void 0!==n?n:"authorization_failed",error_type:e.error_type,current_step:"payment"}),o.emittedDiagnostics.push(r),writeState(o))}window.bmhAnalytics=function(){var e,t=readState(),n=null!==(e=t.context.booking_session_id)&&void 0!==e?e:"no_session",o=m.filter(function(e){return hasFiredMilestone("".concat(e,":").concat(n),t)}),i=m.filter(function(e){return!o.includes(e)});return console.log("%c[analytics state]","color:#7d4a0a;font-weight:bold",{booking_session_id:n,booking_revision:t.context.booking_revision,currentStep:t.currentStep,milestonesFired:o,milestonesPending:i,committed:t.committed,stepContext:t.stepContext,context:t.context}),t}}}]);

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.