UNPKG

svg-path-d

Version:

SVG path data (path[d] attribute content) manipulation library.

76 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clonePath = exports.makePath = exports.createPathNode = exports.getY = exports.getX = void 0; var command_1 = require("./command"); var command_assertion_1 = require("./command-assertion"); var in_place_transform_1 = require("./in-place-transform"); function getMoveTo(item) { for (var node = item; node; node = node.prev) { if (command_assertion_1.isMoveTo(node)) { return node; } } } function getX(item) { if (item) { if (command_assertion_1.isClosePath(item)) { return getX(getMoveTo(item.prev)); } else if (command_assertion_1.isVLineTo(item)) { return getX(item.prev); } else { return item.x; } } return 0; } exports.getX = getX; function getY(item) { if (item) { if (command_assertion_1.isClosePath(item)) { return getY(getMoveTo(item.prev)); } else if (command_assertion_1.isHLineTo(item)) { return getY(item.prev); } else { return item.y; } } return 0; } exports.getY = getY; function createPathNode(name, args, relative, prev) { var node = command_1.createDrawItem(name, args); node.prev = prev; if (relative && prev) { in_place_transform_1.applyTranslate(node, getX(prev), getY(prev)); } return node; } exports.createPathNode = createPathNode; /** * Connects items and casts the DrawTo array into a PathNode array. * @param items array to cast */ function makePath(items) { var prev; for (var _i = 0, _a = items; _i < _a.length; _i++) { var node = _a[_i]; node.prev = prev; prev = node; } return items; } exports.makePath = makePath; function clonePath(items, mapper) { var prev; return items.map(function (value, index, arr) { var next = mapper(value, index, arr); next.prev = prev; return (prev = next); }); } exports.clonePath = clonePath; //# sourceMappingURL=path-node.js.map