@mlikiowa/nanaeo 1.0.1721901941006 → 1.0.1725627924716
Sign up to get free protection for your applications and to get access to all the features.
- package/2022/08/04/NewBlog/index.html +1 -1
- package/2022/08/13/GaussWave/index.html +1 -1
- package/2023/12/30/2023end/index.html +1 -1
- package/about/index.html +1 -1
- package/archives/2022/08/index.html +1 -1
- package/archives/2022/index.html +1 -1
- package/archives/2023/12/index.html +1 -1
- package/archives/2023/index.html +1 -1
- package/archives/index.html +1 -1
- package/categories/DevLog/index.html +1 -1
- package/categories/SiteLog/index.html +1 -1
- package/categories/index.html +1 -1
- package/content.json +1 -1
- package/friends/index.html +1 -1
- package/index.html +1 -1
- package/js/plugins/aplayer.js +1 -1
- package/maps/js/app.js.map +1 -1
- package/maps/js/plugins/aplayer.js.map +1 -1
- package/maps/js/plugins/rightMenus.js.map +1 -1
- package/package.json +1 -1
- package/tags/DevLog/index.html +1 -1
- package/tags/Gauss/index.html +1 -1
- package/tags/Hexo/index.html +1 -1
- package/tags/HexoThemes/index.html +1 -1
- package/tags/SiteLog/index.html +1 -1
- package/tags/index.html +1 -1
- package/volantis-sw.js +1 -1
package/maps/js/app.js.map
CHANGED
@@ -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","_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","_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","_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 +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":"AAAA,aAGA,IAAMA,iBAAoB,WACxB,IAAIC,EACEC,EAAU,CAAC,EACXC,EAAK,CAEXA,aAAkB,WACZF,IAAeG,WAAaF,EAAQG,SAAWD,UACjDD,EAAGG,mBACMJ,EAAQK,WAAaH,WAC9BD,EAAGK,oBAEP,EAGAL,iBAAsB,WACpB,IAAIM,EAASC,SAASC,iBAAiB,qBAClB,GAAjBF,EAAOG,SACTH,EAASC,SAASC,iBAAiB,cAErCT,EAAQG,OAASD,UACjBK,EAAOI,SAAQ,SAACC,EAAMC,GAChBD,EAAKE,KAAKC,IAAMC,SAASC,cAAcC,QAAQC,QAAQJ,IAAMH,EAAKO,SAAWnB,EAAQG,SAAWD,YAClGF,EAAQG,OAASS,EAAKO,QACtBlB,EAAGK,qBACHL,EAAGmB,cAEP,GACF,EAGAnB,mBAAwB,WACtB,IACED,EAAQG,OAAOkB,GAAG,QAAQ,SAAUC,GAClCrB,EAAGsB,8BAA8BD,GACjCtB,EAAQwB,OAAS,MACnB,IACAxB,EAAQG,OAAOkB,GAAG,SAAS,SAAUC,GACnCrB,EAAGsB,8BAA8BD,GACjCtB,EAAQwB,OAAS,OACnB,IACAxB,EAAQG,OAAOkB,GAAG,gBAAgB,SAAUC,GAC1CrB,EAAGwB,sBAAsBH,EAC3B,IACAtB,EAAQG,OAAOkB,GAAG,aAAa,SAAUC,GACvCrB,EAAGmB,YAAYE,EACjB,IAGAtB,EAAQ0B,cAAgBlB,SAASmB,uBAAuB,cAAc,GAAGC,SAAS,GAClF5B,EAAQ6B,UAAY7B,EAAQ0B,cAAcE,SAAS,GAEnD,IAAME,EAAY,SAACR,GACjBrB,EAAG8B,oBAAoBT,EACzB,EAEMU,EAAU,
|
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"]}
|