342 lines
10 KiB
JavaScript
342 lines
10 KiB
JavaScript
|
window.jQuery = window.$ = require("jquery");
|
||
|
require('waypoints/lib/jquery.waypoints');
|
||
|
require('lazysizes');
|
||
|
var CodeMirror = require('codemirror');
|
||
|
require('codemirror/mode/css/css');
|
||
|
require('magnific-popup');
|
||
|
require('html5shiv');
|
||
|
|
||
|
// import images for lazy Loading
|
||
|
// Work-around until https://www.npmjs.com/package/parcel-plugin-lazy is functional
|
||
|
//import imageURL from '/resources/img/Addons-small.jpg';
|
||
|
|
||
|
|
||
|
// Check for the various File API support.
|
||
|
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
||
|
// Great success! All the File APIs are supported.
|
||
|
} else {
|
||
|
alert('The File APIs are not fully supported in this browser.');
|
||
|
}
|
||
|
|
||
|
var waypoint = new window.Waypoint({
|
||
|
element: document.getElementsByClassName('js--section-features'),
|
||
|
handler: function(direction) {
|
||
|
if (direction == "down") {
|
||
|
$('nav').addClass('sticky');
|
||
|
} else {
|
||
|
$('nav').removeClass('sticky');
|
||
|
}
|
||
|
},
|
||
|
offset: '60px'
|
||
|
})
|
||
|
|
||
|
var waypoint = new window.Waypoint({
|
||
|
element: document.getElementsByClassName('js--wp-1'),
|
||
|
handler: function(direction) {
|
||
|
$('.js--wp-1').addClass('animated fadeIn');
|
||
|
},
|
||
|
offset: '50%'
|
||
|
})
|
||
|
|
||
|
var waypoint = new window.Waypoint({
|
||
|
element: document.getElementsByClassName('js--wp-4'),
|
||
|
handler: function(direction) {
|
||
|
$('.js--wp-4').addClass('animated pulse');
|
||
|
},
|
||
|
offset: '50%'
|
||
|
})
|
||
|
|
||
|
/* Scroll on buttons */
|
||
|
$('.js--scroll-to-plans').click(function() {
|
||
|
$('html, body').animate({
|
||
|
scrollTop: $('.js--section-plans').offset().top
|
||
|
}, 1000);
|
||
|
});
|
||
|
|
||
|
$('.js--scroll-to-start').click(function() {
|
||
|
$('html, body').animate({
|
||
|
scrollTop: $('.js--section-features').offset().top
|
||
|
}, 1000);
|
||
|
});
|
||
|
|
||
|
|
||
|
/* Navigation scroll */
|
||
|
$(function() {
|
||
|
$('a[href*=\\#]:not([href=\\#])').click(function() {
|
||
|
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
|
||
|
var target = $(this.hash);
|
||
|
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
|
||
|
if (target.length) {
|
||
|
$('html,body').animate({
|
||
|
scrollTop: target.offset().top
|
||
|
}, 1000);
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
/* Mobile navigation */
|
||
|
$('.js--nav-icon, .js--main-nav a, .logo-black').click(function(element){
|
||
|
var nav = $('.js--main-nav');
|
||
|
var icon = $('.js--nav-icon i');
|
||
|
|
||
|
//Gets the class name of the element that triggered the event
|
||
|
var clicked = element.target.className;
|
||
|
|
||
|
//Exists the function if the menu is closed AND the logo-black element (logo image) was clicked
|
||
|
if (icon.hasClass('ion-navicon-round') && clicked == 'logo-black')
|
||
|
return;
|
||
|
|
||
|
//Opens and closes the menu
|
||
|
if ($(window).width() < 768){
|
||
|
nav.slideToggle(200);
|
||
|
}
|
||
|
|
||
|
//Changes icon states of the menu button
|
||
|
if (icon.hasClass('ion-navicon-round')) {
|
||
|
icon.addClass('ion-close-round');
|
||
|
icon.removeClass('ion-navicon-round');
|
||
|
} else {
|
||
|
icon.addClass('ion-navicon-round');
|
||
|
icon.removeClass('ion-close-round');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(window).resize(function(){
|
||
|
var nav = $('.js--main-nav');
|
||
|
var icon = $('.js--nav-icon i');
|
||
|
|
||
|
if ($(window).width() > 767){
|
||
|
nav.css("display", "block");
|
||
|
icon.addClass('ion-close-round');
|
||
|
icon.removeClass('ion-navicon-round');
|
||
|
} else {
|
||
|
nav.css("display", "none");
|
||
|
icon.addClass('ion-navicon-round');
|
||
|
icon.removeClass('ion-close-round');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
/* Arrow Flip */
|
||
|
function switchArrow(arrow) {
|
||
|
var icon = $(arrow);
|
||
|
if (icon.hasClass('ion-ios-arrow-right')) {
|
||
|
icon.addClass('ion-ios-arrow-down');
|
||
|
icon.removeClass('ion-ios-arrow-right');
|
||
|
} else {
|
||
|
icon.addClass('ion-ios-arrow-right');
|
||
|
icon.removeClass('ion-ios-arrow-down');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$('.js--arrow-icon-1').click(function() {
|
||
|
switchArrow('.js--arrow-icon-1 i');
|
||
|
});
|
||
|
$('.js--arrow-icon-2').click(function() {
|
||
|
switchArrow('.js--arrow-icon-2 i');
|
||
|
});
|
||
|
$('.js--arrow-icon-3').click(function() {
|
||
|
switchArrow('.js--arrow-icon-3 i');
|
||
|
});
|
||
|
$('.js--arrow-icon-4').click(function() {
|
||
|
switchArrow('.js--arrow-icon-4 i');
|
||
|
});
|
||
|
$('.js--arrow-icon-5').click(function() {
|
||
|
switchArrow('.js--arrow-icon-5 i');
|
||
|
});
|
||
|
|
||
|
|
||
|
var code = $('.codemirror-textarea')[0];
|
||
|
var editor_1 = CodeMirror.fromTextArea(code, {
|
||
|
lineNumbers: true,
|
||
|
mode: "css",
|
||
|
theme: "shadowfox"
|
||
|
});
|
||
|
|
||
|
var code = $('.codemirror-textarea')[1];
|
||
|
var readOnlyColors = CodeMirror.fromTextArea(code, {
|
||
|
lineNumbers: true,
|
||
|
mode: "css",
|
||
|
theme: "shadowfox",
|
||
|
readOnly: true
|
||
|
});
|
||
|
|
||
|
$(document).on('click', '.btn-insert-text', function() {
|
||
|
var uct = "/* GPL-3.9 Copyright (C) 2007 Timvde/UserChrome-Tweaks; Code pulled from https://github.com/Timvde/UserChrome-Tweaks */"
|
||
|
var dict = {
|
||
|
'#roundedTabs': ["https://raw.githubusercontent.com/wilfredwee/photon-australis/master/userChrome-dark.css", "/* MIT Copyright (c) 2017 Wilfred Wee; Code pulled from https://raw.githubusercontent.com/wilfredwee/photon-australis/master/userChrome-dark.css */"],
|
||
|
'#hideSidebar': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/sidebar/auto-hide-sidebar.css", uct],
|
||
|
'#bookmarksNewTab': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/toolbars/show-bookmarks-only-on-newtab.css", uct],
|
||
|
'#closeHover': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/tabs/close-button-hover.css", uct],
|
||
|
'#greyscaleFavicons': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/tabs/grayscale-favicon.css", uct],
|
||
|
'#hideFavicons': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/tabs/hide-favicons.css", uct],
|
||
|
'#bottomMacos': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/tabs/tabs-on-bottom-macOS.css", uct],
|
||
|
'#leftClose': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/tabs/x-on-left.css", uct],
|
||
|
'#autoHide': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/toolbars/auto-hide.css", uct],
|
||
|
'#slidingBookmarks': ["https://raw.githubusercontent.com/Timvde/UserChrome-Tweaks/master/toolbars/sliding-bookmarks-bar.css", uct]
|
||
|
}
|
||
|
|
||
|
for (var key in dict) {
|
||
|
if ($(key).prop('checked') == true) {
|
||
|
var url = dict[key][0];
|
||
|
var licence = dict[key][1];
|
||
|
insertText(licence, 1)
|
||
|
readTextFile(url, 1)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
function readTextFile(file, num) {
|
||
|
var rawFile = new XMLHttpRequest();
|
||
|
rawFile.open("GET", file, false);
|
||
|
rawFile.onreadystatechange = function() {
|
||
|
if (rawFile.readyState === 4) {
|
||
|
if (rawFile.status === 200 || rawFile.status == 0) {
|
||
|
var allText = rawFile.responseText;
|
||
|
insertText(allText, num);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
rawFile.send(null);
|
||
|
}
|
||
|
|
||
|
/* Get primary color */
|
||
|
$(document).on('click', '.insert-color', function() {
|
||
|
var accent1 = document.getElementById("accent-1").value;
|
||
|
var accent2 = document.getElementById("accent-2").value;
|
||
|
var accent3 = document.getElementById("accent-3").value;
|
||
|
var shade = document.getElementById("shade").value;
|
||
|
if (accent1 != "#45a1ff") {
|
||
|
insertText("--accent-1: " + accent1 + ";", 0);
|
||
|
}
|
||
|
if (accent2 != "#0a84ff") {
|
||
|
insertText("--accent-2: " + accent2 + ";", 0);
|
||
|
}
|
||
|
if (accent3 != "#0060df") {
|
||
|
insertText("--accent-3: " + accent3 + ";", 0);
|
||
|
}
|
||
|
if (shade == "darker") {
|
||
|
insertText("--tone-1: var(--grey-20);", 0);
|
||
|
insertText("--tone-2: var(--grey-30);", 0);
|
||
|
insertText("--tone-3: var(--grey-40);", 0);
|
||
|
insertText("--tone-4: var(--grey-50);", 0);
|
||
|
insertText("--tone-5: var(--grey-60);", 0);
|
||
|
insertText("--tone-6: var(--grey-70);", 0);
|
||
|
insertText("--tone-7: var(--grey-80);", 0);
|
||
|
insertText("--tone-8: var(--grey-90);", 0);
|
||
|
insertText("--tone-8: #fff;", 0);
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
|
||
|
// Begin inputting of clicked text into editor
|
||
|
function insertText(data, num) {
|
||
|
var cm = $(".CodeMirror")[num].CodeMirror;
|
||
|
var doc = cm.getDoc();
|
||
|
var cursor = doc.getCursor(); // gets the line number in the cursor position
|
||
|
var line = doc.getLine(cursor.line); // get the line contents
|
||
|
var pos = {
|
||
|
line: cursor.line
|
||
|
};
|
||
|
if (line.length === 0) {
|
||
|
// check if the line is empty
|
||
|
// add the data
|
||
|
doc.replaceRange(data, pos);
|
||
|
} else {
|
||
|
// add a new line and the data
|
||
|
doc.replaceRange("\n" + data, pos);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Clear Code Editor */
|
||
|
$(document).on('click', '.btn-remove-text', function() {
|
||
|
editor_1.getDoc().setValue('');
|
||
|
})
|
||
|
|
||
|
/* Clear Code Editor */
|
||
|
$(document).on('click', '.btn-remove-code', function() {
|
||
|
readOnlyColors.getDoc().setValue('');
|
||
|
})
|
||
|
|
||
|
/* Clear Checkboxes */
|
||
|
$(document).on('click', '.clear-boxes', function() {
|
||
|
$('.chrome-options input[type=checkbox]').prop('checked', false);
|
||
|
})
|
||
|
|
||
|
/* Reset Colors */
|
||
|
$(document).on('click', '.clear-colors', function() {
|
||
|
document.getElementById("accent-1").value = "#45a1ff";
|
||
|
document.getElementById("accent-2").value = "#0a84ff";
|
||
|
document.getElementById("accent-3").value = "#0060df";
|
||
|
document.getElementById("shade").value = "default";
|
||
|
})
|
||
|
|
||
|
// Function to download data to a file
|
||
|
function download(data, filename, type) {
|
||
|
var file = new Blob([data], {
|
||
|
type: type
|
||
|
});
|
||
|
if (window.navigator.msSaveOrOpenBlob) // IE10+
|
||
|
window.navigator.msSaveOrOpenBlob(file, filename);
|
||
|
else { // Others
|
||
|
var a = document.createElement("a"),
|
||
|
url = URL.createObjectURL(file);
|
||
|
a.href = url;
|
||
|
a.download = filename;
|
||
|
document.body.appendChild(a);
|
||
|
a.click();
|
||
|
setTimeout(function() {
|
||
|
document.body.removeChild(a);
|
||
|
window.URL.revokeObjectURL(url);
|
||
|
}, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Download CSS */
|
||
|
$(document).on('click', '.download-css', function() {
|
||
|
var data = editor_1.getValue();
|
||
|
download(data, "colorOverrides.css", "css")
|
||
|
})
|
||
|
|
||
|
$(document).on('click', '.download-css-2', function() {
|
||
|
var data = readOnlyColors.getValue();
|
||
|
download(data, "userChrome_customization.css", "css")
|
||
|
})
|
||
|
|
||
|
var gal = document.getElementsByClassName("popup-gallery");
|
||
|
$(gal).magnificPopup({
|
||
|
delegate: 'a',
|
||
|
type: 'image',
|
||
|
tLoading: 'Loading image #%curr%...',
|
||
|
mainClass: 'mfp-img-mobile',
|
||
|
gallery: {
|
||
|
enabled: true,
|
||
|
navigateByImgClick: true,
|
||
|
preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
|
||
|
},
|
||
|
image: {
|
||
|
tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
|
||
|
titleSrc: function(item) {
|
||
|
return item.el.attr('title') + '<small>by Pat Johnson</small>';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var coll = document.getElementsByClassName("collapsible");
|
||
|
var i;
|
||
|
|
||
|
for (i = 0; i < coll.length; i++) {
|
||
|
coll[i].addEventListener("click", function() {
|
||
|
this.classList.toggle("active");
|
||
|
var content = this.nextElementSibling;
|
||
|
if (content.style.maxHeight) {
|
||
|
content.style.maxHeight = null;
|
||
|
} else {
|
||
|
content.style.maxHeight = "29000000px";
|
||
|
}
|
||
|
});
|
||
|
}
|