From e92f6ced66fb25a6730264a7515f76099c540679 Mon Sep 17 00:00:00 2001
From: weru <onewesh@gmail.com>
Date: Mon, 05 Oct 2020 20:12:31 +0000
Subject: [PATCH] refactor
---
assets/js/index.js | 179 ++---------------------------------------------------------
1 files changed, 8 insertions(+), 171 deletions(-)
diff --git a/assets/js/index.js b/assets/js/index.js
index ffc8c5d..a7e6b9f 100644
--- a/assets/js/index.js
+++ b/assets/js/index.js
@@ -1,113 +1,7 @@
-function isObj(obj) {
- return (obj && typeof obj === 'object' && obj !== null) ? true : false;
-}
-
-function createEl(element = 'div') {
- return document.createElement(element);
-}
-
-function emptyEl(el) {
- while(el.firstChild)
- el.removeChild(el.firstChild);
-}
-
-function elem(selector, parent = document){
- let elem = isObj(parent) ? parent.querySelector(selector) : false;
- return elem ? elem : false;
-}
-
-function elems(selector, parent = document) {
- let elems = isObj(parent) ?parent.querySelectorAll(selector) : [];
- return elems.length ? elems : false;
-}
-
-function pushClass(el, targetClass) {
- if (isObj(el) && targetClass) {
- let elClass = el.classList;
- elClass.contains(targetClass) ? false : elClass.add(targetClass);
- }
-}
-
-function deleteClass(el, targetClass) {
- if (isObj(el) && targetClass) {
- let elClass = el.classList;
- elClass.contains(targetClass) ? elClass.remove(targetClass) : false;
- }
-}
-
-function modifyClass(el, targetClass) {
- if (isObj(el) && targetClass) {
- const elClass = el.classList;
- elClass.contains(targetClass) ? elClass.remove(targetClass) : elClass.add(targetClass);
- }
-}
-
-function containsClass(el, targetClass) {
- if (isObj(el) && targetClass && el !== document ) {
- return el.classList.contains(targetClass) ? true : false;
- }
-}
-
-function isChild(node, parentClass) {
- let objectsAreValid = isObj(node) && parentClass && typeof parentClass == 'string';
- return (objectsAreValid && node.closest(parentClass)) ? true : false;
-}
-
-function elemAttribute(elem, attr, value = null) {
- if (value) {
- elem.setAttribute(attr, value);
- } else {
- value = elem.getAttribute(attr);
- return value ? value : false;
- }
-}
-
-function deleteChars(str, subs) {
- let newStr = str;
- if (Array.isArray(subs)) {
- for (let i = 0; i < subs.length; i++) {
- newStr = newStr.replace(subs[i], '');
- }
- } else {
- newStr = newStr.replace(subs, '');
- }
- return newStr;
-}
-
-function isBlank(str) {
- return (!str || str.trim().length === 0);
-}
-
-function isMatch(element, selectors) {
- if(isObj(element)) {
- if(selectors.isArray) {
- let matching = selectors.map(function(selector){
- return element.matches(selector)
- })
- return matching.includes(true);
- }
- return element.matches(selectors)
- }
-}
-
-function closestInt(goal, collection) {
- const closest = collection.reduce(function(prev, curr) {
- return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
- });
- return closest;
-}
-
-function hasClasses(el) {
- if(isObj(el)) {
- const classes = el.classList;
- return classes.length
- }
-}
-
(function calcNavHeight(){
const nav = elem('.nav_header');
const navHeight = nav.offsetHeight + 25;
- const docContent = elem('main');
+ const docContent = elem('main');
docContent.style.paddingTop = `${navHeight}px`;
return navHeight;
})();
@@ -118,7 +12,7 @@
codeBlocks.forEach(function(codeBlock){
if(!hasClasses(codeBlock)) {
codeBlock.children.length ? false : pushClass(codeBlock, 'noClass');
- }
+ }
});
}
})();
@@ -144,10 +38,6 @@
};
function loadActions() {
-
- const parentURL = '{{ absURL "" }}';
- const doc = document.documentElement;
-
(function updateDate() {
const date = new Date();
const year = date.getFullYear();
@@ -165,10 +55,10 @@
pushClass(toc, 'toc');
if(toc.children.length >= 1) {
const tocItems = Array.from(toc.children[0].children);
-
+
const previousHeading = toc.previousElementSibling;
previousHeading.matches('.active') ? pushClass(toc, tocActive) : false;
-
+
tocItems.forEach(function(item){
pushClass(item, 'toc_item');
pushClass(item.firstElementChild, 'toc_link');
@@ -184,13 +74,13 @@
const pageIds = pageInternalLinks.map(function(link){
return link.hash;
});
-
+
const linkPositions = pageIds.map(function(id){
const heading = elem(id);
const position = heading.offsetTop;
return position;
});
-
+
pageInternalLinks.forEach(function(link, index){
link.dataset.position = linkPositions[index]
});
@@ -206,57 +96,6 @@
}
})();
- function searchResults(results=[], order =[]) {
- let resultsFragment = new DocumentFragment();
- let showResults = elem('.search_results');
- emptyEl(showResults);
- let index = 0
- results.forEach(function(result){
- let item = createEl('a');
- item.href = result.link;
- item.className = 'search_result';
- item.textContent = result.title;
- item.style.order = order[index];
- resultsFragment.appendChild(item);
- index += 1
- });
-
- showResults.appendChild(resultsFragment);
- }
-
- (function search(){
- const searchField = elem('.search_field');
-
- if (searchField) {
- searchField.addEventListener('input', function() {
- let rawResults = idx.search(`${ this.value }`).slice(0,6);
- let refs = rawResults.map(function(ref){
- // return id and score in a single string
- return `${ref.ref}:${ref.score}`;
- });
-
- let ids = refs.map(function(id){
- let positionOfSeparator = id.indexOf(":");
- id = id.substring(0,positionOfSeparator)
- return Number(id);
- });
-
- let scores = refs.map(function(score){
- let positionOfSeparator = score.indexOf(":");
- score = score.substring((positionOfSeparator + 1), (score.length - 1));
- return (parseFloat(score) * 50).toFixed(0);
- });
-
- let matchedDocuments = simpleIndex.filter(function(doc){
- return ids.includes(doc.id);
- });
-
- matchedDocuments.length >= 1 ? searchResults(matchedDocuments, scores) : false;
- });
- }
-
- })();
-
(function markExternalLinks(){
let links = elems('a');
const contentWrapperClass = '.content';
@@ -265,7 +104,6 @@
let target, rel, blank, noopener, attr1, attr2, url, isExternal;
url = elemAttribute(link, 'href');
isExternal = (url && typeof url == 'string' && url.startsWith('http')) && !url.startsWith(parentURL) && link.closest(contentWrapperClass);
- index === 1 ? console.log(parentURL) : false;
if(isExternal) {
target = 'target';
rel = 'rel';
@@ -290,7 +128,7 @@
results = document.getElementsByTagName(tag);
Array.prototype.push.apply(headingNodes, results);
});
-
+
function sanitizeURL(url) {
// removes any existing id on url
const hash = '#';
@@ -372,11 +210,10 @@
(function lazyLoadImages() {
const images = elems('img');
images.forEach(function(image){
- // supported natively by most modern browsers.
+ // supported natively by most modern browsers.
image.loading = "lazy";
});
})();
-
}
window.addEventListener('load', loadActions());
--
Gitblit v1.10.0