PageSourceSearch

https://www.lepona.de/public/theme/af75b816cf655c543e36d5ca303bf3f…/prems-bonus-system.js?1791455736

js lepona.de collected 2026-10-08 10:51:23 UTC 8,361 bytes, 3 lines download raw bytes

1(()=>{"use strict";let t=window.PluginBaseClass;class e extends t{static #t=this.options={pointInput:"#bonus-slider-points",pointDisplayOutput:"#point-display-output",btnRedeemPoints:".btn-redeem-points",sliderStart:0,sliderStep:1};init(){let t=document.getElementById("bonus-slider");t&&(this.applySlider(t),window.PluginManager.getPluginInstances("FormAjaxSubmit").forEach(t=>{t.$emitter.subscribe("onAfterAjaxSubmit",this.applySlider.bind(this))}))}applySlider(t){let{pointInput:e,pointDisplayOutput:s,btnRedeemPoints:i,sliderStart:n,sliderStep:r}=this.options;this.pointInput=document.querySelector(e),this.pointDisplayOutput=document.querySelector(s),this.btnRedeemPoints=document.querySelector(i);let o=parseInt(t.dataset.rangeMin),a=parseInt(t.dataset.rangeMax),c=parseFloat(document.getElementById("bonus--conversion-factor").value);noUiSlider.create(t,{start:n,connect:!1,step:r,range:{min:~~o,max:~~a}}),t.noUiSlider.on("update",(e,s)=>{let i=parseInt(e[s],10),n=(1/c*i).toFixed(2);i>0?this.btnRedeemPoints.classList.remove("invisible"):this.btnRedeemPoints.classList.add("invisible"),document.getElementById("bonus-slider-conversion-status").innerHTML=`${i} P / ${n} ${t.dataset.currency}`,this.pointDisplayOutput.innerHTML=i,this.pointInput.value=i})}}let s="loader",i={BEFORE:"before",INNER:"inner"};class n{constructor(t,e=i.BEFORE){this.parent=t instanceof Element?t:document.body.querySelector(t),this.position=e}create(){if(!this.exists()){if(this.position===i.INNER){this._previousHTML=this.parent.innerHTML,this.parent.innerHTML=n.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),n.getTemplate())}}remove(){if(this.position===i.INNER){this.parent.innerHTML=this._previousHTML;return}this.parent.querySelectorAll(`.${s}`).forEach(t=>t.remove())}exists(){return this.parent.querySelectorAll(`.${s}`).length>0}_getPosition(){return this.position===i.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return`<div class="${s}" role="status">
2                    <span class="visually-hidden">Loading...</span>
3                </div>`}static SELECTOR_CLASS(){return s}}class r{static isTouchDevice(){return"ontouchstart"in document.documentElement}static isIOSDevice(){return r.isIPhoneDevice()||r.isIPadDevice()}static isNativeWindowsBrowser(){return r.isIEBrowser()||r.isEdgeBrowser()}static isIPhoneDevice(){return!!navigator.userAgent.match(/iPhone/i)}static isIPadDevice(){return!!navigator.userAgent.match(/iPad/i)}static isIEBrowser(){return -1!==navigator.userAgent.toLowerCase().indexOf("msie")||!!navigator.userAgent.match(/Trident.*rv:\d+\./)}static isEdgeBrowser(){return!!navigator.userAgent.match(/Edge\/\d+/i)}static getList(){return{"is-touch":r.isTouchDevice(),"is-ios":r.isIOSDevice(),"is-native-windows":r.isNativeWindowsBrowser(),"is-iphone":r.isIPhoneDevice(),"is-ipad":r.isIPadDevice(),"is-ie":r.isIEBrowser(),"is-edge":r.isEdgeBrowser()}}}let o="modal-backdrop",a="modal-backdrop-open",c="no-scroll",l={ON_CLICK:"backdrop/onclick"};class h{constructor(){return h.instance||(h.instance=this),h.instance}create(t){this._removeExistingBackdrops(),document.body.insertAdjacentHTML("beforeend",this._getTemplate());let e=document.body.lastChild;document.documentElement.classList.add(c),setTimeout(function(){e.classList.add(a),"function"==typeof t&&t()},75),this._dispatchEvents()}remove(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;this._getBackdrops().forEach(t=>t.classList.remove(a)),setTimeout(this._removeExistingBackdrops.bind(this),t),document.documentElement.classList.remove(c)}_dispatchEvents(){let t=r.isTouchDevice()?"touchstart":"click";document.addEventListener(t,function(t){t.target.classList.contains(o)&&document.dispatchEvent(new CustomEvent(l.ON_CLICK))})}_getBackdrops(){return document.querySelectorAll(`.${o}`)}_removeExistingBackdrops(){!1!==this._exists()&&this._getBackdrops().forEach(t=>t.remove())}_exists(){return document.querySelectorAll(`.${o}`).length>0}_getTemplate(){return`<div class="${o}"></div>`}}let d=Object.freeze(new h);class u{static create(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;d.create(t)}static remove(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:350;d.remove(t)}static SELECTOR_CLASS(){return o}}let g=Object.freeze(new class extends n{constructor(){super(document.body)}create(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];!this.exists()&&t&&(u.create(),document.querySelector(`.${u.SELECTOR_CLASS()}`).insertAdjacentHTML("beforeend",n.getTemplate()))}remove(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];super.remove(),t&&u.remove()}});class p{static create(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];g.create(t)}static remove(){let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];g.remove(t)}}let m=window.PluginBaseClass;class b extends m{static #t=this.options={containerSelector:"#bonus-system-product-detail-points-ajax-container",containerIsLoadingClass:"bonus-system-is-loading",buyWidgetContainerSelector:"#bonus-system-product-detail-buy",buyWithPointsOnlyCheckboxSelector:"#buy-with-points-only-checkbox"};init(){let{containerSelector:t,buyWidgetContainerSelector:e,buyWithPointsOnlyCheckboxSelector:s}=this.options;this.container=document.querySelector(t);let i=this.container?.dataset?.bonusQuantitySelector;this.select=document.querySelector(i),this.buyWidgetContainer=document.querySelector(e),this.buyWithPointsOnlyCheckbox=document.querySelector(s),this._registerEvents()}_registerEvents(){this.select&&(this.select.onchange=this._fetch.bind(this)),this.buyWithPointsOnlyCheckbox&&(this.buyWithPointsOnlyCheckbox.onchange=this._fetchBuyWithPoints.bind(this))}_fetch(){if(this.container){let t="false",e=new URL(this.container.dataset.updatePointsUrl);this.buyWithPointsOnlyCheckbox&&(t=this.buyWithPointsOnlyCheckbox.checked),e.searchParams.append("quantity",this.select.value),e.searchParams.append("isOnlyBuyableWithPoints",t),this.container.classList.add(this.options.containerIsLoadingClass),fetch(e.toString()).then(t=>t.text()).then(this._setContent.bind(this))}}_fetchBuyWithPoints(){if(this.buyWidgetContainer){p.create();let t=new URL(this.buyWidgetContainer.dataset.buyWithPointsUrl);t.searchParams.append("state",this.buyWithPointsOnlyCheckbox.checked),fetch(`${t}`).then(t=>t.text()).then(()=>{window.location.reload()})}}_setContent(t){this.container.classList.remove(this.options.containerIsLoadingClass),this.container.innerHTML=JSON.parse(t).template}}class y{static iterate(t,e){if(t instanceof Map||Array.isArray(t))return t.forEach(e);if(t instanceof FormData){for(var s of t.entries())e(s[1],s[0]);return}if(t instanceof NodeList)return t.forEach(e);if(t instanceof HTMLCollection)return Array.from(t).forEach(e);if(t instanceof Object)return Object.keys(t).forEach(s=>{e(t[s],s)});throw Error(`The element type ${typeof t} is not iterable!`)}}let v=window.PluginBaseClass;class E extends v{static #t=this.options={targetDataAttribute:"data-form-register-guest-hint-toggle-target",triggerDataAttribute:"data-prems-register-guest-hint-trigger-selector",showClass:"d-block",hideClass:"d-none"};
3init(){this._getTriggers(),this._getTargets(),this._registerEvents()}_getTargets(){let t=this.el.getAttribute(this.options.targetDataAttribute);this._targets=this.el.querySelectorAll(t)}_getTriggers(){let t=this.el.getAttribute(this.options.triggerDataAttribute);this._triggers=this.el.querySelectorAll(t)}_registerEvents(){y.iterate(this._triggers,t=>{t.addEventListener("change",this._onChange.bind(this))})}_onChange(t){let e=t.target.checked;y.iterate(this._targets,t=>{e?this._hideElement(t):this._showElement(t)})}_showElement(t){this._replaceElementClass(t,this.options.hideClass,this.options.showClass)}_hideElement(t){this._replaceElementClass(t,this.options.showClass,this.options.hideClass),t.classList.contains(this.options.showClass)||t.classList.contains(this.options.hideClass)||t.classList.add(this.options.hideClass)}_replaceElementClass(t,e,s){t.classList.contains(e)&&t.classList.replace(e,s)}}let _=window.PluginManager;_.register("PremsBonusSystemRangeSlider",e,".bonus-system-redeem-points-container"),_.register("ProductQuantityBonusPoints",b,"#productDetailPageBuyProductForm"),_.register("RegisterGuestHint",E,"[data-prems-register-guest-hint]")})();

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.