-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.adaptive-backgrounds.min.js
2 lines (2 loc) · 1.8 KB
/
jquery.adaptive-backgrounds.min.js
1
2
/*! Brian Gonzalez by jquery.adaptive-backgrounds.js 19-12-2013 */
!function(a){var b="data-ab-color",c="data-ab-parent",d="ab-color-found",e={selector:'img[data-adaptive-background="1"]',parent:null,normalizeTextColor:!1,normalizedTextColors:{light:"#fff",dark:"#000"}};!function(a){"use strict";var b=function(){return document.createElement("canvas").getContext("2d")},c=function(a,c){var d=new Image;"data:"!==a.src.substring(0,5)&&(d.crossOrigin="Anonymous"),d.src=a.src,d.onload=function(){var e=b();e.drawImage(d,0,0);var f=e.getImageData(0,0,a.width,a.height);c&&c(f.data)}},d=function(a){return["rgb(",a,")"].join("")},e=function(a){return a.map(function(a){return d(a.name)})},f=5,g=10,h={};h.colors=function(a,b,h){c(a,function(a){for(var c=a.length,i={},j="",k=[],l={dominant:{name:"",count:0},palette:Array.apply(null,Array(h||g)).map(Boolean).map(function(){return{name:"0,0,0",count:0}})},m=0;c>m;){if(k[0]=a[m],k[1]=a[m+1],k[2]=a[m+2],j=k.join(","),i[j]=j in i?i[j]+1:1,"0,0,0"!==j&&"255,255,255"!==j){var n=i[j];n>l.dominant.count?(l.dominant.name=j,l.dominant.count=n):l.palette.some(function(a){return n>a.count?(a.name=j,a.count=n,!0):void 0})}m+=4*f}b&&b({dominant:d(l.dominant.name),palette:e(l.palette)})})},a.RGBaster=a.RGBaster||h}(window),a.adaptiveBackground={run:function(f){var g=a.extend({},e,f);a(g.selector).each(function(){var e=a(this),f=function(){RGBaster.colors(e[0],function(a){e.attr(b,a.dominant),e.trigger(d,{color:a.dominant,palette:a.palette})},20)};e.on(d,function(a,b){var d,f=b;if(d=e.attr(c)?e.parents(e.attr(c)):g.parent?e.parents(g.parent):e.parent(),d.css({backgroundColor:b.color}),g.normalizeTextColor){var h=function(){var a=f.color.match(/\d+/g),b=(299*a[0]+587*a[1]+114*a[2])/1e3;return b>=128?g.normalizedTextColors.dark:g.normalizedTextColors.light};d.css({color:h()})}}),f()})}}}(jQuery);