jquery and codemirror upgrades, lint

This commit is contained in:
Koen Lageveen 2019-06-10 10:18:45 +02:00
parent ae2bfaaf86
commit 86255405bb
2 changed files with 255 additions and 250 deletions

View File

@ -16,67 +16,67 @@
<!-- CodeMirror --> <!-- CodeMirror -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/codemirror.min.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/codemirror.min.css">
<!-- CodeMirror Themes --> <!-- CodeMirror Themes -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/3024-day.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/3024-day.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/3024-night.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/3024-night.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/abcdef.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/abcdef.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/ambiance.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/ambiance.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/base16-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/base16-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/base16-light.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/base16-light.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/bespin.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/bespin.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/blackboard.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/blackboard.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/cobalt.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/cobalt.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/colorforth.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/colorforth.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/dracula.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/dracula.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/duotone-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/duotone-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/duotone-light.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/duotone-light.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/erlang-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/erlang-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/hopscotch.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/hopscotch.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/isotope.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/isotope.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/lesser-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/lesser-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/liquibyte.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/liquibyte.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/material.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/material.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/mbo.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/mbo.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/mdn-like.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/mdn-like.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/midnight.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/midnight.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/monokai.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/monokai.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/neo.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/neo.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/night.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/night.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/oceanic-next.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/oceanic-next.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/paraiso-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/paraiso-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/paraiso-light.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/paraiso-light.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/pastel-on-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/pastel-on-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/railscasts.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/railscasts.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/rubyblue.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/rubyblue.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/seti.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/seti.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/the-matrix.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/the-matrix.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/tomorrow-night-bright.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/tomorrow-night-bright.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/tomorrow-night-eighties.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/tomorrow-night-eighties.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/twilight.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/twilight.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/vibrant-ink.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/vibrant-ink.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/xq-dark.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/xq-dark.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/theme/yeti.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/theme/yeti.css">
<!-- CodeMirror JS --> <!-- CodeMirror JS -->
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/codemirror.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/codemirror.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/addon/edit/matchbrackets.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/addon/edit/matchbrackets.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/addon/selection/active-line.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/addon/selection/active-line.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/clike/clike.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/clike/clike.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/commonlisp/commonlisp.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/commonlisp/commonlisp.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/css/css.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/css/css.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/go/go.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/go/go.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/haskell/haskell.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/haskell/haskell.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/htmlmixed/htmlmixed.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/htmlmixed/htmlmixed.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/javascript/javascript.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/javascript/javascript.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/perl/perl.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/perl/perl.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/php/php.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/php/php.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/python/python.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/python/python.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/r/r.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/r/r.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/ruby/ruby.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/ruby/ruby.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/shell/shell.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/shell/shell.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/swift/swift.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/swift/swift.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.43.0/mode/xml/xml.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/codemirror/5.47.0/mode/xml/xml.min.js"></script>
<link href="//cloud.webtype.com/css/7e544c5e-55dc-4b41-a8d3-c13f7e0a13d3.css" rel="stylesheet" type="text/css" /> <link href="//cloud.webtype.com/css/7e544c5e-55dc-4b41-a8d3-c13f7e0a13d3.css" rel="stylesheet" type="text/css" />
@ -228,7 +228,7 @@ function updateGutters(cm) {
</textarea> </textarea>
</form> </form>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="ga.js"></script> <script src="ga.js"></script>
<script src="index.js"></script> <script src="index.js"></script>

387
index.js
View File

@ -1,257 +1,262 @@
/* global CodeMirror window document $ */ /* global CodeMirror window document $ Set */
/* eslint-disable no-implicit-globals */ /* eslint-disable no-implicit-globals */
// CodeMirror // CodeMirror
var editor = CodeMirror.fromTextArea(document.getElementById("code"), { var editor = CodeMirror.fromTextArea(document.getElementById('code'), {
lineNumbers: true, lineNumbers: true,
styleActiveLine: true, styleActiveLine: true,
matchBrackets: true, matchBrackets: true,
theme: "pastel-on-dark", theme: 'pastel-on-dark',
lineWrapping: true lineWrapping: true
}); });
// CodeMirror theme selector // CodeMirror theme selector
var input = document.getElementById("select-theme"); var input = document.getElementById('select-theme');
function selectTheme() { function selectTheme() {
var theme = "monokai"; var theme = 'monokai';
if (input.selectedIndex > -1) { if (input.selectedIndex > -1) {
theme = input.options[input.selectedIndex].innerHTML; theme = input.options[input.selectedIndex].innerHTML;
} }
editor.setOption("theme", theme); editor.setOption('theme', theme);
document.cookie = "theme=" + theme + ";max-age=172800"; document.cookie = 'theme=' + theme + ';max-age=172800';
} }
// ProgrammingFonts font selector // ProgrammingFonts font selector
function selectFont() { function selectFont() {
var font = window.location.hash.substring(1); var font = window.location.hash.substring(1);
if (font === "") { if (font === '') {
font = "input"; font = 'input';
} }
if (font === "input") { if (font === 'input') {
$("pre").css({ fontFamily: "Input Mono, monospace" }); $('pre').css({ fontFamily: 'Input Mono, monospace' });
$("textarea").css({ fontFamily: "Input Mono, monospace" }); $('textarea').css({ fontFamily: 'Input Mono, monospace' });
$(".CodeMirror").css({ fontFamily: "Input Mono, monospace" }); $('.CodeMirror').css({ fontFamily: 'Input Mono, monospace' });
} else { } else {
$("pre").css({ fontFamily: font + ", monospace" }); $('pre').css({ fontFamily: font + ', monospace' });
$("textarea").css({ fontFamily: font + ", monospace" }); $('textarea').css({ fontFamily: font + ', monospace' });
$(".CodeMirror").css({ fontFamily: font + ", monospace" }); $('.CodeMirror').css({ fontFamily: font + ', monospace' });
} }
$("#select-font a[data-value]").removeClass("active"); $('#select-font a[data-value]').removeClass('active');
$("#select-font a[data-value='" + font + "']").addClass("active"); $('#select-font a[data-value=\'' + font + '\']').addClass('active');
document.cookie = "font=" + font + ";max-age=172800"; document.cookie = 'font=' + font + ';max-age=172800';
} }
window.onhashchange = selectFont; window.onhashchange = selectFont;
function setSize() { function setSize() {
var size = $("#size").val(); var size = $('#size').val();
$(".CodeMirror").css({ fontSize: size + "px" }); $('.CodeMirror').css({ fontSize: size + 'px' });
document.cookie = "size=" + size + ";max-age=172800"; document.cookie = 'size=' + size + ';max-age=172800';
} }
function setSpacing() { function setSpacing() {
var spacing = $("#spacing").val(); var spacing = $('#spacing').val();
$(".CodeMirror").css({ lineHeight: spacing }); $('.CodeMirror').css({ lineHeight: spacing });
document.cookie = "spacing=" + spacing + ";max-age=172800"; document.cookie = 'spacing=' + spacing + ';max-age=172800';
} }
function setAntialiasing() { function setAntialiasing() {
if ($("#aliasing").is(":checked")) { if ($('#aliasing').is(':checked')) {
$(".CodeMirror").removeClass("no-smooth"); $('.CodeMirror').removeClass('no-smooth');
document.cookie = "antialiasing=smooth;max-age=172800"; document.cookie = 'antialiasing=smooth;max-age=172800';
} else { } else {
$(".CodeMirror").addClass("no-smooth"); $('.CodeMirror').addClass('no-smooth');
document.cookie = "antialiasing=no-smooth;max-age=172800"; document.cookie = 'antialiasing=no-smooth;max-age=172800';
} }
} }
function selectLanguage() { function selectLanguage() {
var lang = $("#select-language").val(); var lang = $('#select-language').val();
editor.setOption("mode", lang.toLowerCase()); editor.setOption('mode', lang.toLowerCase());
document.cookie = "language=" + lang + ";max-age=172800"; document.cookie = 'language=' + lang + ';max-age=172800';
} }
function renderSelectList() { function renderSelectList() {
var icon = '<svg class="octicon" viewBox="0 0 12 14" version="1.1" width="12" height="14" aria-hidden="true"><path fill-rule="evenodd" d="M11 10h1v3c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h3v1H1v10h10v-3zM6 2l2.25 2.25L5 7.5 6.5 9l3.25-3.25L12 8V2H6z"></path></svg>'; var icon = '<svg class="octicon" viewBox="0 0 12 14" version="1.1" width="12" height="14" aria-hidden="true"><path fill-rule="evenodd" d="M11 10h1v3c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h3v1H1v10h10v-3zM6 2l2.25 2.25L5 7.5 6.5 9l3.25-3.25L12 8V2H6z"></path></svg>';
var pinIcon = '<svg class="octicon octicon-pin" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 1.2V2l.5 1L6 6H2.2c-.44 0-.67.53-.34.86L5 10l-4 5 5-4 3.14 3.14a.5.5 0 0 0 .86-.34V10l3-4.5 1 .5h.8c.44 0 .67-.53.34-.86L10.86.86a.5.5 0 0 0-.86.34z"></path></svg>'; var pinIcon = '<svg class="octicon octicon-pin" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 1.2V2l.5 1L6 6H2.2c-.44 0-.67.53-.34.86L5 10l-4 5 5-4 3.14 3.14a.5.5 0 0 0 .86-.34V10l3-4.5 1 .5h.8c.44 0 .67-.53.34-.86L10.86.86a.5.5 0 0 0-.86.34z"></path></svg>';
var favoritesMap = {}; var favoritesMap = {};
var favorites = [];
$("#select-font").empty(); $('#select-font').empty();
try { try {
var favorites = JSON.parse(localStorage.getItem('favorites')) || []; favorites = JSON.parse(localStorage.getItem('favorites')) || [];
favoritesMap = favorites.reduce(function(acc, alias) { favoritesMap = favorites.reduce(function(acc, alias) {
acc[alias] = true; acc[alias] = true;
return acc; return acc;
}, {}); }, {});
} catch (err) { } catch (err) {
console.error('could not render favorites', err); // eslint-disable-next-line no-console
} console.error('could not render favorites', err);
}
$.getJSON("fonts.json", function(data) { $.getJSON('fonts.json', function(data) {
data.sort(function(a, b) { data.sort(function(a, b) {
if (favoritesMap[a.alias] && !favoritesMap[b.alias]) return -1; if (favoritesMap[a.alias] && !favoritesMap[b.alias]) {return -1;}
if (!favoritesMap[a.alias] && favoritesMap[b.alias]) return 1; if (!favoritesMap[a.alias] && favoritesMap[b.alias]) {return 1;}
if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; if (a.name.toLowerCase() < b.name.toLowerCase()) {return -1;}
if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; if (a.name.toLowerCase() > b.name.toLowerCase()) {return 1;}
return 0; return 0;
}); });
$.each(data, function(k, v) { $.each(data, function(k, v) {
var liga_info = ""; var liga_info = '';
var render_info = ""; var render_info = '';
if (v.ligatures) { if (v.ligatures) {
liga_info = ", ligatures"; liga_info = ', ligatures';
} }
if (v.rendering === "bitmap") { if (v.rendering === 'bitmap') {
render_info = ", bitmap"; render_info = ', bitmap';
} }
$("#select-font").append( $('#select-font').append(
"<div class='entry'>" + '<div class=\'entry\'>' +
"<a href='#" + v.alias + "' data-value=\"" + v.alias + "\">" + '<a href="#' + v.alias + '" data-value="' + v.alias + '">' +
"<span class='name'>" + v.name + "</span>" + '<span class=\'name\'>' + v.name + '</span>' +
"<span class='details'>" + v.author + " (" + v.year + ") — " + v.style + render_info + liga_info + "</span>" + '<span class=\'details\'>' + v.author + ' (' + v.year + ') — ' + v.style + render_info + liga_info + '</span>' +
"</a>" + '</a>' +
"<a class=\"favoritelink" + (favoritesMap[v.alias] ? ' pinned' : '') + "\" onclick=\"toggleFavorite('" + v.alias + "')\">" + '<a class="favoritelink' + (favoritesMap[v.alias] ? ' pinned' : '') + '" onclick="toggleFavorite(\'' + v.alias + '\')">' +
pinIcon + pinIcon +
"</a>" + '</a>' +
"<a class='website' href='" + v.website + "' rel=external> <span>Info & Download</span>" + icon + "</a></div>" '<a class=\'website\' href=\'' + v.website + '\' rel=external> <span>Info & Download</span>' + icon + '</a></div>'
); );
}); });
selectFont(); selectFont();
}); });
} }
// eslint-disable-next-line no-unused-vars
function toggleFavorite(alias) { function toggleFavorite(alias) {
try { var favorites = [];
var favorites = JSON.parse(localStorage.getItem('favorites')) || []; try {
if (favorites.indexOf(alias) > -1) { favorites = JSON.parse(localStorage.getItem('favorites')) || [];
favorites = favorites.filter(function(v) { if (favorites.indexOf(alias) > -1) {
return v !== alias; favorites = favorites.filter(function(v) {
}); return v !== alias;
} else { });
favorites.push(alias); } else {
} favorites.push(alias);
localStorage.setItem('favorites', JSON.stringify(Array.from(new Set(favorites)))); }
} catch (err) { localStorage.setItem('favorites', JSON.stringify(Array.from(new Set(favorites))));
console.error('could not save favorite', err); } catch (err) {
} // eslint-disable-next-line no-console
renderSelectList(); console.error('could not save favorite', err);
return false; }
renderSelectList();
return false;
} }
function nextFont() { function nextFont() {
var activeLink = document.querySelector(".entry .active"); var activeLink = document.querySelector('.entry .active');
var activeEntry = activeLink.parentNode; var activeEntry = activeLink.parentNode;
var next = activeEntry.nextSibling; var next = activeEntry.nextSibling;
if (next && next.matches(".entry")) { if (next && next.matches('.entry')) {
next.querySelector("a").click(); next.querySelector('a').click();
next.scrollIntoView(); next.scrollIntoView();
} }
} }
function previousFont() { function previousFont() {
var activeLink = document.querySelector(".entry .active"); var activeLink = document.querySelector('.entry .active');
var activeEntry = activeLink.parentNode; var activeEntry = activeLink.parentNode;
var next = activeEntry.previousSibling; var next = activeEntry.previousSibling;
if (next && next.matches(".entry")) { if (next && next.matches('.entry')) {
next.querySelector("a").click(); next.querySelector('a').click();
next.scrollIntoView(); next.scrollIntoView();
} }
} }
function increaseFontSize() { function increaseFontSize() {
var sizeEl = document.getElementById("size"); var sizeEl = document.getElementById('size');
sizeEl.value = Number(sizeEl.value) + 1; sizeEl.value = Number(sizeEl.value) + 1;
sizeEl.onchange(); sizeEl.onchange();
} }
function decreaseFontSize() { function decreaseFontSize() {
var sizeEl = document.getElementById("size"); var sizeEl = document.getElementById('size');
sizeEl.value = Number(sizeEl.value) - 1; sizeEl.value = Number(sizeEl.value) - 1;
sizeEl.onchange(); sizeEl.onchange();
} }
$(document).ready(function() { $(document).ready(function() {
var cookieValueSpacing = document.cookie.replace(/(?:(?:^|.*;\s*)spacing\s*=\s*([^;]*).*$)|^.*$/, "$1"); var cookieValueSpacing = document.cookie.replace(/(?:(?:^|.*;\s*)spacing\s*=\s*([^;]*).*$)|^.*$/, '$1');
var cookieValueSize = document.cookie.replace(/(?:(?:^|.*;\s*)size\s*=\s*([^;]*).*$)|^.*$/, "$1"); var cookieValueSize = document.cookie.replace(/(?:(?:^|.*;\s*)size\s*=\s*([^;]*).*$)|^.*$/, '$1');
var cookieValueAntialiasing = document.cookie.replace(/(?:(?:^|.*;\s*)antialiasing\s*=\s*([^;]*).*$)|^.*$/, "$1"); var cookieValueAntialiasing = document.cookie.replace(/(?:(?:^|.*;\s*)antialiasing\s*=\s*([^;]*).*$)|^.*$/, '$1');
var cookieValueTheme = document.cookie.replace(/(?:(?:^|.*;\s*)theme\s*=\s*([^;]*).*$)|^.*$/, "$1"); var cookieValueTheme = document.cookie.replace(/(?:(?:^|.*;\s*)theme\s*=\s*([^;]*).*$)|^.*$/, '$1');
var cookieValueLanguage = document.cookie.replace(/(?:(?:^|.*;\s*)language\s*=\s*([^;]*).*$)|^.*$/, "$1"); var cookieValueLanguage = document.cookie.replace(/(?:(?:^|.*;\s*)language\s*=\s*([^;]*).*$)|^.*$/, '$1');
if (cookieValueSpacing !== "") { if (cookieValueSpacing !== '') {
$("#spacing").val(cookieValueSpacing); $('#spacing').val(cookieValueSpacing);
} }
if (cookieValueSize !== "") { if (cookieValueSize !== '') {
$("#size").val(cookieValueSize); $('#size').val(cookieValueSize);
} }
if (cookieValueAntialiasing === "smooth") { if (cookieValueAntialiasing === 'smooth') {
$("#aliasing").prop("checked", true); $('#aliasing').prop('checked', true);
} else if (cookieValueAntialiasing === "no-smooth") { } else if (cookieValueAntialiasing === 'no-smooth') {
$("#aliasing").prop("checked", false); $('#aliasing').prop('checked', false);
} }
if (cookieValueTheme !== "") { if (cookieValueTheme !== '') {
$("#select-theme").val(cookieValueTheme); $('#select-theme').val(cookieValueTheme);
} }
if (cookieValueLanguage !== "") { if (cookieValueLanguage !== '') {
$("#select-language").val(cookieValueLanguage); $('#select-language').val(cookieValueLanguage);
} }
selectTheme(); selectTheme();
setSize(); setSize();
setSpacing(); setSpacing();
setAntialiasing(); setAntialiasing();
selectLanguage(); selectLanguage();
renderSelectList(); renderSelectList();
$("#theme-next").click(function() { $('#theme-next').click(function() {
$("#select-theme :selected").next().prop("selected", true); $('#select-theme :selected').next().prop('selected', true);
selectTheme(); selectTheme();
}); });
$("#theme-previous").click(function() { $('#theme-previous').click(function() {
$("#select-theme :selected").prev().prop("selected", true); $('#select-theme :selected').prev().prop('selected', true);
selectTheme(); selectTheme();
}); });
$("body").on("keydown", function(event) { $('body').on('keydown', function(event) {
if ( if (
event.target === document.querySelector(".select-list") event.target === document.querySelector('.select-list')
&& ! event.ctrlKey && ! event.ctrlKey
&& ! event.altKey && ! event.altKey
&& ! event.metaKey && ! event.metaKey
&& ! event.shiftKey && ! event.shiftKey
) { ) {
if (event.key === "ArrowUp") { if (event.key === 'ArrowUp') {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
previousFont(); previousFont();
return; return;
} else if (event.key === "ArrowDown") { } else if (event.key === 'ArrowDown') {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
nextFont(); nextFont();
return; return;
} }
} }
if (event.ctrlKey || event.metaKey) { if (event.ctrlKey || event.metaKey) {
if (event.key === "-") { if (event.key === '-') {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
decreaseFontSize(); decreaseFontSize();
return;
} else if (event.key === "=") { } else if (event.key === '=') {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
increaseFontSize(); increaseFontSize();
return;
} }
} }
}); });
}); });