UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 4.4 kB
"use strict";exports.__esModule=true;exports.dashedAttr2CSSMap=exports.cacher=void 0;exports.default=_default;exports.showRecursively=exports.merge=exports.loadRefImage=exports.isFirefox=exports.getArrayCopy=void 0;var UNDEF,BLANK="__blank",nullStr="␀",E="",arrayToStr="[object Array]",objectToStr="[object Object]",objectStr="object",isFirefox=exports.isFirefox=/Firefox/i.test(window.navigator.userAgent),dashedAttr2CSSMap=exports.dashedAttr2CSSMap={"font-family":"fontFamily","font-size":"fontSize","text-anchor":"textAnchor","font-weight":"fontWeight","letter-spacing":"letterSpacing","font-style":"fontStyle"},loadRefImage=exports.loadRefImage=function loadRefImage(element,attrs){var src=attrs.src,RefImg=element._.RefImg;if(!RefImg){RefImg=element._.RefImg=new Image}if(attrs.src===undefined){return}RefImg.src=src;element._.RefImg=RefImg},showRecursively=exports.showRecursively=function showRecursively(el){var origAttrTree={},currentEl=el,currentNode=origAttrTree,fn=function fn(){var localEl=el,localNode=origAttrTree;while(localEl){if(localNode._doHide){localEl.hide()}localEl=localEl.parent;localNode=localNode.parent}};while(currentEl){if(currentEl.node&&currentEl.node.style&&currentEl.node.style.display==="none"){currentEl.show();currentNode._doHide=true}currentEl=currentEl.parent;currentNode.parent={};currentNode=currentNode.parent}return fn},checkCyclicRef=function checkCyclicRef(obj,parentArr){var i=parentArr.length,bIndex=-1;while(i--){if(obj===parentArr[i]){bIndex=i;return bIndex}}return bIndex},getArrayCopy=exports.getArrayCopy=function getArrayCopy(array){var i,len,arg;for(i=0,len=array.length,arg=new Array(len);i<len;i++){arg[i]=array[i]}return arg},_merge=exports.merge=function merge(obj1,obj2,skipUndef,tgtArr,srcArr){var item,srcVal,tgtVal,str,cRef;if(!srcArr){tgtArr=[obj1];srcArr=[obj2]}else{tgtArr.push(obj1);srcArr.push(obj2)}if(obj2 instanceof Array){for(item=0;item<obj2.length;item+=1){try{srcVal=obj1[item];tgtVal=obj2[item]}catch(e){continue}if(typeof tgtVal!==objectStr){if(!(skipUndef&&tgtVal===UNDEF)){obj1[item]=tgtVal}}else{if(srcVal===null||typeof srcVal!==objectStr){srcVal=obj1[item]=tgtVal instanceof Array?[]:{}}cRef=checkCyclicRef(tgtVal,srcArr);if(cRef!==-1){srcVal=obj1[item]=tgtArr[cRef]}else{_merge(srcVal,tgtVal,skipUndef,tgtArr,srcArr)}}}}else{for(item in obj2){try{srcVal=obj1[item];tgtVal=obj2[item]}catch(e){continue}if(tgtVal!==null&&typeof tgtVal===objectStr){str=Object.prototype.toString.call(tgtVal);if(str===objectToStr){if(srcVal===null||typeof srcVal!==objectStr){srcVal=obj1[item]={}}cRef=checkCyclicRef(tgtVal,srcArr);if(cRef!==-1){srcVal=obj1[item]=tgtArr[cRef]}else{_merge(srcVal,tgtVal,skipUndef,tgtArr,srcArr)}}else if(str===arrayToStr){if(srcVal===null||!(srcVal instanceof Array)){srcVal=obj1[item]=[]}cRef=checkCyclicRef(tgtVal,srcArr);if(cRef!==-1){srcVal=obj1[item]=tgtArr[cRef]}else{_merge(srcVal,tgtVal,skipUndef,tgtArr,srcArr)}}else{obj1[item]=tgtVal}}else{obj1[item]=tgtVal}}}return obj1};function _default(obj1,obj2,skipUndef,shallow){var item;if(typeof obj1!==objectStr&&typeof obj2!==objectStr){return null}if(typeof obj2!==objectStr||obj2===null){return obj1}if(typeof obj1==="undefined"){obj1=obj2 instanceof Array?[]:{}}if(shallow){for(item in obj2){obj1[item]=obj2[item]}}else{_merge(obj1,obj2,skipUndef)}return obj1}var cacher=exports.cacher=function cacher(f,scope,postprocessor,key,maxCache,sharedCache,firstArgKey){var cache=sharedCache||{},count=0;if(cache.__start===undefined){cache.__start=null}if(cache.__end===undefined){cache.__end=null}maxCache=maxCache||1e3;key=key||"item";function cachedfunction(arg1){var hashKey=firstArgKey?arg1:getArrayCopy(arguments).join(nullStr),cur,oldEnd,oldStart;hashKey=hashKey===E?BLANK:hashKey;cur=cache[hashKey];if(!cur){cur=cache[hashKey]={};f&&(cache[hashKey][key]=postprocessor?postprocessor(f.apply(scope,arguments)):f.apply(scope,arguments));cache.__end===null&&(cache.__end=hashKey);count++;if(count>maxCache&&cache.__end){oldEnd=cache[cache.__end];cache[oldEnd.__prev].__next=null;delete cache[cache.__end];cache.__end=oldEnd.__prev;count--}}else{if(cur.__prev){cache[cur.__prev].__next=cur.__next;if(cur.__next){cur.__next.__prev=cur.__prev}else{cache.__end=cur.__prev}}}oldStart=cache.__start;if(oldStart!==cur){cur.__prev=null;cur.__next=oldStart;oldStart&&(oldStart.__prev=hashKey);cache.__start=cur}return cache[hashKey][key]}return cachedfunction};