@mlikiowa/nanaeo 1.0.1705286904807 → 1.0.1712581733047

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) 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 -0
  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/atom.xml +3 -3
  11. package/categories/DevLog/index.html +1 -1
  12. package/categories/SiteLog/index.html +1 -1
  13. package/categories/index.html +1 -1
  14. package/category/devlog/atom.xml +3 -3
  15. package/category/devlog/feed.json +3 -3
  16. package/category/devlog/rss.xml +3 -3
  17. package/content.json +1 -1
  18. package/feed.json +3 -3
  19. package/friends/index.html +1 -1
  20. package/index.html +1 -1
  21. package/js/app.js +1 -1
  22. package/js/plugins/rightMenu.js +1 -1
  23. package/js/plugins/rightMenus.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/rightMenu.js.map +1 -1
  27. package/maps/js/plugins/rightMenus.js.map +1 -1
  28. package/maps/js/search/hexo.js.map +1 -1
  29. package/maps/volantis-sw.js.map +1 -1
  30. package/package.json +1 -1
  31. package/rss.xml +3 -3
  32. package/tag/devlog/atom.xml +3 -3
  33. package/tag/devlog/feed.json +3 -3
  34. package/tag/devlog/rss.xml +3 -3
  35. package/tag/gauss/atom.xml +3 -3
  36. package/tag/gauss/feed.json +3 -3
  37. package/tag/gauss/rss.xml +3 -3
  38. package/tags/DevLog/index.html +1 -1
  39. package/tags/Gauss/index.html +1 -1
  40. package/tags/Hexo/index.html +1 -1
  41. package/tags/HexoThemes/index.html +1 -1
  42. package/tags/SiteLog/index.html +1 -1
  43. package/tags/index.html +1 -1
  44. package/volantis-sw.js +1 -1
  45. package/2023/12/30/2024/index.html +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["js/app.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_regeneratorRuntime","e","t","r","Object","n","hasOwnProperty","defineProperty","value","i","a","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","normalCompletion","didErr","step","_e3","minLen","_arrayLikeToArray","toString","from","test","len","arr2","obj","_toPropertyKey","_toPrimitive","String","toPrimitive","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","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","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","dateTimeStamp","minute","hour","day","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","elementHandling","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","_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","_regeneratorRuntime","e","t","r","Object","n","hasOwnProperty","defineProperty","value","i","a","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","normalCompletion","didErr","step","_e3","minLen","_arrayLikeToArray","toString","from","test","len","arr2","obj","_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","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","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","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","elementHandling","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","_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"]}