{"version":3,"sources":["about-service.js"],"names":["isInViewport","el","rect","getBoundingClientRect","offsetHeight","bottom","right","top","window","innerHeight","document","documentElement","clientHeight","left","innerWidth","clientWidth","throttle","func","wait","mustRun","timeout","startTime","Date","args","arguments","curTime","undefined","requestTimeout","clearRequestTimeout","clearTimeout","apply","this","setTimeout","pageScrollCheckList","pageScrollAdd","selector","buildFunction","querySelector","push","build","fun","svcFlowCarousel","svcFlowBuild","swiperTarget","swiperEl","parentElement","swiperNextEl","swiperPrevEl","swiper","breakpoint","matchMedia","breakpointChecker","matches","destroy","Swiper","slidesPerView","centeredSlides","navigation","nextEl","prevEl","addListener","addEventListener","svcCertCarousel","svcCertBuild","slidesPerGroup","spaceBetween","lazy","preloadImages","breakpoints","640","1024","pageScrollThrottle","pageScrollHandler","length","i","Array","prototype","filter","call","item"],"mappings":"AACA,SAASA,aAAaC,GACrB,IAAIC,EAAOD,EAAGE,wBAId,OAFoC,IAApBF,EAAGG,cAIH,GAAfF,EAAKG,QACS,GAAdH,EAAKI,OACLJ,EAAKK,MAAQC,OAAOC,aAAeC,SAASC,gBAAgBC,eAC5DV,EAAKW,OAASL,OAAOM,YAAcJ,SAASC,gBAAgBI,aAO9D,SAASC,SAASC,EAAMC,EAAMC,GAC7B,IAAIC,EACAC,EAAY,IAAIC,KAEpB,OAAO,WACN,IACIC,EAAOC,UACPC,EAAU,IAAIH,UAEFI,IAAZN,SAC2BM,IAA1BlB,OAAOmB,eAA8BC,oBAAoBR,GACxDS,aAAaT,IAGQD,GAAvBM,EAAUJ,GACbJ,EAAKa,MAVQC,KAUOR,GACpBF,EAAYI,GAG6BL,OAAXM,IAA1BlB,OAAOmB,eAAwCA,eAAeV,EAAMC,GACzDc,WAAWf,EAAMC,KAMnC,WAGC,IAAIe,EAAsB,GACtBC,EAAgB,SAAUC,EAAUC,GACvC,IAAInC,EAAKS,SAAS2B,cAAcF,GAChC,GAAW,OAAPlC,EACH,OAAO,EAERgC,EAAoBK,KAAK,CACxBC,OAAO,EACPtC,GAAIA,EACJuC,IAAKJ,KAWDK,EAAkB,qBAExB,SAASC,IACR,IAAMC,EAAeF,EACfG,EAAWlC,SAAS2B,cAAcM,GAAcE,cAChDC,EAAeF,EAASP,cAAc,uBACtCU,EAAeH,EAASP,cAAc,uBAExCW,EAAS,KAaPC,EAAazC,OAAO0C,WAAW,uBAC/BC,EAAoB,WACrBF,EAAWG,QAEVJ,MAAAA,IACHA,EAAOK,SAAQ,GAAM,GACrBL,EAAS,MAhBXA,EAAS,IAAIM,OAAOX,EAAc,CACjCY,cAAe,OACfC,gBAAgB,EAChBC,WAAY,CACXC,OAAQZ,EACRa,OAAQZ,MAoBXE,EAAWW,YAAYT,GACvBA,IAED3C,OAAOqD,iBAAiB,OAAQ,WAC/B3B,EAAcO,EAAiBC,KAKhC,IAAMoB,EAAkB,qBAExB,SAASC,IACR,IAAMpB,EAAemB,EACflB,EAAWlC,SAAS2B,cAAcM,GAAcE,cAChDC,EAAeF,EAASP,cAAc,uBACtCU,EAAeH,EAASP,cAAc,uBAE7B,IAAIiB,OAAOX,EAAc,CACvCY,cAAe,EACfS,eAAgB,EAChBC,aAAc,GACdC,MAAM,EACNC,eAAe,EACfV,WAAY,CACXC,OAAQZ,EACRa,OAAQZ,GAETqB,YAAa,CACZC,IAAK,CACJd,cAAe,EACfS,eAAgB,EAChBC,aAAc,IAEfK,KAAM,CACLf,cAAe,EACfS,eAAgB,EAChBC,aAAc,OAKlBzD,OAAOqD,iBAAiB,OAAQ,WAC/B3B,EAAc4B,EAAiBC,KAKhC,IAAIQ,EAAqB,KACrBC,EAAoB,WACvB,GAAmC,IAA/BvC,EAAoBwC,OACvB,OAAO,EAGR,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,EAAoBwC,OAAQC,IAC3C1E,aAAaiC,EAAoByC,GAAGzE,MACvCgC,EAAoByC,GAAGlC,MACvBP,EAAoByC,GAAGnC,OAAQ,GAnGjCN,EAAsB0C,MAAMC,UAAUC,OAAOC,KAAK7C,EAAqB,SAAU8C,GAChF,OAAsB,IAAfA,EAAKxC,SA2Gd/B,OAAOqD,iBAAiB,OAAQ,WAC/BU,EAAqBvD,SAASwD,EAAmB,GAAI,KACrDhE,OAAOqD,iBAAiB,SAAUU,GAClCC,MA/HF","file":"../about-service.min.js","sourcesContent":["/* ---------------------------------------- [START] isInViewport */\r\nfunction isInViewport(el) {\r\n\tvar rect = el.getBoundingClientRect();\r\n\r\n\tvar isVisible = el.offsetHeight !== 0;\r\n\r\n\treturn (\r\n\t\tisVisible &&\r\n\t\trect.bottom >= 0 &&\r\n\t\trect.right >= 0 &&\r\n\t\trect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n\t\trect.left <= (window.innerWidth || document.documentElement.clientWidth)\r\n\t);\r\n}\r\n/* ---------------------------------------- [END] isInViewport */\r\n\r\n/* ---------------------------------------- [START] 簡單的節流函數 */\r\n// https://www.cnblogs.com/coco1s/p/5499469.html\r\nfunction throttle(func, wait, mustRun) {\r\n\tvar timeout;\r\n\tvar startTime = new Date();\r\n\r\n\treturn function () {\r\n\t\tvar context = this;\r\n\t\tvar args = arguments;\r\n\t\tvar curTime = new Date();\r\n\r\n\t\tif (timeout !== undefined) {\r\n\t\t\tif (window.requestTimeout !== undefined) clearRequestTimeout(timeout);\r\n\t\t\telse clearTimeout(timeout);\r\n\t\t}\r\n\t\t// 如果達到了規定的觸發時間間隔,觸發 handler\r\n\t\tif (curTime - startTime >= mustRun) {\r\n\t\t\tfunc.apply(context, args);\r\n\t\t\tstartTime = curTime;\r\n\t\t\t// 沒達到觸發間隔,重新設定定時器\r\n\t\t} else {\r\n\t\t\tif (window.requestTimeout !== undefined) timeout = requestTimeout(func, wait);\r\n\t\t\telse timeout = setTimeout(func, wait);\r\n\t\t}\r\n\t};\r\n}\r\n/* ---------------------------------------- [END] 簡單的節流函數 */\r\n\r\n(function() {\r\n\r\n\t/* ---------------------------------------- [START] 整頁 Scroll 監測 (Before) */\r\n\tvar pageScrollCheckList = []; // 紀錄物件\r\n\tvar pageScrollAdd = function (selector, buildFunction) {\r\n\t\tvar el = document.querySelector(selector);\r\n\t\tif (el === null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tpageScrollCheckList.push({\r\n\t\t\tbuild: false,\r\n\t\t\tel: el,\r\n\t\t\tfun: buildFunction,\r\n\t\t});\r\n\t};\r\n\tvar pageScrollClean = function () {\r\n\t\tpageScrollCheckList = Array.prototype.filter.call(pageScrollCheckList, function (item) {\r\n\t\t\treturn item.build === false;\r\n\t\t});\r\n\t};\r\n\t/* ---------------------------------------- [END] 整頁 Scroll 監測 (Before) */\r\n\r\n\t/* ---------------------------------------- [START] Flow */\r\n\tconst svcFlowCarousel = '#svc-flow-carousel';\r\n\r\n\tfunction svcFlowBuild() {\r\n\t\tconst swiperTarget = svcFlowCarousel;\r\n\t\tconst swiperEl = document.querySelector(swiperTarget).parentElement;\r\n\t\tconst swiperNextEl = swiperEl.querySelector('.swiper-button-next');\r\n\t\tconst swiperPrevEl = swiperEl.querySelector('.swiper-button-prev');\r\n\r\n\t\tlet swiper = null;\r\n\r\n\t\tconst swiperBuild = function() {\r\n\t\t\tswiper = new Swiper(swiperTarget, {\r\n\t\t\t\tslidesPerView: 'auto',\r\n\t\t\t\tcenteredSlides: true,\r\n\t\t\t\tnavigation: {\r\n\t\t\t\t\tnextEl: swiperNextEl,\r\n\t\t\t\t\tprevEl: swiperPrevEl,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst breakpoint = window.matchMedia('(min-width: 1024px)');\r\n\t\tconst breakpointChecker = function() {\r\n\t\t\tif (breakpoint.matches) {\r\n\t\t\t\t// Large\r\n\t\t\t\tif (swiper !== undefined && swiper !== null) {\r\n\t\t\t\t\tswiper.destroy(true, true);\r\n\t\t\t\t\tswiper = null;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Small + Medium\r\n\t\t\t\tswiperBuild();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Start\r\n\t\tbreakpoint.addListener(breakpointChecker);\r\n\t\tbreakpointChecker();\r\n\t}\r\n\twindow.addEventListener('load', function () {\r\n\t\tpageScrollAdd(svcFlowCarousel, svcFlowBuild);\r\n\t});\r\n\t/* ---------------------------------------- [END] Flow */\r\n\t\r\n\t/* ---------------------------------------- [START] Certifications */\r\n\tconst svcCertCarousel = '#svc-cert-carousel';\r\n\r\n\tfunction svcCertBuild() {\r\n\t\tconst swiperTarget = svcCertCarousel;\r\n\t\tconst swiperEl = document.querySelector(swiperTarget).parentElement;\r\n\t\tconst swiperNextEl = swiperEl.querySelector('.swiper-button-next');\r\n\t\tconst swiperPrevEl = swiperEl.querySelector('.swiper-button-prev');\r\n\r\n\t\tconst swiper = new Swiper(swiperTarget, {\r\n\t\t\tslidesPerView: 2,\r\n\t\t\tslidesPerGroup: 2,\r\n\t\t\tspaceBetween: 15,\r\n\t\t\tlazy: true,\r\n\t\t\tpreloadImages: false,\r\n\t\t\tnavigation: {\r\n\t\t\t\tnextEl: swiperNextEl,\r\n\t\t\t\tprevEl: swiperPrevEl,\r\n\t\t\t},\r\n\t\t\tbreakpoints: {\r\n\t\t\t\t640: {\r\n\t\t\t\t\tslidesPerView: 3,\r\n\t\t\t\t\tslidesPerGroup: 3,\r\n\t\t\t\t\tspaceBetween: 20,\r\n\t\t\t\t},\r\n\t\t\t\t1024: {\r\n\t\t\t\t\tslidesPerView: 5,\r\n\t\t\t\t\tslidesPerGroup: 5,\r\n\t\t\t\t\tspaceBetween: 20,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\twindow.addEventListener('load', function () {\r\n\t\tpageScrollAdd(svcCertCarousel, svcCertBuild);\r\n\t});\r\n\t/* ---------------------------------------- [END] Certifications */\r\n\r\n\t/* ---------------------------------------- [START] 整頁 Scroll 監測 (After) */\r\n\tvar pageScrollThrottle = null;\r\n\tvar pageScrollHandler = function () {\r\n\t\tif (pageScrollCheckList.length === 0) {\r\n\t\t\treturn false;\r\n\t\t} // 因為改成 Page Global 執行,所以不會停止\r\n\r\n\t\tfor (var i = 0; i < pageScrollCheckList.length; i++) {\r\n\t\t\tif (isInViewport(pageScrollCheckList[i].el)) {\r\n\t\t\t\tpageScrollCheckList[i].fun();\r\n\t\t\t\tpageScrollCheckList[i].build = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tpageScrollClean();\r\n\t\t// if (pageScrollCheckList.length === 0) {\r\n\t\t// \toff(window, 'scroll', pageScrollThrottle);\r\n\t\t// }\r\n\t};\r\n\r\n\twindow.addEventListener('load', function () {\r\n\t\tpageScrollThrottle = throttle(pageScrollHandler, 50, 1000); // 節流作用\r\n\t\twindow.addEventListener('scroll', pageScrollThrottle);\r\n\t\tpageScrollHandler();\r\n\t});\r\n\t/* ---------------------------------------- [END] 整頁 Scroll 監測 (After) */\r\n})();\r\n"],"sourceRoot":"../../src/"}