diff --git a/src/css/frames-list.css b/src/css/frames-list.css index a25b83ab..d9a3218a 100644 --- a/src/css/frames-list.css +++ b/src/css/frames-list.css @@ -23,8 +23,8 @@ -o-transition: all 500ms ease-out; transition: all 500ms ease-out; - background-image: linear-gradient(45deg, rgba(0,0,0, 0.8) 25%, transparent 25%, transparent 75%, rgba(0,0,0, 0.8) 75%, rgba(0,0,0, 0.8)), - linear-gradient(-45deg, rgba(0,0,0, 0.8) 25%, transparent 25%, transparent 75%, rgba(0,0,0, 0.8) 75%, rgba(0,0,0, 0.8)); + background-image: linear-gradient(45deg, #1D1D1D 20%, transparent 25%, transparent 75%, #1D1D1D 80%, #1D1D1D), + linear-gradient(-45deg, #1D1D1D 20%, transparent 25%, transparent 75%, #1D1D1D 80%, #1D1D1D); background-size: 29px 45px; background-repeat: repeat-x; background-position-x: 3px; diff --git a/src/js/lib/gif/gif.worker.js b/src/js/lib/gif/gif.worker.js index 296b21f3..c3a3edf0 100644 --- a/src/js/lib/gif/gif.worker.js +++ b/src/js/lib/gif/gif.worker.js @@ -1,21 +1,402 @@ -(function () { - var worker = function () { - (function(b){function a(b,d){if({}.hasOwnProperty.call(a.cache,b))return a.cache[b];var e=a.resolve(b);if(!e)throw new Error('Failed to resolve module '+b);var c={id:b,require:a,filename:b,exports:{},loaded:!1,parent:d,children:[]};d&&d.children.push(c);var f=b.slice(0,b.lastIndexOf('/')+1);return a.cache[b]=c.exports,e.call(c.exports,c,c.exports,f,b),c.loaded=!0,a.cache[b]=c.exports}a.modules={},a.cache={},a.resolve=function(b){return{}.hasOwnProperty.call(a.modules,b)?a.modules[b]:void 0},a.define=function(b,c){a.modules[b]=c},a.define('/gif.worker.coffee',function(d,e,f,g){var b,c;b=a('/GIFEncoder.js',d),c=function(a){var c,e,d,f;return c=new b(a.width,a.height),a.index===0?c.writeHeader():c.firstFrame=!1,c.setTransparent(a.transparent),c.setRepeat(a.repeat),c.setDelay(a.delay),c.setQuality(a.quality),c.setPreserveColors(a.preserveColors),c.addFrame(a.data),a.last&&c.finish(),d=c.stream(),a.data=d.pages,a.cursor=d.cursor,a.pageSize=d.constructor.pageSize,a.canTransfer?(f=function(c){for(var b=0,d=a.data.length;b=c.pageSize&&this.newPage(),this.pages[this.page][this.cursor++]=a},c.prototype.writeUTFBytes=function(b){for(var c=b.length,a=0;a=0&&(this.dispose=a)},b.prototype.setRepeat=function(a){this.repeat=a},b.prototype.setTransparent=function(a){this.transparent=a},b.prototype.addFrame=function(a){this.image=a,this.getImagePixels(),this.analyzePixels(),this.firstFrame&&(this.writeLSD(),this.writePalette(),this.repeat>=0&&this.writeNetscapeExt()),this.writeGraphicCtrlExt(),this.writeImageDesc(),this.firstFrame||this.writePalette(),this.writePixels(),this.firstFrame=!1},b.prototype.finish=function(){this.out.writeByte(59)},b.prototype.setQuality=function(a){a<1&&(a=1),this.sample=a},b.prototype.setPreserveColors=function(a){this.preserveColors=a},b.prototype.writeHeader=function(){this.out.writeUTFBytes('GIF89a')},b.prototype.analyzePixels=function(){var h=this.pixels.length,d=h/3;this.indexedPixels=new Uint8Array(d);var a;this.preserveColors?a=new g(this.pixels,this.sample):a=new f(this.pixels,this.sample),a.buildColormap(),this.colorTab=a.getColormap();var b=0;for(var c=0;c>16,l=(e&65280)>>8,m=e&255,c=0,d=16777216,j=this.colorTab.length;for(var a=0;a=0&&(a=dispose&7),a<<=2,this.out.writeByte(0|a|0|b),this.writeShort(this.delay),this.out.writeByte(this.transIndex),this.out.writeByte(0)},b.prototype.writeImageDesc=function(){this.out.writeByte(44),this.writeShort(0),this.writeShort(0),this.writeShort(this.width),this.writeShort(this.height),this.firstFrame?this.out.writeByte(0):this.out.writeByte(128|this.palSize)},b.prototype.writeLSD=function(){this.writeShort(this.width),this.writeShort(this.height),this.out.writeByte(240|this.palSize),this.out.writeByte(0),this.out.writeByte(0)},b.prototype.writeNetscapeExt=function(){this.out.writeByte(33),this.out.writeByte(255),this.out.writeByte(11),this.out.writeUTFBytes('NETSCAPE2.0'),this.out.writeByte(3),this.out.writeByte(1),this.writeShort(this.repeat),this.out.writeByte(0)},b.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var b=768-this.colorTab.length;for(var a=0;a>8&255)},b.prototype.writePixels=function(){var a=new h(this.width,this.height,this.indexedPixels,this.colorDepth);a.encode(this.out)},b.prototype.stream=function(){return this.out},e.exports=b}),a.define('/LZWEncoder.js',function(e,g,h,i){function f(y,D,C,B){function w(a,b){r[f++]=a,f>=254&&t(b)}function x(b){u(a),k=i+2,j=!0,l(i,b)}function u(b){for(var a=0;a=0){y=w-d,d===0&&(y=1);do if((d-=y)<0&&(d+=w),h[d]===g){e=n[d];continue a}while(h[d]>=0)}l(e,r),e=t,k<1<0&&(a.writeByte(f),a.writeBytes(r,0,f),f=0)}function p(a){return(1<0?g|=a<=8)w(g&255,c),g>>=8,e-=8;if((k>m||j)&&(j?(m=p(n_bits=q),j=!1):(++n_bits,n_bits==b?m=1<0)w(g&255,c),g>>=8,e-=8;t(c)}}var s=Math.max(2,B),r=new Uint8Array(256),h=new Int32Array(a),n=new Int32Array(a),g,e=0,f,k=0,m,j=!1,q,i,o;this.encode=z}var c=-1,b=12,a=5003,d=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];e.exports=f}),a.define('/SimpleQuant.js',function(b,d,e,f){function a(a,b,c){return[a,b,c].join('.')}function c(b){this.pixels=b,this.palette=[],this.paletteIndex={},this.getColormap=function(){return this.palette},this.buildColormap=function(){var h=this.pixels.length/3,b=0;for(var c=0;c>3);var c,d;for(c=0;c>=b,o[c][1]>>=b,o[c][2]>>=b,o[c][3]=c}function K(b,a,c,e,f){o[a][0]-=b*(o[a][0]-c)/d,o[a][1]-=b*(o[a][1]-e)/d,o[a][2]-=b*(o[a][2]-f)/d}function L(j,e,n,l,k){var h=Math.abs(e-j),i=Math.min(e+j,a),g=e+1,f=e-1,m=1,b,d;while(gh)d=z[m++],gh&&(b=o[f--],b[0]-=d*(b[0]-n)/c,b[1]-=d*(b[1]-l)/c,b[2]-=d*(b[2]-k)/c)}function C(p,s,q){var h=2147483647,k=h,d=-1,m=d,c,j,e,n,l;for(c=0;c>i-b),n>g,y[c]-=l,t[c]+=l<>1,b=f+1;b>1,b=f+1;b<256;b++)q[b]=n}function E(j,i,k){var b,d,c,e=1e3,h=-1,f=q[i],g=f-1;while(f=0)f=e?f=a:(f++,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c=0&&(d=o[g],c=i-d[1],c>=e?g=-1:(g--,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c>h;for(a<=1&&(a=0),c=0;c=f&&(g-=f),c++,q===0&&(q=1),c%q===0)for(n-=n/D,o-=o/v,a=o>>h,a<=1&&(a=0),e=0;e>g,r=e<>3,h=6,t=1<= c.pageSize && this.newPage(), this.pages[this.page][this.cursor++] = a + }, c.prototype.writeUTFBytes = function(b) { + for (var c = b.length, a = 0; a < c; a++) this.writeByte(b.charCodeAt(a)) + }, c.prototype.writeBytes = function(b, d, e) { + for (var c = e || b.length, a = d || 0; a < c; a++) this.writeByte(b[a]) + }, b.prototype.setDelay = function(a) { + this.delay = Math.round(a / 10) + }, b.prototype.setFrameRate = function(a) { + this.delay = Math.round(100 / a) + }, b.prototype.setDispose = function(a) { + a >= 0 && (this.dispose = a) + }, b.prototype.setRepeat = function(a) { + this.repeat = a + }, b.prototype.setTransparent = function(a) { + this.transparent = a + }, b.prototype.addFrame = function(a) { + this.image = a, this.getImagePixels(), this.analyzePixels(), this.firstFrame && (this.writeLSD(), this.writePalette(), this.repeat >= 0 && this.writeNetscapeExt()), this.writeGraphicCtrlExt(), this.writeImageDesc(), this.firstFrame || this.writePalette(), this.writePixels(), this.firstFrame = !1 + }, b.prototype.finish = function() { + this.out.writeByte(59) + }, b.prototype.setQuality = function(a) { + a < 1 && (a = 1), this.sample = a + }, b.prototype.setPreserveColors = function(a) { + this.preserveColors = a + }, b.prototype.writeHeader = function() { + this.out.writeUTFBytes('GIF89a') + }, b.prototype.analyzePixels = function() { + var h = this.pixels.length, + d = h / 3; + this.indexedPixels = new Uint8Array(d); + var a; + + var tComponents; + if (this.transparent) { + tComponents = [ + (this.transparent & 16711680) >> 16, + (this.transparent & 65280) >> 8, + this.transparent & 255 + ]; + } + this.preserveColors ? a = new g(this.pixels, this.sample, tComponents) : a = new f(this.pixels, this.sample), a.buildColormap(), this.colorTab = a.getColormap(); + var b = 0; + for (var c = 0; c < d; c++) { + var e = a.lookupRGB(this.pixels[b++] & 255, this.pixels[b++] & 255, this.pixels[b++] & 255); + this.usedEntry[e] = !0, this.indexedPixels[c] = e + } + this.pixels = null, this.colorDepth = 8, this.palSize = 7, this.transparent !== null && (this.transIndex = this.findClosest(this.transparent)) + }, b.prototype.findClosest = function(e) { + if (this.colorTab === null) return -1; + var k = (e & 16711680) >> 16, + l = (e & 65280) >> 8, + m = e & 255, + c = 0, + d = 16777216, + j = this.colorTab.length; + for (var a = 0; a < j;) { + var f = k - (this.colorTab[a++] & 255), + g = l - (this.colorTab[a++] & 255), + h = m - (this.colorTab[a] & 255), + i = f * f + g * g + h * h, + b = parseInt(a / 3); + i < d && (d = i, c = b), a++ + } + return c + }, b.prototype.getImagePixels = function() { + var a = this.width, + g = this.height; + this.pixels = new Uint8Array(a * g * 3); + var b = this.image, + c = 0; + for (var d = 0; d < g; d++) + for (var e = 0; e < a; e++) { + var f = d * a * 4 + e * 4; + this.pixels[c++] = b[f], this.pixels[c++] = b[f + 1], this.pixels[c++] = b[f + 2] + } + }, b.prototype.writeGraphicCtrlExt = function() { + this.out.writeByte(33), this.out.writeByte(249), this.out.writeByte(4); + var b, a; + this.transparent === null ? (b = 0, a = 0) : (b = 1, a = 2), this.dispose >= 0 && (a = dispose & 7), a <<= 2, this.out.writeByte(0 | a | 0 | b), this.writeShort(this.delay), this.out.writeByte(this.transIndex), this.out.writeByte(0) + }, b.prototype.writeImageDesc = function() { + this.out.writeByte(44), this.writeShort(0), this.writeShort(0), this.writeShort(this.width), this.writeShort(this.height), this.firstFrame ? this.out.writeByte(0) : this.out.writeByte(128 | this.palSize) + }, b.prototype.writeLSD = function() { + this.writeShort(this.width), this.writeShort(this.height), this.out.writeByte(240 | this.palSize), this.out.writeByte(0), this.out.writeByte(0) + }, b.prototype.writeNetscapeExt = function() { + this.out.writeByte(33), this.out.writeByte(255), this.out.writeByte(11), this.out.writeUTFBytes('NETSCAPE2.0'), this.out.writeByte(3), this.out.writeByte(1), this.writeShort(this.repeat), this.out.writeByte(0) + }, b.prototype.writePalette = function() { + this.out.writeBytes(this.colorTab); + var b = 768 - this.colorTab.length; + for (var a = 0; a < b; a++) this.out.writeByte(0) + }, b.prototype.writeShort = function(a) { + this.out.writeByte(a & 255), this.out.writeByte(a >> 8 & 255) + }, b.prototype.writePixels = function() { + var a = new h(this.width, this.height, this.indexedPixels, this.colorDepth); + a.encode(this.out) + }, b.prototype.stream = function() { + return this.out + }, e.exports = b + }), a.define('/LZWEncoder.js', function(e, g, h, i) { + function f(y, D, C, B) { + function w(a, b) { + r[f++] = a, f >= 254 && t(b) + } + + function x(b) { + u(a), k = i + 2, j = !0, l(i, b) + } + + function u(b) { + for (var a = 0; a < b; ++a) h[a] = -1 + } + + function A(z, r) { + var g, t, d, e, y, w, s; + for (q = z, j = !1, n_bits = q, m = p(n_bits), i = 1 << z - 1, o = i + 1, k = i + 2, f = 0, e = v(), s = 0, g = a; g < 65536; g *= 2) ++s; + s = 8 - s, w = a, u(w), l(i, r); + a: while ((t = v()) != c) { + if (g = (t << b) + e, d = t << s ^ e, h[d] === g) { + e = n[d]; + continue + } + if (h[d] >= 0) { + y = w - d, d === 0 && (y = 1); + do + if ((d -= y) < 0 && (d += w), h[d] === g) { + e = n[d]; + continue a + } + while (h[d] >= 0) + } + l(e, r), e = t, k < 1 << b ? (n[d] = k++, h[d] = g) : x(r) + } + l(e, r), l(o, r) + } + + function z(a) { + a.writeByte(s), remaining = y * D, curPixel = 0, A(s + 1, a), a.writeByte(0) + } + + function t(a) { + f > 0 && (a.writeByte(f), a.writeBytes(r, 0, f), f = 0) + } + + function p(a) { + return (1 << a) - 1 + } + + function v() { + if (remaining === 0) return c; + --remaining; + var a = C[curPixel++]; + return a & 255 + } + + function l(a, c) { + g &= d[e], e > 0 ? g |= a << e : g = a, e += n_bits; + while (e >= 8) w(g & 255, c), g >>= 8, e -= 8; + if ((k > m || j) && (j ? (m = p(n_bits = q), j = !1) : (++n_bits, n_bits == b ? m = 1 << b : m = p(n_bits))), a == o) { + while (e > 0) w(g & 255, c), g >>= 8, e -= 8; + t(c) + } + } + var s = Math.max(2, B), + r = new Uint8Array(256), + h = new Int32Array(a), + n = new Int32Array(a), + g, e = 0, + f, k = 0, + m, j = !1, + q, i, o; + this.encode = z + } + var c = -1, + b = 12, + a = 5003, + d = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535]; + e.exports = f + }), a.define('/SimpleQuant.js', function(b, d, e, f) { + function a(a, b, c) { + return [a, b, c].join('.') + } + + function c(b,sample,t) { + this.pixels = b, this.palette = [], this.paletteIndex = {}, this.getColormap = function() { + return this.palette + }, this.buildColormap = function() { + var h = this.pixels.length / 3, + b = 0; + for (var c = 0; c < h; c++) { + var d = this.pixels[b++], + e = this.pixels[b++], + f = this.pixels[b++], + g = a(d, e, f); + this.paletteIndex.hasOwnProperty(g) || (this.palette.push(d), this.palette.push(e), this.palette.push(f), this.paletteIndex[g] = this.palette.length / 3 - 1) + } + if (t) { + var transparentKey = a(t[0], t[1], t[2]); + this.paletteIndex.hasOwnProperty(transparentKey) || (this.palette.push(t[0]), this.palette.push(t[1]), this.palette.push(t[2]), this.paletteIndex[transparentKey] = this.palette.length / 3 - 1) + } + }, this.lookupRGB = function(b, c, d) { + return this.paletteIndex[a(b, c, d)] + } + } + b.exports = c + }), a.define('/TypedNeuQuant.js', function(A, F, E, D) { + function C(A, B) { + function I() { + o = [], q = new Int32Array(256), t = new Int32Array(a), y = new Int32Array(a), z = new Int32Array(a >> 3); + var c, d; + for (c = 0; c < a; c++) d = (c << b + 8) / a, o[c] = new Float64Array([d, d, d, 0]), y[c] = e / a, t[c] = 0 + } + + function J() { + for (var c = 0; c < a; c++) o[c][0] >>= b, o[c][1] >>= b, o[c][2] >>= b, o[c][3] = c + } + + function K(b, a, c, e, f) { + o[a][0] -= b * (o[a][0] - c) / d, o[a][1] -= b * (o[a][1] - e) / d, o[a][2] -= b * (o[a][2] - f) / d + } + + function L(j, e, n, l, k) { + var h = Math.abs(e - j), + i = Math.min(e + j, a), + g = e + 1, + f = e - 1, + m = 1, + b, d; + while (g < i || f > h) d = z[m++], g < i && (b = o[g++], b[0] -= d * (b[0] - n) / c, b[1] -= d * (b[1] - l) / c, b[2] -= d * (b[2] - k) / c), f > h && (b = o[f--], b[0] -= d * (b[0] - n) / c, b[1] -= d * (b[1] - l) / c, b[2] -= d * (b[2] - k) / c) + } + + function C(p, s, q) { + var h = 2147483647, + k = h, + d = -1, + m = d, + c, j, e, n, l; + for (c = 0; c < a; c++) j = o[c], e = Math.abs(j[0] - p) + Math.abs(j[1] - s) + Math.abs(j[2] - q), e < h && (h = e, d = c), n = e - (t[c] >> i - b), n < k && (k = n, m = c), l = y[c] >> g, y[c] -= l, t[c] += l << f; + return y[d] += x, t[d] -= r, m + } + + function D() { + var d, b, e, c, h, g, f = 0, + i = 0; + for (d = 0; d < a; d++) { + for (e = o[d], h = d, g = e[1], b = d + 1; b < a; b++) c = o[b], c[1] < g && (h = b, g = c[1]); + if (c = o[h], d != h && (b = c[0], c[0] = e[0], e[0] = b, b = c[1], c[1] = e[1], e[1] = b, b = c[2], c[2] = e[2], e[2] = b, b = c[3], c[3] = e[3], e[3] = b), g != f) { + for (q[f] = i + d >> 1, b = f + 1; b < g; b++) q[b] = d; + f = g, i = d + } + } + for (q[f] = i + n >> 1, b = f + 1; b < 256; b++) q[b] = n + } + + function E(j, i, k) { + var b, d, c, e = 1e3, + h = -1, + f = q[i], + g = f - 1; + while (f < a || g >= 0) f < a && (d = o[f], c = d[1] - i, c >= e ? f = a : (f++, c < 0 && (c = -c), b = d[0] - j, b < 0 && (b = -b), c += b, c < e && (b = d[2] - k, b < 0 && (b = -b), c += b, c < e && (e = c, h = d[3])))), g >= 0 && (d = o[g], c = i - d[1], c >= e ? g = -1 : (g--, c < 0 && (c = -c), b = d[0] - j, b < 0 && (b = -b), c += b, c < e && (b = d[2] - k, b < 0 && (b = -b), c += b, c < e && (e = c, h = d[3])))); + return h + } + + function F() { + var c, f = A.length, + D = 30 + (B - 1) / 3, + y = f / (3 * B), + q = ~~(y / w), + n = d, + o = u, + a = o >> h; + for (a <= 1 && (a = 0), c = 0; c < a; c++) z[c] = n * ((a * a - c * c) * m / (a * a)); + var i; + f < s ? (B = 1, i = 3) : f % l !== 0 ? i = 3 * l : f % k !== 0 ? i = 3 * k : f % p !== 0 ? i = 3 * p : i = 3 * j; + var r, t, x, e, g = 0; + c = 0; + while (c < y) + if (r = (A[g] & 255) << b, t = (A[g + 1] & 255) << b, x = (A[g + 2] & 255) << b, e = C(r, t, x), K(n, e, r, t, x), a !== 0 && L(a, e, r, t, x), g += i, g >= f && (g -= f), c++, q === 0 && (q = 1), c % q === 0) + for (n -= n / D, o -= o / v, a = o >> h, a <= 1 && (a = 0), e = 0; e < a; e++) z[e] = n * ((a * a - e * e) * m / (a * a)) + } + + function G() { + I(), F(), J(), D() + } + + function H() { + var b = [], + g = []; + for (var c = 0; c < a; c++) g[o[c][3]] = c; + var d = 0; + for (var e = 0; e < a; e++) { + var f = g[e]; + b[d++] = o[f][0], b[d++] = o[f][1], b[d++] = o[f][2] + } + return b + } + var o, q, t, y, z; + this.buildColormap = G, this.getColormap = H, this.lookupRGB = E + } + var w = 100, + a = 256, + n = a - 1, + b = 4, + i = 16, + e = 1 << i, + f = 10, + B = 1 << f, + g = 10, + x = e >> g, + r = e << f - g, + z = a >> 3, + h = 6, + t = 1 << h, + u = z * t, + v = 30, + o = 10, + d = 1 << o, + q = 8, + m = 1 << q, + y = o + q, + c = 1 << y, + l = 499, + k = 491, + p = 487, + j = 503, + s = 3 * j; + A.exports = C + }), a('/gif.worker.coffee') + }.call(this, this)) + }; + try { + var url; + if (pskl.utils.UserAgent.isIE11) { + url = 'js/lib/gif/gif.ie.worker.js'; + if (window.pskl && window.pskl.appEngineToken_) { + url = '../' + url; + } + } else { + var typedArray = [(worker + "").replace(/function \(\)\s?\{/, "").replace(/\}[^}]*$/, "")]; + var blob = new Blob(typedArray, { + type: "application/javascript" + }); // pass a useful mime type here + url = URL.createObjectURL(blob); + } + window.GifWorkerURL = url; + } catch (e) { + console.error("Could not create worker", e.message); + } })(); diff --git a/src/js/utils/ColorUtils.js b/src/js/utils/ColorUtils.js index 355f5298..ac677f70 100644 --- a/src/js/utils/ColorUtils.js +++ b/src/js/utils/ColorUtils.js @@ -14,7 +14,7 @@ var color = { r : 255, g : 255, - b : 255 + b : 0 }; var match = null; while (true) { diff --git a/test/js/utils/ColorUtilsTest.js b/test/js/utils/ColorUtilsTest.js index bcc68e1c..cd5a4717 100644 --- a/test/js/utils/ColorUtilsTest.js +++ b/test/js/utils/ColorUtilsTest.js @@ -5,25 +5,25 @@ describe("Color utils", function() { it("returns a color when provided with array of colors", function() { // when/then - var unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#ffffff', '#feffff', '#fdffff']); + var unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#ffff00', '#feff00', '#fdff00']); // verify - expect(unusedColor).toBe('#FCFFFF'); + expect(unusedColor).toBe('#FCFF00'); // when/then - unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#fcffff', '#feffff', '#fdffff']); + unusedColor = pskl.utils.ColorUtils.getUnusedColor(['#fcff00', '#feff00', '#fdff00']); // verify - expect(unusedColor).toBe('#FFFFFF'); + expect(unusedColor).toBe('#FFFF00'); }); it("returns a color for an empty array", function() { // when/then var unusedColor = pskl.utils.ColorUtils.getUnusedColor([]); // verify - expect(unusedColor).toBe('#FFFFFF'); + expect(unusedColor).toBe('#FFFF00'); // when/then unusedColor = pskl.utils.ColorUtils.getUnusedColor(); // verify - expect(unusedColor).toBe('#FFFFFF'); + expect(unusedColor).toBe('#FFFF00'); }); }); \ No newline at end of file