@mlikiowa/nanaeo 1.0.1746682130345 → 1.0.1757751861391

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/2022/08/04/NewBlog/index.html +1 -1
  2. package/2022/08/13/GaussWave/index.html +1 -1
  3. package/2023/12/30/2023end/index.html +1 -1
  4. package/about/index.html +1 -1
  5. package/archives/2022/08/index.html +1 -1
  6. package/archives/2022/index.html +1 -1
  7. package/archives/2023/12/index.html +1 -1
  8. package/archives/2023/index.html +1 -1
  9. package/archives/index.html +1 -1
  10. package/categories/DevLog/index.html +1 -1
  11. package/categories/SiteLog/index.html +1 -1
  12. package/categories/index.html +1 -1
  13. package/content.json +1 -1
  14. package/friends/index.html +1 -1
  15. package/index.html +1 -1
  16. package/js/app.js +1 -1
  17. package/js/plugins/aplayer.js +1 -1
  18. package/js/plugins/parallax.js +1 -1
  19. package/js/plugins/rightMenu.js +1 -1
  20. package/js/plugins/rightMenus.js +1 -1
  21. package/js/plugins/tags/contributors.js +1 -1
  22. package/js/plugins/tags/friends.js +1 -1
  23. package/js/plugins/tags/sites.js +1 -1
  24. package/js/search/hexo.js +1 -1
  25. package/maps/js/app.js.map +1 -1
  26. package/maps/js/plugins/aplayer.js.map +1 -1
  27. package/maps/js/plugins/parallax.js.map +1 -1
  28. package/maps/js/plugins/rightMenu.js.map +1 -1
  29. package/maps/js/plugins/rightMenus.js.map +1 -1
  30. package/maps/js/plugins/tags/contributors.js.map +1 -1
  31. package/maps/js/plugins/tags/friends.js.map +1 -1
  32. package/maps/js/plugins/tags/sites.js.map +1 -1
  33. package/maps/js/search/hexo.js.map +1 -1
  34. package/maps/volantis-sw.js.map +1 -1
  35. package/package.json +1 -1
  36. package/tags/DevLog/index.html +1 -1
  37. package/tags/Gauss/index.html +1 -1
  38. package/tags/Hexo/index.html +1 -1
  39. package/tags/HexoThemes/index.html +1 -1
  40. package/tags/SiteLog/index.html +1 -1
  41. package/tags/index.html +1 -1
  42. package/volantis-sw.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["js/app.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_regeneratorRuntime","r","t","e","Object","n","hasOwnProperty","i","a","asyncIterator","u","toStringTag","c","defineProperty","value","enumerable","configurable","writable","h","Generator","create","Error","done","method","arg","delegate","d","f","sent","_sent","dispatchException","abrupt","s","type","Context","call","wrap","GeneratorFunction","GeneratorFunctionPrototype","l","this","p","getPrototypeOf","y","x","v","g","forEach","_invoke","AsyncIterator","resolve","__await","then","TypeError","next","w","tryEntries","push","m","reset","isNaN","length","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","unshift","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","_createForOfIteratorHelper","_n","F","_arrayLikeToArray","toString","from","test","_toPropertyKey","_toPrimitive","toPrimitive","String","Number","document","addEventListener","volantis","requestAnimationFrame","VolantisApp","init","subscribe","VolantisFancyBox","highlightKeyWords","startFromURL","locationHash","pjax","pjaxReload","sessionStorage","setItem","title","send","dom","switcher","removeClass","header","wrapper","EventListener","remove","window","location","hash","locationID","decodeURI","split","replace","target","getElementById","setTimeout","startsWith","scroll","to","addTop","offsetHeight","behavior","observer","freeze","fn","scrollCorrection","clientHeight","onresize","documentElement","clientWidth","isMobile","isMobileOld","setGlobalHeaderMenuEvent","setHeader","setHeaderSearch","scrollEventCallBack","event","_volantis$dom$$","$","on","scrolltoElement","bodyAnchor","sidebar","querySelector","querySelectorAll","classList","add","GLOBAL_CONFIG","for_page","includes","for_post","lastupd","webinfo","enable","friendlyShow","innerHTML","utilTimeAgo","lastupdate","BirthDay","Date","runtime","data","timeold","getTime","daysold","Math","floor","concat","unit","body","oncopy","messageCopyright","restData","setIsMobile","elem","correction","undefined","top","offsetTop","showHeaderPoint","scrollTop","getScrollTop","topBtn","addClass","del","pdata","ispage","tocTarget","toc","mPhoneList","hide","setScrollAnchor","click","preventDefault","stopPropagation","stopImmediatePropagation","find","html","comment","commentTarget","style","display","toggleClass","setHeaderMenuSelection","headerMenu","element","li","div","idname","pathname","page","match","index","id","_e","menuType","currentTarget","children","some","val","contains","parentElement","childNodes","e2","e1","array","show","menuPhone","getComputedStyle","origin","baseURI","setPageHeaderMenuEvent","search","setTabs","tabs","$tab","className","footnotes","ref","targetID","utilCopyCode","Selector","node","insertAdjacentHTML","_BtnCopy","previousSibling","onclick","_icon","_span","focus","range","Range","selectNodeContents","getSelection","removeAllRanges","addRange","str","utilWriteClipText","innerText","message","icon","navigator","clipboard","writeText","input","createElement","setAttribute","appendChild","select","result","execCommand","removeChild","reject","dateTimeStamp","minute","hour","day","week","month","diffValue","minC","hourC","dayC","weekC","monthC","parseInt","datetime","setTime","Nyear","getFullYear","Nmonth","getMonth","Ndate","getDate","getHours","getMinutes","getSeconds","option","tozashMessage","time","position","transitionIn","transitionOut","messageColor","titleColor","backgroundColor","zindex","displayMode","iziToast","layout","closeOnEscape","plugins","css","js","question","success","cancel","tozashQuestion","close","overlay","quection","instance","toast","closedBy","hideMessage","messageCopyrightShow","copyright","removeAttribute","fancybox","checkMain","groupBind","Fancybox","loadFancyBox","selectors","$item","hasAttribute","$link","src","alt","append","cloneNode","replaceWith","bind","groupAll","Hash","hideScrollbar","Thumbs","autoStart","caption","carousel","slide","$trigger","groupName","group","Set","ele","getAttribute","_step","_iterator","unbind","err","elementHandling","error","console","params","URL","href","searchParams","get","keywords","post","start","scrollToFirstHighlightKeywordMark","cleanContentVisibility","scrollToNextHighlightKeywordMark","markNextId","markNum","log","walk","createTreeWalker","NodeFilter","SHOW_TEXT","allNodes","nextNode","currentNode","parentNode","matches","indexOfNode","getIndexByWord","nodeValue","mergeIntoSlice","highlightText","highlightStyle","words","text","caseSensitive","included","word","wordLen","startPosition","toLowerCase","indexOf","sort","left","right","end","item","_item","hits","count","wordEnd","shift","size","_step2","_iterator2","_step2$value","createTextNode","substring","substr","insertBefore","background","scrollToPrevHighlightKeywordMark","cleanHighlightStyle","DOMController","visible","param","removeList","list","attrName","attrValue","setAttributeList","setStyle","styleName","styleValue","setStyleList","fadeIn","visibility","opacity","transition","fadeOut","fadeToggle","fadeToggleList","hasClass","RegExp","toggleClassList","VolantisRequest","timeoutFetch","url","ms","requestInit","_requestInit$signal","controller","AbortController","signal","abort","promise","fetch","timer","clearTimeout","Fetch","_Fetch","_callee","timeout","resp","json","_args","_context","ok","status","_x","_x2","POST","_POST","_callee2","formData","_context2","FormData","key","_x3","_x4","Get","_Get","_callee3","_context3","URLSearchParams","_x5","_x6"],"mappings":"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","file":"../../js/app.js","sourcesContent":["document.addEventListener(\"DOMContentLoaded\", function () {\n volantis.requestAnimationFrame(() => {\n VolantisApp.init();\n VolantisApp.subscribe();\n VolantisFancyBox.init();\n highlightKeyWords.startFromURL();\n locationHash();\n\n volantis.pjax.push(() => {\n VolantisApp.pjaxReload();\n VolantisFancyBox.init();\n sessionStorage.setItem(\"domTitle\", document.title);\n highlightKeyWords.startFromURL();\n }, 'app.js');\n volantis.pjax.send(() => {\n volantis.dom.switcher.removeClass('active'); // 关闭移动端激活的搜索框\n volantis.dom.header.removeClass('z_search-open'); // 关闭移动端激活的搜索框\n volantis.dom.wrapper.removeClass('sub'); // 跳转页面时关闭二级导航\n volantis.EventListener.remove() // 移除事件监听器 see: layout/_partial/scripts/global.ejs\n }, 'app.js');\n });\n});\n\n/* 锚点定位 */\nconst locationHash = () => {\n if (window.location.hash) {\n let locationID = decodeURI(window.location.hash.split('#')[1]).replace(/\\ /g, '-');\n let target = document.getElementById(locationID);\n if (target) {\n setTimeout(() => {\n if (window.location.hash.startsWith('#fn')) { // hexo-reference https://github.com/volantis-x/hexo-theme-volantis/issues/647\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant', observer: true })\n } else {\n // 锚点中上半部有大片空白 高度大概是 volantis.dom.header.offsetHeight\n volantis.scroll.to(target, { addTop: 5, behavior: 'instant', observer: true })\n }\n }, 1000)\n }\n }\n}\nObject.freeze(locationHash);\n\n/* Main */\nconst VolantisApp = (() => {\n const fn = {},\n COPYHTML = '<button class=\"btn-copy\" data-clipboard-snippet=\"\"><i class=\"fa-solid fa-copy\"></i><span>COPY</span></button>';\n let scrollCorrection = 80;\n\n fn.init = () => {\n if (volantis.dom.header) {\n scrollCorrection = volantis.dom.header.clientHeight + 16;\n }\n\n window.onresize = () => {\n if (document.documentElement.clientWidth < 500) {\n volantis.isMobile = 1;\n } else {\n volantis.isMobile = 0;\n }\n if (volantis.isMobile != volantis.isMobileOld) {\n fn.setGlobalHeaderMenuEvent();\n fn.setHeader();\n fn.setHeaderSearch();\n }\n }\n volantis.scroll.push(fn.scrollEventCallBack, \"scrollEventCallBack\")\n }\n\n fn.event = () => {\n volantis.dom.$(document.getElementById(\"scroll-down\"))?.on('click', function () {\n fn.scrolltoElement(volantis.dom.bodyAnchor);\n });\n\n // 如果 sidebar 为空,隐藏 sidebar。\n const sidebar = document.querySelector(\"#l_side\")\n if (sidebar) {\n const sectionList = sidebar.querySelectorAll(\"section\")\n if (!sectionList.length) {\n document.querySelector(\"#l_main\").classList.add(\"no_sidebar\")\n }\n }\n\n // 站点信息 最后活动日期\n if (volantis.GLOBAL_CONFIG.sidebar.for_page.includes('webinfo') || volantis.GLOBAL_CONFIG.sidebar.for_post.includes('webinfo')) {\n const lastupd = volantis.GLOBAL_CONFIG.sidebar.webinfo.lastupd;\n if (!!document.getElementById('last-update-show') && lastupd.enable && lastupd.friendlyShow) {\n document.getElementById('last-update-show').innerHTML = fn.utilTimeAgo(volantis.GLOBAL_CONFIG.lastupdate);\n }\n }\n\n // 站点信息 运行时间\n if (!!document.getElementById('webinfo-runtime-count')) {\n let BirthDay = new Date(volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.data);\n let timeold = (new Date().getTime() - BirthDay.getTime());\n let daysold = Math.floor(timeold / (24 * 60 * 60 * 1000));\n document.getElementById('webinfo-runtime-count').innerHTML = `${daysold} ${volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.unit}`;\n }\n\n // 消息提示 复制时弹出\n document.body.oncopy = function () {\n fn.messageCopyright()\n };\n }\n\n fn.restData = () => {\n scrollCorrection = volantis.dom.header ? volantis.dom.header.clientHeight + 16 : 80;\n }\n\n fn.setIsMobile = () => {\n if (document.documentElement.clientWidth < 500) {\n volantis.isMobile = 1;\n volantis.isMobileOld = 1;\n } else {\n volantis.isMobile = 0;\n volantis.isMobileOld = 0;\n }\n }\n\n // 校正页面定位(被导航栏挡住的区域)\n fn.scrolltoElement = (elem, correction = scrollCorrection) => {\n volantis.scroll.to(elem, {\n top: elem.offsetTop - correction\n })\n }\n\n // 滚动事件回调们\n fn.scrollEventCallBack = () => {\n // 【移动端 PC】//////////////////////////////////////////////////////////////////////\n\n // 显示/隐藏 Header导航 topBtn 【移动端 PC】\n const showHeaderPoint = volantis.dom.bodyAnchor.offsetTop - scrollCorrection;\n const scrollTop = volantis.scroll.getScrollTop(); // 滚动条距离顶部的距离\n\n // topBtn\n if (volantis.dom.topBtn) {\n if (scrollTop > volantis.dom.bodyAnchor.offsetTop) {\n volantis.dom.topBtn.addClass('show');\n // 向上滚动高亮 topBtn\n if (volantis.scroll.del > 0) {\n volantis.dom.topBtn.removeClass('hl');\n } else {\n volantis.dom.topBtn.addClass('hl');\n }\n } else {\n volantis.dom.topBtn.removeClass('show').removeClass('hl');\n }\n }\n\n // Header导航\n if (volantis.dom.header) {\n if (scrollTop - showHeaderPoint > -1) {\n volantis.dom.header.addClass('show');\n } else {\n volantis.dom.header.removeClass('show');\n }\n }\n\n // 决定一二级导航栏的切换 【向上滚动切换为一级导航栏;向下滚动切换为二级导航栏】 【移动端 PC】\n if (pdata.ispage && volantis.dom.wrapper) {\n if (volantis.scroll.del > 0 && scrollTop > 100) { // 向下滚动\n volantis.dom.wrapper.addClass('sub'); // <---- 二级导航显示\n } else if (volantis.scroll.del < 0) { // 向上滚动\n volantis.dom.wrapper.removeClass('sub'); // <---- 取消二级导航显示 一级导航显示\n }\n }\n\n // 【移动端】//////////////////////////////////////////////////////////////////////\n if (volantis.isMobile) {\n // 【移动端】 页面滚动 隐藏 移动端toc目录按钮\n if (pdata.ispage && volantis.dom.tocTarget && volantis.dom.toc) {\n volantis.dom.tocTarget.removeClass('active');\n volantis.dom.toc.removeClass('active');\n }\n // 【移动端】 滚动时隐藏子菜单\n if (volantis.dom.mPhoneList) {\n volantis.dom.mPhoneList.forEach(function (e) {\n volantis.dom.$(e).hide();\n })\n }\n }\n }\n\n // 设置滚动锚点\n fn.setScrollAnchor = () => {\n // click topBtn 滚动至bodyAnchor 【移动端 PC】\n if (volantis.dom.topBtn && volantis.dom.bodyAnchor) {\n volantis.dom.topBtn.click(e => {\n e.preventDefault();\n e.stopPropagation();\n fn.scrolltoElement(volantis.dom.bodyAnchor);\n e.stopImmediatePropagation();\n });\n }\n\n }\n\n // 设置导航栏\n fn.setHeader = () => {\n // !!! 此处的Dom对象需要重载 !!!\n if (!pdata.ispage) return;\n\n // 填充二级导航文章标题 【移动端 PC】\n volantis.dom.wrapper.find('.nav-sub .title').html(document.title.split(\" - \")[0]);\n\n // ====== bind events to every btn =========\n // 评论按钮 【移动端 PC】\n volantis.dom.comment = volantis.dom.$(document.getElementById(\"s-comment\")); // 评论按钮 桌面端 移动端\n volantis.dom.commentTarget = volantis.dom.$(document.querySelector('#l_main article#comments')); // 评论区域\n if (volantis.dom.commentTarget) {\n volantis.dom.comment.click(e => { // 评论按钮点击后 跳转到评论区域\n e.preventDefault();\n e.stopPropagation();\n fn.scrolltoElement(volantis.dom.commentTarget);\n e.stopImmediatePropagation();\n });\n } else volantis.dom.comment.style.display = 'none'; // 关闭了评论,则隐藏评论按钮\n\n // 移动端toc目录按钮 【移动端】\n if (volantis.isMobile) {\n volantis.dom.toc = volantis.dom.$(document.getElementById(\"s-toc\")); // 目录按钮 仅移动端\n volantis.dom.tocTarget = volantis.dom.$(document.querySelector('#l_side .toc-wrapper')); // 侧边栏的目录列表\n if (volantis.dom.tocTarget) {\n // 点击移动端目录按钮 激活目录按钮 显示侧边栏的目录列表\n volantis.dom.toc.click((e) => {\n e.stopPropagation();\n volantis.dom.tocTarget.toggleClass('active');\n volantis.dom.toc.toggleClass('active');\n });\n // 点击空白 隐藏\n volantis.dom.$(document).click(function (e) {\n e.stopPropagation();\n if (volantis.dom.tocTarget) {\n volantis.dom.tocTarget.removeClass('active');\n }\n volantis.dom.toc.removeClass('active');\n });\n } else volantis.dom.toc.style.display = 'none'; // 隐藏toc目录按钮\n }\n }\n\n // 设置导航栏菜单选中状态 【移动端 PC】\n fn.setHeaderMenuSelection = () => {\n // !!! 此处的Dom对象需要重载 !!!\n volantis.dom.headerMenu = volantis.dom.$(document.querySelectorAll('#l_header .navigation,#l_cover .navigation,#l_side .navigation')); // 导航列表\n\n // 先把已经激活的取消激活\n volantis.dom.headerMenu.forEach(element => {\n let li = volantis.dom.$(element).find('li a.active')\n if (li)\n li.removeClass('active')\n let div = volantis.dom.$(element).find('div a.active')\n if (div)\n div.removeClass('active')\n });\n\n // replace '%' '/' '.'\n var idname = location.pathname.replace(/\\/|%|\\./g, '');\n if (idname.length == 0) {\n idname = 'home';\n }\n var page = idname.match(/page\\d{0,}$/g);\n if (page) {\n page = page[0];\n idname = idname.split(page)[0];\n }\n var index = idname.match(/index.html/);\n if (index) {\n index = index[0];\n idname = idname.split(index)[0];\n }\n // 转义字符如 [, ], ~, #, @\n idname = idname.replace(/(\\[|\\]|~|#|@)/g, '\\\\$1');\n if (idname && volantis.dom.headerMenu) {\n volantis.dom.headerMenu.forEach(element => {\n // idname 不能为数字开头, 加一个 action- 前缀\n let id = element.querySelector(\"[active-action=action-\" + idname + \"]\")\n if (id) {\n volantis.dom.$(id).addClass('active')\n }\n });\n }\n }\n\n // 设置全局事件\n fn.setGlobalHeaderMenuEvent = () => {\n if (volantis.isMobile) {\n // 【移动端】 关闭已经展开的子菜单 点击展开子菜单\n document.querySelectorAll('#l_header .m-phone li').forEach(function (_e) {\n if (_e.querySelector(\".list-v\")) {\n // 点击菜单\n volantis.dom.$(_e).click(function (e) { \n e.stopPropagation();\n let menuType = ''\n // 关闭.menu-phone\n Array.from(e.currentTarget.children).some(val => {\n if(val.classList.contains('s-menu')) {\n menuType = 'menu' // 代表点击的是一级菜单外层的icon\n return\n }\n if(val.classList.contains('menuitem')) {\n menuType = 'item' // 点击的是下拉一级菜单\n return\n }\n })\n if(menuType === 'item') {\n // 关闭已经展开的子菜单, 这一步是针对点击多个拥有二级子菜单的一级菜单,关闭其他所有一级菜单的二级菜单\n // ①\n e.currentTarget.parentElement.childNodes.forEach(function (e2) {\n if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {\n e2.childNodes.forEach(function (e1) {\n if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {\n volantis.dom.$(e1).hide()\n }\n })\n }\n })\n // 点击展开二级子菜单\n\n /* \n 由于采用事件委托,因此此处点击, 两种情况,currentTarget指向菜单按钮a.s-menu和ul的共同父元素li, 第二,指向ul中的li元素,也就是子菜单\n 区分:情况一的第一个子元素a的类名是s-menu;情况二的子元素a的类名为menuitem\n 我们要点击外部的menu icon时要关闭的是.menu-phone而不是.menuitem\n */\n let array = e.currentTarget.children\n for (let index = 0; index < array.length; index++) {\n const element = array[index];\n if (volantis.dom.$(element).title === 'menu') { // 移动端菜单栏异常\n volantis.dom.$(element).style.display = \"flex\" // https://github.com/volantis-x/hexo-theme-volantis/issues/706\n } else {\n volantis.dom.$(element).show()\n }\n }\n } else { \n let menuPhone = document.querySelector('.switcher .menu-phone')\n let isHiding = window.getComputedStyle(menuPhone).display === 'none'\n if(isHiding) {\n volantis.dom.$(menuPhone).show()\n } else {\n volantis.dom.$(menuPhone).hide()\n // 别忘了再执行①\n // 准备关闭所有二级菜单, 注意此时的e和点击一级菜单时候的e层级不同\n // 此处好像不能使用变量存储的menuPhone?要重新查询\n document.querySelector('.switcher .menu-phone').childNodes.forEach(function (e2) {\n if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {\n e2.childNodes.forEach(function (e1) {\n if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {\n volantis.dom.$(e1).hide()\n }\n })\n }\n })\n }\n }\n\n }, 0);\n }\n })\n } else {\n // 【PC端】 hover时展开子菜单,点击时[target.baseURI==origin时]隐藏子菜单? 现有逻辑大部分情况不隐藏子菜单\n document.querySelectorAll('#wrapper .m-pc li > a[href]').forEach(function (e) {\n volantis.dom.$(e.parentElement).click(function (e) {\n e.stopPropagation();\n if (e.target.origin == e.target.baseURI) {\n document.querySelectorAll('#wrapper .m-pc .list-v').forEach(function (e) {\n volantis.dom.$(e).hide(); // 大概率不会执行\n })\n }\n }, 0);\n })\n }\n fn.setPageHeaderMenuEvent();\n }\n \n // 【移动端】隐藏子菜单\n fn.setPageHeaderMenuEvent = () => {\n if (!volantis.isMobile) return\n // 【移动端】 点击空白处隐藏子菜单\n volantis.dom.$(document).click(function (e) {\n volantis.dom.mPhoneList.forEach(function (e) {\n volantis.dom.$(e).hide();\n })\n });\n }\n\n // 设置导航栏搜索框 【移动端】\n fn.setHeaderSearch = () => {\n if (!volantis.isMobile) return;\n if (!volantis.dom.switcher) return;\n // 点击移动端搜索按钮\n volantis.dom.switcher.click(function (e) {\n e.stopPropagation();\n volantis.dom.header.toggleClass('z_search-open'); // 激活移动端搜索框\n volantis.dom.switcher.toggleClass('active'); // 移动端搜索按钮\n }, false); // false : pjax 不移除监听\n // 点击空白取消激活\n volantis.dom.$(document).click(function (e) {\n volantis.dom.header.removeClass('z_search-open');\n volantis.dom.switcher.removeClass('active');\n }, false); // false : pjax 不移除监听\n // 移动端点击搜索框 停止事件传播\n volantis.dom.search.click(function (e) {\n e.stopPropagation();\n }, false); // false : pjax 不移除监听\n }\n\n // 设置 tabs 标签 【移动端 PC】\n fn.setTabs = () => {\n let tabs = document.querySelectorAll('#l_main .tabs .nav-tabs')\n if (!tabs) return\n tabs.forEach(function (e) {\n e.querySelectorAll('a').forEach(function (e) {\n volantis.dom.$(e).on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const $tab = volantis.dom.$(e.target.parentElement.parentElement.parentElement);\n $tab.find('.nav-tabs .active').removeClass('active');\n volantis.dom.$(e.target.parentElement).addClass('active');\n $tab.find('.tab-content .active').removeClass('active');\n $tab.find(e.target.className).addClass('active');\n return false;\n });\n })\n })\n }\n\n // hexo-reference 页脚跳转 https://github.com/volantis-x/hexo-theme-volantis/issues/647\n fn.footnotes = () => {\n let ref = document.querySelectorAll('#l_main .footnote-backref, #l_main .footnote-ref > a');\n ref.forEach(function (e, i) {\n ref[i].click = () => { }; // 强制清空原 click 事件\n volantis.dom.$(e).on('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n let targetID = decodeURI(e.target.hash.split('#')[1]).replace(/\\ /g, '-');\n let target = document.getElementById(targetID);\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n });\n })\n }\n\n // 工具类:代码块复制\n fn.utilCopyCode = (Selector) => {\n document.querySelectorAll(Selector).forEach(node => {\n const test = node.insertAdjacentHTML(\"beforebegin\", COPYHTML);\n const _BtnCopy = node.previousSibling;\n _BtnCopy.onclick = e => {\n e.stopPropagation();\n const _icon = _BtnCopy.querySelector('i');\n const _span = _BtnCopy.querySelector('span');\n\n node.focus();\n const range = new Range();\n range.selectNodeContents(node);\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(range);\n\n const str = document.getSelection().toString();\n fn.utilWriteClipText(str).then(() => {\n fn.messageCopyright();\n _BtnCopy.classList.add('copied');\n _icon.classList.remove('fa-copy');\n _icon.classList.add('fa-check-circle');\n _span.innerText = \"COPIED\";\n setTimeout(() => {\n _icon.classList.remove('fa-check-circle');\n _icon.classList.add('fa-copy');\n _span.innerText = \"COPY\";\n }, 2000)\n }).catch(e => {\n VolantisApp.message('系统提示', e, {\n icon: 'fa fa-exclamation-circle red'\n });\n _BtnCopy.classList.add('copied-failed');\n _icon.classList.remove('fa-copy');\n _icon.classList.add('fa-exclamation-circle');\n _span.innerText = \"COPY FAILED\";\n setTimeout(() => {\n _icon.classList.remove('fa-exclamation-circle');\n _icon.classList.add('fa-copy');\n _span.innerText = \"COPY\";\n })\n })\n }\n });\n }\n\n // 工具类:复制字符串到剪切板\n fn.utilWriteClipText = (str) => {\n return navigator.clipboard\n .writeText(str)\n .then(() => {\n return Promise.resolve()\n })\n .catch(e => {\n const input = document.createElement('textarea');\n input.setAttribute('readonly', 'readonly');\n document.body.appendChild(input);\n input.innerHTML = str;\n input.select();\n try {\n let result = document.execCommand('copy')\n document.body.removeChild(input);\n if (!result || result === 'unsuccessful') {\n return Promise.reject('复制文本失败!')\n } else {\n return Promise.resolve()\n }\n } catch (e) {\n document.body.removeChild(input);\n return Promise.reject(\n '当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作!'\n )\n }\n })\n }\n\n // 工具类:返回时间间隔\n fn.utilTimeAgo = (dateTimeStamp) => {\n const minute = 1e3 * 60, hour = minute * 60, day = hour * 24, week = day * 7, month = day * 30;\n const now = new Date().getTime();\n const diffValue = now - dateTimeStamp;\n const minC = diffValue / minute,\n hourC = diffValue / hour,\n dayC = diffValue / day,\n weekC = diffValue / week,\n monthC = diffValue / month;\n if (diffValue < 0) {\n result = \"\"\n } else if (monthC >= 1 && monthC < 7) {\n result = \" \" + parseInt(monthC) + \" 月前\"\n } else if (weekC >= 1 && weekC < 4) {\n result = \" \" + parseInt(weekC) + \" 周前\"\n } else if (dayC >= 1 && dayC < 7) {\n result = \" \" + parseInt(dayC) + \" 天前\"\n } else if (hourC >= 1 && hourC < 24) {\n result = \" \" + parseInt(hourC) + \" 小时前\"\n } else if (minC >= 1 && minC < 60) {\n result = \" \" + parseInt(minC) + \" 分钟前\"\n } else if (diffValue >= 0 && diffValue <= minute) {\n result = \"刚刚\"\n } else {\n const datetime = new Date();\n datetime.setTime(dateTimeStamp);\n const Nyear = datetime.getFullYear();\n const Nmonth = datetime.getMonth() + 1 < 10 ? \"0\" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;\n const Ndate = datetime.getDate() < 10 ? \"0\" + datetime.getDate() : datetime.getDate();\n const Nhour = datetime.getHours() < 10 ? \"0\" + datetime.getHours() : datetime.getHours();\n const Nminute = datetime.getMinutes() < 10 ? \"0\" + datetime.getMinutes() : datetime.getMinutes();\n const Nsecond = datetime.getSeconds() < 10 ? \"0\" + datetime.getSeconds() : datetime.getSeconds();\n result = Nyear + \"-\" + Nmonth + \"-\" + Ndate\n }\n return result;\n }\n\n // 消息提示:标准\n fn.message = (title, message, option = {}, done = null) => {\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n tozashMessage(title, message, option, done);\n });\n } else {\n tozashMessage(title, message, option, done);\n }\n function tozashMessage(title, message, option, done) {\n const {\n icon,\n time,\n position,\n transitionIn,\n transitionOut,\n messageColor,\n titleColor,\n backgroundColor,\n zindex,\n displayMode\n } = option;\n iziToast.show({\n layout: '2',\n icon: 'Fontawesome',\n closeOnEscape: 'true',\n displayMode: displayMode || 'replace',\n transitionIn: transitionIn || volantis.GLOBAL_CONFIG.plugins.message.transitionIn,\n transitionOut: transitionOut || volantis.GLOBAL_CONFIG.plugins.message.transitionOut,\n messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,\n titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,\n backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,\n zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,\n icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.default,\n timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.default,\n position: position || volantis.GLOBAL_CONFIG.plugins.message.position,\n title: title,\n message: message,\n onClosed: () => {\n if (done) done();\n },\n });\n }\n }\n\n // 消息提示:询问\n fn.question = (title, message, option = {}, success = null, cancel = null, done = null) => {\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n tozashQuestion(title, message, option, success, cancel, done);\n });\n } else {\n tozashQuestion(title, message, option, success, cancel, done);\n }\n\n function tozashQuestion(title, message, option, success, cancel, done) {\n const {\n icon,\n time,\n position,\n transitionIn,\n transitionOut,\n messageColor,\n titleColor,\n backgroundColor,\n zindex\n } = option;\n iziToast.question({\n id: 'question',\n icon: 'Fontawesome',\n close: false,\n overlay: true,\n displayMode: 'once',\n position: 'center',\n messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,\n titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,\n backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,\n zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,\n icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.quection,\n timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.quection,\n title: title,\n message: message,\n buttons: [\n ['<button><b>是</b></button>', (instance, toast) => {\n instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');\n if (success) success(instance, toast)\n }],\n ['<button><b>否</b></button>', (instance, toast) => {\n instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');\n if (cancel) cancel(instance, toast)\n }]\n ],\n onClosed: (instance, toast, closedBy) => {\n if (done) done(instance, toast, closedBy);\n }\n });\n }\n }\n\n // 消息提示:隐藏\n fn.hideMessage = (done = null) => {\n const toast = document.querySelector('.iziToast');\n if (!toast) {\n if (done) done()\n return;\n }\n\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n hideMessage(done);\n });\n } else {\n hideMessage(done);\n }\n\n function hideMessage(done) {\n iziToast.hide({}, toast);\n if (done) done();\n }\n }\n\n // 消息提示:复制\n let messageCopyrightShow = 0;\n fn.messageCopyright = () => {\n // 消息提示 复制时弹出\n if (volantis.GLOBAL_CONFIG.plugins.message.enable\n && volantis.GLOBAL_CONFIG.plugins.message.copyright.enable\n && messageCopyrightShow < 1) {\n messageCopyrightShow++;\n VolantisApp.message(volantis.GLOBAL_CONFIG.plugins.message.copyright.title,\n volantis.GLOBAL_CONFIG.plugins.message.copyright.message, {\n icon: volantis.GLOBAL_CONFIG.plugins.message.copyright.icon,\n transitionIn: 'flipInX',\n transitionOut: 'flipOutX',\n displayMode: 1\n });\n }\n }\n\n return {\n init: () => {\n fn.init();\n fn.event();\n },\n subscribe: () => {\n fn.setIsMobile();\n fn.setHeader();\n fn.setHeaderMenuSelection();\n fn.setGlobalHeaderMenuEvent();\n fn.setHeaderSearch();\n fn.setScrollAnchor();\n fn.setTabs();\n fn.footnotes();\n },\n pjaxReload: () => {\n fn.event();\n fn.restData();\n fn.setHeader();\n fn.setHeaderMenuSelection();\n fn.setPageHeaderMenuEvent();\n fn.setScrollAnchor();\n fn.setTabs();\n fn.footnotes();\n\n // 移除小尾巴的移除\n document.querySelector(\"#l_header .nav-main\").querySelectorAll('.list-v:not(.menu-phone)').forEach(function (e) {\n e.removeAttribute(\"style\")\n })\n document.querySelector(\"#l_header .menu-phone.list-v\").removeAttribute(\"style\");\n messageCopyrightShow = 0;\n },\n utilCopyCode: fn.utilCopyCode,\n utilWriteClipText: fn.utilWriteClipText,\n utilTimeAgo: fn.utilTimeAgo,\n message: fn.message,\n question: fn.question,\n hideMessage: fn.hideMessage,\n messageCopyright: fn.messageCopyright,\n scrolltoElement: fn.scrolltoElement\n }\n})()\nObject.freeze(VolantisApp);\n\n/* FancyBox */\nconst VolantisFancyBox = (() => {\n const fn = {};\n\n fn.loadFancyBox = (done) => {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.fancybox.css);\n volantis.js(volantis.GLOBAL_CONFIG.plugins.fancybox.js).then(() => {\n if (done) done();\n })\n }\n\n /**\n * 加载及处理\n * \n * @param {*} checkMain 是否只处理文章区域的文章\n * @param {*} done FancyBox 加载完成后的动作,默认执行分组绑定\n * @returns \n */\n fn.init = (checkMain = true, done = fn.groupBind) => {\n if (!document.querySelector(\".md .gallery img, .fancybox\") && checkMain) return;\n if (typeof Fancybox === \"undefined\") {\n fn.loadFancyBox(done);\n } else {\n done();\n }\n }\n\n /**\n * 图片元素预处理\n * \n * @param {*} selectors 选择器\n * @param {*} name 分组\n */\n fn.elementHandling = (selectors, name) => {\n const nodeList = document.querySelectorAll(selectors);\n nodeList.forEach($item => {\n if ($item.hasAttribute('fancybox')) return;\n $item.setAttribute('fancybox', '');\n const $link = document.createElement('a');\n $link.setAttribute('href', $item.src);\n $link.setAttribute('data-caption', $item.alt);\n $link.setAttribute('data-fancybox', name);\n $link.classList.add('fancybox');\n $link.append($item.cloneNode());\n $item.replaceWith($link);\n })\n }\n\n /**\n * 原生绑定\n * \n * @param {*} selectors 选择器\n */\n fn.bind = (selectors) => {\n fn.init(false, () => {\n Fancybox.bind(selectors, {\n groupAll: true,\n Hash: false,\n hideScrollbar: false,\n Thumbs: {\n autoStart: false,\n },\n caption: function (fancybox, carousel, slide) {\n return slide.$trigger.alt || null\n }\n });\n });\n }\n\n /**\n * 分组绑定\n * \n * @param {*} groupName 分组名称\n */\n fn.groupBind = (groupName = null) => {\n const group = new Set();\n\n document.querySelectorAll(\".gallery\").forEach(ele => {\n if (ele.querySelector(\"img\")) {\n group.add(ele.getAttribute('data-group') || 'default');\n }\n })\n\n if (!!groupName) group.add(groupName);\n\n for (const iterator of group) {\n Fancybox.unbind('[data-fancybox=\"' + iterator + '\"]');\n Fancybox.bind('[data-fancybox=\"' + iterator + '\"]', {\n Hash: false,\n hideScrollbar: false,\n Thumbs: {\n autoStart: false,\n }\n });\n }\n }\n\n return {\n init: fn.init,\n bind: fn.bind,\n groupBind: (selectors, groupName = 'default') => {\n try {\n fn.elementHandling(selectors, groupName);\n fn.init(false, () => {\n fn.groupBind(groupName)\n });\n } catch (error) {\n console.error(error)\n }\n }\n }\n})()\nObject.freeze(VolantisFancyBox);\n\n// highlightKeyWords 与 搜索功能搭配 https://github.com/next-theme/hexo-theme-next/blob/eb194a7258058302baf59f02d4b80b6655338b01/source/js/third-party/search/local-search.js\n// Question: 锚点稳定性未知\n// ToDo: 查找模式\n// 0. (/////////要知道浏览器自带全页面查找功能 CTRL + F)\n// 1. 右键开启查找模式 / 导航栏菜单开启?? / CTRL + F ???\n// 2. 查找模式面板 (可拖动? or 固定?)\n// 3. keyword mark id 从 0 开始编号 查找下一处 highlightKeyWords.scrollToNextHighlightKeywordMark() 查找上一处 scrollToPrevHighlightKeywordMark() 循环查找(取模%)\n// 4. 可输入修改 查找关键词 keywords(type:list)\n// 5. 区分大小写 caseSensitive (/ 全字匹配?? / 正则匹配??)\n// 6. 在选定区域中查找 querySelector ??\n// 7. 关闭查找模式\n// 8. 搜索跳转 (URL 入口) 自动开启查找模式 调用 scrollToNextHighlightKeywordMark()\nconst highlightKeyWords = (() => {\n let fn = {}\n fn.markNum = 0\n fn.markNextId = -1\n fn.startFromURL = () => {\n const params = decodeURI(new URL(location.href).searchParams.get('keyword'));\n const keywords = params ? params.split(' ') : [];\n const post = document.querySelector('#l_main');\n if (keywords.length == 1 && keywords[0] == \"null\") {\n return;\n }\n fn.start(keywords, post); // 渲染耗时较长\n fn.scrollToFirstHighlightKeywordMark()\n }\n fn.scrollToFirstHighlightKeywordMark = () => {\n volantis.cleanContentVisibility();\n let target = fn.scrollToNextHighlightKeywordMark(\"0\");\n if (!target) {\n volantis.requestAnimationFrame(fn.scrollToFirstHighlightKeywordMark)\n }\n }\n fn.scrollToNextHighlightKeywordMark = (id) => {\n // Next Id\n let input = id || (fn.markNextId + 1) % fn.markNum;\n fn.markNextId = parseInt(input)\n let target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n if (!target) {\n fn.markNextId = (fn.markNextId + 1) % fn.markNum;\n target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n }\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n // Current target\n return target\n }\n fn.scrollToPrevHighlightKeywordMark = (id) => {\n // Prev Id\n let input = id || (fn.markNextId - 1 + fn.markNum) % fn.markNum;\n fn.markNextId = parseInt(input)\n let target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n if (!target) {\n fn.markNextId = (fn.markNextId - 1 + fn.markNum) % fn.markNum;\n target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n }\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n // Current target\n return target\n }\n fn.start = (keywords, querySelector) => {\n fn.markNum = 0\n if (!keywords.length || !querySelector || (keywords.length == 1 && keywords[0] == \"null\")) return;\n console.log(keywords);\n const walk = document.createTreeWalker(querySelector, NodeFilter.SHOW_TEXT, null);\n const allNodes = [];\n while (walk.nextNode()) {\n if (!walk.currentNode.parentNode.matches('button, select, textarea')) allNodes.push(walk.currentNode);\n }\n allNodes.forEach(node => {\n const [indexOfNode] = fn.getIndexByWord(keywords, node.nodeValue);\n if (!indexOfNode.length) return;\n const slice = fn.mergeIntoSlice(0, node.nodeValue.length, indexOfNode);\n fn.highlightText(node, slice, 'keyword');\n fn.highlightStyle()\n });\n }\n fn.getIndexByWord = (words, text, caseSensitive = false) => {\n const index = [];\n const included = new Set();\n words.forEach(word => {\n const div = document.createElement('div');\n div.innerText = word;\n word = div.innerHTML;\n\n const wordLen = word.length;\n if (wordLen === 0) return;\n let startPosition = 0;\n let position = -1;\n if (!caseSensitive) {\n text = text.toLowerCase();\n word = word.toLowerCase();\n }\n while ((position = text.indexOf(word, startPosition)) > -1) {\n index.push({ position, word });\n included.add(word);\n startPosition = position + wordLen;\n }\n });\n index.sort((left, right) => {\n if (left.position !== right.position) {\n return left.position - right.position;\n }\n return right.word.length - left.word.length;\n });\n return [index, included];\n };\n fn.mergeIntoSlice = (start, end, index) => {\n let item = index[0];\n let { position, word } = item;\n const hits = [];\n const count = new Set();\n while (position + word.length <= end && index.length !== 0) {\n count.add(word);\n hits.push({\n position,\n length: word.length\n });\n const wordEnd = position + word.length;\n\n index.shift();\n while (index.length !== 0) {\n item = index[0];\n position = item.position;\n word = item.word;\n if (wordEnd > position) {\n index.shift();\n } else {\n break;\n }\n }\n }\n return {\n hits,\n start,\n end,\n count: count.size\n };\n };\n fn.highlightText = (node, slice, className) => {\n const val = node.nodeValue;\n let index = slice.start;\n const children = [];\n for (const { position, length } of slice.hits) {\n const text = document.createTextNode(val.substring(index, position));\n index = position + length;\n let mark = document.createElement('mark');\n mark.className = className;\n mark = fn.highlightStyle(mark)\n mark.appendChild(document.createTextNode(val.substr(position, length)));\n children.push(text, mark);\n }\n node.nodeValue = val.substring(index, slice.end);\n children.forEach(element => {\n node.parentNode.insertBefore(element, node);\n });\n }\n fn.highlightStyle = (mark) => {\n if (!mark) return;\n mark.id = \"keyword-mark-\" + fn.markNum;\n fn.markNum++;\n mark.style.background = \"transparent\";\n mark.style[\"border-bottom\"] = \"1px dashed #ff2a2a\";\n mark.style[\"color\"] = \"#ff2a2a\";\n mark.style[\"font-weight\"] = \"bold\";\n return mark\n }\n fn.cleanHighlightStyle = () => {\n document.querySelectorAll(\".keyword\").forEach(mark => {\n mark.style.background = \"transparent\";\n mark.style[\"border-bottom\"] = null;\n mark.style[\"color\"] = null;\n mark.style[\"font-weight\"] = null;\n })\n }\n return {\n start: (keywords, querySelector) => {\n fn.start(keywords, querySelector)\n },\n startFromURL: () => {\n fn.startFromURL()\n },\n scrollToNextHighlightKeywordMark: (id) => {\n fn.scrollToNextHighlightKeywordMark(id)\n },\n scrollToPrevHighlightKeywordMark: (id) => {\n fn.scrollToPrevHighlightKeywordMark(id)\n },\n cleanHighlightStyle: () => {\n fn.cleanHighlightStyle()\n },\n }\n})()\nObject.freeze(highlightKeyWords);\n\n/* DOM 控制 */\nconst DOMController = {\n /**\n * 控制元素显隐\n */\n visible: (ele, type = true) => {\n if (ele) ele.style.display = type === true ? 'block' : 'none';\n },\n\n /**\n * 移除元素\n */\n remove: (param) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.remove();\n })\n },\n\n removeList: (list) => {\n list.forEach(param => {\n DOMController.remove(param)\n })\n },\n\n /**\n * 设置属性\n */\n setAttribute: (param, attrName, attrValue) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.setAttribute(attrName, attrValue)\n })\n },\n\n setAttributeList: (list) => {\n list.forEach(item => {\n DOMController.setAttribute(item[0], item[1], item[2])\n })\n },\n\n /**\n * 设置样式\n */\n setStyle: (param, styleName, styleValue) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.style[styleName] = styleValue;\n })\n },\n\n setStyleList: (list) => {\n list.forEach(item => {\n DOMController.setStyle(item[0], item[1], item[2])\n })\n },\n\n fadeIn: (e) => {\n if (!e) return;\n e.style.visibility = \"visible\";\n e.style.opacity = 1;\n e.style.display = \"block\";\n e.style.transition = \"all 0.5s linear\";\n return e\n },\n\n fadeOut: (e) => {\n if (!e) return;\n e.style.visibility = \"hidden\";\n e.style.opacity = 0;\n e.style.display = \"none\";\n e.style.transition = \"all 0.5s linear\";\n return e\n },\n\n fadeToggle: (e) => {\n if (!e) return;\n if (e.style.visibility == \"hidden\") {\n e = DOMController.fadeIn(e)\n } else {\n e = DOMController.fadeOut(e)\n }\n return e\n },\n\n fadeToggleList: (list) => {\n list.forEach(param => {\n DOMController.fadeToggle(param)\n })\n },\n\n hasClass: (e, c) => {\n if (!e) return;\n return e.className.match(new RegExp('(\\\\s|^)' + c + '(\\\\s|$)'));\n },\n\n addClass: (e, c) => {\n if (!e) return;\n e.classList.add(c);\n return e\n },\n\n removeClass: (e, c) => {\n if (!e) return;\n e.classList.remove(c);\n return e\n },\n\n toggleClass: (e, c) => {\n if (!e) return;\n if (DOMController.hasClass(e, c)) {\n DOMController.removeClass(e, c)\n } else {\n DOMController.addClass(e, c)\n }\n return e\n },\n\n toggleClassList: (list) => {\n list.forEach(item => {\n DOMController.toggleClass(item[0], item[1])\n })\n }\n}\nObject.freeze(DOMController);\n\nconst VolantisRequest = {\n timeoutFetch: (url, ms, requestInit) => {\n const controller = new AbortController()\n requestInit.signal?.addEventListener('abort', () => controller.abort())\n let promise = fetch(url, { ...requestInit, signal: controller.signal })\n if (ms > 0) {\n const timer = setTimeout(() => controller.abort(), ms)\n promise.finally(() => { clearTimeout(timer) })\n }\n promise = promise.catch((err) => {\n throw ((err || {}).name === 'AbortError') ? new Error(`Fetch timeout: ${url}`) : err\n })\n return promise\n },\n\n Fetch: async (url, requestInit, timeout = 15000) => {\n const resp = await VolantisRequest.timeoutFetch(url, timeout, requestInit);\n if (!resp.ok) throw new Error(`Fetch error: ${url} | ${resp.status}`);\n let json = await resp.json()\n if (!json.success) throw json\n return json\n },\n\n POST: async (url, data) => {\n const requestInit = {\n method: 'POST',\n }\n if (data) {\n const formData = new FormData();\n Object.keys(data).forEach(key => formData.append(key, String(data[key])))\n requestInit.body = formData;\n }\n const json = await VolantisRequest.Fetch(url, requestInit)\n return json.data;\n },\n\n Get: async (url, data) => {\n const json = await VolantisRequest.Fetch(url + (data ? (`?${new URLSearchParams(data)}`) : ''), {\n method: 'GET'\n })\n }\n}\nObject.freeze(VolantisRequest);\n"]}
