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.
@@ -362,6 +362,81 @@ if(content.locals) module.exports = content.locals;
362
362
  var add = __webpack_require__("499e").default
363
363
  var update = add("5a9ac64a", content, true, {"sourceMap":false,"shadowMode":false});
364
364
 
365
+ /***/ }),
366
+
367
+ /***/ "10d1":
368
+ /***/ (function(module, exports, __webpack_require__) {
369
+
370
+ "use strict";
371
+
372
+ var global = __webpack_require__("da84");
373
+ var redefineAll = __webpack_require__("e2cc");
374
+ var InternalMetadataModule = __webpack_require__("f183");
375
+ var collection = __webpack_require__("6d61");
376
+ var collectionWeak = __webpack_require__("acac");
377
+ var isObject = __webpack_require__("861d");
378
+ var enforceIternalState = __webpack_require__("69f3").enforce;
379
+ var NATIVE_WEAK_MAP = __webpack_require__("7f9a");
380
+
381
+ var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
382
+ var isExtensible = Object.isExtensible;
383
+ var InternalWeakMap;
384
+
385
+ var wrapper = function (init) {
386
+ return function WeakMap() {
387
+ return init(this, arguments.length ? arguments[0] : undefined);
388
+ };
389
+ };
390
+
391
+ // `WeakMap` constructor
392
+ // https://tc39.github.io/ecma262/#sec-weakmap-constructor
393
+ var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);
394
+
395
+ // IE11 WeakMap frozen keys fix
396
+ // We can't use feature detection because it crash some old IE builds
397
+ // https://github.com/zloirock/core-js/issues/485
398
+ if (NATIVE_WEAK_MAP && IS_IE11) {
399
+ InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
400
+ InternalMetadataModule.REQUIRED = true;
401
+ var WeakMapPrototype = $WeakMap.prototype;
402
+ var nativeDelete = WeakMapPrototype['delete'];
403
+ var nativeHas = WeakMapPrototype.has;
404
+ var nativeGet = WeakMapPrototype.get;
405
+ var nativeSet = WeakMapPrototype.set;
406
+ redefineAll(WeakMapPrototype, {
407
+ 'delete': function (key) {
408
+ if (isObject(key) && !isExtensible(key)) {
409
+ var state = enforceIternalState(this);
410
+ if (!state.frozen) state.frozen = new InternalWeakMap();
411
+ return nativeDelete.call(this, key) || state.frozen['delete'](key);
412
+ } return nativeDelete.call(this, key);
413
+ },
414
+ has: function has(key) {
415
+ if (isObject(key) && !isExtensible(key)) {
416
+ var state = enforceIternalState(this);
417
+ if (!state.frozen) state.frozen = new InternalWeakMap();
418
+ return nativeHas.call(this, key) || state.frozen.has(key);
419
+ } return nativeHas.call(this, key);
420
+ },
421
+ get: function get(key) {
422
+ if (isObject(key) && !isExtensible(key)) {
423
+ var state = enforceIternalState(this);
424
+ if (!state.frozen) state.frozen = new InternalWeakMap();
425
+ return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);
426
+ } return nativeGet.call(this, key);
427
+ },
428
+ set: function set(key, value) {
429
+ if (isObject(key) && !isExtensible(key)) {
430
+ var state = enforceIternalState(this);
431
+ if (!state.frozen) state.frozen = new InternalWeakMap();
432
+ nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);
433
+ } else nativeSet.call(this, key, value);
434
+ return this;
435
+ }
436
+ });
437
+ }
438
+
439
+
365
440
  /***/ }),
366
441
 
367
442
  /***/ "1148":
@@ -11235,7 +11310,7 @@ $({ target: 'Number', stat: true }, {
11235
11310
  /***/ "9224":
11236
11311
  /***/ (function(module) {
11237
11312
 
11238
- module.exports = JSON.parse("{\"a\":\"3.4.156\"}");
11313
+ module.exports = JSON.parse("{\"a\":\"3.4.157\"}");
11239
11314
 
11240
11315
  /***/ }),
11241
11316
 
@@ -13076,6 +13151,135 @@ $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
13076
13151
  });
13077
13152
 
13078
13153
 
