You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
5.7 KiB
179 lines
5.7 KiB
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;
|
|
|