1
+ {"version":3,"sources":["js/app.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_regenerator","e","t","r","n","toStringTag","i","c","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","this","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","next","Array","isArray","_createForOfIteratorHelper","_n","F","s","_arrayLikeToArray","toString","slice","name","from","test","_toPropertyKey","_toPrimitive","toPrimitive","String","Number","document","addEventListener","volantis","requestAnimationFrame","VolantisApp","init","subscribe","VolantisFancyBox","highlightKeyWords","startFromURL","locationHash","pjax","pjaxReload","sessionStorage","setItem","title","send","dom","switcher","removeClass","header","wrapper","EventListener","remove","window","location","hash","locationID","decodeURI","split","replace","target","getElementById","setTimeout","startsWith","scroll","to","addTop","offsetHeight","behavior","observer","freeze","fn","scrollCorrection","clientHeight","onresize","documentElement","clientWidth","isMobile","isMobileOld","setGlobalHeaderMenuEvent","setHeader","setHeaderSearch","scrollEventCallBack","event","_volantis$dom$$","$","on","scrolltoElement","bodyAnchor","sidebar","querySelector","querySelectorAll","classList","add","GLOBAL_CONFIG","for_page","includes","for_post","lastupd","webinfo","enable","friendlyShow","innerHTML","utilTimeAgo","lastupdate","BirthDay","Date","runtime","data","timeold","getTime","daysold","Math","floor","concat","unit","body","oncopy","messageCopyright","restData","setIsMobile","elem","correction","undefined","top","offsetTop","showHeaderPoint","scrollTop","getScrollTop","topBtn","addClass","del","pdata","ispage","tocTarget","toc","mPhoneList","hide","setScrollAnchor","click","preventDefault","stopPropagation","stopImmediatePropagation","find","html","comment","commentTarget","style","display","toggleClass","setHeaderMenuSelection","headerMenu","element","li","div","idname","pathname","page","match","index","id","_e","menuType","currentTarget","children","some","val","contains","parentElement","childNodes","e2","e1","array","show","menuPhone","getComputedStyle","origin","baseURI","setPageHeaderMenuEvent","search","setTabs","tabs","$tab","className","footnotes","ref","targetID","utilCopyCode","Selector","node","insertAdjacentHTML","_BtnCopy","previousSibling","onclick","_icon","_span","focus","range","Range","selectNodeContents","getSelection","removeAllRanges","addRange","str","utilWriteClipText","innerText","message","icon","navigator","clipboard","writeText","input","createElement","setAttribute","appendChild","select","result","execCommand","removeChild","reject","dateTimeStamp","minute","hour","day","week","month","diffValue","minC","hourC","dayC","weekC","monthC","parseInt","datetime","setTime","Nyear","getFullYear","Nmonth","getMonth","Ndate","getDate","getHours","getMinutes","getSeconds","option","tozashMessage","time","position","transitionIn","transitionOut","messageColor","titleColor","backgroundColor","zindex","displayMode","iziToast","layout","closeOnEscape","plugins","css","js","question","success","cancel","tozashQuestion","close","overlay","quection","instance","toast","closedBy","hideMessage","messageCopyrightShow","copyright","removeAttribute","fancybox","checkMain","groupBind","Fancybox","loadFancyBox","selectors","$item","hasAttribute","$link","src","alt","append","cloneNode","replaceWith","groupAll","Hash","hideScrollbar","Thumbs","autoStart","caption","carousel","slide","$trigger","groupName","group","Set","ele","getAttribute","_step","_iterator","unbind","err","elementHandling","error","console","params","URL","href","searchParams","get","keywords","post","start","scrollToFirstHighlightKeywordMark","cleanContentVisibility","scrollToNextHighlightKeywordMark","markNextId","markNum","log","walk","createTreeWalker","NodeFilter","SHOW_TEXT","allNodes","nextNode","currentNode","parentNode","matches","indexOfNode","getIndexByWord","nodeValue","mergeIntoSlice","highlightText","highlightStyle","words","text","caseSensitive","included","word","wordLen","startPosition","toLowerCase","indexOf","sort","left","right","end","item","_item","hits","count","wordEnd","shift","size","_step2","_iterator2","_step2$value","createTextNode","substring","mark","substr","insertBefore","background","scrollToPrevHighlightKeywordMark","cleanHighlightStyle","DOMController","visible","type","param","removeList","list","attrName","attrValue","setAttributeList","setStyle","styleName","styleValue","setStyleList","fadeIn","visibility","opacity","transition","fadeOut","fadeToggle","fadeToggleList","hasClass","RegExp","toggleClassList","VolantisRequest","timeoutFetch","url","ms","requestInit","_requestInit$signal","controller","AbortController","signal","abort","promise","fetch","timer","clearTimeout","Error","Fetch","_Fetch","_callee","timeout","resp","json","_args","_context","ok","status","_x","_x2","POST","_POST","_callee2","formData","_context2","method","FormData","key","_x3","_x4","Get","_Get","_callee3","_context3","URLSearchParams","_x5","_x6"],"mappings":"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","file":"../../js/app.js","sourcesContent":["document.addEventListener(\"DOMContentLoaded\", function () {\n volantis.requestAnimationFrame(() => {\n VolantisApp.init();\n VolantisApp.subscribe();\n VolantisFancyBox.init();\n highlightKeyWords.startFromURL();\n locationHash();\n\n volantis.pjax.push(() => {\n VolantisApp.pjaxReload();\n VolantisFancyBox.init();\n sessionStorage.setItem(\"domTitle\", document.title);\n highlightKeyWords.startFromURL();\n }, 'app.js');\n volantis.pjax.send(() => {\n volantis.dom.switcher.removeClass('active'); // 关闭移动端激活的搜索框\n volantis.dom.header.removeClass('z_search-open'); // 关闭移动端激活的搜索框\n volantis.dom.wrapper.removeClass('sub'); // 跳转页面时关闭二级导航\n volantis.EventListener.remove() // 移除事件监听器 see: layout/_partial/scripts/global.ejs\n }, 'app.js');\n });\n});\n\n/* 锚点定位 */\nconst locationHash = () => {\n if (window.location.hash) {\n let locationID = decodeURI(window.location.hash.split('#')[1]).replace(/\\ /g, '-');\n let target = document.getElementById(locationID);\n if (target) {\n setTimeout(() => {\n if (window.location.hash.startsWith('#fn')) { // hexo-reference https://github.com/volantis-x/hexo-theme-volantis/issues/647\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant', observer: true })\n } else {\n // 锚点中上半部有大片空白 高度大概是 volantis.dom.header.offsetHeight\n volantis.scroll.to(target, { addTop: 5, behavior: 'instant', observer: true })\n }\n }, 1000)\n }\n }\n}\nObject.freeze(locationHash);\n\n/* Main */\nconst VolantisApp = (() => {\n const fn = {},\n COPYHTML = '<button class=\"btn-copy\" data-clipboard-snippet=\"\"><i class=\"fa-solid fa-copy\"></i><span>COPY</span></button>';\n let scrollCorrection = 80;\n\n fn.init = () => {\n if (volantis.dom.header) {\n scrollCorrection = volantis.dom.header.clientHeight + 16;\n }\n\n window.onresize = () => {\n if (document.documentElement.clientWidth < 500) {\n volantis.isMobile = 1;\n } else {\n volantis.isMobile = 0;\n }\n if (volantis.isMobile != volantis.isMobileOld) {\n fn.setGlobalHeaderMenuEvent();\n fn.setHeader();\n fn.setHeaderSearch();\n }\n }\n volantis.scroll.push(fn.scrollEventCallBack, \"scrollEventCallBack\")\n }\n\n fn.event = () => {\n volantis.dom.$(document.getElementById(\"scroll-down\"))?.on('click', function () {\n fn.scrolltoElement(volantis.dom.bodyAnchor);\n });\n\n // 如果 sidebar 为空,隐藏 sidebar。\n const sidebar = document.querySelector(\"#l_side\")\n if (sidebar) {\n const sectionList = sidebar.querySelectorAll(\"section\")\n if (!sectionList.length) {\n document.querySelector(\"#l_main\").classList.add(\"no_sidebar\")\n }\n }\n\n // 站点信息 最后活动日期\n if (volantis.GLOBAL_CONFIG.sidebar.for_page.includes('webinfo') || volantis.GLOBAL_CONFIG.sidebar.for_post.includes('webinfo')) {\n const lastupd = volantis.GLOBAL_CONFIG.sidebar.webinfo.lastupd;\n if (!!document.getElementById('last-update-show') && lastupd.enable && lastupd.friendlyShow) {\n document.getElementById('last-update-show').innerHTML = fn.utilTimeAgo(volantis.GLOBAL_CONFIG.lastupdate);\n }\n }\n\n // 站点信息 运行时间\n if (!!document.getElementById('webinfo-runtime-count')) {\n let BirthDay = new Date(volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.data);\n let timeold = (new Date().getTime() - BirthDay.getTime());\n let daysold = Math.floor(timeold / (24 * 60 * 60 * 1000));\n document.getElementById('webinfo-runtime-count').innerHTML = `${daysold} ${volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.unit}`;\n }\n\n // 消息提示 复制时弹出\n document.body.oncopy = function () {\n fn.messageCopyright()\n };\n }\n\n fn.restData = () => {\n scrollCorrection = volantis.dom.header ? volantis.dom.header.clientHeight + 16 : 80;\n }\n\n fn.setIsMobile = () => {\n if (document.documentElement.clientWidth < 500) {\n volantis.isMobile = 1;\n volantis.isMobileOld = 1;\n } else {\n volantis.isMobile = 0;\n volantis.isMobileOld = 0;\n }\n }\n\n // 校正页面定位(被导航栏挡住的区域)\n fn.scrolltoElement = (elem, correction = scrollCorrection) => {\n volantis.scroll.to(elem, {\n top: elem.offsetTop - correction\n })\n }\n\n // 滚动事件回调们\n fn.scrollEventCallBack = () => {\n // 【移动端 PC】//////////////////////////////////////////////////////////////////////\n\n // 显示/隐藏 Header导航 topBtn 【移动端 PC】\n const showHeaderPoint = volantis.dom.bodyAnchor.offsetTop - scrollCorrection;\n const scrollTop = volantis.scroll.getScrollTop(); // 滚动条距离顶部的距离\n\n // topBtn\n if (volantis.dom.topBtn) {\n if (scrollTop > volantis.dom.bodyAnchor.offsetTop) {\n volantis.dom.topBtn.addClass('show');\n // 向上滚动高亮 topBtn\n if (volantis.scroll.del > 0) {\n volantis.dom.topBtn.removeClass('hl');\n } else {\n volantis.dom.topBtn.addClass('hl');\n }\n } else {\n volantis.dom.topBtn.removeClass('show').removeClass('hl');\n }\n }\n\n // Header导航\n if (volantis.dom.header) {\n if (scrollTop - showHeaderPoint > -1) {\n volantis.dom.header.addClass('show');\n } else {\n volantis.dom.header.removeClass('show');\n }\n }\n\n // 决定一二级导航栏的切换 【向上滚动切换为一级导航栏;向下滚动切换为二级导航栏】 【移动端 PC】\n if (pdata.ispage && volantis.dom.wrapper) {\n if (volantis.scroll.del > 0 && scrollTop > 100) { // 向下滚动\n volantis.dom.wrapper.addClass('sub'); // <---- 二级导航显示\n } else if (volantis.scroll.del < 0) { // 向上滚动\n volantis.dom.wrapper.removeClass('sub'); // <---- 取消二级导航显示 一级导航显示\n }\n }\n\n // 【移动端】//////////////////////////////////////////////////////////////////////\n if (volantis.isMobile) {\n // 【移动端】 页面滚动 隐藏 移动端toc目录按钮\n if (pdata.ispage && volantis.dom.tocTarget && volantis.dom.toc) {\n volantis.dom.tocTarget.removeClass('active');\n volantis.dom.toc.removeClass('active');\n }\n // 【移动端】 滚动时隐藏子菜单\n if (volantis.dom.mPhoneList) {\n volantis.dom.mPhoneList.forEach(function (e) {\n volantis.dom.$(e).hide();\n })\n }\n }\n }\n\n // 设置滚动锚点\n fn.setScrollAnchor = () => {\n // click topBtn 滚动至bodyAnchor 【移动端 PC】\n if (volantis.dom.topBtn && volantis.dom.bodyAnchor) {\n volantis.dom.topBtn.click(e => {\n e.preventDefault();\n e.stopPropagation();\n fn.scrolltoElement(volantis.dom.bodyAnchor);\n e.stopImmediatePropagation();\n });\n }\n\n }\n\n // 设置导航栏\n fn.setHeader = () => {\n // !!! 此处的Dom对象需要重载 !!!\n if (!pdata.ispage) return;\n\n // 填充二级导航文章标题 【移动端 PC】\n volantis.dom.wrapper.find('.nav-sub .title').html(document.title.split(\" - \")[0]);\n\n // ====== bind events to every btn =========\n // 评论按钮 【移动端 PC】\n volantis.dom.comment = volantis.dom.$(document.getElementById(\"s-comment\")); // 评论按钮 桌面端 移动端\n volantis.dom.commentTarget = volantis.dom.$(document.querySelector('#l_main article#comments')); // 评论区域\n if (volantis.dom.commentTarget) {\n volantis.dom.comment.click(e => { // 评论按钮点击后 跳转到评论区域\n e.preventDefault();\n e.stopPropagation();\n fn.scrolltoElement(volantis.dom.commentTarget);\n e.stopImmediatePropagation();\n });\n } else volantis.dom.comment.style.display = 'none'; // 关闭了评论,则隐藏评论按钮\n\n // 移动端toc目录按钮 【移动端】\n if (volantis.isMobile) {\n volantis.dom.toc = volantis.dom.$(document.getElementById(\"s-toc\")); // 目录按钮 仅移动端\n volantis.dom.tocTarget = volantis.dom.$(document.querySelector('#l_side .toc-wrapper')); // 侧边栏的目录列表\n if (volantis.dom.tocTarget) {\n // 点击移动端目录按钮 激活目录按钮 显示侧边栏的目录列表\n volantis.dom.toc.click((e) => {\n e.stopPropagation();\n volantis.dom.tocTarget.toggleClass('active');\n volantis.dom.toc.toggleClass('active');\n });\n // 点击空白 隐藏\n volantis.dom.$(document).click(function (e) {\n e.stopPropagation();\n if (volantis.dom.tocTarget) {\n volantis.dom.tocTarget.removeClass('active');\n }\n volantis.dom.toc.removeClass('active');\n });\n } else volantis.dom.toc.style.display = 'none'; // 隐藏toc目录按钮\n }\n }\n\n // 设置导航栏菜单选中状态 【移动端 PC】\n fn.setHeaderMenuSelection = () => {\n // !!! 此处的Dom对象需要重载 !!!\n volantis.dom.headerMenu = volantis.dom.$(document.querySelectorAll('#l_header .navigation,#l_cover .navigation,#l_side .navigation')); // 导航列表\n\n // 先把已经激活的取消激活\n volantis.dom.headerMenu.forEach(element => {\n let li = volantis.dom.$(element).find('li a.active')\n if (li)\n li.removeClass('active')\n let div = volantis.dom.$(element).find('div a.active')\n if (div)\n div.removeClass('active')\n });\n\n // replace '%' '/' '.'\n var idname = location.pathname.replace(/\\/|%|\\./g, '');\n if (idname.length == 0) {\n idname = 'home';\n }\n var page = idname.match(/page\\d{0,}$/g);\n if (page) {\n page = page[0];\n idname = idname.split(page)[0];\n }\n var index = idname.match(/index.html/);\n if (index) {\n index = index[0];\n idname = idname.split(index)[0];\n }\n // 转义字符如 [, ], ~, #, @\n idname = idname.replace(/(\\[|\\]|~|#|@)/g, '\\\\$1');\n if (idname && volantis.dom.headerMenu) {\n volantis.dom.headerMenu.forEach(element => {\n // idname 不能为数字开头, 加一个 action- 前缀\n let id = element.querySelector(\"[active-action=action-\" + idname + \"]\")\n if (id) {\n volantis.dom.$(id).addClass('active')\n }\n });\n }\n }\n\n // 设置全局事件\n fn.setGlobalHeaderMenuEvent = () => {\n if (volantis.isMobile) {\n // 【移动端】 关闭已经展开的子菜单 点击展开子菜单\n document.querySelectorAll('#l_header .m-phone li').forEach(function (_e) {\n if (_e.querySelector(\".list-v\")) {\n // 点击菜单\n volantis.dom.$(_e).click(function (e) { \n e.stopPropagation();\n let menuType = ''\n // 关闭.menu-phone\n Array.from(e.currentTarget.children).some(val => {\n if(val.classList.contains('s-menu')) {\n menuType = 'menu' // 代表点击的是一级菜单外层的icon\n return\n }\n if(val.classList.contains('menuitem')) {\n menuType = 'item' // 点击的是下拉一级菜单\n return\n }\n })\n if(menuType === 'item') {\n // 关闭已经展开的子菜单, 这一步是针对点击多个拥有二级子菜单的一级菜单,关闭其他所有一级菜单的二级菜单\n // ①\n e.currentTarget.parentElement.childNodes.forEach(function (e2) {\n if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {\n e2.childNodes.forEach(function (e1) {\n if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {\n volantis.dom.$(e1).hide()\n }\n })\n }\n })\n // 点击展开二级子菜单\n\n /* \n 由于采用事件委托,因此此处点击, 两种情况,currentTarget指向菜单按钮a.s-menu和ul的共同父元素li, 第二,指向ul中的li元素,也就是子菜单\n 区分:情况一的第一个子元素a的类名是s-menu;情况二的子元素a的类名为menuitem\n 我们要点击外部的menu icon时要关闭的是.menu-phone而不是.menuitem\n */\n let array = e.currentTarget.children\n for (let index = 0; index < array.length; index++) {\n const element = array[index];\n if (volantis.dom.$(element).title === 'menu') { // 移动端菜单栏异常\n volantis.dom.$(element).style.display = \"flex\" // https://github.com/volantis-x/hexo-theme-volantis/issues/706\n } else {\n volantis.dom.$(element).show()\n }\n }\n } else { \n let menuPhone = document.querySelector('.switcher .menu-phone')\n let isHiding = window.getComputedStyle(menuPhone).display === 'none'\n if(isHiding) {\n volantis.dom.$(menuPhone).show()\n } else {\n volantis.dom.$(menuPhone).hide()\n // 别忘了再执行①\n // 准备关闭所有二级菜单, 注意此时的e和点击一级菜单时候的e层级不同\n // 此处好像不能使用变量存储的menuPhone?要重新查询\n document.querySelector('.switcher .menu-phone').childNodes.forEach(function (e2) {\n if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {\n e2.childNodes.forEach(function (e1) {\n if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {\n volantis.dom.$(e1).hide()\n }\n })\n }\n })\n }\n }\n\n }, 0);\n }\n })\n } else {\n // 【PC端】 hover时展开子菜单,点击时[target.baseURI==origin时]隐藏子菜单? 现有逻辑大部分情况不隐藏子菜单\n document.querySelectorAll('#wrapper .m-pc li > a[href]').forEach(function (e) {\n volantis.dom.$(e.parentElement).click(function (e) {\n e.stopPropagation();\n if (e.target.origin == e.target.baseURI) {\n document.querySelectorAll('#wrapper .m-pc .list-v').forEach(function (e) {\n volantis.dom.$(e).hide(); // 大概率不会执行\n })\n }\n }, 0);\n })\n }\n fn.setPageHeaderMenuEvent();\n }\n \n // 【移动端】隐藏子菜单\n fn.setPageHeaderMenuEvent = () => {\n if (!volantis.isMobile) return\n // 【移动端】 点击空白处隐藏子菜单\n volantis.dom.$(document).click(function (e) {\n volantis.dom.mPhoneList.forEach(function (e) {\n volantis.dom.$(e).hide();\n })\n });\n }\n\n // 设置导航栏搜索框 【移动端】\n fn.setHeaderSearch = () => {\n if (!volantis.isMobile) return;\n if (!volantis.dom.switcher) return;\n // 点击移动端搜索按钮\n volantis.dom.switcher.click(function (e) {\n e.stopPropagation();\n volantis.dom.header.toggleClass('z_search-open'); // 激活移动端搜索框\n volantis.dom.switcher.toggleClass('active'); // 移动端搜索按钮\n }, false); // false : pjax 不移除监听\n // 点击空白取消激活\n volantis.dom.$(document).click(function (e) {\n volantis.dom.header.removeClass('z_search-open');\n volantis.dom.switcher.removeClass('active');\n }, false); // false : pjax 不移除监听\n // 移动端点击搜索框 停止事件传播\n volantis.dom.search.click(function (e) {\n e.stopPropagation();\n }, false); // false : pjax 不移除监听\n }\n\n // 设置 tabs 标签 【移动端 PC】\n fn.setTabs = () => {\n let tabs = document.querySelectorAll('#l_main .tabs .nav-tabs')\n if (!tabs) return\n tabs.forEach(function (e) {\n e.querySelectorAll('a').forEach(function (e) {\n volantis.dom.$(e).on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const $tab = volantis.dom.$(e.target.parentElement.parentElement.parentElement);\n $tab.find('.nav-tabs .active').removeClass('active');\n volantis.dom.$(e.target.parentElement).addClass('active');\n $tab.find('.tab-content .active').removeClass('active');\n $tab.find(e.target.className).addClass('active');\n return false;\n });\n })\n })\n }\n\n // hexo-reference 页脚跳转 https://github.com/volantis-x/hexo-theme-volantis/issues/647\n fn.footnotes = () => {\n let ref = document.querySelectorAll('#l_main .footnote-backref, #l_main .footnote-ref > a');\n ref.forEach(function (e, i) {\n ref[i].click = () => { }; // 强制清空原 click 事件\n volantis.dom.$(e).on('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n let targetID = decodeURI(e.target.hash.split('#')[1]).replace(/\\ /g, '-');\n let target = document.getElementById(targetID);\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n });\n })\n }\n\n // 工具类:代码块复制\n fn.utilCopyCode = (Selector) => {\n document.querySelectorAll(Selector).forEach(node => {\n const test = node.insertAdjacentHTML(\"beforebegin\", COPYHTML);\n const _BtnCopy = node.previousSibling;\n _BtnCopy.onclick = e => {\n e.stopPropagation();\n const _icon = _BtnCopy.querySelector('i');\n const _span = _BtnCopy.querySelector('span');\n\n node.focus();\n const range = new Range();\n range.selectNodeContents(node);\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(range);\n\n const str = document.getSelection().toString();\n fn.utilWriteClipText(str).then(() => {\n fn.messageCopyright();\n _BtnCopy.classList.add('copied');\n _icon.classList.remove('fa-copy');\n _icon.classList.add('fa-check-circle');\n _span.innerText = \"COPIED\";\n setTimeout(() => {\n _icon.classList.remove('fa-check-circle');\n _icon.classList.add('fa-copy');\n _span.innerText = \"COPY\";\n }, 2000)\n }).catch(e => {\n VolantisApp.message('系统提示', e, {\n icon: 'fa fa-exclamation-circle red'\n });\n _BtnCopy.classList.add('copied-failed');\n _icon.classList.remove('fa-copy');\n _icon.classList.add('fa-exclamation-circle');\n _span.innerText = \"COPY FAILED\";\n setTimeout(() => {\n _icon.classList.remove('fa-exclamation-circle');\n _icon.classList.add('fa-copy');\n _span.innerText = \"COPY\";\n })\n })\n }\n });\n }\n\n // 工具类:复制字符串到剪切板\n fn.utilWriteClipText = (str) => {\n return navigator.clipboard\n .writeText(str)\n .then(() => {\n return Promise.resolve()\n })\n .catch(e => {\n const input = document.createElement('textarea');\n input.setAttribute('readonly', 'readonly');\n document.body.appendChild(input);\n input.innerHTML = str;\n input.select();\n try {\n let result = document.execCommand('copy')\n document.body.removeChild(input);\n if (!result || result === 'unsuccessful') {\n return Promise.reject('复制文本失败!')\n } else {\n return Promise.resolve()\n }\n } catch (e) {\n document.body.removeChild(input);\n return Promise.reject(\n '当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作!'\n )\n }\n })\n }\n\n // 工具类:返回时间间隔\n fn.utilTimeAgo = (dateTimeStamp) => {\n const minute = 1e3 * 60, hour = minute * 60, day = hour * 24, week = day * 7, month = day * 30;\n const now = new Date().getTime();\n const diffValue = now - dateTimeStamp;\n const minC = diffValue / minute,\n hourC = diffValue / hour,\n dayC = diffValue / day,\n weekC = diffValue / week,\n monthC = diffValue / month;\n if (diffValue < 0) {\n result = \"\"\n } else if (monthC >= 1 && monthC < 7) {\n result = \" \" + parseInt(monthC) + \" 月前\"\n } else if (weekC >= 1 && weekC < 4) {\n result = \" \" + parseInt(weekC) + \" 周前\"\n } else if (dayC >= 1 && dayC < 7) {\n result = \" \" + parseInt(dayC) + \" 天前\"\n } else if (hourC >= 1 && hourC < 24) {\n result = \" \" + parseInt(hourC) + \" 小时前\"\n } else if (minC >= 1 && minC < 60) {\n result = \" \" + parseInt(minC) + \" 分钟前\"\n } else if (diffValue >= 0 && diffValue <= minute) {\n result = \"刚刚\"\n } else {\n const datetime = new Date();\n datetime.setTime(dateTimeStamp);\n const Nyear = datetime.getFullYear();\n const Nmonth = datetime.getMonth() + 1 < 10 ? \"0\" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;\n const Ndate = datetime.getDate() < 10 ? \"0\" + datetime.getDate() : datetime.getDate();\n const Nhour = datetime.getHours() < 10 ? \"0\" + datetime.getHours() : datetime.getHours();\n const Nminute = datetime.getMinutes() < 10 ? \"0\" + datetime.getMinutes() : datetime.getMinutes();\n const Nsecond = datetime.getSeconds() < 10 ? \"0\" + datetime.getSeconds() : datetime.getSeconds();\n result = Nyear + \"-\" + Nmonth + \"-\" + Ndate\n }\n return result;\n }\n\n // 消息提示:标准\n fn.message = (title, message, option = {}, done = null) => {\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n tozashMessage(title, message, option, done);\n });\n } else {\n tozashMessage(title, message, option, done);\n }\n function tozashMessage(title, message, option, done) {\n const {\n icon,\n time,\n position,\n transitionIn,\n transitionOut,\n messageColor,\n titleColor,\n backgroundColor,\n zindex,\n displayMode\n } = option;\n iziToast.show({\n layout: '2',\n icon: 'Fontawesome',\n closeOnEscape: 'true',\n displayMode: displayMode || 'replace',\n transitionIn: transitionIn || volantis.GLOBAL_CONFIG.plugins.message.transitionIn,\n transitionOut: transitionOut || volantis.GLOBAL_CONFIG.plugins.message.transitionOut,\n messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,\n titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,\n backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,\n zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,\n icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.default,\n timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.default,\n position: position || volantis.GLOBAL_CONFIG.plugins.message.position,\n title: title,\n message: message,\n onClosed: () => {\n if (done) done();\n },\n });\n }\n }\n\n // 消息提示:询问\n fn.question = (title, message, option = {}, success = null, cancel = null, done = null) => {\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n tozashQuestion(title, message, option, success, cancel, done);\n });\n } else {\n tozashQuestion(title, message, option, success, cancel, done);\n }\n\n function tozashQuestion(title, message, option, success, cancel, done) {\n const {\n icon,\n time,\n position,\n transitionIn,\n transitionOut,\n messageColor,\n titleColor,\n backgroundColor,\n zindex\n } = option;\n iziToast.question({\n id: 'question',\n icon: 'Fontawesome',\n close: false,\n overlay: true,\n displayMode: 'once',\n position: 'center',\n messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,\n titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,\n backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,\n zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,\n icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.quection,\n timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.quection,\n title: title,\n message: message,\n buttons: [\n ['<button><b>是</b></button>', (instance, toast) => {\n instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');\n if (success) success(instance, toast)\n }],\n ['<button><b>否</b></button>', (instance, toast) => {\n instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');\n if (cancel) cancel(instance, toast)\n }]\n ],\n onClosed: (instance, toast, closedBy) => {\n if (done) done(instance, toast, closedBy);\n }\n });\n }\n }\n\n // 消息提示:隐藏\n fn.hideMessage = (done = null) => {\n const toast = document.querySelector('.iziToast');\n if (!toast) {\n if (done) done()\n return;\n }\n\n if (typeof iziToast === \"undefined\") {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)\n volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {\n hideMessage(done);\n });\n } else {\n hideMessage(done);\n }\n\n function hideMessage(done) {\n iziToast.hide({}, toast);\n if (done) done();\n }\n }\n\n // 消息提示:复制\n let messageCopyrightShow = 0;\n fn.messageCopyright = () => {\n // 消息提示 复制时弹出\n if (volantis.GLOBAL_CONFIG.plugins.message.enable\n && volantis.GLOBAL_CONFIG.plugins.message.copyright.enable\n && messageCopyrightShow < 1) {\n messageCopyrightShow++;\n VolantisApp.message(volantis.GLOBAL_CONFIG.plugins.message.copyright.title,\n volantis.GLOBAL_CONFIG.plugins.message.copyright.message, {\n icon: volantis.GLOBAL_CONFIG.plugins.message.copyright.icon,\n transitionIn: 'flipInX',\n transitionOut: 'flipOutX',\n displayMode: 1\n });\n }\n }\n\n return {\n init: () => {\n fn.init();\n fn.event();\n },\n subscribe: () => {\n fn.setIsMobile();\n fn.setHeader();\n fn.setHeaderMenuSelection();\n fn.setGlobalHeaderMenuEvent();\n fn.setHeaderSearch();\n fn.setScrollAnchor();\n fn.setTabs();\n fn.footnotes();\n },\n pjaxReload: () => {\n fn.event();\n fn.restData();\n fn.setHeader();\n fn.setHeaderMenuSelection();\n fn.setPageHeaderMenuEvent();\n fn.setScrollAnchor();\n fn.setTabs();\n fn.footnotes();\n\n // 移除小尾巴的移除\n document.querySelector(\"#l_header .nav-main\").querySelectorAll('.list-v:not(.menu-phone)').forEach(function (e) {\n e.removeAttribute(\"style\")\n })\n document.querySelector(\"#l_header .menu-phone.list-v\").removeAttribute(\"style\");\n messageCopyrightShow = 0;\n },\n utilCopyCode: fn.utilCopyCode,\n utilWriteClipText: fn.utilWriteClipText,\n utilTimeAgo: fn.utilTimeAgo,\n message: fn.message,\n question: fn.question,\n hideMessage: fn.hideMessage,\n messageCopyright: fn.messageCopyright,\n scrolltoElement: fn.scrolltoElement\n }\n})()\nObject.freeze(VolantisApp);\n\n/* FancyBox */\nconst VolantisFancyBox = (() => {\n const fn = {};\n\n fn.loadFancyBox = (done) => {\n volantis.css(volantis.GLOBAL_CONFIG.plugins.fancybox.css);\n volantis.js(volantis.GLOBAL_CONFIG.plugins.fancybox.js).then(() => {\n if (done) done();\n })\n }\n\n /**\n * 加载及处理\n * \n * @param {*} checkMain 是否只处理文章区域的文章\n * @param {*} done FancyBox 加载完成后的动作,默认执行分组绑定\n * @returns \n */\n fn.init = (checkMain = true, done = fn.groupBind) => {\n if (!document.querySelector(\".md .gallery img, .fancybox\") && checkMain) return;\n if (typeof Fancybox === \"undefined\") {\n fn.loadFancyBox(done);\n } else {\n done();\n }\n }\n\n /**\n * 图片元素预处理\n * \n * @param {*} selectors 选择器\n * @param {*} name 分组\n */\n fn.elementHandling = (selectors, name) => {\n const nodeList = document.querySelectorAll(selectors);\n nodeList.forEach($item => {\n if ($item.hasAttribute('fancybox')) return;\n $item.setAttribute('fancybox', '');\n const $link = document.createElement('a');\n $link.setAttribute('href', $item.src);\n $link.setAttribute('data-caption', $item.alt);\n $link.setAttribute('data-fancybox', name);\n $link.classList.add('fancybox');\n $link.append($item.cloneNode());\n $item.replaceWith($link);\n })\n }\n\n /**\n * 原生绑定\n * \n * @param {*} selectors 选择器\n */\n fn.bind = (selectors) => {\n fn.init(false, () => {\n Fancybox.bind(selectors, {\n groupAll: true,\n Hash: false,\n hideScrollbar: false,\n Thumbs: {\n autoStart: false,\n },\n caption: function (fancybox, carousel, slide) {\n return slide.$trigger.alt || null\n }\n });\n });\n }\n\n /**\n * 分组绑定\n * \n * @param {*} groupName 分组名称\n */\n fn.groupBind = (groupName = null) => {\n const group = new Set();\n\n document.querySelectorAll(\".gallery\").forEach(ele => {\n if (ele.querySelector(\"img\")) {\n group.add(ele.getAttribute('data-group') || 'default');\n }\n })\n\n if (!!groupName) group.add(groupName);\n\n for (const iterator of group) {\n Fancybox.unbind('[data-fancybox=\"' + iterator + '\"]');\n Fancybox.bind('[data-fancybox=\"' + iterator + '\"]', {\n Hash: false,\n hideScrollbar: false,\n Thumbs: {\n autoStart: false,\n }\n });\n }\n }\n\n return {\n init: fn.init,\n bind: fn.bind,\n groupBind: (selectors, groupName = 'default') => {\n try {\n fn.elementHandling(selectors, groupName);\n fn.init(false, () => {\n fn.groupBind(groupName)\n });\n } catch (error) {\n console.error(error)\n }\n }\n }\n})()\nObject.freeze(VolantisFancyBox);\n\n// highlightKeyWords 与 搜索功能搭配 https://github.com/next-theme/hexo-theme-next/blob/eb194a7258058302baf59f02d4b80b6655338b01/source/js/third-party/search/local-search.js\n// Question: 锚点稳定性未知\n// ToDo: 查找模式\n// 0. (/////////要知道浏览器自带全页面查找功能 CTRL + F)\n// 1. 右键开启查找模式 / 导航栏菜单开启?? / CTRL + F ???\n// 2. 查找模式面板 (可拖动? or 固定?)\n// 3. keyword mark id 从 0 开始编号 查找下一处 highlightKeyWords.scrollToNextHighlightKeywordMark() 查找上一处 scrollToPrevHighlightKeywordMark() 循环查找(取模%)\n// 4. 可输入修改 查找关键词 keywords(type:list)\n// 5. 区分大小写 caseSensitive (/ 全字匹配?? / 正则匹配??)\n// 6. 在选定区域中查找 querySelector ??\n// 7. 关闭查找模式\n// 8. 搜索跳转 (URL 入口) 自动开启查找模式 调用 scrollToNextHighlightKeywordMark()\nconst highlightKeyWords = (() => {\n let fn = {}\n fn.markNum = 0\n fn.markNextId = -1\n fn.startFromURL = () => {\n const params = decodeURI(new URL(location.href).searchParams.get('keyword'));\n const keywords = params ? params.split(' ') : [];\n const post = document.querySelector('#l_main');\n if (keywords.length == 1 && keywords[0] == \"null\") {\n return;\n }\n fn.start(keywords, post); // 渲染耗时较长\n fn.scrollToFirstHighlightKeywordMark()\n }\n fn.scrollToFirstHighlightKeywordMark = () => {\n volantis.cleanContentVisibility();\n let target = fn.scrollToNextHighlightKeywordMark(\"0\");\n if (!target) {\n volantis.requestAnimationFrame(fn.scrollToFirstHighlightKeywordMark)\n }\n }\n fn.scrollToNextHighlightKeywordMark = (id) => {\n // Next Id\n let input = id || (fn.markNextId + 1) % fn.markNum;\n fn.markNextId = parseInt(input)\n let target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n if (!target) {\n fn.markNextId = (fn.markNextId + 1) % fn.markNum;\n target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n }\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n // Current target\n return target\n }\n fn.scrollToPrevHighlightKeywordMark = (id) => {\n // Prev Id\n let input = id || (fn.markNextId - 1 + fn.markNum) % fn.markNum;\n fn.markNextId = parseInt(input)\n let target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n if (!target) {\n fn.markNextId = (fn.markNextId - 1 + fn.markNum) % fn.markNum;\n target = document.getElementById(\"keyword-mark-\" + fn.markNextId);\n }\n if (target) {\n volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })\n }\n // Current target\n return target\n }\n fn.start = (keywords, querySelector) => {\n fn.markNum = 0\n if (!keywords.length || !querySelector || (keywords.length == 1 && keywords[0] == \"null\")) return;\n console.log(keywords);\n const walk = document.createTreeWalker(querySelector, NodeFilter.SHOW_TEXT, null);\n const allNodes = [];\n while (walk.nextNode()) {\n if (!walk.currentNode.parentNode.matches('button, select, textarea')) allNodes.push(walk.currentNode);\n }\n allNodes.forEach(node => {\n const [indexOfNode] = fn.getIndexByWord(keywords, node.nodeValue);\n if (!indexOfNode.length) return;\n const slice = fn.mergeIntoSlice(0, node.nodeValue.length, indexOfNode);\n fn.highlightText(node, slice, 'keyword');\n fn.highlightStyle()\n });\n }\n fn.getIndexByWord = (words, text, caseSensitive = false) => {\n const index = [];\n const included = new Set();\n words.forEach(word => {\n const div = document.createElement('div');\n div.innerText = word;\n word = div.innerHTML;\n\n const wordLen = word.length;\n if (wordLen === 0) return;\n let startPosition = 0;\n let position = -1;\n if (!caseSensitive) {\n text = text.toLowerCase();\n word = word.toLowerCase();\n }\n while ((position = text.indexOf(word, startPosition)) > -1) {\n index.push({ position, word });\n included.add(word);\n startPosition = position + wordLen;\n }\n });\n index.sort((left, right) => {\n if (left.position !== right.position) {\n return left.position - right.position;\n }\n return right.word.length - left.word.length;\n });\n return [index, included];\n };\n fn.mergeIntoSlice = (start, end, index) => {\n let item = index[0];\n let { position, word } = item;\n const hits = [];\n const count = new Set();\n while (position + word.length <= end && index.length !== 0) {\n count.add(word);\n hits.push({\n position,\n length: word.length\n });\n const wordEnd = position + word.length;\n\n index.shift();\n while (index.length !== 0) {\n item = index[0];\n position = item.position;\n word = item.word;\n if (wordEnd > position) {\n index.shift();\n } else {\n break;\n }\n }\n }\n return {\n hits,\n start,\n end,\n count: count.size\n };\n };\n fn.highlightText = (node, slice, className) => {\n const val = node.nodeValue;\n let index = slice.start;\n const children = [];\n for (const { position, length } of slice.hits) {\n const text = document.createTextNode(val.substring(index, position));\n index = position + length;\n let mark = document.createElement('mark');\n mark.className = className;\n mark = fn.highlightStyle(mark)\n mark.appendChild(document.createTextNode(val.substr(position, length)));\n children.push(text, mark);\n }\n node.nodeValue = val.substring(index, slice.end);\n children.forEach(element => {\n node.parentNode.insertBefore(element, node);\n });\n }\n fn.highlightStyle = (mark) => {\n if (!mark) return;\n mark.id = \"keyword-mark-\" + fn.markNum;\n fn.markNum++;\n mark.style.background = \"transparent\";\n mark.style[\"border-bottom\"] = \"1px dashed #ff2a2a\";\n mark.style[\"color\"] = \"#ff2a2a\";\n mark.style[\"font-weight\"] = \"bold\";\n return mark\n }\n fn.cleanHighlightStyle = () => {\n document.querySelectorAll(\".keyword\").forEach(mark => {\n mark.style.background = \"transparent\";\n mark.style[\"border-bottom\"] = null;\n mark.style[\"color\"] = null;\n mark.style[\"font-weight\"] = null;\n })\n }\n return {\n start: (keywords, querySelector) => {\n fn.start(keywords, querySelector)\n },\n startFromURL: () => {\n fn.startFromURL()\n },\n scrollToNextHighlightKeywordMark: (id) => {\n fn.scrollToNextHighlightKeywordMark(id)\n },\n scrollToPrevHighlightKeywordMark: (id) => {\n fn.scrollToPrevHighlightKeywordMark(id)\n },\n cleanHighlightStyle: () => {\n fn.cleanHighlightStyle()\n },\n }\n})()\nObject.freeze(highlightKeyWords);\n\n/* DOM 控制 */\nconst DOMController = {\n /**\n * 控制元素显隐\n */\n visible: (ele, type = true) => {\n if (ele) ele.style.display = type === true ? 'block' : 'none';\n },\n\n /**\n * 移除元素\n */\n remove: (param) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.remove();\n })\n },\n\n removeList: (list) => {\n list.forEach(param => {\n DOMController.remove(param)\n })\n },\n\n /**\n * 设置属性\n */\n setAttribute: (param, attrName, attrValue) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.setAttribute(attrName, attrValue)\n })\n },\n\n setAttributeList: (list) => {\n list.forEach(item => {\n DOMController.setAttribute(item[0], item[1], item[2])\n })\n },\n\n /**\n * 设置样式\n */\n setStyle: (param, styleName, styleValue) => {\n const node = document.querySelectorAll(param);\n node.forEach(ele => {\n ele.style[styleName] = styleValue;\n })\n },\n\n setStyleList: (list) => {\n list.forEach(item => {\n DOMController.setStyle(item[0], item[1], item[2])\n })\n },\n\n fadeIn: (e) => {\n if (!e) return;\n e.style.visibility = \"visible\";\n e.style.opacity = 1;\n e.style.display = \"block\";\n e.style.transition = \"all 0.5s linear\";\n return e\n },\n\n fadeOut: (e) => {\n if (!e) return;\n e.style.visibility = \"hidden\";\n e.style.opacity = 0;\n e.style.display = \"none\";\n e.style.transition = \"all 0.5s linear\";\n return e\n },\n\n fadeToggle: (e) => {\n if (!e) return;\n if (e.style.visibility == \"hidden\") {\n e = DOMController.fadeIn(e)\n } else {\n e = DOMController.fadeOut(e)\n }\n return e\n },\n\n fadeToggleList: (list) => {\n list.forEach(param => {\n DOMController.fadeToggle(param)\n })\n },\n\n hasClass: (e, c) => {\n if (!e) return;\n return e.className.match(new RegExp('(\\\\s|^)' + c + '(\\\\s|$)'));\n },\n\n addClass: (e, c) => {\n if (!e) return;\n e.classList.add(c);\n return e\n },\n\n removeClass: (e, c) => {\n if (!e) return;\n e.classList.remove(c);\n return e\n },\n\n toggleClass: (e, c) => {\n if (!e) return;\n if (DOMController.hasClass(e, c)) {\n DOMController.removeClass(e, c)\n } else {\n DOMController.addClass(e, c)\n }\n return e\n },\n\n toggleClassList: (list) => {\n list.forEach(item => {\n DOMController.toggleClass(item[0], item[1])\n })\n }\n}\nObject.freeze(DOMController);\n\nconst VolantisRequest = {\n timeoutFetch: (url, ms, requestInit) => {\n const controller = new AbortController()\n requestInit.signal?.addEventListener('abort', () => controller.abort())\n let promise = fetch(url, { ...requestInit, signal: controller.signal })\n if (ms > 0) {\n const timer = setTimeout(() => controller.abort(), ms)\n promise.finally(() => { clearTimeout(timer) })\n }\n promise = promise.catch((err) => {\n throw ((err || {}).name === 'AbortError') ? new Error(`Fetch timeout: ${url}`) : err\n })\n return promise\n },\n\n Fetch: async (url, requestInit, timeout = 15000) => {\n const resp = await VolantisRequest.timeoutFetch(url, timeout, requestInit);\n if (!resp.ok) throw new Error(`Fetch error: ${url} | ${resp.status}`);\n let json = await resp.json()\n if (!json.success) throw json\n return json\n },\n\n POST: async (url, data) => {\n const requestInit = {\n method: 'POST',\n }\n if (data) {\n const formData = new FormData();\n Object.keys(data).forEach(key => formData.append(key, String(data[key])))\n requestInit.body = formData;\n }\n const json = await VolantisRequest.Fetch(url, requestInit)\n return json.data;\n },\n\n Get: async (url, data) => {\n const json = await VolantisRequest.Fetch(url + (data ? (`?${new URLSearchParams(data)}`) : ''), {\n method: 'GET'\n })\n }\n}\nObject.freeze(VolantisRequest);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/plugins/aplayer.js"],"names":["RightMenuAplayer","playStatus","APlayer","fn","undefined","player","setAPlayerObject","observer","setAPlayerObserver","meting","document","querySelectorAll","length","forEach","item","index","meta","id","volantis","GLOBAL_CONFIG","plugins","aplayer","updateTitle","on","e","updateAPlayerControllerStatus","status","onUpdateAPlayerVolume","volumeBarWrap","getElementsByClassName","children","volumeBar","thumbMove","updateAPlayerVolume","thumbUp","classList","remove","removeEventListener","addEventListener","event","stopPropagation","add","error","console","log","percentage","clientX","changedTouches","getBoundingClientRect","left","clientWidth","Math","max","min","volume","style","width","audio","paused","checkAPlayer","toggle","skipBack","play","skipForward","percent","list","obj","audios","innerHTML","title","aplayerBackward","aplayerToggle","aplayerForward","Object","freeze","requestAnimationFrame"],"mappings":"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","file":"../../../js/plugins/aplayer.js","sourcesContent":["/**\n * 右键音乐\n * */\nconst RightMenuAplayer = (() => {\n let playStatus; // 播放器状态\n const APlayer = {}; // 右键音乐所控制的播放器\n const fn = {};\n\n fn.checkAPlayer = () => {\n if (playStatus === undefined || APlayer.player === undefined) {\n fn.setAPlayerObject();\n } else if (APlayer.observer === undefined) {\n fn.setAPlayerObserver();\n }\n }\n\n // 设置全局播放器所对应的 aplyer 对象\n fn.setAPlayerObject = () => {\n let meting = document.querySelectorAll('.footer meting-js');\n if (meting.length == 0) {\n meting = document.querySelectorAll('meting-js');\n }\n APlayer.player = undefined;\n meting.forEach((item, index) => {\n if (item.meta.id == volantis.GLOBAL_CONFIG.plugins.aplayer.id && item.aplayer && APlayer.player === undefined) {\n APlayer.player = item.aplayer;\n fn.setAPlayerObserver();\n fn.updateTitle();\n }\n });\n }\n\n // 事件监听\n fn.setAPlayerObserver = () => {\n try {\n APlayer.player.on('play', function (e) {\n fn.updateAPlayerControllerStatus(e);\n APlayer.status = 'play';\n });\n APlayer.player.on('pause', function (e) {\n fn.updateAPlayerControllerStatus(e);\n APlayer.status = 'pause';\n });\n APlayer.player.on('volumechange', function (e) {\n fn.onUpdateAPlayerVolume(e);\n });\n APlayer.player.on('loadstart', function (e) {\n fn.updateTitle(e);\n });\n\n // 监听音量手势\n APlayer.volumeBarWrap = document.getElementsByClassName('nav volume')[0].children[0];\n APlayer.volumeBar = APlayer.volumeBarWrap.children[0];\n\n const thumbMove = (e) => {\n fn.updateAPlayerVolume(e);\n };\n\n const thumbUp = (e) => {\n APlayer.volumeBarWrap.classList.remove('aplayer-volume-bar-wrap-active');\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n fn.updateAPlayerVolume(e);\n };\n\n APlayer.volumeBarWrap.addEventListener('mousedown', (event) => {\n event.stopPropagation();\n APlayer.volumeBarWrap.classList.add('aplayer-volume-bar-wrap-active');\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n\n APlayer.volumeBarWrap.addEventListener('click', (event) => {\n event.stopPropagation();\n });\n\n fn.updateAPlayerControllerStatus();\n fn.onUpdateAPlayerVolume();\n APlayer.observer = true;\n } catch (error) {\n console.log(error);\n APlayer.observer = undefined;\n }\n }\n\n fn.updateAPlayerVolume = (e) => {\n let percentage = ((e.clientX || e.changedTouches[0].clientX) -\n APlayer.volumeBar.getBoundingClientRect().left) / APlayer.volumeBar.clientWidth;\n percentage = Math.max(percentage, 0);\n percentage = Math.min(percentage, 1);\n APlayer.player.volume(percentage);\n }\n\n fn.onUpdateAPlayerVolume = () => {\n try {\n APlayer.volumeBar.children[0].style.width = APlayer.player.audio.volume * 100 + '%';\n } catch (error) {\n console.log(error);\n }\n }\n\n // 更新控制器状态\n fn.updateAPlayerControllerStatus = () => {\n try {\n if (APlayer.player.audio.paused) {\n playStatus = 'pause';\n document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-play');\n document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-pause');\n } else {\n playStatus = 'play';\n document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-play');\n document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-pause');\n }\n } catch (error) {\n console.log(error);\n }\n }\n\n // 播放/暂停\n fn.aplayerToggle = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.toggle();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 上一曲\n fn.aplayerBackward = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.skipBack();\n APlayer.player.play();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 下一曲\n fn.aplayerForward = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.skipForward();\n APlayer.player.play();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 调节音量\n fn.aplayerVolume = (percent) => {\n fn.checkAPlayer();\n try {\n APlayer.player.volume(percent);\n } catch (error) {\n console.log(error);\n }\n }\n\n // 更新音乐标题\n fn.updateTitle = () => {\n fn.checkAPlayer();\n try {\n const index = APlayer.player.list.index;\n const obj = APlayer.player.list.audios[index];\n document.getElementsByClassName('nav music-title')[0].innerHTML = obj.title;\n } catch (error) {\n //console.log(error);\n }\n }\n\n return {\n checkAPlayer: fn.checkAPlayer,\n aplayerBackward: fn.aplayerBackward,\n aplayerToggle: fn.aplayerToggle,\n aplayerForward: fn.aplayerForward,\n APlayer: APlayer\n }\n})()\n\nObject.freeze(RightMenuAplayer);\n\nvolantis.requestAnimationFrame(() => {\n RightMenuAplayer.checkAPlayer();\n});\n"]}
1
+ {"version":3,"sources":["js/plugins/aplayer.js"],"names":["RightMenuAplayer","playStatus","APlayer","fn","undefined","player","setAPlayerObject","observer","setAPlayerObserver","meting","document","querySelectorAll","length","forEach","item","index","meta","id","volantis","GLOBAL_CONFIG","plugins","aplayer","updateTitle","on","e","updateAPlayerControllerStatus","status","onUpdateAPlayerVolume","volumeBarWrap","getElementsByClassName","children","volumeBar","thumbMove","updateAPlayerVolume","thumbUp","classList","remove","removeEventListener","addEventListener","event","stopPropagation","add","error","console","log","percentage","clientX","changedTouches","getBoundingClientRect","left","clientWidth","Math","max","min","volume","style","width","audio","paused","checkAPlayer","toggle","skipBack","play","skipForward","percent","list","obj","audios","innerHTML","title","aplayerBackward","aplayerToggle","aplayerForward","Object","freeze","requestAnimationFrame"],"mappings":"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","file":"../../../js/plugins/aplayer.js","sourcesContent":["/**\n * 右键音乐\n * */\nconst RightMenuAplayer = (() => {\n let playStatus; // 播放器状态\n const APlayer = {}; // 右键音乐所控制的播放器\n const fn = {};\n\n fn.checkAPlayer = () => {\n if (playStatus === undefined || APlayer.player === undefined) {\n fn.setAPlayerObject();\n } else if (APlayer.observer === undefined) {\n fn.setAPlayerObserver();\n }\n }\n\n // 设置全局播放器所对应的 aplyer 对象\n fn.setAPlayerObject = () => {\n let meting = document.querySelectorAll('.footer meting-js');\n if (meting.length == 0) {\n meting = document.querySelectorAll('meting-js');\n }\n APlayer.player = undefined;\n meting.forEach((item, index) => {\n if (item.meta.id == volantis.GLOBAL_CONFIG.plugins.aplayer.id && item.aplayer && APlayer.player === undefined) {\n APlayer.player = item.aplayer;\n fn.setAPlayerObserver();\n fn.updateTitle();\n }\n });\n }\n\n // 事件监听\n fn.setAPlayerObserver = () => {\n try {\n APlayer.player.on('play', function (e) {\n fn.updateAPlayerControllerStatus(e);\n APlayer.status = 'play';\n });\n APlayer.player.on('pause', function (e) {\n fn.updateAPlayerControllerStatus(e);\n APlayer.status = 'pause';\n });\n APlayer.player.on('volumechange', function (e) {\n fn.onUpdateAPlayerVolume(e);\n });\n APlayer.player.on('loadstart', function (e) {\n fn.updateTitle(e);\n });\n\n // 监听音量手势\n APlayer.volumeBarWrap = document.getElementsByClassName('nav volume')[0].children[0];\n APlayer.volumeBar = APlayer.volumeBarWrap.children[0];\n\n const thumbMove = (e) => {\n fn.updateAPlayerVolume(e);\n };\n\n const thumbUp = (e) => {\n APlayer.volumeBarWrap.classList.remove('aplayer-volume-bar-wrap-active');\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n fn.updateAPlayerVolume(e);\n };\n\n APlayer.volumeBarWrap.addEventListener('mousedown', (event) => {\n event.stopPropagation();\n APlayer.volumeBarWrap.classList.add('aplayer-volume-bar-wrap-active');\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n\n APlayer.volumeBarWrap.addEventListener('click', (event) => {\n event.stopPropagation();\n });\n\n fn.updateAPlayerControllerStatus();\n fn.onUpdateAPlayerVolume();\n APlayer.observer = true;\n } catch (error) {\n console.log(error);\n APlayer.observer = undefined;\n }\n }\n\n fn.updateAPlayerVolume = (e) => {\n let percentage = ((e.clientX || e.changedTouches[0].clientX) -\n APlayer.volumeBar.getBoundingClientRect().left) / APlayer.volumeBar.clientWidth;\n percentage = Math.max(percentage, 0);\n percentage = Math.min(percentage, 1);\n APlayer.player.volume(percentage);\n }\n\n fn.onUpdateAPlayerVolume = () => {\n try {\n APlayer.volumeBar.children[0].style.width = APlayer.player.audio.volume * 100 + '%';\n } catch (error) {\n console.log(error);\n }\n }\n\n // 更新控制器状态\n fn.updateAPlayerControllerStatus = () => {\n try {\n if (APlayer.player.audio.paused) {\n playStatus = 'pause';\n document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-play');\n document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-pause');\n } else {\n playStatus = 'play';\n document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-play');\n document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-pause');\n }\n } catch (error) {\n console.log(error);\n }\n }\n\n // 播放/暂停\n fn.aplayerToggle = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.toggle();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 上一曲\n fn.aplayerBackward = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.skipBack();\n APlayer.player.play();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 下一曲\n fn.aplayerForward = () => {\n fn.checkAPlayer();\n try {\n APlayer.player.skipForward();\n APlayer.player.play();\n } catch (error) {\n console.log(error);\n }\n }\n\n // 调节音量\n fn.aplayerVolume = (percent) => {\n fn.checkAPlayer();\n try {\n APlayer.player.volume(percent);\n } catch (error) {\n console.log(error);\n }\n }\n\n // 更新音乐标题\n fn.updateTitle = () => {\n fn.checkAPlayer();\n try {\n const index = APlayer.player.list.index;\n const obj = APlayer.player.list.audios[index];\n document.getElementsByClassName('nav music-title')[0].innerHTML = obj.title;\n } catch (error) {\n //console.log(error);\n }\n }\n\n return {\n checkAPlayer: fn.checkAPlayer,\n aplayerBackward: fn.aplayerBackward,\n aplayerToggle: fn.aplayerToggle,\n aplayerForward: fn.aplayerForward,\n APlayer: APlayer\n }\n})()\n\nObject.freeze(RightMenuAplayer);\n\nvolantis.requestAnimationFrame(() => {\n RightMenuAplayer.checkAPlayer();\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/plugins/parallax.js"],"names":["Parallax","options","speed","zIndex","fade","slidein","slider","mirrors","length","opac","parseFloat","style","opacity","setTimeout","mirror","remove","shift","start","document","createElement","classList","add","visibility","position","top","left","overflow","window","appendChild","src","alt","mirrorItem","push","addEventListener","update","init","loadDimensions","wH","documentElement","clientHeight","wW","clientWidth","getScrollTop","scrollPos","pageYOffset","compatMode","scrollTop","body","lastPosition","loop","winScrollTop","yoffset","sT","Math","max","sL","scrollLeft","overScroll","min","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","refreshItem","aspectRatio","naturalWidth","naturalHeight","aspect","boxWidth","boxHeight","boxOffsetTop","boxOffsetLeft","boxOffsetBottom","margin","winHeight","maxOffset","minOffset","imageHeightMin","imageOffsetMin","imageWidth","imageHeight","offsetBaseTop","offsetLeft","renderItem","scrollBottom","mirrorTop","mirrorLeft","offsetTop","transform","height","width","maxWidth","forEach","e"],"mappings":"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","file":"../../../js/plugins/parallax.js","sourcesContent":["let Parallax = {};\nParallax.options = {};\nParallax.options.speed = 0.25;\nParallax.options.zIndex = -100;\nParallax.options.fade = 1500;\nParallax.slidein = () => {\n let slider = Parallax.mirrors[0].slider;\n if (Parallax.mirrors.length >= 2) {\n slider = Parallax.mirrors[1].slider;\n }\n var opac = parseFloat(slider.style.opacity);\n if (opac !== 1) {\n if (Parallax.mirrors.length >= 2) {\n opac = opac + 0.1;\n slider.style.opacity = opac;\n setTimeout(Parallax.slidein, Parallax.options.fade / 10);\n }else{\n slider.style.opacity = 1;\n }\n } else {\n if (Parallax.mirrors.length >= 2) {\n Parallax.mirrors[0].mirror.remove();\n Parallax.mirrors.shift();\n }\n }\n};\nParallax.start = () => {\n let mirror = document.createElement(\"div\");\n mirror.classList.add(\"parallax-mirror\");\n mirror.style.visibility = \"hidden\";\n mirror.style.zIndex = Parallax.options.zIndex;\n mirror.style.position = \"fixed\";\n mirror.style.top = 0;\n mirror.style.left = 0;\n mirror.style.overflow = \"hidden\";\n Parallax.window.appendChild(mirror);\n let slider = document.createElement(\"img\");\n slider.src = Parallax.options.src;\n slider.alt = \"parallax\";\n slider.classList.add(\"parallax-slider\");\n slider.style.opacity = 0;\n mirror.appendChild(slider);\n if (!Parallax.mirrors) {\n Parallax.mirrors = [];\n }\n let mirrorItem = {};\n mirrorItem.mirror = mirror;\n mirrorItem.slider = slider;\n Parallax.mirrors.push(mirrorItem);\n Parallax.slidein();\n slider.addEventListener(\n \"load\",\n function () {\n Parallax.update();\n },\n false\n );\n};\nParallax.init = () => {\n function loadDimensions() {\n Parallax.wH = document.documentElement.clientHeight;\n Parallax.wW = document.documentElement.clientWidth;\n }\n function getScrollTop() {\n var scrollPos;\n if (window.pageYOffset) {\n scrollPos = window.pageYOffset;\n } else if (document.compatMode && document.compatMode != \"BackCompat\") {\n scrollPos = document.documentElement.scrollTop;\n } else if (document.body) {\n scrollPos = document.body.scrollTop;\n }\n return scrollPos;\n }\n function loadScrollPosition() {\n const winScrollTop = getScrollTop();\n Parallax.sT = Math.max(0, winScrollTop);\n Parallax.sL = Math.max(0, document.body.scrollLeft);\n Parallax.overScroll = Math.min(winScrollTop, 0);\n }\n window.addEventListener(\n \"resize\",\n function () {\n loadDimensions();\n Parallax.update();\n },\n false\n );\n loadDimensions();\n let lastPosition = -1;\n (function loop() {\n const yoffset = getScrollTop();\n if (lastPosition !== yoffset) {\n lastPosition = yoffset;\n loadScrollPosition();\n Parallax.update();\n }\n window.requestAnimationFrame =\n window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n window.requestAnimationFrame(loop);\n })();\n};\n\nParallax.refreshItem = (slider) => {\n Parallax.options.aspectRatio =\n slider.naturalWidth / (slider.naturalHeight || 1);\n const aspect = Parallax.options.aspectRatio || 1;\n Parallax.options.boxWidth = Parallax.window.clientWidth;\n Parallax.options.boxHeight = Parallax.window.clientHeight;\n Parallax.options.boxOffsetTop = Parallax.window.scrollTop;\n Parallax.options.boxOffsetLeft = Parallax.window.scrollLeft;\n Parallax.options.boxOffsetBottom =\n Parallax.options.boxOffsetTop + Parallax.options.boxHeight;\n const winHeight = Parallax.wH;\n const maxOffset = Parallax.options.boxOffsetTop;\n const minOffset = Math.max(\n Parallax.options.boxOffsetTop + Parallax.options.boxHeight - winHeight,\n 0\n );\n const imageHeightMin =\n (Parallax.options.boxHeight +\n (maxOffset - minOffset) * (1 - Parallax.options.speed)) |\n 0;\n const imageOffsetMin =\n ((Parallax.options.boxOffsetTop - maxOffset) *\n (1 - Parallax.options.speed)) |\n 0;\n let margin;\n if (Parallax.options.boxWidth < imageHeightMin * aspect) {\n Parallax.options.imageWidth = (imageHeightMin * aspect) | 0;\n Parallax.options.imageHeight = imageHeightMin;\n Parallax.options.offsetBaseTop = imageOffsetMin;\n margin = Parallax.options.imageWidth - Parallax.options.boxWidth;\n Parallax.options.offsetLeft = (-margin / 2) | 0;\n } else {\n Parallax.options.imageWidth = Parallax.options.boxWidth;\n Parallax.options.imageHeight = (Parallax.options.boxWidth / aspect) | 0;\n Parallax.options.offsetLeft = 0;\n margin = Parallax.options.imageHeight - imageHeightMin;\n Parallax.options.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;\n }\n};\nParallax.renderItem = (mirror, slider) => {\n const scrollTop = Parallax.sT;\n const scrollLeft = Parallax.sL;\n const scrollBottom = scrollTop + Parallax.wH;\n if (\n Parallax.options.boxOffsetBottom > scrollTop &&\n Parallax.options.boxOffsetTop <= scrollBottom\n ) {\n Parallax.options.visibility = \"visible\";\n Parallax.options.mirrorTop = Parallax.options.boxOffsetTop - scrollTop;\n Parallax.options.mirrorLeft = Parallax.options.boxOffsetLeft - scrollLeft;\n Parallax.options.offsetTop =\n Parallax.options.offsetBaseTop -\n Parallax.options.mirrorTop * (1 - Parallax.options.speed);\n } else {\n Parallax.options.visibility = \"hidden\";\n }\n mirror.style.transform =\n \"translate3d(\" +\n Parallax.options.mirrorLeft +\n \"px, \" +\n Parallax.options.mirrorTop +\n \"px, 0px)\";\n mirror.style.visibility = Parallax.options.visibility;\n mirror.style.height = Parallax.options.boxHeight + \"px\";\n mirror.style.width = Parallax.options.boxWidth + \"px\";\n\n slider.style.transform =\n \"translate3d(\" +\n Parallax.options.offsetLeft +\n \"px, \" +\n Parallax.options.offsetTop +\n \"px, 0px)\";\n slider.style.position = \"absolute\";\n slider.style.height = Parallax.options.imageHeight + \"px\";\n slider.style.width = Parallax.options.imageWidth + \"px\";\n slider.style.maxWidth = \"none\";\n};\nParallax.update = () => {\n if (!Parallax.mirrors) {\n return\n }\n Parallax.mirrors.forEach((e) => {\n Parallax.refreshItem(e.slider);\n Parallax.renderItem(e.mirror, e.slider);\n });\n};\n"]}
1
+ {"version":3,"sources":["js/plugins/parallax.js"],"names":["Parallax","options","speed","zIndex","fade","slidein","slider","mirrors","length","opac","parseFloat","style","opacity","setTimeout","mirror","remove","shift","start","document","createElement","classList","add","visibility","position","top","left","overflow","window","appendChild","src","alt","mirrorItem","push","addEventListener","update","init","loadDimensions","wH","documentElement","clientHeight","wW","clientWidth","getScrollTop","scrollPos","pageYOffset","compatMode","scrollTop","body","lastPosition","loop","winScrollTop","yoffset","sT","Math","max","sL","scrollLeft","overScroll","min","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","refreshItem","aspectRatio","naturalWidth","naturalHeight","aspect","boxWidth","boxHeight","boxOffsetTop","boxOffsetLeft","boxOffsetBottom","margin","winHeight","maxOffset","minOffset","imageHeightMin","imageOffsetMin","imageWidth","imageHeight","offsetBaseTop","offsetLeft","renderItem","scrollBottom","mirrorTop","mirrorLeft","offsetTop","transform","height","width","maxWidth","forEach","e"],"mappings":"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","file":"../../../js/plugins/parallax.js","sourcesContent":["let Parallax = {};\nParallax.options = {};\nParallax.options.speed = 0.25;\nParallax.options.zIndex = -100;\nParallax.options.fade = 1500;\nParallax.slidein = () => {\n let slider = Parallax.mirrors[0].slider;\n if (Parallax.mirrors.length >= 2) {\n slider = Parallax.mirrors[1].slider;\n }\n var opac = parseFloat(slider.style.opacity);\n if (opac !== 1) {\n if (Parallax.mirrors.length >= 2) {\n opac = opac + 0.1;\n slider.style.opacity = opac;\n setTimeout(Parallax.slidein, Parallax.options.fade / 10);\n }else{\n slider.style.opacity = 1;\n }\n } else {\n if (Parallax.mirrors.length >= 2) {\n Parallax.mirrors[0].mirror.remove();\n Parallax.mirrors.shift();\n }\n }\n};\nParallax.start = () => {\n let mirror = document.createElement(\"div\");\n mirror.classList.add(\"parallax-mirror\");\n mirror.style.visibility = \"hidden\";\n mirror.style.zIndex = Parallax.options.zIndex;\n mirror.style.position = \"fixed\";\n mirror.style.top = 0;\n mirror.style.left = 0;\n mirror.style.overflow = \"hidden\";\n Parallax.window.appendChild(mirror);\n let slider = document.createElement(\"img\");\n slider.src = Parallax.options.src;\n slider.alt = \"parallax\";\n slider.classList.add(\"parallax-slider\");\n slider.style.opacity = 0;\n mirror.appendChild(slider);\n if (!Parallax.mirrors) {\n Parallax.mirrors = [];\n }\n let mirrorItem = {};\n mirrorItem.mirror = mirror;\n mirrorItem.slider = slider;\n Parallax.mirrors.push(mirrorItem);\n Parallax.slidein();\n slider.addEventListener(\n \"load\",\n function () {\n Parallax.update();\n },\n false\n );\n};\nParallax.init = () => {\n function loadDimensions() {\n Parallax.wH = document.documentElement.clientHeight;\n Parallax.wW = document.documentElement.clientWidth;\n }\n function getScrollTop() {\n var scrollPos;\n if (window.pageYOffset) {\n scrollPos = window.pageYOffset;\n } else if (document.compatMode && document.compatMode != \"BackCompat\") {\n scrollPos = document.documentElement.scrollTop;\n } else if (document.body) {\n scrollPos = document.body.scrollTop;\n }\n return scrollPos;\n }\n function loadScrollPosition() {\n const winScrollTop = getScrollTop();\n Parallax.sT = Math.max(0, winScrollTop);\n Parallax.sL = Math.max(0, document.body.scrollLeft);\n Parallax.overScroll = Math.min(winScrollTop, 0);\n }\n window.addEventListener(\n \"resize\",\n function () {\n loadDimensions();\n Parallax.update();\n },\n false\n );\n loadDimensions();\n let lastPosition = -1;\n (function loop() {\n const yoffset = getScrollTop();\n if (lastPosition !== yoffset) {\n lastPosition = yoffset;\n loadScrollPosition();\n Parallax.update();\n }\n window.requestAnimationFrame =\n window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n window.requestAnimationFrame(loop);\n })();\n};\n\nParallax.refreshItem = (slider) => {\n Parallax.options.aspectRatio =\n slider.naturalWidth / (slider.naturalHeight || 1);\n const aspect = Parallax.options.aspectRatio || 1;\n Parallax.options.boxWidth = Parallax.window.clientWidth;\n Parallax.options.boxHeight = Parallax.window.clientHeight;\n Parallax.options.boxOffsetTop = Parallax.window.scrollTop;\n Parallax.options.boxOffsetLeft = Parallax.window.scrollLeft;\n Parallax.options.boxOffsetBottom =\n Parallax.options.boxOffsetTop + Parallax.options.boxHeight;\n const winHeight = Parallax.wH;\n const maxOffset = Parallax.options.boxOffsetTop;\n const minOffset = Math.max(\n Parallax.options.boxOffsetTop + Parallax.options.boxHeight - winHeight,\n 0\n );\n const imageHeightMin =\n (Parallax.options.boxHeight +\n (maxOffset - minOffset) * (1 - Parallax.options.speed)) |\n 0;\n const imageOffsetMin =\n ((Parallax.options.boxOffsetTop - maxOffset) *\n (1 - Parallax.options.speed)) |\n 0;\n let margin;\n if (Parallax.options.boxWidth < imageHeightMin * aspect) {\n Parallax.options.imageWidth = (imageHeightMin * aspect) | 0;\n Parallax.options.imageHeight = imageHeightMin;\n Parallax.options.offsetBaseTop = imageOffsetMin;\n margin = Parallax.options.imageWidth - Parallax.options.boxWidth;\n Parallax.options.offsetLeft = (-margin / 2) | 0;\n } else {\n Parallax.options.imageWidth = Parallax.options.boxWidth;\n Parallax.options.imageHeight = (Parallax.options.boxWidth / aspect) | 0;\n Parallax.options.offsetLeft = 0;\n margin = Parallax.options.imageHeight - imageHeightMin;\n Parallax.options.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;\n }\n};\nParallax.renderItem = (mirror, slider) => {\n const scrollTop = Parallax.sT;\n const scrollLeft = Parallax.sL;\n const scrollBottom = scrollTop + Parallax.wH;\n if (\n Parallax.options.boxOffsetBottom > scrollTop &&\n Parallax.options.boxOffsetTop <= scrollBottom\n ) {\n Parallax.options.visibility = \"visible\";\n Parallax.options.mirrorTop = Parallax.options.boxOffsetTop - scrollTop;\n Parallax.options.mirrorLeft = Parallax.options.boxOffsetLeft - scrollLeft;\n Parallax.options.offsetTop =\n Parallax.options.offsetBaseTop -\n Parallax.options.mirrorTop * (1 - Parallax.options.speed);\n } else {\n Parallax.options.visibility = \"hidden\";\n }\n mirror.style.transform =\n \"translate3d(\" +\n Parallax.options.mirrorLeft +\n \"px, \" +\n Parallax.options.mirrorTop +\n \"px, 0px)\";\n mirror.style.visibility = Parallax.options.visibility;\n mirror.style.height = Parallax.options.boxHeight + \"px\";\n mirror.style.width = Parallax.options.boxWidth + \"px\";\n\n slider.style.transform =\n \"translate3d(\" +\n Parallax.options.offsetLeft +\n \"px, \" +\n Parallax.options.offsetTop +\n \"px, 0px)\";\n slider.style.position = \"absolute\";\n slider.style.height = Parallax.options.imageHeight + \"px\";\n slider.style.width = Parallax.options.imageWidth + \"px\";\n slider.style.maxWidth = \"none\";\n};\nParallax.update = () => {\n if (!Parallax.mirrors) {\n return\n }\n Parallax.mirrors.forEach((e) => {\n Parallax.refreshItem(e.slider);\n Parallax.renderItem(e.mirror, e.slider);\n });\n};\n"]}