@progress/kendo-charts 1.19.0 → 1.20.0-dev.202111081615

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.
Files changed (63) hide show
  1. package/dist/cdn/js/kendo-charts.js +1 -1
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/chart/chart.js +13 -5
  4. package/dist/es/chart/constants.js +3 -1
  5. package/dist/es/chart/pan-and-zoom/mousewheel-zoom.js +8 -4
  6. package/dist/es/chart/selection.js +41 -1
  7. package/dist/es/common/create-hash-set.js +11 -1
  8. package/dist/es/common/mousewheel-delta.js +4 -7
  9. package/dist/es/core/axis.js +35 -0
  10. package/dist/es/core/category-axis.js +23 -17
  11. package/dist/es/core/date-category-axis.js +26 -38
  12. package/dist/es/core/date-value-axis.js +32 -33
  13. package/dist/es/core/logarithmic-axis.js +30 -27
  14. package/dist/es/core/numeric-axis.js +24 -20
  15. package/dist/es/main.js +1 -0
  16. package/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js +103 -0
  17. package/dist/es/qrcode/encodings/data-modes/byte-data-mode.js +51 -0
  18. package/dist/es/qrcode/encodings/data-modes/data-mode-instances.js +12 -0
  19. package/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js +49 -0
  20. package/dist/es/qrcode/encodings/data-modes/qr-data-mode.js +50 -0
  21. package/dist/es/qrcode/encodings/encoders/iso-encoder.js +29 -0
  22. package/dist/es/qrcode/encodings/encoders/utf8-encoder.js +91 -0
  23. package/dist/es/qrcode/encodings/encoding-result.js +16 -0
  24. package/dist/es/qrcode/encodings/encoding.js +701 -0
  25. package/dist/es/qrcode/encodings/free-cell-visitor.js +57 -0
  26. package/dist/es/qrcode/encodings/version-codewords.js +1289 -0
  27. package/dist/es/qrcode/qrcode.js +403 -0
  28. package/dist/es/qrcode/utils.js +28 -0
  29. package/dist/es/qrcode.js +1 -0
  30. package/dist/es/stock/navigator.js +3 -2
  31. package/dist/es2015/chart/chart.js +13 -5
  32. package/dist/es2015/chart/constants.js +3 -1
  33. package/dist/es2015/chart/pan-and-zoom/mousewheel-zoom.js +6 -4
  34. package/dist/es2015/chart/selection.js +40 -1
  35. package/dist/es2015/common/create-hash-set.js +11 -1
  36. package/dist/es2015/common/mousewheel-delta.js +4 -7
  37. package/dist/es2015/core/axis.js +28 -0
  38. package/dist/es2015/core/category-axis.js +21 -15
  39. package/dist/es2015/core/date-category-axis.js +27 -36
  40. package/dist/es2015/core/date-value-axis.js +33 -33
  41. package/dist/es2015/core/logarithmic-axis.js +29 -26
  42. package/dist/es2015/core/numeric-axis.js +24 -20
  43. package/dist/es2015/main.js +1 -0
  44. package/dist/es2015/qrcode/encodings/data-modes/alpha-numeric-data-mode.js +91 -0
  45. package/dist/es2015/qrcode/encodings/data-modes/byte-data-mode.js +41 -0
  46. package/dist/es2015/qrcode/encodings/data-modes/data-mode-instances.js +13 -0
  47. package/dist/es2015/qrcode/encodings/data-modes/numeric-data-mode.js +39 -0
  48. package/dist/es2015/qrcode/encodings/data-modes/qr-data-mode.js +44 -0
  49. package/dist/es2015/qrcode/encodings/encoders/iso-encoder.js +19 -0
  50. package/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js +83 -0
  51. package/dist/es2015/qrcode/encodings/encoding-result.js +10 -0
  52. package/dist/es2015/qrcode/encodings/encoding.js +701 -0
  53. package/dist/es2015/qrcode/encodings/free-cell-visitor.js +49 -0
  54. package/dist/es2015/qrcode/encodings/version-codewords.js +1289 -0
  55. package/dist/es2015/qrcode/qrcode.js +395 -0
  56. package/dist/es2015/qrcode/utils.js +28 -0
  57. package/dist/es2015/qrcode.js +1 -0
  58. package/dist/es2015/stock/navigator.js +3 -2
  59. package/dist/npm/main.d.ts +1 -0
  60. package/dist/npm/main.js +3058 -149
  61. package/dist/npm/qrcode.d.ts +5 -0
  62. package/dist/systemjs/kendo-charts.js +1 -1
  63. package/package.json +1 -1
