aiflowy-ui-admin/node_modules/.vite/deps/echarts_features.js

2705 lines
85 KiB
JavaScript

import {
installScatterJitter
} from "./chunk-4LUJ7XNI.js";
import {
AXIS_BREAK_COLLAPSE_ACTION_TYPE,
AXIS_BREAK_EXPAND_ACTION_TYPE,
AXIS_BREAK_TOGGLE_ACTION_TYPE,
registerAction,
registerAxisBreakHelperImpl,
registerLegacyGridContainLabelImpl
} from "./chunk-JZXIWOSK.js";
import {
installLabelLayout
} from "./chunk-GODUIYLF.js";
import "./chunk-IVW5JRBK.js";
import {
DataDiffer_default,
Line_default,
Ordinal_default,
Polygon_default,
Polyline_default,
SERIES_UNIVERSAL_TRANSITION_PROP,
Sector_default,
WH,
XY,
clonePath,
error,
getAnimationConfig,
getOldStyle,
getScaleBreakHelper,
initProps,
labelIntersect,
labelLayoutApplyTranslation,
makeInner,
makeLabelFormatter,
normalizeToArray,
registerScaleBreakHelperImpl,
round,
warn
} from "./chunk-7TUCBJTM.js";
import {
BoundingRect_default,
Displayable_default,
Group_default,
PathProxy_default,
Path_default,
Point_default,
Rect_default,
Transformable_default,
applyTransform,
assert,
clone,
create,
createHashMap,
cubicSubdivide,
defaults,
each,
extend,
filter,
find,
fromPoints,
isArray,
isString,
lerp,
map,
mul,
rotate,
subPixelOptimizeLine,
trim
} from "./chunk-ZAVXMU2G.js";
import "./chunk-V4OQ3NZ2.js";
// ../node_modules/.pnpm/zrender@6.0.0/node_modules/zrender/lib/tool/convertPath.js
var CMD = PathProxy_default.CMD;
function aroundEqual(a, b) {
return Math.abs(a - b) < 1e-5;
}
function pathToBezierCurves(path) {
var data = path.data;
var len = path.len();
var bezierArrayGroups = [];
var currentSubpath;
var xi = 0;
var yi = 0;
var x0 = 0;
var y0 = 0;
function createNewSubpath(x, y) {
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath);
}
currentSubpath = [x, y];
}
function addLine(x02, y02, x12, y12) {
if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) {
currentSubpath.push(x02, y02, x12, y12, x12, y12);
}
}
function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) {
var delta = Math.abs(endAngle2 - startAngle2);
var len2 = Math.tan(delta / 4) * 4 / 3;
var dir = endAngle2 < startAngle2 ? -1 : 1;
var c1 = Math.cos(startAngle2);
var s1 = Math.sin(startAngle2);
var c2 = Math.cos(endAngle2);
var s2 = Math.sin(endAngle2);
var x12 = c1 * rx2 + cx2;
var y12 = s1 * ry2 + cy2;
var x4 = c2 * rx2 + cx2;
var y4 = s2 * ry2 + cy2;
var hx = rx2 * len2 * dir;
var hy = ry2 * len2 * dir;
currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);
}
var x1;
var y1;
var x2;
var y2;
for (var i = 0; i < len; ) {
var cmd = data[i++];
var isFirst = i === 1;
if (isFirst) {
xi = data[i];
yi = data[i + 1];
x0 = xi;
y0 = yi;
if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {
currentSubpath = [x0, y0];
}
}
switch (cmd) {
case CMD.M:
xi = x0 = data[i++];
yi = y0 = data[i++];
createNewSubpath(x0, y0);
break;
case CMD.L:
x1 = data[i++];
y1 = data[i++];
addLine(xi, yi, x1, y1);
xi = x1;
yi = y1;
break;
case CMD.C:
currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);
break;
case CMD.Q:
x1 = data[i++];
y1 = data[i++];
x2 = data[i++];
y2 = data[i++];
currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);
xi = x2;
yi = y2;
break;
case CMD.A:
var cx = data[i++];
var cy = data[i++];
var rx = data[i++];
var ry = data[i++];
var startAngle = data[i++];
var endAngle = data[i++] + startAngle;
i += 1;
var anticlockwise = !data[i++];
x1 = Math.cos(startAngle) * rx + cx;
y1 = Math.sin(startAngle) * ry + cy;
if (isFirst) {
x0 = x1;
y0 = y1;
createNewSubpath(x0, y0);
} else {
addLine(xi, yi, x1, y1);
}
xi = Math.cos(endAngle) * rx + cx;
yi = Math.sin(endAngle) * ry + cy;
var step = (anticlockwise ? -1 : 1) * Math.PI / 2;
for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {
var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);
addArc(angle, nextAngle, cx, cy, rx, ry);
}
break;
case CMD.R:
x0 = xi = data[i++];
y0 = yi = data[i++];
x1 = x0 + data[i++];
y1 = y0 + data[i++];
createNewSubpath(x1, y0);
addLine(x1, y0, x1, y1);
addLine(x1, y1, x0, y1);
addLine(x0, y1, x0, y0);
addLine(x0, y0, x1, y0);
break;
case CMD.Z:
currentSubpath && addLine(xi, yi, x0, y0);
xi = x0;
yi = y0;
break;
}
}
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath);
}
return bezierArrayGroups;
}
function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) {
if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {
out.push(x3, y3);
return;
}
var PIXEL_DISTANCE = 2 / scale;
var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;
var dx = x3 - x0;
var dy = y3 - y0;
var d = Math.sqrt(dx * dx + dy * dy);
dx /= d;
dy /= d;
var dx1 = x1 - x0;
var dy1 = y1 - y0;
var dx2 = x2 - x3;
var dy2 = y2 - y3;
var cp1LenSqr = dx1 * dx1 + dy1 * dy1;
var cp2LenSqr = dx2 * dx2 + dy2 * dy2;
if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {
out.push(x3, y3);
return;
}
var projLen1 = dx * dx1 + dy * dy1;
var projLen2 = -dx * dx2 - dy * dy2;
var d1Sqr = cp1LenSqr - projLen1 * projLen1;
var d2Sqr = cp2LenSqr - projLen2 * projLen2;
if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {
out.push(x3, y3);
return;
}
var tmpSegX = [];
var tmpSegY = [];
cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);
cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);
adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale);
adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale);
}
function pathToPolygons(path, scale) {
var bezierArrayGroups = pathToBezierCurves(path);
var polygons = [];
scale = scale || 1;
for (var i = 0; i < bezierArrayGroups.length; i++) {
var beziers = bezierArrayGroups[i];
var polygon = [];
var x0 = beziers[0];
var y0 = beziers[1];
polygon.push(x0, y0);
for (var k = 2; k < beziers.length; ) {
var x1 = beziers[k++];
var y1 = beziers[k++];
var x2 = beziers[k++];
var y2 = beziers[k++];
var x3 = beziers[k++];
var y3 = beziers[k++];
adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale);
x0 = x3;
y0 = y3;
}
polygons.push(polygon);
}
return polygons;
}
// ../node_modules/.pnpm/zrender@6.0.0/node_modules/zrender/lib/tool/dividePath.js
function getDividingGrids(dimSize, rowDim, count) {
var rowSize = dimSize[rowDim];
var columnSize = dimSize[1 - rowDim];
var ratio = Math.abs(rowSize / columnSize);
var rowCount = Math.ceil(Math.sqrt(ratio * count));
var columnCount = Math.floor(count / rowCount);
if (columnCount === 0) {
columnCount = 1;
rowCount = count;
}
var grids = [];
for (var i = 0; i < rowCount; i++) {
grids.push(columnCount);
}
var currentCount = rowCount * columnCount;
var remained = count - currentCount;
if (remained > 0) {
for (var i = 0; i < remained; i++) {
grids[i % rowCount] += 1;
}
}
return grids;
}
function divideSector(sectorShape, count, outShapes) {
var r0 = sectorShape.r0;
var r = sectorShape.r;
var startAngle = sectorShape.startAngle;
var endAngle = sectorShape.endAngle;
var angle = Math.abs(endAngle - startAngle);
var arcLen = angle * r;
var deltaR = r - r0;
var isAngleRow = arcLen > Math.abs(deltaR);
var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count);
var rowSize = (isAngleRow ? angle : deltaR) / grids.length;
for (var row = 0; row < grids.length; row++) {
var columnSize = (isAngleRow ? deltaR : angle) / grids[row];
for (var column = 0; column < grids[row]; column++) {
var newShape = {};
if (isAngleRow) {
newShape.startAngle = startAngle + rowSize * row;
newShape.endAngle = startAngle + rowSize * (row + 1);
newShape.r0 = r0 + columnSize * column;
newShape.r = r0 + columnSize * (column + 1);
} else {
newShape.startAngle = startAngle + columnSize * column;
newShape.endAngle = startAngle + columnSize * (column + 1);
newShape.r0 = r0 + rowSize * row;
newShape.r = r0 + rowSize * (row + 1);
}
newShape.clockwise = sectorShape.clockwise;
newShape.cx = sectorShape.cx;
newShape.cy = sectorShape.cy;
outShapes.push(newShape);
}
}
}
function divideRect(rectShape, count, outShapes) {
var width = rectShape.width;
var height = rectShape.height;
var isHorizontalRow = width > height;
var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count);
var rowSizeDim = isHorizontalRow ? "width" : "height";
var columnSizeDim = isHorizontalRow ? "height" : "width";
var rowDim = isHorizontalRow ? "x" : "y";
var columnDim = isHorizontalRow ? "y" : "x";
var rowSize = rectShape[rowSizeDim] / grids.length;
for (var row = 0; row < grids.length; row++) {
var columnSize = rectShape[columnSizeDim] / grids[row];
for (var column = 0; column < grids[row]; column++) {
var newShape = {};
newShape[rowDim] = row * rowSize;
newShape[columnDim] = column * columnSize;
newShape[rowSizeDim] = rowSize;
newShape[columnSizeDim] = columnSize;
newShape.x += rectShape.x;
newShape.y += rectShape.y;
outShapes.push(newShape);
}
}
}
function crossProduct2d(x1, y1, x2, y2) {
return x1 * y2 - x2 * y1;
}
function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
var mx = a2x - a1x;
var my = a2y - a1y;
var nx = b2x - b1x;
var ny = b2y - b1y;
var nmCrossProduct = crossProduct2d(nx, ny, mx, my);
if (Math.abs(nmCrossProduct) < 1e-6) {
return null;
}
var b1a1x = a1x - b1x;
var b1a1y = a1y - b1y;
var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;
if (p < 0 || p > 1) {
return null;
}
return new Point_default(p * mx + a1x, p * my + a1y);
}
function projPtOnLine(pt, lineA, lineB) {
var dir = new Point_default();
Point_default.sub(dir, lineB, lineA);
dir.normalize();
var dir2 = new Point_default();
Point_default.sub(dir2, pt, lineA);
var len = dir2.dot(dir);
return len;
}
function addToPoly(poly, pt) {
var last = poly[poly.length - 1];
if (last && last[0] === pt[0] && last[1] === pt[1]) {
return;
}
poly.push(pt);
}
function splitPolygonByLine(points, lineA, lineB) {
var len = points.length;
var intersections = [];
for (var i = 0; i < len; i++) {
var p0 = points[i];
var p1 = points[(i + 1) % len];
var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);
if (intersectionPt) {
intersections.push({
projPt: projPtOnLine(intersectionPt, lineA, lineB),
pt: intersectionPt,
idx: i
});
}
}
if (intersections.length < 2) {
return [{ points }, { points }];
}
intersections.sort(function(a, b) {
return a.projPt - b.projPt;
});
var splitPt0 = intersections[0];
var splitPt1 = intersections[intersections.length - 1];
if (splitPt1.idx < splitPt0.idx) {
var tmp = splitPt0;
splitPt0 = splitPt1;
splitPt1 = tmp;
}
var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];
var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];
var newPolyA = [splitPt0Arr];
var newPolyB = [splitPt1Arr];
for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {
addToPoly(newPolyA, points[i].slice());
}
addToPoly(newPolyA, splitPt1Arr);
addToPoly(newPolyA, splitPt0Arr);
for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) {
addToPoly(newPolyB, points[i % len].slice());
}
addToPoly(newPolyB, splitPt0Arr);
addToPoly(newPolyB, splitPt1Arr);
return [{
points: newPolyA
}, {
points: newPolyB
}];
}
function binaryDividePolygon(polygonShape) {
var points = polygonShape.points;
var min = [];
var max = [];
fromPoints(points, min, max);
var boundingRect = new BoundingRect_default(min[0], min[1], max[0] - min[0], max[1] - min[1]);
var width = boundingRect.width;
var height = boundingRect.height;
var x = boundingRect.x;
var y = boundingRect.y;
var pt0 = new Point_default();
var pt1 = new Point_default();
if (width > height) {
pt0.x = pt1.x = x + width / 2;
pt0.y = y;
pt1.y = y + height;
} else {
pt0.y = pt1.y = y + height / 2;
pt0.x = x;
pt1.x = x + width;
}
return splitPolygonByLine(points, pt0, pt1);
}
function binaryDivideRecursive(divider, shape, count, out) {
if (count === 1) {
out.push(shape);
} else {
var mid = Math.floor(count / 2);
var sub = divider(shape);
binaryDivideRecursive(divider, sub[0], mid, out);
binaryDivideRecursive(divider, sub[1], count - mid, out);
}
return out;
}
function clone2(path, count) {
var paths = [];
for (var i = 0; i < count; i++) {
paths.push(clonePath(path));
}
return paths;
}
function copyPathProps(source, target) {
target.setStyle(source.style);
target.z = source.z;
target.z2 = source.z2;
target.zlevel = source.zlevel;
}
function polygonConvert(points) {
var out = [];
for (var i = 0; i < points.length; ) {
out.push([points[i++], points[i++]]);
}
return out;
}
function split(path, count) {
var outShapes = [];
var shape = path.shape;
var OutShapeCtor;
switch (path.type) {
case "rect":
divideRect(shape, count, outShapes);
OutShapeCtor = Rect_default;
break;
case "sector":
divideSector(shape, count, outShapes);
OutShapeCtor = Sector_default;
break;
case "circle":
divideSector({
r0: 0,
r: shape.r,
startAngle: 0,
endAngle: Math.PI * 2,
cx: shape.cx,
cy: shape.cy
}, count, outShapes);
OutShapeCtor = Sector_default;
break;
default:
var m = path.getComputedTransform();
var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1;
var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function(poly) {
return polygonConvert(poly);
});
var polygonCount = polygons.length;
if (polygonCount === 0) {
binaryDivideRecursive(binaryDividePolygon, {
points: polygons[0]
}, count, outShapes);
} else if (polygonCount === count) {
for (var i = 0; i < polygonCount; i++) {
outShapes.push({
points: polygons[i]
});
}
} else {
var totalArea_1 = 0;
var items = map(polygons, function(poly) {
var min = [];
var max = [];
fromPoints(poly, min, max);
var area = (max[1] - min[1]) * (max[0] - min[0]);
totalArea_1 += area;
return { poly, area };
});
items.sort(function(a, b) {
return b.area - a.area;
});
var left = count;
for (var i = 0; i < polygonCount; i++) {
var item = items[i];
if (left <= 0) {
break;
}
var selfCount = i === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count);
if (selfCount < 0) {
continue;
}
binaryDivideRecursive(binaryDividePolygon, {
points: item.poly
}, selfCount, outShapes);
left -= selfCount;
}
;
}
OutShapeCtor = Polygon_default;
break;
}
if (!OutShapeCtor) {
return clone2(path, count);
}
var out = [];
for (var i = 0; i < outShapes.length; i++) {
var subPath = new OutShapeCtor();
subPath.setShape(outShapes[i]);
copyPathProps(path, subPath);
out.push(subPath);
}
return out;
}
// ../node_modules/.pnpm/zrender@6.0.0/node_modules/zrender/lib/tool/morphPath.js
function alignSubpath(subpath1, subpath2) {
var len1 = subpath1.length;
var len2 = subpath2.length;
if (len1 === len2) {
return [subpath1, subpath2];
}
var tmpSegX = [];
var tmpSegY = [];
var shorterPath = len1 < len2 ? subpath1 : subpath2;
var shorterLen = Math.min(len1, len2);
var diff = Math.abs(len2 - len1) / 6;
var shorterBezierCount = (shorterLen - 2) / 6;
var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;
var newSubpath = [shorterPath[0], shorterPath[1]];
var remained = diff;
for (var i = 2; i < shorterLen; ) {
var x0 = shorterPath[i - 2];
var y0 = shorterPath[i - 1];
var x1 = shorterPath[i++];
var y1 = shorterPath[i++];
var x2 = shorterPath[i++];
var y2 = shorterPath[i++];
var x3 = shorterPath[i++];
var y3 = shorterPath[i++];
if (remained <= 0) {
newSubpath.push(x1, y1, x2, y2, x3, y3);
continue;
}
var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;
for (var k = 1; k <= actualSubDivCount; k++) {
var p = k / actualSubDivCount;
cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);
cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);
x0 = tmpSegX[3];
y0 = tmpSegY[3];
newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);
x1 = tmpSegX[5];
y1 = tmpSegY[5];
x2 = tmpSegX[6];
y2 = tmpSegY[6];
}
remained -= actualSubDivCount - 1;
}
return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];
}
function createSubpath(lastSubpathSubpath, otherSubpath) {
var len = lastSubpathSubpath.length;
var lastX = lastSubpathSubpath[len - 2];
var lastY = lastSubpathSubpath[len - 1];
var newSubpath = [];
for (var i = 0; i < otherSubpath.length; ) {
newSubpath[i++] = lastX;
newSubpath[i++] = lastY;
}
return newSubpath;
}
function alignBezierCurves(array1, array2) {
var _a;
var lastSubpath1;
var lastSubpath2;
var newArray1 = [];
var newArray2 = [];
for (var i = 0; i < Math.max(array1.length, array2.length); i++) {
var subpath1 = array1[i];
var subpath2 = array2[i];
var newSubpath1 = void 0;
var newSubpath2 = void 0;
if (!subpath1) {
newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);
newSubpath2 = subpath2;
} else if (!subpath2) {
newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);
newSubpath1 = subpath1;
} else {
_a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];
lastSubpath1 = newSubpath1;
lastSubpath2 = newSubpath2;
}
newArray1.push(newSubpath1);
newArray2.push(newSubpath2);
}
return [newArray1, newArray2];
}
function centroid(array) {
var signedArea = 0;
var cx = 0;
var cy = 0;
var len = array.length;
for (var i = 0, j = len - 2; i < len; j = i, i += 2) {
var x0 = array[j];
var y0 = array[j + 1];
var x1 = array[i];
var y1 = array[i + 1];
var a = x0 * y1 - x1 * y0;
signedArea += a;
cx += (x0 + x1) * a;
cy += (y0 + y1) * a;
}
if (signedArea === 0) {
return [array[0] || 0, array[1] || 0];
}
return [cx / signedArea / 3, cy / signedArea / 3, signedArea];
}
function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {
var bezierCount = (fromSubBeziers.length - 2) / 6;
var bestScore = Infinity;
var bestOffset = 0;
var len = fromSubBeziers.length;
var len2 = len - 2;
for (var offset = 0; offset < bezierCount; offset++) {
var cursorOffset = offset * 6;
var score = 0;
for (var k = 0; k < len; k += 2) {
var idx = k === 0 ? cursorOffset : (cursorOffset + k - 2) % len2 + 2;
var x0 = fromSubBeziers[idx] - fromCp[0];
var y0 = fromSubBeziers[idx + 1] - fromCp[1];
var x1 = toSubBeziers[k] - toCp[0];
var y1 = toSubBeziers[k + 1] - toCp[1];
var dx = x1 - x0;
var dy = y1 - y0;
score += dx * dx + dy * dy;
}
if (score < bestScore) {
bestScore = score;
bestOffset = offset;
}
}
return bestOffset;
}
function reverse(array) {
var newArr = [];
var len = array.length;
for (var i = 0; i < len; i += 2) {
newArr[i] = array[len - i - 2];
newArr[i + 1] = array[len - i - 1];
}
return newArr;
}
function findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {
var result = [];
var fromNeedsReverse;
for (var i = 0; i < fromArr.length; i++) {
var fromSubpathBezier = fromArr[i];
var toSubpathBezier = toArr[i];
var fromCp = centroid(fromSubpathBezier);
var toCp = centroid(toSubpathBezier);
if (fromNeedsReverse == null) {
fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;
}
var newFromSubpathBezier = [];
var newToSubpathBezier = [];
var bestAngle = 0;
var bestScore = Infinity;
var tmpArr = [];
var len = fromSubpathBezier.length;
if (fromNeedsReverse) {
fromSubpathBezier = reverse(fromSubpathBezier);
}
var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;
var len2 = len - 2;
for (var k = 0; k < len2; k += 2) {
var idx = (offset + k) % len2 + 2;
newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];
newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];
}
newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];
newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];
if (searchAngleIteration > 0) {
var step = searchAngleRange / searchAngleIteration;
for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {
var sa = Math.sin(angle);
var ca = Math.cos(angle);
var score = 0;
for (var k = 0; k < fromSubpathBezier.length; k += 2) {
var x0 = newFromSubpathBezier[k];
var y0 = newFromSubpathBezier[k + 1];
var x1 = toSubpathBezier[k] - toCp[0];
var y1 = toSubpathBezier[k + 1] - toCp[1];
var newX1 = x1 * ca - y1 * sa;
var newY1 = x1 * sa + y1 * ca;
tmpArr[k] = newX1;
tmpArr[k + 1] = newY1;
var dx = newX1 - x0;
var dy = newY1 - y0;
score += dx * dx + dy * dy;
}
if (score < bestScore) {
bestScore = score;
bestAngle = angle;
for (var m = 0; m < tmpArr.length; m++) {
newToSubpathBezier[m] = tmpArr[m];
}
}
}
} else {
for (var i_1 = 0; i_1 < len; i_1 += 2) {
newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];
newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];
}
}
result.push({
from: newFromSubpathBezier,
to: newToSubpathBezier,
fromCp,
toCp,
rotation: -bestAngle
});
}
return result;
}
function isCombineMorphing(path) {
return path.__isCombineMorphing;
}
var SAVED_METHOD_PREFIX = "__mOriginal_";
function saveAndModifyMethod(obj, methodName, modifiers) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName;
var originalMethod = obj[savedMethodName] || obj[methodName];
if (!obj[savedMethodName]) {
obj[savedMethodName] = obj[methodName];
}
var replace = modifiers.replace;
var after = modifiers.after;
var before = modifiers.before;
obj[methodName] = function() {
var args = arguments;
var res;
before && before.apply(this, args);
if (replace) {
res = replace.apply(this, args);
} else {
res = originalMethod.apply(this, args);
}
after && after.apply(this, args);
return res;
};
}
function restoreMethod(obj, methodName) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName;
if (obj[savedMethodName]) {
obj[methodName] = obj[savedMethodName];
obj[savedMethodName] = null;
}
}
function applyTransformOnBeziers(bezierCurves, mm) {
for (var i = 0; i < bezierCurves.length; i++) {
var subBeziers = bezierCurves[i];
for (var k = 0; k < subBeziers.length; ) {
var x = subBeziers[k];
var y = subBeziers[k + 1];
subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];
subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];
}
}
}
function prepareMorphPath(fromPath, toPath) {
var fromPathProxy = fromPath.getUpdatedPathProxy();
var toPathProxy = toPath.getUpdatedPathProxy();
var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];
var fromPathTransform = fromPath.getComputedTransform();
var toPathTransform = toPath.getComputedTransform();
function updateIdentityTransform() {
this.transform = null;
}
fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);
toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);
saveAndModifyMethod(toPath, "updateTransform", { replace: updateIdentityTransform });
toPath.transform = null;
var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);
var tmpArr = [];
saveAndModifyMethod(toPath, "buildPath", { replace: function(path) {
var t = toPath.__morphT;
var onet = 1 - t;
var newCp = [];
for (var i = 0; i < morphingData.length; i++) {
var item = morphingData[i];
var from = item.from;
var to = item.to;
var angle = item.rotation * t;
var fromCp = item.fromCp;
var toCp = item.toCp;
var sa = Math.sin(angle);
var ca = Math.cos(angle);
lerp(newCp, fromCp, toCp, t);
for (var m = 0; m < from.length; m += 2) {
var x0_1 = from[m];
var y0_1 = from[m + 1];
var x1 = to[m];
var y1 = to[m + 1];
var x = x0_1 * onet + x1 * t;
var y = y0_1 * onet + y1 * t;
tmpArr[m] = x * ca - y * sa + newCp[0];
tmpArr[m + 1] = x * sa + y * ca + newCp[1];
}
var x0 = tmpArr[0];
var y0 = tmpArr[1];
path.moveTo(x0, y0);
for (var m = 2; m < from.length; ) {
var x1 = tmpArr[m++];
var y1 = tmpArr[m++];
var x2 = tmpArr[m++];
var y2 = tmpArr[m++];
var x3 = tmpArr[m++];
var y3 = tmpArr[m++];
if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {
path.lineTo(x3, y3);
} else {
path.bezierCurveTo(x1, y1, x2, y2, x3, y3);
}
x0 = x3;
y0 = y3;
}
}
} });
}
function morphPath(fromPath, toPath, animationOpts) {
if (!fromPath || !toPath) {
return toPath;
}
var oldDone = animationOpts.done;
var oldDuring = animationOpts.during;
prepareMorphPath(fromPath, toPath);
toPath.__morphT = 0;
function restoreToPath() {
restoreMethod(toPath, "buildPath");
restoreMethod(toPath, "updateTransform");
toPath.__morphT = -1;
toPath.createPathProxy();
toPath.dirtyShape();
}
toPath.animateTo({
__morphT: 1
}, defaults({
during: function(p) {
toPath.dirtyShape();
oldDuring && oldDuring(p);
},
done: function() {
restoreToPath();
oldDone && oldDone();
}
}, animationOpts));
return toPath;
}
function hilbert(x, y, minX, minY, maxX, maxY) {
var bits = 16;
x = maxX === minX ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));
y = maxY === minY ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));
var d = 0;
var tmp;
for (var s = (1 << bits) / 2; s > 0; s /= 2) {
var rx = 0;
var ry = 0;
if ((x & s) > 0) {
rx = 1;
}
if ((y & s) > 0) {
ry = 1;
}
d += s * s * (3 * rx ^ ry);
if (ry === 0) {
if (rx === 1) {
x = s - 1 - x;
y = s - 1 - y;
}
tmp = x;
x = y;
y = tmp;
}
}
return d;
}
function sortPaths(pathList) {
var xMin = Infinity;
var yMin = Infinity;
var xMax = -Infinity;
var yMax = -Infinity;
var cps = map(pathList, function(path) {
var rect = path.getBoundingRect();
var m = path.getComputedTransform();
var x = rect.x + rect.width / 2 + (m ? m[4] : 0);
var y = rect.y + rect.height / 2 + (m ? m[5] : 0);
xMin = Math.min(x, xMin);
yMin = Math.min(y, yMin);
xMax = Math.max(x, xMax);
yMax = Math.max(y, yMax);
return [x, y];
});
var items = map(cps, function(cp, idx) {
return {
cp,
z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),
path: pathList[idx]
};
});
return items.sort(function(a, b) {
return a.z - b.z;
}).map(function(item) {
return item.path;
});
}
function defaultDividePath(param) {
return split(param.path, param.count);
}
function createEmptyReturn() {
return {
fromIndividuals: [],
toIndividuals: [],
count: 0
};
}
function combineMorph(fromList, toPath, animationOpts) {
var fromPathList = [];
function addFromPath(fromList2) {
for (var i2 = 0; i2 < fromList2.length; i2++) {
var from2 = fromList2[i2];
if (isCombineMorphing(from2)) {
addFromPath(from2.childrenRef());
} else if (from2 instanceof Path_default) {
fromPathList.push(from2);
}
}
}
addFromPath(fromList);
var separateCount = fromPathList.length;
if (!separateCount) {
return createEmptyReturn();
}
var dividePath = animationOpts.dividePath || defaultDividePath;
var toSubPathList = dividePath({
path: toPath,
count: separateCount
});
if (toSubPathList.length !== separateCount) {
console.error("Invalid morphing: unmatched splitted path");
return createEmptyReturn();
}
fromPathList = sortPaths(fromPathList);
toSubPathList = sortPaths(toSubPathList);
var oldDone = animationOpts.done;
var oldDuring = animationOpts.during;
var individualDelay = animationOpts.individualDelay;
var identityTransform = new Transformable_default();
for (var i = 0; i < separateCount; i++) {
var from = fromPathList[i];
var to = toSubPathList[i];
to.parent = toPath;
to.copyTransform(identityTransform);
if (!individualDelay) {
prepareMorphPath(from, to);
}
}
toPath.__isCombineMorphing = true;
toPath.childrenRef = function() {
return toSubPathList;
};
function addToSubPathListToZr(zr) {
for (var i2 = 0; i2 < toSubPathList.length; i2++) {
toSubPathList[i2].addSelfToZr(zr);
}
}
saveAndModifyMethod(toPath, "addSelfToZr", {
after: function(zr) {
addToSubPathListToZr(zr);
}
});
saveAndModifyMethod(toPath, "removeSelfFromZr", {
after: function(zr) {
for (var i2 = 0; i2 < toSubPathList.length; i2++) {
toSubPathList[i2].removeSelfFromZr(zr);
}
}
});
function restoreToPath() {
toPath.__isCombineMorphing = false;
toPath.__morphT = -1;
toPath.childrenRef = null;
restoreMethod(toPath, "addSelfToZr");
restoreMethod(toPath, "removeSelfFromZr");
}
var toLen = toSubPathList.length;
if (individualDelay) {
var animating_1 = toLen;
var eachDone = function() {
animating_1--;
if (animating_1 === 0) {
restoreToPath();
oldDone && oldDone();
}
};
for (var i = 0; i < toLen; i++) {
var indivdualAnimationOpts = individualDelay ? defaults({
delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),
done: eachDone
}, animationOpts) : animationOpts;
morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);
}
} else {
toPath.__morphT = 0;
toPath.animateTo({
__morphT: 1
}, defaults({
during: function(p) {
for (var i2 = 0; i2 < toLen; i2++) {
var child = toSubPathList[i2];
child.__morphT = toPath.__morphT;
child.dirtyShape();
}
oldDuring && oldDuring(p);
},
done: function() {
restoreToPath();
for (var i2 = 0; i2 < fromList.length; i2++) {
restoreMethod(fromList[i2], "updateTransform");
}
oldDone && oldDone();
}
}, animationOpts));
}
if (toPath.__zr) {
addToSubPathListToZr(toPath.__zr);
}
return {
fromIndividuals: fromPathList,
toIndividuals: toSubPathList,
count: toLen
};
}
function separateMorph(fromPath, toPathList, animationOpts) {
var toLen = toPathList.length;
var fromPathList = [];
var dividePath = animationOpts.dividePath || defaultDividePath;
function addFromPath(fromList) {
for (var i2 = 0; i2 < fromList.length; i2++) {
var from = fromList[i2];
if (isCombineMorphing(from)) {
addFromPath(from.childrenRef());
} else if (from instanceof Path_default) {
fromPathList.push(from);
}
}
}
if (isCombineMorphing(fromPath)) {
addFromPath(fromPath.childrenRef());
var fromLen = fromPathList.length;
if (fromLen < toLen) {
var k = 0;
for (var i = fromLen; i < toLen; i++) {
fromPathList.push(clonePath(fromPathList[k++ % fromLen]));
}
}
fromPathList.length = toLen;
} else {
fromPathList = dividePath({ path: fromPath, count: toLen });
var fromPathTransform = fromPath.getComputedTransform();
for (var i = 0; i < fromPathList.length; i++) {
fromPathList[i].setLocalTransform(fromPathTransform);
}
if (fromPathList.length !== toLen) {
console.error("Invalid morphing: unmatched splitted path");
return createEmptyReturn();
}
}
fromPathList = sortPaths(fromPathList);
toPathList = sortPaths(toPathList);
var individualDelay = animationOpts.individualDelay;
for (var i = 0; i < toLen; i++) {
var indivdualAnimationOpts = individualDelay ? defaults({
delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])
}, animationOpts) : animationOpts;
morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);
}
return {
fromIndividuals: fromPathList,
toIndividuals: toPathList,
count: toPathList.length
};
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/animation/morphTransitionHelper.js
function isMultiple(elements) {
return isArray(elements[0]);
}
function prepareMorphBatches(one, many) {
var batches = [];
var batchCount = one.length;
for (var i = 0; i < batchCount; i++) {
batches.push({
one: one[i],
many: []
});
}
for (var i = 0; i < many.length; i++) {
var len = many[i].length;
var k = void 0;
for (k = 0; k < len; k++) {
batches[k % batchCount].many.push(many[i][k]);
}
}
var off = 0;
for (var i = batchCount - 1; i >= 0; i--) {
if (!batches[i].many.length) {
var moveFrom = batches[off].many;
if (moveFrom.length <= 1) {
if (off) {
off = 0;
} else {
return batches;
}
}
var len = moveFrom.length;
var mid = Math.ceil(len / 2);
batches[i].many = moveFrom.slice(mid, len);
batches[off].many = moveFrom.slice(0, mid);
off++;
}
}
return batches;
}
var pathDividers = {
clone: function(params) {
var ret = [];
var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);
for (var i = 0; i < params.count; i++) {
var cloned = clonePath(params.path);
cloned.setStyle("opacity", approxOpacity);
ret.push(cloned);
}
return ret;
},
// Use the default divider
split: null
};
function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) {
if (!from.length || !to.length) {
return;
}
var updateAnimationCfg = getAnimationConfig("update", seriesModel, dataIndex);
if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {
return;
}
var animationDelay = seriesModel.getModel("universalTransition").get("delay");
var animationCfg = Object.assign({
// Need to setToFinal so the further calculation based on the style can be correct.
// Like emphasis color.
setToFinal: true
}, updateAnimationCfg);
var many;
var one;
if (isMultiple(from)) {
many = from;
one = to;
}
if (isMultiple(to)) {
many = to;
one = from;
}
function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) {
var batchMany = batch.many;
var batchOne = batch.one;
if (batchMany.length === 1 && !forceManyOne) {
var batchFrom = fromIsMany2 ? batchMany[0] : batchOne;
var batchTo = fromIsMany2 ? batchOne : batchMany[0];
if (isCombineMorphing(batchFrom)) {
morphOneBatch({
many: [batchFrom],
one: batchTo
}, true, animateIndex2, animateCount2, true);
} else {
var individualAnimationCfg = animationDelay ? defaults({
delay: animationDelay(animateIndex2, animateCount2)
}, animationCfg) : animationCfg;
morphPath(batchFrom, batchTo, individualAnimationCfg);
animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);
}
} else {
var separateAnimationCfg = defaults({
dividePath: pathDividers[divideShape],
individualDelay: animationDelay && function(idx, count2, fromPath, toPath) {
return animationDelay(idx + animateIndex2, animateCount2);
}
}, animationCfg);
var _a = fromIsMany2 ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a.fromIndividuals, toIndividuals = _a.toIndividuals;
var count = fromIndividuals.length;
for (var k = 0; k < count; k++) {
var individualAnimationCfg = animationDelay ? defaults({
delay: animationDelay(k, count)
}, animationCfg) : animationCfg;
animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany2 ? batchMany[k] : batch.one, fromIsMany2 ? batch.one : batchMany[k], individualAnimationCfg);
}
}
}
var fromIsMany = many ? many === from : from.length > to.length;
var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]);
var animateCount = 0;
for (var i = 0; i < morphBatches.length; i++) {
animateCount += morphBatches[i].many.length;
}
var animateIndex = 0;
for (var i = 0; i < morphBatches.length; i++) {
morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);
animateIndex += morphBatches[i].many.length;
}
}
function getPathList(elements) {
if (!elements) {
return [];
}
if (isArray(elements)) {
var pathList_1 = [];
for (var i = 0; i < elements.length; i++) {
pathList_1.push(getPathList(elements[i]));
}
return pathList_1;
}
var pathList = [];
elements.traverse(function(el) {
if (el instanceof Path_default && !el.disableMorphing && !el.invisible && !el.ignore) {
pathList.push(el);
}
});
return pathList;
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/animation/universalTransition.js
var DATA_COUNT_THRESHOLD = 1e4;
var TRANSITION_NONE = 0;
var TRANSITION_P2C = 1;
var TRANSITION_C2P = 2;
var getUniversalTransitionGlobalStore = makeInner();
function getDimension(data, visualDimension) {
var dimensions = data.dimensions;
for (var i = 0; i < dimensions.length; i++) {
var dimInfo = data.getDimensionInfo(dimensions[i]);
if (dimInfo && dimInfo.otherDims[visualDimension] === 0) {
return dimensions[i];
}
}
}
function getValueByDimension(data, dataIndex, dimension) {
var dimInfo = data.getDimensionInfo(dimension);
var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;
if (dimInfo) {
var value = data.get(dimInfo.name, dataIndex);
if (dimOrdinalMeta) {
return dimOrdinalMeta.categories[value] || value + "";
}
return value + "";
}
}
function getGroupId(data, dataIndex, dataGroupId, isChild) {
var visualDimension = isChild ? "itemChildGroupId" : "itemGroupId";
var groupIdDim = getDimension(data, visualDimension);
if (groupIdDim) {
var groupId = getValueByDimension(data, dataIndex, groupIdDim);
return groupId;
}
var rawDataItem = data.getRawDataItem(dataIndex);
var property = isChild ? "childGroupId" : "groupId";
if (rawDataItem && rawDataItem[property]) {
return rawDataItem[property] + "";
}
if (isChild) {
return;
}
return dataGroupId || data.getId(dataIndex);
}
function flattenDataDiffItems(list) {
var items = [];
each(list, function(seriesInfo) {
var data = seriesInfo.data;
var dataGroupId = seriesInfo.dataGroupId;
if (data.count() > DATA_COUNT_THRESHOLD) {
if (true) {
warn("Universal transition is disabled on large data > 10k.");
}
return;
}
var indices = data.getIndices();
for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {
items.push({
data,
groupId: getGroupId(data, dataIndex, dataGroupId, false),
childGroupId: getGroupId(data, dataIndex, dataGroupId, true),
divide: seriesInfo.divide,
dataIndex
});
}
});
return items;
}
function fadeInElement(newEl, newSeries, newIndex) {
newEl.traverse(function(el) {
if (el instanceof Path_default) {
initProps(el, {
style: {
opacity: 0
}
}, newSeries, {
dataIndex: newIndex,
isFrom: true
});
}
});
}
function removeEl(el) {
if (el.parent) {
var computedTransform = el.getComputedTransform();
el.setLocalTransform(computedTransform);
el.parent.remove(el);
}
}
function stopAnimation(el) {
el.stopAnimation();
if (el.isGroup) {
el.traverse(function(child) {
child.stopAnimation();
});
}
}
function animateElementStyles(el, dataIndex, seriesModel) {
var animationConfig = getAnimationConfig("update", seriesModel, dataIndex);
animationConfig && el.traverse(function(child) {
if (child instanceof Displayable_default) {
var oldStyle = getOldStyle(child);
if (oldStyle) {
child.animateFrom({
style: oldStyle
}, animationConfig);
}
}
});
}
function isAllIdSame(oldDiffItems, newDiffItems) {
var len = oldDiffItems.length;
if (len !== newDiffItems.length) {
return false;
}
for (var i = 0; i < len; i++) {
var oldItem = oldDiffItems[i];
var newItem = newDiffItems[i];
if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {
return false;
}
}
return true;
}
function transitionBetween(oldList, newList, api) {
var oldDiffItems = flattenDataDiffItems(oldList);
var newDiffItems = flattenDataDiffItems(newList);
function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {
if (rawFrom || from) {
to.animateFrom({
style: rawFrom && rawFrom !== from ? extend(extend({}, rawFrom.style), from.style) : from.style
}, animationCfg);
}
}
var hasMorphAnimation = false;
var direction = TRANSITION_NONE;
var oldGroupIds = createHashMap();
var oldChildGroupIds = createHashMap();
oldDiffItems.forEach(function(item) {
item.groupId && oldGroupIds.set(item.groupId, true);
item.childGroupId && oldChildGroupIds.set(item.childGroupId, true);
});
for (var i = 0; i < newDiffItems.length; i++) {
var newGroupId = newDiffItems[i].groupId;
if (oldChildGroupIds.get(newGroupId)) {
direction = TRANSITION_P2C;
break;
}
var newChildGroupId = newDiffItems[i].childGroupId;
if (newChildGroupId && oldGroupIds.get(newChildGroupId)) {
direction = TRANSITION_C2P;
break;
}
}
function createKeyGetter(isOld, onlyGetId) {
return function(diffItem) {
var data = diffItem.data;
var dataIndex = diffItem.dataIndex;
if (onlyGetId) {
return data.getId(dataIndex);
}
if (isOld) {
return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId;
} else {
return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId;
}
};
}
var useId = isAllIdSame(oldDiffItems, newDiffItems);
var isElementStillInChart = {};
if (!useId) {
for (var i = 0; i < newDiffItems.length; i++) {
var newItem = newDiffItems[i];
var el = newItem.data.getItemGraphicEl(newItem.dataIndex);
if (el) {
isElementStillInChart[el.id] = true;
}
}
}
function updateOneToOne(newIndex, oldIndex) {
var oldItem = oldDiffItems[oldIndex];
var newItem2 = newDiffItems[newIndex];
var newSeries = newItem2.data.hostModel;
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
var newEl = newItem2.data.getItemGraphicEl(newItem2.dataIndex);
if (oldEl === newEl) {
newEl && animateElementStyles(newEl, newItem2.dataIndex, newSeries);
return;
}
if (
// We can't use the elements that already being morphed
oldEl && isElementStillInChart[oldEl.id]
) {
return;
}
if (newEl) {
stopAnimation(newEl);
if (oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
hasMorphAnimation = true;
applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
} else {
fadeInElement(newEl, newSeries, newIndex);
}
}
}
new DataDiffer_default(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) {
var newItem2 = newDiffItems[newIndex];
var newData = newItem2.data;
var newSeries = newData.hostModel;
var newEl = newData.getItemGraphicEl(newItem2.dataIndex);
var oldElsList = filter(map(oldIndices, function(idx) {
return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);
}), function(oldEl) {
return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id];
});
if (newEl) {
stopAnimation(newEl);
if (oldElsList.length) {
each(oldElsList, function(oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
});
hasMorphAnimation = true;
applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
} else {
fadeInElement(newEl, newSeries, newItem2.dataIndex);
}
}
}).updateOneToMany(function(newIndices, oldIndex) {
var oldItem = oldDiffItems[oldIndex];
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
if (oldEl && isElementStillInChart[oldEl.id]) {
return;
}
var newElsList = filter(map(newIndices, function(idx) {
return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);
}), function(el2) {
return el2 && el2 !== oldEl;
});
var newSeris = newDiffItems[newIndices[0]].data.hostModel;
if (newElsList.length) {
each(newElsList, function(newEl) {
return stopAnimation(newEl);
});
if (oldEl) {
stopAnimation(oldEl);
removeEl(oldEl);
hasMorphAnimation = true;
applyMorphAnimation(
getPathList(oldEl),
getPathList(newElsList),
oldItem.divide,
// Use divide on old.
newSeris,
newIndices[0],
updateMorphingPathProps
);
} else {
each(newElsList, function(newEl) {
return fadeInElement(newEl, newSeris, newIndices[0]);
});
}
}
}).updateManyToMany(function(newIndices, oldIndices) {
new DataDiffer_default(oldIndices, newIndices, function(rawIdx) {
return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);
}, function(rawIdx) {
return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);
}).update(function(newIndex, oldIndex) {
updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);
}).execute();
}).execute();
if (hasMorphAnimation) {
each(newList, function(_a) {
var data = _a.data;
var seriesModel = data.hostModel;
var view = seriesModel && api.getViewOfSeriesModel(seriesModel);
var animationCfg = getAnimationConfig("update", seriesModel, 0);
if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {
view.group.traverse(function(el2) {
if (el2 instanceof Path_default && !el2.animators.length) {
el2.animateFrom({
style: {
opacity: 0
}
}, animationCfg);
}
});
}
});
}
}
function getSeriesTransitionKey(series) {
var seriesKey = series.getModel("universalTransition").get("seriesKey");
if (!seriesKey) {
return series.id;
}
return seriesKey;
}
function convertArraySeriesKeyToString(seriesKey) {
if (isArray(seriesKey)) {
return seriesKey.sort().join(",");
}
return seriesKey;
}
function getDivideShapeFromData(data) {
if (data.hostModel) {
return data.hostModel.getModel("universalTransition").get("divideShape");
}
}
function findTransitionSeriesBatches(globalStore, params) {
var updateBatches = createHashMap();
var oldDataMap = createHashMap();
var oldDataMapForSplit = createHashMap();
each(globalStore.oldSeries, function(series, idx) {
var oldDataGroupId = globalStore.oldDataGroupIds[idx];
var oldData = globalStore.oldData[idx];
var transitionKey = getSeriesTransitionKey(series);
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
oldDataMap.set(transitionKeyStr, {
dataGroupId: oldDataGroupId,
data: oldData
});
if (isArray(transitionKey)) {
each(transitionKey, function(key) {
oldDataMapForSplit.set(key, {
key: transitionKeyStr,
dataGroupId: oldDataGroupId,
data: oldData
});
});
}
});
function checkTransitionSeriesKeyDuplicated(transitionKeyStr) {
if (updateBatches.get(transitionKeyStr)) {
warn("Duplicated seriesKey in universalTransition " + transitionKeyStr);
}
}
each(params.updatedSeries, function(series) {
if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {
var newDataGroupId = series.get("dataGroupId");
var newData = series.getData();
var transitionKey = getSeriesTransitionKey(series);
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
var oldData = oldDataMap.get(transitionKeyStr);
if (oldData) {
if (true) {
checkTransitionSeriesKeyDuplicated(transitionKeyStr);
}
updateBatches.set(transitionKeyStr, {
oldSeries: [{
dataGroupId: oldData.dataGroupId,
divide: getDivideShapeFromData(oldData.data),
data: oldData.data
}],
newSeries: [{
dataGroupId: newDataGroupId,
divide: getDivideShapeFromData(newData),
data: newData
}]
});
} else {
if (isArray(transitionKey)) {
if (true) {
checkTransitionSeriesKeyDuplicated(transitionKeyStr);
}
var oldSeries_1 = [];
each(transitionKey, function(key) {
var oldData2 = oldDataMap.get(key);
if (oldData2.data) {
oldSeries_1.push({
dataGroupId: oldData2.dataGroupId,
divide: getDivideShapeFromData(oldData2.data),
data: oldData2.data
});
}
});
if (oldSeries_1.length) {
updateBatches.set(transitionKeyStr, {
oldSeries: oldSeries_1,
newSeries: [{
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
}]
});
}
} else {
var oldData_1 = oldDataMapForSplit.get(transitionKey);
if (oldData_1) {
var batch = updateBatches.get(oldData_1.key);
if (!batch) {
batch = {
oldSeries: [{
dataGroupId: oldData_1.dataGroupId,
data: oldData_1.data,
divide: getDivideShapeFromData(oldData_1.data)
}],
newSeries: []
};
updateBatches.set(oldData_1.key, batch);
}
batch.newSeries.push({
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
});
}
}
}
}
});
return updateBatches;
}
function querySeries(series, finder) {
for (var i = 0; i < series.length; i++) {
var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;
if (found) {
return i;
}
}
}
function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {
var from = [];
var to = [];
each(normalizeToArray(transitionOpt.from), function(finder) {
var idx = querySeries(globalStore.oldSeries, finder);
if (idx >= 0) {
from.push({
dataGroupId: globalStore.oldDataGroupIds[idx],
data: globalStore.oldData[idx],
// TODO can specify divideShape in transition.
divide: getDivideShapeFromData(globalStore.oldData[idx]),
groupIdDim: finder.dimension
});
}
});
each(normalizeToArray(transitionOpt.to), function(finder) {
var idx = querySeries(params.updatedSeries, finder);
if (idx >= 0) {
var data = params.updatedSeries[idx].getData();
to.push({
dataGroupId: globalStore.oldDataGroupIds[idx],
data,
divide: getDivideShapeFromData(data),
groupIdDim: finder.dimension
});
}
});
if (from.length > 0 && to.length > 0) {
transitionBetween(from, to, api);
}
}
function installUniversalTransition(registers) {
registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) {
each(normalizeToArray(params.seriesTransition), function(transOpt) {
each(normalizeToArray(transOpt.to), function(finder) {
var series = params.updatedSeries;
for (var i = 0; i < series.length; i++) {
if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {
series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;
}
}
});
});
});
registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) {
var globalStore = getUniversalTransitionGlobalStore(api);
if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {
var transitionOpt = params.seriesTransition;
if (transitionOpt) {
each(normalizeToArray(transitionOpt), function(opt) {
transitionSeriesFromOpt(opt, globalStore, params, api);
});
} else {
var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);
each(updateBatches_1.keys(), function(key) {
var batch = updateBatches_1.get(key);
transitionBetween(batch.oldSeries, batch.newSeries, api);
});
}
each(params.updatedSeries, function(series) {
if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {
series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;
}
});
}
var allSeries = ecModel.getSeries();
var savedSeries = globalStore.oldSeries = [];
var savedDataGroupIds = globalStore.oldDataGroupIds = [];
var savedData = globalStore.oldData = [];
for (var i = 0; i < allSeries.length; i++) {
var data = allSeries[i].getData();
if (data.count() < DATA_COUNT_THRESHOLD) {
savedSeries.push(allSeries[i]);
savedDataGroupIds.push(allSeries[i].get("dataGroupId"));
savedData.push(data);
}
}
});
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/scale/breakImpl.js
var ScaleBreakContextImpl = (
/** @class */
function() {
function ScaleBreakContextImpl2() {
this.breaks = [];
this._elapsedExtent = [Infinity, -Infinity];
}
ScaleBreakContextImpl2.prototype.setBreaks = function(parsed) {
this.breaks = parsed.breaks;
};
ScaleBreakContextImpl2.prototype.update = function(scaleExtent) {
updateAxisBreakGapReal(this, scaleExtent);
var elapsedExtent = this._elapsedExtent;
elapsedExtent[0] = this.elapse(scaleExtent[0]);
elapsedExtent[1] = this.elapse(scaleExtent[1]);
};
ScaleBreakContextImpl2.prototype.hasBreaks = function() {
return !!this.breaks.length;
};
ScaleBreakContextImpl2.prototype.calcNiceTickMultiple = function(tickVal, estimateNiceMultiple) {
for (var idx = 0; idx < this.breaks.length; idx++) {
var brk = this.breaks[idx];
if (brk.vmin < tickVal && tickVal < brk.vmax) {
var multiple = estimateNiceMultiple(tickVal, brk.vmax);
if (true) {
assert(multiple >= 0 && Math.round(multiple) === multiple);
}
return multiple;
}
}
return 0;
};
ScaleBreakContextImpl2.prototype.getExtentSpan = function() {
return this._elapsedExtent[1] - this._elapsedExtent[0];
};
ScaleBreakContextImpl2.prototype.normalize = function(val) {
var elapsedSpan = this._elapsedExtent[1] - this._elapsedExtent[0];
if (elapsedSpan === 0) {
return 0.5;
}
return (this.elapse(val) - this._elapsedExtent[0]) / elapsedSpan;
};
ScaleBreakContextImpl2.prototype.scale = function(val) {
return this.unelapse(val * (this._elapsedExtent[1] - this._elapsedExtent[0]) + this._elapsedExtent[0]);
};
ScaleBreakContextImpl2.prototype.elapse = function(val) {
var elapsedVal = AXIS_BREAK_ELAPSED_BASE;
var lastBreakEnd = AXIS_BREAK_LAST_BREAK_END_BASE;
var stillOver = true;
for (var i = 0; i < this.breaks.length; i++) {
var brk = this.breaks[i];
if (val <= brk.vmax) {
if (val > brk.vmin) {
elapsedVal += brk.vmin - lastBreakEnd + (val - brk.vmin) / (brk.vmax - brk.vmin) * brk.gapReal;
} else {
elapsedVal += val - lastBreakEnd;
}
lastBreakEnd = brk.vmax;
stillOver = false;
break;
}
elapsedVal += brk.vmin - lastBreakEnd + brk.gapReal;
lastBreakEnd = brk.vmax;
}
if (stillOver) {
elapsedVal += val - lastBreakEnd;
}
return elapsedVal;
};
ScaleBreakContextImpl2.prototype.unelapse = function(elapsedVal) {
var lastElapsedEnd = AXIS_BREAK_ELAPSED_BASE;
var lastBreakEnd = AXIS_BREAK_LAST_BREAK_END_BASE;
var stillOver = true;
var unelapsedVal = 0;
for (var i = 0; i < this.breaks.length; i++) {
var brk = this.breaks[i];
var elapsedStart = lastElapsedEnd + brk.vmin - lastBreakEnd;
var elapsedEnd = elapsedStart + brk.gapReal;
if (elapsedVal <= elapsedEnd) {
if (elapsedVal > elapsedStart) {
unelapsedVal = brk.vmin + (elapsedVal - elapsedStart) / (elapsedEnd - elapsedStart) * (brk.vmax - brk.vmin);
} else {
unelapsedVal = lastBreakEnd + elapsedVal - lastElapsedEnd;
}
lastBreakEnd = brk.vmax;
stillOver = false;
break;
}
lastElapsedEnd = elapsedEnd;
lastBreakEnd = brk.vmax;
}
if (stillOver) {
unelapsedVal = lastBreakEnd + elapsedVal - lastElapsedEnd;
}
return unelapsedVal;
};
return ScaleBreakContextImpl2;
}()
);
function createScaleBreakContext() {
return new ScaleBreakContextImpl();
}
var AXIS_BREAK_ELAPSED_BASE = 0;
var AXIS_BREAK_LAST_BREAK_END_BASE = 0;
function updateAxisBreakGapReal(brkCtx, scaleExtent) {
var gapPrctSum = 0;
var fullyInExtBrksSum = {
tpAbs: {
span: 0,
val: 0
},
tpPrct: {
span: 0,
val: 0
}
};
var init = function() {
return {
has: false,
span: NaN,
inExtFrac: NaN,
val: NaN
};
};
var semiInExtBrk = {
S: {
tpAbs: init(),
tpPrct: init()
},
E: {
tpAbs: init(),
tpPrct: init()
}
};
each(brkCtx.breaks, function(brk) {
var gapParsed = brk.gapParsed;
if (gapParsed.type === "tpPrct") {
gapPrctSum += gapParsed.val;
}
var clampedBrk = clampBreakByExtent(brk, scaleExtent);
if (clampedBrk) {
var vminClamped = clampedBrk.vmin !== brk.vmin;
var vmaxClamped = clampedBrk.vmax !== brk.vmax;
var clampedSpan = clampedBrk.vmax - clampedBrk.vmin;
if (vminClamped && vmaxClamped) {
} else if (vminClamped || vmaxClamped) {
var sOrE = vminClamped ? "S" : "E";
semiInExtBrk[sOrE][gapParsed.type].has = true;
semiInExtBrk[sOrE][gapParsed.type].span = clampedSpan;
semiInExtBrk[sOrE][gapParsed.type].inExtFrac = clampedSpan / (brk.vmax - brk.vmin);
semiInExtBrk[sOrE][gapParsed.type].val = gapParsed.val;
} else {
fullyInExtBrksSum[gapParsed.type].span += clampedSpan;
fullyInExtBrksSum[gapParsed.type].val += gapParsed.val;
}
}
});
var prctBrksGapRealSum = gapPrctSum * (0 + (scaleExtent[1] - scaleExtent[0]) + (fullyInExtBrksSum.tpAbs.val - fullyInExtBrksSum.tpAbs.span) + (semiInExtBrk.S.tpAbs.has ? (semiInExtBrk.S.tpAbs.val - semiInExtBrk.S.tpAbs.span) * semiInExtBrk.S.tpAbs.inExtFrac : 0) + (semiInExtBrk.E.tpAbs.has ? (semiInExtBrk.E.tpAbs.val - semiInExtBrk.E.tpAbs.span) * semiInExtBrk.E.tpAbs.inExtFrac : 0) - fullyInExtBrksSum.tpPrct.span - (semiInExtBrk.S.tpPrct.has ? semiInExtBrk.S.tpPrct.span * semiInExtBrk.S.tpPrct.inExtFrac : 0) - (semiInExtBrk.E.tpPrct.has ? semiInExtBrk.E.tpPrct.span * semiInExtBrk.E.tpPrct.inExtFrac : 0)) / (1 - fullyInExtBrksSum.tpPrct.val - (semiInExtBrk.S.tpPrct.has ? semiInExtBrk.S.tpPrct.val * semiInExtBrk.S.tpPrct.inExtFrac : 0) - (semiInExtBrk.E.tpPrct.has ? semiInExtBrk.E.tpPrct.val * semiInExtBrk.E.tpPrct.inExtFrac : 0));
each(brkCtx.breaks, function(brk) {
var gapParsed = brk.gapParsed;
if (gapParsed.type === "tpPrct") {
brk.gapReal = gapPrctSum !== 0 ? Math.max(prctBrksGapRealSum, 0) * gapParsed.val / gapPrctSum : 0;
}
if (gapParsed.type === "tpAbs") {
brk.gapReal = gapParsed.val;
}
if (brk.gapReal == null) {
brk.gapReal = 0;
}
});
}
function pruneTicksByBreak(pruneByBreak, ticks, breaks, getValue, interval, scaleExtent) {
if (pruneByBreak === "no") {
return;
}
each(breaks, function(brk) {
var clampedBrk = clampBreakByExtent(brk, scaleExtent);
if (!clampedBrk) {
return;
}
for (var j = ticks.length - 1; j >= 0; j--) {
var tick = ticks[j];
var val = getValue(tick);
var gap = interval * 3 / 4;
if (val > clampedBrk.vmin - gap && val < clampedBrk.vmax + gap && (pruneByBreak !== "preserve_extent_bound" || val !== scaleExtent[0] && val !== scaleExtent[1])) {
ticks.splice(j, 1);
}
}
});
}
function addBreaksToTicks(ticks, breaks, scaleExtent, getTimeProps) {
each(breaks, function(brk) {
var clampedBrk = clampBreakByExtent(brk, scaleExtent);
if (!clampedBrk) {
return;
}
ticks.push({
value: clampedBrk.vmin,
"break": {
type: "vmin",
parsedBreak: clampedBrk
},
time: getTimeProps ? getTimeProps(clampedBrk) : void 0
});
ticks.push({
value: clampedBrk.vmax,
"break": {
type: "vmax",
parsedBreak: clampedBrk
},
time: getTimeProps ? getTimeProps(clampedBrk) : void 0
});
});
if (breaks.length) {
ticks.sort(function(a, b) {
return a.value - b.value;
});
}
}
function clampBreakByExtent(brk, scaleExtent) {
var vmin = Math.max(brk.vmin, scaleExtent[0]);
var vmax = Math.min(brk.vmax, scaleExtent[1]);
return vmin < vmax || vmin === vmax && vmin > scaleExtent[0] && vmin < scaleExtent[1] ? {
vmin,
vmax,
breakOption: brk.breakOption,
gapParsed: brk.gapParsed,
gapReal: brk.gapReal
} : null;
}
function parseAxisBreakOption(breakOptionList, parse, opt) {
var parsedBreaks = [];
if (!breakOptionList) {
return {
breaks: parsedBreaks
};
}
function validatePercent(normalizedPercent, msg) {
if (normalizedPercent >= 0 && normalizedPercent < 1 - 1e-5) {
return true;
}
if (true) {
error(msg + " must be >= 0 and < 1, rather than " + normalizedPercent + " .");
}
return false;
}
each(breakOptionList, function(brkOption) {
if (!brkOption || brkOption.start == null || brkOption.end == null) {
if (true) {
error("The input axis breaks start/end should not be empty.");
}
return;
}
if (brkOption.isExpanded) {
return;
}
var parsedBrk = {
breakOption: clone(brkOption),
vmin: parse(brkOption.start),
vmax: parse(brkOption.end),
gapParsed: {
type: "tpAbs",
val: 0
},
gapReal: null
};
if (brkOption.gap != null) {
var isPrct = false;
if (isString(brkOption.gap)) {
var trimmedGap = trim(brkOption.gap);
if (trimmedGap.match(/%$/)) {
var normalizedPercent = parseFloat(trimmedGap) / 100;
if (!validatePercent(normalizedPercent, "Percent gap")) {
normalizedPercent = 0;
}
parsedBrk.gapParsed.type = "tpPrct";
parsedBrk.gapParsed.val = normalizedPercent;
isPrct = true;
}
}
if (!isPrct) {
var absolute = parse(brkOption.gap);
if (!isFinite(absolute) || absolute < 0) {
if (true) {
error("Axis breaks gap must positive finite rather than (" + brkOption.gap + ").");
}
absolute = 0;
}
parsedBrk.gapParsed.type = "tpAbs";
parsedBrk.gapParsed.val = absolute;
}
}
if (parsedBrk.vmin === parsedBrk.vmax) {
parsedBrk.gapParsed.type = "tpAbs";
parsedBrk.gapParsed.val = 0;
}
if (opt && opt.noNegative) {
each(["vmin", "vmax"], function(se) {
if (parsedBrk[se] < 0) {
if (true) {
error("Axis break." + se + " must not be negative.");
}
parsedBrk[se] = 0;
}
});
}
if (parsedBrk.vmin > parsedBrk.vmax) {
var tmp = parsedBrk.vmax;
parsedBrk.vmax = parsedBrk.vmin;
parsedBrk.vmin = tmp;
}
parsedBreaks.push(parsedBrk);
});
parsedBreaks.sort(function(item1, item2) {
return item1.vmin - item2.vmin;
});
var lastEnd = -Infinity;
each(parsedBreaks, function(brk, idx) {
if (lastEnd > brk.vmin) {
if (true) {
error("Axis breaks must not overlap.");
}
parsedBreaks[idx] = null;
}
lastEnd = brk.vmax;
});
return {
breaks: parsedBreaks.filter(function(brk) {
return !!brk;
})
};
}
function identifyAxisBreak(brk, identifier) {
return serializeAxisBreakIdentifier(identifier) === serializeAxisBreakIdentifier(brk);
}
function serializeAxisBreakIdentifier(identifier) {
return identifier.start + "_\0_" + identifier.end;
}
function retrieveAxisBreakPairs(itemList, getVisualAxisBreak, returnIdx) {
var idxPairList = [];
each(itemList, function(el, idx) {
var vBreak = getVisualAxisBreak(el);
if (vBreak && vBreak.type === "vmin") {
idxPairList.push([idx]);
}
});
each(itemList, function(el, idx) {
var vBreak = getVisualAxisBreak(el);
if (vBreak && vBreak.type === "vmax") {
var idxPair = find(
idxPairList,
// parsedBreak may be changed, can only use breakOption to match them.
function(pr) {
return identifyAxisBreak(getVisualAxisBreak(itemList[pr[0]]).parsedBreak.breakOption, vBreak.parsedBreak.breakOption);
}
);
idxPair && idxPair.push(idx);
}
});
var result = [];
each(idxPairList, function(idxPair) {
if (idxPair.length === 2) {
result.push(returnIdx ? idxPair : [itemList[idxPair[0]], itemList[idxPair[1]]]);
}
});
return result;
}
function getTicksLogTransformBreak(tick, logBase, logOriginalBreaks, fixRoundingError) {
var vBreak;
var brkRoundingCriterion;
if (tick["break"]) {
var brk = tick["break"].parsedBreak;
var originalBreak = find(logOriginalBreaks, function(brk2) {
return identifyAxisBreak(brk2.breakOption, tick["break"].parsedBreak.breakOption);
});
var vmin = fixRoundingError(Math.pow(logBase, brk.vmin), originalBreak.vmin);
var vmax = fixRoundingError(Math.pow(logBase, brk.vmax), originalBreak.vmax);
var gapParsed = {
type: brk.gapParsed.type,
val: brk.gapParsed.type === "tpAbs" ? round(Math.pow(logBase, brk.vmin + brk.gapParsed.val)) - vmin : brk.gapParsed.val
};
vBreak = {
type: tick["break"].type,
parsedBreak: {
breakOption: brk.breakOption,
vmin,
vmax,
gapParsed,
gapReal: brk.gapReal
}
};
brkRoundingCriterion = originalBreak[tick["break"].type];
}
return {
brkRoundingCriterion,
vBreak
};
}
function logarithmicParseBreaksFromOption(breakOptionList, logBase, parse) {
var opt = {
noNegative: true
};
var parsedOriginal = parseAxisBreakOption(breakOptionList, parse, opt);
var parsedLogged = parseAxisBreakOption(breakOptionList, parse, opt);
var loggedBase = Math.log(logBase);
parsedLogged.breaks = map(parsedLogged.breaks, function(brk) {
var vmin = Math.log(brk.vmin) / loggedBase;
var vmax = Math.log(brk.vmax) / loggedBase;
var gapParsed = {
type: brk.gapParsed.type,
val: brk.gapParsed.type === "tpAbs" ? Math.log(brk.vmin + brk.gapParsed.val) / loggedBase - vmin : brk.gapParsed.val
};
return {
vmin,
vmax,
gapParsed,
gapReal: brk.gapReal,
breakOption: brk.breakOption
};
});
return {
parsedOriginal,
parsedLogged
};
}
var BREAK_MIN_MAX_TO_PARAM = {
vmin: "start",
vmax: "end"
};
function makeAxisLabelFormatterParamBreak(extraParam, vBreak) {
if (vBreak) {
extraParam = extraParam || {};
extraParam["break"] = {
type: BREAK_MIN_MAX_TO_PARAM[vBreak.type],
start: vBreak.parsedBreak.vmin,
end: vBreak.parsedBreak.vmax
};
}
return extraParam;
}
function installScaleBreakHelper() {
registerScaleBreakHelperImpl({
createScaleBreakContext,
pruneTicksByBreak,
addBreaksToTicks,
parseAxisBreakOption,
identifyAxisBreak,
serializeAxisBreakIdentifier,
retrieveAxisBreakPairs,
getTicksLogTransformBreak,
logarithmicParseBreaksFromOption,
makeAxisLabelFormatterParamBreak
});
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/component/axis/axisBreakHelperImpl.js
var viewCache = makeInner();
function ensureVisualInCache(visualList, targetBreak) {
var visual = find(visualList, function(item) {
return getScaleBreakHelper().identifyAxisBreak(item.parsedBreak.breakOption, targetBreak.breakOption);
});
if (!visual) {
visualList.push(visual = {
zigzagRandomList: [],
parsedBreak: targetBreak,
shouldRemove: false
});
}
return visual;
}
function resetCacheVisualRemoveFlag(visualList) {
each(visualList, function(item) {
return item.shouldRemove = true;
});
}
function removeUnusedCacheVisual(visualList) {
for (var i = visualList.length - 1; i >= 0; i--) {
if (visualList[i].shouldRemove) {
visualList.splice(i, 1);
}
}
}
function rectCoordBuildBreakAxis(axisGroup, axisView, axisModel, coordSysRect, api) {
var axis = axisModel.axis;
if (axis.scale.isBlank() || !getScaleBreakHelper()) {
return;
}
var breakPairs = getScaleBreakHelper().retrieveAxisBreakPairs(axis.scale.getTicks({
breakTicks: "only_break"
}), function(tick) {
return tick["break"];
}, false);
if (!breakPairs.length) {
return;
}
var breakAreaModel = axisModel.getModel("breakArea");
var zigzagAmplitude = breakAreaModel.get("zigzagAmplitude");
var zigzagMinSpan = breakAreaModel.get("zigzagMinSpan");
var zigzagMaxSpan = breakAreaModel.get("zigzagMaxSpan");
zigzagMinSpan = Math.max(2, zigzagMinSpan || 0);
zigzagMaxSpan = Math.max(zigzagMinSpan, zigzagMaxSpan || 0);
var expandOnClick = breakAreaModel.get("expandOnClick");
var zigzagZ = breakAreaModel.get("zigzagZ");
var itemStyleModel = breakAreaModel.getModel("itemStyle");
var itemStyle = itemStyleModel.getItemStyle();
var borderColor = itemStyle.stroke;
var borderWidth = itemStyle.lineWidth;
var borderType = itemStyle.lineDash;
var color = itemStyle.fill;
var group = new Group_default({
ignoreModelZ: true
});
var isAxisHorizontal = axis.isHorizontal();
var cachedVisualList = viewCache(axisView).visualList || (viewCache(axisView).visualList = []);
resetCacheVisualRemoveFlag(cachedVisualList);
var _loop_1 = function(i2) {
var parsedBreak = breakPairs[i2][0]["break"].parsedBreak;
var coords = [];
coords[0] = axis.toGlobalCoord(axis.dataToCoord(parsedBreak.vmin, true));
coords[1] = axis.toGlobalCoord(axis.dataToCoord(parsedBreak.vmax, true));
if (coords[1] < coords[0]) {
coords.reverse();
}
var cachedVisual = ensureVisualInCache(cachedVisualList, parsedBreak);
cachedVisual.shouldRemove = false;
var breakGroup = new Group_default();
addZigzagShapes(cachedVisual.zigzagRandomList, breakGroup, coords[0], coords[1], isAxisHorizontal, parsedBreak);
if (expandOnClick) {
breakGroup.on("click", function() {
var payload = {
type: AXIS_BREAK_EXPAND_ACTION_TYPE,
breaks: [{
start: parsedBreak.breakOption.start,
end: parsedBreak.breakOption.end
}]
};
payload[axis.dim + "AxisIndex"] = axisModel.componentIndex;
api.dispatchAction(payload);
});
}
breakGroup.silent = !expandOnClick;
group.add(breakGroup);
};
for (var i = 0; i < breakPairs.length; i++) {
_loop_1(i);
}
axisGroup.add(group);
removeUnusedCacheVisual(cachedVisualList);
function addZigzagShapes(zigzagRandomList, breakGroup, startCoord, endCoord, isAxisHorizontal2, trimmedBreak) {
var polylineStyle = {
stroke: borderColor,
lineWidth: borderWidth,
lineDash: borderType,
fill: "none"
};
var dimBrk = isAxisHorizontal2 ? 0 : 1;
var dimZigzag = 1 - dimBrk;
var zigzagCoordMax = coordSysRect[XY[dimZigzag]] + coordSysRect[WH[dimZigzag]];
function subPixelOpt(brkCoord) {
var pBrk = [];
var dummyP = [];
pBrk[dimBrk] = dummyP[dimBrk] = brkCoord;
pBrk[dimZigzag] = coordSysRect[XY[dimZigzag]];
dummyP[dimZigzag] = zigzagCoordMax;
var dummyShape = {
x1: pBrk[0],
y1: pBrk[1],
x2: dummyP[0],
y2: dummyP[1]
};
subPixelOptimizeLine(dummyShape, dummyShape, {
lineWidth: 1
});
pBrk[0] = dummyShape.x1;
pBrk[1] = dummyShape.y1;
return pBrk[dimBrk];
}
startCoord = subPixelOpt(startCoord);
endCoord = subPixelOpt(endCoord);
var pointsA = [];
var pointsB = [];
var isSwap = true;
var current = coordSysRect[XY[dimZigzag]];
for (var idx = 0; ; idx++) {
var isFirstPoint = current === coordSysRect[XY[dimZigzag]];
var isLastPoint = current >= zigzagCoordMax;
if (isLastPoint) {
current = zigzagCoordMax;
}
var pA = [];
var pB = [];
pA[dimBrk] = startCoord;
pB[dimBrk] = endCoord;
if (!isFirstPoint && !isLastPoint) {
pA[dimBrk] += isSwap ? -zigzagAmplitude : zigzagAmplitude;
pB[dimBrk] -= !isSwap ? -zigzagAmplitude : zigzagAmplitude;
}
pA[dimZigzag] = current;
pB[dimZigzag] = current;
pointsA.push(pA);
pointsB.push(pB);
var randomVal = void 0;
if (idx < zigzagRandomList.length) {
randomVal = zigzagRandomList[idx];
} else {
randomVal = Math.random();
zigzagRandomList.push(randomVal);
}
current += randomVal * (zigzagMaxSpan - zigzagMinSpan) + zigzagMinSpan;
isSwap = !isSwap;
if (isLastPoint) {
break;
}
}
var anidSuffix = getScaleBreakHelper().serializeAxisBreakIdentifier(trimmedBreak.breakOption);
breakGroup.add(new Polyline_default({
anid: "break_a_" + anidSuffix,
shape: {
points: pointsA
},
style: polylineStyle,
z: zigzagZ
}));
if (trimmedBreak.gapReal !== 0) {
breakGroup.add(new Polyline_default({
anid: "break_b_" + anidSuffix,
shape: {
// Not reverse to keep the dash stable when dragging resizing.
points: pointsB
},
style: polylineStyle,
z: zigzagZ
}));
var pointsB2 = pointsB.slice();
pointsB2.reverse();
var polygonPoints = pointsA.concat(pointsB2);
breakGroup.add(new Polygon_default({
anid: "break_c_" + anidSuffix,
shape: {
points: polygonPoints
},
style: {
fill: color,
opacity: itemStyle.opacity
},
z: zigzagZ
}));
}
}
}
function buildAxisBreakLine(axisModel, group, transformGroup, pathBaseProp) {
var axis = axisModel.axis;
var transform = transformGroup.transform;
assert(pathBaseProp.style);
var extent = axis.getExtent();
if (axis.inverse) {
extent = extent.slice();
extent.reverse();
}
var breakPairs = getScaleBreakHelper().retrieveAxisBreakPairs(axis.scale.getTicks({
breakTicks: "only_break"
}), function(tick) {
return tick["break"];
}, false);
var brkLayoutList = map(breakPairs, function(breakPair) {
var parsedBreak = breakPair[0]["break"].parsedBreak;
var coordPair = [axis.dataToCoord(parsedBreak.vmin, true), axis.dataToCoord(parsedBreak.vmax, true)];
coordPair[0] > coordPair[1] && coordPair.reverse();
return {
coordPair,
brkId: getScaleBreakHelper().serializeAxisBreakIdentifier(parsedBreak.breakOption)
};
});
brkLayoutList.sort(function(layout1, layout2) {
return layout1.coordPair[0] - layout2.coordPair[0];
});
var ySegMin = extent[0];
var lastLayout = null;
for (var idx = 0; idx < brkLayoutList.length; idx++) {
var layout = brkLayoutList[idx];
var brkTirmmedMin = Math.max(layout.coordPair[0], extent[0]);
var brkTirmmedMax = Math.min(layout.coordPair[1], extent[1]);
if (ySegMin <= brkTirmmedMin) {
addSeg(ySegMin, brkTirmmedMin, lastLayout, layout);
}
ySegMin = brkTirmmedMax;
lastLayout = layout;
}
if (ySegMin <= extent[1]) {
addSeg(ySegMin, extent[1], lastLayout, null);
}
function addSeg(min, max, layout1, layout2) {
function trans(p1, p2) {
if (transform) {
applyTransform(p1, p1, transform);
applyTransform(p2, p2, transform);
}
}
function subPixelOptimizePP(p1, p2) {
var shape = {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1]
};
subPixelOptimizeLine(shape, shape, pathBaseProp.style);
p1[0] = shape.x1;
p1[1] = shape.y1;
p2[0] = shape.x2;
p2[1] = shape.y2;
}
var lineP1 = [min, 0];
var lineP2 = [max, 0];
var dummyTickEnd1 = [min, 5];
var dummyTickEnd2 = [max, 5];
trans(lineP1, dummyTickEnd1);
subPixelOptimizePP(lineP1, dummyTickEnd1);
trans(lineP2, dummyTickEnd2);
subPixelOptimizePP(lineP2, dummyTickEnd2);
subPixelOptimizePP(lineP1, lineP2);
var seg = new Line_default(extend({
shape: {
x1: lineP1[0],
y1: lineP1[1],
x2: lineP2[0],
y2: lineP2[1]
}
}, pathBaseProp));
group.add(seg);
seg.anid = "breakLine_" + (layout1 ? layout1.brkId : "\0") + "_\0_" + (layout2 ? layout2.brkId : "\0");
}
}
function adjustBreakLabelPair(axisInverse, axisRotation, layoutPair) {
if (find(layoutPair, function(item) {
return !item;
})) {
return;
}
var mtv = new Point_default();
if (!labelIntersect(layoutPair[0], layoutPair[1], mtv, {
// Assert `labelPair` is `[break_min, break_max]`.
// `axis.inverse: true` means a smaller scale value corresponds to a bigger value in axis.extent.
// The axisRotation indicates mtv direction of OBB intersecting.
direction: -(axisInverse ? axisRotation + Math.PI : axisRotation),
touchThreshold: 0,
// If need to resovle intersection align axis by moving labels according to MTV,
// the direction must not be opposite, otherwise cause misleading.
bidirectional: false
})) {
return;
}
var axisStTrans = create();
rotate(axisStTrans, axisStTrans, -axisRotation);
var labelPairStTrans = map(layoutPair, function(layout) {
return layout.transform ? mul(create(), axisStTrans, layout.transform) : axisStTrans;
});
function isParallelToAxis(whIdx) {
var localRect = layoutPair[0].localRect;
var labelVec0 = new Point_default(localRect[WH[whIdx]] * labelPairStTrans[0][0], localRect[WH[whIdx]] * labelPairStTrans[0][1]);
return Math.abs(labelVec0.y) < 1e-5;
}
var k = 0.5;
if (isParallelToAxis(0) || isParallelToAxis(1)) {
var rectSt = map(layoutPair, function(layout, idx) {
var rect = layout.localRect.clone();
rect.applyTransform(labelPairStTrans[idx]);
return rect;
});
var brkCenterSt = new Point_default();
brkCenterSt.copy(layoutPair[0].label).add(layoutPair[1].label).scale(0.5);
brkCenterSt.transform(axisStTrans);
var mtvSt = mtv.clone().transform(axisStTrans);
var insidePtSum = rectSt[0].x + rectSt[1].x + (mtvSt.x >= 0 ? rectSt[0].width : rectSt[1].width);
var qval = (insidePtSum + mtvSt.x) / 2 - brkCenterSt.x;
var uvalMin = Math.min(qval, qval - mtvSt.x);
var uvalMax = Math.max(qval, qval - mtvSt.x);
var uval = uvalMax < 0 ? uvalMax : uvalMin > 0 ? uvalMin : 0;
k = (qval - uval) / mtvSt.x;
}
var delta0 = new Point_default();
var delta1 = new Point_default();
Point_default.scale(delta0, mtv, -k);
Point_default.scale(delta1, mtv, 1 - k);
labelLayoutApplyTranslation(layoutPair[0], delta0);
labelLayoutApplyTranslation(layoutPair[1], delta1);
}
function updateModelAxisBreak(model, payload) {
var result = {
breaks: []
};
each(payload.breaks, function(inputBrk) {
if (!inputBrk) {
return;
}
var breakOption = find(model.get("breaks", true), function(brkOption) {
return getScaleBreakHelper().identifyAxisBreak(brkOption, inputBrk);
});
if (!breakOption) {
if (true) {
warn("Can not find axis break by start: " + inputBrk.start + ", end: " + inputBrk.end);
}
return;
}
var actionType = payload.type;
var old = {
isExpanded: !!breakOption.isExpanded
};
breakOption.isExpanded = actionType === AXIS_BREAK_EXPAND_ACTION_TYPE ? true : actionType === AXIS_BREAK_COLLAPSE_ACTION_TYPE ? false : actionType === AXIS_BREAK_TOGGLE_ACTION_TYPE ? !breakOption.isExpanded : breakOption.isExpanded;
result.breaks.push({
start: breakOption.start,
end: breakOption.end,
isExpanded: !!breakOption.isExpanded,
old
});
});
return result;
}
function installAxisBreakHelper() {
registerAxisBreakHelperImpl({
adjustBreakLabelPair,
buildAxisBreakLine,
rectCoordBuildBreakAxis,
updateModelAxisBreak
});
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/component/axis/installBreak.js
function installAxisBreak(registers) {
registerAction(registers);
installScaleBreakHelper();
installAxisBreakHelper();
}
// ../node_modules/.pnpm/echarts@6.0.0/node_modules/echarts/lib/coord/cartesian/legacyContainLabel.js
function installLegacyGridContainLabel() {
registerLegacyGridContainLabelImpl(legacyLayOutGridByContained);
}
function legacyLayOutGridByContained(axesList, gridRect) {
each(axesList, function(axis) {
if (!axis.model.get(["axisLabel", "inside"])) {
var labelUnionRect = estimateLabelUnionRect(axis);
if (labelUnionRect) {
var dim = axis.isHorizontal() ? "height" : "width";
var margin = axis.model.get(["axisLabel", "margin"]);
gridRect[dim] -= labelUnionRect[dim] + margin;
if (axis.position === "top") {
gridRect.y += labelUnionRect.height + margin;
} else if (axis.position === "left") {
gridRect.x += labelUnionRect.width + margin;
}
}
}
});
}
function estimateLabelUnionRect(axis) {
var axisModel = axis.model;
var scale = axis.scale;
if (!axisModel.get(["axisLabel", "show"]) || scale.isBlank()) {
return;
}
var realNumberScaleTicks;
var tickCount;
var categoryScaleExtent = scale.getExtent();
if (scale instanceof Ordinal_default) {
tickCount = scale.count();
} else {
realNumberScaleTicks = scale.getTicks();
tickCount = realNumberScaleTicks.length;
}
var axisLabelModel = axis.getLabelModel();
var labelFormatter = makeLabelFormatter(axis);
var rect;
var step = 1;
if (tickCount > 40) {
step = Math.ceil(tickCount / 40);
}
for (var i = 0; i < tickCount; i += step) {
var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {
value: categoryScaleExtent[0] + i
};
var label = labelFormatter(tick, i);
var unrotatedSingleRect = axisLabelModel.getTextRect(label);
var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get("rotate") || 0);
rect ? rect.union(singleRect) : rect = singleRect;
}
return rect;
function rotateTextRect(textRect, rotate2) {
var rotateRadians = rotate2 * Math.PI / 180;
var beforeWidth = textRect.width;
var beforeHeight = textRect.height;
var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));
var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));
var rotatedRect = new BoundingRect_default(textRect.x, textRect.y, afterWidth, afterHeight);
return rotatedRect;
}
}
export {
installAxisBreak as AxisBreak,
installLabelLayout as LabelLayout,
installLegacyGridContainLabel as LegacyGridContainLabel,
installScatterJitter as ScatterJitter,
installUniversalTransition as UniversalTransition
};
//# sourceMappingURL=echarts_features.js.map