@antv/g6
Version:
graph visualization frame work
83 lines (81 loc) • 2.2 kB
JavaScript
/**
* @fileOverview dom util
* @author huangtonger@aliyun.com
*/
var G = require('@antv/g');
var BaseUtil = require('./base');
var DomUtil = {};
BaseUtil.mix(DomUtil, G.DomUtil, {
/**
* add event listener
* @param {object} target - event source
* @param {object} eventType - event type
* @param {funtion} callback - event callback
* @return {object} - event object that has remove function
*/
addEventListener: function addEventListener(target, eventType, callback) {
if (target.addEventListener) {
target.addEventListener(eventType, callback, false);
return {
remove: function remove() {
target.removeEventListener(eventType, callback, false);
}
};
} else if (target.attachEvent) {
target.attachEvent('on' + eventType, callback);
return {
remove: function remove() {
target.detachEvent('on' + eventType, callback);
}
};
}
},
/**
* create dom by string
* @param {string} str dom string
* @param {object} css css
* @return {domobject} dom
*/
createDOM: function createDOM(str, css) {
var dom = void 0;
if (BaseUtil.isString(str)) {
dom = G.DomUtil.createDom(str);
} else {
dom = str;
}
dom.bbox = dom.getBoundingClientRect();
dom.hide = function () {
dom.style.visibility = 'hidden';
return dom;
};
dom.show = function () {
dom.style.visibility = 'visible';
return dom;
};
dom.css = function (obj) {
G.DomUtil.modifyCSS(dom, obj);
return dom;
};
dom.width = function () {
return G.DomUtil.getWidth(dom);
};
dom.height = function () {
return G.DomUtil.getHeight(dom);
};
dom.destroy = function () {
dom.parentNode && dom.parentNode.removeChild(dom);
};
dom.on = function (eventType, callback) {
dom.addEventListener(eventType, callback);
};
dom.off = function (eventType, callback) {
dom.removeEventListener(eventType, callback);
};
dom.attr = function (attrName) {
return dom.getAttribute(attrName);
};
dom.css(css);
return dom;
}
});
module.exports = DomUtil;