d3-decompose
Version:
Addon to d3.js that can decompose SVG/CSS transform strings
51 lines (37 loc) • 1.43 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
/**
* Decomposes transform attribute in an object
* @param {string} input Transform string to decompose
* @param {boolean=true} asString Return the values as arrays (false) or transform strings (true)
* @returns {}
*/
function decompose() {
var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var asString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var transform = {};
if (!input || input === '') return transform;
var typeRegex = /(\w+\([\w+., -]*\))/g;
var valuesRegex = /([-\d.]+)[, ]?/g;
var t = null;
while (t = typeRegex.exec(input)) {
var typeValuesRegex = /(\w+)\(([^\)]+)\)/g;
var tv = typeValuesRegex.exec(t[1]);
var key = tv[1];
var valueString = tv[2];
var values = [];
var v = null;
while (v = valuesRegex.exec(valueString)) {
values.push(v[1]);
}
transform[key] = asString === true ? key + '(' + values.join(',') + ')' : values;
}
return transform;
}
exports.decompose = decompose;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=d3-decompose.js.map