evui 3.4.132 → 3.4.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/evui.umd.js CHANGED
@@ -11225,7 +11225,7 @@ $({ target: 'Number', stat: true }, {
11225
11225
  /***/ "9224":
11226
11226
  /***/ (function(module) {
11227
11227
 
11228
- module.exports = JSON.parse("{\"a\":\"3.4.132\"}");
11228
+ module.exports = JSON.parse("{\"a\":\"3.4.133\"}");
11229
11229
 
11230
11230
  /***/ }),
11231
11231
 
@@ -42099,7 +42099,7 @@ var element_line_Line = /*#__PURE__*/function () {
42099
42099
  item.hit = true;
42100
42100
  }
42101
42101
  }
42102
- } else if (typeof this.beforeFindItemIndex === 'number' && this.show && useSelectLabelOrItem) {
42102
+ } else if (typeof this.beforeFindItemIndex === 'number' && this.beforeFindItemIndex !== -1 && this.show && useSelectLabelOrItem) {
42103
42103
  item.data = gdata[this.beforeFindItemIndex];
42104
42104
  item.index = this.beforeFindItemIndex;
42105
42105
  } else {
@@ -42203,30 +42203,29 @@ var element_line_Line = /*#__PURE__*/function () {
42203
42203
  } // 두 가지 임계값 설정
42204
42204
 
42205
42205
 
42206
- var strictThreshold = avgInterval * 0.3; // 엄격한 임계값: 데이터 간격의 30%
42206
+ var threshold = Math.max(avgInterval, 1); // 1. 먼저 엄격한 임계값으로 정확한 매치 확인
42207
42207
 
42208
- var relaxedThreshold = avgInterval; // 느슨한 임계값: 데이터 간격 전체
42209
- // 1. 먼저 엄격한 임계값으로 정확한 매치 확인
42210
-
42211
- if (closestXDistance <= strictThreshold) {
42208
+ if (closestXDistance <= threshold) {
42212
42209
  // 정확히 일치하거나 매우 가까운 데이터가 있음
42213
42210
  item.data = gdata[closestIndex];
42214
42211
  item.index = closestIndex;
42215
42212
  } else {
42216
- // 2. 정확한 매치가 없을 때, 현재 X 위치 근처에 다른 유효 데이터가 있는지 확인
42217
- var hasNearbyValidData = false;
42218
-
42219
- for (var _i2 = 0; _i2 < validData.length; _i2++) {
42220
- var xDist = Math.abs(xp - validData[_i2].xp);
42221
-
42222
- if (xDist <= strictThreshold) {
42223
- hasNearbyValidData = true;
42224
- break;
42213
+ // 2. 정확한 매치가 없을 때, 현재 X 위치 근처에 다른 데이터가 있는지 확인
42214
+ var hasNearbyAnyData = false;
42215
+ var closestDistance = isLinearInterpolation ? Infinity : threshold;
42216
+ var dataSet = isLinearInterpolation ? validData : gdata;
42217
+
42218
+ for (var _i2 = 0; _i2 < dataSet.length; _i2++) {
42219
+ var xDist = Math.abs(xp - dataSet[_i2].xp);
42220
+
42221
+ if (xDist <= closestDistance) {
42222
+ hasNearbyAnyData = true;
42223
+ closestDistance = xDist;
42224
+ closestIndex = isLinearInterpolation ? dataSet[_i2].originalIndex : _i2;
42225
42225
  }
42226
- } // 3. 근처에 다른 유효 데이터가 없을 때만 느슨한 임계값 적용
42227
-
42226
+ }
42228
42227
 
42229
- if (!hasNearbyValidData && closestXDistance <= relaxedThreshold) {
42228
+ if (hasNearbyAnyData) {
42230
42229
  item.data = gdata[closestIndex];
42231
42230
  item.index = closestIndex;
42232
42231
  }
@@ -50859,6 +50858,7 @@ function inRange_inRange(number, start, end) {
50859
50858
 
50860
50859
 
50861
50860
 
50861
+
50862
50862
 
50863
50863
 
50864
50864
  var plugins_interaction_modules = {
@@ -51222,7 +51222,7 @@ var plugins_interaction_modules = {
51222
51222
  };
51223
51223
 
51224
51224
  var setSelectedLabelInfo = function setSelectedLabelInfo(targetAxis) {
51225
- var itemHitInfo = _this.getItemByPosition(offset, false);
51225
+ var _this$defaultSelectIn, _this$defaultSelectIn2, _this$defaultSelectIn3, _this$defaultSelectIn4;
51226
51226
 
51227
51227
  var _this$getLabelInfoByP2 = _this.getLabelInfoByPosition(offset, targetAxis),
51228
51228
  clickedLabelIndex = _this$getLabelInfoByP2.labelIndex;
@@ -51239,8 +51239,8 @@ var plugins_interaction_modules = {
51239
51239
  args.selected = _objectSpread2({
51240
51240
  eventTarget: 'label'
51241
51241
  }, lodash_es_cloneDeep(_this.defaultSelectInfo));
51242
- args.label = itemHitInfo.label;
51243
- args.dataIndex = itemHitInfo.maxIndex;
51242
+ args.label = (_this$defaultSelectIn = _this.defaultSelectInfo) === null || _this$defaultSelectIn === void 0 ? void 0 : (_this$defaultSelectIn2 = _this$defaultSelectIn.label) === null || _this$defaultSelectIn2 === void 0 ? void 0 : _this$defaultSelectIn2.at(0);
51243
+ args.dataIndex = (_this$defaultSelectIn3 = _this.defaultSelectInfo) === null || _this$defaultSelectIn3 === void 0 ? void 0 : (_this$defaultSelectIn4 = _this$defaultSelectIn3.dataIndex) === null || _this$defaultSelectIn4 === void 0 ? void 0 : _this$defaultSelectIn4.at(0);
51244
51244
  };
51245
51245
 
51246
51246
  var setSelectedSeriesInfo = function setSelectedSeriesInfo() {
@@ -51874,77 +51874,11 @@ var plugins_interaction_modules = {
51874
51874
  var maxsw = 0;
51875
51875
  var maxv = '';
51876
51876
  var maxg = null;
51877
- var maxSID = null; // 파이 차트는 특별한 처리가 필요
51878
-
51879
- if (this.options.type === 'pie') {
51880
- for (var ix = 0; ix < sIds.length; ix++) {
51881
- var sId = sIds[ix];
51882
- var series = this.seriesList[sId];
51883
-
51884
- if (series.findGraphData && series.show) {
51885
- var item = series.findGraphData(offset);
51886
-
51887
- if (item !== null && item !== void 0 && item.data && item.hit) {
51888
- var gdata = item.data.o;
51889
-
51890
- if (gdata !== null && gdata !== undefined) {
51891
- var formattedSeriesName = this.getFormattedTooltipLabel({
51892
- dataId: series.id,
51893
- seriesId: sId,
51894
- seriesName: series.name,
51895
- itemData: item.data
51896
- });
51897
- var sw = ctx ? ctx.measureText(formattedSeriesName).width : 1;
51898
- item.id = series.id;
51899
- item.name = formattedSeriesName;
51900
- item.axis = {
51901
- x: 0,
51902
- y: 0
51903
- };
51904
- items[sId] = item;
51905
- var formattedTxt = this.getFormattedTooltipValue({
51906
- dataId: series.id,
51907
- seriesId: sId,
51908
- seriesName: formattedSeriesName,
51909
- value: gdata,
51910
- itemData: item.data
51911
- });
51912
- item.data.formatted = formattedTxt;
51913
-
51914
- if (maxsw < sw) {
51915
- maxs = formattedSeriesName;
51916
- maxsw = sw;
51917
- }
51918
-
51919
- if (maxv.length <= "".concat(formattedTxt).length) {
51920
- maxv = "".concat(formattedTxt);
51921
- }
51922
-
51923
- if (maxg === null || maxg <= gdata) {
51924
- maxg = gdata;
51925
- maxSID = sId;
51926
- }
51927
-
51928
- hitId = sId;
51929
- }
51930
- }
51931
- }
51932
- }
51933
-
51934
- var _maxHighlight2 = maxg !== null ? [maxSID, maxg] : null;
51935
-
51936
- return {
51937
- items: items,
51938
- hitId: hitId,
51939
- maxTip: [maxs, maxv],
51940
- maxHighlight: _maxHighlight2
51941
- };
51942
- } // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
51943
-
51877
+ var maxSID = null; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
51944
51878
 
51945
51879
  var targetDataIndex = this.findClosestDataIndex(offset, sIds);
51946
51880
 
51947
- if (targetDataIndex === -1) {
51881
+ if (targetDataIndex === -1 && this.options.type !== 'pie') {
51948
51882
  return {
51949
51883
  items: items,
51950
51884
  hitId: hitId,
@@ -51958,69 +51892,65 @@ var plugins_interaction_modules = {
51958
51892
  return _this4.seriesList[sId].type === 'bar';
51959
51893
  });
51960
51894
 
51961
- for (var _ix = 0; _ix < sIds.length; _ix++) {
51962
- var _sId = sIds[_ix];
51963
- var _series = this.seriesList[_sId];
51895
+ for (var ix = 0; ix < sIds.length; ix++) {
51896
+ var sId = sIds[ix];
51897
+ var series = this.seriesList[sId];
51964
51898
 
51965
- if (_series.findGraphData && _series.show) {
51899
+ if (series.findGraphData && series.show) {
51966
51900
  // 특정 데이터 인덱스로 데이터 요청
51967
- var _item = _series.findGraphData(offset, isHorizontal, targetDataIndex, !allSeriesIsBar);
51901
+ var item = series.findGraphData(offset, isHorizontal, targetDataIndex, !allSeriesIsBar);
51968
51902
 
51969
- if (_item !== null && _item !== void 0 && _item.data) {
51970
- var _gdata = void 0;
51903
+ if (item !== null && item !== void 0 && item.data) {
51904
+ var gdata = void 0;
51971
51905
 
51972
- if (_item.data.o === null && _series.interpolation !== 'zero') {
51973
- if (!_series.isExistGrp) {
51974
- _gdata = isHorizontal ? _item.data.x : _item.data.y;
51906
+ if (item.data.o === null && series.interpolation !== 'zero') {
51907
+ if (!series.isExistGrp) {
51908
+ gdata = isHorizontal ? item.data.x : item.data.y;
51975
51909
  }
51976
- } else if (!isNaN(_item.data.o)) {
51977
- _gdata = _item.data.o;
51910
+ } else if (!isNaN(item.data.o)) {
51911
+ gdata = item.data.o;
51978
51912
  }
51979
51913
 
51980
- if (_gdata !== null && _gdata !== undefined) {
51981
- var _formattedSeriesName = this.getFormattedTooltipLabel({
51982
- dataId: _series.id,
51983
- seriesId: _sId,
51984
- seriesName: _series.name,
51985
- itemData: _item.data
51914
+ if (gdata !== null && gdata !== undefined) {
51915
+ var formattedSeriesName = this.getFormattedTooltipLabel({
51916
+ dataId: series.id,
51917
+ seriesId: sId,
51918
+ seriesName: series.name,
51919
+ itemData: item.data
51986
51920
  });
51987
-
51988
- var _sw = ctx ? ctx.measureText(_formattedSeriesName).width : 1;
51989
-
51990
- _item.id = _series.id;
51991
- _item.name = _formattedSeriesName;
51992
- _item.axis = {
51993
- x: _series.xAxisIndex,
51994
- y: _series.yAxisIndex
51921
+ var sw = ctx ? ctx.measureText(formattedSeriesName).width : 1;
51922
+ item.id = series.id;
51923
+ item.name = formattedSeriesName;
51924
+ item.axis = {
51925
+ x: series.xAxisIndex,
51926
+ y: series.yAxisIndex
51995
51927
  };
51996
- items[_sId] = _item;
51997
-
51998
- var _formattedTxt = this.getFormattedTooltipValue({
51999
- dataId: _series.id,
52000
- seriesId: _sId,
52001
- seriesName: _formattedSeriesName,
52002
- value: _gdata,
52003
- itemData: _item.data
51928
+ items[sId] = item;
51929
+ var formattedTxt = this.getFormattedTooltipValue({
51930
+ dataId: series.id,
51931
+ seriesId: sId,
51932
+ seriesName: formattedSeriesName,
51933
+ value: gdata,
51934
+ itemData: item.data
52004
51935
  });
51936
+ item.data.formatted = formattedTxt;
52005
51937
 
52006
- _item.data.formatted = _formattedTxt;
52007
-
52008
- if (maxsw < _sw) {
52009
- maxs = _formattedSeriesName;
52010
- maxsw = _sw;
51938
+ if (maxsw < sw) {
51939
+ maxs = formattedSeriesName;
51940
+ maxsw = sw;
52011
51941
  }
52012
51942
 
52013
- if (maxv.length <= "".concat(_formattedTxt).length) {
52014
- maxv = "".concat(_formattedTxt);
51943
+ if (maxv.length <= "".concat(formattedTxt).length) {
51944
+ maxv = "".concat(formattedTxt);
52015
51945
  }
52016
51946
 
52017
- if (maxg === null || maxg <= _gdata) {
52018
- maxg = _gdata;
52019
- maxSID = _sId;
51947
+ if (maxg === null || maxg <= gdata) {
51948
+ maxg = gdata;
51949
+ maxSID = sId;
52020
51950
  }
52021
51951
 
52022
- if (_item.hit) {
52023
- hitId = _sId;
51952
+ if (item.hit) {
51953
+ hitId = sId;
52024
51954
  }
52025
51955
  }
52026
51956
  }
@@ -52045,16 +51975,17 @@ var plugins_interaction_modules = {
52045
51975
  */
52046
51976
  findClosestDataIndex: function findClosestDataIndex(offset, sIds) {
52047
51977
  var _this5 = this,
52048
- _this$seriesList$refe;
51978
+ _this$seriesList$refe,
51979
+ _this$seriesList,
51980
+ _this$seriesList$refe2,
51981
+ _this$seriesList$refe3;
52049
51982
 
52050
51983
  var _offset = _slicedToArray(offset, 2),
52051
51984
  xp = _offset[0],
52052
51985
  yp = _offset[1];
52053
51986
 
52054
51987
  var isHorizontal = !!this.options.horizontal;
52055
- var mousePos = isHorizontal ? yp : xp;
52056
- var closestDistance = Infinity;
52057
- var closestIndex = -1; // 첫 번째 표시 중인 시리즈를 기준으로 라벨 위치 확인
51988
+ var mousePos = isHorizontal ? yp : xp; // 첫 번째 표시 중인 시리즈를 기준으로 라벨 위치 확인
52058
51989
 
52059
51990
  var referenceSeries = sIds.find(function (sId) {
52060
51991
  var _this5$seriesList$sId;
@@ -52066,19 +51997,56 @@ var plugins_interaction_modules = {
52066
51997
  return -1;
52067
51998
  }
52068
51999
 
52069
- var referenceData = this.seriesList[referenceSeries].data; // 라벨에서 가장 가까운 찾기
52000
+ var referenceData = this.seriesList[referenceSeries].data; // 데이터 간격 계산 - 모든 데이터(null 포함)의 평균 간격 사용
52001
+
52002
+ var avgInterval = 50;
52003
+
52004
+ if (referenceData.length > 1) {
52005
+ var intervals = [];
52006
+
52007
+ for (var i = 1; i < referenceData.length; i++) {
52008
+ var prevPoint = referenceData[i - 1];
52009
+ var currPoint = referenceData[i];
52010
+
52011
+ if (prevPoint && currPoint) {
52012
+ var prevPos = void 0;
52013
+ var currPos = void 0;
52014
+
52015
+ if (isHorizontal) {
52016
+ prevPos = prevPoint.h ? prevPoint.yp + prevPoint.h / 2 : prevPoint.yp;
52017
+ currPos = currPoint.h ? currPoint.yp + currPoint.h / 2 : currPoint.yp;
52018
+ } else {
52019
+ prevPos = prevPoint.w ? prevPoint.xp + prevPoint.w / 2 : prevPoint.xp;
52020
+ currPos = currPoint.w ? currPoint.xp + currPoint.w / 2 : currPoint.xp;
52021
+ }
52022
+
52023
+ if (prevPos !== null && currPos !== null) {
52024
+ intervals.push(Math.abs(currPos - prevPos));
52025
+ }
52026
+ }
52027
+ }
52028
+
52029
+ if (intervals.length > 0) {
52030
+ avgInterval = intervals.reduce(function (a, b) {
52031
+ return a + b;
52032
+ }, 0) / intervals.length;
52033
+ }
52034
+ }
52035
+
52036
+ var closestDistance = (_this$seriesList = this.seriesList) !== null && _this$seriesList !== void 0 && (_this$seriesList$refe2 = _this$seriesList[referenceSeries]) !== null && _this$seriesList$refe2 !== void 0 && (_this$seriesList$refe3 = _this$seriesList$refe2.useLinearInterpolation) !== null && _this$seriesList$refe3 !== void 0 && _this$seriesList$refe3.call(_this$seriesList$refe2) ? Infinity : avgInterval;
52037
+ var closestIndex = -1; // 각 라벨에서 가장 가까운 것 찾기
52070
52038
 
52071
- var _loop = function _loop(i) {
52039
+ var _loop = function _loop(_i) {
52072
52040
  // 이 라벨에 유효한 데이터가 있는 시리즈가 하나 이상 있는지 확인
52073
52041
  var hasValidData = sIds.some(function (sId) {
52074
- var _series$data, _series$data$i, _series$data2, _series$data2$i;
52042
+ var _series$data, _series$data$_i, _series$data2, _series$data2$_i;
52075
52043
 
52076
52044
  var series = _this5.seriesList[sId];
52077
- return (series === null || series === void 0 ? void 0 : series.show) && ((_series$data = series.data) === null || _series$data === void 0 ? void 0 : (_series$data$i = _series$data[i]) === null || _series$data$i === void 0 ? void 0 : _series$data$i.o) !== null && ((_series$data2 = series.data) === null || _series$data2 === void 0 ? void 0 : (_series$data2$i = _series$data2[i]) === null || _series$data2$i === void 0 ? void 0 : _series$data2$i.o) !== undefined;
52045
+ return (series === null || series === void 0 ? void 0 : series.show) && ((_series$data = series.data) === null || _series$data === void 0 ? void 0 : (_series$data$_i = _series$data[_i]) === null || _series$data$_i === void 0 ? void 0 : _series$data$_i.o) !== null && ((_series$data2 = series.data) === null || _series$data2 === void 0 ? void 0 : (_series$data2$_i = _series$data2[_i]) === null || _series$data2$_i === void 0 ? void 0 : _series$data2$_i.o) !== undefined;
52078
52046
  });
52079
52047
 
52080
52048
  if (hasValidData) {
52081
- var point = referenceData[i];
52049
+ var point = referenceData[_i];
52082
52050
 
52083
52051
  if (point) {
52084
52052
  // 라벨 위치 계산
@@ -52095,15 +52063,15 @@ var plugins_interaction_modules = {
52095
52063
 
52096
52064
  if (distance < closestDistance) {
52097
52065
  closestDistance = distance;
52098
- closestIndex = i;
52066
+ closestIndex = _i;
52099
52067
  }
52100
52068
  }
52101
52069
  }
52102
52070
  }
52103
52071
  };
52104
52072
 
52105
- for (var i = 0; i < referenceData.length; i++) {
52106
- _loop(i);
52073
+ for (var _i = 0; _i < referenceData.length; _i++) {
52074
+ _loop(_i);
52107
52075
  }
52108
52076
 
52109
52077
  return closestIndex;
@@ -52398,10 +52366,10 @@ var plugins_interaction_modules = {
52398
52366
  * @returns after {number[]} '[0, 1 ...]' result Label index List
52399
52367
  */
52400
52368
  regulateSelectedLabelInfo: function regulateSelectedLabelInfo(labelIndex, targetAxis) {
52401
- var _this$options$selectL2, _this$options10, _this$defaultSelectIn;
52369
+ var _this$options$selectL2, _this$options10, _this$defaultSelectIn5;
52402
52370
 
52403
52371
  var option = (_this$options$selectL2 = (_this$options10 = this.options) === null || _this$options10 === void 0 ? void 0 : _this$options10.selectLabel) !== null && _this$options$selectL2 !== void 0 ? _this$options$selectL2 : {};
52404
- var before = targetAxis === null || ((_this$defaultSelectIn = this.defaultSelectInfo) === null || _this$defaultSelectIn === void 0 ? void 0 : _this$defaultSelectIn.targetAxis) === targetAxis ? _objectSpread2(_objectSpread2({}, this.defaultSelectInfo), {}, {
52372
+ var before = targetAxis === null || ((_this$defaultSelectIn5 = this.defaultSelectInfo) === null || _this$defaultSelectIn5 === void 0 ? void 0 : _this$defaultSelectIn5.targetAxis) === targetAxis ? _objectSpread2(_objectSpread2({}, this.defaultSelectInfo), {}, {
52405
52373
  targetAxis: targetAxis
52406
52374
  }) : {
52407
52375
  dataIndex: [],
@@ -52434,10 +52402,10 @@ var plugins_interaction_modules = {
52434
52402
  * @returns after {number[]} '[0, 1 ...]' result series Id List
52435
52403
  */
52436
52404
  updateSelectedSeriesInfo: function updateSelectedSeriesInfo(seriesId, keepSelection) {
52437
- var _this$options$selectS, _this$options11, _this$defaultSelectIn2;
52405
+ var _this$options$selectS, _this$options11, _this$defaultSelectIn6;
52438
52406
 
52439
52407
  var option = (_this$options$selectS = (_this$options11 = this.options) === null || _this$options11 === void 0 ? void 0 : _this$options11.selectSeries) !== null && _this$options$selectS !== void 0 ? _this$options$selectS : {};
52440
- var before = (_this$defaultSelectIn2 = this.defaultSelectInfo) !== null && _this$defaultSelectIn2 !== void 0 ? _this$defaultSelectIn2 : {
52408
+ var before = (_this$defaultSelectIn6 = this.defaultSelectInfo) !== null && _this$defaultSelectIn6 !== void 0 ? _this$defaultSelectIn6 : {
52441
52409
  seriesId: []
52442
52410
  };
52443
52411