| import { __extends } from "tslib"; | 
| import * as zrUtil from '../core/util.js'; | 
| import Element from '../Element.js'; | 
| import BoundingRect from '../core/BoundingRect.js'; | 
| var Group = (function (_super) { | 
|     __extends(Group, _super); | 
|     function Group(opts) { | 
|         var _this = _super.call(this) || this; | 
|         _this.isGroup = true; | 
|         _this._children = []; | 
|         _this.attr(opts); | 
|         return _this; | 
|     } | 
|     Group.prototype.childrenRef = function () { | 
|         return this._children; | 
|     }; | 
|     Group.prototype.children = function () { | 
|         return this._children.slice(); | 
|     }; | 
|     Group.prototype.childAt = function (idx) { | 
|         return this._children[idx]; | 
|     }; | 
|     Group.prototype.childOfName = function (name) { | 
|         var children = this._children; | 
|         for (var i = 0; i < children.length; i++) { | 
|             if (children[i].name === name) { | 
|                 return children[i]; | 
|             } | 
|         } | 
|     }; | 
|     Group.prototype.childCount = function () { | 
|         return this._children.length; | 
|     }; | 
|     Group.prototype.add = function (child) { | 
|         if (child) { | 
|             if (child !== this && child.parent !== this) { | 
|                 this._children.push(child); | 
|                 this._doAdd(child); | 
|             } | 
|             if (process.env.NODE_ENV !== 'production') { | 
|                 if (child.__hostTarget) { | 
|                     throw 'This elemenet has been used as an attachment'; | 
|                 } | 
|             } | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype.addBefore = function (child, nextSibling) { | 
|         if (child && child !== this && child.parent !== this | 
|             && nextSibling && nextSibling.parent === this) { | 
|             var children = this._children; | 
|             var idx = children.indexOf(nextSibling); | 
|             if (idx >= 0) { | 
|                 children.splice(idx, 0, child); | 
|                 this._doAdd(child); | 
|             } | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype.replace = function (oldChild, newChild) { | 
|         var idx = zrUtil.indexOf(this._children, oldChild); | 
|         if (idx >= 0) { | 
|             this.replaceAt(newChild, idx); | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype.replaceAt = function (child, index) { | 
|         var children = this._children; | 
|         var old = children[index]; | 
|         if (child && child !== this && child.parent !== this && child !== old) { | 
|             children[index] = child; | 
|             old.parent = null; | 
|             var zr = this.__zr; | 
|             if (zr) { | 
|                 old.removeSelfFromZr(zr); | 
|             } | 
|             this._doAdd(child); | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype._doAdd = function (child) { | 
|         if (child.parent) { | 
|             child.parent.remove(child); | 
|         } | 
|         child.parent = this; | 
|         var zr = this.__zr; | 
|         if (zr && zr !== child.__zr) { | 
|             child.addSelfToZr(zr); | 
|         } | 
|         zr && zr.refresh(); | 
|     }; | 
|     Group.prototype.remove = function (child) { | 
|         var zr = this.__zr; | 
|         var children = this._children; | 
|         var idx = zrUtil.indexOf(children, child); | 
|         if (idx < 0) { | 
|             return this; | 
|         } | 
|         children.splice(idx, 1); | 
|         child.parent = null; | 
|         if (zr) { | 
|             child.removeSelfFromZr(zr); | 
|         } | 
|         zr && zr.refresh(); | 
|         return this; | 
|     }; | 
|     Group.prototype.removeAll = function () { | 
|         var children = this._children; | 
|         var zr = this.__zr; | 
|         for (var i = 0; i < children.length; i++) { | 
|             var child = children[i]; | 
|             if (zr) { | 
|                 child.removeSelfFromZr(zr); | 
|             } | 
|             child.parent = null; | 
|         } | 
|         children.length = 0; | 
|         return this; | 
|     }; | 
|     Group.prototype.eachChild = function (cb, context) { | 
|         var children = this._children; | 
|         for (var i = 0; i < children.length; i++) { | 
|             var child = children[i]; | 
|             cb.call(context, child, i); | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype.traverse = function (cb, context) { | 
|         for (var i = 0; i < this._children.length; i++) { | 
|             var child = this._children[i]; | 
|             var stopped = cb.call(context, child); | 
|             if (child.isGroup && !stopped) { | 
|                 child.traverse(cb, context); | 
|             } | 
|         } | 
|         return this; | 
|     }; | 
|     Group.prototype.addSelfToZr = function (zr) { | 
|         _super.prototype.addSelfToZr.call(this, zr); | 
|         for (var i = 0; i < this._children.length; i++) { | 
|             var child = this._children[i]; | 
|             child.addSelfToZr(zr); | 
|         } | 
|     }; | 
|     Group.prototype.removeSelfFromZr = function (zr) { | 
|         _super.prototype.removeSelfFromZr.call(this, zr); | 
|         for (var i = 0; i < this._children.length; i++) { | 
|             var child = this._children[i]; | 
|             child.removeSelfFromZr(zr); | 
|         } | 
|     }; | 
|     Group.prototype.getBoundingRect = function (includeChildren) { | 
|         var tmpRect = new BoundingRect(0, 0, 0, 0); | 
|         var children = includeChildren || this._children; | 
|         var tmpMat = []; | 
|         var rect = null; | 
|         for (var i = 0; i < children.length; i++) { | 
|             var child = children[i]; | 
|             if (child.ignore || child.invisible) { | 
|                 continue; | 
|             } | 
|             var childRect = child.getBoundingRect(); | 
|             var transform = child.getLocalTransform(tmpMat); | 
|             if (transform) { | 
|                 BoundingRect.applyTransform(tmpRect, childRect, transform); | 
|                 rect = rect || tmpRect.clone(); | 
|                 rect.union(tmpRect); | 
|             } | 
|             else { | 
|                 rect = rect || childRect.clone(); | 
|                 rect.union(childRect); | 
|             } | 
|         } | 
|         return rect || tmpRect; | 
|     }; | 
|     return Group; | 
| }(Element)); | 
| Group.prototype.type = 'group'; | 
| export default Group; |