Merge remote-tracking branch 'upstream/main'

This commit is contained in:
2026-08-26 09:31:34 +08:00
parent 9b8c4bfab6
commit 394eb0285d
34137 changed files with 3589424 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
import Definable from './Definable';
import Displayable from '../../graphic/Displayable';
import Path from '../../graphic/Path';
export declare function hasClipPath(displayable: Displayable): boolean;
export default class ClippathManager extends Definable {
private _refGroups;
private _keyDuplicateCount;
constructor(zrId: number, svgRoot: SVGElement);
markAllUnused(): void;
private _getClipPathGroup;
update(displayable: Displayable, prevDisplayable: Displayable): SVGElement;
updateDom(parentEl: SVGElement, clipPaths: Path[]): void;
markUsed(displayable: Displayable): void;
removeUnused(): void;
}
+129
View File
@@ -0,0 +1,129 @@
import { __extends } from "tslib";
import Definable from './Definable.js';
import * as zrUtil from '../../core/util.js';
import { isClipPathChanged } from '../../canvas/helper.js';
function generateClipPathsKey(clipPaths) {
var key = [];
if (clipPaths) {
for (var i = 0; i < clipPaths.length; i++) {
var clipPath = clipPaths[i];
key.push(clipPath.id);
}
}
return key.join(',');
}
export function hasClipPath(displayable) {
var clipPaths = displayable.__clipPaths;
return clipPaths && clipPaths.length > 0;
}
var ClippathManager = (function (_super) {
__extends(ClippathManager, _super);
function ClippathManager(zrId, svgRoot) {
var _this = _super.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__') || this;
_this._refGroups = {};
_this._keyDuplicateCount = {};
return _this;
}
ClippathManager.prototype.markAllUnused = function () {
_super.prototype.markAllUnused.call(this);
var refGroups = this._refGroups;
for (var key in refGroups) {
if (refGroups.hasOwnProperty(key)) {
this.markDomUnused(refGroups[key]);
}
}
this._keyDuplicateCount = {};
};
ClippathManager.prototype._getClipPathGroup = function (displayable, prevDisplayable) {
if (!hasClipPath(displayable)) {
return;
}
var clipPaths = displayable.__clipPaths;
var keyDuplicateCount = this._keyDuplicateCount;
var clipPathKey = generateClipPathsKey(clipPaths);
if (isClipPathChanged(clipPaths, prevDisplayable && prevDisplayable.__clipPaths)) {
keyDuplicateCount[clipPathKey] = keyDuplicateCount[clipPathKey] || 0;
keyDuplicateCount[clipPathKey] && (clipPathKey += '-' + keyDuplicateCount[clipPathKey]);
keyDuplicateCount[clipPathKey]++;
}
return this._refGroups[clipPathKey]
|| (this._refGroups[clipPathKey] = this.createElement('g'));
};
ClippathManager.prototype.update = function (displayable, prevDisplayable) {
var clipGroup = this._getClipPathGroup(displayable, prevDisplayable);
if (clipGroup) {
this.markDomUsed(clipGroup);
this.updateDom(clipGroup, displayable.__clipPaths);
}
return clipGroup;
};
;
ClippathManager.prototype.updateDom = function (parentEl, clipPaths) {
if (clipPaths && clipPaths.length > 0) {
var defs = this.getDefs(true);
var clipPath = clipPaths[0];
var clipPathEl = void 0;
var id = void 0;
if (clipPath._dom) {
id = clipPath._dom.getAttribute('id');
clipPathEl = clipPath._dom;
if (!defs.contains(clipPathEl)) {
defs.appendChild(clipPathEl);
}
}
else {
id = 'zr' + this._zrId + '-clip-' + this.nextId;
++this.nextId;
clipPathEl = this.createElement('clipPath');
clipPathEl.setAttribute('id', id);
defs.appendChild(clipPathEl);
clipPath._dom = clipPathEl;
}
var svgProxy = this.getSvgProxy(clipPath);
svgProxy.brush(clipPath);
var pathEl = this.getSvgElement(clipPath);
clipPathEl.innerHTML = '';
clipPathEl.appendChild(pathEl);
parentEl.setAttribute('clip-path', 'url(#' + id + ')');
if (clipPaths.length > 1) {
this.updateDom(clipPathEl, clipPaths.slice(1));
}
}
else {
if (parentEl) {
parentEl.setAttribute('clip-path', 'none');
}
}
};
;
ClippathManager.prototype.markUsed = function (displayable) {
var _this = this;
if (displayable.__clipPaths) {
zrUtil.each(displayable.__clipPaths, function (clipPath) {
if (clipPath._dom) {
_super.prototype.markDomUsed.call(_this, clipPath._dom);
}
});
}
};
;
ClippathManager.prototype.removeUnused = function () {
_super.prototype.removeUnused.call(this);
var newRefGroupsMap = {};
var refGroups = this._refGroups;
for (var key in refGroups) {
if (refGroups.hasOwnProperty(key)) {
var group = refGroups[key];
if (!this.isDomUnused(group)) {
newRefGroupsMap[key] = group;
}
else if (group.parentNode) {
group.parentNode.removeChild(group);
}
}
}
this._refGroups = newRefGroupsMap;
};
return ClippathManager;
}(Definable));
export default ClippathManager;
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"ClippathManager.js","sourceRoot":"","sources":["../../../src/svg/helper/ClippathManager.ts"],"names":[],"mappings":"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"}
+28
View File
@@ -0,0 +1,28 @@
import { createElement } from '../core';
import Path from '../../graphic/Path';
import ZRImage from '../../graphic/Image';
import TSpan from '../../graphic/TSpan';
import Displayable from '../../graphic/Displayable';
export default class Definable {
nextId: number;
protected _zrId: number;
protected _svgRoot: SVGElement;
protected _tagNames: string[];
protected _markLabel: string;
protected _domName: string;
constructor(zrId: number, svgRoot: SVGElement, tagNames: string | string[], markLabel: string, domName?: string);
createElement: typeof createElement;
getDefs(isForceCreating?: boolean): SVGDefsElement;
doUpdate<T>(target: T, onUpdate?: (target: T) => void): void;
add(target: any): SVGElement;
addDom(dom: SVGElement): void;
removeDom<T>(target: T): void;
getDoms(): SVGElement[];
markAllUnused(): void;
markDomUsed(dom: SVGElement): void;
markDomUnused(dom: SVGElement): void;
isDomUnused(dom: SVGElement): boolean;
removeUnused(): void;
getSvgProxy(displayable: Displayable): import("../graphic").SVGProxy<Path<import("../../graphic/Path").PathProps>> | import("../graphic").SVGProxy<ZRImage> | import("../graphic").SVGProxy<TSpan>;
getSvgElement(displayable: Displayable): SVGElement;
}
+149
View File
@@ -0,0 +1,149 @@
import { createElement } from '../core.js';
import * as zrUtil from '../../core/util.js';
import Path from '../../graphic/Path.js';
import ZRImage from '../../graphic/Image.js';
import TSpan from '../../graphic/TSpan.js';
import { path as svgPath, image as svgImage, text as svgText } from '../graphic.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.createElement = createElement;
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(this.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.getSvgProxy = function (displayable) {
if (displayable instanceof Path) {
return svgPath;
}
else if (displayable instanceof ZRImage) {
return svgImage;
}
else if (displayable instanceof TSpan) {
return svgText;
}
else {
return svgPath;
}
};
Definable.prototype.getSvgElement = function (displayable) {
return displayable.__svgEl;
};
return Definable;
}());
export default Definable;
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"Definable.js","sourceRoot":"","sources":["../../../src/svg/helper/Definable.ts"],"names":[],"mappings":"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"}
+11
View File
@@ -0,0 +1,11 @@
import Definable from './Definable';
import Displayable from '../../graphic/Displayable';
import { GradientObject } from '../../graphic/Gradient';
export default class GradientManager extends Definable {
constructor(zrId: number, svgRoot: SVGElement);
addWithoutUpdate(svgElement: SVGElement, displayable: Displayable): void;
add(gradient: GradientObject): SVGElement;
update(gradient: GradientObject | string): void;
updateDom(gradient: GradientObject, dom: SVGElement): void;
markUsed(displayable: Displayable): void;
}
+141
View File
@@ -0,0 +1,141 @@
import { __extends } from "tslib";
import Definable from './Definable.js';
import * as zrUtil from '../../core/util.js';
import * as colorTool from '../../tool/color.js';
function isLinearGradient(value) {
return value.type === 'linear';
}
function isRadialGradient(value) {
return value.type === 'radial';
}
function isGradient(value) {
return value && (value.type === 'linear'
|| value.type === 'radial');
}
var GradientManager = (function (_super) {
__extends(GradientManager, _super);
function GradientManager(zrId, svgRoot) {
return _super.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__') || this;
}
GradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {
if (displayable && displayable.style) {
var that_1 = this;
zrUtil.each(['fill', 'stroke'], function (fillOrStroke) {
var value = displayable.style[fillOrStroke];
if (isGradient(value)) {
var gradient = value;
var defs = that_1.getDefs(true);
var dom = void 0;
if (gradient.__dom) {
dom = gradient.__dom;
if (!defs.contains(gradient.__dom)) {
that_1.addDom(dom);
}
}
else {
dom = that_1.add(gradient);
}
that_1.markUsed(displayable);
var id = dom.getAttribute('id');
svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');
}
});
}
};
GradientManager.prototype.add = function (gradient) {
var dom;
if (isLinearGradient(gradient)) {
dom = this.createElement('linearGradient');
}
else if (isRadialGradient(gradient)) {
dom = this.createElement('radialGradient');
}
else {
zrUtil.logError('Illegal gradient type.');
return null;
}
gradient.id = gradient.id || this.nextId++;
dom.setAttribute('id', 'zr' + this._zrId
+ '-gradient-' + gradient.id);
this.updateDom(gradient, dom);
this.addDom(dom);
return dom;
};
GradientManager.prototype.update = function (gradient) {
if (!isGradient(gradient)) {
return;
}
var that = this;
this.doUpdate(gradient, function () {
var dom = gradient.__dom;
if (!dom) {
return;
}
var tagName = dom.tagName;
var type = gradient.type;
if (type === 'linear' && tagName === 'linearGradient'
|| type === 'radial' && tagName === 'radialGradient') {
that.updateDom(gradient, gradient.__dom);
}
else {
that.removeDom(gradient);
that.add(gradient);
}
});
};
GradientManager.prototype.updateDom = function (gradient, dom) {
if (isLinearGradient(gradient)) {
dom.setAttribute('x1', gradient.x + '');
dom.setAttribute('y1', gradient.y + '');
dom.setAttribute('x2', gradient.x2 + '');
dom.setAttribute('y2', gradient.y2 + '');
}
else if (isRadialGradient(gradient)) {
dom.setAttribute('cx', gradient.x + '');
dom.setAttribute('cy', gradient.y + '');
dom.setAttribute('r', gradient.r + '');
}
else {
zrUtil.logError('Illegal gradient type.');
return;
}
if (gradient.global) {
dom.setAttribute('gradientUnits', 'userSpaceOnUse');
}
else {
dom.setAttribute('gradientUnits', 'objectBoundingBox');
}
dom.innerHTML = '';
var colors = gradient.colorStops;
for (var i = 0, len = colors.length; i < len; ++i) {
var stop_1 = this.createElement('stop');
stop_1.setAttribute('offset', colors[i].offset * 100 + '%');
var color = colors[i].color;
if (color.indexOf('rgba') > -1) {
var opacity = colorTool.parse(color)[3];
var hex = colorTool.toHex(color);
stop_1.setAttribute('stop-color', '#' + hex);
stop_1.setAttribute('stop-opacity', opacity + '');
}
else {
stop_1.setAttribute('stop-color', colors[i].color);
}
dom.appendChild(stop_1);
}
gradient.__dom = dom;
};
GradientManager.prototype.markUsed = function (displayable) {
if (displayable.style) {
var gradient = displayable.style.fill;
if (gradient && gradient.__dom) {
_super.prototype.markDomUsed.call(this, gradient.__dom);
}
gradient = displayable.style.stroke;
if (gradient && gradient.__dom) {
_super.prototype.markDomUsed.call(this, gradient.__dom);
}
}
};
return GradientManager;
}(Definable));
export default GradientManager;
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"GradientManager.js","sourceRoot":"","sources":["../../../src/svg/helper/GradientManager.ts"],"names":[],"mappings":"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"}
+11
View File
@@ -0,0 +1,11 @@
import Definable from './Definable';
import Displayable from '../../graphic/Displayable';
import { PatternObject } from '../../graphic/Pattern';
export default class PatternManager extends Definable {
constructor(zrId: number, svgRoot: SVGElement);
addWithoutUpdate(svgElement: SVGElement, displayable: Displayable): void;
add(pattern: PatternObject): SVGElement;
update(pattern: PatternObject | string): void;
updateDom(pattern: PatternObject, patternDom: SVGElement): void;
markUsed(displayable: Displayable): void;
}
+140
View File
@@ -0,0 +1,140 @@
import { __extends } from "tslib";
import Definable from './Definable.js';
import * as zrUtil from '../../core/util.js';
import { createOrUpdateImage } from '../../graphic/helper/image.js';
import WeakMap from '../../core/WeakMap.js';
function isPattern(value) {
return value && (!!value.image || !!value.svgElement);
}
var patternDomMap = new WeakMap();
var PatternManager = (function (_super) {
__extends(PatternManager, _super);
function PatternManager(zrId, svgRoot) {
return _super.call(this, zrId, svgRoot, ['pattern'], '__pattern_in_use__') || this;
}
PatternManager.prototype.addWithoutUpdate = function (svgElement, displayable) {
if (displayable && displayable.style) {
var that_1 = this;
zrUtil.each(['fill', 'stroke'], function (fillOrStroke) {
var pattern = displayable.style[fillOrStroke];
if (isPattern(pattern)) {
var defs = that_1.getDefs(true);
var dom = patternDomMap.get(pattern);
if (dom) {
if (!defs.contains(dom)) {
that_1.addDom(dom);
}
}
else {
dom = that_1.add(pattern);
}
that_1.markUsed(displayable);
var id = dom.getAttribute('id');
svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');
}
});
}
};
PatternManager.prototype.add = function (pattern) {
if (!isPattern(pattern)) {
return;
}
var dom = this.createElement('pattern');
pattern.id = pattern.id == null ? this.nextId++ : pattern.id;
dom.setAttribute('id', 'zr' + this._zrId
+ '-pattern-' + pattern.id);
dom.setAttribute('x', '0');
dom.setAttribute('y', '0');
dom.setAttribute('patternUnits', 'userSpaceOnUse');
this.updateDom(pattern, dom);
this.addDom(dom);
return dom;
};
PatternManager.prototype.update = function (pattern) {
if (!isPattern(pattern)) {
return;
}
var that = this;
this.doUpdate(pattern, function () {
var dom = patternDomMap.get(pattern);
that.updateDom(pattern, dom);
});
};
PatternManager.prototype.updateDom = function (pattern, patternDom) {
var svgElement = pattern.svgElement;
if (svgElement instanceof SVGElement) {
if (svgElement.parentNode !== patternDom) {
patternDom.innerHTML = '';
patternDom.appendChild(svgElement);
patternDom.setAttribute('width', pattern.svgWidth + '');
patternDom.setAttribute('height', pattern.svgHeight + '');
}
}
else {
var img = void 0;
var prevImage = patternDom.getElementsByTagName('image');
if (prevImage.length) {
if (pattern.image) {
img = prevImage[0];
}
else {
patternDom.removeChild(prevImage[0]);
return;
}
}
else if (pattern.image) {
img = this.createElement('image');
}
if (img) {
var imageSrc = void 0;
var patternImage = pattern.image;
if (typeof patternImage === 'string') {
imageSrc = patternImage;
}
else if (patternImage instanceof HTMLImageElement) {
imageSrc = patternImage.src;
}
else if (patternImage instanceof HTMLCanvasElement) {
imageSrc = patternImage.toDataURL();
}
if (imageSrc) {
img.setAttribute('href', imageSrc);
img.setAttribute('x', '0');
img.setAttribute('y', '0');
var hostEl = {
dirty: function () { }
};
var createdImage = createOrUpdateImage(imageSrc, img, hostEl, function (img) {
patternDom.setAttribute('width', img.width + '');
patternDom.setAttribute('height', img.height + '');
});
if (createdImage && createdImage.width && createdImage.height) {
patternDom.setAttribute('width', createdImage.width + '');
patternDom.setAttribute('height', createdImage.height + '');
}
patternDom.appendChild(img);
}
}
}
var x = pattern.x || 0;
var y = pattern.y || 0;
var rotation = (pattern.rotation || 0) / Math.PI * 180;
var scaleX = pattern.scaleX || 1;
var scaleY = pattern.scaleY || 1;
var transform = "translate(" + x + ", " + y + ") rotate(" + rotation + ") scale(" + scaleX + ", " + scaleY + ")";
patternDom.setAttribute('patternTransform', transform);
patternDomMap.set(pattern, patternDom);
};
PatternManager.prototype.markUsed = function (displayable) {
if (displayable.style) {
if (isPattern(displayable.style.fill)) {
_super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.fill));
}
if (isPattern(displayable.style.stroke)) {
_super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.stroke));
}
}
};
return PatternManager;
}(Definable));
export default PatternManager;
+12
View File
@@ -0,0 +1,12 @@
import Definable from './Definable';
import Displayable from '../../graphic/Displayable';
export default class ShadowManager extends Definable {
private _shadowDomMap;
private _shadowDomPool;
constructor(zrId: number, svgRoot: SVGElement);
private _getFromPool;
update(svgElement: SVGElement, displayable: Displayable): void;
remove(svgElement: SVGElement, displayable: Displayable): void;
updateDom(svgElement: SVGElement, displayable: Displayable, shadowDom: SVGElement): void;
removeUnused(): void;
}
+105
View File
@@ -0,0 +1,105 @@
import { __extends } from "tslib";
import Definable from './Definable.js';
import { normalizeColor } from '../core.js';
var ShadowManager = (function (_super) {
__extends(ShadowManager, _super);
function ShadowManager(zrId, svgRoot) {
var _this = _super.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom') || this;
_this._shadowDomMap = {};
_this._shadowDomPool = [];
return _this;
}
ShadowManager.prototype._getFromPool = function () {
var shadowDom = this._shadowDomPool.pop();
if (!shadowDom) {
shadowDom = this.createElement('filter');
shadowDom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + this.nextId++);
var domChild = this.createElement('feDropShadow');
shadowDom.appendChild(domChild);
this.addDom(shadowDom);
}
return shadowDom;
};
ShadowManager.prototype.update = function (svgElement, displayable) {
var style = displayable.style;
if (hasShadow(style)) {
var shadowKey = getShadowKey(displayable);
var shadowDom = displayable._shadowDom = this._shadowDomMap[shadowKey];
if (!shadowDom) {
shadowDom = this._getFromPool();
this._shadowDomMap[shadowKey] = shadowDom;
}
this.updateDom(svgElement, displayable, shadowDom);
}
else {
this.remove(svgElement, displayable);
}
};
ShadowManager.prototype.remove = function (svgElement, displayable) {
if (displayable._shadowDom != null) {
displayable._shadowDom = null;
svgElement.style.filter = '';
}
};
ShadowManager.prototype.updateDom = function (svgElement, displayable, shadowDom) {
var domChild = shadowDom.children[0];
var style = displayable.style;
var globalScale = displayable.getGlobalScale();
var scaleX = globalScale[0];
var scaleY = globalScale[1];
if (!scaleX || !scaleY) {
return;
}
var offsetX = style.shadowOffsetX || 0;
var offsetY = style.shadowOffsetY || 0;
var blur = style.shadowBlur;
var normalizedColor = normalizeColor(style.shadowColor);
domChild.setAttribute('dx', offsetX / scaleX + '');
domChild.setAttribute('dy', offsetY / scaleY + '');
domChild.setAttribute('flood-color', normalizedColor.color);
domChild.setAttribute('flood-opacity', normalizedColor.opacity + '');
var stdDx = blur / 2 / scaleX;
var stdDy = blur / 2 / scaleY;
var stdDeviation = stdDx + ' ' + stdDy;
domChild.setAttribute('stdDeviation', stdDeviation);
shadowDom.setAttribute('x', '-100%');
shadowDom.setAttribute('y', '-100%');
shadowDom.setAttribute('width', '300%');
shadowDom.setAttribute('height', '300%');
displayable._shadowDom = shadowDom;
var id = shadowDom.getAttribute('id');
svgElement.style.filter = 'url(#' + id + ')';
};
ShadowManager.prototype.removeUnused = function () {
var defs = this.getDefs(false);
if (!defs) {
return;
}
var shadowDomsPool = this._shadowDomPool;
var shadowDomMap = this._shadowDomMap;
for (var key in shadowDomMap) {
if (shadowDomMap.hasOwnProperty(key)) {
shadowDomsPool.push(shadowDomMap[key]);
}
}
this._shadowDomMap = {};
};
return ShadowManager;
}(Definable));
export default ShadowManager;
function hasShadow(style) {
return style
&& (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);
}
function getShadowKey(displayable) {
var style = displayable.style;
var globalScale = displayable.getGlobalScale();
return [
style.shadowColor,
(style.shadowBlur || 0).toFixed(2),
(style.shadowOffsetX || 0).toFixed(2),
(style.shadowOffsetY || 0).toFixed(2),
globalScale[0],
globalScale[1]
].join(',');
}
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"ShadowManager.js","sourceRoot":"","sources":["../../../src/svg/helper/ShadowManager.ts"],"names":[],"mappings":"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"}