@@ -22,12 +22,13 @@ import { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';
22
22
 
23
23
  import { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';
24
24
  import { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,
25
- elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round, HashMap } from '../common';
25
+ elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,
26
+ HashMap, valueOrDefault } from '../common';
26
27
 
27
28
  import { dateComparer } from '../date-utils';
28
29
 
29
30
  import { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,
30
- RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, SHOW_TOOLTIP, SERIES_HOVER } from './constants';
31
+ RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER } from './constants';
31
32
 
32
33
  import './animations';
33
34
  import './register-charts';
@@ -664,12 +665,13 @@ var Chart = (function (Class) {
664
665
  this._gestureDistance = e.distance;
665
666
  var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };
666
667
  if (this._zooming || !this.trigger(ZOOM_START, args)) {
668
+ var coords = this._eventCoordinates(e);
667
669
 
668
670
  if (!this._zooming) {
669
671
  this._zooming = true;
670
672
  }
671
673
 
672
- var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta);
674
+ var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);
673
675
  if (ranges && !this.trigger(ZOOM, args)) {
674
676
  mousewheelZoom.zoom();
675
677
  }
@@ -802,6 +804,12 @@ var Chart = (function (Class) {
802
804
  }
803
805
  };
804
806
 
807
+ Chart.prototype._mousewheelZoomRate = function _mousewheelZoomRate () {
808
+ var zoomable = this.options.zoomable;
809
+ var mousewheel = (zoomable || {}).mousewheel || {};
810
+ return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);
811
+ };
812
+
805
813
  Chart.prototype._mousewheel = function _mousewheel (e) {
806
814
  var this$1 = this;
807
815
 
@@ -828,7 +836,7 @@ var Chart = (function (Class) {
828
836
  clearTimeout(this._mwTimeout);
829
837
  }
830
838
 
831
- args.axisRanges = mousewheelZoom.updateRanges(delta);
839
+ args.axisRanges = mousewheelZoom.updateRanges(delta, coords);
832
840
  if (args.axisRanges && !this.trigger(ZOOM, args)) {
833
841
  mousewheelZoom.zoom();
834
842
  }
@@ -861,7 +869,7 @@ var Chart = (function (Class) {
861
869
  var currentAxis = axes[i];
862
870
  var axisName = currentAxis.options.name;
863
871
  if (axisName) {
864
- ranges[axisName] = currentAxis.scaleRange(-totalDelta);
872
+ ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1._mousewheelZoomRate(), coords);
865
873
  }
866
874
  }
867
875
 
@@ -94,6 +94,7 @@ var OUTSIDE_END = "outsideEnd";
94
94
 
95
95
  var MOUSEWHEEL = "DOMMouseScroll mousewheel";
96
96
  var MOUSEWHEEL_DELAY = 150;
97
+ var MOUSEWHEEL_ZOOM_RATE = 0.3;
97
98
 
98
99
  export {
99
100
  INITIAL_ANIMATION_DURATION, FADEIN,
@@ -115,7 +116,8 @@ export {
115
116
  LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,
116
117
  SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,
117
118
  DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,
118
- MOUSEWHEEL, MOUSEWHEEL_DELAY, SHOW_TOOLTIP, HIDE_TOOLTIP,
119
+ MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,
120
+ SHOW_TOOLTIP, HIDE_TOOLTIP,
119
121
  EQUALLY_SPACED_SERIES, ABOVE, BELOW,
120
122
  HEATMAP
121
123
  };
@@ -9,14 +9,18 @@ var MousewheelZoom = (function (Class) {
9
9
  Class.call(this);
10
10
 
11
11
  this.chart = chart;
12
- this.options = deepExtend({}, this.options, options);
12
+ this.options = deepExtend({
13
+ rate: 0.3
14
+ }, this.options, options);
13
15
  }
14
16
 
15
17
  if ( Class ) MousewheelZoom.__proto__ = Class;
16
18
  MousewheelZoom.prototype = Object.create( Class && Class.prototype );
17
19
  MousewheelZoom.prototype.constructor = MousewheelZoom;
18
20
 
19
- MousewheelZoom.prototype.updateRanges = function updateRanges (delta) {
21
+ MousewheelZoom.prototype.updateRanges = function updateRanges (delta, coords) {
22
+ var this$1 = this;
23
+
20
24
  var lock = (this.options.lock || "").toLowerCase();
21
25
  var axisRanges = [];
22
26
  var axes = this.chart._plotArea.axes;
@@ -26,7 +30,7 @@ var MousewheelZoom = (function (Class) {
26
30
  var vertical = axis.options.vertical;
27
31
 
28
32
  if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {
29
- var range = axis.zoomRange(-delta);
33
+ var range = axis.zoomRange(-delta * this$1.options.rate, coords);
30
34
 
31
35
  if (range) {
32
36
  axisRanges.push({
@@ -61,4 +65,4 @@ var MousewheelZoom = (function (Class) {
61
65
  return MousewheelZoom;
62
66
  }(Class));
63
67
 
64
- export default MousewheelZoom;
68
+ export default MousewheelZoom;
@@ -4,7 +4,7 @@ import { DateCategoryAxis, Point } from '../core';
4
4
 
5
5
  import { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';
6
6
 
7
- import { LEFT, RIGHT, MIN_VALUE, MAX_VALUE } from '../common/constants';
7
+ import { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';
8
8
  import { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';
9
9
  import { parseDate } from '../date-utils';
10
10
 
@@ -564,6 +564,46 @@ var Selection = (function (Class) {
564
564
  }
565
565
  };
566
566
 
567
+ Selection.prototype.zoom = function zoom (delta, coords) {
568
+ var options = this.options;
569
+ var min = this._index(options.min);
570
+ var max = this._index(options.max);
571
+ var from = this._index(options.from);
572
+ var to = this._index(options.to);
573
+ var range = { from: from, to: to };
574
+ var oldRange = deepExtend({}, range);
575
+
576
+ var ref = this.categoryAxis.options;
577
+ var reverse = ref.reverse;
578
+ var origin = X + (reverse ? '2' : '1');
579
+ var lineBox = this.categoryAxis.lineBox();
580
+ var relative = Math.abs(lineBox[origin] - coords[X]);
581
+ var size = lineBox.width();
582
+ var position = round(relative / size, 2);
583
+ var minDelta = round(position * delta);
584
+ var maxDelta = round((1 - position) * delta);
585
+
586
+ if (this._state) {
587
+ range = this._state.range;
588
+ }
589
+
590
+ range.from = limitValue(
591
+ limitValue(from - minDelta, 0, to - 1),
592
+ min, max
593
+ );
594
+
595
+ range.to = limitValue(
596
+ limitValue(to + maxDelta, range.from + 1, max),
597
+ min,
598
+ max
599
+ );
600
+
601
+ if (range.from !== oldRange.from || range.to !== oldRange.to) {
602
+ this.set(range.from, range.to);
603
+ return true;
604
+ }
605
+ };
606
+
567
607
  Selection.prototype.trigger = function trigger (name, args) {
568
608
  return (this.observer || this.chart).trigger(name, args);
569
609
  };
@@ -80,9 +80,19 @@ prototypeAccessors$1.size.get = function () {
80
80
  Object.defineProperties( SetWrapper.prototype, prototypeAccessors$1 );
81
81
 
82
82
  // TODO: Drop LegacySet when removing support for IE10
83
+ var supportsSet = function () {
84
+ var supported = false;
83
85
 
84
- export default function createHashSet(values) {
85
86
  if (typeof Set === 'function') {
87
+ var set = new Set([1]);
88
+ supported = set.has(1);
89
+ }
90
+
91
+ return supported;
92
+ };
93
+
94
+ export default function createHashSet(values) {
95
+ if (supportsSet()) {
86
96
  return new SetWrapper(values);
87
97
  }
88
98
 
@@ -1,16 +1,13 @@
1
- import { drawing } from '@progress/kendo-drawing';
2
-
3
1
  export default function mousewheelDelta(e) {
4
2
  var delta = 0;
5
3
 
6
4
  if (e.wheelDelta) {
7
5
  delta = -e.wheelDelta / 120;
8
- delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);
6
+ } else if (e.detail) {
7
+ delta = e.detail / 3;
9
8
  }
10
9
 
11
- if (e.detail) {
12
- delta = drawing.util.round(e.detail / 3);
13
- }
10
+ delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);
14
11
 
15
12
  return delta;
16
- }
13
+ }
@@ -860,6 +860,41 @@ var Axis = (function (ChartElement) {
860
860
  };
861
861
  };
862
862
 
863
+ Axis.prototype.lineInfo = function lineInfo () {
864
+ var ref = this.options;
865
+ var vertical = ref.vertical;
866
+ var reverse = ref.reverse;
867
+ var lineBox = this.lineBox();
868
+ var lineSize = vertical ? lineBox.height() : lineBox.width();
869
+ var axis = vertical ? Y : X;
870
+ var axisDir = (vertical ? -1 : 1) * (reverse ? -1 : 1);
871
+ var startEdge = axisDir === 1 ? 1 : 2;
872
+ var axisOrigin = axis + startEdge.toString();
873
+ var lineStart = lineBox[axisOrigin];
874
+
875
+ return {
876
+ axis: axis,
877
+ axisOrigin: axisOrigin,
878
+ axisDir: axisDir,
879
+ lineBox: lineBox,
880
+ lineSize: lineSize,
881
+ lineStart: lineStart
882
+ };
883
+ };
884
+
885
+ Axis.prototype.pointOffset = function pointOffset (point) {
886
+ var ref = this.lineInfo();
887
+ var axis = ref.axis;
888
+ var axisDir = ref.axisDir;
889
+ var axisOrigin = ref.axisOrigin;
890
+ var lineBox = ref.lineBox;
891
+ var lineSize = ref.lineSize;
892
+ var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];
893
+ var offset = relative / lineSize;
894
+
895
+ return offset;
896
+ };
897
+
863
898
  Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {
864
899
  return !this.options.justified;
865
900
  };
@@ -6,6 +6,7 @@ import { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrD
6
6
  import { dateEquals } from '../date-utils';
7
7
 
8
8
  var MIN_CATEGORY_POINTS_RANGE = 0.01;
9
+ var MIN_CATEGORY_RANGE = 0.1;
9
10
 
10
11
  function indexOf(value, arr) {
11
12
  if (value instanceof Date) {
@@ -406,29 +407,34 @@ var CategoryAxis = (function (Axis) {
406
407
  };
407
408
  };
408
409
 
409
- CategoryAxis.prototype.zoomRange = function zoomRange (rate) {
410
+ CategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {
411
+ var position = Math.abs(this.pointOffset(cursor));
410
412
  var rangeIndices = this.totalRangeIndices();
411
- var ref = this.totalRange();
412
- var totalMin = ref.min;
413
- var totalMax = ref.max;
414
- var min = limitValue(rangeIndices.min + rate, totalMin, totalMax);
415
- var max = limitValue(rangeIndices.max - rate, totalMin, totalMax);
416
-
417
- if (max - min > 0) {
418
- return {
419
- min: min,
420
- max: max
421
- };
413
+ var delta = (rangeIndices.max - rangeIndices.min) * Math.min(1, scale);
414
+ var minDelta = position * delta;
415
+ var maxDelta = (1 - position) * delta;
416
+ var min = rangeIndices.min + minDelta;
417
+ var max = rangeIndices.max - maxDelta;
418
+
419
+ if (max - min < MIN_CATEGORY_RANGE) {
420
+ max = min + MIN_CATEGORY_RANGE;
422
421
  }
422
+
423
+ return {
424
+ min: min,
425
+ max: max
426
+ };
423
427
  };
424
428
 
425
- CategoryAxis.prototype.scaleRange = function scaleRange (scale) {
426
- var range = this.options.categories.length;
427
- var delta = scale * range;
429
+ CategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {
430
+ var ref = this.totalRange();
431
+ var totalMin = ref.min;
432
+ var totalMax = ref.max;
433
+ var range = this.scaleRange(scale, cursor);
428
434
 
429
435
  return {
430
- min: -delta,
431
- max: range + delta
436
+ min: limitValue(range.min, totalMin, totalMax),
437
+ max: limitValue(range.max, totalMin, totalMax)
432
438
  };
433
439
  };
434
440
 
@@ -471,31 +471,6 @@ var DateCategoryAxis = (function (CategoryAxis) {
471
471
  return range;
472
472
  };
473
473
 
474
- DateCategoryAxis.prototype.scaleRange = function scaleRange (delta) {
475
- var rounds = Math.abs(delta);
476
- var result = this.range();
477
- var from = result.min;
478
- var to = result.max;
479
-
480
- if (from && to) {
481
- while (rounds--) {
482
- var range = dateDiff(from, to);
483
- var step = Math.round(range * 0.1);
484
- if (delta < 0) {
485
- from = addTicks(from, step);
486
- to = addTicks(to, -step);
487
- } else {
488
- from = addTicks(from, -step);
489
- to = addTicks(to, step);
490
- }
491
- }
492
-
493
- result = { min: from, max: to };
494
- }
495
-
496
- return result;
497
- };
498
-
499
474
  DateCategoryAxis.prototype.labelsRange = function labelsRange () {
500
475
  return {
501
476
  min: this.options.labels.skip,
@@ -556,9 +531,9 @@ var DateCategoryAxis = (function (CategoryAxis) {
556
531
  };
557
532
  };
558
533
 
559
- DateCategoryAxis.prototype.zoomRange = function zoomRange (delta) {
534
+ DateCategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {
560
535
  if (this.isEmpty()) {
561
- return null;
536
+ return {};
562
537
  }
563
538
 
564
539
  var options = this.options;
@@ -567,12 +542,16 @@ var DateCategoryAxis = (function (CategoryAxis) {
567
542
  var ref = this.dataRange.displayRange();
568
543
  var rangeMin = ref.min;
569
544
  var rangeMax = ref.max;
545
+
546
+ var position = Math.abs(this.pointOffset(cursor));
547
+ var delta = (rangeMax - rangeMin) * scale;
548
+ var minDelta = Math.round(position * delta);
549
+ var maxDelta = Math.round((1 - position) * delta);
550
+
570
551
  var ref$1 = this.dataRange.options;
571
- var weekStartDay = ref$1.weekStartDay;
572
552
  var baseUnit = ref$1.baseUnit;
573
- var baseUnitStep = ref$1.baseUnitStep;
574
- var min = addDuration(rangeMin, delta * baseUnitStep, baseUnit, weekStartDay);
575
- var max = addDuration(rangeMax, -delta * baseUnitStep, baseUnit, weekStartDay);
553
+ var min = new Date(rangeMin.getTime() + minDelta);
554
+ var max = new Date(rangeMax.getTime() - maxDelta);
576
555
 
577
556
  if (fit) {
578
557
  var autoBaseUnitSteps = options.autoBaseUnitSteps;
@@ -615,13 +594,6 @@ var DateCategoryAxis = (function (CategoryAxis) {
615
594
  }
616
595
  }
617
596
 
618
- if (min < totalLimits.min) {
619
- min = totalLimits.min;
620
- }
621
- if (max > totalLimits.max) {
622
- max = totalLimits.max;
623
- }
624
-
625
597
  if (min && max && dateDiff(max, min) > 0) {
626
598
  return {
627
599
  min: min,
@@ -632,6 +604,22 @@ var DateCategoryAxis = (function (CategoryAxis) {
632
604
  }
633
605
  };
634
606
 
607
+ DateCategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {
608
+ var totalLimits = this.dataRange.total();
609
+ var range = this.scaleRange(scale, cursor);
610
+
611
+ if (range) {
612
+ if (range.min < totalLimits.min) {
613
+ range.min = totalLimits.min;
614
+ }
615
+ if (range.max > totalLimits.max) {
616
+ range.max = totalLimits.max;
617
+ }
618
+ }
619
+
620
+ return range;
621
+ };
622
+
635
623
  DateCategoryAxis.prototype.range = function range () {
636
624
  return this.dataRange.displayRange();
637
625
  };
@@ -12,6 +12,8 @@ import ceil from './utils/ceil';
12
12
  import { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';
13
13
  import { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';
14
14
 
15
+ var MIN_VALUE_RANGE = 1000;
16
+
15
17
  var DateValueAxis = (function (Axis) {
16
18
  function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {
17
19
  var min = toDate(seriesMin);
@@ -124,23 +126,23 @@ var DateValueAxis = (function (Axis) {
124
126
  return new AxisLabel(date, text, index, null, labelOptions);
125
127
  };
126
128
 
127
- DateValueAxis.prototype.translateRange = function translateRange (delta, exact) {
129
+ DateValueAxis.prototype.translateRange = function translateRange (delta) {
128
130
  var options = this.options;
129
- var baseUnit = options.baseUnit;
130
- var weekStartDay = options.weekStartDay || 0;
131
131
  var lineBox = this.lineBox();
132
- var size = options.vertical ? lineBox.height() : lineBox.width();
132
+ var vertical = options.vertical;
133
+ var reverse = options.reverse;
134
+ var size = vertical ? lineBox.height() : lineBox.width();
133
135
  var range = this.range();
134
136
  var scale = size / dateDiff(range.max, range.min);
135
- var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);
136
- var from = addTicks(options.min, offset);
137
- var to = addTicks(options.max, offset);
138
137
 
139
- if (!exact) {
140
- from = addDuration(from, 0, baseUnit, weekStartDay);
141
- to = addDuration(to, 0, baseUnit, weekStartDay);
138
+ var offset = round(delta / scale, DEFAULT_PRECISION);
139
+ if ((vertical || reverse) && !(vertical && reverse )) {
140
+ offset = -offset;
142
141
  }
143
142
 
143
+ var from = addTicks(options.min, offset);
144
+ var to = addTicks(options.max, offset);
145
+
144
146
  return {
145
147
  min: from,
146
148
  max: to,
@@ -148,27 +150,6 @@ var DateValueAxis = (function (Axis) {
148
150
  };
149
151
  };
150
152
 
151
- DateValueAxis.prototype.scaleRange = function scaleRange (delta) {
152
- var ref = this.options;
153
- var from = ref.min;
154
- var to = ref.max;
155
- var rounds = Math.abs(delta);
156
-
157
- while (rounds--) {
158
- var range = dateDiff(from, to);
159
- var step = Math.round(range * 0.1);
160
- if (delta < 0) {
161
- from = addTicks(from, step);
162
- to = addTicks(to, -step);
163
- } else {
164
- from = addTicks(from, -step);
165
- to = addTicks(to, step);
166
- }
167
- }
168
-
169
- return { min: from, max: to };
170
- };
171
-
172
153
  DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {
173
154
  var range = this.range();
174
155
 
@@ -199,8 +180,26 @@ var DateValueAxis = (function (Axis) {
199
180
  };
200
181
  };
201
182
 
202
- DateValueAxis.prototype.zoomRange = function zoomRange (delta) {
203
- var range = this.scaleRange(delta);
183
+ DateValueAxis.prototype.scaleRange = function scaleRange (scale, cursor) {
184
+ var position = Math.abs(this.pointOffset(cursor));
185
+ var delta = (this.options.max - this.options.min) * Math.min(1, scale);
186
+ var minDelta = position * delta;
187
+ var maxDelta = (1 - position) * delta;
188
+ var min = toDate(toTime(this.options.min) + minDelta);
189
+ var max = toDate(toTime(this.options.max) - maxDelta);
190
+
191
+ if (max - min < MIN_VALUE_RANGE) {
192
+ max = toDate(toTime(min) + MIN_VALUE_RANGE);
193
+ }
194
+
195
+ return {
196
+ min: min,
197
+ max: max
198
+ };
199
+ };
200
+
201
+ DateValueAxis.prototype.zoomRange = function zoomRange (scale, cursor) {
202
+ var range = this.scaleRange(scale, cursor);
204
203
  var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));
205
204
  var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));
206
205
 
@@ -11,6 +11,7 @@ import { DEFAULT_PRECISION, BLACK, X, Y } from '../common/constants';
11
11
  import { deepExtend, defined, inArray, limitValue, round, setDefaultOptions } from '../common';
12
12
 
13
13
  var DEFAULT_MAJOR_UNIT = 10;
14
+ var MIN_VALUE_RANGE = 1e-6;
14
15
 
15
16
  var LogarithmicAxis = (function (Axis) {
16
17
  function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {
@@ -140,16 +141,6 @@ var LogarithmicAxis = (function (Axis) {
140
141
  return { min: options.min, max: options.max };
141
142
  };
142
143
 
143
- LogarithmicAxis.prototype.scaleRange = function scaleRange (delta) {
144
- var base = this.options.majorUnit;
145
- var offset = -delta;
146
-
147
- return {
148
- min: Math.pow(base, this.logMin - offset),
149
- max: Math.pow(base, this.logMax + offset)
150
- };
151
- };
152
-
153
144
  LogarithmicAxis.prototype.translateRange = function translateRange (delta) {
154
145
  var ref = this;
155
146
  var options = ref.options;
@@ -333,24 +324,36 @@ var LogarithmicAxis = (function (Axis) {
333
324
  };
334
325
  };
335
326
 
336
- LogarithmicAxis.prototype.zoomRange = function zoomRange (delta) {
327
+ LogarithmicAxis.prototype.scaleRange = function scaleRange (scale, cursor) {
328
+ var ref = this.options;
329
+ var base = ref.majorUnit;
330
+ var logMin = log(this.options.min, base);
331
+ var logMax = log(this.options.max, base);
332
+ var position = Math.abs(this.pointOffset(cursor));
333
+ var delta = (logMax - logMin) * Math.min(1, scale);
334
+ var min = Math.pow(base, logMin + position * delta);
335
+ var max = Math.pow(base, logMax - (1 - position) * delta);
336
+
337
+ if (max - min < MIN_VALUE_RANGE) {
338
+ max = min + MIN_VALUE_RANGE;
339
+ }
340
+
341
+ return {
342
+ min: min,
343
+ max: max
344
+ };
345
+ };
346
+
347
+ LogarithmicAxis.prototype.zoomRange = function zoomRange (scale, cursor) {
348
+ var range = this.scaleRange(scale, cursor);
337
349
  var ref = this;
338
- var options = ref.options;
339
350
  var totalMin = ref.totalMin;
340
351
  var totalMax = ref.totalMax;
341
- var newRange = this.scaleRange(delta);
342
- var min = limitValue(newRange.min, totalMin, totalMax);
343
- var max = limitValue(newRange.max, totalMin, totalMax);
344
- var base = options.majorUnit;
345
- var acceptOptionsRange = max > min && options.min && options.max && (round(log(options.max, base) - log(options.min, base), DEFAULT_PRECISION) < 1);
346
- var acceptNewRange = !(options.min === totalMin && options.max === totalMax) && round(log(max, base) - log(min, base), DEFAULT_PRECISION) >= 1;
347
-
348
- if (acceptOptionsRange || acceptNewRange) {
349
- return {
350
- min: min,
351
- max: max
352
- };
353
- }
352
+
353
+ return {
354
+ min: limitValue(range.min, totalMin, totalMax),
355
+ max: limitValue(range.max, totalMin, totalMax)
356
+ };
354
357
  };
355
358
 
356
359
  LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {
@@ -445,8 +448,8 @@ function throwNegativeValuesError() {
445
448
  throw new Error("Non positive values cannot be used for a logarithmic axis");
446
449
  }
447
450
 
448
- function log(y, x) {
449
- return Math.log(y) / Math.log(x);
451
+ function log(x, base) {
452
+ return Math.log(x) / Math.log(base);
450
453
  }
451
454
 
452
455
  setDefaultOptions(LogarithmicAxis, {
@@ -205,16 +205,6 @@ var NumericAxis = (function (Axis) {
205
205
  };
206
206
  };
207
207
 
208
- NumericAxis.prototype.scaleRange = function scaleRange (delta) {
209
- var options = this.options;
210
- var offset = -delta * options.majorUnit;
211
-
212
- return {
213
- min: options.min - offset,
214
- max: options.max + offset
215
- };
216
- };
217
-
218
208
  NumericAxis.prototype.labelsCount = function labelsCount () {
219
209
  return this.getDivisions(this.options.majorUnit);
220
210
  };
@@ -251,20 +241,34 @@ var NumericAxis = (function (Axis) {
251
241
  }
252
242
  };
253
243
 
254
- NumericAxis.prototype.zoomRange = function zoomRange (delta) {
244
+ NumericAxis.prototype.scaleRange = function scaleRange (scale, cursor) {
245
+ var position = Math.abs(this.pointOffset(cursor));
246
+ var delta = (this.options.max - this.options.min) * Math.min(1, scale);
247
+ var minDelta = position * delta;
248
+ var maxDelta = (1 - position) * delta;
249
+ var min = this.options.min + minDelta;
250
+ var max = this.options.max - maxDelta;
251
+
252
+ if (max - min < MIN_VALUE_RANGE) {
253
+ max = min + MIN_VALUE_RANGE;
254
+ }
255
+
256
+ return {
257
+ min: min,
258
+ max: max
259
+ };
260
+ };
261
+
262
+ NumericAxis.prototype.zoomRange = function zoomRange (scale, cursor) {
255
263
  var ref = this;
256
264
  var totalMin = ref.totalMin;
257
265
  var totalMax = ref.totalMax;
258
- var newRange = this.scaleRange(delta);
259
- var min = limitValue(newRange.min, totalMin, totalMax);
260
- var max = limitValue(newRange.max, totalMin, totalMax);
266
+ var range = this.scaleRange(scale, cursor);
261
267
 
262
- if (this.isValidRange(min, max)) {
263
- return {
264
- min: min,
265
- max: max
266
- };
267
- }
268
+ return {
269
+ min: limitValue(range.min, totalMin, totalMax),
270
+ max: limitValue(range.max, totalMin, totalMax)
271
+ };
268
272
  };
269
273
 
270
274
  NumericAxis.prototype.isValidRange = function isValidRange (min, max) {
package/dist/es/main.js CHANGED
@@ -5,6 +5,7 @@ export * from './sparkline';
5
5
  export * from './stock';
6
6
  export * from './gauges';
7
7
  export * from './barcode';
8
+ export * from './qrcode';
8
9
  export * from './common';
9
10
 
10
11
  export { baseTheme as chartBaseTheme } from './chart/base-theme';