evui 3.4.156 → 3.4.157

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
@@ -371,6 +371,81 @@ if(content.locals) module.exports = content.locals;
371
371
  var add = __webpack_require__("499e").default
372
372
  var update = add("5a9ac64a", content, true, {"sourceMap":false,"shadowMode":false});
373
373
 
374
+ /***/ }),
375
+
376
+ /***/ "10d1":
377
+ /***/ (function(module, exports, __webpack_require__) {
378
+
379
+ "use strict";
380
+
381
+ var global = __webpack_require__("da84");
382
+ var redefineAll = __webpack_require__("e2cc");
383
+ var InternalMetadataModule = __webpack_require__("f183");
384
+ var collection = __webpack_require__("6d61");
385
+ var collectionWeak = __webpack_require__("acac");
386
+ var isObject = __webpack_require__("861d");
387
+ var enforceIternalState = __webpack_require__("69f3").enforce;
388
+ var NATIVE_WEAK_MAP = __webpack_require__("7f9a");
389
+
390
+ var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
391
+ var isExtensible = Object.isExtensible;
392
+ var InternalWeakMap;
393
+
394
+ var wrapper = function (init) {
395
+ return function WeakMap() {
396
+ return init(this, arguments.length ? arguments[0] : undefined);
397
+ };
398
+ };
399
+
400
+ // `WeakMap` constructor
401
+ // https://tc39.github.io/ecma262/#sec-weakmap-constructor
402
+ var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);
403
+
404
+ // IE11 WeakMap frozen keys fix
405
+ // We can't use feature detection because it crash some old IE builds
406
+ // https://github.com/zloirock/core-js/issues/485
407
+ if (NATIVE_WEAK_MAP && IS_IE11) {
408
+ InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
409
+ InternalMetadataModule.REQUIRED = true;
410
+ var WeakMapPrototype = $WeakMap.prototype;
411
+ var nativeDelete = WeakMapPrototype['delete'];
412
+ var nativeHas = WeakMapPrototype.has;
413
+ var nativeGet = WeakMapPrototype.get;
414
+ var nativeSet = WeakMapPrototype.set;
415
+ redefineAll(WeakMapPrototype, {
416
+ 'delete': function (key) {
417
+ if (isObject(key) && !isExtensible(key)) {
418
+ var state = enforceIternalState(this);
419
+ if (!state.frozen) state.frozen = new InternalWeakMap();
420
+ return nativeDelete.call(this, key) || state.frozen['delete'](key);
421
+ } return nativeDelete.call(this, key);
422
+ },
423
+ has: function has(key) {
424
+ if (isObject(key) && !isExtensible(key)) {
425
+ var state = enforceIternalState(this);
426
+ if (!state.frozen) state.frozen = new InternalWeakMap();
427
+ return nativeHas.call(this, key) || state.frozen.has(key);
428
+ } return nativeHas.call(this, key);
429
+ },
430
+ get: function get(key) {
431
+ if (isObject(key) && !isExtensible(key)) {
432
+ var state = enforceIternalState(this);
433
+ if (!state.frozen) state.frozen = new InternalWeakMap();
434
+ return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);
435
+ } return nativeGet.call(this, key);
436
+ },
437
+ set: function set(key, value) {
438
+ if (isObject(key) && !isExtensible(key)) {
439
+ var state = enforceIternalState(this);
440
+ if (!state.frozen) state.frozen = new InternalWeakMap();
441
+ nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);
442
+ } else nativeSet.call(this, key, value);
443
+ return this;
444
+ }
445
+ });
446
+ }
447
+
448
+
374
449
  /***/ }),
375
450
 
376
451
  /***/ "1148":
@@ -11244,7 +11319,7 @@ $({ target: 'Number', stat: true }, {
11244
11319
  /***/ "9224":
11245
11320
  /***/ (function(module) {
11246
11321
 
11247
- module.exports = JSON.parse("{\"a\":\"3.4.156\"}");
11322
+ module.exports = JSON.parse("{\"a\":\"3.4.157\"}");
11248
11323
 
11249
11324
  /***/ }),
11250
11325
 
@@ -13085,6 +13160,135 @@ $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
13085
13160
  });
13086
13161
 
13087
13162
 
