UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 7.95 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=_default;var _domEvent=_interopRequireDefault(require("../../dom-event"));var _lib=require("../../lib");var _fusionEventWrapper=_interopRequireDefault(require("../../fusion-events-wrapper/fusion-event-wrapper"));var _trustedPolicy=_interopRequireDefault(require("@fusioncharts/utils/src/trusted-policy"));function _default(R){var UNDEF,win=window,doc=win.document,isIE=/msie/i.test(win.navigator.userAgent)&&!win.opera,isVML=R.type==="VML",NONE="none",ABSOLUTE="absolute",BLANK="",PX="px",proto,styleAttrMap={cursor:"cursor"},styleAttrNumericMap={x:"left",y:"top",strokeWidth:"borderThickness","stroke-width":"borderThickness",width:"width",height:"height"},styleAttrColorMap={fill:"backgroundColor",stroke:"borderColor",color:"color"},defaultElementStyle={left:0,top:0,padding:0,border:NONE,margin:0,outline:NONE,"-webkit-apperance":NONE,position:ABSOLUTE,zIndex:20},fusionEventWrapper=new _fusionEventWrapper.default,hashify=function hashify(color){return color&&color.replace(/^#?([a-f0-9]+)/gi,"#$1")||NONE},garbageBin,createElement=function createElement(tagName,attributes,css,parentElement){var elem=doc.createElement(tagName),x;for(x in attributes){if(styleAttrNumericMap[x]){elem.style[x]=attributes[x]}else{elem.setAttribute(x,attributes[x])}}for(x in css){elem.style[x]=css[x]}parentElement&&parentElement.appendChild&&parentElement.appendChild(elem);return elem},discardElement=function discardElement(element){if(!garbageBin){garbageBin=createElement("div")}if(element){garbageBin.appendChild(element)}garbageBin.innerHTML=_trustedPolicy.default.createHTML("")},_attr=function attr(elem,prop,value){var key,ret;if(typeof prop==="string"){if(value!==UNDEF&&value!==null){elem.setAttribute(prop,value)}else if(elem&&elem.getAttribute){ret=elem.getAttribute(prop)}}else if(prop!==UNDEF&&prop!==null&&typeof prop==="object"){for(key in prop){elem.setAttribute(key,prop[key])}}return ret},_HTMLElement;_HTMLElement=function HTMLElement(node,_group,attrs){var wrapper=this,group=_group;if(group&&group instanceof _HTMLElement){group=group.element}wrapper.element=createElement(node,attrs,defaultElementStyle,group);wrapper.nodeName=node.toLowerCase();wrapper.added=Boolean(group);wrapper.attrs={}};proto=_HTMLElement.prototype={attr:function attr(hash){var wrapper=this,element=wrapper.element,restore={},key,val,value,skipAttr,state,optionArr,optionString,i,len,ele;if(typeof hash!=="object"){return wrapper[hash]!==UNDEF?wrapper[hash]:_attr(element,hash)}for(key in hash){value=hash[key];if(styleAttrMap[key]){switch(key){case"cursor":if(value==="pointer"&&isVML){value="hand"}break}element.style[styleAttrMap[key]]=value;skipAttr=true}else if(styleAttrNumericMap[key]){element.style[styleAttrNumericMap[key]]=value+PX;skipAttr=true}else if(styleAttrColorMap[key]){element.style[styleAttrColorMap[key]]=hashify(value);skipAttr=true}else if(/^visibility$/i.test(key)){state=value==="hidden";element.style.display=state?"none":"";wrapper.hidden=state;skipAttr=true}else if(/^opacity$/i.test(key)){element.style.opacity=value;if(isIE){val=Number(value)*100;element.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+val+")"}skipAttr=true}else if(/^innerhtml$/i.test(key)){if(isVML&&element.nodeName.toLowerCase()==="select"){optionArr=value.match(/<option\s?[\s\S]*?(\/>|><\/option>|>[\s\S]*?<\/option>)/gi);while(element.firstChild){element.removeChild(element.firstChild)}for(i=0,len=optionArr.length;i<len;i+=1){optionString=optionArr[i];ele=doc.createElement("option");if(/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/gi.test(optionString)){ele.value=optionString.replace(/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/gi,"$1").replace(/[\s\S]*value\s*\=\s*[\'\"]([\s\S]*)[\'\"]/,"$1")}ele.text=optionString.replace(/<option\s*[\s\S]*[\'\"]?\s*?[\/>|\>]([\s\S]*)<\/option>/gi,"$1 ");element.options.add(ele)}}else{element.nodeName.toLowerCase()!=="input"&&value!==UNDEF&&(element.innerHTML=value||BLANK)}skipAttr=true}else if(/^text$/i.test(key)){if(element.nodeName.toLowerCase()!=="input"){element.innerHTML=_trustedPolicy.default.createHTML("");value!==UNDEF&&element.appendChild(doc.createTextNode(value))}skipAttr=true}else if(/^type$/i.test(key)&&isIE&&wrapper.added){skipAttr=true}if(skipAttr){restore[key]=value;delete hash[key];skipAttr=false}}for(key in hash){element.setAttribute(key,hash[key])}for(key in restore){wrapper[key]=wrapper.attrs[key]=hash[key]=restore[key];delete restore[key]}return this},val:function val(set){var wrapper=this,element=wrapper.element,getter=set===UNDEF;if(wrapper.nodeName==="input"&&element.getAttribute("type")==="checkbox"){return getter?wrapper.checked()?1:0:wrapper.checked(set)}else if(wrapper.nodeName==="select"){var childNodes=element.childNodes,selectedIndex=element.selectedIndex,len=childNodes.length;if(set===""){return}if(!getter){for(var i=0;i<len;i++){if(childNodes[i].value===set){element.selectedIndex=i;return childNodes[i].value}}}_lib.isIE9&&(selectedIndex=0);return getter?childNodes[selectedIndex].value:(childNodes[len-1].value=set,element.selectedIndex=len-1,wrapper)}return getter?element.value:(element.value=set,wrapper)},checked:function checked(set){var wrapper=this,element=wrapper.element;return set===UNDEF?element.checked:(set?element.setAttribute("checked","checked"):element.removeAttribute("checked"),wrapper)},css:function css(hash,val){var wrapper=this,element=wrapper.element,styleObj=element.style,key;if(typeof hash==="object"){for(key in hash){styleObj[key]=hash[key]}}else if(key){if(val!==UNDEF){styleObj[key]=val}}return wrapper},translate:function translate(x,y){var wrapper=this,element=wrapper.element;if(x!==UNDEF){element.style.left=x+PX}if(y!==UNDEF){element.style.top=y+PX}return wrapper},add:function add(group,prepend){var wrapper=this,element=this.element,parent=group.element;if(prepend){parent.insertBefore(element,parent.firstChild)}else{parent.appendChild(element)}wrapper.added=true;return wrapper},hide:function hide(){this.element.style.display="none";return this},show:function show(){this.element.style.display="";return this},isVisible:function isVisible(){return this.element.style.display!=="none"},focus:function focus(){if(typeof this.element.focus==="function"){this.element.focus()}else{_domEvent.default.fire(this.element,"focus")}},destroy:function destroy(){var wrapper=this,element=wrapper.element||{},key,fnStr="function";element.onclick=element.onmouseout=element.onmouseover=element.onmousemove=element.onblur=element.onfocus=null;element=discardElement(element);delete wrapper.element;for(key in wrapper){wrapper[key]=typeof wrapper[key]===fnStr?R._removedFactory(key):null}wrapper.removed=true;return null},on:function on(eventType,handler){var fn=handler,wrapper=this;fusionEventWrapper.on(this.element,eventType,fn);return wrapper},off:function off(eventType,handler){fusionEventWrapper.off(this.element,eventType,handler)},bind:function bind(event,handler,data){_domEvent.default.listen(this.element,event,handler,data);return this},unbind:function unbind(event,handler){_domEvent.default.unlisten(this.element,event,handler);return this},trigger:function trigger(event,eventObj){_domEvent.default.fire(this.element,event,eventObj);return this}};proto.remove=proto.destroy;proto.constructor=_HTMLElement;R.fn.html=function(node,attrs,css,group){var rootAttr={},wrapper,prop;if(attrs&&"type"in attrs){rootAttr.type=attrs.type;delete attrs.type}wrapper=new _HTMLElement(node,group,rootAttr).css(css).attr(attrs);for(prop in rootAttr){attrs[prop]=rootAttr[prop]}wrapper.ca=function(){return false};wrapper.appendTo=function(_container){var container=_container;this.parent=container;if(container&&container instanceof _HTMLElement){container=container.element}container.appendChild(this.element)};wrapper.animateWith=R.el.animateWith;return wrapper}}