diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..9051c87 Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..57b77d3 Binary files /dev/null and b/static/favicon.png differ diff --git a/static/vendor/applause-button/applause-button.css b/static/vendor/applause-button/applause-button.css new file mode 100644 index 0000000..1a37eec --- /dev/null +++ b/static/vendor/applause-button/applause-button.css @@ -0,0 +1,3 @@ +/* Via: https://unpkg.com/applause-button/dist/applause-button.css */ + +applause-button{position:relative;cursor:pointer}applause-button .style-root{position:absolute;top:0;left:0;right:0;bottom:0}applause-button .style-root:after{position:absolute;top:0;left:0;right:0;bottom:0;content:" ";display:block;border-radius:50%;border:1px solid}applause-button .style-root:hover:after:not(.clap-limit-exceeded){border-color:inherit}applause-button.loading{opacity:0.5}applause-button .shockwave{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%}applause-button svg{position:absolute;width:60%;height:60%;margin-left:20%;margin-top:20%;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0.8;stroke:none;overflow:visible !important}applause-button svg g.flat{visibility:hidden}applause-button svg g.outline{visibility:visible}applause-button.clapped svg g.flat{visibility:visible}applause-button.clapped svg g.outline{visibility:hidden}applause-button .count-container{position:absolute;top:-40%;width:100%;color:gray;user-select:none}applause-button .count-container .count{margin-left:50%;transform:translateX(-50%);width:1000px;text-align:center}applause-button g.sparkle circle{opacity:0;stroke-width:0}applause-button g.sparkle g:nth-child(1){transform:rotate(0deg) translateX(10px)}applause-button g.sparkle g:nth-child(2){transform:rotate(72deg) translateX(10px)}applause-button g.sparkle g:nth-child(3){transform:rotate(144deg) translateX(10px)}applause-button g.sparkle g:nth-child(4){transform:rotate(216deg) translateX(10px)}applause-button g.sparkle g:nth-child(5){transform:rotate(288deg) translateX(10px)}applause-button:hover:not(.clapped) .shockwave{animation-name:shockwave;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:ease-in}applause-button.clap{animation-name:pulse;animation-duration:0.5s;animation-iteration-count:1}applause-button.clap .sparkle circle{animation-name:explode;animation-duration:0.5s;animation-iteration-count:1}applause-button.clap .count{animation-name:hideThenShow;animation-duration:0.5s;animation-iteration-count:1}@keyframes explode{0%{transform:translateX(10px);opacity:0}20%{opacity:1}50%{opacity:1}100%{opacity:0;transform:translateX(25px)}}@keyframes shockwave{0%{transform:scale(1);box-shadow:0 0 2px;opacity:1}100%{transform:scale(1);opacity:0;box-shadow:0 0 50px, inset 0 0 10px}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes hideThenShow{0%{opacity:1;transform:translateY(0)}20%{opacity:0;transform:translateY(-10px)}50%{transform:translateY(10px)}80%{transform:translateY(10px);opacity:0}100%{opacity:1;transform:translateY(0)}} diff --git a/static/vendor/applause-button/applause-button.js b/static/vendor/applause-button/applause-button.js new file mode 100644 index 0000000..691eb82 --- /dev/null +++ b/static/vendor/applause-button/applause-button.js @@ -0,0 +1,3 @@ +// Via: https://unpkg.com/applause-button/dist/applause-button.js + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n>0),C="addEventListener",v="attached",T="Callback",M="detached",E="extends",b="attributeChanged"+T,g=v+T,y="connected"+T,H="disconnected"+T,w="created"+T,A=M+T,O="ADDITION",_="REMOVAL",N="DOMAttrModified",S="DOMContentLoaded",D="DOMSubtreeModified",k="<",I="=",P=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,F=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],R=[],x=[],V="",z=r.documentElement,U=R.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},j=o.prototype,q=j.hasOwnProperty,B=j.isPrototypeOf,Z=o.defineProperty,G=[],K=o.getOwnPropertyDescriptor,X=o.getOwnPropertyNames,J=o.getPrototypeOf,Q=o.setPrototypeOf,W=!!o.__proto__,Y="__dreCEv1",$=t.customElements,ee=!/^force/.test(n.type)&&!!($&&$.define&&$.get&&$.whenDefined),te=o.create||o,ne=t.Map||function(){var e,t=[],n=[];return{get:function(e){return n[U.call(t,e)]},set:function(r,o){(e=U.call(t,r))<0?n[t.push(r)-1]=o:n[e]=o}}},re=t.Promise||function(e){var t=[],n=!1,r={catch:function(){return r},then:function(e){return t.push(e),n&&setTimeout(o,1),r}};function o(e){for(n=!0;t.length;)t.shift()(e)}return e(o),r},oe=!1,le=te(null),ie=te(null),ae=new ne,ue=function(e){return e.toLowerCase()},ce=o.create||function e(t){return t?(e.prototype=t,new e):this},se=Q||(W?function(e,t){return e.__proto__=t,e}:X&&K?function(){function e(e,t){for(var n,r=X(t),o=0,l=r.length;o1)&&We(this)}}}),de(i,b,{value:function(e){-1
",new me(function(e,t){if(e[0]&&"childList"==e[0].type&&!e[0].removedNodes[0].childNodes.length){var n=(d=K(fe,"innerHTML"))&&d.set;n&&Z(fe,"innerHTML",{set:function(e){for(;this.lastChild;)this.removeChild(this.lastChild);n.call(this,e)}})}t.disconnect(),d=null}).observe(d,{childList:!0,subtree:!0}),d.innerHTML=""),_e||(Q||W?(f=function(e,t){B.call(t,e)||Be(e,t)},p=Be):p=f=function(e,t){e[L]||(e[L]=o(!0),Be(e,t))},pe?(De=!1,function(){var e=K(fe,C),t=e.value,n=function(e){var t=new CustomEvent(N,{bubbles:!0});t.attrName=e,t.prevValue=Me.call(this,e),t.newValue=null,t[_]=t.attrChange=2,be.call(this,e),Te.call(this,t)},r=function(e,t){var n=Ee.call(this,e),r=n&&Me.call(this,e),o=new CustomEvent(N,{bubbles:!0});ge.call(this,e,t),o.attrName=e,o.prevValue=n?r:null,o.newValue=t,n?o.MODIFICATION=o.attrChange=1:o[O]=o.attrChange=0,Te.call(this,o)},o=function(e){var t,n=e.currentTarget,r=n[L],o=e.propertyName;r.hasOwnProperty(o)&&(r=r[o],(t=new CustomEvent(N,{bubbles:!0})).attrName=r.name,t.prevValue=r.value||null,t.newValue=r.value=n[o]||null,null==t.prevValue?t[O]=t.attrChange=0:t.MODIFICATION=t.attrChange=1,Te.call(n,t))};e.value=function(e,l,i){e===N&&this[b]&&this.setAttribute!==r&&(this[L]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",o)),t.call(this,e,l,i)},Z(fe,C,e)}()):me||(z[C](N,Ae),z.setAttribute(L,1),z.removeAttribute(L),De&&(a=function(e){var t,n,r;if(this===e.target){for(r in t=this[L],this[L]=n=c(this),n){if(!(r in t))return u(0,this,r,t[r],n[r],O);if(n[r]!==t[r])return u(1,this,r,t[r],n[r],"MODIFICATION")}for(r in t)if(!(r in n))return u(2,this,r,t[r],n[r],_)}},u=function(e,t,n,r,o,l){var i={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:o};i[l]=e,ze(i)},c=function(e){for(var t,n,r={},o=e.attributes,l=0,i=o.length;l'}).join("")+"\n \n \n \n ",this._styleRootElement=this.querySelector(".style-root"),this._countElement=this.querySelector(".count"),this._updateRootColor(),this._totalClaps=0;var n,r,o,i,a,u=void 0;this._initialClapCount=new Promise(function(e){return u=e}),this._bufferedClaps=0,this._updateClaps=(n=function(){if(e._totalClaps<10){var t=Math.min(e._bufferedClaps,10-e._totalClaps);n=e.api,r=t,o=e.url,fetch(n+"/update-claps"+(o?"?url="+o:""),{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify(r+",3.3.0")}).then(function(e){return e.text()}),e._totalClaps+=t,e._bufferedClaps=0}var n,r,o},r=2e3,o=null,function(){var e=this,t=arguments;clearTimeout(o),o=setTimeout(function(){return n.apply(e,t)},r)}),this.addEventListener("mousedown",function(t){if(0===t.button&&(e.classList.add("clapped"),!e.classList.contains("clap-limit-exceeded"))){var n,r,o=Number(e._countElement.innerHTML.replace(",",""))+1;e.dispatchEvent(new CustomEvent("clapped",{bubbles:!0,detail:{clapCount:o}})),r="clap",(n=e).classList.remove(r),setTimeout(function(){n.classList.add(r)},100),setTimeout(function(){n.classList.remove(r)},1e3),e._bufferedClaps++,e._updateClaps(),setTimeout(function(){e._countElement.innerHTML=l(o)},250),e.multiclap?e._bufferedClaps+e._totalClaps>=10&&e.classList.add("clap-limit-exceeded"):e.classList.add("clap-limit-exceeded")}}),(i=this.api,a=this.url,fetch(i+"/get-claps"+(a?"?url="+a:""),{headers:{"Content-Type":"text/plain"}}).then(function(e){return e.text()})).then(function(t){e.classList.remove("loading");var n=Number(t);u(n),n>0&&(e._countElement.innerHTML=l(n))}),this._connected=!0}}},{key:"attributeChangedCallback",value:function(e,t,n){this._updateRootColor()}},{key:"_updateRootColor",value:function(){if(this._styleRootElement){var e=this.getAttribute("color")||"green",t=this._styleRootElement.style;t.fill=e,t.stroke=e,t.color=e}}},{key:"initialClapCount",get:function(){return this._initialClapCount}},{key:"color",get:function(){return this.getAttribute("color")},set:function(e){e?this.setAttribute("color",e):this.removeAttribute("color"),this._updateRootColor()}},{key:"api",set:function(e){e?this.setAttribute("api",e):this.removeAttribute("api")},get:function(){return this.getAttribute("api")||"https://api.applause-button.com"}},{key:"url",set:function(e){e?this.setAttribute("url",e):this.removeAttribute("url"),this._updateRootColor()},get:function(){return this.getAttribute("url")}},{key:"multiclap",get:function(){return"true"===this.getAttribute("multiclap")},set:function(e){e?this.setAttribute("multiclap",e?"true":"false"):this.removeAttribute("multiclap")}}],[{key:"observedAttributes",get:function(){return["color"]}}]),a}();customElements.define("applause-button",a)}); diff --git a/themes/zenn/templates/site.html b/themes/zenn/templates/site.html index a313d15..7064425 100644 --- a/themes/zenn/templates/site.html +++ b/themes/zenn/templates/site.html @@ -9,6 +9,7 @@ + {% block title %} @@ -27,13 +28,13 @@ <link rel="stylesheet" href="{{ get_url(path="site.css", trailing_slash=false) | safe }}"> {% if page.extra.zenn_applause %} - <link rel="stylesheet" href="https://unpkg.com/applause-button/dist/applause-button.css"> + <link rel="stylesheet" href="{{ get_url(path="vendor/applause-button/applause-button.css", trailing_slash=false) | safe }}"> {% endif %} {% endblock css %} {% block js %} {% if page.extra.zenn_applause %} - <script src="https://unpkg.com/applause-button/dist/applause-button.js"></script> + <script src="{{ get_url(path="vendor/applause-button/applause-button.js", trailing_slash=false) | safe }}"></script> {% endif %} {% endblock js %}