123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907 |
- import {
- BE_ORDINAL,
- CoordinateSystem_default,
- CtorInt32Array,
- DISPLAY_STATES,
- Polyline_default,
- SINGLE_REFERRING,
- SOURCE_FORMAT_ORIGINAL,
- SPECIAL_STATES,
- SeriesDataSchema,
- SeriesData_default,
- SeriesDimensionDefine_default,
- VISUAL_DIMENSIONS,
- createDimNameMap,
- createSourceFromSeriesDataOption,
- enableDataStack,
- ensureSourceDimNameMap,
- getDataItemValue,
- getDimensionTypeByAxis,
- guessOrdinal,
- isSourceInstance,
- makeSeriesEncodeForAxisCoordSys,
- normalizeToArray,
- shouldOmitUnusedDimensions
- } from "./chunk-PRJRDRZN.js";
- import {
- PathProxy_default,
- Path_default,
- Point_default,
- createHashMap,
- cubicProjectPoint,
- curry,
- defaults,
- dist,
- each,
- extend,
- invert,
- isArray,
- isFunction,
- isObject,
- isString,
- lerp,
- map,
- normalizeRadian,
- quadraticProjectPoint,
- retrieve,
- retrieve2
- } from "./chunk-7YIZLZUW.js";
- // node_modules/echarts/lib/data/helper/createDimensions.js
- function createDimensions(source, opt) {
- return prepareSeriesDataSchema(source, opt).dimensions;
- }
- function prepareSeriesDataSchema(source, opt) {
- if (!isSourceInstance(source)) {
- source = createSourceFromSeriesDataOption(source);
- }
- opt = opt || {};
- var sysDims = opt.coordDimensions || [];
- var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];
- var coordDimNameMap = createHashMap();
- var resultList = [];
- var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount);
- var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);
- var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;
- var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);
- var encodeDef = opt.encodeDefine;
- if (!encodeDef && opt.encodeDefaulter) {
- encodeDef = opt.encodeDefaulter(source, dimCount);
- }
- var encodeDefMap = createHashMap(encodeDef);
- var indicesMap = new CtorInt32Array(dimCount);
- for (var i = 0; i < indicesMap.length; i++) {
- indicesMap[i] = -1;
- }
- function getResultItem(dimIdx) {
- var idx = indicesMap[dimIdx];
- if (idx < 0) {
- var dimDefItemRaw = dimsDef[dimIdx];
- var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : {
- name: dimDefItemRaw
- };
- var resultItem2 = new SeriesDimensionDefine_default();
- var userDimName = dimDefItem.name;
- if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
- resultItem2.name = resultItem2.displayName = userDimName;
- }
- dimDefItem.type != null && (resultItem2.type = dimDefItem.type);
- dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName);
- var newIdx = resultList.length;
- indicesMap[dimIdx] = newIdx;
- resultItem2.storeDimIndex = dimIdx;
- resultList.push(resultItem2);
- return resultItem2;
- }
- return resultList[idx];
- }
- if (!omitUnusedDimensions) {
- for (var i = 0; i < dimCount; i++) {
- getResultItem(i);
- }
- }
- encodeDefMap.each(function(dataDimsRaw, coordDim2) {
- var dataDims = normalizeToArray(dataDimsRaw).slice();
- if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {
- encodeDefMap.set(coordDim2, false);
- return;
- }
- var validDataDims = encodeDefMap.set(coordDim2, []);
- each(dataDims, function(resultDimIdxOrName, idx) {
- var resultDimIdx2 = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName;
- if (resultDimIdx2 != null && resultDimIdx2 < dimCount) {
- validDataDims[idx] = resultDimIdx2;
- applyDim(getResultItem(resultDimIdx2), coordDim2, idx);
- }
- });
- });
- var availDimIdx = 0;
- each(sysDims, function(sysDimItemRaw) {
- var coordDim2;
- var sysDimItemDimsDef;
- var sysDimItemOtherDims;
- var sysDimItem;
- if (isString(sysDimItemRaw)) {
- coordDim2 = sysDimItemRaw;
- sysDimItem = {};
- } else {
- sysDimItem = sysDimItemRaw;
- coordDim2 = sysDimItem.name;
- var ordinalMeta = sysDimItem.ordinalMeta;
- sysDimItem.ordinalMeta = null;
- sysDimItem = extend({}, sysDimItem);
- sysDimItem.ordinalMeta = ordinalMeta;
- sysDimItemDimsDef = sysDimItem.dimsDef;
- sysDimItemOtherDims = sysDimItem.otherDims;
- sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;
- }
- var dataDims = encodeDefMap.get(coordDim2);
- if (dataDims === false) {
- return;
- }
- dataDims = normalizeToArray(dataDims);
- if (!dataDims.length) {
- for (var i2 = 0; i2 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i2++) {
- while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) {
- availDimIdx++;
- }
- availDimIdx < dimCount && dataDims.push(availDimIdx++);
- }
- }
- each(dataDims, function(resultDimIdx2, coordDimIndex) {
- var resultItem2 = getResultItem(resultDimIdx2);
- if (isUsingSourceDimensionsDef && sysDimItem.type != null) {
- resultItem2.type = sysDimItem.type;
- }
- applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex);
- if (resultItem2.name == null && sysDimItemDimsDef) {
- var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];
- !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {
- name: sysDimItemDimsDefItem
- });
- resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name;
- resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;
- }
- sysDimItemOtherDims && defaults(resultItem2.otherDims, sysDimItemOtherDims);
- });
- });
- function applyDim(resultItem2, coordDim2, coordDimIndex) {
- if (VISUAL_DIMENSIONS.get(coordDim2) != null) {
- resultItem2.otherDims[coordDim2] = coordDimIndex;
- } else {
- resultItem2.coordDim = coordDim2;
- resultItem2.coordDimIndex = coordDimIndex;
- coordDimNameMap.set(coordDim2, true);
- }
- }
- var generateCoord = opt.generateCoord;
- var generateCoordCount = opt.generateCoordCount;
- var fromZero = generateCoordCount != null;
- generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;
- var extra = generateCoord || "value";
- function ifNoNameFillWithCoordName(resultItem2) {
- if (resultItem2.name == null) {
- resultItem2.name = resultItem2.coordDim;
- }
- }
- if (!omitUnusedDimensions) {
- for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
- var resultItem = getResultItem(resultDimIdx);
- var coordDim = resultItem.coordDim;
- if (coordDim == null) {
- resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero);
- resultItem.coordDimIndex = 0;
- if (!generateCoord || generateCoordCount <= 0) {
- resultItem.isExtraCoord = true;
- }
- generateCoordCount--;
- }
- ifNoNameFillWithCoordName(resultItem);
- if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {
- resultItem.type = "ordinal";
- }
- }
- } else {
- each(resultList, function(resultItem2) {
- ifNoNameFillWithCoordName(resultItem2);
- });
- resultList.sort(function(item0, item1) {
- return item0.storeDimIndex - item1.storeDimIndex;
- });
- }
- removeDuplication(resultList);
- return new SeriesDataSchema({
- source,
- dimensions: resultList,
- fullDimensionCount: dimCount,
- dimensionOmitted: omitUnusedDimensions
- });
- }
- function removeDuplication(result) {
- var duplicationMap = createHashMap();
- for (var i = 0; i < result.length; i++) {
- var dim = result[i];
- var dimOriginalName = dim.name;
- var count = duplicationMap.get(dimOriginalName) || 0;
- if (count > 0) {
- dim.name = dimOriginalName + (count - 1);
- }
- count++;
- duplicationMap.set(dimOriginalName, count);
- }
- }
- function getDimCount(source, sysDims, dimsDef, optDimCount) {
- var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);
- each(sysDims, function(sysDimItem) {
- var sysDimItemDimsDef;
- if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {
- dimCount = Math.max(dimCount, sysDimItemDimsDef.length);
- }
- });
- return dimCount;
- }
- function genCoordDimName(name, map2, fromZero) {
- if (fromZero || map2.hasKey(name)) {
- var i = 0;
- while (map2.hasKey(name + i)) {
- i++;
- }
- name += i;
- }
- map2.set(name, true);
- return name;
- }
- // node_modules/echarts/lib/model/referHelper.js
- var CoordSysInfo = (
- /** @class */
- function() {
- function CoordSysInfo2(coordSysName) {
- this.coordSysDims = [];
- this.axisMap = createHashMap();
- this.categoryAxisMap = createHashMap();
- this.coordSysName = coordSysName;
- }
- return CoordSysInfo2;
- }()
- );
- function getCoordSysInfoBySeries(seriesModel) {
- var coordSysName = seriesModel.get("coordinateSystem");
- var result = new CoordSysInfo(coordSysName);
- var fetch = fetchers[coordSysName];
- if (fetch) {
- fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);
- return result;
- }
- }
- var fetchers = {
- cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) {
- var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0];
- var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0];
- if (true) {
- if (!xAxisModel) {
- throw new Error('xAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("xAxisId"), 0) + '" not found');
- }
- if (!yAxisModel) {
- throw new Error('yAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("yAxisId"), 0) + '" not found');
- }
- }
- result.coordSysDims = ["x", "y"];
- axisMap.set("x", xAxisModel);
- axisMap.set("y", yAxisModel);
- if (isCategory(xAxisModel)) {
- categoryAxisMap.set("x", xAxisModel);
- result.firstCategoryDimIndex = 0;
- }
- if (isCategory(yAxisModel)) {
- categoryAxisMap.set("y", yAxisModel);
- result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
- }
- },
- singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) {
- var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
- if (true) {
- if (!singleAxisModel) {
- throw new Error("singleAxis should be specified.");
- }
- }
- result.coordSysDims = ["single"];
- axisMap.set("single", singleAxisModel);
- if (isCategory(singleAxisModel)) {
- categoryAxisMap.set("single", singleAxisModel);
- result.firstCategoryDimIndex = 0;
- }
- },
- polar: function(seriesModel, result, axisMap, categoryAxisMap) {
- var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
- var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
- var angleAxisModel = polarModel.findAxisModel("angleAxis");
- if (true) {
- if (!angleAxisModel) {
- throw new Error("angleAxis option not found");
- }
- if (!radiusAxisModel) {
- throw new Error("radiusAxis option not found");
- }
- }
- result.coordSysDims = ["radius", "angle"];
- axisMap.set("radius", radiusAxisModel);
- axisMap.set("angle", angleAxisModel);
- if (isCategory(radiusAxisModel)) {
- categoryAxisMap.set("radius", radiusAxisModel);
- result.firstCategoryDimIndex = 0;
- }
- if (isCategory(angleAxisModel)) {
- categoryAxisMap.set("angle", angleAxisModel);
- result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
- }
- },
- geo: function(seriesModel, result, axisMap, categoryAxisMap) {
- result.coordSysDims = ["lng", "lat"];
- },
- parallel: function(seriesModel, result, axisMap, categoryAxisMap) {
- var ecModel = seriesModel.ecModel;
- var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
- var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();
- each(parallelModel.parallelAxisIndex, function(axisIndex, index) {
- var axisModel = ecModel.getComponent("parallelAxis", axisIndex);
- var axisDim = coordSysDims[index];
- axisMap.set(axisDim, axisModel);
- if (isCategory(axisModel)) {
- categoryAxisMap.set(axisDim, axisModel);
- if (result.firstCategoryDimIndex == null) {
- result.firstCategoryDimIndex = index;
- }
- }
- });
- }
- };
- function isCategory(axisModel) {
- return axisModel.get("type") === "category";
- }
- // node_modules/echarts/lib/chart/helper/createSeriesData.js
- function getCoordSysDimDefs(seriesModel, coordSysInfo) {
- var coordSysName = seriesModel.get("coordinateSystem");
- var registeredCoordSys = CoordinateSystem_default.get(coordSysName);
- var coordSysDimDefs;
- if (coordSysInfo && coordSysInfo.coordSysDims) {
- coordSysDimDefs = map(coordSysInfo.coordSysDims, function(dim) {
- var dimInfo = {
- name: dim
- };
- var axisModel = coordSysInfo.axisMap.get(dim);
- if (axisModel) {
- var axisType = axisModel.get("type");
- dimInfo.type = getDimensionTypeByAxis(axisType);
- }
- return dimInfo;
- });
- }
- if (!coordSysDimDefs) {
- coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"];
- }
- return coordSysDimDefs;
- }
- function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {
- var firstCategoryDimIndex;
- var hasNameEncode;
- coordSysInfo && each(dimInfoList, function(dimInfo, dimIndex) {
- var coordDim = dimInfo.coordDim;
- var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);
- if (categoryAxisModel) {
- if (firstCategoryDimIndex == null) {
- firstCategoryDimIndex = dimIndex;
- }
- dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();
- if (createInvertedIndices) {
- dimInfo.createInvertedIndices = true;
- }
- }
- if (dimInfo.otherDims.itemName != null) {
- hasNameEncode = true;
- }
- });
- if (!hasNameEncode && firstCategoryDimIndex != null) {
- dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;
- }
- return firstCategoryDimIndex;
- }
- function createSeriesData(sourceRaw, seriesModel, opt) {
- opt = opt || {};
- var sourceManager = seriesModel.getSourceManager();
- var source;
- var isOriginalSource = false;
- if (sourceRaw) {
- isOriginalSource = true;
- source = createSourceFromSeriesDataOption(sourceRaw);
- } else {
- source = sourceManager.getSource();
- isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;
- }
- var coordSysInfo = getCoordSysInfoBySeries(seriesModel);
- var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);
- var useEncodeDefaulter = opt.useEncodeDefaulter;
- var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;
- var createDimensionOptions = {
- coordDimensions: coordSysDimDefs,
- generateCoord: opt.generateCoord,
- encodeDefine: seriesModel.getEncode(),
- encodeDefaulter,
- canOmitUnusedDimensions: !isOriginalSource
- };
- var schema = prepareSeriesDataSchema(source, createDimensionOptions);
- var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);
- var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;
- var stackCalculationInfo = enableDataStack(seriesModel, {
- schema,
- store
- });
- var data = new SeriesData_default(schema, seriesModel);
- data.setCalculationInfo(stackCalculationInfo);
- var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) {
- return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);
- } : null;
- data.hasItemOption = false;
- data.initData(
- // Try to reuse the data store in sourceManager if using dataset.
- isOriginalSource ? source : store,
- null,
- dimValueGetter
- );
- return data;
- }
- function isNeedCompleteOrdinalData(source) {
- if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {
- var sampleItem = firstDataNotNull(source.data || []);
- return !isArray(getDataItemValue(sampleItem));
- }
- }
- function firstDataNotNull(arr) {
- var i = 0;
- while (i < arr.length && arr[i] == null) {
- i++;
- }
- return arr[i];
- }
- var createSeriesData_default = createSeriesData;
- // node_modules/echarts/lib/label/labelGuideHelper.js
- var PI2 = Math.PI * 2;
- var CMD = PathProxy_default.CMD;
- var DEFAULT_SEARCH_SPACE = ["top", "right", "bottom", "left"];
- function getCandidateAnchor(pos, distance, rect, outPt, outDir) {
- var width = rect.width;
- var height = rect.height;
- switch (pos) {
- case "top":
- outPt.set(rect.x + width / 2, rect.y - distance);
- outDir.set(0, -1);
- break;
- case "bottom":
- outPt.set(rect.x + width / 2, rect.y + height + distance);
- outDir.set(0, 1);
- break;
- case "left":
- outPt.set(rect.x - distance, rect.y + height / 2);
- outDir.set(-1, 0);
- break;
- case "right":
- outPt.set(rect.x + width + distance, rect.y + height / 2);
- outDir.set(1, 0);
- break;
- }
- }
- function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {
- x -= cx;
- y -= cy;
- var d = Math.sqrt(x * x + y * y);
- x /= d;
- y /= d;
- var ox = x * r + cx;
- var oy = y * r + cy;
- if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {
- out[0] = ox;
- out[1] = oy;
- return d - r;
- }
- if (anticlockwise) {
- var tmp = startAngle;
- startAngle = normalizeRadian(endAngle);
- endAngle = normalizeRadian(tmp);
- } else {
- startAngle = normalizeRadian(startAngle);
- endAngle = normalizeRadian(endAngle);
- }
- if (startAngle > endAngle) {
- endAngle += PI2;
- }
- var angle = Math.atan2(y, x);
- if (angle < 0) {
- angle += PI2;
- }
- if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {
- out[0] = ox;
- out[1] = oy;
- return d - r;
- }
- var x1 = r * Math.cos(startAngle) + cx;
- var y1 = r * Math.sin(startAngle) + cy;
- var x2 = r * Math.cos(endAngle) + cx;
- var y2 = r * Math.sin(endAngle) + cy;
- var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);
- var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);
- if (d1 < d2) {
- out[0] = x1;
- out[1] = y1;
- return Math.sqrt(d1);
- } else {
- out[0] = x2;
- out[1] = y2;
- return Math.sqrt(d2);
- }
- }
- function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {
- var dx = x - x1;
- var dy = y - y1;
- var dx1 = x2 - x1;
- var dy1 = y2 - y1;
- var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);
- dx1 /= lineLen;
- dy1 /= lineLen;
- var projectedLen = dx * dx1 + dy * dy1;
- var t = projectedLen / lineLen;
- if (limitToEnds) {
- t = Math.min(Math.max(t, 0), 1);
- }
- t *= lineLen;
- var ox = out[0] = x1 + t * dx1;
- var oy = out[1] = y1 + t * dy1;
- return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));
- }
- function projectPointToRect(x1, y1, width, height, x, y, out) {
- if (width < 0) {
- x1 = x1 + width;
- width = -width;
- }
- if (height < 0) {
- y1 = y1 + height;
- height = -height;
- }
- var x2 = x1 + width;
- var y2 = y1 + height;
- var ox = out[0] = Math.min(Math.max(x, x1), x2);
- var oy = out[1] = Math.min(Math.max(y, y1), y2);
- return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));
- }
- var tmpPt = [];
- function nearestPointOnRect(pt, rect, out) {
- var dist2 = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);
- out.set(tmpPt[0], tmpPt[1]);
- return dist2;
- }
- function nearestPointOnPath(pt, path, out) {
- var xi = 0;
- var yi = 0;
- var x0 = 0;
- var y0 = 0;
- var x1;
- var y1;
- var minDist = Infinity;
- var data = path.data;
- var x = pt.x;
- var y = pt.y;
- for (var i = 0; i < data.length; ) {
- var cmd = data[i++];
- if (i === 1) {
- xi = data[i];
- yi = data[i + 1];
- x0 = xi;
- y0 = yi;
- }
- var d = minDist;
- switch (cmd) {
- case CMD.M:
- x0 = data[i++];
- y0 = data[i++];
- xi = x0;
- yi = y0;
- break;
- case CMD.L:
- d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);
- xi = data[i++];
- yi = data[i++];
- break;
- case CMD.C:
- d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);
- xi = data[i++];
- yi = data[i++];
- break;
- case CMD.Q:
- d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);
- xi = data[i++];
- yi = data[i++];
- break;
- case CMD.A:
- var cx = data[i++];
- var cy = data[i++];
- var rx = data[i++];
- var ry = data[i++];
- var theta = data[i++];
- var dTheta = data[i++];
- i += 1;
- var anticlockwise = !!(1 - data[i++]);
- x1 = Math.cos(theta) * rx + cx;
- y1 = Math.sin(theta) * ry + cy;
- if (i <= 1) {
- x0 = x1;
- y0 = y1;
- }
- var _x = (x - cx) * ry / rx + cx;
- d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);
- xi = Math.cos(theta + dTheta) * rx + cx;
- yi = Math.sin(theta + dTheta) * ry + cy;
- break;
- case CMD.R:
- x0 = xi = data[i++];
- y0 = yi = data[i++];
- var width = data[i++];
- var height = data[i++];
- d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);
- break;
- case CMD.Z:
- d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);
- xi = x0;
- yi = y0;
- break;
- }
- if (d < minDist) {
- minDist = d;
- out.set(tmpPt[0], tmpPt[1]);
- }
- }
- return minDist;
- }
- var pt0 = new Point_default();
- var pt1 = new Point_default();
- var pt2 = new Point_default();
- var dir = new Point_default();
- var dir2 = new Point_default();
- function updateLabelLinePoints(target, labelLineModel) {
- if (!target) {
- return;
- }
- var labelLine = target.getTextGuideLine();
- var label = target.getTextContent();
- if (!(label && labelLine)) {
- return;
- }
- var labelGuideConfig = target.textGuideLineConfig || {};
- var points = [[0, 0], [0, 0], [0, 0]];
- var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;
- var labelRect = label.getBoundingRect().clone();
- labelRect.applyTransform(label.getComputedTransform());
- var minDist = Infinity;
- var anchorPoint = labelGuideConfig.anchor;
- var targetTransform = target.getComputedTransform();
- var targetInversedTransform = targetTransform && invert([], targetTransform);
- var len = labelLineModel.get("length2") || 0;
- if (anchorPoint) {
- pt2.copy(anchorPoint);
- }
- for (var i = 0; i < searchSpace.length; i++) {
- var candidate = searchSpace[i];
- getCandidateAnchor(candidate, 0, labelRect, pt0, dir);
- Point_default.scaleAndAdd(pt1, pt0, dir, len);
- pt1.transform(targetInversedTransform);
- var boundingRect = target.getBoundingRect();
- var dist2 = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path_default ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2);
- if (dist2 < minDist) {
- minDist = dist2;
- pt1.transform(targetTransform);
- pt2.transform(targetTransform);
- pt2.toArray(points[0]);
- pt1.toArray(points[1]);
- pt0.toArray(points[2]);
- }
- }
- limitTurnAngle(points, labelLineModel.get("minTurnAngle"));
- labelLine.setShape({
- points
- });
- }
- var tmpArr = [];
- var tmpProjPoint = new Point_default();
- function limitTurnAngle(linePoints, minTurnAngle) {
- if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {
- return;
- }
- minTurnAngle = minTurnAngle / 180 * Math.PI;
- pt0.fromArray(linePoints[0]);
- pt1.fromArray(linePoints[1]);
- pt2.fromArray(linePoints[2]);
- Point_default.sub(dir, pt0, pt1);
- Point_default.sub(dir2, pt2, pt1);
- var len1 = dir.len();
- var len2 = dir2.len();
- if (len1 < 1e-3 || len2 < 1e-3) {
- return;
- }
- dir.scale(1 / len1);
- dir2.scale(1 / len2);
- var angleCos = dir.dot(dir2);
- var minTurnAngleCos = Math.cos(minTurnAngle);
- if (minTurnAngleCos < angleCos) {
- var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
- tmpProjPoint.fromArray(tmpArr);
- tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));
- var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
- if (isNaN(t)) {
- return;
- }
- if (t < 0) {
- Point_default.copy(tmpProjPoint, pt1);
- } else if (t > 1) {
- Point_default.copy(tmpProjPoint, pt2);
- }
- tmpProjPoint.toArray(linePoints[1]);
- }
- }
- function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {
- if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {
- return;
- }
- maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;
- pt0.fromArray(linePoints[0]);
- pt1.fromArray(linePoints[1]);
- pt2.fromArray(linePoints[2]);
- Point_default.sub(dir, pt1, pt0);
- Point_default.sub(dir2, pt2, pt1);
- var len1 = dir.len();
- var len2 = dir2.len();
- if (len1 < 1e-3 || len2 < 1e-3) {
- return;
- }
- dir.scale(1 / len1);
- dir2.scale(1 / len2);
- var angleCos = dir.dot(surfaceNormal);
- var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);
- if (angleCos < maxSurfaceAngleCos) {
- var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
- tmpProjPoint.fromArray(tmpArr);
- var HALF_PI = Math.PI / 2;
- var angle2 = Math.acos(dir2.dot(surfaceNormal));
- var newAngle = HALF_PI + angle2 - maxSurfaceAngle;
- if (newAngle >= HALF_PI) {
- Point_default.copy(tmpProjPoint, pt2);
- } else {
- tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));
- var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
- if (isNaN(t)) {
- return;
- }
- if (t < 0) {
- Point_default.copy(tmpProjPoint, pt1);
- } else if (t > 1) {
- Point_default.copy(tmpProjPoint, pt2);
- }
- }
- tmpProjPoint.toArray(linePoints[1]);
- }
- }
- function setLabelLineState(labelLine, ignore, stateName, stateModel) {
- var isNormal = stateName === "normal";
- var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);
- stateObj.ignore = ignore;
- var smooth = stateModel.get("smooth");
- if (smooth && smooth === true) {
- smooth = 0.3;
- }
- stateObj.shape = stateObj.shape || {};
- if (smooth > 0) {
- stateObj.shape.smooth = smooth;
- }
- var styleObj = stateModel.getModel("lineStyle").getLineStyle();
- isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;
- }
- function buildLabelLinePath(path, shape) {
- var smooth = shape.smooth;
- var points = shape.points;
- if (!points) {
- return;
- }
- path.moveTo(points[0][0], points[0][1]);
- if (smooth > 0 && points.length >= 3) {
- var len1 = dist(points[0], points[1]);
- var len2 = dist(points[1], points[2]);
- if (!len1 || !len2) {
- path.lineTo(points[1][0], points[1][1]);
- path.lineTo(points[2][0], points[2][1]);
- return;
- }
- var moveLen = Math.min(len1, len2) * smooth;
- var midPoint0 = lerp([], points[1], points[0], moveLen / len1);
- var midPoint2 = lerp([], points[1], points[2], moveLen / len2);
- var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);
- path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);
- path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);
- } else {
- for (var i = 1; i < points.length; i++) {
- path.lineTo(points[i][0], points[i][1]);
- }
- }
- }
- function setLabelLineStyle(targetEl, statesModels, defaultStyle) {
- var labelLine = targetEl.getTextGuideLine();
- var label = targetEl.getTextContent();
- if (!label) {
- if (labelLine) {
- targetEl.removeTextGuideLine();
- }
- return;
- }
- var normalModel = statesModels.normal;
- var showNormal = normalModel.get("show");
- var labelIgnoreNormal = label.ignore;
- for (var i = 0; i < DISPLAY_STATES.length; i++) {
- var stateName = DISPLAY_STATES[i];
- var stateModel = statesModels[stateName];
- var isNormal = stateName === "normal";
- if (stateModel) {
- var stateShow = stateModel.get("show");
- var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);
- if (isLabelIgnored || !retrieve2(stateShow, showNormal)) {
- var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];
- if (stateObj) {
- stateObj.ignore = true;
- }
- if (!!labelLine) {
- setLabelLineState(labelLine, true, stateName, stateModel);
- }
- continue;
- }
- if (!labelLine) {
- labelLine = new Polyline_default();
- targetEl.setTextGuideLine(labelLine);
- if (!isNormal && (labelIgnoreNormal || !showNormal)) {
- setLabelLineState(labelLine, true, "normal", statesModels.normal);
- }
- if (targetEl.stateProxy) {
- labelLine.stateProxy = targetEl.stateProxy;
- }
- }
- setLabelLineState(labelLine, false, stateName, stateModel);
- }
- }
- if (labelLine) {
- defaults(labelLine.style, defaultStyle);
- labelLine.style.fill = null;
- var showAbove = normalModel.get("showAbove");
- var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};
- labelLineConfig.showAbove = showAbove || false;
- labelLine.buildPath = buildLabelLinePath;
- }
- }
- function getLabelLineStatesModels(itemModel, labelLineName) {
- labelLineName = labelLineName || "labelLine";
- var statesModels = {
- normal: itemModel.getModel(labelLineName)
- };
- for (var i = 0; i < SPECIAL_STATES.length; i++) {
- var stateName = SPECIAL_STATES[i];
- statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);
- }
- return statesModels;
- }
- export {
- createDimensions,
- prepareSeriesDataSchema,
- createSeriesData_default,
- updateLabelLinePoints,
- limitTurnAngle,
- limitSurfaceAngle,
- setLabelLineStyle,
- getLabelLineStatesModels
- };
- //# sourceMappingURL=chunk-F35ET5C4.js.map
|