evui 3.4.116 → 3.4.118

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.
@@ -11171,7 +11171,7 @@ module.exports = exports;
11171
11171
  /***/ "9224":
11172
11172
  /***/ (function(module) {
11173
11173
 
11174
- module.exports = JSON.parse("{\"a\":\"3.4.116\"}");
11174
+ module.exports = JSON.parse("{\"a\":\"3.4.118\"}");
11175
11175
 
11176
11176
  /***/ }),
11177
11177
 
@@ -38817,7 +38817,21 @@ var modules = {
38817
38817
  } else {
38818
38818
  seriesIDs.forEach(function (seriesID) {
38819
38819
  var series = _this.seriesList[seriesID];
38820
- var sData = data[seriesID];
38820
+ var hasPassingValueInData = data[seriesID].some(function (item) {
38821
+ return item === series.passingValue;
38822
+ });
38823
+ series.hasPassingValueInData = hasPassingValueInData;
38824
+ var sData = data[seriesID].map(function (item) {
38825
+ if (series.interpolation === 'zero' && !item) {
38826
+ return 0;
38827
+ }
38828
+
38829
+ if (item === series.passingValue) {
38830
+ return null;
38831
+ }
38832
+
38833
+ return item;
38834
+ });
38821
38835
 
38822
38836
  if (series && sData) {
38823
38837
  if (series.isExistGrp && series.stackIndex && !series.isOverlapping) {
@@ -39211,7 +39225,9 @@ var modules = {
39211
39225
  * @param {array} bsIds stacked base data ID List
39212
39226
  * @param {number} sIdx series ordered index
39213
39227
  *
39214
- * @returns {array} data for each series
39228
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39229
+ *
39230
+ * @returns {ChartSeriesDataPoint[]} data for each series
39215
39231
  */
39216
39232
  addSeriesStackDS: function addSeriesStackDS(data, label, bsIds) {
39217
39233
  var _this4 = this;
@@ -39263,8 +39279,7 @@ var modules = {
39263
39279
  if (oData != null) {
39264
39280
  gdata = bdata + oData;
39265
39281
  } else {
39266
- gdata = null;
39267
- bdata = 0;
39282
+ gdata = odata;
39268
39283
  }
39269
39284
  } else {
39270
39285
  bdata = 0;
@@ -39283,7 +39298,9 @@ var modules = {
39283
39298
  * @param {object} label chart label
39284
39299
  * @param {boolean} isBase is Base(bottommost) series at stack chart
39285
39300
  *
39286
- * @returns {array} data for each series
39301
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39302
+ *
39303
+ * @returns {ChartSeriesDataPoint[]} data for each series
39287
39304
  */
39288
39305
  addSeriesDS: function addSeriesDS(data, label, isBase) {
39289
39306
  var _this$seriesList$Obje,
@@ -39360,7 +39377,10 @@ var modules = {
39360
39377
  * @param {object} ldata label data (x-axis value for vertical chart)
39361
39378
  * @param {object} odata original data (without stacked value)
39362
39379
  * @param {object} bdata base data (stacked value)
39363
- * @returns {object} data for each graph point
39380
+ *
39381
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39382
+ *
39383
+ * @returns {ChartSeriesDataPoint} data for each graph point
39364
39384
  */
39365
39385
  addData: function addData(gdata, ldata) {
39366
39386
  var _gdataColor;
@@ -39936,12 +39956,18 @@ var modules = {
39936
39956
  return result;
39937
39957
  },
39938
39958
 
39959
+ /**
39960
+ * @typedef {Object} LabelInfoResult
39961
+ * @property {number} labelIndex - 선택된 라벨의 인덱스
39962
+ * @property {object} hitInfo - 해당 위치에서의 히트 정보 (getItemByPosition 반환값)
39963
+ */
39964
+
39939
39965
  /**
39940
39966
  * Find label info by position x and y
39941
39967
  * @param {array} offset position x and y
39942
39968
  * @param {string | null} targetAxis target Axis Location ('xAxis', 'yAxis' , null)
39943
39969
  *
39944
- * @returns {object} clicked label information
39970
+ * @returns {LabelInfoResult} clicked label information
39945
39971
  */
39946
39972
  getLabelInfoByPosition: function getLabelInfoByPosition(offset, targetAxis) {
39947
39973
  var _Object$values$sort$, _Object$values$sort$2, _scrollbarOpt, _scale, _scale$labels, _scale3, _scale3$labels;
@@ -40048,11 +40074,14 @@ var modules = {
40048
40074
 
40049
40075
  /**
40050
40076
  * Get current mouse target label value in label array or calculated using mouse position
40077
+ *
40078
+ * @typedef {import('./index').MouseLabelValue} MouseLabelValue
40079
+ *
40051
40080
  * @param {string} targetAxis target Axis Location ('xAxis', 'yAxis')
40052
40081
  * @param {array} offset return value from getMousePosition()
40053
40082
  * @param {number} labelIndex
40054
40083
  *
40055
- * @returns {object} current mouse target label value
40084
+ * @returns {MouseLabelValue} current mouse target label value
40056
40085
  */
40057
40086
  getCurMouseLabelVal: function getCurMouseLabelVal(targetAxis, offset, labelIndex) {
40058
40087
  var _this9 = this;
@@ -41082,6 +41111,57 @@ var defaultsDeep = _baseRest(function(args) {
41082
41111
 
41083
41112
  /* harmony default export */ var lodash_es_defaultsDeep = (defaultsDeep);
41084
41113
 
41114
+ // CONCATENATED MODULE: ./node_modules/lodash-es/isNil.js
41115
+ /**
41116
+ * Checks if `value` is `null` or `undefined`.
41117
+ *
41118
+ * @static
41119
+ * @memberOf _
41120
+ * @since 4.0.0
41121
+ * @category Lang
41122
+ * @param {*} value The value to check.
41123
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
41124
+ * @example
41125
+ *
41126
+ * _.isNil(null);
41127
+ * // => true
41128
+ *
41129
+ * _.isNil(void 0);
41130
+ * // => true
41131
+ *
41132
+ * _.isNil(NaN);
41133
+ * // => false
41134
+ */
41135
+ function isNil(value) {
41136
+ return value == null;
41137
+ }
41138
+
41139
+ /* harmony default export */ var lodash_es_isNil = (isNil);
41140
+
41141
+ // CONCATENATED MODULE: ./node_modules/lodash-es/isUndefined.js
41142
+ /**
41143
+ * Checks if `value` is `undefined`.
41144
+ *
41145
+ * @static
41146
+ * @since 0.1.0
41147
+ * @memberOf _
41148
+ * @category Lang
41149
+ * @param {*} value The value to check.
41150
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
41151
+ * @example
41152
+ *
41153
+ * _.isUndefined(void 0);
41154
+ * // => true
41155
+ *
41156
+ * _.isUndefined(null);
41157
+ * // => false
41158
+ */
41159
+ function isUndefined(value) {
41160
+ return value === undefined;
41161
+ }
41162
+
41163
+ /* harmony default export */ var lodash_es_isUndefined = (isUndefined);
41164
+
41085
41165
  // CONCATENATED MODULE: ./src/components/chart/helpers/helpers.constant.js
41086
41166
  var AXIS_UNITS = {
41087
41167
  x: {
@@ -41129,7 +41209,8 @@ var LINE_OPTION = {
41129
41209
  fill: false,
41130
41210
  fillOpacity: 0.4,
41131
41211
  showLegend: true,
41132
- passingValue: null
41212
+ passingValue: null,
41213
+ interpolation: 'none'
41133
41214
  };
41134
41215
  var BAR_OPTION = {
41135
41216
  show: true,
@@ -41316,13 +41397,13 @@ var TIME_INTERVALS = {
41316
41397
  /* harmony default export */ var helpers_canvas = ({
41317
41398
  /**
41318
41399
  * Calculate X position
41319
- * @param {any} value graph value
41400
+ * @param {number|null|undefined} value graph value
41320
41401
  * @param {number} min min value
41321
41402
  * @param {number} max max value
41322
41403
  * @param {number} area height for axis
41323
41404
  * @param {number} startPoint startPoint
41324
41405
  *
41325
- * @returns {any} position
41406
+ * @returns {number|null} position
41326
41407
  */
41327
41408
  calculateX: function calculateX(value, min, max, area) {
41328
41409
  var startPoint = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
@@ -41362,13 +41443,13 @@ var TIME_INTERVALS = {
41362
41443
 
41363
41444
  /**
41364
41445
  * Calculate Y position
41365
- * @param {any} value graph value
41446
+ * @param {number|null|undefined} value graph value
41366
41447
  * @param {number} min min value
41367
41448
  * @param {number} max max value
41368
41449
  * @param {number} area height for axis
41369
41450
  * @param {number} startPoint startPoint
41370
41451
  *
41371
- * @returns {any} position
41452
+ * @returns {number|null} position
41372
41453
  */
41373
41454
  calculateY: function calculateY(value, min, max, area) {
41374
41455
  var startPoint = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
@@ -41616,7 +41697,6 @@ var TIME_INTERVALS = {
41616
41697
 
41617
41698
 
41618
41699
 
41619
-
41620
41700
  var element_line_Line = /*#__PURE__*/function () {
41621
41701
  function Line(sId, opt, sIdx) {
41622
41702
  var _this = this;
@@ -41653,6 +41733,8 @@ var element_line_Line = /*#__PURE__*/function () {
41653
41733
  lineWidth: 2
41654
41734
  }
41655
41735
  };
41736
+ /** @type {import('../model/index').ChartSeriesDataPoint[]} */
41737
+
41656
41738
  this.data = [];
41657
41739
  this.beforeMouseXp = 0;
41658
41740
  this.beforeMouseYp = 0;
@@ -41660,17 +41742,33 @@ var element_line_Line = /*#__PURE__*/function () {
41660
41742
  this.size = {
41661
41743
  comboOffset: 0
41662
41744
  };
41663
- this.usePassingValue = !!this.passingValue;
41664
41745
  }
41665
- /**
41666
- * Draw series data
41667
- * @param {object} param object for drawing series data
41668
- *
41669
- * @returns {undefined}
41670
- */
41671
-
41672
41746
 
41673
41747
  _createClass(Line, [{
41748
+ key: "useLinearInterpolation",
41749
+ value: function useLinearInterpolation() {
41750
+ return this.interpolation === 'linear' || this.interpolation === 'none' && !!this.passingValue && this.hasPassingValueInData;
41751
+ }
41752
+ /**
41753
+ * @typedef {Object} LineDrawParam
41754
+ * @property {CanvasRenderingContext2D} ctx - 캔버스 렌더링 컨텍스트
41755
+ * @property {object} chartRect - 차트 영역 정보
41756
+ * @property {object} labelOffset - 라벨 오프셋 정보
41757
+ * @property {object} axesSteps - 축 스텝 정보
41758
+ * @property {object} [selectLabel] - 선택된 라벨 정보
41759
+ * @property {object} [selectSeries] - 선택된 시리즈 정보
41760
+ * @property {object} [legendHitInfo] - 범례 히트 정보
41761
+ * @property {boolean} [isBrush] - 브러시 사용 여부
41762
+ */
41763
+
41764
+ /**
41765
+ * Draw series data
41766
+ * @param {LineDrawParam} param object for drawing series data
41767
+ *
41768
+ * @returns {undefined}
41769
+ */
41770
+
41771
+ }, {
41674
41772
  key: "draw",
41675
41773
  value: function draw(param) {
41676
41774
  var _selectLabel$selected,
@@ -41733,8 +41831,7 @@ var element_line_Line = /*#__PURE__*/function () {
41733
41831
  }
41734
41832
 
41735
41833
  var endPoint = chartRect.y2 - labelOffset.bottom;
41736
- var x;
41737
- var y;
41834
+ var isLinearInterpolation = this.useLinearInterpolation();
41738
41835
  var barAreaByCombo = 0;
41739
41836
  var minmaxX = axesSteps.x[this.xAxisIndex];
41740
41837
  var minmaxY = axesSteps.y[this.yAxisIndex];
@@ -41759,51 +41856,40 @@ var element_line_Line = /*#__PURE__*/function () {
41759
41856
  }; // draw line
41760
41857
 
41761
41858
 
41762
- var needCutoff = false;
41763
- this.data.reduce(function (prev, curr) {
41764
- x = getXPos(curr.x);
41765
- y = getYPos(curr.y);
41859
+ var prevValid;
41860
+ this.data.forEach(function (curr) {
41861
+ var _prevValid, _prevValid2;
41766
41862
 
41767
- if (x !== null) {
41768
- x += helpers_util.aliasPixel(x);
41769
- }
41863
+ var x = getXPos(curr.x);
41864
+ var y = getYPos(curr.y);
41770
41865
 
41771
- if (_this2.usePassingValue) {
41772
- if (curr.o === _this2.passingValue) {
41773
- y = getYPos(prev.y);
41866
+ if (_this2.isExistGrp && isLinearInterpolation && curr.o === null) {
41867
+ var _curr$b;
41774
41868
 
41775
- if (prev.o === null) {
41776
- needCutoff = true;
41777
- }
41869
+ y = getYPos((_curr$b = curr.b) !== null && _curr$b !== void 0 ? _curr$b : 0);
41870
+ }
41778
41871
 
41779
- if (_this2.isExistGrp && !needCutoff) {
41780
- var _curr$b;
41872
+ if (x !== null) {
41873
+ x += helpers_util.aliasPixel(x);
41874
+ }
41781
41875
 
41782
- y = getYPos((_curr$b = curr.b) !== null && _curr$b !== void 0 ? _curr$b : 0);
41783
- ctx.lineTo(x, y);
41784
- }
41876
+ curr.xp = x;
41877
+ curr.yp = y;
41785
41878
 
41786
- curr.xp = x;
41787
- curr.yp = y;
41788
- return curr;
41879
+ if (isLinearInterpolation && curr.o === null) {
41880
+ if (!_this2.isExistGrp) {
41881
+ return;
41789
41882
  }
41790
41883
  }
41791
41884
 
41792
- var isNullValue = helpers_util.isNullOrUndefined(prev.o) || helpers_util.isNullOrUndefined(curr.o) || helpers_util.isNullOrUndefined(curr.x) || helpers_util.isNullOrUndefined(curr.y);
41793
-
41794
- if (isNullValue || needCutoff) {
41885
+ if (lodash_es_isNil((_prevValid = prevValid) === null || _prevValid === void 0 ? void 0 : _prevValid.y) && !_this2.isExistGrp || !isLinearInterpolation && (lodash_es_isNil((_prevValid2 = prevValid) === null || _prevValid2 === void 0 ? void 0 : _prevValid2.y) || lodash_es_isNil(curr.o))) {
41795
41886
  ctx.moveTo(x, y);
41796
- needCutoff = false;
41797
41887
  } else {
41798
41888
  ctx.lineTo(x, y);
41799
41889
  }
41800
41890
 
41801
- curr.xp = x; // eslint-disable-line
41802
-
41803
- curr.yp = y; // eslint-disable-line
41804
-
41805
- return curr;
41806
- }, this.data[0]);
41891
+ prevValid = curr;
41892
+ });
41807
41893
  ctx.stroke();
41808
41894
 
41809
41895
  if (this.segments) {
@@ -41843,20 +41929,22 @@ var element_line_Line = /*#__PURE__*/function () {
41843
41929
  var valueArray = this.data.map(function (item) {
41844
41930
  return item === null || item === void 0 ? void 0 : item.o;
41845
41931
  });
41932
+ /** @type {Array<[number, number]>} */
41933
+
41846
41934
  var needFillDataIndexList = [];
41847
41935
 
41848
41936
  for (var i = 0; i < valueArray.length + 1; i++) {
41849
- if (helpers_util.isNullOrUndefined(valueArray[i])) {
41937
+ if (isLinearInterpolation && lodash_es_isUndefined(valueArray[i]) || !isLinearInterpolation && lodash_es_isNil(valueArray[i])) {
41850
41938
  if (start !== null && end !== null) {
41851
41939
  var temp = valueArray.slice(start, i);
41852
41940
  var lastNormalValueIndex = temp.findLastIndex(function (item) {
41853
- return item !== helpers_util.isNullOrUndefined(item) && item !== _this2.passingValue;
41941
+ return !lodash_es_isNil(item) && item !== null;
41854
41942
  });
41855
41943
  needFillDataIndexList.push([start, start + lastNormalValueIndex]);
41856
41944
  start = null;
41857
41945
  end = null;
41858
41946
  }
41859
- } else if (valueArray[i] === this.passingValue) {
41947
+ } else if (isLinearInterpolation && valueArray[i] === null) {
41860
41948
  end = i;
41861
41949
  } else {
41862
41950
  start = start === null ? i : start;
@@ -41886,7 +41974,7 @@ var element_line_Line = /*#__PURE__*/function () {
41886
41974
 
41887
41975
  if (ix === startIndex) {
41888
41976
  ctx.moveTo(currData.xp, currData.yp);
41889
- } else if (_this2.isExistGrp || _this2.passingValue !== currData.o) {
41977
+ } else if (_this2.isExistGrp || currData.o !== null) {
41890
41978
  ctx.lineTo(currData.xp, currData.yp);
41891
41979
  }
41892
41980
 
@@ -41912,14 +42000,19 @@ var element_line_Line = /*#__PURE__*/function () {
41912
42000
  ctx.strokeStyle = helpers_util.colorStringToRgba(mainColor, mainColorOpacity);
41913
42001
  var focusStyle = helpers_util.colorStringToRgba(pointFillColor, 1);
41914
42002
  var blurStyle = helpers_util.colorStringToRgba(pointFillColor, pointFillColorOpacity);
42003
+ var isLinearSingle = this.interpolation === 'linear' && this.data.filter(function (item) {
42004
+ return item.o !== null;
42005
+ }).length === 1;
41915
42006
  this.data.forEach(function (curr, ix) {
41916
42007
  var _this2$data, _this2$data2;
41917
42008
 
41918
- if (curr.xp === null || curr.yp === null || curr.o === _this2.passingValue) {
42009
+ if (curr.xp === null || curr.yp === null || curr.o === null) {
41919
42010
  return;
41920
42011
  }
41921
42012
 
41922
- var isSingle = helpers_util.isNullOrUndefined((_this2$data = _this2.data[ix - 1]) === null || _this2$data === void 0 ? void 0 : _this2$data.o) && helpers_util.isNullOrUndefined((_this2$data2 = _this2.data[ix + 1]) === null || _this2$data2 === void 0 ? void 0 : _this2$data2.o);
42013
+ var prevData = (_this2$data = _this2.data[ix - 1]) === null || _this2$data === void 0 ? void 0 : _this2$data.o;
42014
+ var nextData = (_this2$data2 = _this2.data[ix + 1]) === null || _this2$data2 === void 0 ? void 0 : _this2$data2.o;
42015
+ var isSingle = !isLinearInterpolation && lodash_es_isNil(prevData) && lodash_es_isNil(nextData) || isLinearSingle;
41923
42016
  var isSelectedLabel = selectedLabelIndexList.includes(ix);
41924
42017
 
41925
42018
  if (_this2.point || isSingle || isSelectedLabel) {
@@ -41950,7 +42043,7 @@ var element_line_Line = /*#__PURE__*/function () {
41950
42043
  o = gdata.o;
41951
42044
  ctx.save();
41952
42045
 
41953
- if (xp !== null && yp !== null && o !== this.passingValue && this.pointHighlight) {
42046
+ if (xp !== null && yp !== null && o !== null && this.pointHighlight) {
41954
42047
  ctx.strokeStyle = helpers_util.colorStringToRgba(this.color, 0);
41955
42048
  ctx.fillStyle = helpers_util.colorStringToRgba(this.color, this.highlight.maxShadowOpacity);
41956
42049
  helpers_canvas.drawPoint(ctx, this.pointStyle, this.highlight.maxShadowSize, xp, yp);
@@ -41988,6 +42081,7 @@ var element_line_Line = /*#__PURE__*/function () {
41988
42081
  return !helpers_util.isNullOrUndefined(data.x);
41989
42082
  });
41990
42083
  var SPARE_XP = 0.5;
42084
+ var isLinearInterpolation = this.useLinearInterpolation();
41991
42085
 
41992
42086
  if (gdata !== null && gdata !== void 0 && gdata.length) {
41993
42087
  if (typeof dataIndex === 'number' && this.show) {
@@ -42071,7 +42165,7 @@ var element_line_Line = /*#__PURE__*/function () {
42071
42165
  }
42072
42166
  }
42073
42167
 
42074
- if (this.usePassingValue && (item === null || item === void 0 ? void 0 : (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.o) === this.passingValue) {
42168
+ if (isLinearInterpolation && (item === null || item === void 0 ? void 0 : (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.o) === null) {
42075
42169
  item.data = null;
42076
42170
  }
42077
42171
 
@@ -42341,16 +42435,29 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42341
42435
  value: function defaultScatterDraw(param) {
42342
42436
  var _this2 = this;
42343
42437
 
42344
- var ctx = param.ctx;
42438
+ var ctx = param.ctx,
42439
+ axesSteps = param.axesSteps,
42440
+ duple = param.duple,
42441
+ legendHitInfo = param.legendHitInfo;
42442
+ var minmaxY = axesSteps.y[this.yAxisIndex];
42345
42443
  this.data.forEach(function (item, idx) {
42346
- _this2.calcItem(item, param);
42444
+ var shouldDraw = legendHitInfo ? legendHitInfo.sId === _this2.sId : !duple.has("".concat(item.x).concat(item.y));
42445
+
42446
+ if (shouldDraw) {
42447
+ if (!duple.has("".concat(item.x).concat(item.y))) {
42448
+ duple.add("".concat(item.x).concat(item.y));
42449
+ }
42347
42450
 
42348
- if (item.xp !== null && item.yp !== null) {
42349
- var color = item.dataColor || _this2.color;
42350
- ctx.strokeStyle = helpers_util.colorStringToRgba(color, _this2.getOpacity(param, color, idx));
42351
- var pointFillColor = item.dataColor || _this2.pointFill;
42352
- ctx.fillStyle = helpers_util.colorStringToRgba(pointFillColor, _this2.getOpacity(param, pointFillColor, idx));
42353
- helpers_canvas.drawPoint(ctx, _this2.pointStyle, _this2.pointSize, item.xp, item.yp);
42451
+ _this2.calcItem(item, param);
42452
+
42453
+ if (item.xp !== null && item.yp !== null) {
42454
+ var overflowColor = item.y > minmaxY.graphMax && _this2.overflowColor;
42455
+ var color = overflowColor || item.dataColor || _this2.color;
42456
+ ctx.strokeStyle = helpers_util.colorStringToRgba(color, _this2.getOpacity(param, color, idx));
42457
+ var pointFillColor = item.dataColor || _this2.pointFill;
42458
+ ctx.fillStyle = helpers_util.colorStringToRgba(pointFillColor, _this2.getOpacity(param, pointFillColor, idx));
42459
+ helpers_canvas.drawPoint(ctx, _this2.pointStyle, _this2.pointSize, item.xp, item.yp);
42460
+ }
42354
42461
  }
42355
42462
  });
42356
42463
  }
@@ -42366,7 +42473,8 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42366
42473
  value: function realTimeScatterDraw(param) {
42367
42474
  var ctx = param.ctx,
42368
42475
  axesSteps = param.axesSteps,
42369
- duple = param.duple;
42476
+ duple = param.duple,
42477
+ legendHitInfo = param.legendHitInfo;
42370
42478
  var minmaxY = axesSteps.y[this.yAxisIndex];
42371
42479
  var pointStyle = typeof this.pointStyle === 'string' ? this.pointStyle : this.pointStyle.value;
42372
42480
  var pointSize = typeof this.pointSize === 'number' ? this.pointSize : this.pointSize.value;
@@ -42378,17 +42486,23 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42378
42486
  var _this$data$this$sId2, _this$data$this$sId2$, _this$data$this$sId3, _this$data$this$sId3$;
42379
42487
 
42380
42488
  var item = (_this$data$this$sId3 = this.data[this.sId]) === null || _this$data$this$sId3 === void 0 ? void 0 : (_this$data$this$sId3$ = _this$data$this$sId3.dataGroup[i]) === null || _this$data$this$sId3$ === void 0 ? void 0 : _this$data$this$sId3$.data[j];
42489
+ var shouldDraw = legendHitInfo ? legendHitInfo.sId === this.sId : !duple.has("".concat(item.x).concat(item.y));
42490
+
42491
+ if (shouldDraw) {
42492
+ if (!duple.has("".concat(item.x).concat(item.y))) {
42493
+ duple.add("".concat(item.x).concat(item.y));
42494
+ }
42381
42495
 
42382
- if (!duple.has("".concat(item.x).concat(item.y))) {
42383
- duple.add("".concat(item.x).concat(item.y));
42384
42496
  this.calcItem(item, param);
42385
42497
 
42386
42498
  if (item.xp !== null && item.yp !== null) {
42387
42499
  var overflowColor = item.y > minmaxY.graphMax && this.overflowColor;
42388
- var color = overflowColor || item.color || this.color;
42389
- ctx.strokeStyle = color;
42390
- var pointFillColor = overflowColor || item.color || this.pointFill || this.color;
42391
- ctx.fillStyle = pointFillColor;
42500
+ var baseStrokeColor = overflowColor || item.color || this.color;
42501
+ var baseFillColor = overflowColor || item.color || this.pointFill || this.color;
42502
+ var strokeOpacity = this.getOpacity(param, baseStrokeColor, j);
42503
+ var fillOpacity = this.getOpacity(param, baseFillColor, j);
42504
+ ctx.strokeStyle = helpers_util.colorStringToRgba(baseStrokeColor, strokeOpacity);
42505
+ ctx.fillStyle = helpers_util.colorStringToRgba(baseFillColor, fillOpacity);
42392
42506
  helpers_canvas.drawPoint(ctx, pointStyle, pointSize, item.xp, item.yp);
42393
42507
  }
42394
42508
  }
@@ -44743,6 +44857,47 @@ var model_series_modules = {
44743
44857
  Store: model_store,
44744
44858
  Series: model_series
44745
44859
  });
44860
+ /**
44861
+ * @typedef {Object} ChartDOMSize
44862
+ * @property {number} width - 차트 DOM의 너비
44863
+ * @property {number} height - 차트 DOM의 높이
44864
+ */
44865
+
44866
+ /**
44867
+ * @typedef {Object} ChartRect
44868
+ * @property {number} x1 - 차트 영역의 시작 X 좌표
44869
+ * @property {number} x2 - 차트 영역의 끝 X 좌표
44870
+ * @property {number} y1 - 차트 영역의 시작 Y 좌표
44871
+ * @property {number} y2 - 차트 영역의 끝 Y 좌표
44872
+ * @property {number} chartWidth - 실제 차트 그리기 영역의 너비
44873
+ * @property {number} chartHeight - 실제 차트 그리기 영역의 높이
44874
+ * @property {number} width - 전체 차트 컨테이너의 너비
44875
+ * @property {number} height - 전체 차트 컨테이너의 높이
44876
+ */
44877
+
44878
+ /**
44879
+ * @typedef {Object} MouseLabelValue
44880
+ * @property {string|number} labelVal - 마우스 위치에 해당하는 라벨 값
44881
+ * @property {number} labelIdx - 라벨 인덱스 (없으면 -1)
44882
+ */
44883
+
44884
+ /**
44885
+ * @typedef {Object} ChartSeriesDataPoint
44886
+ * @property {number|null} x - x축 값 또는 라벨
44887
+ * @property {number|null} y - y축 값 또는 데이터 값
44888
+ * @property {number|null} o - 원본 데이터 값
44889
+ * @property {number|null} b - 스택형 차트의 베이스 값
44890
+ * @property {number|null} xp - x좌표 위치(픽셀 등)
44891
+ * @property {number|null} yp - y좌표 위치(픽셀 등)
44892
+ * @property {number|null} w - 너비
44893
+ * @property {number|null} h - 높이
44894
+ * @property {string|null} dataColor - 데이터 색상
44895
+ * @property {string|null} dataTextColor - 텍스트 색상
44896
+ */
44897
+
44898
+ /**
44899
+ * @typedef {'none' | 'linear' | 'zero'} InterpolationType
44900
+ */
44746
44901
  // CONCATENATED MODULE: ./src/components/chart/scale/scale.js
44747
44902
 
44748
44903
 
@@ -47031,7 +47186,9 @@ var plugins_legend_modules = {
47031
47186
  * @returns {undefined}
47032
47187
  */
47033
47188
  updateStartEndRowIndex: function updateStartEndRowIndex() {
47034
- var index = Math.max(Math.floor(this.legendBoxDOM.scrollTop / this.legendItemHeight), 0);
47189
+ var _this$legendBoxDOM;
47190
+
47191
+ var index = Math.max(Math.floor(((_this$legendBoxDOM = this.legendBoxDOM) === null || _this$legendBoxDOM === void 0 ? void 0 : _this$legendBoxDOM.scrollTop) / this.legendItemHeight), 0);
47035
47192
  this.startRowIndex = Math.min(index, Math.max(this.totalRowCount - this.visibleRowCount, 0));
47036
47193
  this.endRowIndex = this.startRowIndex + this.visibleRowCount + 1;
47037
47194
  },
@@ -47374,26 +47531,14 @@ var plugins_legend_modules = {
47374
47531
  });
47375
47532
  };
47376
47533
  /**
47377
- * callback for legendBoxDOM hovering
47534
+ * callback for mouseleave event on legendBoxDOM
47378
47535
  *
47379
47536
  * @returns {undefined}
47380
47537
  */
47381
47538
 
47382
47539
 
47383
- this.onLegendBoxOver = function (e) {
47384
- var _targetDOM$series;
47385
-
47386
- var targetDOM = _this8.getContainerDOM(e);
47387
-
47388
- if (!targetDOM) {
47389
- return;
47390
- }
47391
-
47392
- var targetId = targetDOM === null || targetDOM === void 0 ? void 0 : (_targetDOM$series = targetDOM.series) === null || _targetDOM$series === void 0 ? void 0 : _targetDOM$series.sId;
47393
- var legendHitInfo = {
47394
- sId: targetId,
47395
- type: _this8.options.type
47396
- };
47540
+ this.onLegendBoxLeave = function () {
47541
+ _this8.legendHover = null;
47397
47542
 
47398
47543
  _this8.update({
47399
47544
  updateSeries: false,
@@ -47402,18 +47547,35 @@ var plugins_legend_modules = {
47402
47547
  keepDomain: false
47403
47548
  },
47404
47549
  hitInfo: {
47405
- legend: legendHitInfo
47550
+ legend: null
47406
47551
  }
47407
47552
  });
47408
47553
  };
47409
47554
  /**
47410
- * callback for mouseleave event on legendBoxDOM
47555
+ * callback for legendBoxDOM hovering
47411
47556
  *
47412
47557
  * @returns {undefined}
47413
47558
  */
47414
47559
 
47415
47560
 
47416
- this.onLegendBoxLeave = function () {
47561
+ this.onLegendBoxOver = function (e) {
47562
+ var _targetDOM$series;
47563
+
47564
+ var targetDOM = _this8.getContainerDOM(e);
47565
+
47566
+ if (!targetDOM) {
47567
+ _this8.onLegendBoxLeave();
47568
+
47569
+ return;
47570
+ }
47571
+
47572
+ var targetId = targetDOM === null || targetDOM === void 0 ? void 0 : (_targetDOM$series = targetDOM.series) === null || _targetDOM$series === void 0 ? void 0 : _targetDOM$series.sId;
47573
+ var legendHitInfo = {
47574
+ sId: targetId,
47575
+ type: _this8.options.type
47576
+ };
47577
+ _this8.legendHover = legendHitInfo;
47578
+
47417
47579
  _this8.update({
47418
47580
  updateSeries: false,
47419
47581
  updateSelTip: {
@@ -47421,7 +47583,7 @@ var plugins_legend_modules = {
47421
47583
  keepDomain: false
47422
47584
  },
47423
47585
  hitInfo: {
47424
- legend: null
47586
+ legend: legendHitInfo
47425
47587
  }
47426
47588
  });
47427
47589
  };
@@ -47518,6 +47680,28 @@ var plugins_legend_modules = {
47518
47680
  }
47519
47681
  });
47520
47682
  };
47683
+ /**
47684
+ * callback for mouseleave event on legendBoxDOM
47685
+ *
47686
+ * @returns {undefined}
47687
+ */
47688
+
47689
+
47690
+ this.onLegendBoxLeave = function () {
47691
+ _this9.legendHover = null;
47692
+ var series = Object.values(_this9.seriesList)[0];
47693
+ series.colorState.forEach(function (item) {
47694
+ item.state = 'normal';
47695
+ });
47696
+
47697
+ _this9.update({
47698
+ updateSeries: false,
47699
+ updateSelTip: {
47700
+ update: false,
47701
+ keepDomain: false
47702
+ }
47703
+ });
47704
+ };
47521
47705
  /**
47522
47706
  * callback for legendBoxDOM hovering
47523
47707
  *
@@ -47533,6 +47717,8 @@ var plugins_legend_modules = {
47533
47717
  var targetDOM = _this9.getContainerDOM(e);
47534
47718
 
47535
47719
  if (!targetDOM) {
47720
+ _this9.onLegendBoxLeave();
47721
+
47536
47722
  return;
47537
47723
  }
47538
47724
 
@@ -47541,6 +47727,7 @@ var plugins_legend_modules = {
47541
47727
  sId: targetId,
47542
47728
  type: _this9.options.type
47543
47729
  };
47730
+ _this9.legendHover = legendHitInfo;
47544
47731
  series.colorState.forEach(function (colorItem) {
47545
47732
  colorItem.state = colorItem.id === targetId ? 'highlight' : 'downplay';
47546
47733
  });
@@ -47556,27 +47743,6 @@ var plugins_legend_modules = {
47556
47743
  }
47557
47744
  });
47558
47745
  };
47559
- /**
47560
- * callback for mouseleave event on legendBoxDOM
47561
- *
47562
- * @returns {undefined}
47563
- */
47564
-
47565
-
47566
- this.onLegendBoxLeave = function () {
47567
- var series = Object.values(_this9.seriesList)[0];
47568
- series.colorState.forEach(function (item) {
47569
- item.state = 'normal';
47570
- });
47571
-
47572
- _this9.update({
47573
- updateSeries: false,
47574
- updateSelTip: {
47575
- update: false,
47576
- keepDomain: false
47577
- }
47578
- });
47579
- };
47580
47746
 
47581
47747
  this.legendBoxDOM.addEventListener('click', this.onLegendBoxClick);
47582
47748
  this.legendBoxDOM.addEventListener('mouseover', this.onLegendBoxOver);
@@ -47658,12 +47824,12 @@ var plugins_legend_modules = {
47658
47824
  var _this$options2,
47659
47825
  _this$options2$legend,
47660
47826
  _this$options2$legend2,
47661
- _this$legendBoxDOM,
47827
+ _this$legendBoxDOM2,
47662
47828
  _this11 = this;
47663
47829
 
47664
47830
  var columns = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : (_this$options2$legend = _this$options2.legend) === null || _this$options2$legend === void 0 ? void 0 : (_this$options2$legend2 = _this$options2$legend.table) === null || _this$options2$legend2 === void 0 ? void 0 : _this$options2$legend2.columns;
47665
47831
  var aggregations = this.getAggregations();
47666
- var rowDOMList = (_this$legendBoxDOM = this.legendBoxDOM) === null || _this$legendBoxDOM === void 0 ? void 0 : _this$legendBoxDOM.getElementsByClassName('ev-chart-legend--table__row');
47832
+ var rowDOMList = (_this$legendBoxDOM2 = this.legendBoxDOM) === null || _this$legendBoxDOM2 === void 0 ? void 0 : _this$legendBoxDOM2.getElementsByClassName('ev-chart-legend--table__row');
47667
47833
  rowDOMList.forEach(function (row) {
47668
47834
  var valueDOMList = row === null || row === void 0 ? void 0 : row.getElementsByClassName('ev-chart-legend--table__value');
47669
47835
  valueDOMList.forEach(function (dom) {
@@ -47955,13 +48121,13 @@ var plugins_legend_modules = {
47955
48121
  * @returns {undefined}
47956
48122
  */
47957
48123
  setLegendPosition: function setLegendPosition() {
47958
- var _opt$legend, _this$wrapperDOM, _this$legendDOM, _this$legendBoxDOM2, _this$resizeDOM, _opt$title, _opt$title2, _opt$legend2, _opt$legend$padding, _opt$legend3;
48124
+ var _opt$legend, _this$wrapperDOM, _this$legendDOM, _this$legendBoxDOM3, _this$resizeDOM, _opt$title, _opt$title2, _opt$legend2, _opt$legend$padding, _opt$legend3;
47959
48125
 
47960
48126
  var opt = this.options;
47961
48127
  var position = opt === null || opt === void 0 ? void 0 : (_opt$legend = opt.legend) === null || _opt$legend === void 0 ? void 0 : _opt$legend.position;
47962
48128
  var wrapperStyle = (_this$wrapperDOM = this.wrapperDOM) === null || _this$wrapperDOM === void 0 ? void 0 : _this$wrapperDOM.style;
47963
48129
  var legendStyle = (_this$legendDOM = this.legendDOM) === null || _this$legendDOM === void 0 ? void 0 : _this$legendDOM.style;
47964
- var boxStyle = (_this$legendBoxDOM2 = this.legendBoxDOM) === null || _this$legendBoxDOM2 === void 0 ? void 0 : _this$legendBoxDOM2.style;
48130
+ var boxStyle = (_this$legendBoxDOM3 = this.legendBoxDOM) === null || _this$legendBoxDOM3 === void 0 ? void 0 : _this$legendBoxDOM3.style;
47965
48131
  var resizeStyle = (_this$resizeDOM = this.resizeDOM) === null || _this$resizeDOM === void 0 ? void 0 : _this$resizeDOM.style;
47966
48132
  var chartRect;
47967
48133
  var legendPad;
@@ -48540,6 +48706,11 @@ var plugins_legend_gradient_modules = {
48540
48706
  return;
48541
48707
  }
48542
48708
 
48709
+ _this2.legendHover = {
48710
+ sId: 'gradient',
48711
+ type: _this2.options.type
48712
+ };
48713
+
48543
48714
  _this2.update({
48544
48715
  updateSeries: false,
48545
48716
  updateSelTip: {
@@ -48557,6 +48728,7 @@ var plugins_legend_gradient_modules = {
48557
48728
 
48558
48729
  this.onLegendBoxLeave = function () {
48559
48730
  _this2.legendDragInfo.dragging = false;
48731
+ _this2.legendHover = null;
48560
48732
 
48561
48733
  _this2.clearOverlay();
48562
48734
 
@@ -51229,7 +51401,7 @@ var plugins_interaction_modules = {
51229
51401
  if (item !== null && item !== void 0 && item.data) {
51230
51402
  var gdata = void 0;
51231
51403
 
51232
- if (item.data.o === null) {
51404
+ if (item.data.o === null && series.interpolation !== 'zero') {
51233
51405
  if (!series.isExistGrp) {
51234
51406
  gdata = isHorizontal ? item.data.x : item.data.y;
51235
51407
  }
@@ -53980,6 +54152,7 @@ var chart_core_EvChart = /*#__PURE__*/function () {
53980
54152
  };
53981
54153
  this.defaultSelectItemInfo = defaultSelectItemInfo;
53982
54154
  this.defaultSelectInfo = defaultSelectInfo;
54155
+ this.legendHover = null;
53983
54156
  }
53984
54157
  /**
53985
54158
  * Initialize chart object
@@ -54564,8 +54737,9 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54564
54737
  }
54565
54738
  /**
54566
54739
  * Get chart DOM size and set canvas size
54740
+ * @typedef {import('./model/index').ChartDOMSize} ChartDOMSize
54567
54741
  *
54568
- * @returns {object} chart size information
54742
+ * @returns {ChartDOMSize} chart size information
54569
54743
  */
54570
54744
 
54571
54745
  }, {
@@ -54585,8 +54759,9 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54585
54759
  }
54586
54760
  /**
54587
54761
  * Calculate chart size
54762
+ * @typedef {import('./model/index').ChartRect} ChartRect
54588
54763
  *
54589
- * @returns {object} chart size information
54764
+ * @returns {ChartRect} chart size information
54590
54765
  */
54591
54766
 
54592
54767
  }, {
@@ -54791,7 +54966,7 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54791
54966
  }, {
54792
54967
  key: "update",
54793
54968
  value: function update(updateInfo) {
54794
- var _this$updateScrollbar, _this$options$realTim2;
54969
+ var _this$updateScrollbar, _this$options$realTim2, _renderHitInfo, _this$legendHover;
54795
54970
 
54796
54971
  var options = this.options;
54797
54972
  var data = this.data.data;
@@ -54917,7 +55092,15 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54917
55092
  this.axesX = this.createAxes('x', options.axesX);
54918
55093
  this.axesY = this.createAxes('y', options.axesY);
54919
55094
  this.initDefaultSelectInfo();
54920
- this.render(updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.hitInfo);
55095
+ var renderHitInfo = updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.hitInfo;
55096
+
55097
+ if (!((_renderHitInfo = renderHitInfo) !== null && _renderHitInfo !== void 0 && _renderHitInfo.legend) && (_this$legendHover = this.legendHover) !== null && _this$legendHover !== void 0 && _this$legendHover.sId) {
55098
+ renderHitInfo = _objectSpread2(_objectSpread2({}, renderHitInfo || {}), {}, {
55099
+ legend: this.legendHover
55100
+ });
55101
+ }
55102
+
55103
+ this.render(renderHitInfo);
54921
55104
  var isDragMove = this.dragInfo && this.drawSelectionArea;
54922
55105
 
54923
55106
  if (isDragMove) {