{"version":3,"sources":["article.js"],"names":["window","document","addEventListener","scrollArea","tables","querySelectorAll","length","scrollDetected","forEach","call","item","currentScrollArea","detectEl","el","parentElement","scrollWidth","clientWidth","classList","add","remove","scrollAreaDetected","target","self","tagName","this","targetWrapper","scrollLeft","wrap","toWrap","wrapper","createElement","parentNode","insertBefore","appendChild","Array","from","filter","dataset","table","i","className","throttle"],"mappings":"CAAA,SAAWA,EAAQC,GAuGlBD,EAAOE,iBAAiB,OAjGxB,WACC,IAOIC,EAPAC,EAASH,EAASI,iBAAiB,uBAEvC,IAAKD,EAAOE,OACX,OAAO,EA2CR,SAASC,IACR,GAAGC,QAAQC,KAAKN,EAAY,SAAUO,GAMvC,IAA0BC,EAAmBC,EAsCrBC,EAtCqBD,GAAnBD,EALPD,GAAWI,eA2CND,EArCJF,GAsCTI,YAAcF,EAAGG,YArC1BJ,EAASK,UAAUC,IAAI,cAEvBN,EAASK,UAAUE,OAAO,cAE3BC,EAAmBT,KAIpB,SAASS,EAAmBC,GAC3B,IAAIC,EAAOD,EAAOE,QAAUF,EAASG,KACjCC,EAAgBH,EAAKR,cAGD,IAApBQ,EAAKI,WACRD,EAAcR,UAAUC,IAAI,mBAE5BO,EAAcR,UAAUE,OAAO,mBAI5BG,EAAKI,WAAaJ,EAAKN,cAAgBM,EAAKP,YAC/CU,EAAcR,UAAUC,IAAI,iBAE5BO,EAAcR,UAAUE,OAAO,iBAMjC,SAASQ,EAAKC,EAAQC,GAIrB,OAHAA,EAAUA,GAAW5B,EAAS6B,cAAc,OAE5CF,EAAOG,WAAWC,aAAaH,EAASD,GACjCC,EAAQI,YAAYL,GAnE3BxB,EATQ8B,MAAMC,KAAK/B,GAAQgC,OAAO,SAASvB,GACzC,QAAKA,EAAGwB,SAAkC,UAAvBxB,EAAGwB,QAAH,OACXxB,IASV,GAAGL,QAAQC,KAAKL,EAAQ,SAAUkC,EAAOC,GAExC,IAAIV,EAAU5B,EAAS6B,cAAc,OACrCD,EAAQW,UAAY,gCAEpB,IAAIrC,EAAaF,EAAS6B,cAAc,OACxC3B,EAAWqC,UAAY,6BAEvBrC,EAAWD,iBAAiB,SAAUkB,GACtCO,EAAKW,EAAOnC,GACZwB,EAAKxB,EAAY0B,KAIlB1B,EAAaF,EAASI,iBAAiB,6CAGvCE,IACAP,EAAOE,iBAAiB,SAAUuC,SAASlC,EAAgB,GAAI,QAhDlE,CAyGGP,OAAQC","file":"../article.min.js","sourcesContent":["(function (window, document) {\r\n\t/* ---------------------------------------- [START] Table Layout */\r\n\t/* 將上稿區內的表格改為:\r\n\t * 視第一橫列為標題,將標題生成於相對的子欄位\r\n\t * 在手機板會破壞表格的排版\r\n\t */\r\n\tfunction tableLayout() {\r\n\t\tvar tables = document.querySelectorAll('#article-cont table');\r\n\r\n\t\tif (!tables.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ======================================== [START] Wrap & Scroll\r\n\t\tvar scrollArea; // 紀錄 ScrollArea\r\n\t\tvar tableWrap = function () {\r\n\r\n\t\t\t// 重新取得表格物件們(排除指定項目)\r\n\t\t\tvar getTables = function () {\r\n\t\t\t\treturn Array.from(tables).filter(function(el) {\r\n\t\t\t\t\tif (!el.dataset || el.dataset['wrap'] !== 'false') {\r\n\t\t\t\t\t\treturn el\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn false\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttables = getTables();\r\n\r\n\t\t\t[].forEach.call(tables, function (table, i) {\r\n\r\n\t\t\t\tvar wrapper = document.createElement('div');\r\n\t\t\t\twrapper.className = 'table-wrapper is-scroll-start';\r\n\r\n\t\t\t\tvar scrollArea = document.createElement('div');\r\n\t\t\t\tscrollArea.className = 'table-wrapper__scroll-area';\r\n\r\n\t\t\t\tscrollArea.addEventListener('scroll', scrollAreaDetected);\r\n\t\t\t\twrap(table, scrollArea);\r\n\t\t\t\twrap(scrollArea, wrapper);\r\n\t\t\t});\r\n\r\n\t\t\t// 讀取 ScrollArea 物件\r\n\t\t\tscrollArea = document.querySelectorAll('#article-cont .table-wrapper__scroll-area');\r\n\r\n\t\t\t// 監測 Resize\r\n\t\t\tscrollDetected();\r\n\t\t\twindow.addEventListener('resize', throttle(scrollDetected, 50, 100));\r\n\t\t};\r\n\t\ttableWrap();\r\n\r\n\t\t// Resize All\r\n\t\tfunction scrollDetected() {\r\n\t\t\t[].forEach.call(scrollArea, function (item) {\r\n\t\t\t\tscrollAreaResize(item, item.parentElement);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Resize\r\n\t\tfunction scrollAreaResize(currentScrollArea, detectEl) {\r\n\t\t\tif (checkHasScroll(currentScrollArea)) {\r\n\t\t\t\tdetectEl.classList.add('has-scroll');\r\n\t\t\t} else {\r\n\t\t\t\tdetectEl.classList.remove('has-scroll');\r\n\t\t\t}\r\n\t\t\tscrollAreaDetected(currentScrollArea);\r\n\t\t}\r\n\r\n\t\t// Scroll 監測\r\n\t\tfunction scrollAreaDetected(target) {\r\n\t\t\tvar self = target.tagName ? target : this;\r\n\t\t\tvar targetWrapper = self.parentElement;\r\n\r\n\t\t\t// Scroll Start\r\n\t\t\tif (self.scrollLeft === 0) {\r\n\t\t\t\ttargetWrapper.classList.add('is-scroll-start');\r\n\t\t\t} else {\r\n\t\t\t\ttargetWrapper.classList.remove('is-scroll-start');\r\n\t\t\t}\r\n\r\n\t\t\t// Scroll End\r\n\t\t\tif (self.scrollLeft + self.clientWidth === self.scrollWidth) {\r\n\t\t\t\ttargetWrapper.classList.add('is-scroll-end');\r\n\t\t\t} else {\r\n\t\t\t\ttargetWrapper.classList.remove('is-scroll-end');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Tool\r\n\t\t// Ref: https://stackoverflow.com/a/18453767/11240898\r\n\t\tfunction wrap(toWrap, wrapper) {\r\n\t\t\twrapper = wrapper || document.createElement('div');\r\n\t\t\t// 因為 toWrap 可能不是最後一個物件,建議將「appendChild」改為「insertBefore」方式(該篇有他人留言建議)\r\n\t\t\ttoWrap.parentNode.insertBefore(wrapper, toWrap);\r\n\t\t\treturn wrapper.appendChild(toWrap);\r\n\t\t}\r\n\r\n\t\tfunction checkHasScroll(el) {\r\n\t\t\treturn el.scrollWidth > el.clientWidth;\r\n\t\t}\r\n\t\t// ======================================== [END] Wrap & Scroll\r\n\t}\r\n\twindow.addEventListener('load', tableLayout);\r\n\t/* ---------------------------------------- [END] Table Layout */\r\n})(window, document);\r\n"],"sourceRoot":"../../src/"}