diff options
Diffstat (limited to 'src/svg.js')
-rw-r--r-- | src/svg.js | 105 |
1 files changed, 7 insertions, 98 deletions
@@ -1,102 +1,11 @@ -/* global createElement, capitalize */ -/* eslint-disable new-cap */ +import {makeInstance} from './helpers.js' +import * as Classes from './classes.js' +import * as tools from './tools.js' // The main wrapping element -var SVG = window.SVG = function (element) { - if (SVG.supported) { - element = createElement(element) - return element - } +export default function SVG (element) { + return makeInstance(element) } -// Svg must be supported if we reached this stage -SVG.supported = true - -// Default namespaces -SVG.ns = 'http://www.w3.org/2000/svg' -SVG.xmlns = 'http://www.w3.org/2000/xmlns/' -SVG.xlink = 'http://www.w3.org/1999/xlink' -SVG.svgjs = 'http://svgjs.com/svgjs' - -// Element id sequence -SVG.did = 1000 - -// Get next named element id -SVG.eid = function (name) { - return 'Svgjs' + capitalize(name) + (SVG.did++) -} - -// Method for element creation -SVG.create = function (name) { - // create element - return document.createElementNS(this.ns, name) -} - -// Method for extending objects -SVG.extend = function (modules, methods) { - var key, i - - modules = Array.isArray(modules) ? modules : [modules] - - for (i = modules.length - 1; i >= 0; i--) { - if (modules[i]) { - for (key in methods) { - modules[i].prototype[key] = methods[key] - } - } - } -} - -// Invent new element -SVG.invent = function (config) { - // Create element initializer - var initializer = typeof config.create === 'function' ? config.create - : function (node) { - config.inherit.call(this, node || SVG.create(config.create)) - } - - // Inherit prototype - if (config.inherit) { - initializer.prototype = new config.inherit() - initializer.prototype.constructor = initializer - } - - // Extend with methods - if (config.extend) { - SVG.extend(initializer, config.extend) - } - - // Attach construct method to parent - if (config.construct) { SVG.extend(config.parent || SVG.Container, config.construct) } - - return initializer -} - -// Adopt existing svg elements -SVG.adopt = function (node) { - // check for presence of node - if (!node) return null - - // make sure a node isn't already adopted - if (node.instance instanceof SVG.Element) return node.instance - - if (!(node instanceof window.SVGElement)) { - return new SVG.HtmlNode(node) - } - - // initialize variables - var element - - // adopt with element-specific settings - if (node.nodeName === 'svg') { - element = new SVG.Doc(node) - } else if (node.nodeName === 'linearGradient' || node.nodeName === 'radialGradient') { - element = new SVG.Gradient(node) - } else if (SVG[capitalize(node.nodeName)]) { - element = new SVG[capitalize(node.nodeName)](node) - } else { - element = new SVG.Parent(node) - } - - return element -} +Object.assign(SVG, Classes) +Object.assign(SVG, tools) |