13163
+ /***/ }),
13164
+
13165
+ /***/ "acac":
13166
+ /***/ (function(module, exports, __webpack_require__) {
13167
+
13168
+ "use strict";
13169
+
13170
+ var redefineAll = __webpack_require__("e2cc");
13171
+ var getWeakData = __webpack_require__("f183").getWeakData;
13172
+ var anObject = __webpack_require__("825a");
13173
+ var isObject = __webpack_require__("861d");
13174
+ var anInstance = __webpack_require__("19aa");
13175
+ var iterate = __webpack_require__("2266");
13176
+ var ArrayIterationModule = __webpack_require__("b727");
13177
+ var $has = __webpack_require__("5135");
13178
+ var InternalStateModule = __webpack_require__("69f3");
13179
+
13180
+ var setInternalState = InternalStateModule.set;
13181
+ var internalStateGetterFor = InternalStateModule.getterFor;
13182
+ var find = ArrayIterationModule.find;
13183
+ var findIndex = ArrayIterationModule.findIndex;
13184
+ var id = 0;
13185
+
13186
+ // fallback for uncaught frozen keys
13187
+ var uncaughtFrozenStore = function (store) {
13188
+ return store.frozen || (store.frozen = new UncaughtFrozenStore());
13189
+ };
13190
+
13191
+ var UncaughtFrozenStore = function () {
13192
+ this.entries = [];
13193
+ };
13194
+
13195
+ var findUncaughtFrozen = function (store, key) {
13196
+ return find(store.entries, function (it) {
13197
+ return it[0] === key;
13198
+ });
13199
+ };
13200
+
13201
+ UncaughtFrozenStore.prototype = {
13202
+ get: function (key) {
13203
+ var entry = findUncaughtFrozen(this, key);
13204
+ if (entry) return entry[1];
13205
+ },
13206
+ has: function (key) {
13207
+ return !!findUncaughtFrozen(this, key);
13208
+ },
13209
+ set: function (key, value) {
13210
+ var entry = findUncaughtFrozen(this, key);
13211
+ if (entry) entry[1] = value;
13212
+ else this.entries.push([key, value]);
13213
+ },
13214
+ 'delete': function (key) {
13215
+ var index = findIndex(this.entries, function (it) {
13216
+ return it[0] === key;
13217
+ });
13218
+ if (~index) this.entries.splice(index, 1);
13219
+ return !!~index;
13220
+ }
13221
+ };
13222
+
13223
+ module.exports = {
13224
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
13225
+ var C = wrapper(function (that, iterable) {
13226
+ anInstance(that, C, CONSTRUCTOR_NAME);
13227
+ setInternalState(that, {
13228
+ type: CONSTRUCTOR_NAME,
13229
+ id: id++,
13230
+ frozen: undefined
13231
+ });
13232
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
13233
+ });
13234
+
13235
+ var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
13236
+
13237
+ var define = function (that, key, value) {
13238
+ var state = getInternalState(that);
13239
+ var data = getWeakData(anObject(key), true);
13240
+ if (data === true) uncaughtFrozenStore(state).set(key, value);
13241
+ else data[state.id] = value;
13242
+ return that;
13243
+ };
13244
+
13245
+ redefineAll(C.prototype, {
13246
+ // 23.3.3.2 WeakMap.prototype.delete(key)
13247
+ // 23.4.3.3 WeakSet.prototype.delete(value)
13248
+ 'delete': function (key) {
13249
+ var state = getInternalState(this);
13250
+ if (!isObject(key)) return false;
13251
+ var data = getWeakData(key);
13252
+ if (data === true) return uncaughtFrozenStore(state)['delete'](key);
13253
+ return data && $has(data, state.id) && delete data[state.id];
13254
+ },
13255
+ // 23.3.3.4 WeakMap.prototype.has(key)
13256
+ // 23.4.3.4 WeakSet.prototype.has(value)
13257
+ has: function has(key) {
13258
+ var state = getInternalState(this);
13259
+ if (!isObject(key)) return false;
13260
+ var data = getWeakData(key);
13261
+ if (data === true) return uncaughtFrozenStore(state).has(key);
13262
+ return data && $has(data, state.id);
13263
+ }
13264
+ });
13265
+
13266
+ redefineAll(C.prototype, IS_MAP ? {
13267
+ // 23.3.3.3 WeakMap.prototype.get(key)
13268
+ get: function get(key) {
13269
+ var state = getInternalState(this);
13270
+ if (isObject(key)) {
13271
+ var data = getWeakData(key);
13272
+ if (data === true) return uncaughtFrozenStore(state).get(key);
13273
+ return data ? data[state.id] : undefined;
13274
+ }
13275
+ },
13276
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
13277
+ set: function set(key, value) {
13278
+ return define(this, key, value);
13279
+ }
13280
+ } : {
13281
+ // 23.4.3.1 WeakSet.prototype.add(value)
13282
+ add: function add(value) {
13283
+ return define(this, value, true);
13284
+ }
13285
+ });
13286
+
13287
+ return C;
13288
+ }
13289
+ };
13290
+
13291
+
13088
13292
  /***/ }),
13089
13293
 
13090
13294
  /***/ "ad6d":
@@ -22283,9 +22487,9 @@ var _Set_Set = _getNative(_root["a" /* default */], 'Set');
22283
22487
 
22284
22488
 
22285
22489
  /* Built-in method references that are verified to be native. */
22286
- var WeakMap = _getNative(_root["a" /* default */], 'WeakMap');
22490
+ var _WeakMap_WeakMap = _getNative(_root["a" /* default */], 'WeakMap');
22287
22491
 
22288
- /* harmony default export */ var _WeakMap = (WeakMap);
22492
+ /* harmony default export */ var _WeakMap = (_WeakMap_WeakMap);
22289
22493
 
22290
22494
  // CONCATENATED MODULE: ./node_modules/lodash-es/_getTag.js
22291
22495
 
@@ -38946,6 +39150,30 @@ var textMeasureCtx = textMeasureCanvas.getContext('2d');
38946
39150
  }
38947
39151
 
38948
39152
  return "".concat(color, "80");
39153
+ },
39154
+
39155
+ /**
39156
+ * 클릭 좌표(cx, cy)에서 데이터 포인트까지의 거리²를 반환한다.
39157
+ * w/h 가 있으면 박스 외벽까지의 거리(내부면 0), 없으면 포인트까지의 유클리드 거리².
39158
+ * @param {object} data - 데이터 포인트 (xp, yp, w?, h?)
39159
+ * @param {number} cx - 클릭 x 좌표
39160
+ * @param {number} cy - 클릭 y 좌표
39161
+ * @returns {number}
39162
+ */
39163
+ calcBoxDistance: function calcBoxDistance(data, cx, cy) {
39164
+ if (data.w !== null && data.w !== undefined && data.h !== null && data.h !== undefined) {
39165
+ var sx = data.xp;
39166
+ var sy = data.yp;
39167
+ var xMin = Math.min(sx, sx + data.w);
39168
+ var xMax = Math.max(sx, sx + data.w);
39169
+ var yMin = Math.min(sy, sy + data.h);
39170
+ var yMax = Math.max(sy, sy + data.h);
39171
+ var dx = Math.max(0, xMin - cx, cx - xMax);
39172
+ var dy = Math.max(0, yMin - cy, cy - yMax);
39173
+ return dx * dx + dy * dy;
39174
+ }
39175
+
39176
+ return Math.pow(data.xp - cx, 2) + Math.pow(data.yp - cy, 2);
38949
39177
  }
38950
39178
  });
38951
39179
  // CONCATENATED MODULE: ./src/components/chart/model/model.store.js
