UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 3.55 kB
"use strict";exports.__esModule=true;exports.default=_default;var _lib=require("../../lib");var RGB_STR="rgb",DASH_STR="-",DARK_FILTER_STR="darkFilter",BRIGHT_FILTER_STR="brightFilter",TEXT_OUTLINE="text-outline",NONE="none",SPC=" ",COLOR_BLACK="#000000",COLOR_WHITE="#ffffff",COLOR_WHITE_MATRIX="1 1 1 1 255 1 1 1 1 255 1 1 1 1 255 0 0 0 1 0",COLOR_BLACK_MATRIX="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0",getRGB=function getRGB(rgbColor){var rgbArr=rgbColor.split("(")[1].split(")")[0].split(",");return{R:+rgbArr[0],G:+rgbArr[1],B:+rgbArr[2]}},determineFilterType=function determineFilterType(rgbObj){var R=rgbObj.R,G=rgbObj.G,B=rgbObj.B,brightness;brightness=(R*299+G*587+B*114)/1e3;return brightness>123?DARK_FILTER_STR:BRIGHT_FILTER_STR};function _default(R){if(R.svg){R.createOutlineFilter=function(configObj){var paper=configObj.paper,rgbObj=configObj.rgbObj,colorMapText=configObj.colorMapText,filterCache=paper.outlineFilterCaches,filterColorMap=paper.filterColorMap,hash,id,filterType,filterDefs,filter,children;filterType=filterColorMap[colorMapText]=determineFilterType(rgbObj);hash=TEXT_OUTLINE+DASH_STR+[colorMapText,filterType].join(SPC);id=R.getElementID(hash.replace(/[\(\)\s%:,\xb0#]/g,"_"));filterDefs=R.isFirefox?paper.addDefs({filter:{tagName:"filter",id:id,children:[{tagName:"feMorphology",result:"DILATED",in:"SourceAlpha",operator:"dilate",radius:R.isIE11?"1.5":"1"},{tagName:"feFlood",result:"FLOOD","flood-color":filterType===DARK_FILTER_STR?COLOR_BLACK:COLOR_WHITE,"flood-opacity":"1"},{tagName:"feComposite",result:"OUTLINE",in:"FLOOD",in2:"DILATED",operator:"in"},{tagName:"feMerge",children:[{tagName:"feMergeNode",in:"OUTLINE"},{tagName:"feMergeNode",in:"SourceGraphic"}]}]}}):paper.addDefs({filter:{tagName:"filter",id:id,children:[{tagName:"feColorMatrix",result:"COLORED",in:"SourceGraphic",type:"matrix",values:filterType===DARK_FILTER_STR?COLOR_BLACK_MATRIX:COLOR_WHITE_MATRIX},{tagName:"feOffset",dx:"1",dy:"1",result:"OFFSET11",in:"COLORED"},{tagName:"feOffset",dx:"-1",dy:"-1",result:"OFFSET-1-1",in:"COLORED"},{tagName:"feOffset",dx:"-1",dy:"1",result:"OFFSET-11",in:"COLORED"},{tagName:"feOffset",dx:"1",dy:"-1",result:"OFFSET1-1",in:"COLORED"},{tagName:"feMerge",children:[{tagName:"feMergeNode",in:"OFFSET1-1"},{tagName:"feMergeNode",in:"OFFSET-1-1"},{tagName:"feMergeNode",in:"OFFSET11"},{tagName:"feMergeNode",in:"OFFSET-11"},{tagName:"feMergeNode",in:"SourceGraphic"}]}]}});children=filterDefs.filter.children;filter=filterCache[filterType]={hash:hash,id:id,filter:filterDefs.filter.element,morph:children[0].element,flood:children[1].element,composite:children[2].element,merge:children[3].element};return filter};R.el.outlineText=function(outline,color){var rgbColor;if(!color||color===NONE){return}if(/(^#[0-9A-Fa-f]{6}$)|(^#[0-9A-Fa-f]{3}$)/.test(color)){rgbColor=(0,_lib.convertColor)(color)}else{rgbColor=color}var elem=this,node=elem.node,paper=elem.paper,filterCache=paper.outlineFilterCaches||(paper.outlineFilterCaches={}),filterColorMap=paper.filterColorMap||(paper.filterColorMap={}),filterType,outLineFilter,rgbObj=getRGB(rgbColor),colorMapText=RGB_STR+DASH_STR+rgbObj.R+DASH_STR+rgbObj.G+DASH_STR+rgbObj.B;if(outline){filterType=filterColorMap[colorMapText];if(filterType&&filterCache[filterType]){outLineFilter=filterCache[filterType]}else{outLineFilter=R.createOutlineFilter({rgbObj:rgbObj,paper:paper,colorMapText:colorMapText})}node.setAttribute("filter",'url("'+R._url+"#"+outLineFilter.id+'")')}else{node.removeAttribute("filter")}}}else{R.el.outlineText=function(){return this}}}