https://nfoto.no/wp-content/cache/min/1/wp-content/plugins/colorlab/public/js/main.js?ver=1790256039
1(function($){'use strict';var data=null;var initialAddToCartText='';var variationId='';function isPrintlaneActiveForCurrentVariant(){const variantIdEl=document.querySelector(data.button_selector)?.closest('form')?.querySelector('input[name="variation_id"]');if(!variantIdEl)return!0;variationId=variantIdEl.value;return!!(data.variations&&typeof data.variations==='object'&&data.variations[variationId])} 2function updateThumbnail(link){if(!link)return;var id=link.getAttribute('data-colorlab-id');var token=link.getAttribute('data-colorlab-token');if(!id||!token||!printlane.loadThumbnail)return;printlane.loadThumbnail(id+'.'+token).then((url)=>{if(!url)return;var cartItemEl=$(link).closest('tr');if(!cartItemEl.length)cartItemEl=$(link).closest('.wc-block-components-order-summary-item');if(!cartItemEl.length)cartItemEl=$(link).closest('li');if(!cartItemEl.length)return;var img=cartItemEl.find('img');if(!img.length)return;img[0].getAttribute('srcset');img[0].removeAttribute('srcset');img[0].getAttribute('data-src');img[0].removeAttribute('data-src');img[0].getAttribute('data-srcset');img[0].removeAttribute('data-srcset');img[0].src=url}).catch((err)=>{console.error('Printlane: unable to load thumbnail due to error',err)})} 3function onEditDesign(designId,designToken){printlane.open({shop:data.shop,id:designId,token:designToken,language:data.language,options:{generateThumbnail:data.cart_thumbnails==='yes',generateThumbnailType:'base64'},callback:function(){printlane.close();var els=document.querySelectorAll('.colorlab-edit-personalisation');for(var i=0;i<els.length;i++){updateThumbnail(els[i])}}})} 4function onCreateDesign($form){var productId=data.product;if(variationId&&data.variations[variationId]!==undefined){productId=data.variations[variationId]} 5printlane.open({shop:data.shop,product:{id:productId},language:data.language,options:{generateThumbnail:data.cart_thumbnails==='yes',generateThumbnailType:'base64'},callback:function(id,token){printlane.close();var adcEls=$form[0].querySelectorAll('input[name="add-to-cart"]');if(!adcEls.length){adcEls=$form[0].querySelectorAll('*[name="add-to-cart"]');if(adcEls.length){$("<input type='hidden' name='add-to-cart' />").val($(adcEls[0]).val()).appendTo($form)}} 6$("<input type='hidden' name='colorlab_id'/>").val(id).appendTo($form);$("<input type='hidden' name='colorlab_token'/>").val(token).appendTo($form);$form[0].submit()},events:{beforeOpen:function(){try{const isValid=$(document).triggerHandler('pewc_trigger_js_validation');if(typeof isValid==='boolean')return isValid}catch(e){}}},})} 7function replacePrintlaneLinksOnCartAndMinicart(items){function whenPrintlaneLinkElementReplaceValue(node){const targetClasses=['variation-printlane-design-link','wc-block-components-product-details__printlane-design-link'];if(targetClasses.some(targetClass=>node.classList.contains(targetClass))){if(node.nodeName==="LI"||node.nodeName==="DIV"||node.nodeName==="SPAN"){replaceElementValueWithChangeCustomizationLink(node)} 8if(node.nodeName==='DD')replaceElementValueWithChangeCustomizationLink(node);if(node.nodeName==="DT")node.style.display="none";bindCartUI()}else{for(const child of node.children){whenPrintlaneLinkElementReplaceValue(child)}}} 9const replaceElementValueWithChangeCustomizationLink=(el)=>{const value=el.querySelector('.wc-block-components-product-details__value')?.textContent.trim();if(!value)return;const[id,token]=value.split(':');el.innerHTML=`<a href="#" class="colorlab-edit-personalisation" data-colorlab-id="${id}" data-colorlab-token="${token}">${data['change_customization_text']}</a>`} 10const observer=new MutationObserver((mutationsList,observer)=>{for(const mutation of mutationsList){for(const addedNode of mutation.addedNodes){if(addedNode.nodeType===Node.ELEMENT_NODE){whenPrintlaneLinkElementReplaceValue(addedNode)}}}});const targetNode=document.body;const config={childList:!0,subtree:!0};observer.observe(targetNode,config)} 11function bindProductPageUI(){const btn=$(data.button_selector);if(data.add_to_cart_text)btn.text(data.add_to_cart_text);btn.closest('form').on('submit',function(e){if(!e.originalEvent||!e.originalEvent.submitter||!e.originalEvent.submitter.matches(data.button_selector))return;e.preventDefault();onCreateDesign($(this))})} 12function unbindProductPageUI(){const btn=$(data.button_selector);btn.html(initialAddToCartText);btn.closest('form').off('submit')} 13function bindCartUI(){if(data.cart_thumbnails==='yes'){var els=document.querySelectorAll('.colorlab-edit-personalisation');for(var i=0;i<els.length;i++){updateThumbnail(els[i])}} 14$('.colorlab-edit-personalisation').on('click',function(e){e.preventDefault();const designId=$(this).data('colorlab-id');const designToken=$(this).data('colorlab-token');onEditDesign(designId,designToken)})}
15function init(){if(typeof window.printlane==='undefined'){console.error('Printlane library is not available');return!1} 16if(typeof window.woocommerce_printlane_data==='undefined'){console.warn('Printlane data is not set');return!1} 17data=window.woocommerce_printlane_data;if(!data.shop||!data.language){console.warn('Printlane shop or language are not set');return!1} 18var onProductPage=!!document.querySelectorAll(data.button_selector).length;if(onProductPage&&data.enable_on_product_page){if(isPrintlaneActiveForCurrentVariant())bindProductPageUI();initialAddToCartText=$(data.button_selector).html();$(".single_variation_wrap").on("show_variation",function(event,variation){if(isPrintlaneActiveForCurrentVariant()){bindProductPageUI()}else{unbindProductPageUI()}})} 19if(data.has_block_layout)replacePrintlaneLinksOnCartAndMinicart();var onCartPage=!!$('.colorlab-edit-personalisation').length;if(onCartPage)bindCartUI()} 20function onReady(fn){if(document.readyState!=='loading'){fn()}else{document.addEventListener('DOMContentLoaded',fn)}} 21onReady(init);$(document.body).on('updated_cart_totals',function(){init()})})(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.