1(function($){"use strict";$(document).ready(function(){var prevDurationID;bookneticHooks.addAction('step_end_service',function(booknetic){let cart=booknetic.cartArr[booknetic.cartCurrentIndex];let nextStep=booknetic.stepManager.getNextStep().attr('data-step-id');let canGoForward=!1;const primaryColor=booknetic.panel_js.find('.booknetic_next_step_btn').css('background-color');const secondaryColor=booknetic.panel_js.find('.booknetic_next_step_btn').css('color');if(cart.hasOwnProperty('custom_duration')){prevDurationID=cart.custom_duration;cart.custom_duration=null} 2const selectedServiceID=booknetic.getSelected.service();const advanceWithDuration=function(durationId){cart.custom_duration=durationId;canGoForward=!0;booknetic.panel_js.find('.popup-overlay').removeClass('enter');booknetic.panel_js.find('.booknetic_custom_duration_popup').remove();invalidateCache(cart,booknetic);booknetic.stepManager.loadStep(nextStep);scrollAfterClose(booknetic)};if(servicesWithCustomDuration.some(row=>row.service_id===selectedServiceID.toString())){bookneticHooks.addFilter('load_step_'+nextStep,function(booknetic){return canGoForward});if(!booknetic.panel_js.find('.booknetic_appointment_container').find('.popup-overlay').length>0){booknetic.panel_js.find('.booknetic_appointment_container').append($('<div>',{class:'popup-overlay',}))} 3const params=booknetic.ajaxParameters();params.append('tenant_id',BookneticData.tenant_id||booknetic.panel_js.data('tenant_id'));$.ajax({url:window.bookneticCustomDurationRestURL+'custom-durations/popup',method:'POST',data:params,processData:!1,contentType:!1}).fail(function(jqXHR){booknetic.panel_js.find('.popup-overlay').removeClass('enter');booknetic.toast(jqXHR.status+' error!')}).done(function(result){const payload=result&&result.data?result.data:result;const popupHtml=payload?payload['custom-durations']:'';if(!popupHtml){advanceWithDuration('');return} 4booknetic.panel_js.find('.popup-overlay').addClass('enter');$(popupHtml).appendTo(booknetic.panel_js.find('.booknetic_appointment_container')).queue(function(){requestAnimationFrame(function(){booknetic.panel_js.find('.booknetic_custom_duration_popup').addClass('enter')});if(primaryColor&&secondaryColor){booknetic.panel_js.find('#bkntc_custom_duration_continue').css('--bkntc-primary-color',primaryColor).css('--bkntc-secondary-color',secondaryColor)} 5if(!!prevDurationID){booknetic.panel_js.find('.bkntc_custom_durations[data-duration-id='+prevDurationID+']').css('border','2px solid '+primaryColor).find('.bkntc_custom_duration_p').css('color',primaryColor)}});booknetic.panel_js.find('.bkntc_popup-x').on('click',function(){booknetic.panel_js.find('.booknetic_custom_duration_popup').remove();booknetic.panel_js.find('.popup-overlay').removeClass('enter')});booknetic.panel_js.find('.bkntc_custom_durations, .bkntc_custom_durations_labels').on('click',function(e){advanceWithDuration($(e.currentTarget).data('duration-id'))});booknetic.panel_js.find('#bkntc_custom_duration_continue').off('click').on('click',function(){if(canGoForward)return;advanceWithDuration('')});scrollToPopup(booknetic)})}else{bookneticHooks.addFilter('load_step_'+nextStep,function(booknetic){return!0})}});bookneticHooks.addAction('loaded_step_service',function(booknetic){for(const i of servicesWithCustomDuration){let service=$(`.booknetic_service_card[data-id=${i[ 'service_id' ]}] .booknetic_service_duration_wrapper`);if(service.length>0) 6service.append(`<span class="booknetic_service_duration_span ">${ i[ 'duration' ] }</span>`)}});function scrollToPopup(booknetic){const modalBody=booknetic.panel_js.closest('.bkntc_booking_modal').find('.content .body');const scrollTarget=parseInt(booknetic.panel_js.offset().top)+booknetic.panel_js.outerHeight()-$(window).height()+100;if(modalBody.length>0){modalBody.animate({scrollTop:modalBody[0].scrollHeight},1000);return} 7$('html,body').animate({scrollTop:scrollTarget},1000)} 8function scrollAfterClose(booknetic){const modalBody=booknetic.panel_js.closest('.bkntc_booking_modal').find('.content .body');if(modalBody.length>0){modalBody.animate({scrollTop:0},500)}else if(booknetic.isMobileView()){$('html,body').animate({scrollTop:parseInt(booknetic.panel_js.offset().top)-100},1000)}}
9function invalidateCache(cart,booknetic){if(prevDurationID!==cart.custom_duration){let nextStep=booknetic.stepManager.getNextStep();while(nextStep.length>0){booknetic.panel_js.find('.booknetic_appointment_container_body [data-step-id="'+nextStep.data('step-id')+'"]').empty();nextStep=nextStep.next()}}}})})(jQuery)
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.