13154
+ /***/ }),
13155
+
13156
+ /***/ "acac":
13157
+ /***/ (function(module, exports, __webpack_require__) {
13158
+
13159
+ "use strict";
13160
+
13161
+ var redefineAll = __webpack_require__("e2cc");
13162
+ var getWeakData = __webpack_require__("f183").getWeakData;
13163
+ var anObject = __webpack_require__("825a");
13164
+ var isObject = __webpack_require__("861d");
13165
+ var anInstance = __webpack_require__("19aa");
13166
+ var iterate = __webpack_require__("2266");
13167
+ var ArrayIterationModule = __webpack_require__("b727");
13168
+ var $has = __webpack_require__("5135");
13169
+ var InternalStateModule = __webpack_require__("69f3");
13170
+
13171
+ var setInternalState = InternalStateModule.set;
13172
+ var internalStateGetterFor = InternalStateModule.getterFor;
13173
+ var find = ArrayIterationModule.find;
13174
+ var findIndex = ArrayIterationModule.findIndex;
13175
+ var id = 0;
13176
+
13177
+ // fallback for uncaught frozen keys
13178
+ var uncaughtFrozenStore = function (store) {
13179
+ return store.frozen || (store.frozen = new UncaughtFrozenStore());
13180
+ };
13181
+
13182
+ var UncaughtFrozenStore = function () {
13183
+ this.entries = [];
13184
+ };
13185
+
13186
+ var findUncaughtFrozen = function (store, key) {
13187
+ return find(store.entries, function (it) {
13188
+ return it[0] === key;
13189
+ });
13190
+ };
13191
+
13192
+ UncaughtFrozenStore.prototype = {
13193
+ get: function (key) {
13194
+ var entry = findUncaughtFrozen(this, key);
13195
+ if (entry) return entry[1];
13196
+ },
13197
+ has: function (key) {
13198
+ return !!findUncaughtFrozen(this, key);
13199
+ },
13200
+ set: function (key, value) {
13201
+ var entry = findUncaughtFrozen(this, key);
13202
+ if (entry) entry[1] = value;
13203
+ else this.entries.push([key, value]);
13204
+ },
13205
+ 'delete': function (key) {
13206
+ var index = findIndex(this.entries, function (it) {
13207
+ return it[0] === key;
13208
+ });
13209
+ if (~index) this.entries.splice(index, 1);
13210
+ return !!~index;
13211
+ }
13212
+ };
13213
+
13214
+ module.exports = {
13215
+ getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
13216
+ var C = wrapper(function (that, iterable) {
13217
+ anInstance(that, C, CONSTRUCTOR_NAME);
13218
+ setInternalState(that, {
13219
+ type: CONSTRUCTOR_NAME,
13220
+ id: id++,
13221
+ frozen: undefined
13222
+ });
13223
+ if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
13224
+ });
13225
+
13226
+ var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
13227
+
13228
+ var define = function (that, key, value) {
13229
+ var state = getInternalState(that);
13230
+ var data = getWeakData(anObject(key), true);
13231
+ if (data === true) uncaughtFrozenStore(state).set(key, value);
13232
+ else data[state.id] = value;
13233
+ return that;
13234
+ };
13235
+
13236
+ redefineAll(C.prototype, {
13237
+ // 23.3.3.2 WeakMap.prototype.delete(key)
13238
+ // 23.4.3.3 WeakSet.prototype.delete(value)
13239
+ 'delete': function (key) {
13240
+ var state = getInternalState(this);
13241
+ if (!isObject(key)) return false;
13242
+ var data = getWeakData(key);
13243
+ if (data === true) return uncaughtFrozenStore(state)['delete'](key);
13244
+ return data && $has(data, state.id) && delete data[state.id];
13245
+ },
13246
+ // 23.3.3.4 WeakMap.prototype.has(key)
13247
+ // 23.4.3.4 WeakSet.prototype.has(value)
13248
+ has: function has(key) {
13249
+ var state = getInternalState(this);
13250
+ if (!isObject(key)) return false;
13251
+ var data = getWeakData(key);
13252
+ if (data === true) return uncaughtFrozenStore(state).has(key);
13253
+ return data && $has(data, state.id);
13254
+ }
13255
+ });
13256
+
13257
+ redefineAll(C.prototype, IS_MAP ? {
13258
+ // 23.3.3.3 WeakMap.prototype.get(key)
13259
+ get: function get(key) {
13260
+ var state = getInternalState(this);
13261
+ if (isObject(key)) {
13262
+ var data = getWeakData(key);
13263
+ if (data === true) return uncaughtFrozenStore(state).get(key);
13264
+ return data ? data[state.id] : undefined;
13265
+ }
13266
+ },
13267
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
13268
+ set: function set(key, value) {
13269
+ return define(this, key, value);
13270
+ }
13271
+ } : {
13272
+ // 23.4.3.1 WeakSet.prototype.add(value)
13273
+ add: function add(value) {
13274
+ return define(this, value, true);
13275
+ }
13276
+ });
13277
+
13278
+ return C;
13279
+ }
13280
+ };
13281
+
13282
+
13079
13283
  /***/ }),
13080
13284
 
13081
13285
  /***/ "ad6d":
@@ -22274,9 +22478,9 @@ var _Set_Set = _getNative(_root["a" /* default */], 'Set');
22274
22478
 
22275
22479
 
22276
22480
  /* Built-in method references that are verified to be native. */
22277
- var WeakMap = _getNative(_root["a" /* default */], 'WeakMap');
22481
+ var _WeakMap_WeakMap = _getNative(_root["a" /* default */], 'WeakMap');
22278
22482
 
22279
- /* harmony default export */ var _WeakMap = (WeakMap);
22483
+ /* harmony default export */ var _WeakMap = (_WeakMap_WeakMap);
22280
22484
 
22281
22485
  // CONCATENATED MODULE: ./node_modules/lodash-es/_getTag.js
22282
22486
 
@@ -38937,6 +39141,30 @@ var textMeasureCtx = textMeasureCanvas.getContext('2d');
38937
39141
  }
38938
39142
 
38939
39143
  return "".concat(color, "80");
39144
+ },
39145
+
39146
+ /**
39147
+ * 클릭 좌표(cx, cy)에서 데이터 포인트까지의 거리²를 반환한다.
39148
+ * w/h 가 있으면 박스 외벽까지의 거리(내부면 0), 없으면 포인트까지의 유클리드 거리².
39149
+ * @param {object} data - 데이터 포인트 (xp, yp, w?, h?)
39150
+ * @param {number} cx - 클릭 x 좌표
39151
+ * @param {number} cy - 클릭 y 좌표
39152
+ * @returns {number}
39153
+ */
39154
+ calcBoxDistance: function calcBoxDistance(data, cx, cy) {
39155
+ if (data.w !== null && data.w !== undefined && data.h !== null && data.h !== undefined) {
39156
+ var sx = data.xp;
39157
+ var sy = data.yp;
39158
+ var xMin = Math.min(sx, sx + data.w);
39159
+ var xMax = Math.max(sx, sx + data.w);
39160
+ var yMin = Math.min(sy, sy + data.h);
39161
+ var yMax = Math.max(sy, sy + data.h);
39162
+ var dx = Math.max(0, xMin - cx, cx - xMax);
39163
+ var dy = Math.max(0, yMin - cy, cy - yMax);
39164
+ return dx * dx + dy * dy;
39165
+ }
39166
+
39167
+ return Math.pow(data.xp - cx, 2) + Math.pow(data.yp - cy, 2);
38940
39168
  }
