svg.js v3.0.0 Release Notes

Release Date: 2018-12-01 // over 5 years ago
  • ➕ Added

    • ➕ added text() method to SVG.Path to create a textPath from this path (#705)
    • ➕ added SVG.HTMLNode which is the object wrapped around html nodes to put something in them
    • ➕ added dispatch() method on SVG.Element which returns the dispatched event for event cancelation (#550)
    • ➕ added isRoot() on SVG.Doc (#809)
    • ➕ added a linter during the npm build process
    • ➕ added beziere() and steps() to generate easing functions
    • ➕ added insertAfter() and insertBefore
    • ➕ added SVG.Style which can be created with style() or fontface() (#517)
    • ➕ added EventTarget which is a baseclass to get event abilities (#641)
    • ➕ added Dom which is a baseclass to get dom abilities
    • ➕ added round() which lets you round attribues from a node
    • ➕ added ax(), ay(), amove() to change texts x and y values directly (#787)
    • ➕ added possibility to pass attributes into a constructor like: new SVG.Rect({width:100})
    • ➕ added possibility to pass in additional attribues to element creators e.g. canvas.rect({x:100}) or canvas.rect(100, 100, {x:100}) (#796)
    • ➕ added SVG.List (#645)
    • ➕ added words() and element() to Dom because of (#935)
    • ➕ added lab, lch, hsl and cmyk color spaces (#790)
    • ➕ added random() method on SVG.Color to create random colors of different kinds (#939)

    ✂ Removed

    • ✂ removed SVG.Array.split() function
    • ✂ removed workaround for browser bug with stroke-width
    • ✂ removed polyfills
    • ✂ removed SVG.Set in favour of SVG.List
    • ✂ removed feature to set style with css string (e.g. "fill:none;display:block;")
    • ✂ removed loaded() and error() method on SVG.Image (#706)
    • ✂ removed sub-pixel offset fix
    • ✂ removed SVG.Nested (#809)
    • ✂ removed show() from SVG.A to avoid name clash (#802)
    • ✂ removed size() from SVG.Text to avoid name clash (#799)
    • ✂ removed native() function
    • ✂ removed Bare in favour of Dom (#935)
    • ✂ removed bower support because it is deprecated

    🔄 Changed

    • gradients now have there corresponding node as type and not only radial/linear
    • SVG.Path.pointAt() correctly returns an SVG.Point now
    • replaced static reference to masker in SVG.Mask with the masker() method
    • replaced static reference to clipper in SVG.ClipPath with the clipper() method
    • replaced static reference to targets in SVG.Mask and SVG.ClipPath with the targets() method
    • 🚚 moved all regexes to SVG.regex
    • 🆕 new constructor signature for SVG.Image and load(): container.image(src, callback) / image.load(src, callback) (#706)
    • 💅 changed style() to css(). Now accepts array as input and returns object when no argument given (#517)
    • ids are not generated upon creation anymore. Instead they are generated when requested (#559)
    • SVG.extend() now expects exactly one module or an array of modules
    • SVG.Text.path() now returns an instance of SVG.TextPath (#705)
    • 🚚 SVG.Text.path() does not move all contents to the textPath (#705)
    • SVG.TextPath now inherits from SVG.Text and can be manipulated the same way (#705)
    • SVG.Text.textPath() returns the first textPaths in the text element (#705)
    • 📇 renamed SVG.Stop constructor at() on SVG.Gradient to stop() (#707)
    • 📇 renamed fill() method on SVG.Gradient and SVG.Pattern to url() (#708)
    • 📇 renamed previous() method to prev()
    • 🐎 changed childNodes to children (same for firstChild, lastChild, ...) (#710) - changed it back because of performance drop
    • 🚚 moved defs() method from SVG.Parent to SVG.Element
    • SVG() can be called with css selector, node or svg string, now. Without an argument it creates a new SVG.Doc() (#646)
    • add(), put(), addTo(), putIn() now excepts all arguments accepted by SVG()
    • all SVG.* objects now can have a node as parameter when constructing
    • 0️⃣ SVG() does not set a default size anymore
    • 0️⃣ default constructor now has an optional node argument which is used to consruct the object e.g. new SVG.Rect(rectNode)
    • SVG.Elements constructor now tries to import svgjs:data from the node
    • SVG.on() calls the listener in the context of the passed object. el.on always uses the svg.js object as context
    • SVG.on()/off() and el.on()/off() now accepts multiple comma or space separated events e.g. "mousedown, foo bar" (#727)
    • Matrices now apply transformations like scale, translate, etc... by left multiplying them to simplify transformations
    • ⚡️ The way transform() works is now completely different. See the docs for more as soon as they are updated
    • 🔀 merged SVG.Doc and SVG.Nested, added isRoot() on SVG.Doc() (#809)
    • 📄 The fx module was completely reworked to be faster and less error prone. For more information on how to use it refer to the docs
    • The whole lib is now splitted into es6 modules (#875)
    • Element.svg() now can can replace the current node, can export the children of a node and can take an export modifier to change/replace the exported nodes
    • ungroup() now breaks off one container and not more
    • 👯 clone() does not add the clone to the dom anymore
    • attr() excepts array now to get multiple values at once
    • SVG.Text.rebuild() now takes every font-size into account (#512)
    • fill() and stroke() return the fill and stroke attribute when called as getter (#789)
    • parents() now gives back all parents until the passed one or document
    • Image callback passes normal load event instead of custom object (#931)
    • 📇 renamed Doc to Svg and doc() to root (and toDoc()/toRoot()) (#932)