]> source.dussan.org Git - svg.js.git/commitdiff
make ungroup working on groups and nested for one depths 827/head
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Thu, 1 Mar 2018 22:55:53 +0000 (23:55 +0100)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Thu, 1 Mar 2018 22:55:53 +0000 (23:55 +0100)
src/flatten.js

index 3ba6e22a516d15e76c5b727526f6bfc261fc8bb3..19eebd7a9be8e28b9a6f67e94c950cef85d20102 100644 (file)
@@ -1,6 +1,9 @@
 SVG.extend(SVG.Parent, {
   flatten: function (parent) {
-    if (this instanceof SVG.Defs) return this
+    // flattens is only possible for nested svgs and groups
+    if (!(this instanceof SVG.G || this instanceof SVG.Doc)) {
+      return this
+    }
 
     parent = parent || (this instanceof SVG.Doc && this.isRoot() ? this : this.parent(SVG.Parent))
 
@@ -13,6 +16,23 @@ SVG.extend(SVG.Parent, {
     // we need this so that SVG.Doc does not get removed
     this.node.firstElementChild || this.remove()
 
+    return this
+  },
+  ungroup: function (parent) {
+    // ungroup is only possible for nested svgs and groups
+    if (!(this instanceof SVG.G || (this instanceof SVG.Doc && !this.isRoot()))) {
+      return this
+    }
+
+    parent = parent || this.parent(SVG.Parent)
+
+    this.each(function () {
+      return this.toParent(parent)
+    })
+
+    // we need this so that SVG.Doc does not get removed
+    this.remove()
+
     return this
   }
 })