{"version":3,"sources":["about-location.js"],"names":["window","document","oldWidth","getScreenWidth","documentElement","style","setProperty","innerWidth","addEventListener","dropdown","$","scrollTriggerBuild","topMenu","select","find","originText","text","length","func","wait","mustRun","timeout","startTime","topMenuHeight","innerHeight","outerHeight","menuItems","activeSection","scrollItems","map","item","this","attr","scrollHandler","fromTop","scrollTop","cur","offset","top","id","removeClass","end","current","filter","addClass","scrollHandlerThrottle","Date","args","arguments","curTime","clearTimeout","apply","setTimeout","on","foundation","classList","remove"],"mappings":"CAAA,SAAUA,EAAQC,GAIjB,IAAIC,EAAW,EACf,SAASC,IAERF,EAASG,gBAAgBC,MAAMC,YAAY,iBAAkBN,EAAOO,YAGrEP,EAAOQ,iBAAiB,OAAQL,GAChCH,EAAOQ,iBAAiB,SAAU,WAC7BN,IAAaF,EAAOO,aACvBL,EAAWF,EAAOO,WAClBJ,OAMF,IAAIM,EAAWC,EAAE,0BAYjB,SAASC,IAER,IAAIC,EAAUF,EAAE,qBAEZG,EAASD,EAAQE,KAAK,4BACtBC,EAAaF,EAAOG,OAExB,IAAKJ,EAAQK,OAAU,OAAO,EAE9B,IAyDiBC,EAAMC,EAAMC,EACzBC,EACHC,EA3DGC,EAAgBb,EAAE,WAAWc,cAAgBZ,EAAQa,cAAgB,GACxEC,EAAYd,EAAQE,KAAK,KAEzBa,EAAgB,GAChBC,EAAcF,EAAUG,IAAI,WAC3B,IAAIC,EAAOpB,EAAEA,EAAEqB,MAAMC,KAAK,SAC1B,GAAIF,EAAKb,OAAU,OAAOa,IAIxBG,EAAgB,WACnB,IAGIC,GAHQH,KAAOrB,EAAEqB,MAAQrB,EAAEV,IAGXmC,YAAcZ,EAAgB,IAG9Ca,EAAMR,EAAYC,IAAI,WACzB,GAAInB,EAAEqB,MAAMM,SAASC,IAAMJ,EAC3B,OAAOH,OAKJQ,GADJH,EAAMA,EAAIA,EAAInB,OAAS,KACPmB,EAAInB,OAASmB,EAAI,GAAGG,GAAK,GAEzC,GAAIZ,IAAkBY,EAAI,CACzBZ,EAAgBY,EAGhBb,EAAUc,YA5BG,aA4BsBC,MAEnC,IAAIC,EAAUhB,EAAUiB,OAAO,WAAWJ,EAAG,MAC7CG,EAAQE,SAAS,aAEM,KAAnBF,EAAQ1B,OACXH,EAAOG,KAAKD,GAEZF,EAAOG,KAAK0B,EAAQ1B,UAKnB6B,GAca3B,EAdoBe,EAcdd,EAd6B,GAcvBC,EAd2B,IAgBvDE,EAAY,IAAIwB,KAEV,WACN,IACCC,EAAOC,UACPC,EAAU,IAAIH,KAEfI,aAAa7B,GAEaD,GAAvB6B,EAAU3B,GACZJ,EAAKiC,MAPQpB,KAOMgB,GACnBzB,EAAY2B,GAGZ5B,EAAU+B,WAAWlC,EAAMC,KA5B7Bc,IACAvB,EAAEV,GAAQqD,GAAG,SAAUR,GAlExBpC,EAASK,KAAK,KAAKuC,GAAG,QAAS,WAC9B5C,EAAS6C,WAAW,SAGpBF,WAAW,WACVnD,EAASG,gBAAgBmD,UAAUC,OAAO,iBACxC,OA+DJ9C,EAAEV,GAAQqD,GAAG,OAAQ,WACpB1C,MA3FF,CAwHGX,OAAQC","file":"../about-location.min.js","sourcesContent":["(function(window, document) {\r\n\r\n\t/* ----------------------------------- [START] Set Root Screen Width */\r\n\t// 為了 320 - 480 手機板的 Point 不重疊,CSS 設置 transform scale 的方式進行\r\n\tlet oldWidth = 0;\r\n\tfunction getScreenWidth() {\r\n\t\t// 不能有單位,CSS calc不然會失效\r\n\t\tdocument.documentElement.style.setProperty('--screen-width', window.innerWidth);\r\n\t}\r\n\r\n\twindow.addEventListener('load', getScreenWidth);\r\n\twindow.addEventListener('resize', function() {\r\n\t\tif (oldWidth !== window.innerWidth) {\r\n\t\t\toldWidth = window.innerWidth;\r\n\t\t\tgetScreenWidth();\r\n\t\t}\r\n\t})\r\n\t/* ----------------------------------- [END] Set Root Screen Width */\r\n\t/* ----------------------------------- [START] Trigger Nav */\r\n\r\n\tvar dropdown = $('#location-select__list');\r\n\tdropdown.find('a').on('click', function() {\r\n\t\tdropdown.foundation('close');\r\n\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tdocument.documentElement.classList.remove('is-scroll-up');\r\n\t\t}, 400);\r\n\t});\r\n\r\n\t// 滑動監測 Scroll Active\r\n\t// Ref: https://stackoverflow.com/a/9980042/11240898\r\n\tfunction scrollTriggerBuild() {\r\n\t\t// Cache selectors\r\n\t\tvar topMenu = $('.js-scroll-active');\r\n\r\n\t\tvar select = topMenu.find('.custom-select__selected');\r\n\t\tvar originText = select.text();\r\n\r\n\t\tif (!topMenu.length) { return false }\r\n\r\n\t\tvar topMenuHeight = $('#header').innerHeight() + topMenu.outerHeight() + 15,\r\n\t\t\tmenuItems = topMenu.find('a'),\r\n\t\t\tclassActive = 'is-active',\r\n\t\t\tactiveSection = '', // Active Cache\r\n\t\t\tscrollItems = menuItems.map(function(){\r\n\t\t\t\tvar item = $($(this).attr('href'));\r\n\t\t\t\tif (item.length) { return item; }\r\n\t\t\t});\r\n\r\n\r\n\t\tvar scrollHandler = function() {\r\n\t\t\tvar $this = this ? $(this) : $(window);\r\n\r\n\t\t\t// Get container scroll position\r\n\t\t\tvar fromTop = $this.scrollTop() + topMenuHeight + 100;\r\n\r\n\t\t\t// Get id of current scroll item\r\n\t\t\tvar cur = scrollItems.map(function(){\r\n\t\t\t\tif ($(this).offset().top < fromTop)\r\n\t\t\t\treturn this;\r\n\t\t\t});\r\n\r\n\t\t\t// Get the id of the current element\r\n\t\t\tcur = cur[cur.length - 1];\r\n\t\t\tvar id = cur && cur.length ? cur[0].id : '';\r\n\r\n\t\t\tif (activeSection !== id) {\r\n\t\t\t\tactiveSection = id;\r\n\t\t\t\t\r\n\t\t\t\t// Set/remove active class\r\n\t\t\t\tmenuItems.removeClass(classActive).end();\r\n\r\n\t\t\t\tvar current = menuItems.filter(\"[href='#\"+id+\"']\");\r\n\t\t\t\tcurrent.addClass('is-active');\r\n\t\t\t\t\r\n\t\t\t\tif (current.text() === '') {\r\n\t\t\t\t\tselect.text(originText); // 更改文字\r\n\t\t\t\t} else {\r\n\t\t\t\t\tselect.text(current.text()); // 更改文字\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar scrollHandlerThrottle = throttle(scrollHandler, 50, 200);\r\n\r\n\t\tscrollHandler();\r\n\t\t$(window).on('scroll', scrollHandlerThrottle);\r\n\t}\r\n\r\n\t$(window).on('load', function() {\r\n\t\tscrollTriggerBuild();\r\n\t});\r\n\r\n\t// ----------------------------------------------\r\n\r\n\t// https://www.cnblogs.com/coco1s/p/5499469.html\r\n\t// 簡單的節流函數\r\n\tfunction throttle(func, wait, mustRun) {\r\n\t\tvar timeout,\r\n\t\t\tstartTime = new Date();\r\n\t\r\n\t\treturn function() {\r\n\t\t\tvar context = this,\r\n\t\t\t\targs = arguments,\r\n\t\t\t\tcurTime = new Date();\r\n\t\r\n\t\t\tclearTimeout(timeout);\r\n\t\t\t// 如果達到了規定的觸發時間間隔,觸發 handler\r\n\t\t\tif(curTime - startTime >= mustRun){\r\n\t\t\t\tfunc.apply(context,args);\r\n\t\t\t\tstartTime = curTime;\r\n\t\t\t// 沒達到觸發間隔,重新設定定時器\r\n\t\t\t}else{\r\n\t\t\t\ttimeout = setTimeout(func, wait);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t/* ----------------------------------- [END] Trigger Nav */\r\n})(window, document);\r\n"],"sourceRoot":"../../src/"}