UNPKG

d3-decompose

Version:

Addon to d3.js that can decompose SVG/CSS transform strings

51 lines (37 loc) 1.43 kB
(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