逐步完成前后端服务器
This commit is contained in:
130
frontend/node_modules/zrender/lib/svg-legacy/helper/Definable.js
generated
vendored
Normal file
130
frontend/node_modules/zrender/lib/svg-legacy/helper/Definable.js
generated
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
import { createElement } from '../../svg/core.js';
|
||||
import * as zrUtil from '../../core/util.js';
|
||||
var MARK_UNUSED = '0';
|
||||
var MARK_USED = '1';
|
||||
var Definable = (function () {
|
||||
function Definable(zrId, svgRoot, tagNames, markLabel, domName) {
|
||||
this.nextId = 0;
|
||||
this._domName = '_dom';
|
||||
this._zrId = zrId;
|
||||
this._svgRoot = svgRoot;
|
||||
this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;
|
||||
this._markLabel = markLabel;
|
||||
if (domName) {
|
||||
this._domName = domName;
|
||||
}
|
||||
}
|
||||
Definable.prototype.getDefs = function (isForceCreating) {
|
||||
var svgRoot = this._svgRoot;
|
||||
var defs = this._svgRoot.getElementsByTagName('defs');
|
||||
if (defs.length === 0) {
|
||||
if (isForceCreating) {
|
||||
var defs_1 = svgRoot.insertBefore(createElement('defs'), svgRoot.firstChild);
|
||||
if (!defs_1.contains) {
|
||||
defs_1.contains = function (el) {
|
||||
var children = defs_1.children;
|
||||
if (!children) {
|
||||
return false;
|
||||
}
|
||||
for (var i = children.length - 1; i >= 0; --i) {
|
||||
if (children[i] === el) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
return defs_1;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return defs[0];
|
||||
}
|
||||
};
|
||||
Definable.prototype.doUpdate = function (target, onUpdate) {
|
||||
if (!target) {
|
||||
return;
|
||||
}
|
||||
var defs = this.getDefs(false);
|
||||
if (target[this._domName] && defs.contains(target[this._domName])) {
|
||||
if (typeof onUpdate === 'function') {
|
||||
onUpdate(target);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var dom = this.add(target);
|
||||
if (dom) {
|
||||
target[this._domName] = dom;
|
||||
}
|
||||
}
|
||||
};
|
||||
Definable.prototype.add = function (target) {
|
||||
return null;
|
||||
};
|
||||
Definable.prototype.addDom = function (dom) {
|
||||
var defs = this.getDefs(true);
|
||||
if (dom.parentNode !== defs) {
|
||||
defs.appendChild(dom);
|
||||
}
|
||||
};
|
||||
Definable.prototype.removeDom = function (target) {
|
||||
var defs = this.getDefs(false);
|
||||
if (defs && target[this._domName]) {
|
||||
defs.removeChild(target[this._domName]);
|
||||
target[this._domName] = null;
|
||||
}
|
||||
};
|
||||
Definable.prototype.getDoms = function () {
|
||||
var defs = this.getDefs(false);
|
||||
if (!defs) {
|
||||
return [];
|
||||
}
|
||||
var doms = [];
|
||||
zrUtil.each(this._tagNames, function (tagName) {
|
||||
var tags = defs.getElementsByTagName(tagName);
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
doms.push(tags[i]);
|
||||
}
|
||||
});
|
||||
return doms;
|
||||
};
|
||||
Definable.prototype.markAllUnused = function () {
|
||||
var doms = this.getDoms();
|
||||
var that = this;
|
||||
zrUtil.each(doms, function (dom) {
|
||||
dom[that._markLabel] = MARK_UNUSED;
|
||||
});
|
||||
};
|
||||
Definable.prototype.markDomUsed = function (dom) {
|
||||
dom && (dom[this._markLabel] = MARK_USED);
|
||||
};
|
||||
;
|
||||
Definable.prototype.markDomUnused = function (dom) {
|
||||
dom && (dom[this._markLabel] = MARK_UNUSED);
|
||||
};
|
||||
;
|
||||
Definable.prototype.isDomUnused = function (dom) {
|
||||
return dom && dom[this._markLabel] !== MARK_USED;
|
||||
};
|
||||
Definable.prototype.removeUnused = function () {
|
||||
var _this = this;
|
||||
var defs = this.getDefs(false);
|
||||
if (!defs) {
|
||||
return;
|
||||
}
|
||||
var doms = this.getDoms();
|
||||
zrUtil.each(doms, function (dom) {
|
||||
if (_this.isDomUnused(dom)) {
|
||||
defs.removeChild(dom);
|
||||
}
|
||||
});
|
||||
};
|
||||
Definable.prototype.getSvgElement = function (displayable) {
|
||||
return displayable.__svgEl;
|
||||
};
|
||||
return Definable;
|
||||
}());
|
||||
export default Definable;
|
Reference in New Issue
Block a user