Merge pull request #1239 from LittleNyima/patch-abcjs

feat: 支持abcjs乐谱渲染
pull/1248/head
Jerry Wong 2 years ago committed by GitHub
commit 5a13f01649
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -787,6 +787,13 @@ fancybox: true
# Tag Plugins settings (標籤外掛)
# --------------------------------------
# abcjs (樂譜渲染)
# See https://github.com/paulrosen/abcjs
# ---------------
abcjs:
enable: false
per_page: true
# mermaid
# see https://github.com/mermaid-js/mermaid
mermaid:
@ -967,3 +974,4 @@ CDN:
# artalk_js:
# artalk_css:
# busuanzi:
# abcjs_basic_js:

@ -31,6 +31,8 @@ div
include ./third-party/math/index.pug
include ./third-party/abcjs/index.pug
if commentsJsLoad
include ./third-party/comments/js.pug

@ -0,0 +1,15 @@
script.
(() => {
function abcjsInit() {
function abcjsFn() {
for (let abcContainer of document.getElementsByClassName("abc-music-sheet")) {
ABCJS.renderAbc(abcContainer, abcContainer.innerHTML, {responsive: 'resize'})
}
}
typeof ABCJS === 'object' ? abcjsFn()
: getScript('!{url_for(theme.asset.abcjs_basic_js)}').then(abcjsFn)
}
window.pjax ? abcjsInit() : document.addEventListener('DOMContentLoaded', abcjsInit)
})()

@ -0,0 +1,6 @@
if theme.abcjs.enable
if theme.abcjs.per_page
if is_post() || is_page()
include ./abcjs.pug
else if page.abcjs
include ./abcjs.pug

@ -208,3 +208,7 @@ docsearch_css:
other_name: docsearch-css
file: dist/style.css
version: 3.3.3
abcjs_basic_js:
name: abcjs
file: dist/abcjs-basic-min.js
version: 6.1.9

@ -0,0 +1,22 @@
/**
* Music Score
* {% score %}
*/
'use strict';
function score(args, content) {
function escapeHtmlTags(s) {
let lookup = {
'&': "&",
'"': """,
'\'': "'",
'<': "&lt;",
'>': "&gt;"
};
return s.replace(/[&"'<>]/g, c => lookup[c]);
}
return `<div class="abc-music-sheet">${escapeHtmlTags(content)}</div>`;
}
hexo.extend.tag.register('score', score, {ends: true});

@ -115,6 +115,14 @@ span.mathjax-overflow
.snackbar-css
border-radius: 5px !important
.abc-music-sheet
margin: 0 0 20px
opacity: 0
transition: opacity .3s
&.abcjs-container
opacity: 1
+maxWidth768()
.fancybox__toolbar__column.is-middle
display: none
display: none

Loading…
Cancel
Save