forked from fr/guitar
Edited for FR guitar
This commit is contained in:
BIN
static/favicon.png
Normal file
BIN
static/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
16
static/fonts/liberation-fonts-ttf-2.1.5/AUTHORS
Normal file
16
static/fonts/liberation-fonts-ttf-2.1.5/AUTHORS
Normal file
@ -0,0 +1,16 @@
|
||||
AUTHORS
|
||||
|
||||
Current Contributors (sorted alphabetically):
|
||||
|
||||
- Vishal Vijayraghavan <vishalvvr at fedoraproject dot org>
|
||||
Project Owner/ Maintainer (Current)
|
||||
Red Hat, Inc.
|
||||
|
||||
Previous Contributors
|
||||
- Pravin Satpute <psatpute at redhat dot com>
|
||||
Project Owner/ Maintainer
|
||||
Red Hat, Inc.
|
||||
|
||||
- Steve Matteson
|
||||
Original Designer
|
||||
Ascender, Inc.
|
102
static/fonts/liberation-fonts-ttf-2.1.5/LICENSE
Normal file
102
static/fonts/liberation-fonts-ttf-2.1.5/LICENSE
Normal file
@ -0,0 +1,102 @@
|
||||
Digitized data copyright (c) 2010 Google Corporation
|
||||
with Reserved Font Arimo, Tinos and Cousine.
|
||||
Copyright (c) 2012 Red Hat, Inc.
|
||||
with Reserved Font Name Liberation.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License,
|
||||
Version 1.1.
|
||||
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
|
||||
PREAMBLE The goals of the Open Font License (OFL) are to stimulate
|
||||
worldwide development of collaborative font projects, to support the font
|
||||
creation efforts of academic and linguistic communities, and to provide
|
||||
a free and open framework in which fonts may be shared and improved in
|
||||
partnership with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves.
|
||||
The fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply to
|
||||
any document created using the fonts or their derivatives.
|
||||
|
||||
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such.
|
||||
This may include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components
|
||||
as distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting ? in part or in whole ?
|
||||
any of the components of the Original Version, by changing formats or
|
||||
by porting the Font Software to a new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical writer
|
||||
or other person who contributed to the Font Software.
|
||||
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,in
|
||||
Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the
|
||||
corresponding Copyright Holder. This restriction only applies to the
|
||||
primary font name as presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole, must
|
||||
be distributed entirely under this license, and must not be distributed
|
||||
under any other license. The requirement for fonts to remain under
|
||||
this license does not apply to any document created using the Font
|
||||
Software.
|
||||
|
||||
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are not met.
|
||||
|
||||
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
|
||||
DEALINGS IN THE FONT SOFTWARE.
|
||||
|
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationMono-Bold.ttf
Normal file
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationMono-Bold.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationSans-Bold.ttf
Normal file
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationSans-Bold.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationSerif-Bold.ttf
Normal file
BIN
static/fonts/liberation-fonts-ttf-2.1.5/LiberationSerif-Bold.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
44
static/js/filter.js
Normal file
44
static/js/filter.js
Normal file
@ -0,0 +1,44 @@
|
||||
const filters = document.querySelector(".filters");
|
||||
const buttons = Array.from(filters.querySelectorAll(".button"));
|
||||
const search = document.querySelector("input[type='search']");
|
||||
const form = document.querySelector("form");
|
||||
const songList = document.querySelector(".song-list");
|
||||
|
||||
let selectedCategory = null;
|
||||
|
||||
function buttonToggle(clickedButton) {
|
||||
buttons.forEach(button => {
|
||||
if (button === clickedButton && !button.classList.contains("selected")) {
|
||||
button.classList.add("selected");
|
||||
selectedCategory = button.dataset.category;
|
||||
} else {
|
||||
button.classList.remove("selected");
|
||||
if (button.dataset.category == selectedCategory) selectedCategory = null;
|
||||
}
|
||||
});
|
||||
filterSongs();
|
||||
}
|
||||
|
||||
function filterSongs() {
|
||||
const searchTerm = search.value.trim().toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
||||
const songs = Array.from(songList.children);
|
||||
songs.forEach(song => {
|
||||
const title = song.dataset.title.toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
||||
const matching = title.includes(searchTerm) && (!selectedCategory || song.dataset.category === selectedCategory);
|
||||
song.classList.toggle("hidden", !matching);
|
||||
});
|
||||
}
|
||||
|
||||
// Event listeners
|
||||
search.addEventListener("input", filterSongs);
|
||||
// Filtering happens before the reset itself without this timeout
|
||||
form.addEventListener("reset", () => setTimeout(filterSongs, 0));
|
||||
buttons.forEach(button => button.addEventListener("click", () => buttonToggle(button)));
|
||||
|
||||
// Normalize song titles
|
||||
Array.from(songList.children).forEach(song => {
|
||||
song.dataset.title = song.dataset.title.toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
||||
});
|
||||
|
||||
// Display the filter section on JS-enabled browsers
|
||||
window.addEventListener("load", () => filters.classList.remove = "hidden");
|
35
static/js/song-controls.js
Normal file
35
static/js/song-controls.js
Normal file
@ -0,0 +1,35 @@
|
||||
const controls = document.querySelector(".controls");
|
||||
const song = document.querySelector("iframe.song").contentWindow;
|
||||
|
||||
// Autoscroll
|
||||
var scroll;
|
||||
function pageScroll() {
|
||||
song.scrollBy(0, 1);
|
||||
scroll = setTimeout(pageScroll, 80);
|
||||
}
|
||||
|
||||
document.querySelector("#autoscroll").addEventListener("click", function() {
|
||||
if (this.classList.contains("active")) {
|
||||
clearTimeout(scroll);
|
||||
} else {
|
||||
pageScroll();
|
||||
}
|
||||
this.classList.toggle("active");
|
||||
});
|
||||
|
||||
// Scaling
|
||||
function pageScale(value) {
|
||||
if (value === 0) {
|
||||
song.document.body.style.transform = "scale(1)";
|
||||
return;
|
||||
}
|
||||
const currentScale = parseFloat(song.document.body.style.transform.split("scale(")[1]) || 1;
|
||||
song.document.body.style.transform = "scale(" + (currentScale + value) + ")";
|
||||
}
|
||||
|
||||
controls.querySelector("#font-size-increase").addEventListener("click", () => pageScale(0.1));
|
||||
controls.querySelector("#font-size-decrease").addEventListener("click", () => pageScale(-0.1));
|
||||
controls.querySelector("#font-size-reset").addEventListener("click", () => pageScale(0));
|
||||
|
||||
// Display the controls on JS-enabled browsers
|
||||
window.addEventListener("load", () => controls.classList.remove = "hidden");
|
Reference in New Issue
Block a user