1(function($){'use strict';if(typeof window.PUSH_AUTOCOLOR=='undefined'){window.PUSH_AUTOCOLOR={};} 2PUSH_AUTOCOLOR.init=function(){if(typeof PUSH_AUTOCOLOR.elementSelectors!=='undefined'){for(let i in PUSH_AUTOCOLOR.elementSelectors){let elementSelector=PUSH_AUTOCOLOR.elementSelectors[i] 3let elements=$(elementSelector) 4if(elements.length){PUSH_AUTOCOLOR.setAutoColor(elements)}else{PUSH_AUTOCOLOR.onDomInsertListener(elementSelector,function(){elements=$(elementSelector) 5PUSH_AUTOCOLOR.setAutoColor(elements)})}}}} 6PUSH_AUTOCOLOR.observers=[] 7PUSH_AUTOCOLOR.onDomInsertListener=function(elementSelector,_callback){const cleanSelector=elementSelector.replace(/#|\./g,"") 8const mutationCallback=function(mutationsList,observer){for(let mutation of mutationsList){if(mutation.type==='childList'){for(let addedNode of mutation.addedNodes){if(addedNode.id===cleanSelector||addedNode.className===cleanSelector){if(typeof PUSH_AUTOCOLOR.observers[elementSelector]!=='undefined'){PUSH_AUTOCOLOR.observers[elementSelector].disconnect()} 9_callback()}}}}} 10PUSH_AUTOCOLOR.observers[elementSelector]=new MutationObserver(mutationCallback) 11const targetNode=document.querySelector('body') 12PUSH_AUTOCOLOR.observers[elementSelector].observe(targetNode,{attributes:true,childList:true,subtree:true,})} 13PUSH_AUTOCOLOR.changeObservers=[] 14PUSH_AUTOCOLOR.onDomChangeListener=function(targetNode,_callback){const cleanSelector=targetNode.id.replace(/#|\./g,"") 15const mutationCallback=function(mutationsList,observer){for(let mutation of mutationsList){if(typeof PUSH_AUTOCOLOR.changeObservers[cleanSelector]!=='undefined'){PUSH_AUTOCOLOR.changeObservers[cleanSelector].disconnect()} 16_callback()}} 17PUSH_AUTOCOLOR.changeObservers[cleanSelector]=new MutationObserver(mutationCallback) 18PUSH_AUTOCOLOR.changeObservers[cleanSelector].observe(targetNode,{attributes:true,childList:true,subtree:true,})} 19PUSH_AUTOCOLOR.setAutoColor=function(element){if(typeof element!=="undefined"&&element.length){if(element.length>1){jQuery(element).each(function(){PUSH_AUTOCOLOR.setAutoColor(jQuery(this));});}else{var foregroundBrightness=PUSH_AUTOCOLOR.getBrightnessLevel(element,'color');var backgroundBrightness=PUSH_AUTOCOLOR.getBrightnessLevel(element,'background-color');var isBackgroundBright=backgroundBrightness>120;var isForegroundBright=foregroundBrightness>120;let setColor=null 20if(isBackgroundBright&&isForegroundBright){setColor='black'}else if(!isBackgroundBright&&!isForegroundBright){setColor='white'} 21if(setColor){PUSH_AUTOCOLOR.setCssProperty(element,'color',setColor) 22let htmlElement=element.get(0) 23PUSH_AUTOCOLOR.onDomChangeListener(htmlElement,function(){PUSH_AUTOCOLOR.setAutoColor(element)})}}}} 24PUSH_AUTOCOLOR.getBrightnessLevel=function(element,property){var elementBackgroundImg=jQuery(element).css('background-image');if(typeof elementBackgroundImg!=='undefined'&&elementBackgroundImg.length&&elementBackgroundImg!=="none"){return false;} 25var elementColor=jQuery(element).css(property);if(typeof elementColor!=='undefined'){var colors=PUSH_AUTOCOLOR.getRgbValues(elementColor);if(colors){if(typeof colors.opacity!=='undefined'){var opacity=parseFloat(colors.opacity);if(opacity===0){if(property==='background-color'&&jQuery(element).prop('tagName')!=="HTML"){var parent=jQuery(element).parent();if(parent&&parent.length){return PUSH_AUTOCOLOR.getBrightnessLevel(parent,property)}} 26return 255;}} 27var brightness=Math.round(((parseInt(colors.red)*299)+ 28(parseInt(colors.green)*587)+ 29(parseInt(colors.blue)*114))/1000);return brightness;}} 30return false;} 31PUSH_AUTOCOLOR.setCssProperty=function(element,propertyName,value){let searchPattern=new RegExp(propertyName+":(.*?);","ig") 32let replaceWith=propertyName+": "+value+" !important;";let currentStyle=$(element).attr("style") 33if(currentStyle.search(searchPattern)!==-1){$(element).attr("style",currentStyle.replace(searchPattern,replaceWith))}else{if(!currentStyle.endsWith(';')){currentStyle=currentStyle+';';} 34$(element).attr("style",currentStyle+' '+replaceWith)}} 35PUSH_AUTOCOLOR.getRgbValues=function(color){var match=color.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.?\d?))\))?/);return match?{red:match[1],green:match[2],blue:match[3],opacity:match[4]}:false;} 36$(document).ready(function(){PUSH_AUTOCOLOR.init();});})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.