import $ from 'jquery' import dayjs from 'dayjs' import { addNewClass, removeClass, throttle } from './class-module' ;(function () { let toggles = document.querySelectorAll('.cases .item') toggles.forEach((toggle) => { toggle.addEventListener( 'mouseover', function (e) { // Prevent the default link behavior e.preventDefault() // 移除上一次的选中状态 removeClass( document.getElementsByClassName('img__active'), 'img__active' ) removeClass( document.getElementsByClassName('sub__active'), 'sub__active' ) // 设置新的选中状态 addNewClass(toggle.children[0], 'img__active') addNewClass( document.getElementById('sub-' + toggle.dataset.icon), 'sub__active' ) }, false ) }) // 代码高亮 document.querySelectorAll('pre code').forEach((block) => { hljs.highlightElement(block) }) // TOC document.querySelector('.post-toc-html') && document.querySelector('.post-inner-html') && tocbot.init({ tocSelector: '.post-toc-html', contentSelector: '.post-inner-html', headingSelector: 'h1, h2, h3', }) // NProgress var totalH = document.body.scrollHeight || document.documentElement.scrollHeight // 页面总高 var clientH = window.innerHeight || document.documentElement.clientHeight // 可视高 window.addEventListener( 'scroll', throttle(() => { // 计算有效高 var validH = totalH - clientH // 滚动条卷去高度 var scrollH = document.body.scrollTop || document.documentElement.scrollTop // 百分比 var result = scrollH / validH NProgress.set(result) }) ) NProgress.configure({ showSpinner: false, minimum: 0, }) // Back to Top $('#backtop').click(function () { $('html, body').animate({ scrollTop: 0 }, 800) }) // Share $('.share > .share-item').hover( function () { addNewClass( $(this).children('.n-icon'), $(this).children('.n-icon')[0].classList[1] + '-select' ) }, function () { removeClass( $(this).children('.n-icon'), $(this).children('.n-icon')[0].classList[2] ) } ) // Social $('.footer-info > .social').hover( function () { addNewClass( $(this).children('.n-icon'), $(this).children('.n-icon')[0].classList[1] + '-select' ) }, function () { removeClass( $(this).children('.n-icon'), $(this).children('.n-icon')[0].classList[2] ) } ) // Mobile Menu $('#mobile-menu-open').click(function () { $('.header-menu-mobile-menu').fadeIn(300) addNewClass($('body'), 'mobile-menu-fixed') }) $('#mobile-menu-close').click(function () { $('.header-menu-mobile-menu').fadeOut(300) removeClass($('body'), 'mobile-menu-fixed') }) // 监听屏幕滚动修改边栏 window.addEventListener( 'scroll', throttle(() => { const _top = document.documentElement.scrollTop || document.body.scrollTop if (_top > 100) { // 边栏绝对定位 addNewClass('.sidebar', 'sidebar-fixed') // 返回顶部按钮显示 $('#backtop').fadeIn(300) } else { // 取消边栏定位 removeClass('.sidebar', 'sidebar-fixed') // 返回顶部按钮消失 $('#backtop').fadeOut(300) } }) ) // Perfect Scrollbar const _widget = document.querySelector('#widget') _widget && new PerfectScrollbar(_widget) // Typed if (window.aomori_logo_typed_animated) { const typed = new Typed('#typed', { stringsElement: '#typed-strings', fadeOut: true, fadeOutDelay: 800, typeSpeed: 100, showCursor: false, }) } // Algolia if (window.aomori_search_algolia) { const _searchPs = document.querySelector('#search-ps') _searchPs && new PerfectScrollbar(_searchPs) const algoliaConfig = document.querySelector( 'meta[property="algolia:search"]' ).dataset const algoliaClient = algoliasearch( algoliaConfig.applicationId, algoliaConfig.apiKey ) const algoliaIndex = algoliaClient.initIndex(algoliaConfig.indexName) $('#search').on( 'keyup', throttle((event) => { algoliaIndex.search($('#search').val()).then(({ hits }) => { $('.search-result').slideDown() if (hits.length) { let searchOutputHtml = '' hits.forEach((item) => { searchOutputHtml += `

${item.title}

${dayjs( item.date ).format('YYYY-MM-DD')}

` }) $('.search-result').html(searchOutputHtml) } else { $('.search-result').html('Nothing at all.') } }) }) ) $('#search').on('focusin', () => { addNewClass($('.search'), 'search-focus') }) $('#search').on('focusout', () => { removeClass($('.search'), 'search-focus') $('.search-result').slideUp() }) } // Swiper const mySwiper = new Swiper('.swiper-container', { autoplay: { delay: 10000, }, autoHeight: true, pagination: { el: '.swiper-pagination', bulletActiveClass: 'article-gallery-active', }, }) if (mySwiper.slides && mySwiper.slides.length <= 1) { mySwiper.destroy() } // Viewer const viewerConfig = { title: false, toolbar: { zoomIn: true, zoomOut: true, reset: true, prev: true, next: true, }, keyboard: false, } const galleryViewer = $('.article-gallery') if (galleryViewer && galleryViewer.length > 0) { galleryViewer.viewer(viewerConfig) } const articleEntryViewer = $('.article-entry') if (articleEntryViewer && articleEntryViewer.length > 0) { articleEntryViewer.viewer(viewerConfig) } const photographyViewer = $('.photography-item') if (photographyViewer && photographyViewer.length > 0) { const temp = Object.assign(viewerConfig, { url(image) { return image.dataset.original }, toolbar: { zoomIn: true, zoomOut: true, reset: true, prev: false, next: false, }, navbar: false, }) photographyViewer.viewer(temp) } // Plyr if (window.isPost) { const plyrsInPost = Array.from($('article video')).map( (ele) => new Plyr(ele) ) } const plyrsInIndex = Array.from($('article .article-video-plyr')).map( (ele) => new Plyr(ele) ) // LazyLoad const lazyLoad = new LazyLoad() // Fxxk adblock const ads = $('.adsbygoogle') if ( window.isPost && ads.length > 0 && window.getComputedStyle(ads[0]).display === 'none' ) { $('.intersection-observer-ad').css('display', 'flex') } })()