2024-05-07 12:31:42 +08:00

1 line
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(()=>{var __webpack_modules__={"./src/js/common.js":()=>{eval("window.encrypt = (str) => window.btoa(unescape(encodeURIComponent(str)))\r\nwindow.decrypt = (str) => decodeURIComponent(escape(window.atob(str)))\r\n\r\nconst commonContext = {\r\n /* 初始化widget */\r\n initWidget() {\r\n const $columnRight = $('.columns .column-right')\r\n const $columnRightShadow = $('.columns .column-right-shadow')\r\n // 实现将右边widget拷贝的左边\r\n if ($columnRight.length && $columnRightShadow.length && !$columnRightShadow[0].children.length) {\r\n for (const child of $columnRight[0].children) {\r\n $columnRightShadow[0].append(child.cloneNode(true))\r\n }\r\n }\r\n },\r\n /* 初始化目录和公告模块 */\r\n initTocAndNotice() {\r\n const {pathname} = location\r\n window.tocPjax && window.tocPjax()\r\n let hideToc = $('.widget.toc .card-content ul').length === 0\r\n let hideNotice = (DreamConfig.notice_show_mode === 'toc' && !hideToc)\r\n || (DreamConfig.notice_show_mode === 'index' && pathname !== '/')\r\n if (hideToc) {\r\n $('.widget.toc,.action-toc').addClass('is-hidden-all')\r\n } else {\r\n $('.widget.toc,.action-toc').removeClass('is-hidden-all')\r\n }\r\n if (hideNotice) {\r\n $('.widget.notice').addClass('is-hidden-all')\r\n } else {\r\n $('.widget.notice').removeClass('is-hidden-all')\r\n }\r\n },\r\n /* 更新横幅大图的文字描述 */\r\n initBanner() {\r\n const $bannerInfoDesc = $('.banner-info-desc')\r\n if ($bannerInfoDesc.length === 0) return\r\n const bannerDesc = $bannerInfoDesc.text()\r\n $bannerInfoDesc.text('')\r\n let currentBannerDesc = ''\r\n let isWrite = true\r\n let id\r\n const updateDesc = function () {\r\n let num = currentBannerDesc.length\r\n if (isWrite && num < bannerDesc.length) {\r\n currentBannerDesc += bannerDesc.charAt(num)\r\n $bannerInfoDesc.text(currentBannerDesc)\r\n } else if (!isWrite && num > 0) {\r\n currentBannerDesc = currentBannerDesc.slice(0, num - 1)\r\n $bannerInfoDesc.text(currentBannerDesc)\r\n } else {\r\n clearInterval(id)\r\n isWrite = !isWrite\r\n id = setInterval(updateDesc, isWrite ? 500 : 80)\r\n }\r\n }\r\n id = setInterval(updateDesc, isWrite ? 500 : 80)\r\n },\r\n /* 激活图片预览功能 */\r\n initGallery() {\r\n // 用链接和标题包装图像\r\n $('.main-content img:not(.not-gallery)').each(function () {\r\n if ($(this).parents('[data-fancybox],mew-photos').length === 0) {\r\n $(this).wrap(`<div class=\"gallery-item\"><div data-fancybox=\"gallery\" ${this.alt ? `data-caption=\"${this.alt}\"` : ''} href=\"${$(this).attr('src')\r\n }\"></div>${(this.alt && DreamConfig.show_img_name) ? `<p>${this.alt}</p>` : ''}</div>`)\r\n }\r\n })\r\n },\r\n /* 初始化主题模式(仅用户模式) */\r\n initMode() {\r\n let isNight = localStorage.getItem('night') || false\r\n const applyNight = (isNightValue) => {\r\n if (isNightValue) {\r\n // 配色方案\r\n $('html').addClass('color-scheme-dark').removeClass('color-scheme-light').addClass('night')\r\n } else {\r\n // 配色方案\r\n $('html').addClass('color-scheme-light').removeClass('color-scheme-dark').removeClass('night')\r\n }\r\n localStorage.setItem('night', isNightValue)\r\n isNight = isNightValue\r\n }\r\n //切换按钮\r\n $('#toggle-mode').on('click', () => applyNight(isNight.toString() !== 'true'))\r\n //加载后首选的配色\r\n if (DreamConfig.default_theme === 'system') {\r\n window.matchMedia('(prefers-color-scheme: dark)')\r\n .addListener((event) => applyNight(event.matches))\r\n } else {\r\n applyNight(isNight.toString() === 'true')\r\n }\r\n },\r\n /* 导航条高亮 */\r\n initNavbar() {\r\n const $nav_menus = $('.navbar-nav a')\r\n const $nav_side_menus = $('.panel-side-menu .link')\r\n let activeIndex = 0\r\n const {href, pathname} = location\r\n\r\n if (pathname && pathname !== '/') {\r\n for (let i = 0; i < $nav_menus.length; i++) {\r\n const cur_href = $nav_menus[i].getAttribute('href')\r\n if (pathname.includes(cur_href) || href.includes(cur_href)) {\r\n activeIndex = i\r\n if (pathname === cur_href || href === cur_href) break\r\n }\r\n }\r\n }\r\n\r\n // 高亮PC端\r\n const $curMenu = $nav_menus.eq(activeIndex)\r\n $curMenu.addClass('current')\r\n if ($curMenu.parents('.item-dropdown').length) {\r\n $curMenu\r\n .parents('.item-dropdown')\r\n .find('.item-dropdown-link a')\r\n .addClass('current')\r\n }\r\n\r\n // 高亮移动端\r\n $nav_side_menus.eq(activeIndex).addClass('current')\r\n },\r\n /* 激活导航栏全局下拉框功能 */\r\n initDropMenu() {\r\n $('.item-dropdown').each(function (index, item) {\r\n const menu = $(this).find('.item-dropdown-menu')\r\n const trigger = $(item).attr('trigger') || 'click'\r\n const placement = $(item).attr('placement') || $(this).height() || 0\r\n menu.css('top', placement)\r\n if (trigger === 'hover') {\r\n $(this).hover(\r\n () => $(this).addClass('active'),\r\n () => $(this).removeClass('active')\r\n )\r\n } else {\r\n $(this).on('click', function (e) {\r\n e.stopPropagation()\r\n $(this).toggleClass('active')\r\n $(document).one('click', () => $(this).removeClass('active'))\r\n e.stopPropagation()\r\n })\r\n menu.on('click', (e) => e.stopPropagation())\r\n }\r\n })\r\n },\r\n /* 处理滚动 */\r\n initScroll() {\r\n window.initTop = 0\r\n\r\n // true上划false下滑\r\n function scrollDirection(currentTop) {\r\n const result = currentTop > window.initTop\r\n window.initTop = currentTop\r\n return result\r\n }\r\n\r\n const handleScroll = () => {\r\n const scrollTop = $(document).scrollTop()\r\n const direction = scrollDirection(scrollTop)\r\n const $body = $('body')\r\n const $actions = $('.actions')\r\n if (scrollTop > 50 && direction) {\r\n $body.addClass('move-up')\r\n } else {\r\n $body.removeClass('move-up')\r\n }\r\n if (scrollTop > 100) {\r\n $actions.addClass('show')\r\n } else {\r\n $actions.removeClass('show')\r\n }\r\n }\r\n document.addEventListener('scroll', handleScroll)\r\n },\r\n /* 小屏幕伸缩侧边栏,包含导航或者目录 */\r\n drawerMobile() {\r\n $('.navbar-slideicon').on('click', function (e) {\r\n e.stopPropagation()\r\n /* 关闭搜索框 */\r\n $('.navbar-searchout').removeClass('active')\r\n /* 处理开启关闭状态 */\r\n const $html = $('html')\r\n const $mask = $('.navbar-mask')\r\n const $slide_out = $('.navbar-slideout')\r\n if ($slide_out.hasClass('active')) {\r\n $html.removeClass('disable-scroll')\r\n $mask.removeClass('active slideout')\r\n $slide_out.removeClass('active')\r\n } else {\r\n $html.addClass('disable-scroll')\r\n $mask.addClass('active slideout')\r\n $slide_out.addClass('active')\r\n }\r\n })\r\n $('.action-toc').on('click', function (e) {\r\n e.stopPropagation()\r\n /* 关闭搜索框 */\r\n $('.navbar-searchout').removeClass('active')\r\n /* 处理开启关闭状态 */\r\n const $html = $('html')\r\n const $mask = $('.navbar-mask')\r\n const $slide_out = $('.navbar-slideout')\r\n if ($slide_out.hasClass('active')) {\r\n $html.removeClass('disable-scroll')\r\n $mask.removeClass('active slideout')\r\n $slide_out.removeClass('active slideout-toc')\r\n } else {\r\n $html.addClass('disable-scroll')\r\n $mask.addClass('active slideout')\r\n $slide_out.addClass('active slideout-toc')\r\n }\r\n })\r\n },\r\n /* 激活全局返回顶部功能 */\r\n back2Top() {\r\n $('#back-to-top').on('click', function () {\r\n $('body, html').animate({scrollTop: 0}, 400)\r\n })\r\n },\r\n /* 点击遮罩层关闭 */\r\n maskClose() {\r\n $('.navbar-mask')\r\n .on('click', function (e) {\r\n e.stopPropagation()\r\n $('html').removeClass('disable-scroll')\r\n $('.navbar-mask').removeClass('active slideout')\r\n $('.navbar-searchout').removeClass('active')\r\n $('.navbar-slideout').removeClass('active slideout-toc')\r\n $('.navbar-above').removeClass('solid')\r\n })\r\n .on('touchmove', (e) => e.preventDefault)\r\n $('.navbar .toc-content')\r\n .on('click', function (e) {\r\n e.stopPropagation()\r\n $('html').removeClass('disable-scroll')\r\n $('.navbar-mask').removeClass('active slideout')\r\n $('.navbar-slideout').removeClass('active slideout-toc')\r\n })\r\n },\r\n /* 移动端侧边栏菜单手风琴 */\r\n sideMenuMobile() {\r\n $('.navbar-slideout-menu .current')\r\n .parents('.panel-body')\r\n .show()\r\n .siblings('.panel')\r\n .addClass('in')\r\n $('.navbar-slideout-menu .panel').on('click', function (e) {\r\n e.stopPropagation()\r\n const $this = $(this)\r\n const panelBox = $this.parent().parent()\r\n /* 清除全部内容 */\r\n panelBox.find('.panel').not($this).removeClass('in')\r\n panelBox\r\n .find('.panel-body')\r\n .not($this.siblings('.panel-body'))\r\n .stop()\r\n .hide('fast')\r\n /* 激活当前的内容 */\r\n $this.toggleClass('in').siblings('.panel-body').stop().toggle('fast')\r\n })\r\n },\r\n /* 初始化事件 */\r\n initEvent() {\r\n let $body = $('body')\r\n\r\n function closeSelect(elem) {\r\n let $elem = $(elem)\r\n const closeSelect = $elem.attr('data-close')\r\n return closeSelect && closeSelect.trim() !== '' ? $elem.closest(closeSelect.trim()) : $elem\r\n }\r\n\r\n $body.on('click', '.click-close', function (e) {\r\n e.stopPropagation()\r\n closeSelect(this).remove()\r\n })\r\n $body.on('click', '.click-animation-close', function (e) {\r\n e.stopPropagation()\r\n let selectElem = closeSelect(this)\r\n selectElem.addClass('close-animation')\r\n setTimeout(() => selectElem.remove(), 300)\r\n })\r\n },\r\n /* 离屏提示 */\r\n offscreenTip() {\r\n if (Utils.isMobile() || (!DreamConfig.document_hidden_title && !DreamConfig.document_visible_title)) return\r\n // const originTitle = document.title\r\n let originTitle = document.title\r\n let timer = null\r\n document.addEventListener('visibilitychange', function () {\r\n if (document.hidden) {\r\n if (!DreamConfig.document_visible_title || document.title !== DreamConfig.document_visible_title) {\r\n originTitle = document.title\r\n }\r\n DreamConfig.document_hidden_title && (document.title = DreamConfig.document_hidden_title)\r\n clearTimeout(timer)\r\n } else {\r\n document.title = DreamConfig.document_visible_title || originTitle\r\n DreamConfig.document_visible_title && (timer = setTimeout(function () {\r\n if (document.title === DreamConfig.document_visible_title) {\r\n document.title = originTitle\r\n }\r\n }, 2000))\r\n }\r\n })\r\n },\r\n /** 初始化轮播 **/\r\n initCarousel() {\r\n window.Swiper && new Swiper('.swiper', {\r\n loop: true,\r\n parallax: true,\r\n effect: 'slide',\r\n spaceBetween: 10,\r\n speed: 600,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false,\r\n pauseOnMouseEnter: true,\r\n },\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n })\r\n },\r\n /* 个人信息界面打印彩字 */\r\n sparkInput() {\r\n const sparkInputContent = DreamConfig.spark_input_content && DreamConfig.spark_input_content.filter(s => s.length > 0)\r\n if (sparkInputContent && sparkInputContent.length > 0) {\r\n Utils.cachedScript(`${DreamConfig.theme_base}/js/spark-input.min.js?mew=${DreamConfig.theme_version}`, function () {\r\n $('.spark-input').each((index, domEle) => sparkInput(domEle, [domEle.innerText, ...sparkInputContent]))\r\n })\r\n }\r\n },\r\n /* 恋爱墙倒计时 */\r\n loveTime() {\r\n let $elem = $('.love .love-time')\r\n if ($elem.length === 0) return\r\n let loveTime = $elem.attr('data-time')\r\n if (!/^\\d{4}\\/\\d{2}\\/\\d{2} \\d{2}:\\d{2}:\\d{2}$/.test(loveTime)) {\r\n $elem.html(loveTime)\r\n return\r\n }\r\n const now = new Date()\r\n const grt = new Date(loveTime)\r\n setInterval(function () {\r\n now.setTime(now.getTime() + 1000)\r\n let difference = parseInt((now - grt) / 1000)\r\n let seconds = difference % 60\r\n difference = parseInt(difference / 60)\r\n let minutes = difference % 60\r\n difference = parseInt(difference / 60)\r\n let hours = difference % 24\r\n let days = parseInt(difference / 24)\r\n let year = 0\r\n let grtYear = grt.getFullYear()\r\n let nowYear = now.getFullYear()\r\n while (grtYear < nowYear) {\r\n if ((grtYear % 4 === 0 && grtYear % 100 !== 0) || grtYear % 400 === 0) {\r\n // 闰年366天\r\n if (days < 366) break\r\n days -= 366\r\n year += 1\r\n grtYear += 1\r\n } else {\r\n // 平年365天\r\n if (days < 365) break\r\n days -= 365\r\n year += 1\r\n grtYear += 1\r\n }\r\n }\r\n if (year !== 0) {\r\n $elem.html(`${year} 年 ${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`)\r\n } else {\r\n $elem.html(`${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`)\r\n }\r\n }, 1000)\r\n },\r\n /* 激活建站倒计时功能 */\r\n websiteTime() {\r\n if (!DreamConfig.website_time) {\r\n return\r\n }\r\n const websiteDate = document.getElementById('websiteDate')\r\n if (DreamConfig.website_time === '') {\r\n return\r\n }\r\n const grt = new Date(DreamConfig.website_time).getTime()\r\n setInterval(function () {\r\n let now = Date.now()\r\n let difference = parseInt((now - grt) / 1000)\r\n let seconds = difference % 60\r\n if (String(seconds).length === 1) {\r\n seconds = '0' + seconds\r\n }\r\n difference = parseInt(difference / 60)\r\n\r\n let minutes = difference % 60\r\n if (String(minutes).length === 1) {\r\n minutes = '0' + minutes\r\n }\r\n difference = parseInt(difference / 60)\r\n\r\n let hours = difference % 24\r\n if (String(hours).length === 1) {\r\n hours = '0' + hours\r\n }\r\n let days = parseInt(difference / 24)\r\n websiteDate.innerHTML = `建站<span class=\"stand\">${days}</span>天<span class=\"stand\">${hours}</span>时<span class=\"stand\">${minutes}</span>分<span class=\"stand\">${seconds}</span>秒`\r\n }, 500)\r\n },\r\n /* 显示web版权 */\r\n webCopyright() {\r\n if (!DreamConfig.website_time) {\r\n return\r\n }\r\n const webCopyright = document.getElementById('webCopyright')\r\n const now = new Date()\r\n let nowYear = now.getFullYear()\r\n const grt = new Date(DreamConfig.website_time)\r\n let getYear = grt.getFullYear()\r\n if (nowYear === getYear) {\r\n webCopyright.innerText = '© ' + nowYear\r\n return\r\n }\r\n\r\n webCopyright.innerText = '© ' + getYear + '-' + nowYear\r\n },\r\n /* 激活侧边栏人生倒计时 */\r\n initTimeCount() {\r\n if (!$('.timelife').length) {\r\n return\r\n }\r\n if (timeLifeHour === new Date().getHours()) {\r\n return\r\n }\r\n let timelife = [\r\n {\r\n title: '今日已经过去',\r\n endTitle: '小时',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '这周已经过去',\r\n endTitle: '天',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '本月已经过去',\r\n endTitle: '天',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '今年已经过去',\r\n endTitle: '个月',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n ]\r\n {\r\n let nowDate = +new Date()\r\n let todayStartDate = new Date(new Date().toLocaleDateString()).getTime()\r\n let todayPassHours = (nowDate - todayStartDate) / 1000 / 60 / 60\r\n timeLifeHour = todayPassHours\r\n let todayPassHoursPercent = (todayPassHours / 24) * 100\r\n timelife[0].num = parseInt(todayPassHours)\r\n timelife[0].percent = parseInt(todayPassHoursPercent) + '%'\r\n }\r\n {\r\n let weeks = {\r\n 0: 7,\r\n 1: 1,\r\n 2: 2,\r\n 3: 3,\r\n 4: 4,\r\n 5: 5,\r\n 6: 6,\r\n }\r\n let weekDay = weeks[new Date().getDay()]\r\n let weekDayPassPercent = (weekDay / 7) * 100\r\n timelife[1].num = parseInt(weekDay)\r\n timelife[1].percent = parseInt(weekDayPassPercent) + '%'\r\n }\r\n {\r\n let year = new Date().getFullYear()\r\n let date = new Date().getDate()\r\n let month = new Date().getMonth() + 1\r\n let monthAll = new Date(year, month, 0).getDate()\r\n let monthPassPercent = (date / monthAll) * 100\r\n timelife[2].num = date\r\n timelife[2].percent = parseInt(monthPassPercent) + '%'\r\n }\r\n {\r\n let month = new Date().getMonth() + 1\r\n let yearPass = (month / 12) * 100\r\n timelife[3].num = month\r\n timelife[3].percent = parseInt(yearPass) + '%'\r\n }\r\n let htmlStr = ''\r\n timelife.forEach((item, index) => {\r\n htmlStr += `\r\n\t\t\t\t\t\t<div class=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"title\">\r\n\t\t\t\t\t\t\t\t${item.title}\r\n\t\t\t\t\t\t\t\t<span class=\"text\">${item.num}</span>\r\n\t\t\t\t\t\t\t\t${item.endTitle}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"progress\">\r\n\t\t\t\t\t\t\t\t<div class=\"progress-bar\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"progress-bar-inner progress-bar-inner-${index}\" style=\"width: ${item.percent}\"></div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div class=\"progress-percentage\">${item.percent}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>`\r\n })\r\n $('.aside-timelife').html(htmlStr)\r\n },\r\n /* 安全链接 */\r\n initSecurityLink() {\r\n if (!DreamConfig.enable_security_link || !DreamConfig.security_link_url || DreamConfig.security_link_url.length === 0) {\r\n return\r\n }\r\n $(document).on('click', 'a[target=_blank]', (event) => {\r\n event.preventDefault() // 防止链接默认行为,即打开新页面\r\n var href = $(event.currentTarget).attr('href')\r\n var hostname = window.location.hostname\r\n\r\n const isInternalLink = (url, siteDomain) => {\r\n // 将URL和站点域名转换为小写去除前导和尾随空格\r\n url = url.toLowerCase().trim()\r\n siteDomain = siteDomain.toLowerCase().trim()\r\n // 如果URL是协议相对路径或者绝对路径则转换为完整的URL\r\n if (url.startsWith('//')) {\r\n url = window.location.protocol + url\r\n } else if (url.startsWith('/')) {\r\n url = window.location.origin + url\r\n }\r\n // 如果URL以'http://'或'https://'开头,则去除尾部斜杠\r\n if (url.startsWith('http://') || url.startsWith('https://')) {\r\n url = url.replace(/\\/$/, '')\r\n }\r\n // 对比URL和站点域名\r\n return url.includes(siteDomain)\r\n }\r\n\r\n var tempwindow = window.open('_blank')\r\n tempwindow.location = isInternalLink(href, hostname) ? href : (DreamConfig.security_link_url + '?target=' + encodeURIComponent(href))\r\n })\r\n },\r\n /* 灰色模式 */\r\n initGrayMode() {\r\n if (DreamConfig.gray_mode === true) {\r\n $('html').addClass('gray-mode')\r\n } else if (DreamConfig.gray_mode === 'custom') {\r\n var now = new Date().getTime()\r\n var startTime = new Date(DreamConfig.gray_mode_start_time).getTime()\r\n var endTime = new Date(DreamConfig.gray_mode_end_time).getTime()\r\n if (now >= startTime && now <= endTime) {\r\n $('html').addClass('gray-mode')\r\n }\r\n }\r\n },\r\n /* 初始化特效,只需要初始化一次,移动端设备不初始化 */\r\n initEffects() {\r\n if (Utils.isMobile()) return\r\n DreamConfig.cursor_move && Utils.cachedScript(`${DreamConfig.theme_base}/js/cursor/move/${DreamConfig.cursor_move}.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.cursor_click && Utils.cachedScript(`${DreamConfig.theme_base}/js/cursor/click/${DreamConfig.cursor_click}.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.enable_live2d && Utils.cachedScript(`${DreamConfig.theme_base}/js/autoload.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_lantern_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/lantern.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_sakura_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/sakura.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_snowflake_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/snowflake.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_universe_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/universe.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_circle_magic_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/circleMagic.min.js?mew=${DreamConfig.theme_version}`)\r\n },\r\n /*初始化标签云滚动样式*/\r\n initTagCloud() {\r\n if (!$('.tagcloud').length || !DreamConfig.show_tagcloud_style) {\r\n return\r\n }\r\n\r\n tagcloud({\r\n selector: '.tagcloud .card-content', //元素选择器\r\n fontsize: 18, //基本字体大小, 单位px\r\n radius: 75, //滚动半径, 单位px\r\n mspeed: 'slow', //滚动最大速度, 取值: slow, normal(默认), fast\r\n ispeed: 'slow', //滚动初速度, 取值: slow, normal(默认), fast\r\n direction: 45, //初始滚动方向, 取值角度(顺时针360): 0对应top, 90对应left, 135对应right-bottom(默认)...\r\n keep: false //鼠标移出组件后是否继续随鼠标滚动, 取值: false, true(默认) 对应 减速至初速度滚动, 随鼠标滚动\r\n })\r\n },\r\n /* 显示主题版本信息 */\r\n showThemeVersion() {\r\n if (!DreamConfig.enable_console_version_info) {\r\n return\r\n }\r\n window.logger(`%c页面加载耗时${Math.round(performance.now())}ms | Theme By Dream2 Plus ${DreamConfig.theme_version}`,\r\n 'color:#fff; background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3); padding: 8px 15px; border-radius: 0 15px 0 15px')\r\n }\r\n}\r\n\r\nwindow.commonContext = commonContext\r\nlet timeLifeHour = -1\r\n\r\n!(function () {\r\n const loads = ['initCarousel', 'sparkInput', 'websiteTime']\r\n const omits = ['initEffects', 'showThemeVersion']\r\n\r\n Object.keys(commonContext).forEach(\r\n (c) => !loads.includes(c) && !omits.includes(c) && commonContext[c]()\r\n )\r\n\r\n // 当前html加载完执行\r\n document.addEventListener('DOMContentLoaded', function () {\r\n $('html').addClass('loaded')\r\n loads.forEach((c) => commonContext[c] && commonContext[c]())\r\n })\r\n\r\n // 所有内容加载完执行\r\n window.addEventListener('load', function () {\r\n omits.forEach((c) => commonContext[c] && commonContext[c]())\r\n $('html').addClass('ready')\r\n })\r\n})()\n\n//# sourceURL=webpack://halo-theme-dream2.0-plus/./src/js/common.js?")}},__webpack_exports__={};__webpack_modules__["./src/js/common.js"]()})();