Browse Source

new method toString / optimization

Added method ‚toString‘ to colors.js; Converts color to HTML-string
with auto or forced alpha. Some minor optimizations.
tags/1.0.4
peterd 3 years ago
parent
commit
bd230e47ff
12 changed files with 92 additions and 66 deletions
  1. 1
    1
      LICENSE.md
  2. 4
    1
      README.md
  3. 46
    20
      colors.js
  4. 5
    5
      demo/index.html
  5. 10
    3
      demo/index.js
  6. 1
    0
      demo/mod.css
  7. 13
    13
      index.html
  8. 2
    4
      index.js
  9. 6
    15
      jqColorPicker.js
  10. 1
    1
      jqColorPicker.js.map
  11. 2
    2
      jqColorPicker.min.js
  12. 1
    1
      package.json

+ 1
- 1
LICENSE.md View File

@@ -1,6 +1,6 @@
1 1
 The MIT License (MIT)
2 2
 
3
-Copyright (c) 2014 Peter Dematté
3
+Copyright (c) 2016 Peter Dematté
4 4
 
5 5
 Permission is hereby granted, free of charge, to any person obtaining a copy
6 6
 of this software and associated documentation files (the "Software"), to deal

+ 4
- 1
README.md View File

@@ -99,10 +99,13 @@ After initializing Color or ColorPicker you'll get a clean but rhich model of th
99 99
 myColors: {
100 100
     colors: { all kinds of color values...  see later},
101 101
     options: { all the options you set or that are set as default... },
102
-    __proto__: { // all methods Color uses
102
+    __proto__: { // all methods Color uses (See https://github.com/PitPik/colorPicker for details)
103 103
         setColor: function(newCol, type, alpha) {},
104 104
         setCustomBackground: function(col) {},
105 105
         saveAsBackground: function() {},
106
+        // new method: converts current color to HTML-String like: rgba(123, 234, 0, 0.89)
107
+        // forceAlpha === true / false -> alway / never print alpha, === undefined -> auto
108
+        toString: function('rgb' || 'hsl' || 'hex' || '' -> 'rgb', forceAlpha) {},
106 109
     }
107 110
 }
108 111
 ```

+ 46
- 20
colors.js View File

@@ -19,6 +19,9 @@
19 19
 			HEX:   {HEX: [0, 16777215]} // maybe we don't need this
20 20
 		},
21 21
 
22
+		_Math = window.Math,
23
+		_round = _Math.round,
24
+
22 25
 		_instance = {},
23 26
 		_colors = {},
24 27
 
@@ -83,6 +86,10 @@
83 86
 		return setColor(this.colors, undefined, 'rgb', true);
84 87
 	};
85 88
 
89
+	Colors.prototype.toString = function(colorMode, forceAlpha) {
90
+		return ColorConverter.color2text(colorMode || 'rgba', this.colors, forceAlpha);
91
+	};
92
+
86 93
 	// ------------------------------------------------------ //
87 94
 	// ---------- Color calculation related stuff  ---------- //
88 95
 	// -------------------------------------------------------//
@@ -112,7 +119,7 @@
112 119
 		color.rgb = {r: rgb.r, g: rgb.g, b: rgb.b};
113 120
 		color.alpha = alpha;
114 121
 		// color.RGBLuminance = getLuminance(RGB);
115
-		color.equivalentGrey = Math.round(grey.r * RGB.r + grey.g * RGB.g + grey.b * RGB.b);
122
+		color.equivalentGrey = _round(grey.r * RGB.r + grey.g * RGB.g + grey.b * RGB.b);
116 123
 
117 124
 		color.rgbaMixBlack = mixColors(rgb, {r: 0, g: 0, b: 0}, alpha, 1);
118 125
 		color.rgbaMixWhite = mixColors(rgb, {r: 1, g: 1, b: 1}, alpha, 1);
@@ -151,7 +158,7 @@
151 158
 					if (!RND[typ]) RND[typ] = {};
152 159
 					modes = colors[typ];
153 160
 					for(mode in modes) {
154
-						RND[typ][mode] = Math.round(modes[mode] * ranges[typ][mode][1]);
161
+						RND[typ][mode] = _round(modes[mode] * ranges[typ][mode][1]);
155 162
 					}
156 163
 				}
157 164
 			}
@@ -198,7 +205,7 @@
198 205
 				background.rgbaMixCustom[luminance]);
199 206
 			colors.rgbaMixBGMixCustom = rgbaMixBGMixCustom;
200 207
 			/* ------ */
201
-			rgbaMixBGMixCustom.luminanceDelta = Math.abs(
208
+			rgbaMixBGMixCustom.luminanceDelta = _Math.abs(
202 209
 				rgbaMixBGMixCustom[luminance] - background.rgbaMixCustom[luminance]);
203 210
 			rgbaMixBGMixCustom.hueDelta = getHueDelta(background.rgbaMixCustom, rgbaMixBGMixCustom, true);
204 211
 			/* ------ */
@@ -246,6 +253,25 @@
246 253
 			return color;
247 254
 		},
248 255
 
256
+		color2text: function(colorMode, colors, forceAlpha) {
257
+			var alpha = forceAlpha !== false && _round(colors.alpha * 100) / 100,
258
+				hasAlpha = typeof alpha === 'number' &&
259
+					forceAlpha !== false && (forceAlpha || alpha !== 1),
260
+				RGB = colors.RND.rgb,
261
+				HSL = colors.RND.hsl,
262
+				mode = colorMode.toLowerCase().substr(0, 3),
263
+				shouldBeHex = mode === 'hex' && hasAlpha,
264
+				isHex = mode === 'hex' && !shouldBeHex,
265
+				isRgb = mode === 'rgb' || shouldBeHex,
266
+				innerText = isRgb ? RGB.r + ', ' + RGB.g + ', ' + RGB.b :
267
+					HSL.h + ', ' + HSL.s + '%, ' + HSL.l + '%',
268
+				text = isHex ? '#' + colors.HEX : (shouldBeHex ? 'rgb' : mode) + 
269
+					(hasAlpha ? 'a' : '') + '(' + innerText +
270
+					(hasAlpha ? ', ' + alpha : '') + ')';
271
+
272
+			return text;
273
+		},
274
+
249 275
 		RGB2HEX: function(RGB) {
250 276
 			return (
251 277
 				(RGB.r < 16 ? '0' : '') + RGB.r.toString(16) +
@@ -257,21 +283,21 @@
257 283
 		HEX2rgb: function(HEX) {
258 284
 			HEX = HEX.split(''); // IE7
259 285
 			return {
260
-				r: parseInt(HEX[0] + HEX[HEX[3] ? 1 : 0], 16) / 255,
261
-				g: parseInt(HEX[HEX[3] ? 2 : 1] + (HEX[3] || HEX[1]), 16) / 255,
262
-				b: parseInt((HEX[4] || HEX[2]) + (HEX[5] || HEX[2]), 16) / 255
286
+				r: +('0x' + HEX[0] + HEX[HEX[3] ? 1 : 0]) / 255,
287
+				g: +('0x' + HEX[HEX[3] ? 2 : 1] + (HEX[3] || HEX[1])) / 255,
288
+				b: +('0x' + (HEX[4] || HEX[2]) + (HEX[5] || HEX[2])) / 255
263 289
 			};
264 290
 		},
265 291
 
266 292
 		hue2RGB: function(hue) {
267 293
 			var h = hue * 6,
268
-				mod = ~~h % 6, // Math.floor(h) -> faster in most browsers
294
+				mod = ~~h % 6, // _Math.floor(h) -> faster in most browsers
269 295
 				i = h === 6 ? 0 : (h - mod);
270 296
 
271 297
 			return {
272
-				r: Math.round([1, 1 - i, 0, 0, i, 1][mod] * 255),
273
-				g: Math.round([i, 1, 1, 1 - i, 0, 0][mod] * 255),
274
-				b: Math.round([0, 0, i, 1, 1, 1 - i][mod] * 255)
298
+				r: _round([1, 1 - i, 0, 0, i, 1][mod] * 255),
299
+				g: _round([i, 1, 1, 1 - i, 0, 0][mod] * 255),
300
+				b: _round([0, 0, i, 1, 1, 1 - i][mod] * 255)
275 301
 			};
276 302
 		},
277 303
 
@@ -291,13 +317,13 @@
291 317
 			if (r < g) {
292 318
 				r = g + (g = r, 0);
293 319
 				k = -2 / 6 - k;
294
-				min = Math.min(g, b); // g < b ? g : b; ???
320
+				min = _Math.min(g, b); // g < b ? g : b; ???
295 321
 			}
296 322
 			chroma = r - min;
297 323
 			s = r ? (chroma / r) : 0;
298 324
 			return {
299 325
 				h: s < 1e-15 ? ((_colors && _colors.hsl && _colors.hsl.h) || 0) :
300
-					chroma ? Math.abs(k + (g - b) / (6 * chroma)) : 0,
326
+					chroma ? _Math.abs(k + (g - b) / (6 * chroma)) : 0,
301 327
 				s: r ? (chroma / r) : ((_colors && _colors.hsv && _colors.hsv.s) || 0), // ??_colors.hsv.s || 0
302 328
 				v: r
303 329
 			};
@@ -307,7 +333,7 @@
307 333
 			var h = hsv.h * 6,
308 334
 				s = hsv.s,
309 335
 				v = hsv.v,
310
-				i = ~~h, // Math.floor(h) -> faster in most browsers
336
+				i = ~~h, // _Math.floor(h) -> faster in most browsers
311 337
 				f = h - i,
312 338
 				p = v * (1 - s),
313 339
 				q = v * (1 - f * s),
@@ -349,7 +375,7 @@
349 375
 				v = l < 0.5 ? l * (1 + s) : (l + s) - (s * l),
350 376
 				m = l + l - v,
351 377
 				sv = v ? ((v - m) / v) : 0,
352
-				sextant = ~~h, // Math.floor(h) -> faster in most browsers
378
+				sextant = ~~h, // _Math.floor(h) -> faster in most browsers
353 379
 				fract = h - sextant,
354 380
 				vsf = v * sv * fract,
355 381
 				t = m + vsf,
@@ -381,9 +407,9 @@
381 407
 	}
382 408
 
383 409
 	function getHueDelta(rgb1, rgb2, nominal) {
384
-		return (Math.max(rgb1.r - rgb2.r, rgb2.r - rgb1.r) +
385
-				Math.max(rgb1.g - rgb2.g, rgb2.g - rgb1.g) +
386
-				Math.max(rgb1.b - rgb2.b, rgb2.b - rgb1.b)) * (nominal ? 255 : 1) / 765;
410
+		return (_Math.max(rgb1.r - rgb2.r, rgb2.r - rgb1.r) +
411
+				_Math.max(rgb1.g - rgb2.g, rgb2.g - rgb1.g) +
412
+				_Math.max(rgb1.b - rgb2.b, rgb2.b - rgb1.b)) * (nominal ? 255 : 1) / 765;
387 413
 	}
388 414
 
389 415
 	function getLuminance(rgb, normalized) {
@@ -392,7 +418,7 @@
392 418
 			luminance = _instance.options.luminance;
393 419
 
394 420
 		for (var i = RGB.length; i--; ) {
395
-			RGB[i] = RGB[i] <= 0.03928 ? RGB[i] / 12.92 : Math.pow(((RGB[i] + 0.055) / 1.055), 2.4);
421
+			RGB[i] = RGB[i] <= 0.03928 ? RGB[i] / 12.92 : _Math.pow(((RGB[i] + 0.055) / 1.055), 2.4);
396 422
 		}
397 423
 		return ((luminance.r * RGB[0]) + (luminance.g * RGB[1]) + (luminance.b * RGB[2]));
398 424
 	}
@@ -418,11 +444,11 @@
418 444
 		} else {
419 445
 			ratio = (lum2 + 0.05) / (lum1 + 0.05);
420 446
 		}
421
-		return Math.round(ratio * 100) / 100;
447
+		return _round(ratio * 100) / 100;
422 448
 	}
423 449
 
424 450
 	function limitValue(value, min, max) {
425
-		// return Math.max(min, Math.min(max, value)); // faster??
451
+		// return _Math.max(min, _Math.min(max, value)); // faster??
426 452
 		return (value > max ? max : value < min ? min : value);
427 453
 	}
428 454
 

+ 5
- 5
demo/index.html View File

@@ -11,9 +11,9 @@
11 11
 	<link rel="stylesheet" type="text/css" href="../index.css">
12 12
 	<link id="colorPickerMod" rel="stylesheet" type="text/css" href="mod.css">
13 13
 	<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
14
-	<script type="text/javascript" src="../jqColorPicker.min.js"></script>
15
-	<!-- <script type="text/javascript" src="../colors.js"></script> -->
16
-	<!-- <script type="text/javascript" src="../jqColorPicker.js"></script> -->
14
+	<!-- <script type="text/javascript" src="../jqColorPicker.min.js"></script> -->
15
+	<script type="text/javascript" src="../colors.js"></script>
16
+	<script type="text/javascript" src="../jqColorPicker.js"></script>
17 17
 	<script type="text/javascript" src="index.js"></script>
18 18
 
19 19
 	<title>tiny jQuery color picker demo</title>
@@ -25,9 +25,9 @@
25 25
 		<a name="demo" id="demo" class="a-inline"></a>
26 26
 		<h2>Skinned dev-tools like, with RGB sliders</h2>
27 27
 		<div class="input-toggles">
28
-			<input class="color no-alpha" value="#B6BD79" />
28
+			<input class="color" value="#B6BD79" />
29 29
 			<input class="color no-alpha" value="rgb(162, 63, 3)" />
30
-			<input class="color no-alpha" value="hsl(32, 95%, 23%)" />
30
+			<input class="color no-sliders" value="hsl(32, 95%, 23%)" />
31 31
 		</div>
32 32
 		<div class="div-toggles">
33 33
 			<div class="trigger" value="#556B2F"><div><div></div></div></div>

+ 10
- 3
demo/index.js View File

@@ -36,12 +36,14 @@ $(function(){
36 36
 				'<div class="cp-rgb-b"><div class="cp-rgb-b-cursor"></div></div>' +
37 37
 				'<div class="cp-patch"><div></div></div><div class="cp-disp"></div>');
38 38
 
39
-			this.cursorRStyle = $elm.find('.cp-rgb-r-cursor')[0].style; // caching for faster render renderCallback
40
-			this.cursorGStyle = $elm.find('.cp-rgb-g-cursor')[0].style;
41
-			this.cursorBStyle = $elm.find('.cp-rgb-b-cursor')[0].style;
39
+			this.$sliders = $elm.find('.cp-rgb-r, .cp-rgb-g, .cp-rgb-b');
40
+			this.cursorRStyle = this.$sliders.find('.cp-rgb-r-cursor')[0].style; // caching for faster render renderCallback
41
+			this.cursorGStyle = this.$sliders.find('.cp-rgb-g-cursor')[0].style;
42
+			this.cursorBStyle = this.$sliders.find('.cp-rgb-b-cursor')[0].style;
42 43
 
43 44
 			this.patchStyle = $('.cp-patch div')[0].style;
44 45
 			this.$display = $('.cp-disp');
46
+			this.$alpha = $elm.find('.cp-alpha');
45 47
 
46 48
 			$elm.on('mousedown', '.cp-rgb-r, .cp-rgb-g, .cp-rgb-b', function(e) { // event delegation
47 49
 				$currentSlider = $(this); // well ;o)
@@ -73,6 +75,11 @@ $(function(){
73 75
 			// 	$elm.closest('.trigger').removeClass('active');
74 76
 			// }
75 77
 
78
+			if (toggled === true) { // on show colorPicker
79
+				this.$alpha.toggle(!$elm.hasClass('no-alpha'));
80
+				this.$sliders.toggle(!$elm.hasClass('no-sliders'));
81
+			}
82
+
76 83
 			this.patchStyle.backgroundColor = $elm[0].style.backgroundColor; // set patch color...
77 84
 			this.$display.text(this.color.options.colorNames[colors.HEX] || $elm.val()); // ...and text aside
78 85
 

+ 1
- 0
demo/mod.css View File

@@ -57,6 +57,7 @@
57 57
 .cp-color-picker .cp-rgb-r,
58 58
 .cp-color-picker .cp-rgb-g,
59 59
 .cp-color-picker .cp-rgb-b {
60
+	clear: both;
60 61
 	overflow: visible;
61 62
 	width: 152px;
62 63
 	margin: 12px 0 0;

+ 13
- 13
index.html View File

@@ -12,6 +12,13 @@
12 12
 	<link rel="icon" type="image/x-icon" href="development/favicon.ico">
13 13
 	<!-- <link rel="stylesheet" type="text/css" href="development/colorPicker.css"> -->
14 14
 	<link rel="stylesheet" type="text/css" href="development/compatibility.css">
15
+
16
+	<!-- <script type="text/javascript" src="jquery-1.11.2.js"></script> -->
17
+	<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
18
+	<script type="text/javascript" src="colors.js"></script>
19
+	<script type="text/javascript" src="jqColorPicker.js"></script>
20
+	<!-- <script type="text/javascript" src="jqColorPicker.min.js"></script> -->
21
+
15 22
 	<title>tiny jQuery color picker</title>
16 23
 </head>
17 24
 <body>
@@ -48,7 +55,8 @@ On all elements with className 'color': <pre>$('.color').colorPicker();</pre>
48 55
 	<div class="trigger" value="#556B2F"><div><div></div></div></div>
49 56
 	<div class="trigger" value="rgb(100, 86, 70)"><div><div></div></div></div>
50 57
 	<div class="trigger" value="hsla(167, 29%, 68%, 0.8)"><div><div></div></div></div>
51
-<img id="qr" style="float: right; display: block; display: none; margin-right: -200px;" src="./development/qr.png" alt="QR code for http://www.dematte.at/tinyColorPicker/?type=mobile#demo"></div>
58
+	<img id="qr" style="float: right; display: block; display: none; margin-right: -200px;" src="./development/qr.png" alt="QR code for http://www.dematte.at/tinyColorPicker/?type=mobile#demo">
59
+</div>
52 60
 <h2>Usage</h2>
53 61
 <p>There is only one file you need to load... No images and no CSS required.</p>
54 62
 <pre style="display: block; overflow: auto;">
@@ -77,29 +85,21 @@ window.myColorPicker = $('input.color').colorPicker({
77 85
         '.cp-alpha-cursor {border-width:8px; margin-left:-8px;}',
78 86
 
79 87
     renderCallback: function($elm, toggled) {
80
-        var colors = this.color.colors,
81
-            rgb = colors.RND.rgb;
88
+        var colors = this.color.colors;
82 89
 
83 90
         $('.cp-disp').css({
84 91
             backgroundColor: '#' + colors.HEX,
85 92
             color: colors.RGBLuminance > 0.22 ? '#222' : '#ddd'
86
-        }).text('rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b +
87
-            ', ' + (Math.round(colors.alpha * 100) / 100) + ')');
93
+        }).text(this.color.toString($elm._colorMode));
88 94
     }
89 95
 });
90 96
 </pre>
91 97
 <h2>API and usage</h2>
92 98
 <p>Will follow... See <a href="https://github.com/PitPik/tinyColorPicker">tinyColorPicker on GitHub</a> for now.</p>
93 99
 </div>
100
+<a class="a-inline" href="https://github.com/PitPik/tinyColorPicker"><img style="position: absolute; top: 0; right: 0; border: 0;" src="development/fmog.png" alt="Fork me on GitHub"></a>
94 101
 
95
-
96
-
97
-<!-- <script type="text/javascript" src="jquery-1.11.2.js"></script> -->
98
-<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
99
-<script type="text/javascript" src="colors.js"></script>
100
-<script type="text/javascript" src="jqColorPicker.js"></script>
101
-<!-- <script type="text/javascript" src="jqColorPicker.min.js"></script> -->
102 102
 <script type="text/javascript" src="index.js"></script>
103
-<a class="a-inline" href="https://github.com/PitPik/tinyColorPicker"><img style="position: absolute; top: 0; right: 0; border: 0;" src="development/fmog.png" alt="Fork me on GitHub"></a>
103
+
104 104
 </body>
105 105
 </html>

+ 2
- 4
index.js View File

@@ -43,14 +43,12 @@
43 43
 			'.cp-alpha-cursor{border-width: 8px; margin-left:-8px;}',
44 44
 
45 45
 		renderCallback: function($elm, toggled) {
46
-			var colors = this.color.colors,
47
-				rgb = colors.RND.rgb;
46
+			var colors = this.color.colors;
48 47
 
49 48
 			$('.cp-disp').css({
50 49
 				backgroundColor: '#' + colors.HEX,
51 50
 				color: colors.RGBLuminance > 0.22 ? '#222' : '#ddd'
52
-			}).text('rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b +
53
-				', ' + (Math.round(colors.alpha * 100) / 100) + ')');
51
+			}).text(this.color.toString($elm._colorMode)); // $elm.val();
54 52
 		}
55 53
 	};
56 54
 

+ 6
- 15
jqColorPicker.js View File

@@ -120,7 +120,7 @@
120 120
     }
121 121
 
122 122
     function build() {
123
-        $('head').append('<style type="text/css">' +
123
+        $('head').append('<style type="text/css" id="tinyColorPickerStyles">' +
124 124
             (_options.css || _css) + (_options.cssAddon || '') + '</style>');
125 125
 
126 126
         return _colorPicker.$UI = _$UI =
@@ -200,22 +200,13 @@
200 200
             HSL = colors.RND.hsl,
201 201
             dark = '#222',
202 202
             light = '#ddd',
203
-            colorMode = _$trigger._colorMode,
204
-            isAlpha = colors.alpha !== 1,
205
-            alpha = _round(colors.alpha * 100) / 100,
206
-            RGBInnerText = RGB.r + ', ' + RGB.g + ', ' + RGB.b,
207
-            text = (colorMode === 'HEX' && !isAlpha ? '#' + colors.HEX :
208
-                colorMode === 'rgb' || (colorMode === 'HEX' && isAlpha) ?
209
-                (!isAlpha ? 'rgb(' + RGBInnerText + ')' :
210
-                    'rgba(' + RGBInnerText + ', ' + alpha + ')') :
211
-                ('hsl' + (isAlpha ? 'a(' : '(') + HSL.h + ', ' + HSL.s + '%, ' +
212
-                    HSL.l + '%' + (isAlpha ? ', ' + alpha : '') + ')')),
203
+            colorText = _color.toString(_$trigger._colorMode),
213 204
             HUEContrast = colors.HUELuminance > 0.22 ? dark : light,
214 205
             alphaContrast = colors.rgbaMixBlack.luminance > 0.22 ? dark : light,
215 206
             h = (1 - colors.hsv.h) * _$xy_slider._height,
216 207
             s = colors.hsv.s * _$xy_slider._width,
217 208
             v = (1 - colors.hsv.v) * _$xy_slider._height,
218
-            a = alpha * _$alpha._width,
209
+            a = colors.alpha * _$alpha._width,
219 210
             translate3d = _GPU ? 'translate3d' : '',
220 211
             triggerValue = _$trigger[0].value,
221 212
             hasNoValue = _$trigger[0].hasAttribute('value') && // question this
@@ -235,18 +226,18 @@
235 226
             top: !_GPU ? h : '',
236 227
             borderColor : 'transparent ' + HUEContrast
237 228
         };
238
-        _$alpha._css = {backgroundColor: 'rgb(' + RGBInnerText + ')'};
229
+        _$alpha._css = {backgroundColor: '#' + colors.HEX};
239 230
         _$alpha_cursor._css = {
240 231
             transform: translate3d + '(' + a + 'px, 0, 0)',
241 232
             left: !_GPU ? a : '',
242 233
             borderColor : alphaContrast + ' transparent'
243 234
         };
244 235
         _$trigger._css = {
245
-            backgroundColor : hasNoValue ? '' : text,
236
+            backgroundColor : hasNoValue ? '' : colorText,
246 237
             color: hasNoValue ? '' :
247 238
                 colors.rgbaMixBGMixCustom.luminance > 0.22 ? dark : light
248 239
         };
249
-        _$trigger.text = hasNoValue ? '' : triggerValue !== text ? text : '';
240
+        _$trigger.text = hasNoValue ? '' : triggerValue !== colorText ? colorText : '';
250 241
 
251 242
         toggled !== undefined ? render(toggled) : _animate(render);
252 243
     }

+ 1
- 1
jqColorPicker.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
jqColorPicker.min.js
File diff suppressed because it is too large
View File


+ 1
- 1
package.json View File

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "name": "tinyColorPicker",
3
-  "version": "1.0.2",
3
+  "version": "1.0.4",
4 4
   "repository": {
5 5
     "type": "git",
6 6
     "url": "http://github.com/PitPik/tinyColorPicker.git"

Loading…
Cancel
Save