38941
39169
  });
38942
39170
  // CONCATENATED MODULE: ./src/components/chart/model/model.store.js
@@ -38963,6 +39191,8 @@ var textMeasureCtx = textMeasureCanvas.getContext('2d');
38963
39191
 
38964
39192
 
38965
39193
 
39194
+
39195
+
38966
39196
 
38967
39197
 
38968
39198
 
@@ -39956,27 +40186,86 @@ var modules = {
39956
40186
  * 선택 우선순위:
39957
40187
  * 1. directHit (bar 박스 내부 클릭) — 가장 가까운 것
39958
40188
  * 2. hit (line 포인트 근접 등) — 가장 가까운 것
39959
- * 3. hit 전혀 없으면 데이터가 있는 시리즈로 fallback (기존 동작 호환)
39960
- *
39961
- * 과거에는 "같은 라벨 위에서 값이 가장 큰 시리즈"를 돌려주는 max-value 덮어쓰기 방식이었으나,
39962
- * bar + line combo 차트에서 작은 bar를 클릭해도 큰 값의 line이 선택되는 버그의 원인이었다.
39963
- * 이번 수정으로 사용자가 실제로 가리킨 시리즈(hit)가 선택되도록 바뀐다.
40189
+ * 3. hit 없으면 클릭 좌표에 가장 가까운 시리즈로 fallback (distance 기반)
39964
40190
  *
39965
40191
  * @param {array} offset position x and y
39966
40192
  * @param {boolean} useApproximate if it's true. it'll look for closed item on mouse position
39967
40193
  * @param {number} dataIndex selected data index
39968
40194
  * @param {boolean} useSelectLabelOrItem used to display select label/item at tooltip location
40195
+ * @param {boolean} disableNullLabelSnap true 이면 all-null 라벨도 그대로 반환 (click/dblclick 용)
39969
40196
  *
39970
40197
  * @returns {object} hit item information
39971
40198
  */
39972
40199
  getHitItemByPosition: function getHitItemByPosition(offset) {
39973
- var _ref4;
40200
+ var _this8 = this,
40201
+ _ref4;
39974
40202
 
39975
40203
  var useApproximate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
39976
40204
  var dataIndex = arguments.length > 2 ? arguments[2] : undefined;
39977
40205
  var useSelectLabelOrItem = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
40206
+ var disableNullLabelSnap = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
39978
40207
  var seriesIDs = Object.keys(this.seriesList);
39979
- var isHorizontal = !!this.options.horizontal; // hit 기반 결과 (최우선)
40208
+ var isHorizontal = !!this.options.horizontal;
40209
+
40210
+ var _offset = _slicedToArray(offset, 2),
40211
+ cx = _offset[0],
40212
+ cy = _offset[1]; // dataIndex 미지정 시 클릭 좌표에 가장 가까운 valid 라벨 인덱스 결정.
40213
+ // disableNullLabelSnap=true 이면 all-null 라벨도 후보로 인정.
40214
+
40215
+
40216
+ var resolvedDataIndex = dataIndex;
40217
+
40218
+ if (resolvedDataIndex === undefined && !useApproximate) {
40219
+ var refSeriesID = seriesIDs.find(function (sId) {
40220
+ var _s$data;
40221
+
40222
+ var s = _this8.seriesList[sId];
40223
+ 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;
40224
+ });
40225
+
40226
+ if (refSeriesID) {
40227
+ var refData = this.seriesList[refSeriesID].data;
40228
+ var clickPos = isHorizontal ? offset[1] : offset[0];
40229
+ var nearestDistance = Infinity;
40230
+ var nearestIndex = -1;
40231
+
40232
+ var _loop = function _loop(i) {
40233
+ var hasValidData = disableNullLabelSnap || seriesIDs.some(function (sId) {
40234
+ var _s$data2, _s$data2$i, _s$data3, _s$data3$i;
40235
+
40236
+ var s = _this8.seriesList[sId];
40237
+ 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;
40238
+ });
40239
+ var p = refData[i];
40240
+
40241
+ if (hasValidData && p) {
40242
+ var labelPos;
40243
+
40244
+ if (isHorizontal) {
40245
+ labelPos = p.h ? p.yp + p.h / 2 : p.yp;
40246
+ } else {
40247
+ labelPos = p.w ? p.xp + p.w / 2 : p.xp;
40248
+ }
40249
+
40250
+ if (labelPos !== null && labelPos !== undefined) {
40251
+ var d = Math.abs(clickPos - labelPos);
40252
+
40253
+ if (d < nearestDistance) {
40254
+ nearestDistance = d;
40255
+ nearestIndex = i;
40256
+ }
40257
+ }
40258
+ }
40259
+ };
40260
+
40261
+ for (var i = 0; i < refData.length; i++) {
40262
+ _loop(i);
40263
+ }
40264
+
40265
+ if (nearestIndex !== -1) resolvedDataIndex = nearestIndex;
40266
+ }
40267
+ } // hit 기반 결과 (최우선)
40268
+
39980
40269
 
39981
40270
  var hitType = null;
39982
40271
  var hitLabel = null;
@@ -39985,7 +40274,7 @@ var modules = {
39985
40274
  var hitSeriesID = '';
39986
40275
  var hitDataIndex = null;
39987
40276
  var hitDistance = Infinity;
39988
- var hasDirectHit = false; // fallback: hit 전혀 없을 때 사용할 "데이터 있는 시리즈" 정보
40277
+ var hasDirectHit = false; // hit 없을 때 fallback — 값이 있는 시리즈 중 클릭 좌표에 가장 가까운 것.
39989
40278
 
39990
40279
  var fallbackType = null;
39991
40280
  var fallbackLabel = null;
@@ -39993,6 +40282,7 @@ var modules = {
39993
40282
  var fallbackValue = null;
39994
40283
  var fallbackSeriesID = '';
39995
40284
  var fallbackDataIndex = null;
40285
+ var fallbackDistance = Infinity;
39996
40286
  var acc = 0;
39997
40287
  var useStack = false;
39998
40288
 
@@ -40002,7 +40292,7 @@ var modules = {
40002
40292
  var findFn = useApproximate ? series.findApproximateData : series.findGraphData;
40003
40293
 
40004
40294
  if (findFn) {
40005
- var item = findFn.call(series, offset, isHorizontal, dataIndex, useSelectLabelOrItem);
40295
+ var item = findFn.call(series, offset, isHorizontal, resolvedDataIndex, useSelectLabelOrItem);
40006
40296
  var data = item.data;
40007
40297
  var index = item.index;
40008
40298
 
@@ -40027,10 +40317,27 @@ var modules = {
40027
40317
  useStack = true;
40028
40318
  } else {
40029
40319
  acc += data.y;
40030
- } // fallback 기록: 데이터가 있는 시리즈를 저장
40320
+ } // fallback 후보: 값이 있는 시리즈 거리가 가장 가까운 쪽.
40321
+ // 값이 null 인 시리즈는 제외.
40031
40322
 
40032
40323
 
40033
- if (fallbackSeriesID === '') {
40324
+ var hasMeaningfulValue = g !== null && g !== undefined && !Number.isNaN(g);
40325
+ var hasCoords = data.xp !== null && data.xp !== undefined && data.yp !== null && data.yp !== undefined;
40326
+
40327
+ if (hasMeaningfulValue && hasCoords) {
40328
+ var distance = helpers_util.calcBoxDistance(data, cx, cy);
40329
+
40330
+ if (fallbackSeriesID === '' || distance < fallbackDistance) {
40331
+ fallbackDistance = distance;
40332
+ fallbackType = series.type;
40333
+ fallbackLabel = ldata;
40334
+ fallbackValuePos = lp;
40335
+ fallbackValue = g;
40336
+ fallbackSeriesID = seriesID;
40337
+ fallbackDataIndex = index;
40338
+ }
40339
+ } else if (hasMeaningfulValue && fallbackSeriesID === '') {
40340
+ // 좌표 없는 예외 케이스 — 첫 후보로만 등록
40034
40341
  fallbackType = series.type;
40035
40342
  fallbackLabel = ldata;
40036
40343
  fallbackValuePos = lp;
@@ -40041,12 +40348,12 @@ var modules = {
40041
40348
 
40042
40349
 
40043
40350
  if (item.hit && data.xp !== undefined && data.yp !== undefined) {
40044
- var distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
40351
+ var _distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
40045
40352
 
40046
40353
  if (item.directHit) {
40047
40354
  // 직접 박스 히트는 최우선. 여러 개이면 가장 가까운 것.
40048
- if (!hasDirectHit || distance < hitDistance) {
40049
- hitDistance = distance;
40355
+ if (!hasDirectHit || _distance < hitDistance) {
40356
+ hitDistance = _distance;
40050
40357
  hitType = series.type;
40051
40358
  hitLabel = ldata;
40052
40359
  hitValuePos = lp;
@@ -40059,8 +40366,8 @@ var modules = {
40059
40366
  } else if (!hasDirectHit) {
40060
40367
  // directHit가 없을 때만 일반 hit 거리 비교 참여
40061
40368
  // (라인 근접 히트가 박스 직접 히트를 이기지 못하도록)
40062
- if (distance < hitDistance) {
40063
- hitDistance = distance;
40369
+ if (_distance < hitDistance) {
40370
+ hitDistance = _distance;
40064
40371
  hitType = series.type;
40065
40372
  hitLabel = ldata;
40066
40373
  hitValuePos = lp;
@@ -40074,6 +40381,25 @@ var modules = {
40074
40381
  }
40075
40382
  }
40076
40383
  }
40384
+ } // all-null 라벨인 경우 label/dataIndex 만 채워 반환 (sId='', value=0).
40385
+
40386
+
40387
+ if (disableNullLabelSnap && hitSeriesID === '' && fallbackSeriesID === '' && resolvedDataIndex !== undefined && resolvedDataIndex >= 0) {
40388
+ var _this$seriesList$_ref;
40389
+
40390
+ var _refSeriesID = seriesIDs.find(function (sId) {
40391
+ var _s$data4;
40392
+
40393
+ var s = _this8.seriesList[sId];
40394
+ 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;
40395
+ });
40396
+
40397
+ var refPoint = _refSeriesID ? (_this$seriesList$_ref = this.seriesList[_refSeriesID].data) === null || _this$seriesList$_ref === void 0 ? void 0 : _this$seriesList$_ref[resolvedDataIndex] : null;
40398
+
40399
+ if (refPoint) {
40400
+ fallbackLabel = isHorizontal ? refPoint.y : refPoint.x;
40401
+ fallbackDataIndex = resolvedDataIndex;
40402
+ }
40077
40403
  }
40078
40404
 
40079
40405
  var hasHit = hitSeriesID !== '';
@@ -40105,9 +40431,9 @@ var modules = {
40105
40431
  getLabelInfoByPosition: function getLabelInfoByPosition(offset, targetAxis) {
40106
40432
  var _Object$values$sort$, _Object$values$sort$2, _scrollbarOpt, _scale, _scale$labels, _scale3, _scale3$labels;
40107
40433
 
40108
- var _offset = _slicedToArray(offset, 2),
40109
- x = _offset[0],
40110
- y = _offset[1];
40434
+ var _offset2 = _slicedToArray(offset, 2),
40435
+ x = _offset2[0],
40436
+ y = _offset2[1];
40111
40437
 
40112
40438
  var aPos = {
40113
40439
  x1: this.chartRect.x1 + this.labelOffset.left,
@@ -40217,7 +40543,7 @@ var modules = {
40217
40543
  * @returns {MouseLabelValue} current mouse target label value
40218
40544
  */
40219
40545
  getCurMouseLabelVal: function getCurMouseLabelVal(targetAxis, offset, labelIndex) {
40220
- var _this8 = this;
40546
+ var _this9 = this;
40221
40547
 
40222
40548
  var _this$options2 = this.options,
40223
40549
  chartType = _this$options2.type,
@@ -40234,13 +40560,13 @@ var modules = {
40234
40560
  case 'bar':
40235
40561
  case 'line':
40236
40562
  {
40237
- result = horizontal && !isXAxis || !horizontal && isXAxis ? _this8.data.labels[labelIndex] : '';
40563
+ result = horizontal && !isXAxis || !horizontal && isXAxis ? _this9.data.labels[labelIndex] : '';
40238
40564
  break;
40239
40565
  }
40240
40566
 
40241
40567
  case 'heatMap':
40242
40568
  {
40243
- result = _this8.data.labels[targetAxisDirection][labelIndex];
40569
+ result = _this9.data.labels[targetAxisDirection][labelIndex];
40244
40570
  break;
40245
40571
  }
40246
40572
 
@@ -40254,19 +40580,19 @@ var modules = {
40254
40580
  var calLabelValUseMousePos = function calLabelValUseMousePos() {
40255
40581
  var result = '';
40256
40582
  var aPos = {
40257
- x1: _this8.chartRect.x1 + _this8.labelOffset.left,
40258
- x2: _this8.chartRect.x2 - _this8.labelOffset.right,
40259
- y1: _this8.chartRect.y1 + _this8.labelOffset.top,
40260
- y2: _this8.chartRect.y2 - _this8.labelOffset.bottom
40583
+ x1: _this9.chartRect.x1 + _this9.labelOffset.left,
40584
+ x2: _this9.chartRect.x2 - _this9.labelOffset.right,
40585
+ y1: _this9.chartRect.y1 + _this9.labelOffset.top,
40586
+ y2: _this9.chartRect.y2 - _this9.labelOffset.bottom
40261
40587
  };
40262
- var _this8$axesSteps$targ = _this8.axesSteps[targetAxisDirection][0],
40263
- steps = _this8$axesSteps$targ.steps,
40264
- labelValInterval = _this8$axesSteps$targ.interval,
40265
- graphMin = _this8$axesSteps$targ.graphMin;
40266
- var _this8$axesRange$targ = _this8.axesRange[targetAxisDirection][0].size,
40267
- labelWidth = _this8$axesRange$targ.width,
40268
- labelHeight = _this8$axesRange$targ.height;
40269
- var axes = isXAxis ? _this8.axesX : _this8.axesY;
40588
+ var _this9$axesSteps$targ = _this9.axesSteps[targetAxisDirection][0],
40589
+ steps = _this9$axesSteps$targ.steps,
40590
+ labelValInterval = _this9$axesSteps$targ.interval,
40591
+ graphMin = _this9$axesSteps$targ.graphMin;
40592
+ var _this9$axesRange$targ = _this9.axesRange[targetAxisDirection][0].size,
40593
+ labelWidth = _this9$axesRange$targ.width,
40594
+ labelHeight = _this9$axesRange$targ.height;
40595
+ var axes = isXAxis ? _this9.axesX : _this9.axesY;
40270
40596
  var axisStartPoint = aPos[axes[0].units.rectStart];
40271
40597
  var axisEndPoint = aPos[axes[0].units.rectEnd];
40272
40598
  var curMousePosInAxis = Math.abs(offset[isXAxis ? 0 : 1] - axisStartPoint);
@@ -40304,7 +40630,7 @@ var modules = {
40304
40630
  * @returns {object} min/max info for all of data
40305
40631
  */
40306
40632
  getStoreMinMax: function getStoreMinMax() {
40307
- var _this9 = this;
40633
+ var _this10 = this;
40308
40634
 
40309
40635
  var keys = Object.keys(this.seriesList);
40310
40636
  var isHorizontal = this.options.horizontal;
@@ -40322,7 +40648,7 @@ var modules = {
40322
40648
  if (keys.length) {
40323
40649
  return keys.reduce(function (acc, key) {
40324
40650
  var minmax = acc;
40325
- var series = _this9.seriesList[key];
40651
+ var series = _this10.seriesList[key];
40326
40652
  var smm = series.minMax;
40327
40653
  var axisX = series.xAxisIndex;
40328
40654
  var axisY = series.yAxisIndex;
@@ -46860,6 +47186,9 @@ var scale_logarithmic_LogarithmicScale = /*#__PURE__*/function (_Scale) {
46860
47186
  }(scale_scale);
46861
47187
 
46862
47188
  /* harmony default export */ var scale_logarithmic = (scale_logarithmic_LogarithmicScale);
47189
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.weak-map.js
47190
+ var es_weak_map = __webpack_require__("10d1");
47191
+
46863
47192
  // CONCATENATED MODULE: ./src/components/chart/scale/scale.step.js
46864
47193
 
46865
47194
 
@@ -46879,6 +47208,16 @@ var scale_logarithmic_LogarithmicScale = /*#__PURE__*/function (_Scale) {
46879
47208
 
46880
47209
 
46881
47210
 
47211
+
47212
+
47213
+
47214
+
47215
+ /**
47216
+ * scrollbar 사용 시 스크롤마다 labels 전체를 재순회하지 않도록 결과를 캐시
47217
+ */
47218
+
47219
+ var stringMinMaxByLabels = new WeakMap();
47220
+
46882
47221
  var scale_step_StepScale = /*#__PURE__*/function (_Scale) {
46883
47222
  _inherits(StepScale, _Scale);
46884
47223
 
@@ -46894,21 +47233,43 @@ var scale_step_StepScale = /*#__PURE__*/function (_Scale) {
46894
47233
  return _this;
46895
47234
  }
46896
47235
  /**
46897
- * Calculate min/max value, label and size information for step scale
46898
- * @param {object} minMax min/max information (unused on step scale)
46899
- * @param {object} scrollbarOpt scroll bar option
46900
- * @param {object} chartRect chart size information
46901
- *
46902
- * @returns {object} min/max value and label
47236
+ * labels 배열의 문자열 min/max 반환
47237
+ * - alignToGridLine: 전달받은 minMax 그대로 사용
47238
+ * - scrollbar 사용: WeakMap 캐시를 통해 O(n) → O(1)로 단축
47239
+ * - 일반: 매번 getStringMinMax 계산
47240
+ * @param {object} minMax 축 min/max 정보 (alignToGridLine 시 사용)
47241
+ * @param {object} scrollbarOpt 스크롤바 옵션
47242
+ * @returns {{ min: string, max: string }}
46903
47243
  */
46904
47244
 
46905
47245
 
46906
47246
  _createClass(StepScale, [{
47247
+ key: "getStepMinMax",
47248
+ value: function getStepMinMax(minMax, scrollbarOpt) {
47249
+ if (this.labelStyle.alignToGridLine) return minMax;
47250
+ if (!(scrollbarOpt !== null && scrollbarOpt !== void 0 && scrollbarOpt.use)) return helpers_util.getStringMinMax(this.labels);
47251
+
47252
+ if (!stringMinMaxByLabels.has(this.labels)) {
47253
+ stringMinMaxByLabels.set(this.labels, helpers_util.getStringMinMax(this.labels));
47254
+ }
47255
+
47256
+ return stringMinMaxByLabels.get(this.labels);
47257
+ }
47258
+ /**
47259
+ * Calculate min/max value, label and size information for step scale
47260
+ * @param {object} minMax min/max information (unused on step scale)
47261
+ * @param {object} scrollbarOpt scroll bar option
47262
+ * @param {object} chartRect chart size information
47263
+ *
47264
+ * @returns {object} min/max value and label
47265
+ */
47266
+
47267
+ }, {
46907
47268
  key: "calculateScaleRange",
46908
47269
  value: function calculateScaleRange(minMax, scrollbarOpt, chartRect) {
46909
47270
  var _this$labelStyle$maxW, _this$labelStyle;
46910
47271
 
46911
- var stepMinMax = this.labelStyle.alignToGridLine ? minMax : helpers_util.getStringMinMax(this.labels);
47272
+ var stepMinMax = this.getStepMinMax(minMax, scrollbarOpt);
46912
47273
  var maxValue = stepMinMax.max;
46913
47274
  var minValue = stepMinMax.min;
46914
47275
  var minIndex = 0;
@@ -50373,9 +50734,18 @@ var plugins_scrollbar_module = {
50373
50734
  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;
50374
50735
 
50375
50736
  if (isUpdateAxesRange) {
50376
- var _newOpt$5, _newOpt$5$range, _newOpt$6;
50737
+ var _newOpt$5;
50377
50738
 
50378
- 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;
50739
+ var newOptRange = newOpt === null || newOpt === void 0 ? void 0 : (_newOpt$5 = newOpt[0]) === null || _newOpt$5 === void 0 ? void 0 : _newOpt$5.range;
50740
+ var currentRange = this.scrollbar[dir].range;
50741
+
50742
+ if (!isResetPosition && newOptRange !== null && newOptRange !== void 0 && newOptRange.length && currentRange !== null && currentRange !== void 0 && currentRange.length) {
50743
+ // 리사이즈 등으로 range 크기만 변경된 경우, 현재 스크롤 위치(min)를 유지하고 크기만 조정
50744
+ var newSize = newOptRange[1] - newOptRange[0];
50745
+ this.scrollbar[dir].range = [currentRange[0], currentRange[0] + newSize];
50746
+ } else {
50747
+ this.scrollbar[dir].range = newOptRange !== null && newOptRange !== void 0 && newOptRange.length ? _toConsumableArray(newOptRange) : null;
50748
+ }
50379
50749
  }
50380
50750
 
50381
50751
  if (isResetPosition || updateData) {
@@ -51550,6 +51920,7 @@ function inRange_inRange(number, start, end) {
51550
51920
 
51551
51921
 
51552
51922
 
51923
+
51553
51924
 
51554
51925
 
51555
51926
  var plugins_interaction_modules = {
@@ -51763,10 +52134,12 @@ var plugins_interaction_modules = {
51763
52134
  }
51764
52135
 
51765
52136
  var setSelectedItemInfo = function setSelectedItemInfo() {
51766
- var hitInfo = _this.findHitItem(offset); // 실제 클릭된 아이템의 정보 추출 (hitId가 있으면 해당 아이템, 없으면 첫 번째 아이템)
52137
+ var _hitInfo$hitId;
52138
+
52139
+ var hitInfo = _this.findHitItem(offset, true); // 실제 클릭된 아이템의 정보 추출 (hitId가 있으면 해당 아이템, 없으면 첫 번째 아이템)
51767
52140
 
51768
52141
 
51769
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52142
+ var hitItemId = (_hitInfo$hitId = hitInfo.hitId) !== null && _hitInfo$hitId !== void 0 ? _hitInfo$hitId : Object.keys(hitInfo.items)[0];
51770
52143
  var hitItem = hitInfo.items[hitItemId];
51771
52144
 
51772
52145
  if (hitItem) {
@@ -51781,9 +52154,11 @@ var plugins_interaction_modules = {
51781
52154
  };
51782
52155
 
51783
52156
  var setSelectedLabelInfo = function setSelectedLabelInfo(targetAxis) {
51784
- var hitInfo = _this.findHitItem(offset);
52157
+ var _hitInfo$hitId2;
52158
+
52159
+ var hitInfo = _this.findHitItem(offset, true);
51785
52160
 
51786
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52161
+ var hitItemId = (_hitInfo$hitId2 = hitInfo.hitId) !== null && _hitInfo$hitId2 !== void 0 ? _hitInfo$hitId2 : Object.keys(hitInfo.items)[0];
51787
52162
  var hitItem = hitInfo.items[hitItemId];
51788
52163
 
51789
52164
  var _this$getLabelInfoByP = _this.getLabelInfoByPosition(offset, targetAxis),
@@ -51806,9 +52181,11 @@ var plugins_interaction_modules = {
51806
52181
  };
51807
52182
 
51808
52183
  var setSelectedSeriesInfo = function setSelectedSeriesInfo() {
51809
- var hitInfo = _this.findHitItem(offset);
52184
+ var _hitInfo$hitId3;
51810
52185
 
51811
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52186
+ var hitInfo = _this.findHitItem(offset, true);
52187
+
52188
+ var hitItemId = (_hitInfo$hitId3 = hitInfo.hitId) !== null && _hitInfo$hitId3 !== void 0 ? _hitInfo$hitId3 : Object.keys(hitInfo.items)[0];
51812
52189
  var hitItem = hitInfo.items[hitItemId];
51813
52190
 
51814
52191
  if (hitItemId !== null) {
@@ -51891,7 +52268,7 @@ var plugins_interaction_modules = {
51891
52268
  var useSelectSeries = (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.use) && (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.useClick);
51892
52269
 
51893
52270
  var setSelectedItemInfo = function setSelectedItemInfo() {
51894
- var hitInfo = _this.getHitItemByPosition(offset, false);
52271
+ var hitInfo = _this.getHitItemByPosition(offset, false, undefined, false, true);
51895
52272
 
51896
52273
  args.label = hitInfo.label;
51897
52274
  args.value = hitInfo.value;
@@ -51931,9 +52308,11 @@ var plugins_interaction_modules = {
51931
52308
  };
51932
52309
 
51933
52310
  var setSelectedSeriesInfo = function setSelectedSeriesInfo() {
51934
- var hitInfo = _this.findHitItem(offset);
52311
+ var _hitInfo$hitId4;
52312
+
52313
+ var hitInfo = _this.findHitItem(offset, true);
51935
52314
 
51936
- var hitItemId = hitInfo.hitId || Object.keys(hitInfo.items)[0];
52315
+ var hitItemId = (_hitInfo$hitId4 = hitInfo.hitId) !== null && _hitInfo$hitId4 !== void 0 ? _hitInfo$hitId4 : Object.keys(hitInfo.items)[0];
51937
52316
  var hitItem = hitInfo.items[hitItemId];
51938
52317
 
51939
52318
  if (hitItemId !== null) {
@@ -52567,22 +52946,30 @@ var plugins_interaction_modules = {
52567
52946
  findHitItem: function findHitItem(offset) {
52568
52947
  var _this4 = this;
52569
52948
 
52949
+ var disableNullLabelSnap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
52570
52950
  var sIds = Object.keys(this.seriesList);
52571
52951
  var items = {};
52572
52952
  var isHorizontal = !!this.options.horizontal;
52573
52953
  var ctx = this.tooltipCtx;
52954
+
52955
+ var _offset = _slicedToArray(offset, 2),
52956
+ cx = _offset[0],
52957
+ cy = _offset[1];
52958
+
52574
52959
  var hitId = null;
52575
52960
  var maxs = '';
52576
52961
  var maxsw = 0;
52577
52962
  var maxv = '';
52578
52963
  var maxg = null;
52579
52964
  var maxSID = null;
52580
- var minDistance = Infinity; // directHit(bar 박스 내부 클릭/hover) 시리즈가 발견되었는지 추적.
52581
- // 한 번이라도 directHit가 있으면 line의 근접 포인트 히트는 hitId 후보에서 배제된다.
52965
+ var minDistance = Infinity; // directHit 하나라도 있으면 일반 hit 는 hitId 후보에서 배제.
52582
52966
 
52583
- var hasDirectHit = false; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
52967
+ var hasDirectHit = false; // hit 없을 거리 기반으로 선택할 fallback (기존 "첫 시리즈 고정" 대체).
52584
52968
 
52585
- var targetDataIndex = this.findClosestDataIndex(offset, sIds);
52969
+ var fallbackId = null;
52970
+ var fallbackDistance = Infinity; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
52971
+
52972
+ var targetDataIndex = this.findClosestDataIndex(offset, sIds, disableNullLabelSnap);
52586
52973
 
52587
52974
  if (targetDataIndex === -1 && !this.isNotUseIndicator()) {
52588
52975
  return {
@@ -52656,17 +53043,13 @@ var plugins_interaction_modules = {
52656
53043
  if (maxg === null || maxg <= gdata) {
52657
53044
  maxg = gdata;
52658
53045
  maxSID = sId;
52659
- } // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈 선택.
52660
- // directHit(bar 박스 내부)가 하나라도 있으면 그중에서만 선택하고,
52661
- // 라인의 근접 포인트 히트(item.hit=true, directHit=false)는 hitId 후보에서 배제한다.
52662
- // bar + line combo 차트에서 작은 bar 클릭 시 큰 값의 line이 잡히던 버그 방지.
53046
+ } // hit 기반 선택: directHit 최우선, 일반 hit 는 directHit 없을 때만.
52663
53047
 
52664
53048
 
52665
53049
  if (item.hit && item.data.xp !== undefined && item.data.yp !== undefined) {
52666
53050
  var distance = Math.pow(item.data.xp - offset[0], 2) + Math.pow(item.data.yp - offset[1], 2);
52667
53051
 
52668
53052
  if (item.directHit) {
52669
- // directHit는 최우선. 여러 directHit 중에서는 가장 가까운 것 선택.
52670
53053
  if (!hasDirectHit || distance < minDistance) {
52671
53054
  minDistance = distance;
52672
53055
  hitId = sId;
@@ -52674,18 +53057,65 @@ var plugins_interaction_modules = {
52674
53057
 
52675
53058
  hasDirectHit = true;
52676
53059
  } else if (!hasDirectHit && distance < minDistance) {
52677
- // directHit가 없을 때만 일반 hit 거리 비교
52678
53060
  minDistance = distance;
52679
53061
  hitId = sId;
52680
53062
  }
53063
+ } // fallback 후보: hit 여부와 무관하게 거리가 가장 가까운 시리즈.
53064
+ // 참고: 이 블록은 outer `if (gdata !== null && gdata !== undefined)` 안에 있어서
53065
+ // 값이 null 인 시리즈는 items 수집 단계에서 이미 걸러진 상태. 별도 null 값 가드 불필요.
53066
+
53067
+
53068
+ if (item.data.xp !== undefined && item.data.yp !== undefined && item.data.xp !== null && item.data.yp !== null) {
53069
+ var fbDistance = helpers_util.calcBoxDistance(item.data, cx, cy);
53070
+
53071
+ if (fbDistance < fallbackDistance) {
53072
+ fallbackDistance = fbDistance;
53073
+ fallbackId = sId;
53074
+ }
52681
53075
  }
52682
53076
  }
52683
53077
  }
52684
53078
  }
53079
+ } // hit 없으면 거리 기반 fallback, 그것도 없으면 items 첫 키(항상 비어있을 가능성 방어).
53080
+
53081
+
53082
+ if (hitId === null) {
53083
+ hitId = fallbackId !== null ? fallbackId : Object.keys(items)[0];
53084
+ }
53085
+
53086
+ var maxHighlight = maxg !== null ? [maxSID, maxg] : null; // all-null 라벨인 경우 synthetic items[''] 로 label/index 만 채워 전달.
53087
+
53088
+ if (disableNullLabelSnap && Object.keys(items).length === 0 && targetDataIndex !== -1) {
53089
+ var _this$seriesList$refS;
53090
+
53091
+ var refSeriesID = sIds.find(function (sId) {
53092
+ var _s$data;
53093
+
53094
+ var s = _this4.seriesList[sId];
53095
+ 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;
53096
+ });
53097
+ var refPoint = refSeriesID ? (_this$seriesList$refS = this.seriesList[refSeriesID].data) === null || _this$seriesList$refS === void 0 ? void 0 : _this$seriesList$refS[targetDataIndex] : null;
53098
+
53099
+ if (refPoint) {
53100
+ items[''] = {
53101
+ id: '',
53102
+ name: '',
53103
+ label: isHorizontal ? refPoint.y : refPoint.x,
53104
+ index: targetDataIndex,
53105
+ axis: {
53106
+ x: 0,
53107
+ y: 0
53108
+ },
53109
+ data: {
53110
+ o: undefined,
53111
+ x: refPoint.x,
53112
+ y: refPoint.y
53113
+ }
53114
+ };
53115
+ hitId = '';
53116
+ }
52685
53117
  }
52686
53118
 
52687
- hitId = hitId === null ? Object.keys(items)[0] : hitId;
52688
- var maxHighlight = maxg !== null ? [maxSID, maxg] : null;
52689
53119
  return {
52690
53120
  items: items,
52691
53121
  hitId: hitId,
@@ -52704,9 +53134,11 @@ var plugins_interaction_modules = {
52704
53134
  var _this5 = this,
52705
53135
  _this$seriesList$refe;
52706
53136
 
52707
- var _offset = _slicedToArray(offset, 2),
52708
- xp = _offset[0],
52709
- yp = _offset[1];
53137
+ var disableNullLabelSnap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
53138
+
53139
+ var _offset2 = _slicedToArray(offset, 2),
53140
+ xp = _offset2[0],
53141
+ yp = _offset2[1];
52710
53142
 
52711
53143
  var isHorizontal = !!this.options.horizontal;
52712
53144
  var mousePos = isHorizontal ? yp : xp; // 데이터 있는 시리즈를 기준으로 라벨 위치 확인
@@ -52759,11 +53191,10 @@ var plugins_interaction_modules = {
52759
53191
  }
52760
53192
 
52761
53193
  var closestDistance = Infinity;
52762
- var closestIndex = -1; // 각 라벨에서 가장 가까운 것 찾기
53194
+ var closestIndex = -1; // 각 라벨에서 가장 가까운 것 찾기 (disableNullLabelSnap=true 면 all-null 라벨도 후보)
52763
53195
 
52764
53196
  var _loop = function _loop(_i) {
52765
- // 라벨에 유효한 데이터가 있는 시리즈가 하나 이상 있는지 확인
52766
- var hasValidData = sIds.some(function (sId) {
53197
+ var hasValidData = disableNullLabelSnap || sIds.some(function (sId) {
52767
53198
  var _series$data2, _series$data2$_i, _series$data3, _series$data3$_i;
52768
53199
 
52769
53200
  var series = _this5.seriesList[sId];
@@ -53379,9 +53810,9 @@ var plugins_interaction_modules = {
53379
53810
  * @returns {string}
53380
53811
  */
53381
53812
  getCurMouseLocation: function getCurMouseLocation(offset) {
53382
- var _offset2 = _slicedToArray(offset, 2),
53383
- offsetX = _offset2[0],
53384
- offsetY = _offset2[1];
53813
+ var _offset3 = _slicedToArray(offset, 2),
53814
+ offsetX = _offset3[0],
53815
+ offsetY = _offset3[1];
53385
53816
 
53386
53817
  var aPos = {
53387
53818
  x1: this.chartRect.x1 + this.labelOffset.left,