├── .gitignore
├── Gruntfile.js
├── LICENSE
├── README.md
├── bower.json
├── circular-progress.js
├── circular-progress.min.js
├── circular-progress.min.map
├── package.json
├── test
└── index.html
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # npm
2 | node_modules/
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | 'use strict';
3 |
4 | grunt.initConfig({
5 | uglify: {
6 | 'default': {
7 | options: {
8 | preserveComments: 'some',
9 | sourceMap: 'circular-progress.min.map'
10 | },
11 | files: {
12 | 'circular-progress.min.js': 'circular-progress.js'
13 | }
14 | }
15 | }
16 | });
17 |
18 | grunt.loadNpmTasks('grunt-contrib-uglify');
19 |
20 | grunt.registerTask('default', ['uglify']);
21 | };
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2016 Bergé Greg
3 |
4 | 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:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | 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.
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Circular Progress
2 |
3 | A JavaScript circular progress widget, dependency-free and configurable.
4 |
5 |
6 |
7 | ## Example
8 |
9 | ```javascript
10 | var progress = new CircularProgress({
11 | radius: 70,
12 | strokeStyle: 'black',
13 | lineCap: 'round',
14 | lineWidth: 4
15 | });
16 |
17 | document.body.appendChild(progress.el);
18 |
19 | progress.update(40);
20 | ```
21 |
22 | ## Usage
23 |
24 | ### new CircularProgress( options )
25 |
26 | Other attributes are attached to the canvas 2D context.
27 |
28 | Options :
29 |
30 | * all 2D context properties.
31 | * `text` : Scopped to text, accept `value` and all 2D context properties.
32 | * `initial` : Scopped to initial circle, accept all 2D context properties.
33 |
34 | Example :
35 |
36 | ```javascript
37 | progress = new CircularProgress({
38 | lineWidth: 2,
39 | initial: {
40 | strokeStyle: 'gray',
41 | lineWidth: 4
42 | }
43 | });
44 |
45 | // update options
46 | progress.options.text = {
47 | font: '14px'
48 | };
49 | ```
50 |
51 | ### update( value )
52 |
53 | Update percent and draw the canvas, `value` must be a float between 0 and 100.
54 |
55 | ## License
56 |
57 | MIT
58 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "circular-progress",
3 | "description": "A JavaScript circular progress widget, dependency-free and configurable.",
4 | "author": "Bergé Greg ",
5 | "version": "0.2.3",
6 | "main": "circular-progress.js",
7 | "ignore": [
8 | ".gitignore",
9 | "Gruntfile.js",
10 | "package.json",
11 | "test"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/circular-progress.js:
--------------------------------------------------------------------------------
1 | /*! circular-progress - v0.2.3 - https://github.com/neoziro/circular-progress - © 2016 Greg Bergé MIT License */
2 |
3 | (function () {
4 |
5 | // List of 2D context properties
6 | var ctxProperties = ['fillStyle', 'font', 'globalAlpha', 'globalCompositeOperation',
7 | 'lineCap', 'lineDashOffset', 'lineJoin', 'lineWidth',
8 | 'miterLimit', 'shadowBlur', 'shadowColor', 'shadowOffsetX',
9 | 'shadowOffsetY', 'strokeStyle', 'textAlign', 'textBaseLine'];
10 |
11 | // Autoscale function from https://github.com/component/autoscale-canvas
12 | var autoscale = function (canvas) {
13 | var ctx = canvas.getContext('2d'),
14 | ratio = window.devicePixelRatio || 1;
15 |
16 | if (1 !== ratio) {
17 | canvas.style.width = canvas.width + 'px';
18 | canvas.style.height = canvas.height + 'px';
19 | canvas.width *= ratio;
20 | canvas.height *= ratio;
21 | ctx.scale(ratio, ratio);
22 | }
23 |
24 | return canvas;
25 | };
26 |
27 | // Utility function to extend a 2D context with some options
28 | var extendCtx = function (ctx, options) {
29 | for (var i in options) {
30 | if (ctxProperties.indexOf(i) === -1) continue;
31 |
32 | ctx[i] = options[i];
33 | }
34 | };
35 |
36 | // Main CircularProgress object exposes on global context
37 | var CircularProgress = this.CircularProgress = function (options) {
38 | var ctx, i, property;
39 |
40 | options = options || {};
41 | this.el = document.createElement('canvas');
42 |
43 | this.options = options;
44 |
45 | options.text = options.text || {};
46 | options.text.value = options.text.value || null;
47 |
48 | ctx = this.el.getContext('2d');
49 |
50 | for (i in ctxProperties) {
51 | property = ctxProperties[i];
52 | options[property]= typeof options[property] !== 'undefined' ? options[property] : ctx[property];
53 | }
54 |
55 | if (options.radius) this.radius(options.radius);
56 | };
57 |
58 | // Update with a new `percent` value and redraw the canvas
59 | CircularProgress.prototype.update = function (value) {
60 | this._percent = value;
61 | this.draw();
62 | return this;
63 | };
64 |
65 | // Specify a new `radius` for the circle
66 | CircularProgress.prototype.radius = function (value) {
67 | var size = value * 2;
68 | this.el.width = size;
69 | this.el.height = size;
70 | autoscale(this.el);
71 | return this;
72 | };
73 |
74 | // Draw the canvas
75 | CircularProgress.prototype.draw = function () {
76 | var tw, text, fontSize,
77 | options = this.options,
78 | ctx = this.el.getContext('2d'),
79 | percent = Math.min(this._percent, 100),
80 | ratio = window.devicePixelRatio || 1,
81 | angle = Math.PI * 2 * percent / 100,
82 | size = this.el.width / ratio,
83 | half = size / 2,
84 | x = half,
85 | y = half;
86 |
87 | ctx.clearRect(0, 0, size, size);
88 |
89 | // Initial circle
90 | if (options.initial) {
91 | extendCtx(ctx, options);
92 | extendCtx(ctx, options.initial);
93 |
94 | ctx.beginPath();
95 | ctx.arc(x, y, half - ctx.lineWidth, 0, 2 * Math.PI, false);
96 | ctx.stroke();
97 | }
98 |
99 | // Progress circle
100 | extendCtx(ctx, options);
101 |
102 | ctx.beginPath();
103 | ctx.arc(x, y, half - ctx.lineWidth, 0, angle, false);
104 | ctx.stroke();
105 |
106 | // Text
107 | if (options.text) {
108 | extendCtx(ctx, options);
109 | extendCtx(ctx, options.text);
110 | }
111 |
112 | text = options.text.value === null ? (percent | 0) + '%' : options.text.value;
113 | tw = ctx.measureText(text).width;
114 | fontSize = ctx.font.match(/(\d+)px/);
115 | fontSize = fontSize ? fontSize[1] : 0;
116 |
117 | ctx.fillText(text, x - tw / 2 + 1, y + fontSize / 2 - 1);
118 |
119 | return this;
120 | };
121 |
122 | }).call(this);
123 |
--------------------------------------------------------------------------------
/circular-progress.min.js:
--------------------------------------------------------------------------------
1 | /*! circular-progress - v0.2.3 - https://github.com/neoziro/circular-progress - © 2016 Greg Bergé MIT License */
2 | (function(){var a=["fillStyle","font","globalAlpha","globalCompositeOperation","lineCap","lineDashOffset","lineJoin","lineWidth","miterLimit","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","strokeStyle","textAlign","textBaseLine"],b=function(a){var b=a.getContext("2d"),c=window.devicePixelRatio||1;return 1!==c&&(a.style.width=a.width+"px",a.style.height=a.height+"px",a.width*=c,a.height*=c,b.scale(c,c)),a},c=function(b,c){for(var d in c)-1!==a.indexOf(d)&&(b[d]=c[d])},d=this.CircularProgress=function(b){var c,d,e;b=b||{},this.el=document.createElement("canvas"),this.options=b,b.text=b.text||{},b.text.value=b.text.value||null,c=this.el.getContext("2d");for(d in a)e=a[d],b[e]="undefined"!=typeof b[e]?b[e]:c[e];b.radius&&this.radius(b.radius)};d.prototype.update=function(a){return this._percent=a,this.draw(),this},d.prototype.radius=function(a){var c=2*a;return this.el.width=c,this.el.height=c,b(this.el),this},d.prototype.draw=function(){var a,b,d,e=this.options,f=this.el.getContext("2d"),g=Math.min(this._percent,100),h=window.devicePixelRatio||1,i=2*Math.PI*g/100,j=this.el.width/h,k=j/2,l=k,m=k;return f.clearRect(0,0,j,j),e.initial&&(c(f,e),c(f,e.initial),f.beginPath(),f.arc(l,m,k-f.lineWidth,0,2*Math.PI,!1),f.stroke()),c(f,e),f.beginPath(),f.arc(l,m,k-f.lineWidth,0,i,!1),f.stroke(),e.text&&(c(f,e),c(f,e.text)),b=null===e.text.value?(0|g)+"%":e.text.value,a=f.measureText(b).width,d=f.font.match(/(\d+)px/),d=d?d[1]:0,f.fillText(b,l-a/2+1,m+d/2-1),this}}).call(this);
3 | //# sourceMappingURL=circular-progress.min.map
--------------------------------------------------------------------------------
/circular-progress.min.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"circular-progress.min.js","sources":["circular-progress.js"],"names":["ctxProperties","autoscale","canvas","ctx","getContext","ratio","window","devicePixelRatio","style","width","height","scale","extendCtx","options","i","indexOf","CircularProgress","this","property","el","document","createElement","text","value","radius","prototype","update","_percent","draw","size","tw","fontSize","percent","Math","min","angle","PI","half","x","y","clearRect","initial","beginPath","arc","lineWidth","stroke","measureText","font","match","fillText","call"],"mappings":";CAEA,WAGE,GAAIA,IAAiB,YAAa,OAAQ,cAAe,2BACnD,UAAW,iBAAkB,WAAY,YACzC,aAAc,aAAc,cAAe,gBAC3C,gBAAiB,cAAe,YAAa,gBAG/CC,EAAY,SAAUC,GACxB,GAAIC,GAAMD,EAAOE,WAAW,MAC5BC,EAAQC,OAAOC,kBAAoB,CAUnC,OARI,KAAMF,IACRH,EAAOM,MAAMC,MAAQP,EAAOO,MAAQ,KACpCP,EAAOM,MAAME,OAASR,EAAOQ,OAAS,KACtCR,EAAOO,OAASJ,EAChBH,EAAOQ,QAAUL,EACjBF,EAAIQ,MAAMN,EAAOA,IAGZH,GAILU,EAAY,SAAUT,EAAKU,GAC7B,IAAK,GAAIC,KAAKD,GACqB,KAA7Bb,EAAce,QAAQD,KAE1BX,EAAIW,GAAKD,EAAQC,KAKjBE,EAAmBC,KAAKD,iBAAmB,SAAUH,GACvD,GAAIV,GAAKW,EAAGI,CAEZL,GAAUA,MACVI,KAAKE,GAAKC,SAASC,cAAc,UAEjCJ,KAAKJ,QAAUA,EAEfA,EAAQS,KAAOT,EAAQS,SACvBT,EAAQS,KAAKC,MAAQV,EAAQS,KAAKC,OAAS,KAE3CpB,EAAMc,KAAKE,GAAGf,WAAW,KAEzB,KAAKU,IAAKd,GACRkB,EAAWlB,EAAcc,GACzBD,EAAQK,GAAwC,mBAAtBL,GAAQK,GAA4BL,EAAQK,GAAYf,EAAIe,EAGpFL,GAAQW,QAAQP,KAAKO,OAAOX,EAAQW,QAI1CR,GAAiBS,UAAUC,OAAS,SAAUH,GAG5C,MAFAN,MAAKU,SAAWJ,EAChBN,KAAKW,OACEX,MAITD,EAAiBS,UAAUD,OAAS,SAAUD,GAC5C,GAAIM,GAAe,EAARN,CAIX,OAHAN,MAAKE,GAAGV,MAAQoB,EAChBZ,KAAKE,GAAGT,OAASmB,EACjB5B,EAAUgB,KAAKE,IACRF,MAITD,EAAiBS,UAAUG,KAAO,WAChC,GAAIE,GAAIR,EAAMS,EACVlB,EAAUI,KAAKJ,QACfV,EAAMc,KAAKE,GAAGf,WAAW,MACzB4B,EAAUC,KAAKC,IAAIjB,KAAKU,SAAU,KAClCtB,EAAQC,OAAOC,kBAAoB,EACnC4B,EAAkB,EAAVF,KAAKG,GAASJ,EAAU,IAChCH,EAAOZ,KAAKE,GAAGV,MAAQJ,EACvBgC,EAAOR,EAAO,EACdS,EAAID,EACJE,EAAIF,CAkCR,OAhCAlC,GAAIqC,UAAU,EAAG,EAAGX,EAAMA,GAGtBhB,EAAQ4B,UACV7B,EAAUT,EAAKU,GACfD,EAAUT,EAAKU,EAAQ4B,SAEvBtC,EAAIuC,YACJvC,EAAIwC,IAAIL,EAAGC,EAAGF,EAAOlC,EAAIyC,UAAW,EAAG,EAAIX,KAAKG,IAAI,GACpDjC,EAAI0C,UAINjC,EAAUT,EAAKU,GAEfV,EAAIuC,YACJvC,EAAIwC,IAAIL,EAAGC,EAAGF,EAAOlC,EAAIyC,UAAW,EAAGT,GAAO,GAC9ChC,EAAI0C,SAGAhC,EAAQS,OACVV,EAAUT,EAAKU,GACfD,EAAUT,EAAKU,EAAQS,OAGzBA,EAA8B,OAAvBT,EAAQS,KAAKC,OAA4B,EAAVS,GAAe,IAAMnB,EAAQS,KAAKC,MACxEO,EAAK3B,EAAI2C,YAAYxB,GAAMb,MAC3BsB,EAAW5B,EAAI4C,KAAKC,MAAM,WAC1BjB,EAAWA,EAAWA,EAAS,GAAK,EAEpC5B,EAAI8C,SAAS3B,EAAMgB,EAAIR,EAAK,EAAI,EAAGS,EAAIR,EAAW,EAAI,GAE/Cd,QAGRiC,KAAKjC"}
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "circular-progress",
3 | "description": "A JavaScript circular progress widget, dependency-free and configurable.",
4 | "author": "Bergé Greg ",
5 | "version": "0.2.3",
6 | "devDependencies": {
7 | "grunt": "~0.4.1",
8 | "grunt-contrib-uglify": "~0.2.0"
9 | },
10 | "files": [
11 | "circular-progress.js",
12 | "circular-progress.min.js",
13 | "circular-progress.min.map",
14 | "LICENSE",
15 | "README.md",
16 | "package.json"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Circular Progress test
5 |
6 |
7 |
8 |
9 |
83 |
84 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abbrev@1:
6 | version "1.0.9"
7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
8 |
9 | amdefine@>=0.0.4:
10 | version "1.0.1"
11 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
12 |
13 | "argparse@~ 0.1.11":
14 | version "0.1.16"
15 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c"
16 | dependencies:
17 | underscore "~1.7.0"
18 | underscore.string "~2.4.0"
19 |
20 | async@~0.1.22:
21 | version "0.1.22"
22 | resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"
23 |
24 | async@~0.2.6:
25 | version "0.2.10"
26 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
27 |
28 | camelcase@^1.0.2:
29 | version "1.2.1"
30 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
31 |
32 | coffee-script@~1.3.3:
33 | version "1.3.3"
34 | resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.3.3.tgz#150d6b4cb522894369efed6a2101c20bc7f4a4f4"
35 |
36 | colors@~0.6.2:
37 | version "0.6.2"
38 | resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
39 |
40 | dateformat@1.0.2-1.2.3:
41 | version "1.0.2-1.2.3"
42 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.2-1.2.3.tgz#b0220c02de98617433b72851cf47de3df2cdbee9"
43 |
44 | decamelize@^1.0.0:
45 | version "1.2.0"
46 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
47 |
48 | "esprima@~ 1.0.2":
49 | version "1.0.4"
50 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"
51 |
52 | eventemitter2@~0.4.13:
53 | version "0.4.14"
54 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab"
55 |
56 | exit@~0.1.1:
57 | version "0.1.2"
58 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
59 |
60 | findup-sync@~0.1.2:
61 | version "0.1.3"
62 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683"
63 | dependencies:
64 | glob "~3.2.9"
65 | lodash "~2.4.1"
66 |
67 | getobject@~0.1.0:
68 | version "0.1.0"
69 | resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c"
70 |
71 | glob@~3.1.21:
72 | version "3.1.21"
73 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
74 | dependencies:
75 | graceful-fs "~1.2.0"
76 | inherits "1"
77 | minimatch "~0.2.11"
78 |
79 | glob@~3.2.9:
80 | version "3.2.11"
81 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
82 | dependencies:
83 | inherits "2"
84 | minimatch "0.3"
85 |
86 | graceful-fs@~1.2.0:
87 | version "1.2.3"
88 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
89 |
90 | grunt-contrib-uglify@~0.2.0:
91 | version "0.2.7"
92 | resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-0.2.7.tgz#e6bda51e0c40a1459f6cead423c65efd725a1bf7"
93 | dependencies:
94 | grunt-lib-contrib "~0.6.1"
95 | uglify-js "~2.4.0"
96 |
97 | grunt-legacy-log-utils@~0.1.1:
98 | version "0.1.1"
99 | resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz#c0706b9dd9064e116f36f23fe4e6b048672c0f7e"
100 | dependencies:
101 | colors "~0.6.2"
102 | lodash "~2.4.1"
103 | underscore.string "~2.3.3"
104 |
105 | grunt-legacy-log@~0.1.0:
106 | version "0.1.3"
107 | resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz#ec29426e803021af59029f87d2f9cd7335a05531"
108 | dependencies:
109 | colors "~0.6.2"
110 | grunt-legacy-log-utils "~0.1.1"
111 | hooker "~0.2.3"
112 | lodash "~2.4.1"
113 | underscore.string "~2.3.3"
114 |
115 | grunt-legacy-util@~0.2.0:
116 | version "0.2.0"
117 | resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz#93324884dbf7e37a9ff7c026dff451d94a9e554b"
118 | dependencies:
119 | async "~0.1.22"
120 | exit "~0.1.1"
121 | getobject "~0.1.0"
122 | hooker "~0.2.3"
123 | lodash "~0.9.2"
124 | underscore.string "~2.2.1"
125 | which "~1.0.5"
126 |
127 | grunt-lib-contrib@~0.6.1:
128 | version "0.6.1"
129 | resolved "https://registry.yarnpkg.com/grunt-lib-contrib/-/grunt-lib-contrib-0.6.1.tgz#3f56adb7da06e814795ee2415b0ebe5fb8903ebb"
130 | dependencies:
131 | zlib-browserify "0.0.1"
132 |
133 | grunt@~0.4.1:
134 | version "0.4.5"
135 | resolved "https://registry.yarnpkg.com/grunt/-/grunt-0.4.5.tgz#56937cd5194324adff6d207631832a9d6ba4e7f0"
136 | dependencies:
137 | async "~0.1.22"
138 | coffee-script "~1.3.3"
139 | colors "~0.6.2"
140 | dateformat "1.0.2-1.2.3"
141 | eventemitter2 "~0.4.13"
142 | exit "~0.1.1"
143 | findup-sync "~0.1.2"
144 | getobject "~0.1.0"
145 | glob "~3.1.21"
146 | grunt-legacy-log "~0.1.0"
147 | grunt-legacy-util "~0.2.0"
148 | hooker "~0.2.3"
149 | iconv-lite "~0.2.11"
150 | js-yaml "~2.0.5"
151 | lodash "~0.9.2"
152 | minimatch "~0.2.12"
153 | nopt "~1.0.10"
154 | rimraf "~2.2.8"
155 | underscore.string "~2.2.1"
156 | which "~1.0.5"
157 |
158 | hooker@~0.2.3:
159 | version "0.2.3"
160 | resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
161 |
162 | iconv-lite@~0.2.11:
163 | version "0.2.11"
164 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8"
165 |
166 | inherits@1:
167 | version "1.0.2"
168 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
169 |
170 | inherits@2:
171 | version "2.0.3"
172 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
173 |
174 | js-yaml@~2.0.5:
175 | version "2.0.5"
176 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-2.0.5.tgz#a25ae6509999e97df278c6719da11bd0687743a8"
177 | dependencies:
178 | argparse "~ 0.1.11"
179 | esprima "~ 1.0.2"
180 |
181 | lodash@~0.9.2:
182 | version "0.9.2"
183 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-0.9.2.tgz#8f3499c5245d346d682e5b0d3b40767e09f1a92c"
184 |
185 | lodash@~2.4.1:
186 | version "2.4.2"
187 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e"
188 |
189 | lru-cache@2:
190 | version "2.7.3"
191 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
192 |
193 | minimatch@0.3:
194 | version "0.3.0"
195 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
196 | dependencies:
197 | lru-cache "2"
198 | sigmund "~1.0.0"
199 |
200 | minimatch@~0.2.11, minimatch@~0.2.12:
201 | version "0.2.14"
202 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
203 | dependencies:
204 | lru-cache "2"
205 | sigmund "~1.0.0"
206 |
207 | nopt@~1.0.10:
208 | version "1.0.10"
209 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
210 | dependencies:
211 | abbrev "1"
212 |
213 | rimraf@~2.2.8:
214 | version "2.2.8"
215 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
216 |
217 | sigmund@~1.0.0:
218 | version "1.0.1"
219 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
220 |
221 | source-map@0.1.34:
222 | version "0.1.34"
223 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b"
224 | dependencies:
225 | amdefine ">=0.0.4"
226 |
227 | uglify-js@~2.4.0:
228 | version "2.4.24"
229 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz#fad5755c1e1577658bb06ff9ab6e548c95bebd6e"
230 | dependencies:
231 | async "~0.2.6"
232 | source-map "0.1.34"
233 | uglify-to-browserify "~1.0.0"
234 | yargs "~3.5.4"
235 |
236 | uglify-to-browserify@~1.0.0:
237 | version "1.0.2"
238 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
239 |
240 | underscore.string@~2.2.1:
241 | version "2.2.1"
242 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19"
243 |
244 | underscore.string@~2.3.3:
245 | version "2.3.3"
246 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d"
247 |
248 | underscore.string@~2.4.0:
249 | version "2.4.0"
250 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"
251 |
252 | underscore@~1.7.0:
253 | version "1.7.0"
254 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
255 |
256 | which@~1.0.5:
257 | version "1.0.9"
258 | resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f"
259 |
260 | window-size@0.1.0:
261 | version "0.1.0"
262 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
263 |
264 | wordwrap@0.0.2:
265 | version "0.0.2"
266 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
267 |
268 | yargs@~3.5.4:
269 | version "3.5.4"
270 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz#d8aff8f665e94c34bd259bdebd1bfaf0ddd35361"
271 | dependencies:
272 | camelcase "^1.0.2"
273 | decamelize "^1.0.0"
274 | window-size "0.1.0"
275 | wordwrap "0.0.2"
276 |
277 | zlib-browserify@0.0.1:
278 | version "0.0.1"
279 | resolved "https://registry.yarnpkg.com/zlib-browserify/-/zlib-browserify-0.0.1.tgz#4fa6a45d00dbc15f318a4afa1d9afc0258e176cc"
280 |
--------------------------------------------------------------------------------