{"version":3,"file":"js/ui-pagination.b1c4d1b2afa5a5fe8d93.bundle.js","mappings":"sJAGAA,EAAAA,GAAAA,eAAoBC,EAAAA,GAEpB,IAEUC,EAuFAC,EAzFJC,EAAuB,gBAChBC,GACHH,EAAU,WACZ,WAAYI,EAAWC,IAAS,eAC5BC,KAAKC,WAAaH,EAClBE,KAAKE,OAASF,KAAKC,WAAWE,iBAAiB,IAAD,OAAKP,EAAoB,WACvEI,KAAKI,aAAeJ,KAAKC,WAAWI,cAAc,IAAD,OAAKT,EAAoB,sBAE1EI,KAAKD,QAAUO,OAAOC,OAAOZ,EAA0BI,GACvDC,KAAKQ,MAAQR,KAAKD,QAAQS,MAC1BR,KAAKS,UAAYT,KAAKD,QAAQU,UAC9BT,KAAKU,WAAaV,KAAKE,OAAOS,OAC9BX,KAAKY,cAAgB,KACrBZ,KAAKa,eAAiB,KAEtBb,KAAKc,MACT,CAsEC,OAtEA,4BAED,WACId,KAAKe,WACLf,KAAKgB,cACT,GAAC,sBAED,WAEIhB,KAAKiB,gBACLjB,KAAKkB,YACLlB,KAAKmB,aACLnB,KAAKoB,aACT,GAAC,uBAED,WAAY,WACRpB,KAAKE,OAAOmB,SAAQ,SAACC,EAAOC,GACxBD,EAAME,MAAMC,QAAWF,GAAK,EAAKf,MAAS,OAAS,OACvD,GACJ,GAAC,wBAED,WACQR,KAAKQ,QAAUR,KAAKU,YAAYV,KAAKI,aAAasB,UAAUC,IAAI,SACxE,GAAC,sBAED,WACQ3B,KAAKQ,MAAQR,KAAKU,aAAYV,KAAKQ,OAASR,KAAKS,WACjDT,KAAKQ,MAAQR,KAAKU,aAAYV,KAAKQ,MAAQR,KAAKU,WACxD,GAEA,2BACA,WACIV,KAAKY,cAAgBnB,EAAAA,EAAAA,SAAcO,KAAKE,QACxCF,KAAKa,eAAiBpB,EAAAA,EAAAA,SAAcO,KAAKC,WAC7C,GAEA,yBACA,WAAc,WACCT,EAAAA,GAAAA,SAAc,CACrBoC,QAAS,kBAAM,EAAKxB,aAAasB,UAAUC,IAAI,WAAW,EAC1DE,WAAY,YACRC,EAAAA,EAAAA,MACA,EAAK1B,aAAasB,UAAUK,OAAO,WACvC,IAEDJ,IAAIlC,EAAAA,EAAAA,KAAUO,KAAKY,cAAe,CACjCoB,SAAU,GACVC,OAAO,EACPC,KAAM,eACNC,UAAU,EACVC,QAAS,SAAAC,GAAQ,OAAI7C,EAAAA,GAAAA,OAAY6C,EAAU,CAAEC,QAAS,EAAGC,EAAG,IAAM,CAAED,QAAS,EAAGC,EAAG,EAAGP,SAAU,GAAKQ,QAAS,IAAM,IACpH,GACCb,IAAIlC,EAAAA,EAAAA,KAAUO,KAAKa,eAAgB,CAChCmB,SAAU,GACVC,OAAO,EACPC,KAAM,eACNC,UAAU,IACV,EAEZ,GAEA,6BACA,SAAgBM,GACZA,EAAEC,iBACF1C,KAAK2C,WACL3C,KAAKe,UACT,GAAC,0BAED,WAAe,WACXf,KAAKI,aAAawC,iBAAiB,SAAS,SAACH,GAAC,OAAK,EAAKI,gBAAgBJ,EAAE,GAC9E,KAAC,EApFW,GAuFV9C,EAA2B,CAC7Ba,MAAO,EACPC,UAAW,GAGR,CACHf,WAAAA,IClGUoD,SAAS3C,iBAAiB,kBAClCkB,SAAQ,SAAA0B,GAAI,OAAI,IAAIlD,EAAaH,WAAWqD,EAAK,G","sources":["webpack:///./scripts/ui-pagination/UIpagination.js","webpack:///./scripts/ui-pagination/index.js"],"sourcesContent":["import { gsap } from \"gsap\"\r\nimport { Flip } from \"gsap/Flip\"\r\nimport { refreshAllControllers } from \"@/scripts/common/api/scrolltrigger.services\"\r\ngsap.registerPlugin(Flip)\r\n\r\nconst CLASS_PAGINATION_PRE = 'ui-pagination'\r\nexport const UIpagination = (() => {\r\n class Pagination {\r\n constructor(container, options) {\r\n this.$container = container\r\n this.$items = this.$container.querySelectorAll(`.${CLASS_PAGINATION_PRE}__item`)\r\n this.$loadmoreBtn = this.$container.querySelector(`.${CLASS_PAGINATION_PRE}__loadmore-action`)\r\n\r\n this.options = Object.assign(defaultPaginationOptions, options)\r\n this.limit = this.options.limit\r\n this.increment = this.options.increment\r\n this.totalItems = this.$items.length\r\n this.flipItemState = null\r\n this.flipPanelState = null\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.updateUI()\r\n this.addListeners()\r\n }\r\n\r\n updateUI() {\r\n\r\n this.getFlipStates()\r\n this.showItems()\r\n this.showAction()\r\n this.flipAnimate()\r\n }\r\n\r\n showItems() {\r\n this.$items.forEach(($item, i) => {\r\n $item.style.display = (i >= this.limit) ? 'none' : 'block'\r\n })\r\n }\r\n\r\n showAction() {\r\n if (this.limit === this.totalItems) this.$loadmoreBtn.classList.add('d-none')\r\n }\r\n\r\n incLimit() {\r\n if (this.limit < this.totalItems) this.limit += this.increment\r\n if (this.limit > this.totalItems) this.limit = this.totalItems\r\n }\r\n\r\n // Get initial state\r\n getFlipStates() {\r\n this.flipItemState = Flip.getState(this.$items)\r\n this.flipPanelState = Flip.getState(this.$container)\r\n }\r\n\r\n // Animation\r\n flipAnimate() {\r\n const tl = gsap.timeline({\r\n onStart: () => this.$loadmoreBtn.classList.add('disabled'),\r\n onComplete: () => {\r\n refreshAllControllers()\r\n this.$loadmoreBtn.classList.remove('disabled')\r\n }\r\n })\r\n tl.add(Flip.from(this.flipItemState, {\r\n duration: 0.4,\r\n scale: false,\r\n ease: \"power2.inOut\",\r\n absolute: false,\r\n onEnter: elements => gsap.fromTo(elements, { opacity: 0, y: 20 }, { opacity: 1, y: 0, duration: 0.3, stagger: 0.1 }),\r\n }), 0)\r\n .add(Flip.from(this.flipPanelState, {\r\n duration: 0.4,\r\n scale: false,\r\n ease: \"power2.inOut\",\r\n absolute: false\r\n }), 0)\r\n\r\n }\r\n\r\n // Callbacks\r\n onLoadMoreClick(e) {\r\n e.preventDefault()\r\n this.incLimit()\r\n this.updateUI()\r\n }\r\n\r\n addListeners() {\r\n this.$loadmoreBtn.addEventListener('click', (e) => this.onLoadMoreClick(e))\r\n }\r\n }\r\n\r\n const defaultPaginationOptions = {\r\n limit: 5,\r\n increment: 5\r\n }\r\n\r\n return {\r\n Pagination\r\n }\r\n})()","import {UIpagination} from './UIpagination'\r\n(function() {\r\n const $uips = document.querySelectorAll('.ui-pagination')\r\n $uips.forEach($uip => new UIpagination.Pagination($uip))\r\n})()"],"names":["gsap","Flip","Pagination","defaultPaginationOptions","CLASS_PAGINATION_PRE","UIpagination","container","options","this","$container","$items","querySelectorAll","$loadmoreBtn","querySelector","Object","assign","limit","increment","totalItems","length","flipItemState","flipPanelState","init","updateUI","addListeners","getFlipStates","showItems","showAction","flipAnimate","forEach","$item","i","style","display","classList","add","onStart","onComplete","refreshAllControllers","remove","duration","scale","ease","absolute","onEnter","elements","opacity","y","stagger","e","preventDefault","incLimit","addEventListener","onLoadMoreClick","document","$uip"],"sourceRoot":""}