0.4.3 • Published 3 years ago

pathinator v0.4.3

Weekly downloads
15
License
MIT
Repository
github
Last release
3 years ago

Pathinator

SVG path builder and minifier

npm build coverage deps size vulnerabilities license

Installation

npm install pathinator

optimizeSvgPaths(input, settings) ⇒ Promise.<(string|Document)>

Optimize all the paths in an svg file. Currently supports the d attribute in the path element and the points attribute in both polygon and polyline elements.

Returns: Promise.<(string|Document)> - Resolves with the optimized svg in the same format provided.

ParamTypeDescription
inputstring, DocumentCan be the string content of an svg or a DOM Document.
settingsobjectSee Path.export. Settings are applied to each path found in the svg.

Example

import { optimizeSvgPaths } from 'pathinator';

const svg = document.querySelector('svg');

optimizeSvgPaths(svg, { compress: true })
    .then((result) => {
        // do something
    });

Path

new Path(path)

Parse, build, and optimize SVG path data.

ParamTypeDescription
pathstringOptional path data to parse.

Example

import { Path } from 'pathinator';

const path = new Path()
    .move(50, 100)
    .line(100, 100)
    .line(200, 200)
    .close();

path.length ⇒ integer

The total number of commands in this path.

path.import(path) ⇒ object     🔗 Chainable

Import a path string. Removes any previous commands and create a new one.

Returns: object - Returns this.

ParamTypeDescription
pathstringA valid path data string or polygon string.

path.move(...args) ⇒ object     🔗 Chainable

Add a move command.

Returns: object - Returns this.

ParamTypeDescription
...args*X and y coordinates or a string of X and y coordinates. If the final argument is true then command will be absolute coordinates.

path.line(...args) ⇒ object     🔗 Chainable

Add a line command.

Returns: object - Returns this.

ParamTypeDescription
...args*X and y coordinates or a string of X and y coordinates. If the final argument is true then command will be absolute coordinates.

path.cubic(...args) ⇒ object     🔗 Chainable

Add a quadratic bezier curve command.

Returns: object - Returns this.

ParamTypeDescription
...args*Series of coordinates or a string of coordinates. If the final argument is true then command will be absolute coordinates.

path.quadratic(...args) ⇒ object     🔗 Chainable

Add a quadratic bezier curve command.

Returns: object - Returns this.

ParamTypeDescription
...args*Series of coordinates or a string of coordinates. If the final argument is true then command will be absolute coordinates.

path.arc(...args) ⇒ object     🔗 Chainable

Add an arc command.

Returns: object - Returns this.

ParamTypeDescription
...args*Series of coordinates / values or a string of coordinates / values. If the final argument is true then command will be absolute coordinates.

path.close(...args) ⇒ object     🔗 Chainable

Add a close command.

Returns: object - Returns this.

ParamTypeDefaultDescription
...argsbooleanfalseIf the argument is true then command will be absolute coordinates.

path.update(index, values) ⇒ object     🔗 Chainable

Update command values at a specific index.

Returns: object - Returns this.

ParamTypeDescription
indexintegerIndex of the command to update.
valuesstring, Array.<number>New values for the command at this index.

path.eachPoint(callback) ⇒ object     🔗 Chainable

Calls callback for each point in the path.

Returns: object - Returns this.

ParamTypeDescription
callbackfunctionProvides three arguments: the Point, a boolean indicating if the point is a control point, and the command index.

path.transform(settings) ⇒ object     🔗 Chainable

Transform all commands in path.

Returns: object - Returns this.

ParamTypeDefaultDescription
settingsobjectOptional settings object.
settings.fractionDigitsinteger3Round all numbers in path to a specified number of fraction digits.
settings.scalenumber, Point, Array, objectScale the entire path. If a number is provided then x and y are scaled the same. To scale x and y differently provide a Point, an array as x, y, or an object as { x:, y: }.
settings.translatenumber, Point, Array, objectTranslate the entire string a specified distance. If a number is provided then x and y are translated the same. To translated x and y differently provide a Point, an array as x, y, or an object as { x:, y: }.

path.export(settings) ⇒ Promise.<string>

Export a string of the path. Transforms are only applied to the exported path.

ParamTypeDefaultDescription
settingsobjectOptional settings object.
settings.coordinatesstring"initial"Can be 'absolute' to convert all coordinates to absolute, 'relative' to convert all coordinates to relative, 'auto' to convert coordinates to whichever is the fewest characters, 'initial' (default) to retain the coordinates set on each command.
settings.compressbooleanfalseRemove excess whitespace and unnecessary characters.
settings.combinebooleantrueCombine consecutive commands that are redundant.
settings.fractionDigitsinteger3Round all numbers in path to a specified number of fraction digits.
settings.scalenumber, Point, Array, objectScale the entire path. If a number is provided then x and y are scaled the same. To scale x and y differently provide a Point, an array as x, y, or an object as { x:, y: }.
settings.translatenumber, Point, Array, objectTranslate the entire string a specified distance. If a number is provided then x and y are translated the same. To translated x and y differently provide a Point, an array as x, y, or an object as { x:, y: }.
settings.maxCharsPerLineintegerAdd newlines at logical breaks in the path to improve readability.
settings.commandsOnNewLinesbooleanfalseAdd a newline between each command.
settings.toPolygonbooleanfalseFormat the string for use in a polygon element. Sets coordinates to 'absolute'.
settings.asyncbooleanfalseProcess each command in a separate Promise.
0.4.3

3 years ago

0.4.2

3 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.2

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago