evui 3.4.153 → 3.4.155

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
@@ -11244,7 +11244,7 @@ $({ target: 'Number', stat: true }, {
11244
11244
  /***/ "9224":
11245
11245
  /***/ (function(module) {
11246
11246
 
11247
- module.exports = JSON.parse("{\"a\":\"3.4.153\"}");
11247
+ module.exports = JSON.parse("{\"a\":\"3.4.155\"}");
11248
11248
 
11249
11249
  /***/ }),
11250
11250
 
@@ -43047,17 +43047,16 @@ var element_bar_Bar = /*#__PURE__*/function () {
43047
43047
  this.borderRadius = param.borderRadius;
43048
43048
  this.filteredCount = totalCount;
43049
43049
  var startIndex = truthyNumber(minIndex) ? minIndex : 0;
43050
- var endIndex = truthyNumber(maxIndex) ? maxIndex : this.data.length - 1; // 스크롤 범위 내에서만 루프 돌림
43050
+ var endIndex = truthyNumber(maxIndex) ? maxIndex : this.data.length - 1;
43051
+ this.visibleStartIndex = startIndex;
43051
43052
 
43052
43053
  for (var i = startIndex; i <= endIndex; i++) {
43053
- var screenIndex = i - startIndex; // 현재 화면상의 위치 인덱스
43054
-
43055
- var item = this.data[i]; // 실제 데이터 인덱스에 해당하는 항목
43054
+ var screenIndex = i - startIndex;
43055
+ var item = this.data[i];
43056
43056
 
43057
43057
  if (item) {
43058
43058
  var _param$selectLabel, _param$selectItem, _param$selectLabel$se, _param$selectLabel2, _param$selectLabel2$s, _param$selectItem$sel, _param$selectItem2;
43059
43059
 
43060
- // 스크롤 offset(minIndex)만큼 보정해서 그리기
43061
43060
  var categoryPoint = isHorizontal ? ysp - cArea * screenIndex - cPad : xsp + cArea * screenIndex + cPad;
43062
43061
 
43063
43062
  if (isHorizontal) {
@@ -43156,11 +43155,7 @@ var element_bar_Bar = /*#__PURE__*/function () {
43156
43155
 
43157
43156
  item.h = isHorizontal ? -h : h; // eslint-disable-line
43158
43157
 
43159
- item.index = i; // 실제 데이터 인덱스 (스크롤 offset 포함)
43160
- // 검색(hitInfo) 로직은 this.data[0..filteredCount-1] 범위만 검사하므로,
43161
- // 현재 화면에 그린 항목을 배열 앞쪽으로 매핑해준다.
43162
-
43163
- this.data[screenIndex] = item;
43158
+ item.index = i;
43164
43159
  }
43165
43160
  }
43166
43161
  }
@@ -43246,17 +43241,23 @@ var element_bar_Bar = /*#__PURE__*/function () {
43246
43241
  key: "findGraphData",
43247
43242
  value: function findGraphData(offset, isHorizontal, dataIndex, useIndicatorOnLabel) {
43248
43243
  if (typeof dataIndex === 'number' && this.show && useIndicatorOnLabel) {
43249
- var gdata = this.data;
43244
+ var _this$visibleStartInd, _this$filteredCount;
43245
+
43246
+ var barData = this.data;
43250
43247
  var item = {
43251
43248
  data: null,
43252
43249
  hit: false,
43253
43250
  color: this.color
43254
- };
43251
+ }; // dataIndex를 현재 화면에 보이는 범위로 clamp하여 stale xp/yp 참조 방지
43255
43252
 
43256
- if (gdata[dataIndex]) {
43257
- item.data = gdata[dataIndex];
43258
- item.index = dataIndex;
43259
- item.hit = this.isPointInBar(offset, gdata[dataIndex]);
43253
+ var visStart = (_this$visibleStartInd = this.visibleStartIndex) !== null && _this$visibleStartInd !== void 0 ? _this$visibleStartInd : 0;
43254
+ var visEnd = visStart + ((_this$filteredCount = this.filteredCount) !== null && _this$filteredCount !== void 0 ? _this$filteredCount : barData.length) - 1;
43255
+ var clampedIndex = Math.max(visStart, Math.min(dataIndex, visEnd));
43256
+
43257
+ if (barData[clampedIndex]) {
43258
+ item.data = barData[clampedIndex];
43259
+ item.index = clampedIndex;
43260
+ item.hit = this.isPointInBar(offset, barData[clampedIndex]);
43260
43261
  }
43261
43262
 
43262
43263
  return item;
@@ -43282,7 +43283,7 @@ var element_bar_Bar = /*#__PURE__*/function () {
43282
43283
  }, {
43283
43284
  key: "binarySearchBar",
43284
43285
  value: function binarySearchBar(offset, isHorizontal) {
43285
- var _this$filteredCount;
43286
+ var _this$visibleStartInd2, _this$filteredCount2;
43286
43287
 
43287
43288
  var _offset = _slicedToArray(offset, 2),
43288
43289
  xp = _offset[0],
@@ -43294,9 +43295,10 @@ var element_bar_Bar = /*#__PURE__*/function () {
43294
43295
  color: this.color
43295
43296
  };
43296
43297
  var gdata = this.data;
43297
- var totalCount = (_this$filteredCount = this.filteredCount) !== null && _this$filteredCount !== void 0 ? _this$filteredCount : gdata.length;
43298
- var s = 0;
43299
- var e = totalCount - 1;
43298
+ var startIdx = (_this$visibleStartInd2 = this.visibleStartIndex) !== null && _this$visibleStartInd2 !== void 0 ? _this$visibleStartInd2 : 0;
43299
+ var totalCount = (_this$filteredCount2 = this.filteredCount) !== null && _this$filteredCount2 !== void 0 ? _this$filteredCount2 : gdata.length;
43300
+ var s = startIdx;
43301
+ var e = startIdx + totalCount - 1;
43300
43302
 
43301
43303
  while (s <= e) {
43302
43304
  var m = Math.floor((s + e) / 2);
@@ -46359,96 +46361,6 @@ var scale_time_TimeScale = /*#__PURE__*/function (_Scale) {
46359
46361
 
46360
46362
  return Math.ceil((max - min) / step);
46361
46363
  }
46362
- /**
46363
- * With range information, calculate how many labels in axis
46364
- * @param {object} range min/max information
46365
- *
46366
- * @returns {object} steps, interval, min/max graph value
46367
- */
46368
-
46369
- }, {
46370
- key: "calculateSteps",
46371
- value: function calculateSteps(range) {
46372
- var maxValue = range.maxValue,
46373
- minValue = range.minValue,
46374
- maxSteps = range.maxSteps; // 사용자 interval로 인식하는 경우: 숫자 또는 객체({ time, unit }) 형태만
46375
- // 문자열('hour', 'second' 등)은 기존 로직(분기 D)으로 처리
46376
-
46377
- var hasUserRange = Array.isArray(this.range) && this.range.length === 2;
46378
- var hasUserInterval = typeof this.interval === 'number' || _typeof(this.interval) === 'object' && this.interval !== null;
46379
- var resolvedInterval = hasUserInterval ? this.getInterval(range) : null;
46380
- var isValidInterval = resolvedInterval != null && resolvedInterval > 0 && isFinite(resolvedInterval);
46381
- var graphMin = +minValue;
46382
- var graphMax = +maxValue;
46383
- var graphRange = graphMax - graphMin;
46384
- var interval;
46385
- var steps;
46386
-
46387
- if (hasUserRange && isValidInterval) {
46388
- // 1) user range + interval
46389
- var candidateSteps = graphRange / resolvedInterval;
46390
- var isExactlyDividable = Math.abs(candidateSteps - Math.round(candidateSteps)) < 1e-10;
46391
-
46392
- if (isExactlyDividable && candidateSteps <= maxSteps) {
46393
- // 1-1) interval 호환되는 경우
46394
- interval = resolvedInterval;
46395
- steps = Math.round(candidateSteps);
46396
- } else {
46397
- // 1-2) interval 호환되지 않음 -> 사용자 interval을 사용하지 않음
46398
- steps = maxSteps;
46399
- interval = graphRange / steps;
46400
- }
46401
- } else if (hasUserRange) {
46402
- // 2) user range only
46403
- steps = maxSteps;
46404
- interval = graphRange / steps;
46405
- } else if (isValidInterval) {
46406
- // 3) user interval only
46407
- interval = resolvedInterval;
46408
- steps = Math.ceil(graphRange / interval);
46409
-
46410
- while (steps > maxSteps) {
46411
- interval *= 2;
46412
- steps = Math.ceil(graphRange / interval);
46413
- }
46414
-
46415
- graphMax = graphMin + interval * steps;
46416
- } else {
46417
- // 4) 기존 로직
46418
- interval = this.getInterval(range);
46419
- var increase = minValue;
46420
- var numberOfSteps;
46421
-
46422
- while (increase < maxValue) {
46423
- increase += interval;
46424
- }
46425
-
46426
- graphMax = increase;
46427
- numberOfSteps = Math.round(graphRange / interval);
46428
-
46429
- while (numberOfSteps > maxSteps) {
46430
- interval *= 2;
46431
- numberOfSteps = Math.round(graphRange / interval);
46432
- var tempInterval = graphRange / numberOfSteps;
46433
- interval = this.decimalPoint ? tempInterval : Math.ceil(tempInterval);
46434
- }
46435
-
46436
- if (graphMax - graphMin > numberOfSteps * interval) {
46437
- var _tempInterval = (graphMax - graphMin) / numberOfSteps;
46438
-
46439
- interval = this.decimalPoint ? _tempInterval : Math.ceil(_tempInterval);
46440
- }
46441
-
46442
- steps = numberOfSteps;
46443
- }
46444
-
46445
- return {
46446
- steps: steps,
46447
- interval: interval,
46448
- graphMin: graphMin,
46449
- graphMax: graphMax
46450
- };
46451
- }
46452
46364
  }]);
46453
46365
 
46454
46366
  return TimeScale;
@@ -50293,13 +50205,20 @@ var plugins_scrollbar_module = {
50293
50205
  Object.keys(merged).forEach(function (key) {
50294
50206
  scrollbarOpt[key] = merged[key];
50295
50207
  });
50296
- delete scrollbarOpt.savedPosition;
50208
+
50209
+ if (scrollbarOpt.resetPosition) {
50210
+ var _axisOpt$2, _axisOpt$2$range, _axisOpt$3;
50211
+
50212
+ scrollbarOpt.range = axisOpt !== null && axisOpt !== void 0 && (_axisOpt$2 = axisOpt[0]) !== null && _axisOpt$2 !== void 0 && (_axisOpt$2$range = _axisOpt$2.range) !== null && _axisOpt$2$range !== void 0 && _axisOpt$2$range.length ? _toConsumableArray(axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$3 = axisOpt[0]) === null || _axisOpt$3 === void 0 ? void 0 : _axisOpt$3.range) : null;
50213
+ this.resetScrollbarSavedPositions(dir);
50214
+ }
50297
50215
 
50298
50216
  if (!scrollbarOpt.isInit) {
50299
- var _axisOpt$2, _axisOpt$3, _axisOpt$3$range, _axisOpt$4;
50217
+ var _axisOpt$4, _axisOpt$5, _axisOpt$5$range, _axisOpt$6;
50300
50218
 
50301
- scrollbarOpt.type = axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$2 = axisOpt[0]) === null || _axisOpt$2 === void 0 ? void 0 : _axisOpt$2.type;
50302
- scrollbarOpt.range = axisOpt !== null && axisOpt !== void 0 && (_axisOpt$3 = axisOpt[0]) !== null && _axisOpt$3 !== void 0 && (_axisOpt$3$range = _axisOpt$3.range) !== null && _axisOpt$3$range !== void 0 && _axisOpt$3$range.length ? _toConsumableArray(axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$4 = axisOpt[0]) === null || _axisOpt$4 === void 0 ? void 0 : _axisOpt$4.range) : null;
50219
+ scrollbarOpt.type = axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$4 = axisOpt[0]) === null || _axisOpt$4 === void 0 ? void 0 : _axisOpt$4.type;
50220
+ scrollbarOpt.range = axisOpt !== null && axisOpt !== void 0 && (_axisOpt$5 = axisOpt[0]) !== null && _axisOpt$5 !== void 0 && (_axisOpt$5$range = _axisOpt$5.range) !== null && _axisOpt$5$range !== void 0 && _axisOpt$5$range.length ? _toConsumableArray(axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$6 = axisOpt[0]) === null || _axisOpt$6 === void 0 ? void 0 : _axisOpt$6.range) : null;
50221
+ this.resetScrollbarSavedPositions(dir);
50303
50222
  this.initScrollbarRange(dir);
50304
50223
  this.createScrollbarLayout(dir);
50305
50224
  this.createScrollbar(dir);
@@ -50362,7 +50281,7 @@ var plugins_scrollbar_module = {
50362
50281
  * @param updateData is update data
50363
50282
  */
50364
50283
  updateScrollbarInfo: function updateScrollbarInfo(dir, updateData) {
50365
- var _newOpt$, _newOpt$$scrollbar, _newOpt$2, _newOpt$0$scrollbar, _newOpt$3, _newOpt$4, _axisOpt$5, _newOpt$0$scrollbar2;
50284
+ var _newOpt$, _newOpt$$scrollbar, _newOpt$2, _newOpt$0$scrollbar, _newOpt$3, _newOpt$4, _axisOpt$7, _newOpt$0$scrollbar2;
50366
50285
 
50367
50286
  var _this$options = this.options,
50368
50287
  axesX = _this$options.axesX,
@@ -50378,23 +50297,21 @@ var plugins_scrollbar_module = {
50378
50297
  }
50379
50298
 
50380
50299
  var axisOpt = dir === 'x' ? this.axesX : this.axesY;
50381
- var isUpdateAxesRange = !lodash_es_isEqual(newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$4 = newOpt[0]) === null || _newOpt$4 === void 0 ? void 0 : _newOpt$4.range, axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$5 = axisOpt[0]) === null || _axisOpt$5 === void 0 ? void 0 : _axisOpt$5.range);
50300
+ var isUpdateAxesRange = !lodash_es_isEqual(newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$4 = newOpt[0]) === null || _newOpt$4 === void 0 ? void 0 : _newOpt$4.range, axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$7 = axisOpt[0]) === null || _axisOpt$7 === void 0 ? void 0 : _axisOpt$7.range);
50382
50301
 
50383
50302
  if (isUpdateAxesRange || updateData) {
50384
50303
  var _this$options$axesX2, _this$options$axesX2$, _this$options$axesX2$2, _this$options$axesY2, _this$options$axesY2$, _this$options$axesY2$2;
50385
50304
 
50386
50305
  var isResetPosition = dir === 'x' ? (_this$options$axesX2 = this.options.axesX) === null || _this$options$axesX2 === void 0 ? void 0 : (_this$options$axesX2$ = _this$options$axesX2[0]) === null || _this$options$axesX2$ === void 0 ? void 0 : (_this$options$axesX2$2 = _this$options$axesX2$.scrollbar) === null || _this$options$axesX2$2 === void 0 ? void 0 : _this$options$axesX2$2.resetPosition : (_this$options$axesY2 = this.options.axesY) === null || _this$options$axesY2 === void 0 ? void 0 : (_this$options$axesY2$ = _this$options$axesY2[0]) === null || _this$options$axesY2$ === void 0 ? void 0 : (_this$options$axesY2$2 = _this$options$axesY2$.scrollbar) === null || _this$options$axesY2$2 === void 0 ? void 0 : _this$options$axesY2$2.resetPosition;
50387
50306
 
50388
- if (isUpdateAxesRange || isResetPosition) {
50307
+ if (isUpdateAxesRange) {
50389
50308
  var _newOpt$5, _newOpt$5$range, _newOpt$6;
50390
50309
 
50391
- this.scrollbar[dir].range = newOpt !== null && newOpt !== void 0 && (_newOpt$5 = newOpt[0]) !== null && _newOpt$5 !== void 0 && (_newOpt$5$range = _newOpt$5.range) !== null && _newOpt$5$range !== void 0 && _newOpt$5$range.length ? _toConsumableArray(newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$6 = newOpt[0]) === null || _newOpt$6 === void 0 ? void 0 : _newOpt$6.range) : null; // range가 업데이트되면 저장된 스크롤 위치를 초기화
50310
+ this.scrollbar[dir].range = newOpt !== null && newOpt !== void 0 && (_newOpt$5 = newOpt[0]) !== null && _newOpt$5 !== void 0 && (_newOpt$5$range = _newOpt$5.range) !== null && _newOpt$5$range !== void 0 && _newOpt$5$range.length ? _toConsumableArray(newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$6 = newOpt[0]) === null || _newOpt$6 === void 0 ? void 0 : _newOpt$6.range) : null;
50311
+ }
50392
50312
 
50393
- delete this.scrollbar[dir].savedPosition;
50394
- } else if (updateData) {
50395
- // 데이터가 업데이트되면 저장된 픽셀 위치는 더 이상 유효하지 않으므로 삭제하여
50396
- // 논리적 범위에 따라 다시 계산하도록 합니다.
50397
- delete this.scrollbar[dir].savedPosition;
50313
+ if (isResetPosition || updateData) {
50314
+ this.resetScrollbarSavedPositions(dir);
50398
50315
  }
50399
50316
 
50400
50317
  this.initScrollbarRange(dir);
@@ -50532,17 +50449,32 @@ var plugins_scrollbar_module = {
50532
50449
  var scrollHeight = isXScroll ? scrollbarOpt.height : scrollbarOpt.width;
50533
50450
  var fullSize = isXScroll ? aPos.x2 - aPos.x1 : aPos.y2 - aPos.y1;
50534
50451
  var buttonSize = scrollbarOpt.showButton ? scrollHeight : 0;
50535
- var trackSize = fullSize - buttonSize * 2; // 현재 위치를 보존해야 하는 경우 기존 위치를 저장
50452
+ var trackSize = fullSize - buttonSize * 2;
50453
+ var thumbSize = this.getScrollbarThumbSize(dir, trackSize); // 비율로 저장된 위치가 있으면 새 track 크기에 맞게 복원
50536
50454
 
50537
- var savedThumbPosition = null;
50455
+ if (preservePosition && scrollbarOpt.savedPositionRatio !== undefined) {
50456
+ var maxPosition = Math.max(0, trackSize - thumbSize.size);
50457
+
50458
+ if (scrollbarOpt.savedAtStart) {
50459
+ thumbSize.position = 0;
50460
+ } else if (scrollbarOpt.savedAtEnd) {
50461
+ thumbSize.position = maxPosition;
50462
+ } else {
50463
+ thumbSize.position = Math.min(scrollbarOpt.savedPositionRatio * trackSize, maxPosition);
50464
+ }
50465
+ } // 위치를 비율 및 처음/끝 고정 여부로 저장
50466
+ // currentMaxPosition === 0 (thumbSize >= trackSize) 인 경우 저장하지 않음
50467
+ // → trackSize가 다시 커졌을 때 이전 savedAtEnd/savedAtStart/savedPositionRatio 상태를 유지
50538
50468
 
50539
- if (preservePosition && scrollbarOpt.savedPosition !== undefined) {
50540
- savedThumbPosition = scrollbarOpt.savedPosition;
50541
- }
50542
50469
 
50543
- var thumbSize = this.getScrollbarThumbSize(dir, trackSize, savedThumbPosition); // 새로 계산된 위치를 저장
50470
+ var currentMaxPosition = Math.max(0, trackSize - thumbSize.size);
50471
+
50472
+ if (currentMaxPosition > 0) {
50473
+ scrollbarOpt.savedPositionRatio = thumbSize.position / trackSize;
50474
+ scrollbarOpt.savedAtStart = thumbSize.position <= 0;
50475
+ scrollbarOpt.savedAtEnd = thumbSize.position >= currentMaxPosition;
50476
+ }
50544
50477
 
50545
- scrollbarOpt.savedPosition = thumbSize.position;
50546
50478
  var scrollbarStyle = 'display: block;';
50547
50479
  var scrollbarTrackStyle;
50548
50480
  var scrollbarThumbStyle;
@@ -50609,9 +50541,8 @@ var plugins_scrollbar_module = {
50609
50541
  * get scrollbar thumb size
50610
50542
  * @param dir axis direction ('x' | 'y')
50611
50543
  * @param trackSize scrollbar track size
50612
- * @param savedThumbPosition 기존 위치를 보존해야 하는 경우 저장된 위치
50613
50544
  */
50614
- getScrollbarThumbSize: function getScrollbarThumbSize(dir, trackSize, savedThumbPosition) {
50545
+ getScrollbarThumbSize: function getScrollbarThumbSize(dir, trackSize) {
50615
50546
  var scrollbarOpt = this.scrollbar[dir];
50616
50547
 
50617
50548
  var _scrollbarOpt$range3 = _slicedToArray(scrollbarOpt.range, 2),
@@ -50642,9 +50573,9 @@ var plugins_scrollbar_module = {
50642
50573
  var _range = +max - +min;
50643
50574
 
50644
50575
  if (axesType === 'time') {
50645
- var _axisOpt$6, _this$labelRange$dir, _this$labelRange$dir$;
50576
+ var _axisOpt$8, _this$labelRange$dir, _this$labelRange$dir$;
50646
50577
 
50647
- interval = axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$6 = axisOpt[0]) === null || _axisOpt$6 === void 0 ? void 0 : _axisOpt$6.getInterval({
50578
+ interval = axisOpt === null || axisOpt === void 0 ? void 0 : (_axisOpt$8 = axisOpt[0]) === null || _axisOpt$8 === void 0 ? void 0 : _axisOpt$8.getInterval({
50648
50579
  minValue: minMax.min,
50649
50580
  maxValue: minMax.max,
50650
50581
  maxSteps: (_this$labelRange$dir = this.labelRange[dir]) === null || _this$labelRange$dir === void 0 ? void 0 : (_this$labelRange$dir$ = _this$labelRange$dir[0]) === null || _this$labelRange$dir$ === void 0 ? void 0 : _this$labelRange$dir$.max
@@ -50664,12 +50595,7 @@ var plugins_scrollbar_module = {
50664
50595
 
50665
50596
  scrollbarOpt.startValue = startValue;
50666
50597
  scrollbarOpt.steps = steps;
50667
- scrollbarOpt.interval = interval; // 기존 위치를 보존해야 하는 경우 저장된 위치를 사용
50668
-
50669
- if (savedThumbPosition !== null) {
50670
- thumbPosition = savedThumbPosition;
50671
- }
50672
-
50598
+ scrollbarOpt.interval = interval;
50673
50599
  return {
50674
50600
  size: thumbSize,
50675
50601
  position: thumbPosition
@@ -50736,18 +50662,35 @@ var plugins_scrollbar_module = {
50736
50662
  if (!isOutOfRange) {
50737
50663
  scrollbarOpt.range = [minValue, maxValue]; // 사용자가 스크롤할 때는 저장된 위치를 초기화
50738
50664
 
50739
- delete scrollbarOpt.savedPosition;
50665
+ this.resetScrollbarSavedPositions(dir);
50740
50666
  this.update({
50741
50667
  updateSeries: false,
50742
50668
  updateSelTip: {
50743
50669
  update: false,
50744
50670
  keepDomain: false
50745
50671
  },
50746
- lightUpdate: minValue > 1
50672
+ lightUpdate: minValue > 1,
50673
+ updateByScrollbar: true
50747
50674
  });
50748
50675
  }
50749
50676
  },
50750
50677
 
50678
+ /**
50679
+ * reset scrollbar saved positions
50680
+ * @param dir axis direction ('x' | 'y')
50681
+ */
50682
+ resetScrollbarSavedPositions: function resetScrollbarSavedPositions(dir) {
50683
+ var scrollbarOpt = this.scrollbar[dir];
50684
+
50685
+ if (!scrollbarOpt) {
50686
+ return;
50687
+ }
50688
+
50689
+ delete scrollbarOpt.savedPositionRatio;
50690
+ delete scrollbarOpt.savedAtStart;
50691
+ delete scrollbarOpt.savedAtEnd;
50692
+ },
50693
+
50751
50694
  /**
50752
50695
  * create scroll event
50753
50696
  */
@@ -51002,13 +50945,15 @@ var plugins_scrollbar_module = {
51002
50945
 
51003
50946
  this.scrollbar[dir].range = [movedMin, movedMax]; // 사용자가 드래그로 스크롤할 때는 저장된 위치를 초기화
51004
50947
 
51005
- delete this.scrollbar[dir].savedPosition;
50948
+ this.resetScrollbarSavedPositions(dir);
51006
50949
  this.update({
51007
50950
  updateSeries: false,
51008
50951
  updateSelTip: {
51009
50952
  update: false,
51010
50953
  keepDomain: false
51011
- }
50954
+ },
50955
+ lightUpdate: movedMin > 1,
50956
+ updateByScrollbar: true
51012
50957
  });
51013
50958
  },
51014
50959
 
@@ -55228,9 +55173,10 @@ var element_tip_modules = {
55228
55173
  interval = scrollbarOpt.interval,
55229
55174
  type = scrollbarOpt.type;
55230
55175
 
55231
- var _range = _slicedToArray(range, 2),
55232
- min = _range[0],
55233
- max = _range[1];
55176
+ var _ref3 = range !== null && range !== void 0 ? range : [],
55177
+ _ref4 = _slicedToArray(_ref3, 2),
55178
+ min = _ref4[0],
55179
+ max = _ref4[1];
55234
55180
 
55235
55181
  if (truthyNumber(min) && truthyNumber(max)) {
55236
55182
  labelCount = Math.floor((+max - +min) / interval) + 1;
@@ -55899,15 +55845,15 @@ var chart_core_EvChart = /*#__PURE__*/function () {
55899
55845
  this.axesRange = this.getAxesRange();
55900
55846
  this.labelOffset = this.getLabelOffset();
55901
55847
  this.labelRange = this.getAxesLabelRange();
55902
- this.axesSteps = this.calculateSteps();
55903
- this.adjustXAndYAxisWidth();
55904
- this.drawAxis(hitInfo);
55905
- this.drawSeries(hitInfo);
55906
55848
 
55907
55849
  if ((_this$scrollbar = this.scrollbar) !== null && _this$scrollbar !== void 0 && (_this$scrollbar$x = _this$scrollbar.x) !== null && _this$scrollbar$x !== void 0 && _this$scrollbar$x.use || (_this$scrollbar2 = this.scrollbar) !== null && _this$scrollbar2 !== void 0 && (_this$scrollbar2$y = _this$scrollbar2.y) !== null && _this$scrollbar2$y !== void 0 && _this$scrollbar2$y.use) {
55908
55850
  this.updateScrollbarPosition();
55909
55851
  }
55910
55852
 
55853
+ this.axesSteps = this.calculateSteps();
55854
+ this.adjustXAndYAxisWidth();
55855
+ this.drawAxis(hitInfo);
55856
+ this.drawSeries(hitInfo);
55911
55857
  this.drawTip();
55912
55858
 
55913
55859
  if (this.bufferCanvas && ((_this$bufferCanvas = this.bufferCanvas) === null || _this$bufferCanvas === void 0 ? void 0 : _this$bufferCanvas.width) > 1 && ((_this$bufferCanvas2 = this.bufferCanvas) === null || _this$bufferCanvas2 === void 0 ? void 0 : _this$bufferCanvas2.height) > 1) {
@@ -56566,14 +56512,20 @@ var chart_core_EvChart = /*#__PURE__*/function () {
56566
56512
 
56567
56513
  }, {
56568
56514
  key: "updateScrollbar",
56569
- value: function updateScrollbar(updateData) {
56570
- var _this$scrollbar3, _this$scrollbar3$x, _this$options$axesX2, _this$options$axesX2$, _this$options$axesX2$2, _this$scrollbar4, _this$scrollbar4$y, _this$options$axesY2, _this$options$axesY2$, _this$options$axesY2$2;
56515
+ value: function updateScrollbar(updateData, updateByScrollbar) {
56516
+ var _this$options$axesX$2, _this$options$axesX2, _this$options$axesX2$, _this$options$axesX2$2, _this$options$axesY$2, _this$options$axesY2, _this$options$axesY2$, _this$options$axesY2$2, _this$scrollbar$x$use, _this$scrollbar3, _this$scrollbar3$x, _this$scrollbar$y$use, _this$scrollbar4, _this$scrollbar4$y;
56517
+
56518
+ var isForceUpdate = updateByScrollbar || updateData;
56519
+ var xUse = (_this$options$axesX$2 = (_this$options$axesX2 = this.options.axesX) === null || _this$options$axesX2 === void 0 ? void 0 : (_this$options$axesX2$ = _this$options$axesX2[0]) === null || _this$options$axesX2$ === void 0 ? void 0 : (_this$options$axesX2$2 = _this$options$axesX2$.scrollbar) === null || _this$options$axesX2$2 === void 0 ? void 0 : _this$options$axesX2$2.use) !== null && _this$options$axesX$2 !== void 0 ? _this$options$axesX$2 : false;
56520
+ var yUse = (_this$options$axesY$2 = (_this$options$axesY2 = this.options.axesY) === null || _this$options$axesY2 === void 0 ? void 0 : (_this$options$axesY2$ = _this$options$axesY2[0]) === null || _this$options$axesY2$ === void 0 ? void 0 : (_this$options$axesY2$2 = _this$options$axesY2$.scrollbar) === null || _this$options$axesY2$2 === void 0 ? void 0 : _this$options$axesY2$2.use) !== null && _this$options$axesY$2 !== void 0 ? _this$options$axesY$2 : false;
56521
+ var prevXUse = (_this$scrollbar$x$use = (_this$scrollbar3 = this.scrollbar) === null || _this$scrollbar3 === void 0 ? void 0 : (_this$scrollbar3$x = _this$scrollbar3.x) === null || _this$scrollbar3$x === void 0 ? void 0 : _this$scrollbar3$x.use) !== null && _this$scrollbar$x$use !== void 0 ? _this$scrollbar$x$use : false;
56522
+ var prevYUse = (_this$scrollbar$y$use = (_this$scrollbar4 = this.scrollbar) === null || _this$scrollbar4 === void 0 ? void 0 : (_this$scrollbar4$y = _this$scrollbar4.y) === null || _this$scrollbar4$y === void 0 ? void 0 : _this$scrollbar4$y.use) !== null && _this$scrollbar$y$use !== void 0 ? _this$scrollbar$y$use : false;
56571
56523
 
56572
- if ((_this$scrollbar3 = this.scrollbar) !== null && _this$scrollbar3 !== void 0 && (_this$scrollbar3$x = _this$scrollbar3.x) !== null && _this$scrollbar3$x !== void 0 && _this$scrollbar3$x.isInit || (_this$options$axesX2 = this.options.axesX) !== null && _this$options$axesX2 !== void 0 && (_this$options$axesX2$ = _this$options$axesX2[0]) !== null && _this$options$axesX2$ !== void 0 && (_this$options$axesX2$2 = _this$options$axesX2$.scrollbar) !== null && _this$options$axesX2$2 !== void 0 && _this$options$axesX2$2.use) {
56524
+ if (xUse !== prevXUse || xUse || isForceUpdate && xUse) {
56573
56525
  this.updateScrollbarInfo('x', updateData);
56574
56526
  }
56575
56527
 
56576
- if ((_this$scrollbar4 = this.scrollbar) !== null && _this$scrollbar4 !== void 0 && (_this$scrollbar4$y = _this$scrollbar4.y) !== null && _this$scrollbar4$y !== void 0 && _this$scrollbar4$y.isInit || (_this$options$axesY2 = this.options.axesY) !== null && _this$options$axesY2 !== void 0 && (_this$options$axesY2$ = _this$options$axesY2[0]) !== null && _this$options$axesY2$ !== void 0 && (_this$options$axesY2$2 = _this$options$axesY2$.scrollbar) !== null && _this$options$axesY2$2 !== void 0 && _this$options$axesY2$2.use) {
56528
+ if (yUse !== prevYUse || yUse || isForceUpdate && yUse) {
56577
56529
  this.updateScrollbarInfo('y', updateData);
56578
56530
  }
56579
56531
  }
@@ -56599,13 +56551,14 @@ var chart_core_EvChart = /*#__PURE__*/function () {
56599
56551
  updateLegend = updateInfo.updateLegend,
56600
56552
  updateData = updateInfo.updateData,
56601
56553
  updateTooltip = updateInfo.updateTooltip,
56602
- lightUpdate = updateInfo.lightUpdate;
56554
+ lightUpdate = updateInfo.lightUpdate,
56555
+ updateByScrollbar = updateInfo.updateByScrollbar;
56603
56556
 
56604
56557
  if (!this.isInit) {
56605
56558
  return;
56606
56559
  }
56607
56560
 
56608
- this.updateScrollbar(updateData);
56561
+ this.updateScrollbar(updateData, updateByScrollbar);
56609
56562
  this.resetProps();
56610
56563
  this.updateSeries = updateSeries;
56611
56564