aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nprogress
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/nprogress
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/nprogress')
-rw-r--r--node_modules/nprogress/.npmignore3
-rw-r--r--node_modules/nprogress/.travis.yml2
-rw-r--r--node_modules/nprogress/History.md110
-rw-r--r--node_modules/nprogress/License.md19
-rw-r--r--node_modules/nprogress/Notes.md25
-rw-r--r--node_modules/nprogress/Readme.md197
-rw-r--r--node_modules/nprogress/bower.json27
-rw-r--r--node_modules/nprogress/component.json19
-rw-r--r--node_modules/nprogress/nprogress.css74
-rw-r--r--node_modules/nprogress/nprogress.js476
-rw-r--r--node_modules/nprogress/package.json47
-rw-r--r--node_modules/nprogress/test/component.html26
-rw-r--r--node_modules/nprogress/test/test.js175
13 files changed, 1200 insertions, 0 deletions
diff --git a/node_modules/nprogress/.npmignore b/node_modules/nprogress/.npmignore
new file mode 100644
index 00000000..7af42a9b
--- /dev/null
+++ b/node_modules/nprogress/.npmignore
@@ -0,0 +1,3 @@
+vendor
+index.html
+support
diff --git a/node_modules/nprogress/.travis.yml b/node_modules/nprogress/.travis.yml
new file mode 100644
index 00000000..1d3503fd
--- /dev/null
+++ b/node_modules/nprogress/.travis.yml
@@ -0,0 +1,2 @@
+language: node_js
+node_js: ["iojs"]
diff --git a/node_modules/nprogress/History.md b/node_modules/nprogress/History.md
new file mode 100644
index 00000000..b72f4d7a
--- /dev/null
+++ b/node_modules/nprogress/History.md
@@ -0,0 +1,110 @@
+## [v0.2.0] - May 13, 2015
+
+ * [#93] - Remove jQuery dependency in component ([@slang800])
+ * [#120] - Fix the Readme showing a wrong example for `ease` ([@teeceepee])
+
+Minor changes:
+
+ * [#92] - Fix typo in Readme ([@FND])
+ * [#90] - Fix typo in Readme ([@mdxs])
+ * [#119] - Fix typo in Readme ([@infertux])
+ * [#53] - Use `===` instead of `==` ([@drodil])
+
+## [v0.1.6] - June 25, 2014
+
+ * [#86] - Add support for specifying a different parent container. ([@jonjaques], [#14], [#33], [#39])
+ * [#64] - Fix Require.js support ([#75], [#85])
+ * [#54] - Fix component support
+
+## [v0.1.5] - June 21, 2014
+
+ * [#82] - Release properly to the npm registry
+
+## [v0.1.4] - June 21, 2014
+
+ * [#65] - Bower: don't download package.json. Fixes browserify + jquery problem. ([@amelon])
+ * [#75] - Fix compatibility with Karma. ([@shaqq])
+
+Internal changes:
+
+ * [#77] - Use SVG to display Travis-CI badge. ([@Mithgol])
+ * [#34] - Readme: update .inc() and .status docs ([@lacivert])
+ * [#73] - Readme: update year ([@rwholmes])
+
+## [v0.1.3] - March 26, 2014
+
+ * [#7] - Remove jQuery dependency ([#28], [#17], [@rurjur])
+ * [#73] - Update Readme to change year to 2014. ([@rwholmes])
+
+## [v0.1.2] - August 21, 2013
+
+Minor update for proper [Bower] and [Component] support.
+
+ * Add Bower support.
+ * Fix Component support and use `component/jquery` as a dependency.
+
+## [v0.1.1] - August 21, 2013
+
+Minor fixes.
+
+ * Removed the busy cursor that occurs when loading.
+ * Added support for IE7 to IE9. ([#3], [@markbao])
+ * Implement `trickleRate` and `trickleSpeed` options.
+ * [#5] - Implement the `showSpinner` option to allow removing the spinner. ([#9], [@rahulcs])
+ * Registered as a Component in Component.io.
+ * [#8] - Updated the Readme with better Turbolinks instructions.
+
+## v0.1.0 - August 20, 2013
+
+Initial release.
+
+[Bower]: http://bower.io
+[Component]: http://component.io
+[#119]: https://github.com/rstacruz/nprogress/issues/119
+[#120]: https://github.com/rstacruz/nprogress/issues/120
+[#14]: https://github.com/rstacruz/nprogress/issues/14
+[#17]: https://github.com/rstacruz/nprogress/issues/17
+[#28]: https://github.com/rstacruz/nprogress/issues/28
+[#33]: https://github.com/rstacruz/nprogress/issues/33
+[#34]: https://github.com/rstacruz/nprogress/issues/34
+[#39]: https://github.com/rstacruz/nprogress/issues/39
+[#3]: https://github.com/rstacruz/nprogress/issues/3
+[#54]: https://github.com/rstacruz/nprogress/issues/84
+[#5]: https://github.com/rstacruz/nprogress/issues/5
+[#64]: https://github.com/rstacruz/nprogress/issues/64
+[#65]: https://github.com/rstacruz/nprogress/issues/65
+[#73]: https://github.com/rstacruz/nprogress/issues/73
+[#75]: https://github.com/rstacruz/nprogress/issues/75
+[#77]: https://github.com/rstacruz/nprogress/issues/77
+[#7]: https://github.com/rstacruz/nprogress/issues/7
+[#82]: https://github.com/rstacruz/nprogress/issues/82
+[#84]: https://github.com/rstacruz/nprogress/issues/84
+[#85]: https://github.com/rstacruz/nprogress/issues/85
+[#86]: https://github.com/rstacruz/nprogress/issues/86
+[#8]: https://github.com/rstacruz/nprogress/issues/8
+[#90]: https://github.com/rstacruz/nprogress/issues/90
+[#92]: https://github.com/rstacruz/nprogress/issues/92
+[#93]: https://github.com/rstacruz/nprogress/issues/93
+[#9]: https://github.com/rstacruz/nprogress/issues/9
+[@slang800]: https://github.com/slang800
+[@teeceepee]: https://github.com/teeceepee
+[@FND]: https://github.com/FND
+[@mdxs]: https://github.com/mdxs
+[@infertux]: https://github.com/infertux
+[@jonjaques]: https://github.com/jonjaques
+[@amelon]: https://github.com/amelon
+[@shaqq]: https://github.com/shaqq
+[@Mithgol]: https://github.com/Mithgol
+[@lacivert]: https://github.com/lacivert
+[@rwholmes]: https://github.com/rwholmes
+[@rurjur]: https://github.com/rurjur
+[@markbao]: https://github.com/markbao
+[@rahulcs]: https://github.com/rahulcs
+[v0.1.6]: https://github.com/rstacruz/nprogress/compare/v0.1.5...v0.1.6
+[v0.1.5]: https://github.com/rstacruz/nprogress/compare/v0.1.4...v0.1.5
+[v0.1.4]: https://github.com/rstacruz/nprogress/compare/v0.1.3...v0.1.4
+[v0.1.3]: https://github.com/rstacruz/nprogress/compare/v0.1.2...v0.1.3
+[v0.1.2]: https://github.com/rstacruz/nprogress/compare/v0.1.1...v0.1.2
+[v0.1.1]: https://github.com/rstacruz/nprogress/compare/v0.1.0...v0.1.1
+[#53]: https://github.com/rstacruz/nprogress/issues/53
+[v0.2.0]: https://github.com/rstacruz/nprogress/compare/v0.1.6...v0.2.0
diff --git a/node_modules/nprogress/License.md b/node_modules/nprogress/License.md
new file mode 100644
index 00000000..560c4fec
--- /dev/null
+++ b/node_modules/nprogress/License.md
@@ -0,0 +1,19 @@
+Copyright (c) 2013-2014 Rico Sta. Cruz
+
+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:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+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.
diff --git a/node_modules/nprogress/Notes.md b/node_modules/nprogress/Notes.md
new file mode 100644
index 00000000..3956c416
--- /dev/null
+++ b/node_modules/nprogress/Notes.md
@@ -0,0 +1,25 @@
+Testing
+-------
+
+ $ npm install
+ $ npm test
+
+or try it out in the browser:
+
+ $ open test/index.html
+
+Testing component build
+-----------------------
+
+ $ component install
+ $ component build
+ $ open test/component.html
+
+Releasing
+---------
+
+ $ npm test
+ $ bump *.json nprogress.js # bump version numbers
+ $ git release 0.1.1 # release to bower/github
+ $ npm publish # release to npm
+ $ git push origin master:gh-pages # update the site
diff --git a/node_modules/nprogress/Readme.md b/node_modules/nprogress/Readme.md
new file mode 100644
index 00000000..4097088c
--- /dev/null
+++ b/node_modules/nprogress/Readme.md
@@ -0,0 +1,197 @@
+NProgress
+=========
+
+Slim progress bars for Ajax'y applications. Inspired by Google, YouTube, and
+Medium.
+
+
+Installation
+------------
+
+Add [nprogress.js] and [nprogress.css] to your project.
+
+```html
+<script src='nprogress.js'></script>
+<link rel='stylesheet' href='nprogress.css'/>
+```
+
+NProgress is available via [bower] and [npm] and [spm].
+
+ $ bower install --save nprogress
+ $ npm install --save nprogress
+
+[bower]: http://bower.io/search/?q=nprogress
+[npm]: https://www.npmjs.org/package/nprogress
+[spm]: http://spmjs.io/package/nprogress
+
+Basic usage
+-----------
+
+Simply call `start()` and `done()` to control the progress bar.
+
+~~~ js
+NProgress.start();
+NProgress.done();
+~~~
+
+Using [Turbolinks] or similar? Ensure you're using Turbolinks 1.3.0+, and use
+this: (explained
+ [here](https://github.com/rstacruz/nprogress/issues/8#issuecomment-23010560))
+
+~~~ js
+$(document).on('page:fetch', function() { NProgress.start(); });
+$(document).on('page:change', function() { NProgress.done(); });
+$(document).on('page:restore', function() { NProgress.remove(); });
+~~~
+
+Ideas
+-----
+
+ * Add progress to your Ajax calls! Bind it to the jQuery `ajaxStart` and
+ `ajaxStop` events.
+
+ * Make a fancy loading bar even without Turbolinks/Pjax! Bind it to
+ `$(document).ready` and `$(window).load`.
+
+Advanced usage
+--------------
+
+__Percentages:__ To set a progress percentage, call `.set(n)`, where *n* is a
+number between `0..1`.
+
+~~~ js
+NProgress.set(0.0); // Sorta same as .start()
+NProgress.set(0.4);
+NProgress.set(1.0); // Sorta same as .done()
+~~~
+
+__Incrementing:__ To increment the progress bar, just use `.inc()`. This
+increments it with a random amount. This will never get to 100%: use it for
+every image load (or similar).
+
+~~~ js
+NProgress.inc();
+~~~
+
+If you want to increment by a specific value, you can pass that as a parameter:
+
+~~~ js
+NProgress.inc(0.2); // This will get the current status value and adds 0.2 until status is 0.994
+~~~
+
+__Force-done:__ By passing `true` to `done()`, it will show the progress bar
+even if it's not being shown. (The default behavior is that *.done()* will not
+ do anything if *.start()* isn't called)
+
+~~~ js
+NProgress.done(true);
+~~~
+
+__Get the status value:__ To get the status value, use `.status`
+
+Configuration
+-------------
+
+#### `minimum`
+Changes the minimum percentage used upon starting. (default: `0.08`)
+
+~~~ js
+NProgress.configure({ minimum: 0.1 });
+~~~
+
+#### `template`
+You can change the markup using `template`. To keep the progress
+bar working, keep an element with `role='bar'` in there. See the [default template]
+for reference.
+
+~~~ js
+NProgress.configure({
+ template: "<div class='....'>...</div>"
+});
+~~~
+
+#### `easing` and `speed`
+Adjust animation settings using *easing* (a CSS easing string)
+and *speed* (in ms). (default: `ease` and `200`)
+
+~~~ js
+NProgress.configure({ easing: 'ease', speed: 500 });
+~~~
+
+#### `trickle`
+Turn off the automatic incrementing behavior by setting this to `false`. (default: `true`)
+
+~~~ js
+NProgress.configure({ trickle: false });
+~~~
+
+#### `trickleRate` and `trickleSpeed`
+You can adjust the *trickleRate* (how much to increase per trickle) and
+*trickleSpeed* (how often to trickle, in ms).
+
+~~~ js
+NProgress.configure({ trickleRate: 0.02, trickleSpeed: 800 });
+~~~
+
+#### `showSpinner`
+Turn off loading spinner by setting it to false. (default: `true`)
+
+~~~ js
+NProgress.configure({ showSpinner: false });
+~~~
+
+#### `parent`
+specify this to change the parent container. (default: `body`)
+
+~~~ js
+NProgress.configure({ parent: '#container' });
+~~~
+
+Customization
+-------------
+
+Just edit `nprogress.css` to your liking. Tip: you probably only want to find
+and replace occurrences of `#29d`.
+
+The included CSS file is pretty minimal... in fact, feel free to scrap it and
+make your own!
+
+Resources
+---------
+
+ * [New UI Pattern: Website Loading Bars](http://www.usabilitypost.com/2013/08/19/new-ui-pattern-website-loading-bars/) (usabilitypost.com)
+
+Support
+-------
+
+__Bugs and requests__: submit them through the project's issues tracker.<br>
+[![Issues](http://img.shields.io/github/issues/rstacruz/nprogress.svg)]( https://github.com/rstacruz/nprogress/issues )
+
+__Questions__: ask them at StackOverflow with the tag *nprogress*.<br>
+[![StackOverflow](http://img.shields.io/badge/stackoverflow-nprogress-brightgreen.svg)]( http://stackoverflow.com/questions/tagged/nprogress )
+
+__Chat__: join us at gitter.im.<br>
+[![Chat](http://img.shields.io/badge/gitter-rstacruz / nprogress-brightgreen.svg)]( https://gitter.im/rstacruz/nprogress )
+
+[default template]:
+https://github.com/rstacruz/nprogress/blob/master/nprogress.js#L31
+[Turbolinks]: https://github.com/rails/turbolinks
+[nprogress.js]: http://ricostacruz.com/nprogress/nprogress.js
+[nprogress.css]: http://ricostacruz.com/nprogress/nprogress.css
+
+Thanks
+------
+
+**NProgress** © 2013-2014, Rico Sta. Cruz. Released under the [MIT License].<br>
+Authored and maintained by Rico Sta. Cruz with help from [contributors].
+
+> [ricostacruz.com](http://ricostacruz.com) &nbsp;&middot;&nbsp;
+> GitHub [@rstacruz](https://github.com/rstacruz) &nbsp;&middot;&nbsp;
+> Twitter [@rstacruz](https://twitter.com/rstacruz)
+
+[MIT License]: http://mit-license.org/
+[contributors]: http://github.com/rstacruz/nprogress/contributors
+
+[![Status](https://api.travis-ci.org/rstacruz/nprogress.svg?branch=master)](http://travis-ci.org/rstacruz/nprogress)
+[![npm version](https://img.shields.io/npm/v/nprogress.png)](https://npmjs.org/package/nprogress "View this project on npm")
+[![spm package](http://spmjs.io/badge/nprogress)](http://spmjs.io/package/nprogress)
diff --git a/node_modules/nprogress/bower.json b/node_modules/nprogress/bower.json
new file mode 100644
index 00000000..19654743
--- /dev/null
+++ b/node_modules/nprogress/bower.json
@@ -0,0 +1,27 @@
+{
+ "name": "nprogress",
+ "repo": "rstacruz/nprogress",
+ "description": "slim progress bar",
+ "version": "0.2.0",
+ "keywords": [
+ "progress",
+ "bar",
+ "spinner"
+ ],
+ "license": "MIT",
+ "main": ["nprogress.js", "nprogress.css"],
+ "scripts": [
+ "nprogress.js"
+ ],
+ "styles": [
+ "nprogress.css"
+ ],
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "components",
+ "package.json",
+ "test",
+ "vendor"
+ ]
+}
diff --git a/node_modules/nprogress/component.json b/node_modules/nprogress/component.json
new file mode 100644
index 00000000..698499ca
--- /dev/null
+++ b/node_modules/nprogress/component.json
@@ -0,0 +1,19 @@
+{
+ "name": "nprogress",
+ "repo": "rstacruz/nprogress",
+ "description": "slim progress bar",
+ "version": "0.2.0",
+ "keywords": ["progress","bar","spinner"],
+ "development": {
+ "chaijs/chai": "*",
+ "visionmedia/mocha": "*"
+ },
+ "license": "MIT",
+ "main": "nprogress.js",
+ "scripts": [
+ "nprogress.js"
+ ],
+ "styles": [
+ "nprogress.css"
+ ]
+}
diff --git a/node_modules/nprogress/nprogress.css b/node_modules/nprogress/nprogress.css
new file mode 100644
index 00000000..6752d7f4
--- /dev/null
+++ b/node_modules/nprogress/nprogress.css
@@ -0,0 +1,74 @@
+/* Make clicks pass-through */
+#nprogress {
+ pointer-events: none;
+}
+
+#nprogress .bar {
+ background: #29d;
+
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+
+ width: 100%;
+ height: 2px;
+}
+
+/* Fancy blur effect */
+#nprogress .peg {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+ opacity: 1.0;
+
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+/* Remove these to get rid of the spinner */
+#nprogress .spinner {
+ display: block;
+ position: fixed;
+ z-index: 1031;
+ top: 15px;
+ right: 15px;
+}
+
+#nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+
+ border: solid 2px transparent;
+ border-top-color: #29d;
+ border-left-color: #29d;
+ border-radius: 50%;
+
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
+ animation: nprogress-spinner 400ms linear infinite;
+}
+
+.nprogress-custom-parent {
+ overflow: hidden;
+ position: relative;
+}
+
+.nprogress-custom-parent #nprogress .spinner,
+.nprogress-custom-parent #nprogress .bar {
+ position: absolute;
+}
+
+@-webkit-keyframes nprogress-spinner {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); }
+}
+@keyframes nprogress-spinner {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
diff --git a/node_modules/nprogress/nprogress.js b/node_modules/nprogress/nprogress.js
new file mode 100644
index 00000000..b23b3006
--- /dev/null
+++ b/node_modules/nprogress/nprogress.js
@@ -0,0 +1,476 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+;(function(root, factory) {
+
+ if (typeof define === 'function' && define.amd) {
+ define(factory);
+ } else if (typeof exports === 'object') {
+ module.exports = factory();
+ } else {
+ root.NProgress = factory();
+ }
+
+})(this, function() {
+ var NProgress = {};
+
+ NProgress.version = '0.2.0';
+
+ var Settings = NProgress.settings = {
+ minimum: 0.08,
+ easing: 'ease',
+ positionUsing: '',
+ speed: 200,
+ trickle: true,
+ trickleRate: 0.02,
+ trickleSpeed: 800,
+ showSpinner: true,
+ barSelector: '[role="bar"]',
+ spinnerSelector: '[role="spinner"]',
+ parent: 'body',
+ template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
+ };
+
+ /**
+ * Updates configuration.
+ *
+ * NProgress.configure({
+ * minimum: 0.1
+ * });
+ */
+ NProgress.configure = function(options) {
+ var key, value;
+ for (key in options) {
+ value = options[key];
+ if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;
+ }
+
+ return this;
+ };
+
+ /**
+ * Last number.
+ */
+
+ NProgress.status = null;
+
+ /**
+ * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
+ *
+ * NProgress.set(0.4);
+ * NProgress.set(1.0);
+ */
+
+ NProgress.set = function(n) {
+ var started = NProgress.isStarted();
+
+ n = clamp(n, Settings.minimum, 1);
+ NProgress.status = (n === 1 ? null : n);
+
+ var progress = NProgress.render(!started),
+ bar = progress.querySelector(Settings.barSelector),
+ speed = Settings.speed,
+ ease = Settings.easing;
+
+ progress.offsetWidth; /* Repaint */
+
+ queue(function(next) {
+ // Set positionUsing if it hasn't already been set
+ if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
+
+ // Add transition
+ css(bar, barPositionCSS(n, speed, ease));
+
+ if (n === 1) {
+ // Fade out
+ css(progress, {
+ transition: 'none',
+ opacity: 1
+ });
+ progress.offsetWidth; /* Repaint */
+
+ setTimeout(function() {
+ css(progress, {
+ transition: 'all ' + speed + 'ms linear',
+ opacity: 0
+ });
+ setTimeout(function() {
+ NProgress.remove();
+ next();
+ }, speed);
+ }, speed);
+ } else {
+ setTimeout(next, speed);
+ }
+ });
+
+ return this;
+ };
+
+ NProgress.isStarted = function() {
+ return typeof NProgress.status === 'number';
+ };
+
+ /**
+ * Shows the progress bar.
+ * This is the same as setting the status to 0%, except that it doesn't go backwards.
+ *
+ * NProgress.start();
+ *
+ */
+ NProgress.start = function() {
+ if (!NProgress.status) NProgress.set(0);
+
+ var work = function() {
+ setTimeout(function() {
+ if (!NProgress.status) return;
+ NProgress.trickle();
+ work();
+ }, Settings.trickleSpeed);
+ };
+
+ if (Settings.trickle) work();
+
+ return this;
+ };
+
+ /**
+ * Hides the progress bar.
+ * This is the *sort of* the same as setting the status to 100%, with the
+ * difference being `done()` makes some placebo effect of some realistic motion.
+ *
+ * NProgress.done();
+ *
+ * If `true` is passed, it will show the progress bar even if its hidden.
+ *
+ * NProgress.done(true);
+ */
+
+ NProgress.done = function(force) {
+ if (!force && !NProgress.status) return this;
+
+ return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
+ };
+
+ /**
+ * Increments by a random amount.
+ */
+
+ NProgress.inc = function(amount) {
+ var n = NProgress.status;
+
+ if (!n) {
+ return NProgress.start();
+ } else {
+ if (typeof amount !== 'number') {
+ amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
+ }
+
+ n = clamp(n + amount, 0, 0.994);
+ return NProgress.set(n);
+ }
+ };
+
+ NProgress.trickle = function() {
+ return NProgress.inc(Math.random() * Settings.trickleRate);
+ };
+
+ /**
+ * Waits for all supplied jQuery promises and
+ * increases the progress as the promises resolve.
+ *
+ * @param $promise jQUery Promise
+ */
+ (function() {
+ var initial = 0, current = 0;
+
+ NProgress.promise = function($promise) {
+ if (!$promise || $promise.state() === "resolved") {
+ return this;
+ }
+
+ if (current === 0) {
+ NProgress.start();
+ }
+
+ initial++;
+ current++;
+
+ $promise.always(function() {
+ current--;
+ if (current === 0) {
+ initial = 0;
+ NProgress.done();
+ } else {
+ NProgress.set((initial - current) / initial);
+ }
+ });
+
+ return this;
+ };
+
+ })();
+
+ /**
+ * (Internal) renders the progress bar markup based on the `template`
+ * setting.
+ */
+
+ NProgress.render = function(fromStart) {
+ if (NProgress.isRendered()) return document.getElementById('nprogress');
+
+ addClass(document.documentElement, 'nprogress-busy');
+
+ var progress = document.createElement('div');
+ progress.id = 'nprogress';
+ progress.innerHTML = Settings.template;
+
+ var bar = progress.querySelector(Settings.barSelector),
+ perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),
+ parent = document.querySelector(Settings.parent),
+ spinner;
+
+ css(bar, {
+ transition: 'all 0 linear',
+ transform: 'translate3d(' + perc + '%,0,0)'
+ });
+
+ if (!Settings.showSpinner) {
+ spinner = progress.querySelector(Settings.spinnerSelector);
+ spinner && removeElement(spinner);
+ }
+
+ if (parent != document.body) {
+ addClass(parent, 'nprogress-custom-parent');
+ }
+
+ parent.appendChild(progress);
+ return progress;
+ };
+
+ /**
+ * Removes the element. Opposite of render().
+ */
+
+ NProgress.remove = function() {
+ removeClass(document.documentElement, 'nprogress-busy');
+ removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');
+ var progress = document.getElementById('nprogress');
+ progress && removeElement(progress);
+ };
+
+ /**
+ * Checks if the progress bar is rendered.
+ */
+
+ NProgress.isRendered = function() {
+ return !!document.getElementById('nprogress');
+ };
+
+ /**
+ * Determine which positioning CSS rule to use.
+ */
+
+ NProgress.getPositioningCSS = function() {
+ // Sniff on document.body.style
+ var bodyStyle = document.body.style;
+
+ // Sniff prefixes
+ var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
+ ('MozTransform' in bodyStyle) ? 'Moz' :
+ ('msTransform' in bodyStyle) ? 'ms' :
+ ('OTransform' in bodyStyle) ? 'O' : '';
+
+ if (vendorPrefix + 'Perspective' in bodyStyle) {
+ // Modern browsers with 3D support, e.g. Webkit, IE10
+ return 'translate3d';
+ } else if (vendorPrefix + 'Transform' in bodyStyle) {
+ // Browsers without 3D support, e.g. IE9
+ return 'translate';
+ } else {
+ // Browsers without translate() support, e.g. IE7-8
+ return 'margin';
+ }
+ };
+
+ /**
+ * Helpers
+ */
+
+ function clamp(n, min, max) {
+ if (n < min) return min;
+ if (n > max) return max;
+ return n;
+ }
+
+ /**
+ * (Internal) converts a percentage (`0..1`) to a bar translateX
+ * percentage (`-100%..0%`).
+ */
+
+ function toBarPerc(n) {
+ return (-1 + n) * 100;
+ }
+
+
+ /**
+ * (Internal) returns the correct CSS for changing the bar's
+ * position given an n percentage, and speed and ease from Settings
+ */
+
+ function barPositionCSS(n, speed, ease) {
+ var barCSS;
+
+ if (Settings.positionUsing === 'translate3d') {
+ barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };
+ } else if (Settings.positionUsing === 'translate') {
+ barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };
+ } else {
+ barCSS = { 'margin-left': toBarPerc(n)+'%' };
+ }
+
+ barCSS.transition = 'all '+speed+'ms '+ease;
+
+ return barCSS;
+ }
+
+ /**
+ * (Internal) Queues a function to be executed.
+ */
+
+ var queue = (function() {
+ var pending = [];
+
+ function next() {
+ var fn = pending.shift();
+ if (fn) {
+ fn(next);
+ }
+ }
+
+ return function(fn) {
+ pending.push(fn);
+ if (pending.length == 1) next();
+ };
+ })();
+
+ /**
+ * (Internal) Applies css properties to an element, similar to the jQuery
+ * css method.
+ *
+ * While this helper does assist with vendor prefixed property names, it
+ * does not perform any manipulation of values prior to setting styles.
+ */
+
+ var css = (function() {
+ var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],
+ cssProps = {};
+
+ function camelCase(string) {
+ return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) {
+ return letter.toUpperCase();
+ });
+ }
+
+ function getVendorProp(name) {
+ var style = document.body.style;
+ if (name in style) return name;
+
+ var i = cssPrefixes.length,
+ capName = name.charAt(0).toUpperCase() + name.slice(1),
+ vendorName;
+ while (i--) {
+ vendorName = cssPrefixes[i] + capName;
+ if (vendorName in style) return vendorName;
+ }
+
+ return name;
+ }
+
+ function getStyleProp(name) {
+ name = camelCase(name);
+ return cssProps[name] || (cssProps[name] = getVendorProp(name));
+ }
+
+ function applyCss(element, prop, value) {
+ prop = getStyleProp(prop);
+ element.style[prop] = value;
+ }
+
+ return function(element, properties) {
+ var args = arguments,
+ prop,
+ value;
+
+ if (args.length == 2) {
+ for (prop in properties) {
+ value = properties[prop];
+ if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);
+ }
+ } else {
+ applyCss(element, args[1], args[2]);
+ }
+ }
+ })();
+
+ /**
+ * (Internal) Determines if an element or space separated list of class names contains a class name.
+ */
+
+ function hasClass(element, name) {
+ var list = typeof element == 'string' ? element : classList(element);
+ return list.indexOf(' ' + name + ' ') >= 0;
+ }
+
+ /**
+ * (Internal) Adds a class to an element.
+ */
+
+ function addClass(element, name) {
+ var oldList = classList(element),
+ newList = oldList + name;
+
+ if (hasClass(oldList, name)) return;
+
+ // Trim the opening space.
+ element.className = newList.substring(1);
+ }
+
+ /**
+ * (Internal) Removes a class from an element.
+ */
+
+ function removeClass(element, name) {
+ var oldList = classList(element),
+ newList;
+
+ if (!hasClass(element, name)) return;
+
+ // Replace the class name.
+ newList = oldList.replace(' ' + name + ' ', ' ');
+
+ // Trim the opening and closing spaces.
+ element.className = newList.substring(1, newList.length - 1);
+ }
+
+ /**
+ * (Internal) Gets a space separated list of the class names on the element.
+ * The list is wrapped with a single space on each end to facilitate finding
+ * matches within the list.
+ */
+
+ function classList(element) {
+ return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' ');
+ }
+
+ /**
+ * (Internal) Removes an element from the DOM.
+ */
+
+ function removeElement(element) {
+ element && element.parentNode && element.parentNode.removeChild(element);
+ }
+
+ return NProgress;
+});
+
diff --git a/node_modules/nprogress/package.json b/node_modules/nprogress/package.json
new file mode 100644
index 00000000..aa732dda
--- /dev/null
+++ b/node_modules/nprogress/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "nprogress",
+ "author": "Rico Sta. Cruz <hi@ricostacruz.com>",
+ "description": "Simple slim progress bars",
+ "version": "0.2.0",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/rstacruz/nprogress.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "main": "nprogress.js",
+ "license": "MIT",
+ "devDependencies": {
+ "chai": "~1.6.1",
+ "jquery": "^2.1.1",
+ "jsdom": "^5.4.1",
+ "mocha": "^2.2.4",
+ "mocha-jsdom": "^0.3.0"
+ },
+ "dependencies": {},
+ "jspm": {
+ "format": "global",
+ "shim": {
+ "nprogress": {
+ "deps": [
+ "./nprogress.css!"
+ ]
+ }
+ },
+ "dependencies": {
+ "css": "*"
+ }
+ },
+ "spm": {
+ "main": "nprogress.js",
+ "output": [
+ "nprogress.css"
+ ],
+ "ignore": [
+ "support",
+ "test",
+ "vendor"
+ ]
+ }
+}
diff --git a/node_modules/nprogress/test/component.html b/node_modules/nprogress/test/component.html
new file mode 100644
index 00000000..6bcde977
--- /dev/null
+++ b/node_modules/nprogress/test/component.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name='viewport' content='width=device-width,initial-scale=1.0'>
+ <title>Tests</title>
+ <link rel='stylesheet' href='../vendor/mocha.css'>
+ <link rel='stylesheet' href='../build/build.css'>
+ <script src='../build/build.js'></script>
+
+ <!-- mocha -->
+ <script src='../vendor/mocha.js'></script>
+ <script>mocha.ignoreLeaks(); mocha.setup('bdd');</script>
+ <script src='../vendor/chai.js'></script>
+ <script>should = chai.should()</script>
+ <script>assert = chai.assert</script>
+ <script>testSuite = describe;</script>
+
+ <!-- tests -->
+ <script src="test.js"></script>
+ <script>onload = function() { mocha.run(); }</script>
+</head>
+<body>
+ <div id="mocha"></div>
+</body>
+</html>
diff --git a/node_modules/nprogress/test/test.js b/node_modules/nprogress/test/test.js
new file mode 100644
index 00000000..a381b094
--- /dev/null
+++ b/node_modules/nprogress/test/test.js
@@ -0,0 +1,175 @@
+(function() {
+ if (typeof process === 'object') {
+ require('mocha-jsdom')();
+ }
+
+ var root = this;
+ var assert = (root.chai || require('chai')).assert;
+
+ describe('NProgress', function() {
+ var $, NProgress;
+
+ beforeEach(function() {
+ $ = root.jQuery || require('jquery');
+ NProgress = root.NProgress || require('../nprogress');
+
+ this.settings = $.extend({}, NProgress.settings);
+ });
+
+ afterEach(function() {
+ $("#nprogress").remove();
+ $('html').attr('class', '');
+ NProgress.status = null;
+
+ // Restore settings
+ $.extend(NProgress.settings, this.settings);
+ });
+
+ describe('.set()', function() {
+ it('.set(0) must render', function(done) {
+ NProgress.set(0);
+ assert.equal($("#nprogress").length, 1);
+ assert.equal($("#nprogress .bar").length, 1);
+ assert.equal($("#nprogress .peg").length, 1);
+ assert.equal($("#nprogress .spinner").length, 1);
+ done();
+ });
+
+ it('.set(1) should appear and disappear', function(done) {
+ NProgress.configure({ speed: 10 });
+ NProgress.set(0).set(1);
+ assert.equal($("#nprogress").length, 1);
+
+ setTimeout(function() {
+ assert.equal($("#nprogress").length, 0);
+ done();
+ }, 70);
+ });
+
+ it('must respect minimum', function() {
+ NProgress.set(0);
+ assert.equal(NProgress.status, NProgress.settings.minimum);
+ });
+
+ it('must clamp to minimum', function() {
+ NProgress.set(-100);
+ assert.equal(NProgress.status, NProgress.settings.minimum);
+ });
+
+ it('must clamp to maximum', function() {
+ NProgress.set(456);
+ assert.equal(NProgress.status, null);
+ });
+ });
+
+ // ----
+
+ describe('.start()', function() {
+ it('must render', function(done) {
+ NProgress.start();
+ assert.equal($("#nprogress").length, 1);
+ done();
+ });
+
+ it('must respect minimum', function() {
+ NProgress.start();
+ assert.equal(NProgress.status, NProgress.settings.minimum);
+ });
+
+ it('must be attached to specified parent', function() {
+ var test = $('<div>', {id: 'test'}).appendTo('body');
+ NProgress.configure({parent: '#test'});
+ NProgress.start();
+ assert.isTrue($("#nprogress").parent().is(test));
+ assert.isTrue($(NProgress.settings.parent).hasClass("nprogress-custom-parent"));
+ });
+ });
+
+ // ----
+
+ describe('.done()', function() {
+ it('must not render without start', function(done) {
+ NProgress.done();
+ assert.equal($("#nprogress").length, 0);
+ done();
+ });
+
+ it('.done(true) must render', function(done) {
+ NProgress.done(true);
+ assert.equal($("#nprogress").length, 1);
+ done();
+ });
+ });
+
+ // ----
+
+ describe('.remove()', function() {
+ it('should be removed from the parent', function() {
+ NProgress.set(1);
+ NProgress.remove();
+
+ var parent = $(NProgress.settings.parent);
+ assert.isFalse(parent.hasClass('nprogress-custom-parent'));
+ assert.equal(parent.find('#nprogress').length, 0);
+ });
+ });
+
+ // ----
+
+ describe('.inc()', function() {
+ it('should render', function() {
+ NProgress.inc();
+ assert.equal($("#nprogress").length, 1);
+ });
+
+ it('should start with minimum', function() {
+ NProgress.inc();
+ assert.equal(NProgress.status, NProgress.settings.minimum);
+ });
+
+ it('should increment', function() {
+ NProgress.start();
+ var start = NProgress.status;
+
+ NProgress.inc();
+ assert.operator(NProgress.status, '>', start);
+ });
+
+ it('should never reach 1.0', function() {
+ for (var i=0; i<100; ++i) { NProgress.inc(); }
+ assert.operator(NProgress.status, '<', 1.0);
+ });
+ });
+
+ // -----
+
+ describe('.configure()', function() {
+ it('should work', function() {
+ NProgress.configure({ minimum: 0.5 });
+ assert.equal(NProgress.settings.minimum, 0.5);
+ });
+ });
+
+ // ----
+
+ describe('.configure(showSpinner)', function() {
+ it('should render spinner by default', function() {
+ NProgress.start();
+
+ assert.equal($("#nprogress .spinner").length, 1);
+ });
+
+ it('should be true by default', function() {
+ assert.equal(NProgress.settings.showSpinner, true);
+ });
+
+ it('should hide (on false)', function() {
+ NProgress.configure({ showSpinner: false });
+ NProgress.start();
+
+ assert.equal($("#nprogress .spinner").length, 0);
+ });
+ });
+ });
+
+})();