summaryrefslogtreecommitdiffstats
path: root/src/container.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/container.js')
-rw-r--r--src/container.js98
1 files changed, 3 insertions, 95 deletions
diff --git a/src/container.js b/src/container.js
index e42001f..60f62c4 100644
--- a/src/container.js
+++ b/src/container.js
@@ -2,93 +2,13 @@ SVG.Container = function(element) {
this.constructor.call(this, element)
}
-// Inherit from SVG.Element
-SVG.Container.prototype = new SVG.Element
+// Inherit from SVG.Parent
+SVG.Container.prototype = new SVG.Parent
//
SVG.extend(SVG.Container, {
- // Returns all child elements
- children: function() {
- return this._children || (this._children = [])
- }
- // Add given element at a position
-, add: function(element, i) {
- if (!this.has(element)) {
- /* define insertion index if none given */
- i = i == null ? this.children().length : i
-
- /* remove references from previous parent */
- if (element.parent) {
- var index = element.parent.children().indexOf(element)
- element.parent.children().splice(index, 1)
- }
-
- /* add element references */
- this.children().splice(i, 0, element)
- this.node.insertBefore(element.node, this.node.childNodes[i] || null)
- element.parent = this
- }
-
- /* reposition defs */
- if (this._defs) {
- this.node.removeChild(this._defs.node)
- this.node.appendChild(this._defs.node)
- }
-
- return this
- }
- // Basically does the same as `add()` but returns the added element instead
-, put: function(element, i) {
- this.add(element, i)
- return element
- }
- // Checks if the given element is a child
-, has: function(element) {
- return this.children().indexOf(element) >= 0
- }
- // Get a element at the given index
-, get: function(i) {
- return this.children()[i]
- }
- // Iterates over all children and invokes a given block
-, each: function(block, deep) {
- var i, il
- , children = this.children()
-
- for (i = 0, il = children.length; i < il; i++) {
- if (children[i] instanceof SVG.Element)
- block.apply(children[i], [i, children])
-
- if (deep && (children[i] instanceof SVG.Container))
- children[i].each(block, deep)
- }
-
- return this
- }
- // Remove a child element at a position
-, removeElement: function(element) {
- var i = this.children().indexOf(element)
-
- this.children().splice(i, 1)
- this.node.removeChild(element.node)
- element.parent = null
-
- return this
- }
- // Get defs
-, defs: function() {
- return this.doc().defs()
- }
- // Get first child, skipping the defs node
-, first: function() {
- return this.children()[0] instanceof SVG.Defs ? this.children()[1] : this.children()[0]
- }
- // Get the last child
-, last: function() {
- return this.children()[this.children().length - 1]
- }
// Get the viewBox and calculate the zoom value
-, viewbox: function(v) {
+ viewbox: function(v) {
if (arguments.length == 0)
/* act as a getter if there are no arguments */
return new SVG.ViewBox(this)
@@ -100,17 +20,5 @@ SVG.extend(SVG.Container, {
return this.attr('viewBox', v)
}
- // Remove all elements in this container
-, clear: function() {
- /* remove children */
- for (var i = this.children().length - 1; i >= 0; i--)
- this.removeElement(this.children()[i])
-
- /* remove defs node */
- if (this._defs)
- this._defs.clear()
-
- return this
- }
}) \ No newline at end of file