@@ -38972,6 +39200,8 @@ var textMeasureCtx = textMeasureCanvas.getContext('2d');
38972
39200
 
38973
39201
 
38974
39202
 
39203
+
39204
+
38975
39205
 
38976
39206
 
38977
39207
 
@@ -39965,27 +40195,86 @@ var modules = {
39965
40195
  * 선택 우선순위:
39966
40196
  * 1. directHit (bar 박스 내부 클릭) — 가장 가까운 것
39967
40197
  * 2. hit (line 포인트 근접 등) — 가장 가까운 것
39968
- * 3. hit 전혀 없으면 데이터가 있는 시리즈로 fallback (기존 동작 호환)
39969
- *
39970
- * 과거에는 "같은 라벨 위에서 값이 가장 큰 시리즈"를 돌려주는 max-value 덮어쓰기 방식이었으나,
39971
- * bar + line combo 차트에서 작은 bar를 클릭해도 큰 값의 line이 선택되는 버그의 원인이었다.
39972
- * 이번 수정으로 사용자가 실제로 가리킨 시리즈(hit)가 선택되도록 바뀐다.
40198
+ * 3. hit 없으면 클릭 좌표에 가장 가까운 시리즈로 fallback (distance 기반)
39973
40199
  *
39974
40200
  * @param {array} offset position x and y
39975
40201
  * @param {boolean} useApproximate if it's true. it'll look for closed item on mouse position
39976
40202
  * @param {number} dataIndex selected data index
39977
40203
  * @param {boolean} useSelectLabelOrItem used to display select label/item at tooltip location
40204
+ * @param {boolean} disableNullLabelSnap true 이면 all-null 라벨도 그대로 반환 (click/dblclick 용)
39978
40205
  *
39979
40206
  * @returns {object} hit item information
39980
40207
  */
39981
40208
  getHitItemByPosition: function getHitItemByPosition(offset) {
39982
- var _ref4;
40209
+ var _this8 = this,
40210
+ _ref4;
39983
40211
 
39984
40212
  var useApproximate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
39985
40213
  var dataIndex = arguments.length > 2 ? arguments[2] : undefined;
39986
40214
  var useSelectLabelOrItem = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
40215
+ var disableNullLabelSnap = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
39987
40216
  var seriesIDs = Object.keys(this.seriesList);
39988
- var isHorizontal = !!this.options.horizontal; // hit 기반 결과 (최우선)
40217
+ var isHorizontal = !!this.options.horizontal;
40218
+
40219
+ var _offset = _slicedToArray(offset, 2),
40220
+ cx = _offset[0],
40221
+ cy = _offset[1]; // dataIndex 미지정 시 클릭 좌표에 가장 가까운 valid 라벨 인덱스 결정.
40222
+ // disableNullLabelSnap=true 이면 all-null 라벨도 후보로 인정.
40223
+
40224
+
40225
+ var resolvedDataIndex = dataIndex;
40226
+
40227
+ if (resolvedDataIndex === undefined && !useApproximate) {
40228
+ var refSeriesID = seriesIDs.find(function (sId) {
40229
+ var _s$data;
40230
+
40231
+ var s = _this8.seriesList[sId];
40232
+ return (s === null || s === void 0 ? void 0 : s.show) && (s === null || s === void 0 ? void 0 : (_s$data = s.data) === null || _s$data === void 0 ? void 0 : _s$data.length) > 0;
40233
+ });
40234
+
40235
+ if (refSeriesID) {
40236
+ var refData = this.seriesList[refSeriesID].data;
40237
+ var clickPos = isHorizontal ? offset[1] : offset[0];
40238
+ var nearestDistance = Infinity;
40239
+ var nearestIndex = -1;
40240
+
40241
+ var _loop = function _loop(i) {
40242
+ var hasValidData = disableNullLabelSnap || seriesIDs.some(function (sId) {
40243
+ var _s$data2, _s$data2$i, _s$data3, _s$data3$i;
40244
+
40245
+ var s = _this8.seriesList[sId];
40246
+ return (s === null || s === void 0 ? void 0 : s.show) && ((_s$data2 = s.data) === null || _s$data2 === void 0 ? void 0 : (_s$data2$i = _s$data2[i]) === null || _s$data2$i === void 0 ? void 0 : _s$data2$i.o) !== null && ((_s$data3 = s.data) === null || _s$data3 === void 0 ? void 0 : (_s$data3$i = _s$data3[i]) === null || _s$data3$i === void 0 ? void 0 : _s$data3$i.o) !== undefined;
40247
+ });
40248
+ var p = refData[i];
40249
+
40250
+ if (hasValidData && p) {
40251
+ var labelPos;
40252
+
40253
+ if (isHorizontal) {
40254
+ labelPos = p.h ? p.yp + p.h / 2 : p.yp;
40255
+ } else {
40256
+ labelPos = p.w ? p.xp + p.w / 2 : p.xp;
40257
+ }
40258
+
40259
+ if (labelPos !== null && labelPos !== undefined) {
40260
+ var d = Math.abs(clickPos - labelPos);
40261
+
40262
+ if (d < nearestDistance) {
40263
+ nearestDistance = d;
40264
+ nearestIndex = i;
40265
+ }
40266
+ }
40267
+ }
40268
+ };
40269
+
40270
+ for (var i = 0; i < refData.length; i++) {
40271
+ _loop(i);
40272
+ }
40273
+
40274
+ if (nearestIndex !== -1) resolvedDataIndex = nearestIndex;
40275
+ }
40276
+ } // hit 기반 결과 (최우선)
40277
+
39989
40278
 
39990
40279
  var hitType = null;
39991
40280
  var hitLabel = null;
@@ -39994,7 +40283,7 @@ var modules = {
39994
40283
  var hitSeriesID = '';
39995
40284
  var hitDataIndex = null;
39996
40285
  var hitDistance = Infinity;
39997
- var hasDirectHit = false; // fallback: hit 전혀 없을 때 사용할 "데이터 있는 시리즈" 정보
40286
+ var hasDirectHit = false; // hit 없을 때 fallback — 값이 있는 시리즈 중 클릭 좌표에 가장 가까운 것.
39998
40287
 
39999
40288
  var fallbackType = null;
40000
40289
  var fallbackLabel = null;
@@ -40002,6 +40291,7 @@ var modules = {
40002
40291
  var fallbackValue = null;
40003
40292
  var fallbackSeriesID = '';
40004
40293
  var fallbackDataIndex = null;
40294
+ var fallbackDistance = Infinity;
40005
40295
  var acc = 0;
40006
40296
  var useStack = false;
40007
40297
 
@@ -40011,7 +40301,7 @@ var modules = {
40011
40301
  var findFn = useApproximate ? series.findApproximateData : series.findGraphData;
40012
40302
 
40013
40303
  if (findFn) {
40014
- var item = findFn.call(series, offset, isHorizontal, dataIndex, useSelectLabelOrItem);
40304
+ var item = findFn.call(series, offset, isHorizontal, resolvedDataIndex, useSelectLabelOrItem);
40015
40305
  var data = item.data;
40016
40306
  var index = item.index;
40017
40307
 
@@ -40036,10 +40326,27 @@ var modules = {
40036
40326
  useStack = true;
40037
40327
  } else {
40038
40328
  acc += data.y;
40039
- } // fallback 기록: 데이터가 있는 시리즈를 저장
40329
+ } // fallback 후보: 값이 있는 시리즈 거리가 가장 가까운 쪽.
40330
+ // 값이 null 인 시리즈는 제외.
40040
40331
 
40041
40332
 
40042
- if (fallbackSeriesID === '') {
40333
+ var hasMeaningfulValue = g !== null && g !== undefined && !Number.isNaN(g);
40334
+ var hasCoords = data.xp !== null && data.xp !== undefined && data.yp !== null && data.yp !== undefined;
40335
+
40336
+ if (hasMeaningfulValue && hasCoords) {
40337
+ var distance = helpers_util.calcBoxDistance(data, cx, cy);
40338
+
40339
+ if (fallbackSeriesID === '' || distance < fallbackDistance) {
40340
+ fallbackDistance = distance;
40341
+ fallbackType = series.type;
40342
+ fallbackLabel = ldata;
40343
+ fallbackValuePos = lp;
40344
+ fallbackValue = g;
40345
+ fallbackSeriesID = seriesID;
40346
+ fallbackDataIndex = index;
40347
+ }
40348
+ } else if (hasMeaningfulValue && fallbackSeriesID === '') {
40349
+ // 좌표 없는 예외 케이스 — 첫 후보로만 등록
40043
40350
  fallbackType = series.type;
40044
40351
  fallbackLabel = ldata;
40045
40352
  fallbackValuePos = lp;
@@ -40050,12 +40357,12 @@ var modules = {
40050
40357
 
40051
40358
 
40052
40359
  if (item.hit && data.xp !== undefined && data.yp !== undefined) {
40053
- var distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
40360
+ var _distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
40054
40361
 
40055
40362
  if (item.directHit) {
40056
40363
  // 직접 박스 히트는 최우선. 여러 개이면 가장 가까운 것.
40057
- if (!hasDirectHit || distance < hitDistance) {
40058
- hitDistance = distance;
40364
+ if (!hasDirectHit || _distance < hitDistance) {
40365
+ hitDistance = _distance;
40059
40366
  hitType = series.type;
40060
40367
  hitLabel = ldata;
40061
40368
  hitValuePos = lp;
@@ -40068,8 +40375,8 @@ var modules = {
40068
40375
  } else if (!hasDirectHit) {
40069
40376
  // directHit가 없을 때만 일반 hit 거리 비교 참여
40070
40377
  // (라인 근접 히트가 박스 직접 히트를 이기지 못하도록)
40071
- if (distance < hitDistance) {
40072
- hitDistance = distance;
40378
+ if (_distance < hitDistance) {
40379
+ hitDistance = _distance;
40073
40380
  hitType = series.type;
40074
40381
  hitLabel = ldata;
40075
40382
  hitValuePos = lp;
@@ -40083,6 +40390,25 @@ var modules = {
40083
40390
  }
40084
40391
  }
40085
40392
  }
40393
+ } // all-null 라벨인 경우 label/dataIndex 만 채워 반환 (sId='', value=0).
40394
+
40395
+
40396
+ if (disableNullLabelSnap && hitSeriesID === '' && fallbackSeriesID === '' && resolvedDataIndex !== undefined && resolvedDataIndex >= 0) {
40397
+ var _this$seriesList$_ref;
40398
+
40399
+ var _refSeriesID = seriesIDs.find(function (sId) {
40400
+ var _s$data4;
40401
+
40402
+ var s = _this8.seriesList[sId];
40403
+ return (s === null || s === void 0 ? void 0 : s.show) && (s === null || s === void 0 ? void 0 : (_s$data4 = s.data) === null || _s$data4 === void 0 ? void 0 : _s$data4.length) > 0;
40404
+ });
40405
+
40406
+ var refPoint = _refSeriesID ? (_this$seriesList$_ref = this.seriesList[_refSeriesID].data) === null || _this$seriesList$_ref === void 0 ? void 0 : _this$seriesList$_ref[resolvedDataIndex] : null;
40407
+
40408
+ if (refPoint) {
40409
+ fallbackLabel = isHorizontal ? refPoint.y : refPoint.x;
40410
+ fallbackDataIndex = resolvedDataIndex;
40411
+ }
40086
40412
  }
40087
40413
 
40088
40414
  var hasHit = hitSeriesID !== '';
@@ -40114,9 +40440,9 @@ var modules = {
40114
40440
  getLabelInfoByPosition: function getLabelInfoByPosition(offset, targetAxis) {
40115
40441
  var _Object$values$sort$, _Object$values$sort$2, _scrollbarOpt, _scale, _scale$labels, _scale3, _scale3$labels;
40116
40442
 
40117
- var _offset = _slicedToArray(offset, 2),
40118
- x = _offset[0],
40119
- y = _offset[1];
40443
+ var _offset2 = _slicedToArray(offset, 2),
40444
+ x = _offset2[0],
40445
+ y = _offset2[1];
40120
40446
 
40121
40447
  var aPos = {
40122
40448
  x1: this.chartRect.x1 + this.labelOffset.left,
@@ -40226,7 +40552,7 @@ var modules = {
40226
40552
  * @returns {MouseLabelValue} current mouse target label value
40227
40553
  */
40228
40554
  getCurMouseLabelVal: function getCurMouseLabelVal(targetAxis, offset, labelIndex) {
40229
- var _this8 = this;
40555
+ var _this9 = this;
40230
40556
 
40231
40557
  var _this$options2 = this.options,
40232
40558
  chartType = _this$options2.type,
@@ -40243,13 +40569,13 @@ var modules = {
40243
40569
  case 'bar':
40244
40570
  case 'line':
40245
40571
  {
40246
- result = horizontal && !isXAxis || !horizontal && isXAxis ? _this8.data.labels[labelIndex] : '';
40572
+ result = horizontal && !isXAxis || !horizontal && isXAxis ? _this9.data.labels[labelIndex] : '';
40247
40573
  break;
40248
40574
  }
40249
40575
 
40250
40576
  case 'heatMap':
40251
40577
  {
40252
- result = _this8.data.labels[targetAxisDirection][labelIndex];
40578
+ result = _this9.data.labels[targetAxisDirection][labelIndex];
40253
40579
  break;
40254
40580
  }
40255
40581
 
@@ -40263,19 +40589,19 @@ var modules = {
40263
40589
  var calLabelValUseMousePos = function calLabelValUseMousePos() {
40264
40590
  var result = '';
40265
40591
  var aPos = {
40266
- x1: _this8.chartRect.x1 + _this8.labelOffset.left,
40267
- x2: _this8.chartRect.x2 - _this8.labelOffset.right,
40268
- y1: _this8.chartRect.y1 + _this8.labelOffset.top,
40269
- y2: _this8.chartRect.y2 - _this8.labelOffset.bottom
40592
+ x1: _this9.chartRect.x1 + _this9.labelOffset.left,
40593
+ x2: _this9.chartRect.x2 - _this9.labelOffset.right,
40594
+ y1: _this9.chartRect.y1 + _this9.labelOffset.top,
40595
+ y2: _this9.chartRect.y2 - _this9.labelOffset.bottom
40270
40596
  };
40271
- var _this8$axesSteps$targ = _this8.axesSteps[targetAxisDirection][0],
40272
- steps = _this8$axesSteps$targ.steps,
40273
- labelValInterval = _this8$axesSteps$targ.interval,
40274
- graphMin = _this8$axesSteps$targ.graphMin;
40275
- var _this8$axesRange$targ = _this8.axesRange[targetAxisDirection][0].size,
40276
- labelWidth = _this8$axesRange$targ.width,
40277
- labelHeight = _this8$axesRange$targ.height;
40278
- var axes = isXAxis ? _this8.axesX : _this8.axesY;
40597
+ var _this9$axesSteps$targ = _this9.axesSteps[targetAxisDirection][0],
40598
+ steps = _this9$axesSteps$targ.steps,
40599
+ labelValInterval = _this9$axesSteps$targ.interval,
40600
+ graphMin = _this9$axesSteps$targ.graphMin;
40601
+ var _this9$axesRange$targ = _this9.axesRange[targetAxisDirection][0].size,
40602
+ labelWidth = _this9$axesRange$targ.width,
40603
+ labelHeight = _this9$axesRange$targ.height;
40604
+ var axes = isXAxis ? _this9.axesX : _this9.axesY;
40279
40605
  var axisStartPoint = aPos[axes[0].units.rectStart];
40280
40606
  var axisEndPoint = aPos[axes[0].units.rectEnd];
40281
40607
  var curMousePosInAxis = Math.abs(offset[isXAxis ? 0 : 1] - axisStartPoint);
@@ -40313,7 +40639,7 @@ var modules = {
40313
40639
  * @returns {object} min/max info for all of data
40314
40640
  */
40315
40641
  getStoreMinMax: function getStoreMinMax() {
40316
- var _this9 = this;
40642
+ var _this10 = this;
40317
40643
 
40318
40644
  var keys = Object.keys(this.seriesList);
40319
40645
  var isHorizontal = this.options.horizontal;
@@ -40331,7 +40657,7 @@ var modules = {
40331
40657
  if (keys.length) {
40332
40658
  return keys.reduce(function (acc, key) {
40333
40659
  var minmax = acc;
40334
- var series = _this9.seriesList[key];
40660
+ var series = _this10.seriesList[key];
40335
40661
  var smm = series.minMax;
40336
40662
  var axisX = series.xAxisIndex;
40337
40663
  var axisY = series.yAxisIndex;
@@ -46869,6 +47195,9 @@ var scale_logarithmic_LogarithmicScale = /*#__PURE__*/function (_Scale) {
46869
47195
  }(scale_scale);
46870
47196
 
46871
47197
  /* harmony default export */ var scale_logarithmic = (scale_logarithmic_LogarithmicScale);
47198
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.weak-map.js
47199
+ var es_weak_map = __webpack_require__("10d1");
47200
+
46872
47201
  // CONCATENATED MODULE: ./src/components/chart/scale/scale.step.js
46873
47202
 
46874
47203
 
@@ -46888,6 +47217,16 @@ var scale_logarithmic_LogarithmicScale = /*#__PURE__*/function (_Scale) {
46888
47217
 
46889
47218
 
46890
47219
 
47220
+
47221
+
47222
+
47223
+
47224
+ /**
47225
+ * scrollbar 사용 시 스크롤마다 labels 전체를 재순회하지 않도록 결과를 캐시
47226
+ */
47227
+
47228
+ var stringMinMaxByLabels = new WeakMap();
47229
+
46891
47230
  var scale_step_StepScale = /*#__PURE__*/function (_Scale) {
46892
47231
  _inherits(StepScale, _Scale);
46893
47232
 
@@ -46903,21 +47242,43 @@ var scale_step_StepScale = /*#__PURE__*/function (_Scale) {
46903
47242
  return _this;
46904
47243
  }
46905
47244
  /**
46906
- * Calculate min/max value, label and size information for step scale
46907
- * @param {object} minMax min/max information (unused on step scale)
46908
- * @param {object} scrollbarOpt scroll bar option
46909
- * @param {object} chartRect chart size information
46910
- *
46911
- * @returns {object} min/max value and label
47245
+ * labels 배열의 문자열 min/max 반환
47246
+ * - alignToGridLine: 전달받은 minMax 그대로 사용
47247
+ * - scrollbar 사용: WeakMap 캐시를 통해 O(n) → O(1)로 단축
47248
+ * - 일반: 매번 getStringMinMax 계산
47249
+ * @param {object} minMax 축 min/max 정보 (alignToGridLine 시 사용)
47250
+ * @param {object} scrollbarOpt 스크롤바 옵션
47251
+ * @returns {{ min: string, max: string }}
46912
47252
  */
46913
47253
 
46914
47254
 
46915
47255
  _createClass(StepScale, [{
47256
+ key: "getStepMinMax",
47257
+ value: function getStepMinMax(minMax, scrollbarOpt) {
47258
+ if (this.labelStyle.alignToGridLine) return minMax;
47259
+ if (!(scrollbarOpt !== null && scrollbarOpt !== void 0 && scrollbarOpt.use)) return helpers_util.getStringMinMax(this.labels);
47260
+
47261
+ if (!stringMinMaxByLabels.has(this.labels)) {
47262
+ stringMinMaxByLabels.set(this.labels, helpers_util.getStringMinMax(this.labels));
47263
+ }
47264
+
47265
+ return stringMinMaxByLabels.get(this.labels);
47266
+ }
47267
+ /**
47268
+ * Calculate min/max value, label and size information for step scale
47269
+ * @param {object} minMax min/max information (unused on step scale)
47270
+ * @param {object} scrollbarOpt scroll bar option
47271
+ * @param {object} chartRect chart size information
47272
+ *
47273
+ * @returns {object} min/max value and label
47274
+ */
47275
+
47276
+ }, {
46916
47277
  key: "calculateScaleRange",
46917
47278
  value: function calculateScaleRange(minMax, scrollbarOpt, chartRect) {
46918
47279
  var _this$labelStyle$maxW, _this$labelStyle;
46919
47280
 
46920
- var stepMinMax = this.labelStyle.alignToGridLine ? minMax : helpers_util.getStringMinMax(this.labels);
47281
+ var stepMinMax = this.getStepMinMax(minMax, scrollbarOpt);
46921
47282
  var maxValue = stepMinMax.max;
46922
47283
  var minValue = stepMinMax.min;
46923
47284
  var minIndex = 0;
@@ -50382,9 +50743,18 @@ var plugins_scrollbar_module = {
50382
50743
  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;
50383
50744
 
50384
50745
  if (isUpdateAxesRange) {
50385
- var _newOpt$5, _newOpt$5$range, _newOpt$6;
50746
+ var _newOpt$5;
50386
50747
 
50387
- 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;
50748
+ var newOptRange = newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$5 = newOpt[0]) === null || _newOpt$5 === void 0 ? void 0 : _newOpt$5.range;
50749
+ var currentRange = this.scrollbar[dir].range;
50750
+
50751
+ if (!isResetPosition && newOptRange !== null && newOptRange !== void 0 && newOptRange.length && currentRange !== null && currentRange !== void 0 && currentRange.length) {
50752
+ // 리사이즈 등으로 range 크기만 변경된 경우, 현재 스크롤 위치(min)를 유지하고 크기만 조정
50753
+ var newSize = newOptRange[1] - newOptRange[0];
50754
+ this.scrollbar[dir].range = [currentRange[0], currentRange[0] + newSize];
50755
+ } else {
50756
+ this.scrollbar[dir].range = newOptRange !== null && newOptRange !== void 0 && newOptRange.length ? _toConsumableArray(newOptRange) : null;
50757
+ }
50388
50758
  }
50389
50759
 
50390
50760
  if (isResetPosition || updateData) {
@@ -51559,6 +51929,7 @@ function inRange_inRange(number, start, end) {
51559
51929
 
51560
51930
 
51561
51931
 
51932
+
51562
51933
 
51563
51934
 
51564
51935
  var plugins_interaction_modules = {
@@ -51772,10 +52143,12 @@ var plugins_interaction_modules = {
51772
52143
  }
51773
52144
 
51774
52145
  var setSelectedItemInfo = function setSelectedItemInfo() {
51775
- var hitInfo = _this.findHitItem(offset); // 실제 클릭된 아이템의 정보 추출 (hitId가 있으면 해당 아이템, 없으면 첫 번째 아이템)
52146
+ var _hitInfo$hitId;
52147
+
52148
+ var hitInfo = _this.findHitItem(offset, true); // 실제 클릭된 아이템의 정보 추출 (hitId가 있으면 해당 아이템, 없으면 첫 번째 아이템)
51776
52149
 
51777
52150
 
51778
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52151
+ var hitItemId = (_hitInfo$hitId = hitInfo.hitId) !== null && _hitInfo$hitId !== void 0 ? _hitInfo$hitId : Object.keys(hitInfo.items)[0];
51779
52152
  var hitItem = hitInfo.items[hitItemId];
51780
52153
 
51781
52154
  if (hitItem) {
@@ -51790,9 +52163,11 @@ var plugins_interaction_modules = {
51790
52163
  };
51791
52164
 
51792
52165
  var setSelectedLabelInfo = function setSelectedLabelInfo(targetAxis) {
51793
- var hitInfo = _this.findHitItem(offset);
52166
+ var _hitInfo$hitId2;
52167
+
52168
+ var hitInfo = _this.findHitItem(offset, true);
51794
52169
 
51795
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52170
+ var hitItemId = (_hitInfo$hitId2 = hitInfo.hitId) !== null && _hitInfo$hitId2 !== void 0 ? _hitInfo$hitId2 : Object.keys(hitInfo.items)[0];
51796
52171
  var hitItem = hitInfo.items[hitItemId];
51797
52172
 
51798
52173
  var _this$getLabelInfoByP = _this.getLabelInfoByPosition(offset, targetAxis),
@@ -51815,9 +52190,11 @@ var plugins_interaction_modules = {
51815
52190
  };
51816
52191
 
51817
52192
  var setSelectedSeriesInfo = function setSelectedSeriesInfo() {
51818
- var hitInfo = _this.findHitItem(offset);
52193
+ var _hitInfo$hitId3;
51819
52194
 
51820
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52195
+ var hitInfo = _this.findHitItem(offset, true);
52196
+
52197
+ var hitItemId = (_hitInfo$hitId3 = hitInfo.hitId) !== null && _hitInfo$hitId3 !== void 0 ? _hitInfo$hitId3 : Object.keys(hitInfo.items)[0];
51821
52198
  var hitItem = hitInfo.items[hitItemId];
51822
52199
 
51823
52200
  if (hitItemId !== null) {
@@ -51900,7 +52277,7 @@ var plugins_interaction_modules = {
51900
52277
  var useSelectSeries = (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.use) && (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.useClick);
51901
52278
 
51902
52279
  var setSelectedItemInfo = function setSelectedItemInfo() {
51903
- var hitInfo = _this.getHitItemByPosition(offset, false);
52280
+ var hitInfo = _this.getHitItemByPosition(offset, false, undefined, false, true);
51904
52281
 
51905
52282
  args.label = hitInfo.label;
51906
52283
  args.value = hitInfo.value;
@@ -51940,9 +52317,11 @@ var plugins_interaction_modules = {
51940
52317
  };
51941
52318
 
51942
52319
  var setSelectedSeriesInfo = function setSelectedSeriesInfo() {
51943
- var hitInfo = _this.findHitItem(offset);
52320
+ var _hitInfo$hitId4;
52321
+
52322
+ var hitInfo = _this.findHitItem(offset, true);
51944
52323
 
51945
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52324
+ var hitItemId = (_hitInfo$hitId4 = hitInfo.hitId) !== null && _hitInfo$hitId4 !== void 0 ? _hitInfo$hitId4 : Object.keys(hitInfo.items)[0];
51946
52325
  var hitItem = hitInfo.items[hitItemId];
51947
52326
 
51948
52327
  if (hitItemId !== null) {
@@ -52576,22 +52955,30 @@ var plugins_interaction_modules = {
52576
52955
  findHitItem: function findHitItem(offset) {
52577
52956
  var _this4 = this;
52578
52957
 
52958
+ var disableNullLabelSnap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
52579
52959
  var sIds = Object.keys(this.seriesList);
52580
52960
  var items = {};
52581
52961
  var isHorizontal = !!this.options.horizontal;
52582
52962
  var ctx = this.tooltipCtx;
52963
+
52964
+ var _offset = _slicedToArray(offset, 2),
52965
+ cx = _offset[0],
52966
+ cy = _offset[1];
52967
+
52583
52968
  var hitId = null;
52584
52969
  var maxs = '';
52585
52970
  var maxsw = 0;
52586
52971
  var maxv = '';
52587
52972
  var maxg = null;
52588
52973
  var maxSID = null;
52589
- var minDistance = Infinity; // directHit(bar 박스 내부 클릭/hover) 시리즈가 발견되었는지 추적.
52590
- // 한 번이라도 directHit가 있으면 line의 근접 포인트 히트는 hitId 후보에서 배제된다.
52974
+ var minDistance = Infinity; // directHit 하나라도 있으면 일반 hit 는 hitId 후보에서 배제.
52591
52975
 
52592
- var hasDirectHit = false; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
52976
+ var hasDirectHit = false; // hit 없을 거리 기반으로 선택할 fallback (기존 "첫 시리즈 고정" 대체).
52593
52977
 
52594
- var targetDataIndex = this.findClosestDataIndex(offset, sIds);
52978
+ var fallbackId = null;
52979
+ var fallbackDistance = Infinity; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
52980
+
52981
+ var targetDataIndex = this.findClosestDataIndex(offset, sIds, disableNullLabelSnap);
52595
52982
 
52596
52983
  if (targetDataIndex === -1 && !this.isNotUseIndicator()) {
52597
52984
  return {
@@ -52665,17 +53052,13 @@ var plugins_interaction_modules = {
52665
53052
  if (maxg === null || maxg <= gdata) {
52666
53053
  maxg = gdata;
52667
53054
  maxSID = sId;
52668
- } // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈 선택.
52669
- // directHit(bar 박스 내부)가 하나라도 있으면 그중에서만 선택하고,
52670
- // 라인의 근접 포인트 히트(item.hit=true, directHit=false)는 hitId 후보에서 배제한다.
52671
- // bar + line combo 차트에서 작은 bar 클릭 시 큰 값의 line이 잡히던 버그 방지.
53055
+ } // hit 기반 선택: directHit 최우선, 일반 hit 는 directHit 없을 때만.
52672
53056
 
52673
53057
 
52674
53058
  if (item.hit && item.data.xp !== undefined && item.data.yp !== undefined) {
52675
53059
  var distance = Math.pow(item.data.xp - offset[0], 2) + Math.pow(item.data.yp - offset[1], 2);
52676
53060
 
52677
53061
  if (item.directHit) {
52678
- // directHit는 최우선. 여러 directHit 중에서는 가장 가까운 것 선택.
52679
53062
  if (!hasDirectHit || distance < minDistance) {
52680
53063
  minDistance = distance;
52681
53064
  hitId = sId;
@@ -52683,18 +53066,65 @@ var plugins_interaction_modules = {
52683
53066
 
52684
53067
  hasDirectHit = true;
52685
53068
  } else if (!hasDirectHit && distance < minDistance) {
52686
- // directHit가 없을 때만 일반 hit 거리 비교
52687
53069
  minDistance = distance;
52688
53070
  hitId = sId;
52689
53071
  }
53072
+ } // fallback 후보: hit 여부와 무관하게 거리가 가장 가까운 시리즈.
53073
+ // 참고: 이 블록은 outer `if (gdata !== null && gdata !== undefined)` 안에 있어서
53074
+ // 값이 null 인 시리즈는 items 수집 단계에서 이미 걸러진 상태. 별도 null 값 가드 불필요.
53075
+
53076
+
53077
+ if (item.data.xp !== undefined && item.data.yp !== undefined && item.data.xp !== null && item.data.yp !== null) {
53078
+ var fbDistance = helpers_util.calcBoxDistance(item.data, cx, cy);
53079
+
53080
+ if (fbDistance < fallbackDistance) {
53081
+ fallbackDistance = fbDistance;
53082
+ fallbackId = sId;
53083
+ }
52690
53084
  }
52691
53085
  }
52692
53086
  }
52693
53087
  }
53088
+ } // hit 없으면 거리 기반 fallback, 그것도 없으면 items 첫 키(항상 비어있을 가능성 방어).
53089
+
53090
+
53091
+ if (hitId === null) {
53092
+ hitId = fallbackId !== null ? fallbackId : Object.keys(items)[0];
53093
+ }
53094
+
53095
+ var maxHighlight = maxg !== null ? [maxSID, maxg] : null; // all-null 라벨인 경우 synthetic items[''] 로 label/index 만 채워 전달.
53096
+
53097
+ if (disableNullLabelSnap && Object.keys(items).length === 0 && targetDataIndex !== -1) {
53098
+ var _this$seriesList$refS;
53099
+
53100
+ var refSeriesID = sIds.find(function (sId) {
53101
+ var _s$data;
53102
+
53103
+ var s = _this4.seriesList[sId];
53104
+ return (s === null || s === void 0 ? void 0 : s.show) && (s === null || s === void 0 ? void 0 : (_s$data = s.data) === null || _s$data === void 0 ? void 0 : _s$data.length) > 0;
53105
+ });
53106
+ var refPoint = refSeriesID ? (_this$seriesList$refS = this.seriesList[refSeriesID].data) === null || _this$seriesList$refS === void 0 ? void 0 : _this$seriesList$refS[targetDataIndex] : null;
53107
+
53108
+ if (refPoint) {
53109
+ items[''] = {
53110
+ id: '',
53111
+ name: '',
53112
+ label: isHorizontal ? refPoint.y : refPoint.x,
53113
+ index: targetDataIndex,
53114
+ axis: {
53115
+ x: 0,
53116
+ y: 0
53117
+ },
53118
+ data: {
53119
+ o: undefined,
53120
+ x: refPoint.x,
53121
+ y: refPoint.y
53122
+ }
53123
+ };
53124
+ hitId = '';
53125
+ }
52694
53126
  }
52695
53127
 
52696
- hitId = hitId === null ? Object.keys(items)[0] : hitId;
52697
- var maxHighlight = maxg !== null ? [maxSID, maxg] : null;
52698
53128
  return {
52699
53129
  items: items,
52700
53130
  hitId: hitId,
@@ -52713,9 +53143,11 @@ var plugins_interaction_modules = {
52713
53143
  var _this5 = this,
52714
53144
  _this$seriesList$refe;
52715
53145
 
52716
- var _offset = _slicedToArray(offset, 2),
52717
- xp = _offset[0],
52718
- yp = _offset[1];
53146
+ var disableNullLabelSnap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
53147
+
53148
+ var _offset2 = _slicedToArray(offset, 2),
53149
+ xp = _offset2[0],
53150
+ yp = _offset2[1];
52719
53151
 
52720
53152
  var isHorizontal = !!this.options.horizontal;
52721
53153
  var mousePos = isHorizontal ? yp : xp; // 데이터 있는 시리즈를 기준으로 라벨 위치 확인
@@ -52768,11 +53200,10 @@ var plugins_interaction_modules = {
52768
53200
  }
52769
53201
 
52770
53202
  var closestDistance = Infinity;
52771
- var closestIndex = -1; // 각 라벨에서 가장 가까운 것 찾기
53203
+ var closestIndex = -1; // 각 라벨에서 가장 가까운 것 찾기 (disableNullLabelSnap=true 면 all-null 라벨도 후보)
52772
53204
 
52773
53205
  var _loop = function _loop(_i) {
52774
- // 라벨에 유효한 데이터가 있는 시리즈가 하나 이상 있는지 확인
52775
- var hasValidData = sIds.some(function (sId) {
53206
+ var hasValidData = disableNullLabelSnap || sIds.some(function (sId) {
52776
53207
  var _series$data2, _series$data2$_i, _series$data3, _series$data3$_i;
52777
53208
 
52778
53209
  var series = _this5.seriesList[sId];
@@ -53388,9 +53819,9 @@ var plugins_interaction_modules = {
53388
53819
  * @returns {string}
53389
53820
  */
53390
53821
  getCurMouseLocation: function getCurMouseLocation(offset) {
53391
- var _offset2 = _slicedToArray(offset, 2),
53392
- offsetX = _offset2[0],
53393
- offsetY = _offset2[1];
53822
+ var _offset3 = _slicedToArray(offset, 2),
53823
+ offsetX = _offset3[0],
53824
+ offsetY = _offset3[1];
53394
53825
 
53395
53826
  var aPos = {
53396
53827
  x1: this.chartRect.x1 + this.labelOffset.left,