UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

139 lines 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeAttrs = exports.styleToObject = exports.kebablizeAttrs = exports.qualifyAttr = exports.attr = exports.setAttributes = exports.setAttribute = exports.removeAttribute = exports.getAttribute = void 0; var elem_1 = require("./elem"); var format_1 = require("../string/format"); function getAttribute(elem, name) { return elem.getAttribute(name); } exports.getAttribute = getAttribute; function removeAttribute(elem, name) { var qualified = qualifyAttr(name); if (qualified.ns) { if (elem.hasAttributeNS(qualified.ns, qualified.local)) { elem.removeAttributeNS(qualified.ns, qualified.local); } } else if (elem.hasAttribute(name)) { elem.removeAttribute(name); } } exports.removeAttribute = removeAttribute; function setAttribute(elem, name, value) { if (value == null) { return removeAttribute(elem, name); } var qualified = qualifyAttr(name); if (qualified.ns && typeof value === 'string') { elem.setAttributeNS(qualified.ns, name, value); } else if (name === 'id') { elem.id = "" + value; } else { elem.setAttribute(name, "" + value); } } exports.setAttribute = setAttribute; function setAttributes(elem, attrs) { Object.keys(attrs).forEach(function (name) { setAttribute(elem, name, attrs[name]); }); } exports.setAttributes = setAttributes; function attr(elem, name, value) { if (name == null) { var attrs = elem.attributes; var ret = {}; for (var i = 0; i < attrs.length; i += 1) { ret[attrs[i].name] = attrs[i].value; } return ret; } if (typeof name === 'string' && value === undefined) { return elem.getAttribute(name); } if (typeof name === 'object') { setAttributes(elem, name); } else { setAttribute(elem, name, value); } } exports.attr = attr; function qualifyAttr(name) { if (name.indexOf(':') !== -1) { var combinedKey = name.split(':'); return { ns: elem_1.ns[combinedKey[0]], local: combinedKey[1], }; } return { ns: null, local: name, }; } exports.qualifyAttr = qualifyAttr; function kebablizeAttrs(attrs) { var result = {}; Object.keys(attrs).forEach(function (key) { var name = (0, format_1.kebabCase)(key); result[name] = attrs[key]; }); return result; } exports.kebablizeAttrs = kebablizeAttrs; function styleToObject(styleString) { var ret = {}; var styles = styleString.split(';'); styles.forEach(function (item) { var section = item.trim(); if (section) { var pair = section.split('='); if (pair.length) { ret[pair[0].trim()] = pair[1] ? pair[1].trim() : ''; } } }); return ret; } exports.styleToObject = styleToObject; function mergeAttrs(target, source) { Object.keys(source).forEach(function (attr) { if (attr === 'class') { target[attr] = target[attr] ? target[attr] + " " + source[attr] : source[attr]; } else if (attr === 'style') { var to = typeof target[attr] === 'object'; var so = typeof source[attr] === 'object'; var tt = void 0; var ss = void 0; if (to && so) { tt = target[attr]; ss = source[attr]; } else if (to) { tt = target[attr]; ss = styleToObject(source[attr]); } else if (so) { tt = styleToObject(target[attr]); ss = source[attr]; } else { tt = styleToObject(target[attr]); ss = styleToObject(source[attr]); } target[attr] = mergeAttrs(tt, ss); } else { target[attr] = source[attr]; } }); return target; } exports.mergeAttrs = mergeAttrs; //# sourceMappingURL=attr.js.map