'use strict';
/*! js-cookie v2.1.4 | MIT */
! function (a) { var b = !1; if ("function" == typeof define && define.amd && (define(a), b = !0), "object" == typeof exports && (module .exports = a(), b = !0), !b) { var c = window.Cookies, d = window.Cookies = a(); d.noConflict = function () { return window.Cookies = c, d } } }(function () { function a() { for (var a = 0, b = {}; a < arguments.length; a++) { var c = arguments[a]; for (var d in c) b[d] = c[d] } return b }
function b(c) { function d(b, e, f) { var g; if ("undefined" != typeof document) { if (arguments.length > 1) { if (f = a({ path: "/" }, d.defaults, f), "number" == typeof f.expires) { var h = new Date; h.setMilliseconds(h.getMilliseconds() + 864e5 * f.expires), f.expires = h } f.expires = f.expires ? f.expires.toUTCString() : ""; try { g = JSON.stringify(e), /^[\{\[]/.test(g) && (e = g) } catch (p) {} e = c.write ? c.write(e, b) : encodeURIComponent(e + "").replace( /%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent ), b = encodeURIComponent(b + ""), b = b.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent), b = b.replace(/[\(\)]/g, escape); var i = ""; for (var j in f) f[j] && (i += "; " + j, !0 !== f[j] && (i += "=" + f[j])); return document.cookie = b + "=" + e + i } b || (g = {}); for (var k = document.cookie ? document.cookie.split("; ") : [], l = 0; l < k.length; l++) { var m = k[l].split("="), n = m.slice(1).join("="); '"' === n.charAt(0) && (n = n.slice(1, -1)); try { var o = m[0].replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); if (n = c.read ? c.read(n, o) : c(n, o) || n.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent), this.json) try { n = JSON.parse(n) } catch (p) {} if (b === o) { g = n; break } b || (g[o] = n) } catch (p) {} } return g } } return d.set = d, d.get = function (a) { return d.call(d, a) }, d.getJSON = function () { return d.apply({ json: !0 }, [].slice.call(arguments)) }, d.defaults = {}, d.remove = function (b, c) { d(b, "", a(c, { expires: -1 })) }, d.withConverter = b, d } return b(function () {}) });
/** 代码部分 */ var _native = { construct: function (e) { var default_options = { display: "block", fallback: "", placement: "", prefix: "native", targetClass: "native-ad", visibleClass: "native-show" };
if (typeof e == "undefined") return default_options; Object.keys(default_options).forEach((key, index) => { if (typeof e[key] == "undefined") { e[key] = default_options[key]; } }); return e; }, init: function (zone, options) { options = this.construct(options); this.className = options["targetClass"]; this.displayStyle = options["display"]; this.fallback = options["fallback"]; this.visibleClassName = options["visibleClass"]; this.prefix = options["prefix"]; this.placement = options["placement"]; }, pixel: function (p, timestamp) { let c = ""; if (p) p.split("||").forEach((pixel, index) => { c += '<img src="' + pixel.replace("[timestamp]", timestamp) + '" style="display:none;" height="0" width="0" />'; }); return c; } };
document.addEventListener('DOMContentLoaded', function () {
// Cookies
var cookieBookModalName = 'bulma_closed_book_modal'; var cookieBookModal = Cookies.getJSON(cookieBookModalName) || false;
// Sidebar links
var $categories = getAll('#categories .bd-category');
if ($categories.length > 0) { $categories.forEach(function (el) { var toggle_el = el.querySelector('.bd-category-toggle');
toggle_el.addEventListener('click', function (event) { // closeCategories(el); el.classList.toggle('is-active'); }); }); }
function closeCategories(current_el) { $categories.forEach(function (el) { if (current_el == el) { return; } el.classList.remove('is-active'); }); }
var anchors_ref_el = document.getElementById('anchorsReference'); var anchors_el = document.getElementById('anchors'); var anchor_links_el = getAll('.bd-anchor-link');
var anchors_by_id = {}; var anchors_order = []; var anchor_nav_els = [];
if (anchors_el && anchor_links_el.length > 0) { anchors_el.classList.add('is-active'); var anchors_el_list = anchors_el.querySelector('.bd-anchors-list');
anchor_links_el.forEach(function (el, index) { var link_target = el.getAttribute('href'); var link_text = el.previousElementSibling.innerText;
if (link_text != ) { var item_el = createAnchorLink(link_text, link_target); anchors_el_list.appendChild(item_el);
var anchor_key = link_target.substring(1); // #target -> target anchors_by_id[anchor_key] = { id: anchor_key, index: index, target: link_target, text: link_text, nav_el: item_el }; anchors_order.push(anchor_key); anchor_nav_els.push(item_el); } });
var back_to_top_el = createAnchorLink('Back to top', ); back_to_top_el.onclick = scrollToTop; anchors_el_list.appendChild(back_to_top_el); }
function scrollToTop() { window.scrollTo(0, 0); }
function createAnchorLink(text, target) { var item_el = document.createElement('li'); var link_el = document.createElement('a'); var text_node = document.createTextNode(text);
if (target) { link_el.setAttribute('href', target); }
link_el.appendChild(text_node); item_el.appendChild(link_el);
return item_el; }
function closeCategories(current_el) { $categories.forEach(function (el) { if (current_el == el) { return; } el.classList.remove('is-active'); }); }
// Meta links
var $metalinks = getAll('#meta a');
if ($metalinks.length > 0) { $metalinks.forEach(function ($el) { $el.addEventListener('click', function (event) { event.preventDefault(); var target = $el.getAttribute('href'); var $target = document.getElementById(target.substring(1)); $target.scrollIntoView(true); return false; }); }); }
// Dropdowns
var $dropdowns = getAll('.dropdown:not(.is-hoverable)');
if ($dropdowns.length > 0) { $dropdowns.forEach(function ($el) { $el.addEventListener('click', function (event) { event.stopPropagation(); $el.classList.toggle('is-active'); }); });
document.addEventListener('click', function (event) { closeDropdowns(); }); }
function closeDropdowns() { $dropdowns.forEach(function ($el) { $el.classList.remove('is-active'); }); }
// Toggles
var $burgers = getAll('.burger');
if ($burgers.length > 0) { $burgers.forEach(function ($el) { $el.addEventListener('click', function () { var target = $el.dataset.target; var $target = document.getElementById(target); $el.classList.toggle('is-active'); $target.classList.toggle('is-active'); }); }); }
// Modals
var rootEl = document.documentElement; var $modals = getAll('.modal'); var $modalButtons = getAll('.modal-button'); var $modalCloses = getAll( '.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button');
if ($modalButtons.length > 0) { $modalButtons.forEach(function ($el) { $el.addEventListener('click', function () { var target = $el.dataset.target; openModal(target); }); }); }
if ($modalCloses.length > 0) { $modalCloses.forEach(function ($el) { $el.addEventListener('click', function () { closeModals(); }); }); }
function openModal(target) { var $target = document.getElementById(target); rootEl.classList.add('is-clipped'); $target.classList.add('is-active'); }
function closeModals() { rootEl.classList.remove('is-clipped'); $modals.forEach(function ($el) { $el.classList.remove('is-active'); }); }
document.addEventListener('keydown', function (event) { var e = event || window.event; if (e.keyCode === 27) { closeModals(); closeDropdowns(); } });
// Clipboard
var $highlights = getAll('.highlight'); var itemsProcessed = 0;
if ($highlights.length > 0) { $highlights.forEach(function ($el) { var copyEl = '<button class="button is-small bd-copy">Copy</button>'; var expandEl = '<button class="button is-small bd-expand">Expand</button>'; $el.insertAdjacentHTML('beforeend', copyEl);
var $parent = $el.parentNode; if ($parent && $parent.classList.contains('bd-is-more')) { var showEl ='<button class="bd-show">
Show code
</button>';
$el.insertAdjacentHTML('beforeend', showEl); } else if ($el.firstElementChild.scrollHeight > 480 && $el.firstElementChild.clientHeight <= 480) { $el.insertAdjacentHTML('beforeend', expandEl); }
itemsProcessed++; if (itemsProcessed === $highlights.length) { addHighlightControls(); } }); }
function addHighlightControls() { var $highlightButtons = getAll('.highlight .bd-copy, .highlight .bd-expand');
$highlightButtons.forEach(function ($el) { $el.addEventListener('mouseenter', function () { $el.parentNode.classList.add('bd-is-hovering'); });
$el.addEventListener('mouseleave', function () { $el.parentNode.classList.remove('bd-is-hovering'); }); });
var $highlightExpands = getAll('.highlight .bd-expand');
$highlightExpands.forEach(function ($el) { $el.addEventListener('click', function () { $el.parentNode.firstElementChild.style.maxHeight = 'none'; }); });
var $highlightShows = getAll('.highlight .bd-show');
$highlightShows.forEach(function ($el) { $el.addEventListener('click', function () { $el.parentNode.parentNode.classList.remove('bd-is-more-clipped'); }); }); }
// setTimeout(function () { // new Clipboard('.bd-copy', { // target: function target(trigger) { // return trigger.previousElementSibling.firstElementChild; // } // }); // }, 100);
// Functions
function getAll(selector) { return Array.prototype.slice.call(document.querySelectorAll(selector), 0); }
// Scrolling
var html_el = document.documentElement; var navbarEl = document.getElementById('navbar'); var navbarBurger = document.getElementById('navbarBurger'); var specialShadow = document.getElementById('specialShadow'); var NAVBAR_HEIGHT = 52; var THRESHOLD = 160; var horizon = NAVBAR_HEIGHT; var whereYouStoppedScrolling = 0; var scrollFactor = 0; var currentTranslate = 0;
// Anchors highlight
var past_anchors = []; anchor_links_el.reverse(); var trigger_offset = 24; // In pixels var typo_el = document.getElementById('typo');
function whenScrolling() { if (anchors_ref_el) { var bounds = anchors_ref_el.getBoundingClientRect(); var anchors_height = anchors_el.clientHeight; var typo_bounds = typo_el.getBoundingClientRect(); var typo_height = typo_el.clientHeight;
if (bounds.top < 1 && typo_bounds.top - anchors_height + typo_height > 0) { anchors_el.classList.add('is-pinned'); } else { anchors_el.classList.remove('is-pinned'); }
anchor_links_el.some(function (el) { var bounds = el.getBoundingClientRect(); var href = el.getAttribute('href'); var key = href.substring(1); // #target -> target
if (bounds.top < 1 + trigger_offset && past_anchors.indexOf(key) == -1) { past_anchors.push(key); highlightAnchor(); return; } else if (bounds.top > 0 + trigger_offset && past_anchors.indexOf(key) != -1) { removeFromArray(past_anchors, key); highlightAnchor(); return; } }); } }
function highlightAnchor() { var future_anchors = anchors_order.diff(past_anchors); var highest_index = -1; var highest_anchor_key = ;
if (past_anchors.length > 0) { past_anchors.forEach(function (key, index) { var anchor = anchors_by_id[key]; anchor.nav_el.className = 'is-past';
// Keep track of the bottom most item if (anchor.index > highest_index) { highest_index = anchor.index; highest_anchor_key = key; } });
if (highest_anchor_key in anchors_by_id) { anchors_by_id[highest_anchor_key].nav_el.className = 'is-current'; } }
if (future_anchors.length > 0) { future_anchors.forEach(function (key, index) { var anchor = anchors_by_id[key]; anchor.nav_el.className = ; }); } }
// Scroll
function upOrDown(lastY, currentY) { if (currentY >= lastY) { return goingDown(currentY); } return goingUp(currentY); }
function goingDown(currentY) { var trigger = NAVBAR_HEIGHT; whereYouStoppedScrolling = currentY;
if (currentY > horizon) { horizon = currentY; }
translateHeader(currentY, false); }
function goingUp(currentY) { var trigger = 0;
if (currentY < whereYouStoppedScrolling - NAVBAR_HEIGHT) { horizon = currentY + NAVBAR_HEIGHT; }
translateHeader(currentY, true); }
function constrainDelta(delta) { return Math.max(0, Math.min(delta, NAVBAR_HEIGHT)); }
function translateHeader(currentY, upwards) { // let topTranslateValue; var translateValue = void 0;
if (upwards && currentTranslate == 0) { translateValue = 0; } else if (currentY <= NAVBAR_HEIGHT) { translateValue = currentY * -1; } else { var delta = constrainDelta(Math.abs(currentY - horizon)); translateValue = delta - NAVBAR_HEIGHT; }
if (translateValue != currentTranslate) { var navbarStyle = '\n transform: translateY(' + translateValue + 'px);\n '; currentTranslate = translateValue; navbarEl.setAttribute('style', navbarStyle); }
if (currentY > THRESHOLD * 2) { scrollFactor = 1; } else if (currentY > THRESHOLD) { scrollFactor = (currentY - THRESHOLD) / THRESHOLD; } else { scrollFactor = 0; }
var translateFactor = 1 + translateValue / NAVBAR_HEIGHT;
if (specialShadow) { specialShadow.style.opacity = scrollFactor; specialShadow.style.transform = 'scaleY(' + translateFactor + ')'; } }
var ticking = false; var lastY = 0;
window.addEventListener('scroll', function () { var currentY = window.scrollY;
if (!ticking) { window.requestAnimationFrame(function () { // upOrDown(lastY, currentY); whenScrolling(); ticking = false; lastY = currentY; }); }
ticking = true; });
// Utils
function removeFromArray(array, value) { if (array.includes(value)) { var value_index = array.indexOf(value); array.splice(value_index, 1); }
return array; }
Array.prototype.diff = function (a) { return this.filter(function (i) { return a.indexOf(i) < 0; }); }; });
var carousels = bulmaCarousel.attach();