PageSourceSearch

https://parent.ku.ac.ae/o/speedwell-theme/js/main.(jfvVj3RjmoM).js

js ku.ac.ae collected 2026-09-24 09:07:28 UTC 8,614 bytes, 2 lines download raw bytes

1document.addEventListener("DOMContentLoaded",(()=>{const e=window.Speedwell,t="current",s="next",r="will-be-next",n={[t]:{backwards:s,forwards:r},[s]:{backwards:r,forwards:t},[r]:{backwards:t,forwards:s}},i="backwards",a="forwards";const o=function(e,t,s,r){if(this.sliderWrapper=e,this.setupDOMSlide=t,this.renderSlideContent=s,this.interval=function(e){const t=4e3;return e>0&&e<=t?t:e>t?e:null}(r),!this.sliderWrapper)throw new Error("Container not found.");this.init()};o.prototype={applyAnimation(e,t){return new Promise((s=>{this.sliderWrapper.querySelector('[data-state="current"]').addEventListener("webkitTransitionEnd",this.handleSlideChange.bind(this,e,s,t),{once:!0}),this.slides.forEach((t=>{t.classList.add(`is-sliding-${e}`)}))}))},attachListeners(){this.controls={container:this.sliderWrapper.querySelector("div[class*=controls]"),nextBtn:this.sliderWrapper.querySelector("button[class*=control--next]"),prevBtn:this.sliderWrapper.querySelector("button[class*=control--prev]")},this.controls.prevBtn.addEventListener("click",this.throttleInteraction.bind(this),!0),this.controls.nextBtn.addEventListener("click",this.throttleInteraction.bind(this),!0),this.checkControls()},checkControls(){this.interval&&(this.controls.container.classList.add("self-sliding"),this.interval=setInterval((()=>{this.throttleInteraction(null)}),this.interval))},constructor:o,controls:{nextBtn:null,prevBtn:null},dataset:[],datasetSize:null,defaultSetup(){const e=this.dataset,t=this;Object.keys(n).forEach(((s,r)=>{t.setupDOMSlide(s,r,e),t.stateCycleMap[s]=e[r]}))},didPrepare:e=>Promise.resolve(e),getNextSlideContent(e){const s=e===a?this.stateCycleMap[r].index+1:this.stateCycleMap[t].index-1;return this.dataset[s]?this.dataset[s]:e===a?this.dataset[0]:this.dataset[this.datasetSize-1]},handleSlideChange(e,t,s){this.slides.forEach((t=>this.setNextState(e,t)));(s?this.didPrepare(s):this.prepareNow(e)).then((s=>{this.updateStateCycle(e,s),t&&t({isEnabled:!0})}))},init(){this.setupData().then(this.setupSliders.bind(this)).then(this.attachListeners.bind(this)).catch((e=>{const t=`Request code: ${e.statusCode.toString()}`||"API error";Liferay.Util.openToast({message:t,title:"",type:"danger"})}))},interval:null,oneSlideSetup(){this.removeControls(),this.setupDOMSlide(t,0),this.sliderWrapper.querySelector("[data-state=current]").classList.add("is-single-slide")},prepareLater:()=>Promise.resolve(null),prepareNextSlide(e){return new Promise((t=>{const s=this.getNextSlideContent(e);this.renderSlideContent(this.sliderWrapper,s),t(s)}))},prepareNow(e){return this.prepareNextSlide(e)},removeControls(){this.sliderWrapper.querySelector("div[class*=controls]").remove()},renderSlideContent(){},setNextState(e,t){t.classList.remove(`is-sliding-${e}`),t.dataset.state=n[t.dataset.state][e]},setupDOMSlide(){},setupData(){return new Promise(((e,t)=>{try{const t=this.sliderWrapper.querySelector(".slider-dataset").innerText;this.dataset=this.validateDataset(JSON.parse(t)),this.dataset.forEach(((e,t)=>{e.index=t})),this.datasetSize=this.dataset.length,e()}catch(e){t(new Error(e))}}))},setupSliders(){return new Promise(((e,t)=>{0===this.datasetSize?t(new Error("No dataset size.")):1===this.datasetSize?this.oneSlideSetup():2===this.datasetSize?this.twoSlidesSetup():this.defaultSetup(),this.slides=Array.from(this.sliderWrapper.querySelectorAll("[data-state]")),e()}))},slides:[],stateCycleMap:{},throttleInteraction(e){const t=e instanceof Event&&e.currentTarget.className.indexOf("prev")>-1?i:a,s=t===i?this.prepareNow.bind(this):this.prepareLater;this.toggleControls({isEnabled:!1}),s(t).then((e=>this.applyAnimation(t,e))).then((e=>this.toggleControls(e)))},toggleControls({isEnabled:e}){e?(this.controls.prevBtn.removeAttribute("disabled"),this.controls.nextBtn.removeAttribute("disabled")):(this.controls.prevBtn.setAttribute("disabled",e),this.controls.nextBtn.setAttribute("disabled",e))}
1,twoSlidesSetup(){this.dataset.push(this.dataset[0]),this.defaultSetup()},updateStateCycle(e,n){e===a?(this.stateCycleMap[t]=this.stateCycleMap[s],this.stateCycleMap[s]=this.stateCycleMap[r],this.stateCycleMap[r]=n):(this.stateCycleMap[r]=this.stateCycleMap[s],this.stateCycleMap[s]=this.stateCycleMap[t],this.stateCycleMap[t]=n)},validateDataset:e=>e},Liferay.component("SpeedwellSlider",{initialize(e,t,s){const r=window.document.querySelector("[data-will-load]");return r.removeAttribute("data-will-load"),new o(r,e,t,s)}}),e&&e.features&&(e.features.sliders=[],"sliderCallbacks"in e.features&&e.features.sliderCallbacks.length&&Liferay.componentReady("SpeedwellSlider").then((t=>(e.features.sliderCallbacks.forEach((s=>{e.features.sliders.push(s(t))})),Promise.resolve()))).catch((e=>(console.error(e),Promise.resolve()))).then((()=>{e.features.sliderCallbacks=[]})))}));const searchBarElement=document.querySelector(".speedwell-search");Liferay.on("search-bar-toggled",(({active:e})=>{document.querySelectorAll(".js-toggle-search").forEach((t=>{t.classList.toggle("is-active",e)})),document.getElementById("speedwell").classList.toggle("has-search",e),searchBarElement&&searchBarElement.classList.toggle("is-open",e)})),function(e){"use strict";const t="keydown",s=setTimeout((()=>{e.removeEventListener(t,r),clearTimeout(s)}),5e3);function r(s){9===s.which&&(e.document.body.classList.add("is-accessible"),e.removeEventListener(t,r))}e.addEventListener(t,r)}(window),function(e){"use strict";const t="speedwell-topbar",s=t+"--translucent",r="is-open",n={ACCOUNT:{name:"account"},MAIN_MENU:{name:"main-menu"},SEARCH:{name:"search"}},i=window.document.getElementById("speedwell");let a,o=!1;function l(e){const t=n[e].wrapper;n[e].buttons.forEach((e=>{e.addEventListener("click",(s=>{Liferay.componentReady("SpeedwellCategoryMenu").then((s=>{const n=s.getElement();e.focus(),t.classList.toggle(r,!c(t)),n.classList.remove(r),Liferay.Browser.isMobile()&&Liferay.componentReady("SpeedwellMobileHelpers").then((e=>{const t=e.getFiltersButton();t&&t.classList.toggle("is-behind",!c(t))}))}))}))}))}function c(e){return e.classList.contains(r)}function d(t){const r=e.scrollY<=t;o&&a.classList.toggle(s,r)}a=i.querySelector("."+t),Object.keys(n).forEach((e=>{delete n[e].buttons,delete n[e].wrapper})),Object.keys(n).forEach((e=>{n[e].buttons=Array.from(a.querySelectorAll(".js-toggle-"+n[e].name)),n[e].wrapper=a.querySelector(".speedwell-"+n[e].name)})),Object.keys(n).forEach(l),o=a.classList.contains(s),o&&Liferay.componentReady("SpeedwellScrollHandler").then((e=>{e.registerCallback(d)}))}(window),Liferay.component("SpeedwellCategoryMenu",function(){const e="is-open";let t,s;const r=document.getElementById("speedwell");function n(t){t.currentTarget.href.indexOf("/car-parts")>-1||t.currentTarget.href.indexOf("/catalog")>-1?(s.focus(),s.classList.add(e)):s.classList.remove(e)}function i(){s.classList.remove(e)}return t=Array.from(r.querySelectorAll(".main-link")),s=r.querySelector(".speedwell-category-nav"),Liferay.Browser.isMobile()||(t.forEach((e=>{e.addEventListener("mouseover",n)})),s.addEventListener("focusout",i)),{getElement:()=>s}}(),{destroyOnNavigate:!0}),Liferay.component("SpeedwellMobileHelpers",function(){let e,t,s,r;const n="is-open",i="is-fixed";function a(e){return e.classList.contains(i)}function o(){window.scrollY<r&&a(s)&&(s.classList.remove(i),window.removeEventListener("scroll",o),window.addEventListener("scroll",l))}function l(){s.getBoundingClientRect().top<=0&&!a(s)&&(s.classList.add(i),window.removeEventListener("scroll",l),window.addEventListener("scroll",o))}return e=window.document.querySelector(".mobile-filters-button"),t=window.document.querySelector(".mobile-filters-header"),s=window.document.querySelector(".add-to-cart-button--inline .commerce-button"),e&&t&&(t.querySelector(".title").innerText=Liferay.Language.get("filters"),e.addEventListener("click",(function s(){const r=!e.classList.contains(n);e.classList.toggle(n,r),t.querySelector(".close-button")[r?"addEventListener":"removeEventListener"]("click",s)}))),s&&(r=s.getBoundingClientRect().top,window.addEventListener("scroll",l)),{getFiltersButton:()=>e}}(),{destroyOnNavigate:!0}),Liferay.component("SpeedwellScrollHandler",function(){const e={};function t(e){return(e>0)-(e<0)||+e}let s=0,r=0,n=!1;const i=new Map;return i.set(-1,"up"),i.set(1,"down"),window.addEventListener("scroll",(function(){const i=window.scrollY-s;s=window.scrollY,r=t(i)===t(r)?r+i:i,n||(window.requestAnimationFrame((()=>{n=!1})),n=!0),Object.keys(e).forEach((t=>{e[t](100)}))}),!1),{registerCallback(t){e[t.name]=t},unregisterCallback(t){delete e[t.name]}}}(),{destroyOnNavigate:!0});
2//# sourceMappingURL=main.js.map

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.