├── .gitignore ├── .jpmignore ├── LICENSE ├── README.md ├── data ├── icon128.png ├── icon16.png ├── icon48.png ├── mplus-1p-bold-sub-woff.css ├── pace-option.js ├── pace.css ├── pace.min.js ├── starlight-loading.css └── starlight-loading.js ├── doc ├── demo.gif └── deploy.md ├── index.js ├── manifest.json ├── package.json ├── starlight-loading-latest.update.rdf ├── starlight-loading.min.css ├── starlight-loading.min.js ├── starlight_loading-latest.xpi ├── test.html └── test └── test-index.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ -------------------------------------------------------------------------------- /.jpmignore: -------------------------------------------------------------------------------- 1 | .git 2 | doc 3 | node_modules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 megane42 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Starlight Loading 2 | 3 | > Anytime, Anywhere with Cinderella. 4 | 5 | ![demo](doc/demo.gif) 6 | 7 | * **Starlight Loading** is a set of Firefox / Chrome Addon and Javascript Component. 8 | * If you are a Firefox / Chrome user: 9 | * You can see a starry loading screen whenever you open a website. 10 | * If you are a web master: 11 | * You can introduce a starry loading screen into your website. 12 | 13 | ## For Firefox / Chrome User 14 | 15 | ### Install 16 | 17 | * Install add-on from http://starlight.tsudanuma-studio.net/ 18 | 19 | ### Caveat 20 | 21 | * I **DO NOT** assure that Starlight Loading works on every site without problems. 22 | * I cannot be responsible for any trouble caused by using this add-on. 23 | 24 | ## For Web M@ster 25 | 26 | ### Install 27 | 28 | * Download these 2 files: 29 | * [starlight-loading.min.js](starlight-loading.min.js) 30 | * [starlight-loading.min.css](starlight-loading.min.css) 31 | 32 | * Add 2 lines into your page: 33 | 34 | ```html 35 | 36 | 37 | 38 | ... 39 | ``` 40 | 41 | The above sample is equivarent to the following: 42 | 43 | ```html 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ... 52 | ``` 53 | 54 | * See also: [Build JS & CSS](#build-js--css) 55 | 56 | ### Supported Browsers 57 | 58 | * Recent browsers 59 | * Smartphones are NOT supported 60 | 61 | ## For Contributor 62 | 63 | ### Install 64 | 65 | * `$ git clone https://github.com/megane42/starlight-loading.git` 66 | * `$ cd starlight-loading` 67 | * `$ brew install node` 68 | 69 | ### Build JS & CSS 70 | 71 | * `$ npm install` 72 | * `$ npm run build` 73 | * Sometime it doesn't work well... 74 | 75 | ### Build & Run as a Firefox Addon 76 | 77 | * `$ npm install jpm --global` 78 | * `$ jpm run` 79 | 80 | ### Build & Run as a Chrome Addon 81 | 82 | * Open `chrome://settings/` in Chrome 83 | * Click Developer mode > Load unpacked extensions... 84 | * Select starlight-loading directory 85 | 86 | ### How does it works? 87 | 88 | FIXME 89 | 90 | ## Credits 91 | 92 | * Progress bar: [Pace.js](http://github.hubspot.com/pace/docs/welcome/) 93 | * Web font: [M+ Fonts](https://mplus-fonts.osdn.jp/) 94 | * Heart icon & some css advice : [@mikeda3](https://github.com/mikeda3) 95 | * Conversely, Starlight Loading is not endorsed by nor affiliated with BANDAI NAMCO. 96 | 97 | ## Author 98 | 99 | * megane42 100 | * https://twitter.com/megane42 101 | * https://deresute.me/582302781 102 | -------------------------------------------------------------------------------- /data/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megane42/starlight-loading/30b96c2b17b438048bd51b30a4a83f61f25f6de2/data/icon128.png -------------------------------------------------------------------------------- /data/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megane42/starlight-loading/30b96c2b17b438048bd51b30a4a83f61f25f6de2/data/icon16.png -------------------------------------------------------------------------------- /data/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megane42/starlight-loading/30b96c2b17b438048bd51b30a4a83f61f25f6de2/data/icon48.png -------------------------------------------------------------------------------- /data/mplus-1p-bold-sub-woff.css: -------------------------------------------------------------------------------- 1 | /* 2 | * NOTE: 3 | * Since downloading web font via CORS is not allowed, I serialized the font and put it directly. 4 | * See: http://stackoverflow.com/questions/24357596/firefox-extension-custom-fonts 5 | * 6 | * 1. Get the subset of font which has only characters I use: 7 | * http://mplus.font-face.jp/ 8 | * 9 | * 2. Encode it: 10 | * http://dopiaza.org/tools/datauri/index.php 11 | */ 12 | 13 | @font-face { 14 | font-family: 'M+ 1p bold'; 15 | src: url(data:application/octet-stream;base64,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) format('woff'); 16 | } 17 | -------------------------------------------------------------------------------- /data/pace-option.js: -------------------------------------------------------------------------------- 1 | window.paceOptions = { 2 | // wait for handler to be registered 3 | startOnPageLoad: false 4 | }; 5 | -------------------------------------------------------------------------------- /data/pace.css: -------------------------------------------------------------------------------- 1 | .pace { 2 | -webkit-pointer-events: none; 3 | pointer-events: none; 4 | 5 | -webkit-user-select: none; 6 | -moz-user-select: none; 7 | user-select: none; 8 | 9 | z-index: 20000; 10 | position: fixed; 11 | left: 82px; 12 | bottom: 95px; 13 | height: 14px; 14 | width: 420px; 15 | background: #1d1d1d; 16 | border: 0px; 17 | 18 | overflow: hidden; 19 | } 20 | 21 | .pace .pace-progress { 22 | -webkit-box-sizing: border-box; 23 | -moz-box-sizing: border-box; 24 | -ms-box-sizing: border-box; 25 | -o-box-sizing: border-box; 26 | box-sizing: border-box; 27 | 28 | -webkit-transform: translate3d(0, 0, 0); 29 | -moz-transform: translate3d(0, 0, 0); 30 | -ms-transform: translate3d(0, 0, 0); 31 | -o-transform: translate3d(0, 0, 0); 32 | transform: translate3d(0, 0, 0); 33 | 34 | position: fixed; 35 | z-index: 20000; 36 | display: block; 37 | position: absolute; 38 | top: 0; 39 | right: 100%; 40 | height: 100%; 41 | width: 100%; 42 | background: linear-gradient(to bottom, #71dbf6, #1babed); 43 | } 44 | 45 | .pace.pace-inactive { 46 | display: none; 47 | } -------------------------------------------------------------------------------- /data/pace.min.js: -------------------------------------------------------------------------------- 1 | /*! pace 1.0.0 */ 2 | (function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=[].slice,Y={}.hasOwnProperty,Z=function(a,b){function c(){this.constructor=a}for(var d in b)Y.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},$=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];cQ;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
\n
\n
\n
',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); -------------------------------------------------------------------------------- /data/starlight-loading.css: -------------------------------------------------------------------------------- 1 | .starlight-loading div { 2 | margin: 0px; 3 | padding: 0px; 4 | box-sizing: content-box; 5 | } 6 | 7 | .starlight-loading p { 8 | margin: 0px; 9 | padding: 0px; 10 | box-sizing: content-box; 11 | } 12 | 13 | .starlight-back { 14 | top: 0px; 15 | left: 0px; 16 | width: 100%; 17 | height: 100vh; 18 | background: #1d1d1d; 19 | z-index: 15000; 20 | position: fixed; 21 | } 22 | 23 | .starlight-panel { 24 | border: 2px #ddd solid; 25 | border-radius: 10px; 26 | background: linear-gradient(#c6c6c6, #b5b5b5); 27 | width: 479px; 28 | height: 139px; 29 | z-index: 16000; 30 | position: fixed; 31 | bottom: 30px; 32 | left: 50px; 33 | box-shadow: 4px 4px 10px #090909; 34 | } 35 | 36 | .starlight-panel p { 37 | color: #363636; 38 | font-size: 17px; 39 | font-family: 'M+ 1p bold'; 40 | line-height: 1.4em; 41 | transform: rotate(0.028deg); 42 | } 43 | 44 | .starlight-panel .message-up { 45 | margin: 0px; 46 | padding: 0px; 47 | text-align: left; 48 | position: relative; 49 | top: 32px; 50 | left: 128px; 51 | } 52 | 53 | .starlight-panel .message-down { 54 | margin: 0px; 55 | padding: 0px; 56 | text-align: center; 57 | position: relative; 58 | top: 63px; 59 | } 60 | 61 | .starlight-panel .progress-border { 62 | border: 1px #000 solid; 63 | border-radius: 3px; 64 | width: 424px; 65 | height: 18px; 66 | z-index: 17000; 67 | position: fixed; 68 | left: 79px; 69 | bottom: 92px; 70 | } 71 | 72 | .starlight-ratio { 73 | bottom: 114px; 74 | left: 355px; 75 | z-index: 17000; 76 | position: fixed; 77 | color: #363636; 78 | font-size: 16px; 79 | font-weight: bold; 80 | font-family: 'M+ 1p bold'; 81 | line-height: 1.6em; 82 | /* for anti alias */ 83 | transform: rotate(0.028deg); 84 | } 85 | 86 | .starlight-banner p { 87 | bottom: 22px; 88 | right: 100px; 89 | z-index: 16000; 90 | position: fixed; 91 | color: #fff; 92 | font-size: 40px; 93 | font-family: 'M+ 1p bold'; 94 | line-height: 1.4em; 95 | } 96 | 97 | .starlight-loading.hide { 98 | display: none; 99 | } 100 | 101 | .starlight-loading .heart { 102 | bottom: 13px; 103 | right: 0; 104 | z-index: 16000; 105 | position: fixed; 106 | width: 104.6px; 107 | height: 95.4px; 108 | margin: 20px; 109 | background: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22104.6px%22%20height%3D%2295.4px%22%20viewBox%3D%220%200%20104.6%2095.4%22%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E.st0%7Bfill%3A%23FFFFFF%3B%7D%3C%2Fstyle%3E%3Cg%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M69.5%2C28c-7.7%2C0-16.2%2C3.7-20.2%2C11.8l-0.9%2C2C46%2C47.1%2C46.1%2C52%2C46.1%2C53.1c0.4%2C10.5%2C7.6%2C12.9%2C9%2C22c1.6%2C10-5.6%2C17.2-6.2%2C20.2c0%2C0%2C0.1%2C0.1%2C0.5%2C0.1c0.4%2C0%2C0.8-0.1%2C1.1-0.3c1.6-1%2C39.9-24.7%2C39.9-47.8C90.4%2C34.6%2C79.9%2C28%2C69.5%2C28z%20M71.7%2C61.1c-1.4-11.1-2.4-12.5-11.5-14.1c9.1-1.7%2C10.2-3%2C11.5-14.1c1.4%2C11.1%2C2.4%2C12.5%2C11.5%2C14.1C74.1%2C48.6%2C73%2C49.9%2C71.7%2C61.1z%20M62.4%2C72.6c-0.9-7.3-1.6-8.1-7.5-9.2c5.9-1.1%2C6.6-2%2C7.5-9.2c0.9%2C7.3%2C1.6%2C8.1%2C7.5%2C9.2C64%2C64.5%2C63.3%2C65.4%2C62.4%2C72.6z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M8.6%2C52.8l-5.3%2C4.7c-0.4%2C0.4-0.1%2C1.1%2C0.5%2C1l5.9-1.3C9.2%2C55.8%2C8.8%2C54.3%2C8.6%2C52.8z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M8.3%2C49.1c0-1.5%2C0.1-2.9%2C0.4-4.3l-8.3%2C1.4c-0.6%2C0.1-0.7%2C0.9-0.1%2C1.1l8%2C3.4C8.3%2C50.1%2C8.3%2C49.6%2C8.3%2C49.1z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M52.2%2C75.6c-0.5-3.5-2.1-5.8-3.9-8.5c-2.3-3.4-4.9-7.3-5.2-13.9c-0.1-2.4%2C0.1-7.3%2C2.6-12.7L46%2C40c-3.8-6.5-10.8-8.8-16.4-8.8c-5.6%2C0-10.4%2C1.9-13.7%2C5.6c-2.9%2C3.2-4.6%2C7.7-4.6%2C12.3c0%2C9.4%2C6.6%2C19.9%2C19%2C30.3c6.9%2C5.8%2C13.7%2C9.9%2C17.2%2C11.9c0.2-0.3%2C0.3-0.6%2C0.5-0.9C50.2%2C86.8%2C53.1%2C81.8%2C52.2%2C75.6z%20M21.7%2C48.7c-1.6%2C0-2.9-1.5-2.9-3.3c0-1.8%2C1.3-3.3%2C2.9-3.3c1.6%2C0%2C2.9%2C1.5%2C2.9%2C3.3C24.6%2C47.2%2C23.3%2C48.7%2C21.7%2C48.7z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M57.1%2C16.1c-1.1%2C0-2%2C0.9-2%2C2c0%2C0.9%2C0.6%2C1.6%2C1.4%2C1.9c-0.4%2C1.2-1.6%2C4.2-4.4%2C4.2c-2.9%2C0-4.1-4.5-4.4-6.1c1.1-0.3%2C1.9-1.2%2C1.9-2.4c0-1.4-1.1-2.5-2.5-2.5c-1.4%2C0-2.5%2C1.1-2.5%2C2.5c0%2C1.2%2C0.8%2C2.2%2C1.9%2C2.4c-0.3%2C1.5-1.5%2C6.1-4.4%2C6.1c-2.9%2C0-4-3.1-4.4-4.3c0.8-0.3%2C1.4-1%2C1.4-1.9c0-1.1-0.9-2-2-2c-1.1%2C0-2%2C0.9-2%2C2c0%2C1%2C0.7%2C1.8%2C1.6%2C2l1.9%2C10.8c0%2C0.2%2C0.2%2C0.4%2C0.5%2C0.4h16c0.2%2C0%2C0.4-0.2%2C0.5-0.4l2-10.7c0.9-0.2%2C1.6-1%2C1.6-1.9C59.1%2C17%2C58.2%2C16.1%2C57.1%2C16.1z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat; 110 | -webkit-animation: spinner 2s infinite linear; 111 | -moz-animation: spinner 2s infinite linear; 112 | -o-animation: spinner 2s infinite linear; 113 | animation: spinner 2s infinite linear; 114 | perspective: 500px; 115 | transform-style: preserve-3d; 116 | } 117 | 118 | .starlight-loading .heart svg { 119 | width: 100%; 120 | } 121 | 122 | @-webkit-keyframes spinner { 123 | 0% { 124 | transform: translateX(50%); 125 | -webkit-transform: rotate3d(0, 1, 0, 0deg); 126 | -ms-transform: rotate3d(0, 1, 0, 0deg); 127 | -o-transform: rotate3d(0, 1, 0, 0deg); 128 | transform: rotate3d(0, 1, 0, 0deg); 129 | } 130 | 131 | 50% { 132 | transform: translateX(50%); 133 | -webkit-transform: rotate3d(0, 1, 0, 180deg); 134 | -ms-transform: rotate3d(0, 1, 0, 180deg); 135 | -o-transform: rotate3d(0, 1, 0, 180deg); 136 | transform: rotate3d(0, 1, 0, 180deg); 137 | } 138 | 139 | 100% { 140 | transform: translateX(50%); 141 | -webkit-transform: rotate3d(0, 1, 0, 360deg); 142 | -ms-transform: rotate3d(0, 1, 0, 360deg); 143 | -o-transform: rotate3d(0, 1, 0, 360deg); 144 | transform: rotate3d(0, 1, 0, 360deg); 145 | } 146 | } 147 | 148 | @-moz-keyframes spinner { 149 | 0% { 150 | -webkit-transform: rotate3d(0, 1, 0, 0deg); 151 | -ms-transform: rotate3d(0, 1, 0, 0deg); 152 | -o-transform: rotate3d(0, 1, 0, 0deg); 153 | transform: rotate3d(0, 1, 0, 0deg); 154 | } 155 | 156 | 50% { 157 | -webkit-transform: rotate3d(0, 1, 0, 180deg); 158 | -ms-transform: rotate3d(0, 1, 0, 180deg); 159 | -o-transform: rotate3d(0, 1, 0, 180deg); 160 | transform: rotate3d(0, 1, 0, 180deg); 161 | } 162 | 163 | 100% { 164 | -webkit-transform: rotate3d(0, 1, 0, 360deg); 165 | -ms-transform: rotate3d(0, 1, 0, 360deg); 166 | -o-transform: rotate3d(0, 1, 0, 360deg); 167 | transform: rotate3d(0, 1, 0, 360deg); 168 | } 169 | } 170 | 171 | @-ms-keyframes spinner { 172 | 0% { 173 | -webkit-transform: rotate3d(0, 1, 0, 0deg); 174 | -ms-transform: rotate3d(0, 1, 0, 0deg); 175 | -o-transform: rotate3d(0, 1, 0, 0deg); 176 | transform: rotate3d(0, 1, 0, 0deg); 177 | } 178 | 179 | 50% { 180 | -webkit-transform: rotate3d(0, 1, 0, 180deg); 181 | -ms-transform: rotate3d(0, 1, 0, 180deg); 182 | -o-transform: rotate3d(0, 1, 0, 180deg); 183 | transform: rotate3d(0, 1, 0, 180deg); 184 | } 185 | 186 | 100% { 187 | -webkit-transform: rotate3d(0, 1, 0, 360deg); 188 | -ms-transform: rotate3d(0, 1, 0, 360deg); 189 | -o-transform: rotate3d(0, 1, 0, 360deg); 190 | transform: rotate3d(0, 1, 0, 360deg); 191 | } 192 | } 193 | 194 | @-o-keyframes spinner { 195 | 0% { 196 | -webkit-transform: rotate3d(0, 1, 0, 0deg); 197 | -ms-transform: rotate3d(0, 1, 0, 0deg); 198 | -o-transform: rotate3d(0, 1, 0, 0deg); 199 | transform: rotate3d(0, 1, 0, 0deg); 200 | } 201 | 202 | 50% { 203 | -webkit-transform: rotate3d(0, 1, 0, 180deg); 204 | -ms-transform: rotate3d(0, 1, 0, 180deg); 205 | -o-transform: rotate3d(0, 1, 0, 180deg); 206 | transform: rotate3d(0, 1, 0, 180deg); 207 | } 208 | 209 | 100% { 210 | -webkit-transform: rotate3d(0, 1, 0, 360deg); 211 | -ms-transform: rotate3d(0, 1, 0, 360deg); 212 | -o-transform: rotate3d(0, 1, 0, 360deg); 213 | transform: rotate3d(0, 1, 0, 360deg); 214 | } 215 | } 216 | 217 | @keyframes spinner { 218 | 0% { 219 | -webkit-transform: rotate3d(0, 1, 0, 0deg); 220 | -ms-transform: rotate3d(0, 1, 0, 0deg); 221 | -o-transform: rotate3d(0, 1, 0, 0deg); 222 | transform: rotate3d(0, 1, 0, 0deg); 223 | } 224 | 225 | 50% { 226 | -webkit-transform: rotate3d(0, 1, 0, 180deg); 227 | -ms-transform: rotate3d(0, 1, 0, 180deg); 228 | -o-transform: rotate3d(0, 1, 0, 180deg); 229 | transform: rotate3d(0, 1, 0, 180deg); 230 | } 231 | 232 | 100% { 233 | -webkit-transform: rotate3d(0, 1, 0, 360deg); 234 | -ms-transform: rotate3d(0, 1, 0, 360deg); 235 | -o-transform: rotate3d(0, 1, 0, 360deg); 236 | transform: rotate3d(0, 1, 0, 360deg); 237 | } 238 | } -------------------------------------------------------------------------------- /data/starlight-loading.js: -------------------------------------------------------------------------------- 1 | // Define as a global param in order to make it disconnectable. 2 | var observer = new MutationObserver(function (mutation){ 3 | // When pace-progress's "data-progress-text" is mutated, the following code runs. 4 | var progressRatio = mutation[0].target.getAttribute("data-progress-text"); 5 | document.getElementsByClassName("starlight-ratio")[0].textContent = progressRatio; 6 | }); 7 | 8 | Pace.on('start', function() { 9 | var wrapper = document.createElement('div'); 10 | var back = document.createElement('div'); 11 | var banner = document.createElement('div'); 12 | var panel = document.createElement('div'); 13 | var ratio = document.createElement('div'); 14 | 15 | wrapper.className = 'starlight-loading'; 16 | back.className = 'starlight-back'; 17 | banner.className = 'starlight-banner'; 18 | panel.className = 'starlight-panel'; 19 | ratio.className = 'starlight-ratio'; 20 | 21 | // -------------------------------------------------- 22 | // Setup starlight-panel 23 | 24 | var message_up = document.createElement('p'); 25 | var message_dn = document.createElement('p'); 26 | message_up.className = 'message-up'; 27 | message_dn.className = 'message-down'; 28 | message_up.appendChild(document.createTextNode('データダウンロード中')); 29 | message_dn.appendChild(document.createTextNode('※通信環境の良い所で実行してください')); 30 | panel.appendChild(message_up); 31 | panel.appendChild(message_dn); 32 | 33 | var progress_border = document.createElement('div'); 34 | progress_border.className = 'progress-border'; 35 | panel.appendChild(progress_border); 36 | 37 | // -------------------------------------------------- 38 | // Setup starlight-banner 39 | 40 | var nowLoading = document.createElement('p'); 41 | nowLoading.appendChild(document.createTextNode('Now Loading...')); 42 | banner.appendChild(nowLoading); 43 | 44 | var heart = document.createElement('div'); 45 | heart.className = 'heart'; 46 | banner.appendChild(heart); 47 | 48 | // -------------------------------------------------- 49 | // Setup starlight-ratio 50 | 51 | // check if pace-progress's "data-progress-text" is mutated by pace.js 52 | var progressElem = document.getElementsByClassName("pace-progress")[0]; 53 | observer.observe(progressElem, {attributes: true, attributeFilter: ["data-progress-text"]}); 54 | 55 | // -------------------------------------------------- 56 | // Integrate 57 | 58 | wrapper.appendChild(back); 59 | wrapper.appendChild(banner); 60 | wrapper.appendChild(panel); 61 | wrapper.appendChild(ratio); 62 | document.body.appendChild(wrapper); 63 | }); 64 | 65 | Pace.on('done', function() { 66 | var wrapper = document.getElementsByClassName("starlight-loading")[0]; 67 | wrapper.classList.add("hide"); 68 | observer.disconnect(); 69 | }); 70 | 71 | // support no smartphones 72 | if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)){ 73 | Pace.start(); 74 | } 75 | -------------------------------------------------------------------------------- /doc/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megane42/starlight-loading/30b96c2b17b438048bd51b30a4a83f61f25f6de2/doc/demo.gif -------------------------------------------------------------------------------- /doc/deploy.md: -------------------------------------------------------------------------------- 1 | # デプロイ方法 2 | 3 | ## Firefox 4 | 5 | * package.json のバージョンを最新の値に変更 6 | * ルートディレクトリから古い xpi を削除 7 | * `$ jpm sign --api-key ${AMO_API_KEY} --api-secret ${AMO_API_SECRET}` 8 | * キーとシークレット: https://addons.mozilla.org/en-US/developers/addon/api/key/ 9 | * ダウンロードされた署名済みの xpi を starlight_loading-latest.xpi にリネーム 10 | * starlight-loading-latest.update.rdf を開いてバージョンを最新の値に変更 11 | * `$ git push origin master` 12 | * `$ git checkout gh-pages` 13 | * `$ git merge master` 14 | * `$ git push origin gh-pages` 15 | 16 | ## Chrome 17 | 18 | * manifest.json のバージョンを最新の値に変更 19 | * 必要なファイルだけ zip で固める 20 | * https://chrome.google.com/webstore/developer/dashboard 21 | * 新しいアイテムを追加(初回)or 編集する(更新時) 22 | * zip をアップロード 23 | 24 | ## JS / CSS 25 | 26 | * `$ npm run build-js` 27 | * `$ npm run build-css` 28 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var data = require("sdk/self").data; 2 | var pageMod = require("sdk/page-mod"); 3 | 4 | pageMod.PageMod({ 5 | include: "*", 6 | contentScriptWhen: "start", 7 | contentScriptFile: [data.url("pace-option.js"), 8 | data.url("pace.min.js"), 9 | data.url("starlight-loading.js")], 10 | contentStyleFile: [data.url("pace.css"), 11 | data.url("mplus-1p-bold-sub-woff.css"), 12 | data.url("starlight-loading.css")] 13 | }); 14 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Starlight Loading", 3 | "version": "0.1.2", 4 | "manifest_version": 2, 5 | "description": "Starlight Stage Load Screen Emulator", 6 | "homepage_url": "http://starlight.tsudanuma-studio.net/", 7 | "icons": { 8 | "16": "data/icon16.png", 9 | "48": "data/icon48.png", 10 | "128": "data/icon128.png" 11 | }, 12 | "content_scripts": [ 13 | { 14 | "matches": ["*://*/*"], 15 | "js" : ["data/pace-option.js", "data/pace.min.js", "data/starlight-loading.js"], 16 | "css": ["data/pace.css", "data/mplus-1p-bold-sub-woff.css", "data/starlight-loading.css"], 17 | "run_at": "document_start" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Starlight Loading", 3 | "name": "starlight-loading", 4 | "version": "0.1.3", 5 | "description": "Starlight Stage Load Screen Emulator", 6 | "main": "index.js", 7 | "author": "megane42", 8 | "icon": "resource://starlight-loading/data/icon48.png", 9 | "homepage": "http://starlight.tsudanuma-studio.net/", 10 | "updateURL": "https://github.com/megane42/starlight-loading/blob/master/starlight-loading-latest.update.rdf?raw=true", 11 | "updateLink": "https://github.com/megane42/starlight-loading/blob/master/starlight_loading-latest.xpi?raw=true", 12 | "engines": { 13 | "firefox": ">=38.0a1", 14 | "fennec": ">=38.0a1" 15 | }, 16 | "license": "MIT", 17 | "keywords": [ 18 | "jetpack" 19 | ], 20 | "devDependencies": { 21 | "clean-css": "^3.4.12", 22 | "posix-cat": "^1.1.1", 23 | "uglifyjs": "^2.4.10" 24 | }, 25 | "scripts": { 26 | "cat-js" : "cat data/pace-option.js data/pace.min.js data/starlight-loading.js", 27 | "cat-css" : "cat data/mplus-1p-bold-sub-woff.css data/pace.css data/starlight-loading.css", 28 | "build-js" : "npm run -s cat-js | uglifyjs --compress --mangle - -o starlight-loading.min.js", 29 | "build-css" : "npm run -s cat-css | cleancss -o starlight-loading.min.css", 30 | "build" : "npm run build-js && npm run build-css" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /starlight-loading-latest.update.rdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
  • 7 | 8 | 0.1.3 9 | 10 | 11 | 12 | {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 13 | 38.0a1 14 | * 15 | https://github.com/megane42/starlight-loading/blob/master/starlight_loading-latest.xpi?raw=true 16 | 17 | 18 | 19 | 20 | 21 | {aa3c5121-dab2-40e2-81ca-7ea25febc110} 22 | 38.0a1 23 | * 24 | https://github.com/megane42/starlight-loading/blob/master/starlight_loading-latest.xpi?raw=true 25 | 26 | 27 | 28 | 29 | 30 | 31 |
  • 32 | 33 |
    34 | 35 |
    36 | 37 |
    38 | 39 |
    40 | -------------------------------------------------------------------------------- /starlight-loading.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'M+ 1p bold';src:url(data:application/octet-stream;base64,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) format('woff')}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:20000;position:fixed;left:82px;bottom:95px;height:14px;width:420px;background:#1d1d1d;border:0;overflow:hidden}.pace .pace-progress{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:20000;display:block;position:absolute;top:0;right:100%;height:100%;width:100%;background:linear-gradient(to bottom,#71dbf6,#1babed)}.starlight-panel p,.starlight-ratio{color:#363636;transform:rotate(.028deg);font-family:'M+ 1p bold'}.pace.pace-inactive,.starlight-loading.hide{display:none}.starlight-loading div,.starlight-loading p{margin:0;padding:0;box-sizing:content-box}.starlight-back{top:0;left:0;width:100%;height:100vh;background:#1d1d1d;z-index:15000;position:fixed}.starlight-panel{border:2px solid #ddd;border-radius:10px;background:linear-gradient(#c6c6c6,#b5b5b5);width:479px;height:139px;z-index:16000;position:fixed;bottom:30px;left:50px;box-shadow:4px 4px 10px #090909}.starlight-panel p{font-size:17px;line-height:1.4em}.starlight-panel .message-up{margin:0;padding:0;text-align:left;position:relative;top:32px;left:128px}.starlight-panel .message-down{margin:0;padding:0;text-align:center;position:relative;top:63px}.starlight-panel .progress-border{border:1px solid #000;border-radius:3px;width:424px;height:18px;z-index:17000;position:fixed;left:79px;bottom:92px}.starlight-ratio{bottom:114px;left:355px;z-index:17000;position:fixed;font-size:16px;font-weight:700;line-height:1.6em}.starlight-banner p{bottom:22px;right:100px;z-index:16000;position:fixed;color:#fff;font-size:40px;font-family:'M+ 1p bold';line-height:1.4em}.starlight-loading .heart{bottom:13px;right:0;z-index:16000;position:fixed;width:104.6px;height:95.4px;margin:20px;background:url(data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22104.6px%22%20height%3D%2295.4px%22%20viewBox%3D%220%200%20104.6%2095.4%22%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E.st0%7Bfill%3A%23FFFFFF%3B%7D%3C%2Fstyle%3E%3Cg%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M69.5%2C28c-7.7%2C0-16.2%2C3.7-20.2%2C11.8l-0.9%2C2C46%2C47.1%2C46.1%2C52%2C46.1%2C53.1c0.4%2C10.5%2C7.6%2C12.9%2C9%2C22c1.6%2C10-5.6%2C17.2-6.2%2C20.2c0%2C0%2C0.1%2C0.1%2C0.5%2C0.1c0.4%2C0%2C0.8-0.1%2C1.1-0.3c1.6-1%2C39.9-24.7%2C39.9-47.8C90.4%2C34.6%2C79.9%2C28%2C69.5%2C28z%20M71.7%2C61.1c-1.4-11.1-2.4-12.5-11.5-14.1c9.1-1.7%2C10.2-3%2C11.5-14.1c1.4%2C11.1%2C2.4%2C12.5%2C11.5%2C14.1C74.1%2C48.6%2C73%2C49.9%2C71.7%2C61.1z%20M62.4%2C72.6c-0.9-7.3-1.6-8.1-7.5-9.2c5.9-1.1%2C6.6-2%2C7.5-9.2c0.9%2C7.3%2C1.6%2C8.1%2C7.5%2C9.2C64%2C64.5%2C63.3%2C65.4%2C62.4%2C72.6z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M8.6%2C52.8l-5.3%2C4.7c-0.4%2C0.4-0.1%2C1.1%2C0.5%2C1l5.9-1.3C9.2%2C55.8%2C8.8%2C54.3%2C8.6%2C52.8z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M8.3%2C49.1c0-1.5%2C0.1-2.9%2C0.4-4.3l-8.3%2C1.4c-0.6%2C0.1-0.7%2C0.9-0.1%2C1.1l8%2C3.4C8.3%2C50.1%2C8.3%2C49.6%2C8.3%2C49.1z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M52.2%2C75.6c-0.5-3.5-2.1-5.8-3.9-8.5c-2.3-3.4-4.9-7.3-5.2-13.9c-0.1-2.4%2C0.1-7.3%2C2.6-12.7L46%2C40c-3.8-6.5-10.8-8.8-16.4-8.8c-5.6%2C0-10.4%2C1.9-13.7%2C5.6c-2.9%2C3.2-4.6%2C7.7-4.6%2C12.3c0%2C9.4%2C6.6%2C19.9%2C19%2C30.3c6.9%2C5.8%2C13.7%2C9.9%2C17.2%2C11.9c0.2-0.3%2C0.3-0.6%2C0.5-0.9C50.2%2C86.8%2C53.1%2C81.8%2C52.2%2C75.6z%20M21.7%2C48.7c-1.6%2C0-2.9-1.5-2.9-3.3c0-1.8%2C1.3-3.3%2C2.9-3.3c1.6%2C0%2C2.9%2C1.5%2C2.9%2C3.3C24.6%2C47.2%2C23.3%2C48.7%2C21.7%2C48.7z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M57.1%2C16.1c-1.1%2C0-2%2C0.9-2%2C2c0%2C0.9%2C0.6%2C1.6%2C1.4%2C1.9c-0.4%2C1.2-1.6%2C4.2-4.4%2C4.2c-2.9%2C0-4.1-4.5-4.4-6.1c1.1-0.3%2C1.9-1.2%2C1.9-2.4c0-1.4-1.1-2.5-2.5-2.5c-1.4%2C0-2.5%2C1.1-2.5%2C2.5c0%2C1.2%2C0.8%2C2.2%2C1.9%2C2.4c-0.3%2C1.5-1.5%2C6.1-4.4%2C6.1c-2.9%2C0-4-3.1-4.4-4.3c0.8-0.3%2C1.4-1%2C1.4-1.9c0-1.1-0.9-2-2-2c-1.1%2C0-2%2C0.9-2%2C2c0%2C1%2C0.7%2C1.8%2C1.6%2C2l1.9%2C10.8c0%2C0.2%2C0.2%2C0.4%2C0.5%2C0.4h16c0.2%2C0%2C0.4-0.2%2C0.5-0.4l2-10.7c0.9-0.2%2C1.6-1%2C1.6-1.9C59.1%2C17%2C58.2%2C16.1%2C57.1%2C16.1z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E) no-repeat;-webkit-animation:spinner 2s infinite linear;-moz-animation:spinner 2s infinite linear;-o-animation:spinner 2s infinite linear;animation:spinner 2s infinite linear;perspective:500px;transform-style:preserve-3d}.starlight-loading .heart svg{width:100%}@-webkit-keyframes spinner{0%{transform:translateX(50%);-webkit-transform:rotate3d(0,1,0,0deg);-ms-transform:rotate3d(0,1,0,0deg);-o-transform:rotate3d(0,1,0,0deg);transform:rotate3d(0,1,0,0deg)}50%{transform:translateX(50%);-webkit-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}100%{transform:translateX(50%);-webkit-transform:rotate3d(0,1,0,360deg);-ms-transform:rotate3d(0,1,0,360deg);-o-transform:rotate3d(0,1,0,360deg);transform:rotate3d(0,1,0,360deg)}}@-moz-keyframes spinner{0%{-webkit-transform:rotate3d(0,1,0,0deg);-ms-transform:rotate3d(0,1,0,0deg);-o-transform:rotate3d(0,1,0,0deg);transform:rotate3d(0,1,0,0deg)}50%{-webkit-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}100%{-webkit-transform:rotate3d(0,1,0,360deg);-ms-transform:rotate3d(0,1,0,360deg);-o-transform:rotate3d(0,1,0,360deg);transform:rotate3d(0,1,0,360deg)}}@-ms-keyframes spinner{0%{-webkit-transform:rotate3d(0,1,0,0deg);-ms-transform:rotate3d(0,1,0,0deg);-o-transform:rotate3d(0,1,0,0deg);transform:rotate3d(0,1,0,0deg)}50%{-webkit-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}100%{-webkit-transform:rotate3d(0,1,0,360deg);-ms-transform:rotate3d(0,1,0,360deg);-o-transform:rotate3d(0,1,0,360deg);transform:rotate3d(0,1,0,360deg)}}@-o-keyframes spinner{0%{-webkit-transform:rotate3d(0,1,0,0deg);-ms-transform:rotate3d(0,1,0,0deg);-o-transform:rotate3d(0,1,0,0deg);transform:rotate3d(0,1,0,0deg)}50%{-webkit-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}100%{-webkit-transform:rotate3d(0,1,0,360deg);-ms-transform:rotate3d(0,1,0,360deg);-o-transform:rotate3d(0,1,0,360deg);transform:rotate3d(0,1,0,360deg)}}@keyframes spinner{0%{-webkit-transform:rotate3d(0,1,0,0deg);-ms-transform:rotate3d(0,1,0,0deg);-o-transform:rotate3d(0,1,0,0deg);transform:rotate3d(0,1,0,0deg)}50%{-webkit-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}100%{-webkit-transform:rotate3d(0,1,0,360deg);-ms-transform:rotate3d(0,1,0,360deg);-o-transform:rotate3d(0,1,0,360deg);transform:rotate3d(0,1,0,360deg)}} -------------------------------------------------------------------------------- /starlight-loading.min.js: -------------------------------------------------------------------------------- 1 | window.paceOptions={startOnPageLoad:!1},function(){var t,e,n,r,s,o,i,a,u,c,l,p,d,h,g,f,m,v,y,w,b,k,S,x,N,E,q,C,L,P,T,R,A,O,M,j,_,F,U,W,X,B,D,H,I,z,G,J,K,Q=[].slice,V={}.hasOwnProperty,Y=function(t,e){function n(){this.constructor=t}for(var r in e)V.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},Z=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};for(b={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},L=function(){var t;return null!=(t="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?t:+new Date},T=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,w=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==T&&(T=function(t){return setTimeout(t,50)},w=function(t){return clearTimeout(t)}),A=function(t){var e,n;return e=L(),(n=function(){var r;return r=L()-e,r>=33?(e=L(),t(r,function(){return T(n)})):setTimeout(n,33-r)})()},R=function(){var t,e,n;return n=arguments[0],e=arguments[1],t=3<=arguments.length?Q.call(arguments,2):[],"function"==typeof n[e]?n[e].apply(n,t):n[e]},k=function(){var t,e,n,r,s,o,i;for(e=arguments[0],r=2<=arguments.length?Q.call(arguments,1):[],o=0,i=r.length;i>o;o++)if(n=r[o])for(t in n)V.call(n,t)&&(s=n[t],null!=e[t]&&"object"==typeof e[t]&&null!=s&&"object"==typeof s?k(e[t],s):e[t]=s);return e},m=function(t){var e,n,r,s,o;for(n=e=0,s=0,o=t.length;o>s;s++)r=t[s],n+=Math.abs(r),e++;return n/e},x=function(t,e){var n,r,s;if(null==t&&(t="options"),null==e&&(e=!0),s=document.querySelector("[data-pace-"+t+"]")){if(n=s.getAttribute("data-pace-"+t),!e)return n;try{return JSON.parse(n)}catch(o){return r=o,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",r):void 0}}},i=function(){function t(){}return t.prototype.on=function(t,e,n,r){var s;return null==r&&(r=!1),null==this.bindings&&(this.bindings={}),null==(s=this.bindings)[t]&&(s[t]=[]),this.bindings[t].push({handler:e,ctx:n,once:r})},t.prototype.once=function(t,e,n){return this.on(t,e,n,!0)},t.prototype.off=function(t,e){var n,r,s;if(null!=(null!=(r=this.bindings)?r[t]:void 0)){if(null==e)return delete this.bindings[t];for(n=0,s=[];nD;D++)_=G[D],P[_]===!0&&(P[_]=b[_]);u=function(t){function e(){return J=e.__super__.constructor.apply(this,arguments)}return Y(e,t),e}(Error),e=function(){function t(){this.progress=0}return t.prototype.getElement=function(){var t;if(null==this.el){if(t=document.querySelector(P.target),!t)throw new u;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
    \n
    \n
    \n
    ',null!=t.firstChild?t.insertBefore(this.el,t.firstChild):t.appendChild(this.el)}return this.el},t.prototype.finish=function(){var t;return t=this.getElement(),t.className=t.className.replace("pace-active",""),t.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},t.prototype.update=function(t){return this.progress=t,this.render()},t.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(t){u=t}return this.el=void 0},t.prototype.render=function(){var t,e,n,r,s,o,i;if(null==document.querySelector(P.target))return!1;for(t=this.getElement(),r="translate3d("+this.progress+"%, 0, 0)",i=["webkitTransform","msTransform","transform"],s=0,o=i.length;o>s;s++)e=i[s],t.children[0].style[e]=r;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(t.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?n="99":(n=this.progress<10?"0":"",n+=0|this.progress),t.children[0].setAttribute("data-progress",""+n)),this.lastRenderedProgress=this.progress},t.prototype.done=function(){return this.progress>=100},t}(),a=function(){function t(){this.bindings={}}return t.prototype.trigger=function(t,e){var n,r,s,o,i;if(null!=this.bindings[t]){for(o=this.bindings[t],i=[],r=0,s=o.length;s>r;r++)n=o[r],i.push(n.call(this,e));return i}},t.prototype.on=function(t,e){var n;return null==(n=this.bindings)[t]&&(n[t]=[]),this.bindings[t].push(e)},t}(),B=window.XMLHttpRequest,X=window.XDomainRequest,W=window.WebSocket,S=function(t,e){var n,r,s,o;o=[];for(r in e.prototype)try{s=e.prototype[r],o.push(null==t[r]&&"function"!=typeof s?t[r]=s:void 0)}catch(i){n=i}return o},q=[],c.ignore=function(){var t,e,n;return e=arguments[0],t=2<=arguments.length?Q.call(arguments,1):[],q.unshift("ignore"),n=e.apply(null,t),q.shift(),n},c.track=function(){var t,e,n;return e=arguments[0],t=2<=arguments.length?Q.call(arguments,1):[],q.unshift("track"),n=e.apply(null,t),q.shift(),n},j=function(t){var e;if(null==t&&(t="GET"),"track"===q[0])return"force";if(!q.length&&P.ajax){if("socket"===t&&P.ajax.trackWebSockets)return!0;if(e=t.toUpperCase(),Z.call(P.ajax.trackMethods,e)>=0)return!0}return!1},l=function(t){function e(){var t,n=this;e.__super__.constructor.apply(this,arguments),t=function(t){var e;return e=t.open,t.open=function(r,s){return j(r)&&n.trigger("request",{type:r,url:s,request:t}),e.apply(t,arguments)}},window.XMLHttpRequest=function(e){var n;return n=new B(e),t(n),n};try{S(window.XMLHttpRequest,B)}catch(r){}if(null!=X){window.XDomainRequest=function(){var e;return e=new X,t(e),e};try{S(window.XDomainRequest,X)}catch(r){}}if(null!=W&&P.ajax.trackWebSockets){window.WebSocket=function(t,e){var r;return r=null!=e?new W(t,e):new W(t),j("socket")&&n.trigger("request",{type:"socket",url:t,protocols:e,request:r}),r};try{S(window.WebSocket,W)}catch(r){}}}return Y(e,t),e}(a),H=null,N=function(){return null==H&&(H=new l),H},M=function(t){var e,n,r,s;for(s=P.ajax.ignoreURLs,n=0,r=s.length;r>n;n++)if(e=s[n],"string"==typeof e){if(-1!==t.indexOf(e))return!0}else if(e.test(t))return!0;return!1},N().on("request",function(e){var n,r,s,o,i;return o=e.type,s=e.request,i=e.url,M(i)?void 0:c.running||P.restartOnRequestAfter===!1&&"force"!==j(o)?void 0:(r=arguments,n=P.restartOnRequestAfter||0,"boolean"==typeof n&&(n=0),setTimeout(function(){var e,n,i,a,u,l;if(e="socket"===o?s.readyState<2:0<(a=s.readyState)&&4>a){for(c.restart(),u=c.sources,l=[],n=0,i=u.length;i>n;n++){if(_=u[n],_ instanceof t){_.watch.apply(_,r);break}l.push(void 0)}return l}},n))}),t=function(){function t(){var t=this;this.elements=[],N().on("request",function(){return t.watch.apply(t,arguments)})}return t.prototype.watch=function(t){var e,n,r,s;return r=t.type,e=t.request,s=t.url,M(s)?void 0:(n="socket"===r?new h(e):new g(e),this.elements.push(n))},t}(),g=function(){function t(t){var e,n,r,s,o,i,a=this;if(this.progress=0,null!=window.ProgressEvent)for(n=null,t.addEventListener("progress",function(t){return a.progress=t.lengthComputable?100*t.loaded/t.total:a.progress+(100-a.progress)/2},!1),i=["load","abort","timeout","error"],r=0,s=i.length;s>r;r++)e=i[r],t.addEventListener(e,function(){return a.progress=100},!1);else o=t.onreadystatechange,t.onreadystatechange=function(){var e;return 0===(e=t.readyState)||4===e?a.progress=100:3===t.readyState&&(a.progress=50),"function"==typeof o?o.apply(null,arguments):void 0}}return t}(),h=function(){function t(t){var e,n,r,s,o=this;for(this.progress=0,s=["error","open"],n=0,r=s.length;r>n;n++)e=s[n],t.addEventListener(e,function(){return o.progress=100},!1)}return t}(),r=function(){function t(t){var e,n,r,o;for(null==t&&(t={}),this.elements=[],null==t.selectors&&(t.selectors=[]),o=t.selectors,n=0,r=o.length;r>n;n++)e=o[n],this.elements.push(new s(e))}return t}(),s=function(){function t(t){this.selector=t,this.progress=0,this.check()}return t.prototype.check=function(){var t=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return t.check()},P.elements.checkInterval)},t.prototype.done=function(){return this.progress=100},t}(),n=function(){function t(){var t,e,n=this;this.progress=null!=(e=this.states[document.readyState])?e:100,t=document.onreadystatechange,document.onreadystatechange=function(){return null!=n.states[document.readyState]&&(n.progress=n.states[document.readyState]),"function"==typeof t?t.apply(null,arguments):void 0}}return t.prototype.states={loading:0,interactive:50,complete:100},t}(),o=function(){function t(){var t,e,n,r,s,o=this;this.progress=0,t=0,s=[],r=0,n=L(),e=setInterval(function(){var i;return i=L()-n-50,n=L(),s.push(i),s.length>P.eventLag.sampleCount&&s.shift(),t=m(s),++r>=P.eventLag.minSamples&&t=100&&(this.done=!0),e===this.last?this.sinceLastUpdate+=t:(this.sinceLastUpdate&&(this.rate=(e-this.last)/this.sinceLastUpdate),this.catchup=(e-this.progress)/P.catchupTime,this.sinceLastUpdate=0,this.last=e),e>this.progress&&(this.progress+=this.catchup*t),n=1-Math.pow(this.progress/100,P.easeFactor),this.progress+=n*this.rate*t,this.progress=Math.min(this.lastProgress+P.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},t}(),F=null,O=null,v=null,U=null,f=null,y=null,c.running=!1,E=function(){return P.restartOnPushState?c.restart():void 0},null!=window.history.pushState&&(z=window.history.pushState,window.history.pushState=function(){return E(),z.apply(window.history,arguments)}),null!=window.history.replaceState&&(K=window.history.replaceState,window.history.replaceState=function(){return E(),K.apply(window.history,arguments)}),p={ajax:t,elements:r,document:n,eventLag:o},(C=function(){var t,n,r,s,o,i,a,u;for(c.sources=F=[],i=["ajax","elements","document","eventLag"],n=0,s=i.length;s>n;n++)t=i[n],P[t]!==!1&&F.push(new p[t](P[t]));for(u=null!=(a=P.extraSources)?a:[],r=0,o=u.length;o>r;r++)_=u[r],F.push(new _(P));return c.bar=v=new e,O=[],U=new d})(),c.stop=function(){return c.trigger("stop"),c.running=!1,v.destroy(),y=!0,null!=f&&("function"==typeof w&&w(f),f=null),C()},c.restart=function(){return c.trigger("restart"),c.stop(),c.start()},c.go=function(){var t;return c.running=!0,v.render(),t=L(),y=!1,f=A(function(e,n){var r,s,o,i,a,u,l,p,h,g,f,m,w,b,k,S;for(p=100-v.progress,s=f=0,o=!0,u=m=0,b=F.length;b>m;u=++m)for(_=F[u],g=null!=O[u]?O[u]:O[u]=[],a=null!=(S=_.elements)?S:[_],l=w=0,k=a.length;k>w;l=++w)i=a[l],h=null!=g[l]?g[l]:g[l]=new d(i),o&=h.done,h.done||(s++,f+=h.tick(e));return r=f/s,v.update(U.tick(e,r)),v.done()||o||y?(v.update(100),c.trigger("done"),setTimeout(function(){return v.finish(),c.running=!1,c.trigger("hide")},Math.max(P.ghostTime,Math.max(P.minTime-(L()-t),0)))):n()})},c.start=function(t){k(P,t),c.running=!0;try{v.render()}catch(e){u=e}return document.querySelector(".pace")?(c.trigger("start"),c.go()):setTimeout(c.start,50)},"function"==typeof define&&define.amd?define(function(){return c}):"object"==typeof exports?module.exports=c:P.startOnPageLoad&&c.start()}.call(this);var observer=new MutationObserver(function(t){var e=t[0].target.getAttribute("data-progress-text");document.getElementsByClassName("starlight-ratio")[0].textContent=e});Pace.on("start",function(){var t=document.createElement("div"),e=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div"),s=document.createElement("div");t.className="starlight-loading",e.className="starlight-back",n.className="starlight-banner",r.className="starlight-panel",s.className="starlight-ratio";var o=document.createElement("p"),i=document.createElement("p");o.className="message-up",i.className="message-down",o.appendChild(document.createTextNode("データダウンロード中")),i.appendChild(document.createTextNode("※通信環境の良い所で実行してください")),r.appendChild(o),r.appendChild(i);var a=document.createElement("div");a.className="progress-border",r.appendChild(a);var u=document.createElement("p");u.appendChild(document.createTextNode("Now Loading...")),n.appendChild(u);var c=document.createElement("div");c.className="heart",n.appendChild(c);var l=document.getElementsByClassName("pace-progress")[0];observer.observe(l,{attributes:!0,attributeFilter:["data-progress-text"]}),t.appendChild(e),t.appendChild(n),t.appendChild(r),t.appendChild(s),document.body.appendChild(t)}),Pace.on("done",function(){var t=document.getElementsByClassName("starlight-loading")[0];t.classList.add("hide"),observer.disconnect()}),navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)||Pace.start(); -------------------------------------------------------------------------------- /starlight_loading-latest.xpi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/megane42/starlight-loading/30b96c2b17b438048bd51b30a4a83f61f25f6de2/starlight_loading-latest.xpi -------------------------------------------------------------------------------- /test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test/test-index.js: -------------------------------------------------------------------------------- 1 | var main = require("../"); 2 | 3 | exports["test main"] = function(assert) { 4 | assert.pass("Unit test running!"); 5 | }; 6 | 7 | exports["test main async"] = function(assert, done) { 8 | assert.pass("async Unit test running!"); 9 | done(); 10 | }; 11 | 12 | exports["test dummy"] = function(assert, done) { 13 | main.dummy("foo", function(text) { 14 | assert.ok((text === "foo"), "Is the text actually 'foo'"); 15 | done(); 16 | }); 17 | }; 18 | 19 | require("sdk/test").run(exports); 20 | --------------------------------------------------------------------------------