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.
package/dist/evui.umd.js CHANGED
@@ -11180,7 +11180,7 @@ module.exports = exports;
11180
11180
  /***/ "9224":
11181
11181
  /***/ (function(module) {
11182
11182
 
11183
- module.exports = JSON.parse("{\"a\":\"3.4.116\"}");
11183
+ module.exports = JSON.parse("{\"a\":\"3.4.118\"}");
11184
11184
 
11185
11185
  /***/ }),
11186
11186
 
@@ -38826,7 +38826,21 @@ var modules = {
38826
38826
  } else {
38827
38827
  seriesIDs.forEach(function (seriesID) {
38828
38828
  var series = _this.seriesList[seriesID];
38829
- var sData = data[seriesID];
38829
+ var hasPassingValueInData = data[seriesID].some(function (item) {
38830
+ return item === series.passingValue;
38831
+ });
38832
+ series.hasPassingValueInData = hasPassingValueInData;
38833
+ var sData = data[seriesID].map(function (item) {
38834
+ if (series.interpolation === 'zero' && !item) {
38835
+ return 0;
38836
+ }
38837
+
38838
+ if (item === series.passingValue) {
38839
+ return null;
38840
+ }
38841
+
38842
+ return item;
38843
+ });
38830
38844
 
38831
38845
  if (series && sData) {
38832
38846
  if (series.isExistGrp && series.stackIndex && !series.isOverlapping) {
@@ -39220,7 +39234,9 @@ var modules = {
39220
39234
  * @param {array} bsIds stacked base data ID List
39221
39235
  * @param {number} sIdx series ordered index
39222
39236
  *
39223
- * @returns {array} data for each series
39237
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39238
+ *
39239
+ * @returns {ChartSeriesDataPoint[]} data for each series
39224
39240
  */
39225
39241
  addSeriesStackDS: function addSeriesStackDS(data, label, bsIds) {
39226
39242
  var _this4 = this;
@@ -39272,8 +39288,7 @@ var modules = {
39272
39288
  if (oData != null) {
39273
39289
  gdata = bdata + oData;
39274
39290
  } else {
39275
- gdata = null;
39276
- bdata = 0;
39291
+ gdata = odata;
39277
39292
  }
39278
39293
  } else {
39279
39294
  bdata = 0;
@@ -39292,7 +39307,9 @@ var modules = {
39292
39307
  * @param {object} label chart label
39293
39308
  * @param {boolean} isBase is Base(bottommost) series at stack chart
39294
39309
  *
39295
- * @returns {array} data for each series
39310
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39311
+ *
39312
+ * @returns {ChartSeriesDataPoint[]} data for each series
39296
39313
  */
39297
39314
  addSeriesDS: function addSeriesDS(data, label, isBase) {
39298
39315
  var _this$seriesList$Obje,
@@ -39369,7 +39386,10 @@ var modules = {
39369
39386
  * @param {object} ldata label data (x-axis value for vertical chart)
39370
39387
  * @param {object} odata original data (without stacked value)
39371
39388
  * @param {object} bdata base data (stacked value)
39372
- * @returns {object} data for each graph point
39389
+ *
39390
+ * @typedef {import('./index').ChartSeriesDataPoint} ChartSeriesDataPoint
39391
+ *
39392
+ * @returns {ChartSeriesDataPoint} data for each graph point
39373
39393
  */
39374
39394
  addData: function addData(gdata, ldata) {
39375
39395
  var _gdataColor;
@@ -39945,12 +39965,18 @@ var modules = {
39945
39965
  return result;
39946
39966
  },
39947
39967
 
39968
+ /**
39969
+ * @typedef {Object} LabelInfoResult
39970
+ * @property {number} labelIndex - 선택된 라벨의 인덱스
39971
+ * @property {object} hitInfo - 해당 위치에서의 히트 정보 (getItemByPosition 반환값)
39972
+ */
39973
+
39948
39974
  /**
39949
39975
  * Find label info by position x and y
39950
39976
  * @param {array} offset position x and y
39951
39977
  * @param {string | null} targetAxis target Axis Location ('xAxis', 'yAxis' , null)
39952
39978
  *
39953
- * @returns {object} clicked label information
39979
+ * @returns {LabelInfoResult} clicked label information
39954
39980
  */
39955
39981
  getLabelInfoByPosition: function getLabelInfoByPosition(offset, targetAxis) {
39956
39982
  var _Object$values$sort$, _Object$values$sort$2, _scrollbarOpt, _scale, _scale$labels, _scale3, _scale3$labels;
@@ -40057,11 +40083,14 @@ var modules = {
40057
40083
 
40058
40084
  /**
40059
40085
  * Get current mouse target label value in label array or calculated using mouse position
40086
+ *
40087
+ * @typedef {import('./index').MouseLabelValue} MouseLabelValue
40088
+ *
40060
40089
  * @param {string} targetAxis target Axis Location ('xAxis', 'yAxis')
40061
40090
  * @param {array} offset return value from getMousePosition()
40062
40091
  * @param {number} labelIndex
40063
40092
  *
40064
- * @returns {object} current mouse target label value
40093
+ * @returns {MouseLabelValue} current mouse target label value
40065
40094
  */
40066
40095
  getCurMouseLabelVal: function getCurMouseLabelVal(targetAxis, offset, labelIndex) {
40067
40096
  var _this9 = this;
@@ -41091,6 +41120,57 @@ var defaultsDeep = _baseRest(function(args) {
41091
41120
 
41092
41121
  /* harmony default export */ var lodash_es_defaultsDeep = (defaultsDeep);
41093
41122
 
41123
+ // CONCATENATED MODULE: ./node_modules/lodash-es/isNil.js
41124
+ /**
41125
+ * Checks if `value` is `null` or `undefined`.
41126
+ *
41127
+ * @static
41128
+ * @memberOf _
41129
+ * @since 4.0.0
41130
+ * @category Lang
41131
+ * @param {*} value The value to check.
41132
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
41133
+ * @example
41134
+ *
41135
+ * _.isNil(null);
41136
+ * // => true
41137
+ *
41138
+ * _.isNil(void 0);
41139
+ * // => true
41140
+ *
41141
+ * _.isNil(NaN);
41142
+ * // => false
41143
+ */
41144
+ function isNil(value) {
41145
+ return value == null;
41146
+ }
41147
+
41148
+ /* harmony default export */ var lodash_es_isNil = (isNil);
41149
+
41150
+ // CONCATENATED MODULE: ./node_modules/lodash-es/isUndefined.js
41151
+ /**
41152
+ * Checks if `value` is `undefined`.
41153
+ *
41154
+ * @static
41155
+ * @since 0.1.0
41156
+ * @memberOf _
41157
+ * @category Lang
41158
+ * @param {*} value The value to check.
41159
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
41160
+ * @example
41161
+ *
41162
+ * _.isUndefined(void 0);
41163
+ * // => true
41164
+ *
41165
+ * _.isUndefined(null);
41166
+ * // => false
41167
+ */
41168
+ function isUndefined(value) {
41169
+ return value === undefined;
41170
+ }
41171
+
41172
+ /* harmony default export */ var lodash_es_isUndefined = (isUndefined);
41173
+
41094
41174
  // CONCATENATED MODULE: ./src/components/chart/helpers/helpers.constant.js
41095
41175
  var AXIS_UNITS = {
41096
41176
  x: {
@@ -41138,7 +41218,8 @@ var LINE_OPTION = {
41138
41218
  fill: false,
41139
41219
  fillOpacity: 0.4,
41140
41220
  showLegend: true,
41141
- passingValue: null
41221
+ passingValue: null,
41222
+ interpolation: 'none'
41142
41223
  };
41143
41224
  var BAR_OPTION = {
41144
41225
  show: true,
@@ -41325,13 +41406,13 @@ var TIME_INTERVALS = {
41325
41406
  /* harmony default export */ var helpers_canvas = ({
41326
41407
  /**
41327
41408
  * Calculate X position
41328
- * @param {any} value graph value
41409
+ * @param {number|null|undefined} value graph value
41329
41410
  * @param {number} min min value
41330
41411
  * @param {number} max max value
41331
41412
  * @param {number} area height for axis
41332
41413
  * @param {number} startPoint startPoint
41333
41414
  *
41334
- * @returns {any} position
41415
+ * @returns {number|null} position
41335
41416
  */
41336
41417
  calculateX: function calculateX(value, min, max, area) {
41337
41418
  var startPoint = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
@@ -41371,13 +41452,13 @@ var TIME_INTERVALS = {
41371
41452
 
41372
41453
  /**
41373
41454
  * Calculate Y position
41374
- * @param {any} value graph value
41455
+ * @param {number|null|undefined} value graph value
41375
41456
  * @param {number} min min value
41376
41457
  * @param {number} max max value
41377
41458
  * @param {number} area height for axis
41378
41459
  * @param {number} startPoint startPoint
41379
41460
  *
41380
- * @returns {any} position
41461
+ * @returns {number|null} position
41381
41462
  */
41382
41463
  calculateY: function calculateY(value, min, max, area) {
41383
41464
  var startPoint = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
@@ -41625,7 +41706,6 @@ var TIME_INTERVALS = {
41625
41706
 
41626
41707
 
41627
41708
 
41628
-
41629
41709
  var element_line_Line = /*#__PURE__*/function () {
41630
41710
  function Line(sId, opt, sIdx) {
41631
41711
  var _this = this;
@@ -41662,6 +41742,8 @@ var element_line_Line = /*#__PURE__*/function () {
41662
41742
  lineWidth: 2
41663
41743
  }
41664
41744
  };
41745
+ /** @type {import('../model/index').ChartSeriesDataPoint[]} */
41746
+
41665
41747
  this.data = [];
41666
41748
  this.beforeMouseXp = 0;
41667
41749
  this.beforeMouseYp = 0;
@@ -41669,17 +41751,33 @@ var element_line_Line = /*#__PURE__*/function () {
41669
41751
  this.size = {
41670
41752
  comboOffset: 0
41671
41753
  };
41672
- this.usePassingValue = !!this.passingValue;
41673
41754
  }
41674
- /**
41675
- * Draw series data
41676
- * @param {object} param object for drawing series data
41677
- *
41678
- * @returns {undefined}
41679
- */
41680
-
41681
41755
 
41682
41756
  _createClass(Line, [{
41757
+ key: "useLinearInterpolation",
41758
+ value: function useLinearInterpolation() {
41759
+ return this.interpolation === 'linear' || this.interpolation === 'none' && !!this.passingValue && this.hasPassingValueInData;
41760
+ }
41761
+ /**
41762
+ * @typedef {Object} LineDrawParam
41763
+ * @property {CanvasRenderingContext2D} ctx - 캔버스 렌더링 컨텍스트
41764
+ * @property {object} chartRect - 차트 영역 정보
41765
+ * @property {object} labelOffset - 라벨 오프셋 정보
41766
+ * @property {object} axesSteps - 축 스텝 정보
41767
+ * @property {object} [selectLabel] - 선택된 라벨 정보
41768
+ * @property {object} [selectSeries] - 선택된 시리즈 정보
41769
+ * @property {object} [legendHitInfo] - 범례 히트 정보
41770
+ * @property {boolean} [isBrush] - 브러시 사용 여부
41771
+ */
41772
+
41773
+ /**
41774
+ * Draw series data
41775
+ * @param {LineDrawParam} param object for drawing series data
41776
+ *
41777
+ * @returns {undefined}
41778
+ */
41779
+
41780
+ }, {
41683
41781
  key: "draw",
41684
41782
  value: function draw(param) {
41685
41783
  var _selectLabel$selected,
@@ -41742,8 +41840,7 @@ var element_line_Line = /*#__PURE__*/function () {
41742
41840
  }
41743
41841
 
41744
41842
  var endPoint = chartRect.y2 - labelOffset.bottom;
41745
- var x;
41746
- var y;
41843
+ var isLinearInterpolation = this.useLinearInterpolation();
41747
41844
  var barAreaByCombo = 0;
41748
41845
  var minmaxX = axesSteps.x[this.xAxisIndex];
41749
41846
  var minmaxY = axesSteps.y[this.yAxisIndex];
@@ -41768,51 +41865,40 @@ var element_line_Line = /*#__PURE__*/function () {
41768
41865
  }; // draw line
41769
41866
 
41770
41867
 
41771
- var needCutoff = false;
41772
- this.data.reduce(function (prev, curr) {
41773
- x = getXPos(curr.x);
41774
- y = getYPos(curr.y);
41868
+ var prevValid;
41869
+ this.data.forEach(function (curr) {
41870
+ var _prevValid, _prevValid2;
41775
41871
 
41776
- if (x !== null) {
41777
- x += helpers_util.aliasPixel(x);
41778
- }
41872
+ var x = getXPos(curr.x);
41873
+ var y = getYPos(curr.y);
41779
41874
 
41780
- if (_this2.usePassingValue) {
41781
- if (curr.o === _this2.passingValue) {
41782
- y = getYPos(prev.y);
41875
+ if (_this2.isExistGrp && isLinearInterpolation && curr.o === null) {
41876
+ var _curr$b;
41783
41877
 
41784
- if (prev.o === null) {
41785
- needCutoff = true;
41786
- }
41878
+ y = getYPos((_curr$b = curr.b) !== null && _curr$b !== void 0 ? _curr$b : 0);
41879
+ }
41787
41880
 
41788
- if (_this2.isExistGrp && !needCutoff) {
41789
- var _curr$b;
41881
+ if (x !== null) {
41882
+ x += helpers_util.aliasPixel(x);
41883
+ }
41790
41884
 
41791
- y = getYPos((_curr$b = curr.b) !== null && _curr$b !== void 0 ? _curr$b : 0);
41792
- ctx.lineTo(x, y);
41793
- }
41885
+ curr.xp = x;
41886
+ curr.yp = y;
41794
41887
 
41795
- curr.xp = x;
41796
- curr.yp = y;
41797
- return curr;
41888
+ if (isLinearInterpolation && curr.o === null) {
41889
+ if (!_this2.isExistGrp) {
41890
+ return;
41798
41891
  }
41799
41892
  }
41800
41893
 
41801
- var isNullValue = helpers_util.isNullOrUndefined(prev.o) || helpers_util.isNullOrUndefined(curr.o) || helpers_util.isNullOrUndefined(curr.x) || helpers_util.isNullOrUndefined(curr.y);
41802
-
41803
- if (isNullValue || needCutoff) {
41894
+ 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))) {
41804
41895
  ctx.moveTo(x, y);
41805
- needCutoff = false;
41806
41896
  } else {
41807
41897
  ctx.lineTo(x, y);
41808
41898
  }
41809
41899
 
41810
- curr.xp = x; // eslint-disable-line
41811
-
41812
- curr.yp = y; // eslint-disable-line
41813
-
41814
- return curr;
41815
- }, this.data[0]);
41900
+ prevValid = curr;
41901
+ });
41816
41902
  ctx.stroke();
41817
41903
 
41818
41904
  if (this.segments) {
@@ -41852,20 +41938,22 @@ var element_line_Line = /*#__PURE__*/function () {
41852
41938
  var valueArray = this.data.map(function (item) {
41853
41939
  return item === null || item === void 0 ? void 0 : item.o;
41854
41940
  });
41941
+ /** @type {Array<[number, number]>} */
41942
+
41855
41943
  var needFillDataIndexList = [];
41856
41944
 
41857
41945
  for (var i = 0; i < valueArray.length + 1; i++) {
41858
- if (helpers_util.isNullOrUndefined(valueArray[i])) {
41946
+ if (isLinearInterpolation && lodash_es_isUndefined(valueArray[i]) || !isLinearInterpolation && lodash_es_isNil(valueArray[i])) {
41859
41947
  if (start !== null && end !== null) {
41860
41948
  var temp = valueArray.slice(start, i);
41861
41949
  var lastNormalValueIndex = temp.findLastIndex(function (item) {
41862
- return item !== helpers_util.isNullOrUndefined(item) && item !== _this2.passingValue;
41950
+ return !lodash_es_isNil(item) && item !== null;
41863
41951
  });
41864
41952
  needFillDataIndexList.push([start, start + lastNormalValueIndex]);
41865
41953
  start = null;
41866
41954
  end = null;
41867
41955
  }
41868
- } else if (valueArray[i] === this.passingValue) {
41956
+ } else if (isLinearInterpolation && valueArray[i] === null) {
41869
41957
  end = i;
41870
41958
  } else {
41871
41959
  start = start === null ? i : start;
@@ -41895,7 +41983,7 @@ var element_line_Line = /*#__PURE__*/function () {
41895
41983
 
41896
41984
  if (ix === startIndex) {
41897
41985
  ctx.moveTo(currData.xp, currData.yp);
41898
- } else if (_this2.isExistGrp || _this2.passingValue !== currData.o) {
41986
+ } else if (_this2.isExistGrp || currData.o !== null) {
41899
41987
  ctx.lineTo(currData.xp, currData.yp);
41900
41988
  }
41901
41989
 
@@ -41921,14 +42009,19 @@ var element_line_Line = /*#__PURE__*/function () {
41921
42009
  ctx.strokeStyle = helpers_util.colorStringToRgba(mainColor, mainColorOpacity);
41922
42010
  var focusStyle = helpers_util.colorStringToRgba(pointFillColor, 1);
41923
42011
  var blurStyle = helpers_util.colorStringToRgba(pointFillColor, pointFillColorOpacity);
42012
+ var isLinearSingle = this.interpolation === 'linear' && this.data.filter(function (item) {
42013
+ return item.o !== null;
42014
+ }).length === 1;
41924
42015
  this.data.forEach(function (curr, ix) {
41925
42016
  var _this2$data, _this2$data2;
41926
42017
 
41927
- if (curr.xp === null || curr.yp === null || curr.o === _this2.passingValue) {
42018
+ if (curr.xp === null || curr.yp === null || curr.o === null) {
41928
42019
  return;
41929
42020
  }
41930
42021
 
41931
- 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);
42022
+ var prevData = (_this2$data = _this2.data[ix - 1]) === null || _this2$data === void 0 ? void 0 : _this2$data.o;
42023
+ var nextData = (_this2$data2 = _this2.data[ix + 1]) === null || _this2$data2 === void 0 ? void 0 : _this2$data2.o;
42024
+ var isSingle = !isLinearInterpolation && lodash_es_isNil(prevData) && lodash_es_isNil(nextData) || isLinearSingle;
41932
42025
  var isSelectedLabel = selectedLabelIndexList.includes(ix);
41933
42026
 
41934
42027
  if (_this2.point || isSingle || isSelectedLabel) {
@@ -41959,7 +42052,7 @@ var element_line_Line = /*#__PURE__*/function () {
41959
42052
  o = gdata.o;
41960
42053
  ctx.save();
41961
42054
 
41962
- if (xp !== null && yp !== null && o !== this.passingValue && this.pointHighlight) {
42055
+ if (xp !== null && yp !== null && o !== null && this.pointHighlight) {
41963
42056
  ctx.strokeStyle = helpers_util.colorStringToRgba(this.color, 0);
41964
42057
  ctx.fillStyle = helpers_util.colorStringToRgba(this.color, this.highlight.maxShadowOpacity);
41965
42058
  helpers_canvas.drawPoint(ctx, this.pointStyle, this.highlight.maxShadowSize, xp, yp);
@@ -41997,6 +42090,7 @@ var element_line_Line = /*#__PURE__*/function () {
41997
42090
  return !helpers_util.isNullOrUndefined(data.x);
41998
42091
  });
41999
42092
  var SPARE_XP = 0.5;
42093
+ var isLinearInterpolation = this.useLinearInterpolation();
42000
42094
 
42001
42095
  if (gdata !== null && gdata !== void 0 && gdata.length) {
42002
42096
  if (typeof dataIndex === 'number' && this.show) {
@@ -42080,7 +42174,7 @@ var element_line_Line = /*#__PURE__*/function () {
42080
42174
  }
42081
42175
  }
42082
42176
 
42083
- 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) {
42177
+ if (isLinearInterpolation && (item === null || item === void 0 ? void 0 : (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.o) === null) {
42084
42178
  item.data = null;
42085
42179
  }
42086
42180
 
@@ -42350,16 +42444,29 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42350
42444
  value: function defaultScatterDraw(param) {
42351
42445
  var _this2 = this;
42352
42446
 
42353
- var ctx = param.ctx;
42447
+ var ctx = param.ctx,
42448
+ axesSteps = param.axesSteps,
42449
+ duple = param.duple,
42450
+ legendHitInfo = param.legendHitInfo;
42451
+ var minmaxY = axesSteps.y[this.yAxisIndex];
42354
42452
  this.data.forEach(function (item, idx) {
42355
- _this2.calcItem(item, param);
42453
+ var shouldDraw = legendHitInfo ? legendHitInfo.sId === _this2.sId : !duple.has("".concat(item.x).concat(item.y));
42454
+
42455
+ if (shouldDraw) {
42456
+ if (!duple.has("".concat(item.x).concat(item.y))) {
42457
+ duple.add("".concat(item.x).concat(item.y));
42458
+ }
42356
42459
 
42357
- if (item.xp !== null && item.yp !== null) {
42358
- var color = item.dataColor || _this2.color;
42359
- ctx.strokeStyle = helpers_util.colorStringToRgba(color, _this2.getOpacity(param, color, idx));
42360
- var pointFillColor = item.dataColor || _this2.pointFill;
42361
- ctx.fillStyle = helpers_util.colorStringToRgba(pointFillColor, _this2.getOpacity(param, pointFillColor, idx));
42362
- helpers_canvas.drawPoint(ctx, _this2.pointStyle, _this2.pointSize, item.xp, item.yp);
42460
+ _this2.calcItem(item, param);
42461
+
42462
+ if (item.xp !== null && item.yp !== null) {
42463
+ var overflowColor = item.y > minmaxY.graphMax && _this2.overflowColor;
42464
+ var color = overflowColor || item.dataColor || _this2.color;
42465
+ ctx.strokeStyle = helpers_util.colorStringToRgba(color, _this2.getOpacity(param, color, idx));
42466
+ var pointFillColor = item.dataColor || _this2.pointFill;
42467
+ ctx.fillStyle = helpers_util.colorStringToRgba(pointFillColor, _this2.getOpacity(param, pointFillColor, idx));
42468
+ helpers_canvas.drawPoint(ctx, _this2.pointStyle, _this2.pointSize, item.xp, item.yp);
42469
+ }
42363
42470
  }
42364
42471
  });
42365
42472
  }
@@ -42375,7 +42482,8 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42375
42482
  value: function realTimeScatterDraw(param) {
42376
42483
  var ctx = param.ctx,
42377
42484
  axesSteps = param.axesSteps,
42378
- duple = param.duple;
42485
+ duple = param.duple,
42486
+ legendHitInfo = param.legendHitInfo;
42379
42487
  var minmaxY = axesSteps.y[this.yAxisIndex];
42380
42488
  var pointStyle = typeof this.pointStyle === 'string' ? this.pointStyle : this.pointStyle.value;
42381
42489
  var pointSize = typeof this.pointSize === 'number' ? this.pointSize : this.pointSize.value;
@@ -42387,17 +42495,23 @@ var element_scatter_Scatter = /*#__PURE__*/function () {
42387
42495
  var _this$data$this$sId2, _this$data$this$sId2$, _this$data$this$sId3, _this$data$this$sId3$;
42388
42496
 
42389
42497
  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];
42498
+ var shouldDraw = legendHitInfo ? legendHitInfo.sId === this.sId : !duple.has("".concat(item.x).concat(item.y));
42499
+
42500
+ if (shouldDraw) {
42501
+ if (!duple.has("".concat(item.x).concat(item.y))) {
42502
+ duple.add("".concat(item.x).concat(item.y));
42503
+ }
42390
42504
 
42391
- if (!duple.has("".concat(item.x).concat(item.y))) {
42392
- duple.add("".concat(item.x).concat(item.y));
42393
42505
  this.calcItem(item, param);
42394
42506
 
42395
42507
  if (item.xp !== null && item.yp !== null) {
42396
42508
  var overflowColor = item.y > minmaxY.graphMax && this.overflowColor;
42397
- var color = overflowColor || item.color || this.color;
42398
- ctx.strokeStyle = color;
42399
- var pointFillColor = overflowColor || item.color || this.pointFill || this.color;
42400
- ctx.fillStyle = pointFillColor;
42509
+ var baseStrokeColor = overflowColor || item.color || this.color;
42510
+ var baseFillColor = overflowColor || item.color || this.pointFill || this.color;
42511
+ var strokeOpacity = this.getOpacity(param, baseStrokeColor, j);
42512
+ var fillOpacity = this.getOpacity(param, baseFillColor, j);
42513
+ ctx.strokeStyle = helpers_util.colorStringToRgba(baseStrokeColor, strokeOpacity);
42514
+ ctx.fillStyle = helpers_util.colorStringToRgba(baseFillColor, fillOpacity);
42401
42515
  helpers_canvas.drawPoint(ctx, pointStyle, pointSize, item.xp, item.yp);
42402
42516
  }
42403
42517
  }
@@ -44752,6 +44866,47 @@ var model_series_modules = {
44752
44866
  Store: model_store,
44753
44867
  Series: model_series
44754
44868
  });
44869
+ /**
44870
+ * @typedef {Object} ChartDOMSize
44871
+ * @property {number} width - 차트 DOM의 너비
44872
+ * @property {number} height - 차트 DOM의 높이
44873
+ */
44874
+
44875
+ /**
44876
+ * @typedef {Object} ChartRect
44877
+ * @property {number} x1 - 차트 영역의 시작 X 좌표
44878
+ * @property {number} x2 - 차트 영역의 끝 X 좌표
44879
+ * @property {number} y1 - 차트 영역의 시작 Y 좌표
44880
+ * @property {number} y2 - 차트 영역의 끝 Y 좌표
44881
+ * @property {number} chartWidth - 실제 차트 그리기 영역의 너비
44882
+ * @property {number} chartHeight - 실제 차트 그리기 영역의 높이
44883
+ * @property {number} width - 전체 차트 컨테이너의 너비
44884
+ * @property {number} height - 전체 차트 컨테이너의 높이
44885
+ */
44886
+
44887
+ /**
44888
+ * @typedef {Object} MouseLabelValue
44889
+ * @property {string|number} labelVal - 마우스 위치에 해당하는 라벨 값
44890
+ * @property {number} labelIdx - 라벨 인덱스 (없으면 -1)
44891
+ */
44892
+
44893
+ /**
44894
+ * @typedef {Object} ChartSeriesDataPoint
44895
+ * @property {number|null} x - x축 값 또는 라벨
44896
+ * @property {number|null} y - y축 값 또는 데이터 값
44897
+ * @property {number|null} o - 원본 데이터 값
44898
+ * @property {number|null} b - 스택형 차트의 베이스 값
44899
+ * @property {number|null} xp - x좌표 위치(픽셀 등)
44900
+ * @property {number|null} yp - y좌표 위치(픽셀 등)
44901
+ * @property {number|null} w - 너비
44902
+ * @property {number|null} h - 높이
44903
+ * @property {string|null} dataColor - 데이터 색상
44904
+ * @property {string|null} dataTextColor - 텍스트 색상
44905
+ */
44906
+
44907
+ /**
44908
+ * @typedef {'none' | 'linear' | 'zero'} InterpolationType
44909
+ */
44755
44910
  // CONCATENATED MODULE: ./src/components/chart/scale/scale.js
44756
44911
 
44757
44912
 
@@ -47040,7 +47195,9 @@ var plugins_legend_modules = {
47040
47195
  * @returns {undefined}
47041
47196
  */
47042
47197
  updateStartEndRowIndex: function updateStartEndRowIndex() {
47043
- var index = Math.max(Math.floor(this.legendBoxDOM.scrollTop / this.legendItemHeight), 0);
47198
+ var _this$legendBoxDOM;
47199
+
47200
+ var index = Math.max(Math.floor(((_this$legendBoxDOM = this.legendBoxDOM) === null || _this$legendBoxDOM === void 0 ? void 0 : _this$legendBoxDOM.scrollTop) / this.legendItemHeight), 0);
47044
47201
  this.startRowIndex = Math.min(index, Math.max(this.totalRowCount - this.visibleRowCount, 0));
47045
47202
  this.endRowIndex = this.startRowIndex + this.visibleRowCount + 1;
47046
47203
  },
@@ -47383,26 +47540,14 @@ var plugins_legend_modules = {
47383
47540
  });
47384
47541
  };
47385
47542
  /**
47386
- * callback for legendBoxDOM hovering
47543
+ * callback for mouseleave event on legendBoxDOM
47387
47544
  *
47388
47545
  * @returns {undefined}
47389
47546
  */
47390
47547
 
47391
47548
 
47392
- this.onLegendBoxOver = function (e) {
47393
- var _targetDOM$series;
47394
-
47395
- var targetDOM = _this8.getContainerDOM(e);
47396
-
47397
- if (!targetDOM) {
47398
- return;
47399
- }
47400
-
47401
- var targetId = targetDOM === null || targetDOM === void 0 ? void 0 : (_targetDOM$series = targetDOM.series) === null || _targetDOM$series === void 0 ? void 0 : _targetDOM$series.sId;
47402
- var legendHitInfo = {
47403
- sId: targetId,
47404
- type: _this8.options.type
47405
- };
47549
+ this.onLegendBoxLeave = function () {
47550
+ _this8.legendHover = null;
47406
47551
 
47407
47552
  _this8.update({
47408
47553
  updateSeries: false,
@@ -47411,18 +47556,35 @@ var plugins_legend_modules = {
47411
47556
  keepDomain: false
47412
47557
  },
47413
47558
  hitInfo: {
47414
- legend: legendHitInfo
47559
+ legend: null
47415
47560
  }
47416
47561
  });
47417
47562
  };
47418
47563
  /**
47419
- * callback for mouseleave event on legendBoxDOM
47564
+ * callback for legendBoxDOM hovering
47420
47565
  *
47421
47566
  * @returns {undefined}
47422
47567
  */
47423
47568
 
47424
47569
 
47425
- this.onLegendBoxLeave = function () {
47570
+ this.onLegendBoxOver = function (e) {
47571
+ var _targetDOM$series;
47572
+
47573
+ var targetDOM = _this8.getContainerDOM(e);
47574
+
47575
+ if (!targetDOM) {
47576
+ _this8.onLegendBoxLeave();
47577
+
47578
+ return;
47579
+ }
47580
+
47581
+ var targetId = targetDOM === null || targetDOM === void 0 ? void 0 : (_targetDOM$series = targetDOM.series) === null || _targetDOM$series === void 0 ? void 0 : _targetDOM$series.sId;
47582
+ var legendHitInfo = {
47583
+ sId: targetId,
47584
+ type: _this8.options.type
47585
+ };
47586
+ _this8.legendHover = legendHitInfo;
47587
+
47426
47588
  _this8.update({
47427
47589
  updateSeries: false,
47428
47590
  updateSelTip: {
@@ -47430,7 +47592,7 @@ var plugins_legend_modules = {
47430
47592
  keepDomain: false
47431
47593
  },
47432
47594
  hitInfo: {
47433
- legend: null
47595
+ legend: legendHitInfo
47434
47596
  }
47435
47597
  });
47436
47598
  };
@@ -47527,6 +47689,28 @@ var plugins_legend_modules = {
47527
47689
  }
47528
47690
  });
47529
47691
  };
47692
+ /**
47693
+ * callback for mouseleave event on legendBoxDOM
47694
+ *
47695
+ * @returns {undefined}
47696
+ */
47697
+
47698
+
47699
+ this.onLegendBoxLeave = function () {
47700
+ _this9.legendHover = null;
47701
+ var series = Object.values(_this9.seriesList)[0];
47702
+ series.colorState.forEach(function (item) {
47703
+ item.state = 'normal';
47704
+ });
47705
+
47706
+ _this9.update({
47707
+ updateSeries: false,
47708
+ updateSelTip: {
47709
+ update: false,
47710
+ keepDomain: false
47711
+ }
47712
+ });
47713
+ };
47530
47714
  /**
47531
47715
  * callback for legendBoxDOM hovering
47532
47716
  *
@@ -47542,6 +47726,8 @@ var plugins_legend_modules = {
47542
47726
  var targetDOM = _this9.getContainerDOM(e);
47543
47727
 
47544
47728
  if (!targetDOM) {
47729
+ _this9.onLegendBoxLeave();
47730
+
47545
47731
  return;
47546
47732
  }
47547
47733
 
@@ -47550,6 +47736,7 @@ var plugins_legend_modules = {
47550
47736
  sId: targetId,
47551
47737
  type: _this9.options.type
47552
47738
  };
47739
+ _this9.legendHover = legendHitInfo;
47553
47740
  series.colorState.forEach(function (colorItem) {
47554
47741
  colorItem.state = colorItem.id === targetId ? 'highlight' : 'downplay';
47555
47742
  });
@@ -47565,27 +47752,6 @@ var plugins_legend_modules = {
47565
47752
  }
47566
47753
  });
47567
47754
  };
47568
- /**
47569
- * callback for mouseleave event on legendBoxDOM
47570
- *
47571
- * @returns {undefined}
47572
- */
47573
-
47574
-
47575
- this.onLegendBoxLeave = function () {
47576
- var series = Object.values(_this9.seriesList)[0];
47577
- series.colorState.forEach(function (item) {
47578
- item.state = 'normal';
47579
- });
47580
-
47581
- _this9.update({
47582
- updateSeries: false,
47583
- updateSelTip: {
47584
- update: false,
47585
- keepDomain: false
47586
- }
47587
- });
47588
- };
47589
47755
 
47590
47756
  this.legendBoxDOM.addEventListener('click', this.onLegendBoxClick);
47591
47757
  this.legendBoxDOM.addEventListener('mouseover', this.onLegendBoxOver);
@@ -47667,12 +47833,12 @@ var plugins_legend_modules = {
47667
47833
  var _this$options2,
47668
47834
  _this$options2$legend,
47669
47835
  _this$options2$legend2,
47670
- _this$legendBoxDOM,
47836
+ _this$legendBoxDOM2,
47671
47837
  _this11 = this;
47672
47838
 
47673
47839
  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;
47674
47840
  var aggregations = this.getAggregations();
47675
- var rowDOMList = (_this$legendBoxDOM = this.legendBoxDOM) === null || _this$legendBoxDOM === void 0 ? void 0 : _this$legendBoxDOM.getElementsByClassName('ev-chart-legend--table__row');
47841
+ var rowDOMList = (_this$legendBoxDOM2 = this.legendBoxDOM) === null || _this$legendBoxDOM2 === void 0 ? void 0 : _this$legendBoxDOM2.getElementsByClassName('ev-chart-legend--table__row');
47676
47842
  rowDOMList.forEach(function (row) {
47677
47843
  var valueDOMList = row === null || row === void 0 ? void 0 : row.getElementsByClassName('ev-chart-legend--table__value');
47678
47844
  valueDOMList.forEach(function (dom) {
@@ -47964,13 +48130,13 @@ var plugins_legend_modules = {
47964
48130
  * @returns {undefined}
47965
48131
  */
47966
48132
  setLegendPosition: function setLegendPosition() {
47967
- var _opt$legend, _this$wrapperDOM, _this$legendDOM, _this$legendBoxDOM2, _this$resizeDOM, _opt$title, _opt$title2, _opt$legend2, _opt$legend$padding, _opt$legend3;
48133
+ var _opt$legend, _this$wrapperDOM, _this$legendDOM, _this$legendBoxDOM3, _this$resizeDOM, _opt$title, _opt$title2, _opt$legend2, _opt$legend$padding, _opt$legend3;
47968
48134
 
47969
48135
  var opt = this.options;
47970
48136
  var position = opt === null || opt === void 0 ? void 0 : (_opt$legend = opt.legend) === null || _opt$legend === void 0 ? void 0 : _opt$legend.position;
47971
48137
  var wrapperStyle = (_this$wrapperDOM = this.wrapperDOM) === null || _this$wrapperDOM === void 0 ? void 0 : _this$wrapperDOM.style;
47972
48138
  var legendStyle = (_this$legendDOM = this.legendDOM) === null || _this$legendDOM === void 0 ? void 0 : _this$legendDOM.style;
47973
- var boxStyle = (_this$legendBoxDOM2 = this.legendBoxDOM) === null || _this$legendBoxDOM2 === void 0 ? void 0 : _this$legendBoxDOM2.style;
48139
+ var boxStyle = (_this$legendBoxDOM3 = this.legendBoxDOM) === null || _this$legendBoxDOM3 === void 0 ? void 0 : _this$legendBoxDOM3.style;
47974
48140
  var resizeStyle = (_this$resizeDOM = this.resizeDOM) === null || _this$resizeDOM === void 0 ? void 0 : _this$resizeDOM.style;
47975
48141
  var chartRect;
47976
48142
  var legendPad;
@@ -48549,6 +48715,11 @@ var plugins_legend_gradient_modules = {
48549
48715
  return;
48550
48716
  }
48551
48717
 
48718
+ _this2.legendHover = {
48719
+ sId: 'gradient',
48720
+ type: _this2.options.type
48721
+ };
48722
+
48552
48723
  _this2.update({
48553
48724
  updateSeries: false,
48554
48725
  updateSelTip: {
@@ -48566,6 +48737,7 @@ var plugins_legend_gradient_modules = {
48566
48737
 
48567
48738
  this.onLegendBoxLeave = function () {
48568
48739
  _this2.legendDragInfo.dragging = false;
48740
+ _this2.legendHover = null;
48569
48741
 
48570
48742
  _this2.clearOverlay();
48571
48743
 
@@ -51238,7 +51410,7 @@ var plugins_interaction_modules = {
51238
51410
  if (item !== null && item !== void 0 && item.data) {
51239
51411
  var gdata = void 0;
51240
51412
 
51241
- if (item.data.o === null) {
51413
+ if (item.data.o === null && series.interpolation !== 'zero') {
51242
51414
  if (!series.isExistGrp) {
51243
51415
  gdata = isHorizontal ? item.data.x : item.data.y;
51244
51416
  }
@@ -53989,6 +54161,7 @@ var chart_core_EvChart = /*#__PURE__*/function () {
53989
54161
  };
53990
54162
  this.defaultSelectItemInfo = defaultSelectItemInfo;
53991
54163
  this.defaultSelectInfo = defaultSelectInfo;
54164
+ this.legendHover = null;
53992
54165
  }
53993
54166
  /**
53994
54167
  * Initialize chart object
@@ -54573,8 +54746,9 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54573
54746
  }
54574
54747
  /**
54575
54748
  * Get chart DOM size and set canvas size
54749
+ * @typedef {import('./model/index').ChartDOMSize} ChartDOMSize
54576
54750
  *
54577
- * @returns {object} chart size information
54751
+ * @returns {ChartDOMSize} chart size information
54578
54752
  */
54579
54753
 
54580
54754
  }, {
@@ -54594,8 +54768,9 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54594
54768
  }
54595
54769
  /**
54596
54770
  * Calculate chart size
54771
+ * @typedef {import('./model/index').ChartRect} ChartRect
54597
54772
  *
54598
- * @returns {object} chart size information
54773
+ * @returns {ChartRect} chart size information
54599
54774
  */
54600
54775
 
54601
54776
  }, {
@@ -54800,7 +54975,7 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54800
54975
  }, {
54801
54976
  key: "update",
54802
54977
  value: function update(updateInfo) {
54803
- var _this$updateScrollbar, _this$options$realTim2;
54978
+ var _this$updateScrollbar, _this$options$realTim2, _renderHitInfo, _this$legendHover;
54804
54979
 
54805
54980
  var options = this.options;
54806
54981
  var data = this.data.data;
@@ -54926,7 +55101,15 @@ var chart_core_EvChart = /*#__PURE__*/function () {
54926
55101
  this.axesX = this.createAxes('x', options.axesX);
54927
55102
  this.axesY = this.createAxes('y', options.axesY);
54928
55103
  this.initDefaultSelectInfo();
54929
- this.render(updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.hitInfo);
55104
+ var renderHitInfo = updateInfo === null || updateInfo === void 0 ? void 0 : updateInfo.hitInfo;
55105
+
55106
+ if (!((_renderHitInfo = renderHitInfo) !== null && _renderHitInfo !== void 0 && _renderHitInfo.legend) && (_this$legendHover = this.legendHover) !== null && _this$legendHover !== void 0 && _this$legendHover.sId) {
55107
+ renderHitInfo = _objectSpread2(_objectSpread2({}, renderHitInfo || {}), {}, {
55108
+ legend: this.legendHover
55109
+ });
55110
+ }
55111
+
55112
+ this.render(renderHitInfo);
54930
55113
  var isDragMove = this.dragInfo && this.drawSelectionArea;
54931
55114
 
54932
55115
  if (isDragMove) {