PageSourceSearch

https://buly1803.jp/cdn/shop/t/277/assets/buly-personalisation-modal.js?v=90527676647000964061782289706

js buly1803.jp collected 2026-09-30 12:01:38 UTC 34,817 bytes, 2 lines download raw bytes

1const personalisationToVariantMap=[{criteria:["has_custom_wrapping"],variantNames:["\u30EC\u30B6\u30FC\u30E9\u30C3\u30D4\u30F3\u30B0"]},{criteria:["has_engraving"],variantNames:["\u523B\u5370"]},{criteria:["has_soap_engraving"],variantNames:["\u305B\u3063\u3051\u3093\u523B\u5370"]},{criteria:["has_custom_wrapping","has_engraving"],variantNames:["\u30EC\u30B6\u30FC\u30E9\u30C3\u30D4\u30F3\u30B0 + \u523B\u5370","\u523B\u5370 + \u30EC\u30B6\u30FC\u30E9\u30C3\u30D4\u30F3\u30B0"]},{criteria:["has_custom_wrapping","has_soap_engraving"],variantNames:["\u30EC\u30B6\u30FC\u30E9\u30C3\u30D4\u30F3\u30B0 + \u305B\u3063\u3051\u3093\u523B\u5370","\u305B\u3063\u3051\u3093\u523B\u5370 + \u30EC\u30B6\u30FC\u30E9\u30C3\u30D4\u30F3\u30B0"]}];function setCustomisationSelector(personalisation){if(personalisation!="\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306A\u3057"){let values=[personalisation];const selectors=[...document.querySelectorAll('variant-radios.customisation input[name="\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA"]')],currentPersonalisation=selectors.find(selector=>selector.checked);let customisationSelector=currentPersonalisation;selectors.length>1&&(currentPersonalisation.value!="\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306A\u3057"&&!currentPersonalisation.value.includes(personalisation)&&(values=[`${currentPersonalisation.value} + ${personalisation}`,`${personalisation} + ${currentPersonalisation.value}`]),customisationSelector=selectors.find(selector=>values.some(value=>selector.value.includes(value)))),customisationSelector?.click()}}function unsetCustomisationSelector(personalisation){const selectors=[...document.querySelectorAll('input[name="Customisation"')],currentPersonalisation=selectors.find(selector=>selector.checked);if(selectors.forEach(selector=>selector.checked=!1),currentPersonalisation.value.includes("+")){const newOptionName=currentPersonalisation.value.replace(` + ${personalisation}`,"").replace(`${personalisation} + `,"");selectors.find(selector=>selector.value===newOptionName).checked=!0}else selectors.find(selector=>selector.value==="\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306A\u3057").checked=!0}class productEngraving extends HTMLElement{constructor(){super(),this.inputField=this.querySelector(".input-field"),this.inputEmbossingField=this.querySelector(".input-embossing-field"),this.inputCalligraphyField=this.querySelector(".input-calligraphy-field"),this.textareaPostCardField=this.querySelector(".textarea-post-card-field"),this.inputMonogram=this.querySelector(".input-monogram"),this.blockButtons=this.querySelectorAll(".block-button"),this.imageChangeButtons=this.querySelectorAll(".change-img-btn"),this.monogramImage=this.querySelector(".monogram-image"),this.insertHeartBtn=this.querySelector(".insert-heart"),this.insertCloverBtn=this.querySelector(".insert-clover"),this.insertAmpersandBtn=this.querySelector(".insert-ampersand"),this.engravingSlider=this.querySelector(".engraving-slider"),this.engravingCount=this.querySelector(".engraving-illustration-count");const personalisationModal2=this.closest("personalisation-modal");if(this.engravingSlider&&personalisationModal2&&typeof personalisationModal2.initSliders=="function"){const fontOptions=this.engravingSlider.dataset.bdmMetal==="true"?window.personalisation.engravingFontOptions?.filter(opt=>opt.name==="Officine Universelle"):window.personalisation.engravingFontOptions;personalisationModal2.initSliders(this.engravingSlider,fontOptions,this.engravingCount,!0)}this.inputEmbossingField&&!this.inputEmbossingField.classList.contains("allow-special-characters")&&this.inputEmbossingField.classList.add("allow-special-characters"),this.inputEmbossingField?this.inputEmbossingField.addEventListener("input",e=>this.replaceText(e,!1,"embossing")):this.inputCalligraphyField?this.inputCalligraphyField.addEventListener("input",e=>this.replaceText(e,!1,"calligraphy")):this.textareaPostCardField?this.textareaPostCardField.addEventListener("input",e=>this.replaceText(e,!1,"post_card")):this.inputField&&this.inputField.addEventListener("input",e=>this.replaceText(e,!0)),this.inputMonogram&&this.inputMonogram.addEventListener("input",e=>this.replaceMonogram(e)),this.insertHeartBtn&&this.insertHeartBtn.addEventListener("click",e=>this.insertSpecialChar(e,"\u2661")),this.insertCloverBtn&&this.insertCloverBtn.addEventListener("click",e=>this.insertSpecialChar(e,"\u2667")),this.insertAmpersandBtn&&this.insertAmpersandBtn.addEventListener("click",e=>this.insertSpecialChar(e,"&")),this.blockButtons&&this.blockButtons.forEach(button=>{button.addEventListener("click",e=>this.changeBlocks(e))})}insertSpecialChar(e,character){const inputField=this.inputEmbossingField||this.textareaPostCardField||this.inputField;if(!inputField)return;const maxLength=inputField.maxLength||(this.inputEmbossingField?3:50);if(inputField.value.length>=maxLength)return;inputField.value=inputField.value+character;
1const inputEvent=new Event("input",{bubbles:!0});inputField.dispatchEvent(inputEvent)}changeBlocks(e){const type=e.currentTarget.getAttribute("name");for(const button of this.blockButtons){const name=button.getAttribute("name"),container=document.querySelector(`.${name}-container`);type==name?(button.classList.add("active"),container.classList.add("active"),name=="monogram"?(e.target.closest(".personalisation-modal").querySelector(".soap_image").classList.add("monogram"),e.target.closest(".personalisation-modal").querySelector(".monogram-styles").innerHTML="<style>.soap_image.monogram:before { background-image: url('http://cdn.shopify.com/s/files/1/0569/5602/7079/files/AA.svg') }</style>"):e.target.closest(".personalisation-modal").querySelector(".soap_image").classList.remove("monogram")):(button.classList.remove("active"),container.classList.remove("active"))}}replaceText(e,isSlider,type){if(e.currentTarget.value.trim()===""&&e.currentTarget.value.length>0){e.currentTarget.value="";return}if(e.currentTarget.classList.contains("regex-check")){let regex;const allowSpaces=e.currentTarget.classList.contains("allow-spaces"),allowNumbers=e.currentTarget.classList.contains("allow-numbers"),allowSpecialCharacters=e.currentTarget.classList.contains("allow-special-characters"),allowJapaneseCharacters=e.currentTarget.classList.contains("allow-japanese-characters"),removeDot=e.currentTarget.classList.contains("remove-dot");let charSet="a-zA-Z&.\u30FB";removeDot&&(charSet="a-zA-Z&\u30FB"),allowNumbers&&(charSet+="0-9"),allowSpaces&&(charSet+=" "),allowSpecialCharacters&&(charSet+="\u2661\u2667"),allowJapaneseCharacters&&(charSet+="\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\uFF00-\uFFEF"),e.currentTarget.dataset.bdmMetal==="true"&&(charSet+="s'.,\xC7\xE7\u0152\u0153\xC6\xE6!?\xE9\xC9-"),regex=new RegExp(`^[${charSet}]*$`);let value=e.currentTarget.value;if(!regex.test(value)){let replacementPattern,baseChars="a-zA-Z&.\u30FB";removeDot&&(baseChars="a-zA-Z&\u30FB");let numberChars=allowNumbers?"0-9":"",spaceChar=allowSpaces?" ":"",specialChars=allowSpecialCharacters?"\u2661\u2667":"",japaneseChars=allowJapaneseCharacters?"\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\uFF00-\uFFEF":"",bdmMetalChars=e.currentTarget.dataset.bdmMetal==="true"?"s'.,\xC7\xE7\u0152\u0153\xC6\xE6!?\xE9\xC9-":"";replacementPattern=new RegExp(`[^${baseChars}${numberChars}${spaceChar}${specialChars}${japaneseChars}${bdmMetalChars}]`,"g"),e.currentTarget.value=value.replace(replacementPattern,"");const target=e.currentTarget,maxLength=target.maxLength,length=target.value.length;target.closest("div").querySelector(".soap-letter-count").innerHTML=`${length}/${maxLength}`}}if(isSlider==!0){const slides=e.currentTarget.closest("product-engraving").querySelectorAll(".swiper-slide"),inputValue=e.which,value=e.target.value.length==0?"ABC":e.target.value;let font="";for(const slide of slides)if(value.length<4&&(slide.querySelector(".font-box").innerHTML=`<p>${value.toUpperCase()}</p>`),slide.classList.contains("active")==!0){let activeSlide=slide.querySelector(".slide-box");font=`${window.personalisation_locale.font}: ${activeSlide.getAttribute("data-val")}`,slide.parentElement.closest(".personalisation-modal-grid").classList.add("soap-engraving-active"),slide.parentElement.closest(".personalisation-modal-grid").querySelector(".soap_image").setAttribute("data-content",value.toUpperCase()),slide.parentElement.closest(".accordion-block").setAttribute("data-value",`${font}, ${window.personalisation_locale.engraving}: ${value.toUpperCase()}`)}}if(type=="embossing"&&(e.currentTarget.closest(".accordion-block").setAttribute("data-value",`${window.personalisation_locale.embossing}: ${e.currentTarget.value.toUpperCase()}`),e.currentTarget.classList.contains("input-embossing-field")&&(e.currentTarget.value.length>0?(e.currentTarget.closest(".accordion-block").classList.add("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.removeAttribute("disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.removeAttribute("disabled")):(e.currentTarget.closest(".accordion-block").classList.remove("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.setAttribute("disabled","disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.setAttribute("disabled","disabled")))),type=="calligraphy"&&e.currentTarget.classList.contains("input-calligraphy-field"))if(e.currentTarget.value.length>0&&e.currentTarget.value.trim()!=""){let calligraphyType="";
1Array.from(this.imageChangeButtons).forEach(button=>{button.classList.contains("active")&&(calligraphyType=button.innerHTML)}),e.currentTarget.closest(".accordion-block").classList.add("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.removeAttribute("disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.removeAttribute("disabled"),e.currentTarget.closest(".accordion-block").setAttribute("data-value",`${window.personalisation_locale.name}: ${e.currentTarget.value}`)}else e.currentTarget.closest(".accordion-block").classList.remove("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.setAttribute("disabled","disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.setAttribute("disabled","disabled"),e.currentTarget.closest(".accordion-block").removeAttribute("data-value",`${window.personalisation_locale.name}: ${e.currentTarget.value}`);type=="post_card"&&(e.currentTarget.classList.contains("input-post-card-field")||e.currentTarget.classList.contains("textarea-post-card-field"))&&(e.currentTarget.value.length>0&&e.currentTarget.value.trim()!=""?(e.currentTarget.closest(".accordion-block").classList.add("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.removeAttribute("disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.removeAttribute("disabled"),e.currentTarget.closest(".accordion-block").setAttribute("data-value",`${window.personalisation_locale.name}: ${e.currentTarget.value}`)):(e.currentTarget.closest(".accordion-block").classList.remove("completed"),e.currentTarget.closest("product-engraving").querySelector("button")?.setAttribute("disabled","disabled"),e.currentTarget.closest("personalisation-modal").querySelector(".product-form__submit[data-personalization-submit-button]")?.setAttribute("disabled","disabled"),e.currentTarget.closest(".accordion-block").removeAttribute("data-value")))}replaceMonogram(e){const value=e.currentTarget.value.toUpperCase(),sortedValue=value.split("").sort().join("");value.length<2||(this.monogramImage.setAttribute("src",`https://cdn.shopify.com/s/files/1/0569/5602/7079/files/${sortedValue}.svg`),e.target.closest(".personalisation-modal").querySelector(".monogram-styles").innerHTML=`<style>.soap_image.monogram:before { background-image: url('http://cdn.shopify.com/s/files/1/0569/5602/7079/files/${value}.svg') }</style>`,e.target.closest(".accordion-block").setAttribute("data-value",`\u30E2\u30CE\u30B0\u30E9\u30E0: ${value.toUpperCase()}`))}}class giftWrapping extends HTMLElement{constructor(){super(),this.giftWrapSelects=this.querySelectorAll(".gift-wrap-select"),this.giftWrapInput
1=this.querySelector(".input-field"),this.submitButton=this.querySelector("button"),this.inputField=this.querySelector(".input-field"),this.inputField&&this.inputField.addEventListener("input",e=>this.replaceText(e)),this.giftWrapSelects&&this.giftWrapSelects.forEach(select=>{select.options.length>1?select.addEventListener("change",e=>this.fetchSelectData(e)):select.closest(".accordion-block").setAttribute("data-value","\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044")}),this.submitButton.disabled=!0}replaceText(e){const isCalligraphyField=e.currentTarget.classList.contains("input-calligraphy-field"),isPostCardField=e.currentTarget.classList.contains("input-post-card-field")||e.currentTarget.classList.contains("textarea-post-card-field"),displayValue=isCalligraphyField||isPostCardField?e.currentTarget.value:e.currentTarget.value.toUpperCase();let combinedData=`${window.personalisation_locale.gift_wrap}: ${displayValue}`,inputNumberRegexCheck=e.currentTarget.classList.contains("regex-check-numbers-allowed");const inputKey=e.which;!isCalligraphyField&&!isPostCardField&&(e.target.value=e.target.value.toUpperCase()),regexKeysChecker(inputNumberRegexCheck?49:65);function regexKeysChecker(keyStartAllowFrom){!(inputKey>=keyStartAllowFrom&&inputKey<=120)&&inputKey!=16&&inputKey!=189&&inputKey!=0&&inputKey!==32&&(e.target.value.length==1?e.target.value="":e.target.value=e.target.value.slice(0,e.target.value.length-1))}this.giftWrapSelects.forEach(select=>{const label=select.getAttribute("data-label"),text=select.options[select.selectedIndex].text;combinedData=combinedData+`, ${label}: ${text}`}),e.currentTarget.value==""?this.submitButton.disabled=!0:this.submitButton.disabled=!1,e.currentTarget.closest(".accordion-block").setAttribute("data-value",combinedData)}checkButtonState(){let allCompleted=!0;this.giftWrapSelects.forEach(select=>{select.classList.contains("selected")==!1&&(allCompleted=!1)}),allCompleted&&this.submitButton.removeAttribute("disabled")}fetchSelectData(e){e.target.classList.add("selected"),this.checkButtonState();let combinedData=`${window.personalisation_locale.text}: ${this.querySelector(".input-field").value}`;this.giftWrapSelects.forEach(select=>{const label=select.getAttribute("data-label"),text=select.options[select.selectedIndex].text;combinedData=combinedData+`, ${label}: ${text}`}),e.target.closest(".accordion-block").setAttribute("data-value",combinedData)}}class telegramMessaging extends HTMLElement{constructor(){super(),this.letterCount=this.querySelector(".telegram-letter-count"),this.textarea=this.querySelector(".textarea-telegram-field"),this.submitButton=this.querySelector(".accordion-submit"),this.textarea.addEventListener("input",e=>this.messageCheck(e)),this.submitButton.addEventListener("click",e=>this.variantCheck(e))}messageCheck(e){let noSpaceValue=this.textarea.value.replace(/ /g,"").length;Array.from(window.personalisation.telegramVariants).forEach(item=>{if(item.title==noSpaceValue){e.currentTarget.closest(".accordion-block").setAttribute("data-id",item.id);return}}),this.letterCount.innerText=`${noSpaceValue}/100`,noSpaceValue<=100?e.currentTarget.closest(".accordion-block").setAttribute("data-value",this.textarea.value):this.textarea.value=this.textarea.value.slice(0,-1)}findVariant(variantArray,value){for(var i=0;i<variantArray.length;i++)if(variantArray[i].title===value)return variantArray[i].id}variantCheck(e){const variantArray=window.personalisation.telegramVariants,value=this.querySelector(".textarea-telegram-field").value.length,variantID=this.findVariant(variantArray,value);e.target.closest(".accordion-block").setAttribute("telegram-variant",variantID)}}class personalisationForm extends HTMLElement{constructor(){super(),this.form=this.querySelector("form"),this.form&&this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.cartItems=document.querySelector("cart-items"),this.miniCart=document.querySelector("fostr-modal-dialog#MiniCart")}vanillaSerialize(data){let obj={};for(let[key,value]of data)obj[key]!==void 0?(Array.isArray(obj[key])||(obj[key]=[obj[key]]),obj[key].push(value)):obj[key]=value;return obj}onSubmitHandler(evt){evt.preventDefault();let propArray=[],propArrayBundleSlots=[],telegramVariant="";const hasEngravingService=this.dataset.engravingService==="true",hasSoapEngravingService=this.dataset.soapEngravingService==="true",hasFreeEngraving=this.dataset.freeEngraving==="true",isBundleSlots=this.dataset.bundleSlots==="true",submitButton=this.querySelector('[type="submit"]');let accordionBlocks=document.getElementsByClassName("completed");for(let i=0;i<accordionBlocks.length;i++){let accordionBlock=accordionBlocks[i],label=accordionBlock.dataset.label,value=accordionBlock.dataset.value;if(label==null||value==null)return;if(accordionBlock.getAttribute("data-id")&&(telegramVariant=accordionBlock.getAttribute("data-id")),propArray.push({key:`${label}`,value:`${value}`}),isBundleSlots){let customizedVariant=accordionBlock.dataset.variantIdBundlePersonalization,customizationType=accordionBlock.dataset.personalizationType;if(customizationType==="postcard-address"||customizationType==="telegram-address"){const existingItemIndex=propArrayBundleSlots.findIndex(item=>item.variantIds&&customizedVariant&&JSON.stringify(item.variantIds.sort())===JSON.stringify(customizedVariant.split(",").sort()));
1if(existingItemIndex!==-1){const existingValue=propArrayBundleSlots[existingItemIndex].values.value;propArrayBundleSlots[existingItemIndex].values.value=existingValue?`${existingValue}, ${value}`:value}}else propArrayBundleSlots.push({type:customizationType,values:{label,value},...customizedVariant&&customizedVariant.length>0&&{variantIds:customizedVariant.split(",")}})}}let jObject={};isBundleSlots||(jObject=propArray.reduce((obj,item)=>Object.assign(obj,{[item.key]:item.value}),{})),jObject["_service-customization-product-value"]=JSON.stringify(propArray.reduce((acc,item)=>(acc[item.key]=item.value,acc),{})),isBundleSlots&&(jObject._bundle_slots_customization=JSON.stringify(propArrayBundleSlots)),hasEngravingService?jObject["_service-customization-product"]="engraving":hasSoapEngravingService&&(jObject["_service-customization-product"]="soap_engraving"),hasFreeEngraving&&(jObject["_service-customization-free-engraving"]="true");const bundleComponent=document.querySelector("product-bundle-form");if(bundleComponent&&bundleComponent.variantIds.length>0){const variantsId=bundleComponent.variantIds.join(",");properties._bundle_component=variantsId,properties.\u30BB\u30C3\u30C8\u5185\u5BB9=bundleComponent.getTitles().join(", ")}const bundleStore=Alpine.store("productBundle");if(bundleStore&&bundleStore.isReady&&bundleStore.variantIds&&bundleStore.variantIds.length>0){const variantsId=bundleStore.variantIds.join(",");jObject._bundle_component=variantsId}submitButton.setAttribute("disabled",!0),submitButton.classList.add("loading");let itemsArr=[];const prodID=this.form.querySelector('input[name="id"]').value;if(telegramVariant.length>0?itemsArr.push({id:telegramVariant,quantity:1,properties:jObject}):propArray?itemsArr.push({id:prodID,quantity:1,properties:jObject}):itemsArr.push({id:prodID,quantity:1}),!isBundleSlots&&telegramVariant.length===0&&(hasEngravingService||hasSoapEngravingService)){const engravingSlug=hasSoapEngravingService?hasFreeEngraving?"free_soap_engraving":"soap_engraving":hasFreeEngraving?"free_engraving":"engraving",engravingServices=window.personalisation&&window.personalisation.engraving_services,engravingVariantId=engravingServices&&engravingServices[engravingSlug];console.group("[NESTED-ATC] engraving child resolution"),console.log("flags",{hasEngravingService,hasSoapEngravingService,hasFreeEngraving,isBundleSlots}),console.log("engravingSlug",engravingSlug),console.log("engravingVariantId",engravingVariantId),console.log("window.personalisation.engraving_services",engravingServices),console.log("parent prodID",prodID),console.groupEnd(),engravingVariantId?itemsArr.push({id:engravingVariantId,quantity:1,parent_id:Number(prodID)}):console.warn(`[NESTED-ATC] Engraving service variant id missing for slug "${engravingSlug}" \u2014 skipping nested child.`)}console.log("[NESTED-ATC] itemsArr before POST",JSON.parse(JSON.stringify(itemsArr)));const body=JSON.stringify({items:itemsArr,sections:this.cartItems.getSectionsToRender().map(section=>section.id),sections_url:window.location.pathname});fetch(`${routes.cart_add_url}`,{...fetchConfig("javascript"),body}).then(response=>response.json()).then(parsedState=>{if(console.group("[NESTED-ATC] /cart/add.js response"),console.log("status",parsedState.status),console.log("items",parsedState.items),parsedState.items&&parsedState.items.forEach((it,i)=>{console.log(`item[${i}] key=${it.key} variant_id=${it.variant_id} parent_relationship=`,it.parent_relationship)}),console.log("description",parsedState.description),console.log("full response",parsedState),console.groupEnd(),parsedState.status==422){const cartError=document.querySelector(".mini-cart-add-error");cartError&&(cartError.classList.remove("hidden"),cartError.innerHTML=parsedState.description||window.cartStrings.error),this.miniCart?.show()}else return document.getElementById("personalisation-modal-container").classList.remove("visible"),document.querySelector(".mini-cart-add-error").classList.add("hidden"),this.cartItems.renderContents(parsedState),this.cartItems.checkGifts()}).catch(e=>{console.error(e)}).finally(()=>{submitButton.classList.remove("loading"),submitButton.removeAttribute("disabled")})}}class personalisationModal extends HTMLElement{constructor(){super(),this.personalisationModal=document.getElementById("personalisation-modal-container"),this.accordionBlocks=this.querySelectorAll(".accordion-block"),this.closeButton=this.querySelector(".button--close-modal"),this.imageChangeButtons=this.querySelectorAll(".change-img-btn"),this.modalSlides=this.querySelectorAll(".modal-slide"),this.modalImage=this.querySelector(".personalisation-modal__image img"),this.inputFields=this.querySelectorAll(".input-field"),this.inputMonograms=this.querySelectorAll(".input-monogram"),this.fontExclusions=this.querySelector("#font-exclusions"),this.details=this.querySelectorAll("details .accordion__title"),this.boxIllustrationSlider=this.querySelector(".box-illustration-sli
1der"),this.boxIllustrationCount=this.querySelector(".box-illustration-count"),this.soapEngravingSlider=this.querySelector(".soap-font-slider"),this.soapEngravingCount=this.querySelector(".soap-font-illustration-count"),this.closeButton.addEventListener("click",e=>this.closeModal(e)),this.imageChangeButtons.forEach(button=>{button.addEventListener("click",e=>this.changeModalImage(e))}),this.details.forEach(details=>{details.addEventListener("click",e=>this.checkDetails(e))}),this.inputFields.forEach(input=>{input.addEventListener("input",e=>this.inputCheck(e)),input.addEventListener("input",e=>this.validateInput(e)),input.addEventListener("input",e=>this.completeSection(e,!0))}),this.inputMonograms.forEach(input=>{input.addEventListener("input",e=>this.inputCheck(e)),input.addEventListener("input",e=>this.completeSection(e,!0)),input.addEventListener("input",e=>this.validateInput(e))}),this.modalSlides.forEach(modalSlide=>modalSlide.on("click",e=>this.changeActive(e))),this.soapEngravingSwiper=this.initSliders(this.soapEngravingSlider,window.personalisation.soapEngravingFontOptions,this.soapEngravingCount,!0),this.boxIllustrationSwiper=this.initSliders(this.boxIllustrationSlider,window.personalisation.boxArtOptions,this.boxIllustrationCount,!1),this.injectEl("#paper-reference",window.personalisation.custom_wrapping),this.injectEl("#ribbon-colour",window.personalisation.gift_wrap_ribbons)}validateInput(e){if(e.currentTarget.value.trim()===""&&e.currentTarget.value.length>0){e.currentTarget.value="";return}if(e.currentTarget.classList.contains("regex-check")){const errorMessage=e.target.closest(".accordion-block").querySelector(".error-message");let regex;const allowSpaces=e.currentTarget.classList.contains("allow-spaces"),allowNumbers=e.currentTarget.classList.contains("allow-numbers"),allowSpecialCharacters=e.currentTarget.classList.contains("allow-special-characters"),allowJapaneseCharacters=e.currentTarget.classList.contains("allow-japanese-characters"),removeDot=e.currentTarget.classList.contains("remove-dot");let charSet="a-zA-Z&.\u30FB";removeDot&&(charSet="a-zA-Z&\u30FB"),allowNumbers&&(charSet+="0-9"),allowSpaces&&(charSet+=" "),allowSpecialCharacters&&(charSet+="\u2661\u2667"),allowJapaneseCharacters&&(charSet+="\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\uFF00-\uFFEF"),e.currentTarget.dataset.bdmMetal==="true"&&(charSet+="s'.,\xC7\xE7\u0152\u0153\xC6\xE6!?\xE9\xC9-"),regex=new RegExp(`^[${charSet}]*$`);let value=e.currentTarget.value;if(regex.test(value))errorMessage.classList.remove("active"),errorMessage.setAttribute("aria-hidden","true");else{errorMessage.classList.add("active"),errorMessage.setAttribute("aria-hidden","false");let baseChars="a-zA-Z&.\u30FB";removeDot&&(baseChars="a-zA-Z&\u30FB");let numberChars=allowNumbers?"0-9":"",spaceChar=allowSpaces?" ":"",specialChars=allowSpecialCharacters?"\u2661\u2667":"",japaneseChars=allowJapaneseCharacters?"\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\uFF00-\uFFEF":"",bdmMetalChars=e.currentTarget.dataset.bdmMetal==="true"?"s'.,\xC7\xE7\u0152\u0153\xC6\xE6!?\xE9\xC9-":"";const replacementPattern=new RegExp(`[^${baseChars}${numberChars}${spaceChar}${specialChars}${japaneseChars}${bdmMetalChars}]`,"g");e.currentTarget.value=value.replace(replacementPattern,"");const target=e.currentTarget,maxLength=target.maxLength,length=target.value.length,countElement=target.closest("div").querySelector(".soap-letter-count");countElement&&(countElement.innerHTML=`${length}/${maxLength}`)}}}checkDetails(e){e.currentTarget.getAttribute("data-id")&&e.currentTarget.closest(".personalisation-modal").classList.toggle("soap-engraving-active")}fetchPersonlisationData(e){let lineItemProp="";return this.accordionBlocks.forEach(accordionBlock=>{let label=accordionBlock.getAttribute("data-label"),value=accordionBlock.getAttribute("data-value");label==null||value==null||(lineItemProp=lineItemProp+`"${label}": "${value}"`)}),lineItemProp}insertSpecialChar(e,character,inputField){if(!inputField||inputField.value.length>=inputField.maxLength)return;inputField.value=inputField.value+character;
1const inputEvent=new Event("input",{bubbles:!0});inputField.dispatchEvent(inputEvent)}closeModal(){this.personalisationModal.classList.remove("visible")}changeActive(e){let slideVal=e.currentTarget.querySelector(".slide-box").getAttribute("data-val"),valClass=slideVal.toLowerCase().replace(/ /g,"-"),accordion=e.target.closest(".accordion-block");accordion.querySelectorAll(".modal-slide").forEach(modalSlide=>modalSlide.classList.remove("active"));const parentSlider=e.target.closest(".engraving-slider");let dataLabelText=window.personalisation_locale.text;parentSlider&&(parentSlider.dataset.class==="engraving-slider"||parentSlider.dataset.class==="soap-engraving-slider")&&(dataLabelText=window.personalisation_locale.engraving),accordion.setAttribute("data-value",`${window.personalisation_locale.font}:${slideVal}, ${dataLabelText}: ${e.target.closest(".accordion-block").querySelector(".input-field").value.toUpperCase()}`),e.target.closest(".modal-slide").classList.add("active"),e.currentTarget.closest(".personalisation-modal").setAttribute("engraving-font",valClass)}changeModalImage(e){Array.from(this.imageChangeButtons).forEach(button=>{button.classList.remove("active")}),e.currentTarget.classList.add("active"),this.modalImage.setAttribute("src",e.currentTarget.getAttribute("data-img"))}injectEl(elID,metafield){let el=this.personalisationModal.querySelector(elID);el&&Array.from(metafield).forEach(item=>{let option=document.createElement("option");option.index==1&&option.setAttribute("selected"),option.setAttribute("value",item.name),option.innerHTML=item.name,el.appendChild(option)})}inputCheck(e){const target=e.target,maxLength=target.maxLength,length=target.value.length;target.closest("div").querySelector(".soap-letter-count").innerHTML=`${length}/${maxLength}`}completeSection(e,initalsInput){if(e.currentTarget.value.trim()===""&&e.currentTarget.value.length>0){e.currentTarget.value="";return}const parentEl=e.target.closest(".accordion-block"),inputField=e.target;let inputFieldValue=inputField?inputField.value:"";const allowSpaces=inputField&&inputField.classList.contains("allow-spaces"),allowNumbers=inputField&&inputField.classList.contains("allow-numbers"),allowSpecialCharacters=inputField&&inputField.classList.contains("allow-special-characters"),allowJapaneseCharacters=inputField&&inputField.classList.contains("allow-japanese-characters");let charSet="a-zA-Z&\\.\u30FB";if(allowNumbers&&(charSet+="0-9"),allowSpaces&&(charSet+=" "),allowSpecialCharacters&&(charSet+="\u2661\u2667"),allowJapaneseCharacters&&(charSet+="\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF\uFF00-\uFFEF"),inputField.dataset.bdmMetal==="true"&&(charSet+="s'.,\xC7\xE7\u0152\u0153\xC6\xE6!?\xE9\xC9-"),!new RegExp(`^[${charSet}]*$`).test(inputFieldValue)){e.preventDefault();return}const modalContent=e.target.closest(".personalisation-modal__content"),type=parentEl.getAttribute("data-type");if(type&&type.length>0&&setCustomisationSelector(type),initalsInput!=!0){const details=parentEl.querySelector("details");details&&details.removeAttribute("open")}if(inputFieldValue.length>0?parentEl.classList.add("completed"):parentEl.classList.remove("completed"),modalContent){const submitButton=modalContent.querySelector(".product-form__submit[data-personalization-submit-button]");if(submitButton){submitButton.removeAttribute("disabled");const buttonSpan=modalContent.querySelector("button span");buttonSpan&&window.cart_locale&&window.cart_locale.add_to_cart&&(buttonSpan.innerHTML=window.cart_locale.add_to_cart)}}}initSliders(sliderEl,array,countEl,isFont){let defaultBoxArt="";if(isFont==!1&&(defaultBoxArt=document.querySelector("personalisation-modal").getAttribute("default-boxart")),sliderEl){for(const item of array){let wrapper=document.createElement("div"),inner=document.createElement("div"),innerFont=null;if(isFont)inner.innerHTML="<p>ABC</p>",inner.setAttribute("class",`slide-box font-box font-box--${item.name.toLowerCase().replace(/ /g,"-")}`),innerFont=document.createElement("div"),innerFont.innerHTML=`<p class="!tw-text-base tw-text-center" data-font-name>${item.name?.replace("Regular","")?.toUpperCase()}</p>`,innerFont.setAttribute("class",`tw-mb-0 font-box--${item.name.toLowerCase().replace(/ /g,"-")}`);else{let img=document.createElement("img");img.setAttribute("src",item.path),img.setAttribute("alt",item.name),inner.setAttribute("class","slide-box art-box"),inner.appendChild(img)}inner.setAttribute("data-val",item.name),wrapper.setAttribute("class","modal-slide swiper-slide"),wrapper.appendChild(inner),innerFont&&wrapper.appendChild(innerFont),item.name=="Officine"&&wrapper.classList.add("class","active"),isFont==!1&&defaultBoxArt==item.handle?(wrapper.querySelector("div").classList.add("active"),sliderEl.querySelector(".swiper-wrapper").prepend(wrapper)):sliderEl.querySelector(".swiper-wrapper").appendChild(wrapper)}countEl&&(array.length>1?(countEl&&(countEl.innerHTML=`${array.length} Options`),countEl.classList.remove("hidden")):countEl.classList.add("hidden"));const modalSlides=this.querySelectorAll(".modal-slide");
1return isFont?modalSlides.forEach(modalSlide=>modalSlide.addEventListener("click",e=>this.changeActive(e))):modalSlides.forEach(modalSlide=>modalSlide.addEventListener("click",e=>this.changeActiveBox(e))),new Swiper(sliderEl,{watchSlidesProgress:!0,loop:!1,spaceBetween:15,breakpoints:{1:{slidesPerView:2.8},440:{slidesPerView:4},750:{slidesPerView:2.8},920:{slidesPerView:3.7}},scrollbar:{el:".swiper-scrollbar",draggable:!0}})}}changeActiveBox(e){e.target.closest(".accordion-block").querySelectorAll(".art-box").forEach(box=>box.classList.remove("active")),e.target.closest(".slide-box").classList.add("active"),e.target.closest(".accordion-block").setAttribute("data-value",e.target.alt)}fetchProductData(productHandle,variantID){fetch(`${productHandle}?sections=buly_modal&variant=${variantID}`).then(response=>response.json()).then(parsedState=>(this.renderContents(parsedState),parsedState)).catch(err=>{console.error(err)})}getSectionsToRender(){return[{id:"personalisation-modal-container",section:"modal",selector:".personalisation-modal__inner"}]}renderContents(parsedState){this.getSectionsToRender().forEach(section=>{const elementToReplace=document.getElementById(section.id)?.querySelector(section.selector)||document.getElementById(section.id);if(!elementToReplace)return;const newContent=parsedState.buly_modal;elementToReplace.innerHTML=this.getSectionInnerHTML(newContent,section.selector)}),document.querySelector('personalisation-modal input[value="\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306A\u3057"]')&&document.querySelector('personalisation-modal input[value="\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306A\u3057"]').click();const colours=[...document.querySelectorAll('variant-radios.customisation input[name="\u8272\u9
1078\u629E"]')];if(colours.length==0)return;let activeColour;colours.length>1&&(activeColour=colours.find(colour=>colour.checked)),colours[0].click(),colours[colours.length-1].click(),activeColour.click()}getSectionInnerHTML(html,selector=".shopify-section",hideClass){let newEl=new DOMParser().parseFromString(html,"text/html");return newEl=newEl.querySelector(selector)||newEl,hideClass&&newEl.querySelectorAll(hideClass).forEach(el=>el.classList.add("hide-to-animate")),newEl.innerHTML}}customElements.define("product-engraving",productEngraving),customElements.define("personalisation-form",personalisationForm),customElements.define("personalisation-modal",personalisationModal),customElements.define("gift-wrapping",giftWrapping),customElements.define("telegram-messaging",telegramMessaging);
2//# sourceMappingURL=/cdn/shop/t/277/assets/buly-personalisation-modal.js.map?v=90527676647000964061782289706

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.