chartkick 4.1.3 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Chart.js v3.7.0
2
+ * Chart.js v3.8.0
3
3
  * https://www.chartjs.org
4
- * (c) 2021 Chart.js Contributors
4
+ * (c) 2022 Chart.js Contributors
5
5
  * Released under the MIT License
6
6
  *
7
7
  * chartjs-adapter-date-fns v2.0.0
@@ -9,7 +9,7 @@
9
9
  * (c) 2021 chartjs-adapter-date-fns Contributors
10
10
  * Released under the MIT license
11
11
  *
12
- * date-fns v2.27.0
12
+ * date-fns v2.28.0
13
13
  * https://date-fns.org
14
14
  * (c) 2021 Sasha Koss and Lesha Koss
15
15
  * Released under the MIT License
@@ -19,22 +19,42 @@
19
19
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
20
20
  typeof define === 'function' && define.amd ? define(factory) :
21
21
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chart = factory());
22
- }(this, (function () { 'use strict';
22
+ })(this, (function () { 'use strict';
23
23
 
24
- function _typeof(obj) {
25
- "@babel/helpers - typeof";
24
+ function ownKeys(object, enumerableOnly) {
25
+ var keys = Object.keys(object);
26
26
 
27
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
28
- _typeof = function (obj) {
29
- return typeof obj;
30
- };
31
- } else {
32
- _typeof = function (obj) {
33
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
34
- };
27
+ if (Object.getOwnPropertySymbols) {
28
+ var symbols = Object.getOwnPropertySymbols(object);
29
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
30
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
31
+ })), keys.push.apply(keys, symbols);
32
+ }
33
+
34
+ return keys;
35
+ }
36
+
37
+ function _objectSpread2(target) {
38
+ for (var i = 1; i < arguments.length; i++) {
39
+ var source = null != arguments[i] ? arguments[i] : {};
40
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
41
+ _defineProperty(target, key, source[key]);
42
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
43
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
44
+ });
35
45
  }
36
46
 
37
- return _typeof(obj);
47
+ return target;
48
+ }
49
+
50
+ function _typeof(obj) {
51
+ "@babel/helpers - typeof";
52
+
53
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
54
+ return typeof obj;
55
+ } : function (obj) {
56
+ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
57
+ }, _typeof(obj);
38
58
  }
39
59
 
40
60
  function _classCallCheck(instance, Constructor) {
@@ -56,6 +76,9 @@
56
76
  function _createClass(Constructor, protoProps, staticProps) {
57
77
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
58
78
  if (staticProps) _defineProperties(Constructor, staticProps);
79
+ Object.defineProperty(Constructor, "prototype", {
80
+ writable: false
81
+ });
59
82
  return Constructor;
60
83
  }
61
84
 
@@ -74,40 +97,6 @@
74
97
  return obj;
75
98
  }
76
99
 
77
- function ownKeys(object, enumerableOnly) {
78
- var keys = Object.keys(object);
79
-
80
- if (Object.getOwnPropertySymbols) {
81
- var symbols = Object.getOwnPropertySymbols(object);
82
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
83
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
84
- });
85
- keys.push.apply(keys, symbols);
86
- }
87
-
88
- return keys;
89
- }
90
-
91
- function _objectSpread2(target) {
92
- for (var i = 1; i < arguments.length; i++) {
93
- var source = arguments[i] != null ? arguments[i] : {};
94
-
95
- if (i % 2) {
96
- ownKeys(Object(source), true).forEach(function (key) {
97
- _defineProperty(target, key, source[key]);
98
- });
99
- } else if (Object.getOwnPropertyDescriptors) {
100
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
101
- } else {
102
- ownKeys(Object(source)).forEach(function (key) {
103
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
104
- });
105
- }
106
- }
107
-
108
- return target;
109
- }
110
-
111
100
  function _inherits(subClass, superClass) {
112
101
  if (typeof superClass !== "function" && superClass !== null) {
113
102
  throw new TypeError("Super expression must either be null or a function");
@@ -120,22 +109,24 @@
120
109
  configurable: true
121
110
  }
122
111
  });
112
+ Object.defineProperty(subClass, "prototype", {
113
+ writable: false
114
+ });
123
115
  if (superClass) _setPrototypeOf(subClass, superClass);
124
116
  }
125
117
 
126
118
  function _getPrototypeOf(o) {
127
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
119
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
128
120
  return o.__proto__ || Object.getPrototypeOf(o);
129
121
  };
130
122
  return _getPrototypeOf(o);
131
123
  }
132
124
 
133
125
  function _setPrototypeOf(o, p) {
134
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
126
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
135
127
  o.__proto__ = p;
136
128
  return o;
137
129
  };
138
-
139
130
  return _setPrototypeOf(o, p);
140
131
  }
141
132
 
@@ -163,6 +154,8 @@
163
154
  function _possibleConstructorReturn(self, call) {
164
155
  if (call && (typeof call === "object" || typeof call === "function")) {
165
156
  return call;
157
+ } else if (call !== void 0) {
158
+ throw new TypeError("Derived constructors may only return object or undefined");
166
159
  }
167
160
 
168
161
  return _assertThisInitialized(self);
@@ -196,9 +189,9 @@
196
189
  return object;
197
190
  }
198
191
 
199
- function _get(target, property, receiver) {
192
+ function _get() {
200
193
  if (typeof Reflect !== "undefined" && Reflect.get) {
201
- _get = Reflect.get;
194
+ _get = Reflect.get.bind();
202
195
  } else {
203
196
  _get = function _get(target, property, receiver) {
204
197
  var base = _superPropBase(target, property);
@@ -207,14 +200,14 @@
207
200
  var desc = Object.getOwnPropertyDescriptor(base, property);
208
201
 
209
202
  if (desc.get) {
210
- return desc.get.call(receiver);
203
+ return desc.get.call(arguments.length < 3 ? target : receiver);
211
204
  }
212
205
 
213
206
  return desc.value;
214
207
  };
215
208
  }
216
209
 
217
- return _get(target, property, receiver || target);
210
+ return _get.apply(this, arguments);
218
211
  }
219
212
 
220
213
  function _slicedToArray(arr, i) {
@@ -234,18 +227,21 @@
234
227
  }
235
228
 
236
229
  function _iterableToArray(iter) {
237
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
230
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
238
231
  }
239
232
 
240
233
  function _iterableToArrayLimit(arr, i) {
241
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
234
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
235
+
236
+ if (_i == null) return;
242
237
  var _arr = [];
243
238
  var _n = true;
244
239
  var _d = false;
245
- var _e = undefined;
240
+
241
+ var _s, _e;
246
242
 
247
243
  try {
248
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
244
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
249
245
  _arr.push(_s.value);
250
246
 
251
247
  if (i && _arr.length === i) break;
@@ -290,9 +286,9 @@
290
286
  }
291
287
 
292
288
  function _createForOfIteratorHelper(o, allowArrayLike) {
293
- var it;
289
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
294
290
 
295
- if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
291
+ if (!it) {
296
292
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
297
293
  if (it) o = it;
298
294
  var i = 0;
@@ -325,7 +321,7 @@
325
321
  err;
326
322
  return {
327
323
  s: function () {
328
- it = o[Symbol.iterator]();
324
+ it = it.call(o);
329
325
  },
330
326
  n: function () {
331
327
  var step = it.next();
@@ -431,7 +427,7 @@
431
427
 
432
428
  var type = Object.prototype.toString.call(value);
433
429
 
434
- if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {
430
+ if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {
435
431
  return true;
436
432
  }
437
433
 
@@ -618,7 +614,7 @@
618
614
  var idx = indexOfDotOrLength(key, pos);
619
615
 
620
616
  while (obj && idx > pos) {
621
- obj = obj[key.substr(pos, idx - pos)];
617
+ obj = obj[key.slice(pos, idx)];
622
618
  pos = idx + 1;
623
619
  idx = indexOfDotOrLength(key, pos);
624
620
  }
@@ -951,12 +947,36 @@
951
947
  }
952
948
  };
953
949
  /*!
954
- * @kurkle/color v0.1.9
950
+ * @kurkle/color v0.2.1
955
951
  * https://github.com/kurkle/color#readme
956
- * (c) 2020 Jukka Kurkela
952
+ * (c) 2022 Jukka Kurkela
957
953
  * Released under the MIT License
958
954
  */
959
955
 
956
+ function round(v) {
957
+ return v + 0.5 | 0;
958
+ }
959
+
960
+ var lim = function lim(v, l, h) {
961
+ return Math.max(Math.min(v, h), l);
962
+ };
963
+
964
+ function p2b(v) {
965
+ return lim(round(v * 2.55), 0, 255);
966
+ }
967
+
968
+ function n2b(v) {
969
+ return lim(round(v * 255), 0, 255);
970
+ }
971
+
972
+ function b2n(v) {
973
+ return lim(round(v / 2.55) / 100, 0, 1);
974
+ }
975
+
976
+ function n2p(v) {
977
+ return lim(round(v * 100), 0, 100);
978
+ }
979
+
960
980
  var map$1 = {
961
981
  0: 0,
962
982
  1: 1,
@@ -981,7 +1001,8 @@
981
1001
  e: 14,
982
1002
  f: 15
983
1003
  };
984
- var hex = '0123456789ABCDEF';
1004
+
1005
+ var hex = _toConsumableArray('0123456789ABCDEF');
985
1006
 
986
1007
  var h1 = function h1(b) {
987
1008
  return hex[b & 0xF];
@@ -995,9 +1016,9 @@
995
1016
  return (b & 0xF0) >> 4 === (b & 0xF);
996
1017
  };
997
1018
 
998
- function isShort(v) {
1019
+ var isShort = function isShort(v) {
999
1020
  return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);
1000
- }
1021
+ };
1001
1022
 
1002
1023
  function hexParse(str) {
1003
1024
  var len = str.length;
@@ -1024,67 +1045,13 @@
1024
1045
  return ret;
1025
1046
  }
1026
1047
 
1027
- function _hexString(v) {
1028
- var f = isShort(v) ? h1 : h2;
1029
- return v ? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '') : v;
1030
- }
1031
-
1032
- function round(v) {
1033
- return v + 0.5 | 0;
1034
- }
1035
-
1036
- var lim = function lim(v, l, h) {
1037
- return Math.max(Math.min(v, h), l);
1048
+ var alpha = function alpha(a, f) {
1049
+ return a < 255 ? f(a) : '';
1038
1050
  };
1039
1051
 
1040
- function p2b(v) {
1041
- return lim(round(v * 2.55), 0, 255);
1042
- }
1043
-
1044
- function n2b(v) {
1045
- return lim(round(v * 255), 0, 255);
1046
- }
1047
-
1048
- function b2n(v) {
1049
- return lim(round(v / 2.55) / 100, 0, 1);
1050
- }
1051
-
1052
- function n2p(v) {
1053
- return lim(round(v * 100), 0, 100);
1054
- }
1055
-
1056
- var RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;
1057
-
1058
- function rgbParse(str) {
1059
- var m = RGB_RE.exec(str);
1060
- var a = 255;
1061
- var r, g, b;
1062
-
1063
- if (!m) {
1064
- return;
1065
- }
1066
-
1067
- if (m[7] !== r) {
1068
- var v = +m[7];
1069
- a = 255 & (m[8] ? p2b(v) : v * 255);
1070
- }
1071
-
1072
- r = +m[1];
1073
- g = +m[3];
1074
- b = +m[5];
1075
- r = 255 & (m[2] ? p2b(r) : r);
1076
- g = 255 & (m[4] ? p2b(g) : g);
1077
- b = 255 & (m[6] ? p2b(b) : b);
1078
- return {
1079
- r: r,
1080
- g: g,
1081
- b: b,
1082
- a: a
1083
- };
1084
- }
1085
-
1086
- function _rgbString(v) {
1087
- return v && (v.a < 255 ? "rgba(".concat(v.r, ", ").concat(v.g, ", ").concat(v.b, ", ").concat(b2n(v.a), ")") : "rgb(".concat(v.r, ", ").concat(v.g, ", ").concat(v.b, ")"));
1052
+ function _hexString(v) {
1053
+ var f = isShort(v) ? h1 : h2;
1054
+ return v ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : undefined;
1088
1055
  }
1089
1056
 
1090
1057
  var HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;
@@ -1127,6 +1094,18 @@
1127
1094
  return rgb;
1128
1095
  }
1129
1096
 
1097
+ function hueValue(r, g, b, d, max) {
1098
+ if (r === max) {
1099
+ return (g - b) / d + (g < b ? 6 : 0);
1100
+ }
1101
+
1102
+ if (g === max) {
1103
+ return (b - r) / d + 2;
1104
+ }
1105
+
1106
+ return (r - g) / d + 4;
1107
+ }
1108
+
1130
1109
  function rgb2hsl(v) {
1131
1110
  var range = 255;
1132
1111
  var r = v.r / range;
@@ -1140,7 +1119,7 @@
1140
1119
  if (max !== min) {
1141
1120
  d = max - min;
1142
1121
  s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
1143
- h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
1122
+ h = hueValue(r, g, b, d, max);
1144
1123
  h = h * 60 + 0.5;
1145
1124
  }
1146
1125
 
@@ -1221,7 +1200,7 @@
1221
1200
  return v.a < 255 ? "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(b2n(v.a), ")") : "hsl(".concat(h, ", ").concat(s, "%, ").concat(l, "%)");
1222
1201
  }
1223
1202
 
1224
- var map$1$1 = {
1203
+ var map$2 = {
1225
1204
  x: 'dark',
1226
1205
  Z: 'light',
1227
1206
  Y: 're',
@@ -1250,7 +1229,7 @@
1250
1229
  I: 'ightg',
1251
1230
  J: 'wh'
1252
1231
  };
1253
- var names = {
1232
+ var names$1 = {
1254
1233
  OiceXe: 'f0f8ff',
1255
1234
  antiquewEte: 'faebd7',
1256
1235
  aqua: 'ffff',
@@ -1403,8 +1382,8 @@
1403
1382
 
1404
1383
  function unpack() {
1405
1384
  var unpacked = {};
1406
- var keys = Object.keys(names);
1407
- var tkeys = Object.keys(map$1$1);
1385
+ var keys = Object.keys(names$1);
1386
+ var tkeys = Object.keys(map$2);
1408
1387
  var i, j, k, ok, nk;
1409
1388
 
1410
1389
  for (i = 0; i < keys.length; i++) {
@@ -1412,25 +1391,25 @@
1412
1391
 
1413
1392
  for (j = 0; j < tkeys.length; j++) {
1414
1393
  k = tkeys[j];
1415
- nk = nk.replace(k, map$1$1[k]);
1394
+ nk = nk.replace(k, map$2[k]);
1416
1395
  }
1417
1396
 
1418
- k = parseInt(names[ok], 16);
1397
+ k = parseInt(names$1[ok], 16);
1419
1398
  unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];
1420
1399
  }
1421
1400
 
1422
1401
  return unpacked;
1423
1402
  }
1424
1403
 
1425
- var names$1;
1404
+ var names;
1426
1405
 
1427
1406
  function nameParse(str) {
1428
- if (!names$1) {
1429
- names$1 = unpack();
1430
- names$1.transparent = [0, 0, 0, 0];
1407
+ if (!names) {
1408
+ names = unpack();
1409
+ names.transparent = [0, 0, 0, 0];
1431
1410
  }
1432
1411
 
1433
- var a = names$1[str.toLowerCase()];
1412
+ var a = names[str.toLowerCase()];
1434
1413
  return a && {
1435
1414
  r: a[0],
1436
1415
  g: a[1],
@@ -1439,6 +1418,60 @@
1439
1418
  };
1440
1419
  }
1441
1420
 
1421
+ var RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;
1422
+
1423
+ function rgbParse(str) {
1424
+ var m = RGB_RE.exec(str);
1425
+ var a = 255;
1426
+ var r, g, b;
1427
+
1428
+ if (!m) {
1429
+ return;
1430
+ }
1431
+
1432
+ if (m[7] !== r) {
1433
+ var v = +m[7];
1434
+ a = m[8] ? p2b(v) : lim(v * 255, 0, 255);
1435
+ }
1436
+
1437
+ r = +m[1];
1438
+ g = +m[3];
1439
+ b = +m[5];
1440
+ r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));
1441
+ g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));
1442
+ b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));
1443
+ return {
1444
+ r: r,
1445
+ g: g,
1446
+ b: b,
1447
+ a: a
1448
+ };
1449
+ }
1450
+
1451
+ function _rgbString(v) {
1452
+ return v && (v.a < 255 ? "rgba(".concat(v.r, ", ").concat(v.g, ", ").concat(v.b, ", ").concat(b2n(v.a), ")") : "rgb(".concat(v.r, ", ").concat(v.g, ", ").concat(v.b, ")"));
1453
+ }
1454
+
1455
+ var to = function to(v) {
1456
+ return v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;
1457
+ };
1458
+
1459
+ var from = function from(v) {
1460
+ return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
1461
+ };
1462
+
1463
+ function _interpolate(rgb1, rgb2, t) {
1464
+ var r = from(b2n(rgb1.r));
1465
+ var g = from(b2n(rgb1.g));
1466
+ var b = from(b2n(rgb1.b));
1467
+ return {
1468
+ r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),
1469
+ g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),
1470
+ b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),
1471
+ a: rgb1.a + t * (rgb2.a - rgb1.a)
1472
+ };
1473
+ }
1474
+
1442
1475
  function modHSL(v, i, ratio) {
1443
1476
  if (v) {
1444
1477
  var tmp = rgb2hsl(v);
@@ -1540,25 +1573,23 @@
1540
1573
  }, {
1541
1574
  key: "rgbString",
1542
1575
  value: function rgbString() {
1543
- return this._valid ? _rgbString(this._rgb) : this._rgb;
1576
+ return this._valid ? _rgbString(this._rgb) : undefined;
1544
1577
  }
1545
1578
  }, {
1546
1579
  key: "hexString",
1547
1580
  value: function hexString() {
1548
- return this._valid ? _hexString(this._rgb) : this._rgb;
1581
+ return this._valid ? _hexString(this._rgb) : undefined;
1549
1582
  }
1550
1583
  }, {
1551
1584
  key: "hslString",
1552
1585
  value: function hslString() {
1553
- return this._valid ? _hslString(this._rgb) : this._rgb;
1586
+ return this._valid ? _hslString(this._rgb) : undefined;
1554
1587
  }
1555
1588
  }, {
1556
1589
  key: "mix",
1557
1590
  value: function mix(color, weight) {
1558
- var me = this;
1559
-
1560
1591
  if (color) {
1561
- var c1 = me.rgb;
1592
+ var c1 = this.rgb;
1562
1593
  var c2 = color.rgb;
1563
1594
  var w2;
1564
1595
  var p = weight === w2 ? 0.5 : weight;
@@ -1570,10 +1601,19 @@
1570
1601
  c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;
1571
1602
  c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;
1572
1603
  c1.a = p * c1.a + (1 - p) * c2.a;
1573
- me.rgb = c1;
1604
+ this.rgb = c1;
1605
+ }
1606
+
1607
+ return this;
1608
+ }
1609
+ }, {
1610
+ key: "interpolate",
1611
+ value: function interpolate(color, t) {
1612
+ if (color) {
1613
+ this._rgb = _interpolate(this._rgb, color._rgb, t);
1574
1614
  }
1575
1615
 
1576
- return me;
1616
+ return this;
1577
1617
  }
1578
1618
  }, {
1579
1619
  key: "clone",
@@ -1657,9 +1697,14 @@
1657
1697
  return new Color(input);
1658
1698
  }
1659
1699
 
1660
- var isPatternOrGradient = function isPatternOrGradient(value) {
1661
- return value instanceof CanvasGradient || value instanceof CanvasPattern;
1662
- };
1700
+ function isPatternOrGradient(value) {
1701
+ if (value && _typeof(value) === 'object') {
1702
+ var type = value.toString();
1703
+ return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';
1704
+ }
1705
+
1706
+ return false;
1707
+ }
1663
1708
 
1664
1709
  function color(value) {
1665
1710
  return isPatternOrGradient(value) ? value : index_esm(value);
@@ -1735,7 +1780,8 @@
1735
1780
  this.indexAxis = 'x';
1736
1781
  this.interaction = {
1737
1782
  mode: 'nearest',
1738
- intersect: true
1783
+ intersect: true,
1784
+ includeInvisible: false
1739
1785
  };
1740
1786
  this.maintainAspectRatio = true;
1741
1787
  this.onHover = null;
@@ -2842,6 +2888,24 @@
2842
2888
  return Array.from(set);
2843
2889
  }
2844
2890
 
2891
+ function _parseObjectDataRadialScale(meta, data, start, count) {
2892
+ var iScale = meta.iScale;
2893
+ var _this$_parsing$key = this._parsing.key,
2894
+ key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;
2895
+ var parsed = new Array(count);
2896
+ var i, ilen, index, item;
2897
+
2898
+ for (i = 0, ilen = count; i < ilen; ++i) {
2899
+ index = i + start;
2900
+ item = data[index];
2901
+ parsed[i] = {
2902
+ r: iScale.parse(resolveObjectKey(item, key), index)
2903
+ };
2904
+ }
2905
+
2906
+ return parsed;
2907
+ }
2908
+
2845
2909
  var EPSILON = Number.EPSILON || 1e-14;
2846
2910
 
2847
2911
  var getPoint = function getPoint(points, i) {
@@ -3091,8 +3155,7 @@
3091
3155
  return (x > 0 || y > 0) && (!target || !target.shadowRoot);
3092
3156
  };
3093
3157
 
3094
- function getCanvasPosition(evt, canvas) {
3095
- var e = evt.native || evt;
3158
+ function getCanvasPosition(e, canvas) {
3096
3159
  var touches = e.touches;
3097
3160
  var source = touches && touches.length ? touches[0] : e;
3098
3161
  var offsetX = source.offsetX,
@@ -3117,7 +3180,11 @@
3117
3180
  };
3118
3181
  }
3119
3182
 
3120
- function getRelativePosition$1(evt, chart) {
3183
+ function getRelativePosition(evt, chart) {
3184
+ if ('native' in evt) {
3185
+ return evt;
3186
+ }
3187
+
3121
3188
  var canvas = chart.canvas,
3122
3189
  currentDevicePixelRatio = chart.currentDevicePixelRatio;
3123
3190
  var style = getComputedStyle(canvas);
@@ -4512,10 +4579,10 @@
4512
4579
 
4513
4580
  for (var i = 0; i < ilen; ++i) {
4514
4581
  var item = parsed[i];
4515
- var index = item[iAxis],
4582
+ var _index = item[iAxis],
4516
4583
  value = item[vAxis];
4517
4584
  var itemStacks = item._stacks || (item._stacks = {});
4518
- stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);
4585
+ stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, _index);
4519
4586
  stack[datasetIndex] = value;
4520
4587
  stack._top = getLastIndexInStack(stack, vScale, true, meta.type);
4521
4588
  stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);
@@ -4617,6 +4684,7 @@
4617
4684
  this._drawStart = undefined;
4618
4685
  this._drawCount = undefined;
4619
4686
  this.enableOptionSharing = false;
4687
+ this.supportsDecimation = false;
4620
4688
  this.$context = undefined;
4621
4689
  this._syncList = [];
4622
4690
  this.initialize();
@@ -5891,6 +5959,11 @@
5891
5959
  base -= size / 2;
5892
5960
  }
5893
5961
 
5962
+ var startPixel = vScale.getPixelForDecimal(0);
5963
+ var endPixel = vScale.getPixelForDecimal(1);
5964
+ var min = Math.min(startPixel, endPixel);
5965
+ var max = Math.max(startPixel, endPixel);
5966
+ base = Math.max(Math.min(base, max), min);
5894
5967
  head = base + size;
5895
5968
  }
5896
5969
 
@@ -6603,6 +6676,7 @@
6603
6676
  key: "initialize",
6604
6677
  value: function initialize() {
6605
6678
  this.enableOptionSharing = true;
6679
+ this.supportsDecimation = true;
6606
6680
 
6607
6681
  _get(_getPrototypeOf(LineController.prototype), "initialize", this).call(this);
6608
6682
  }
@@ -6674,7 +6748,7 @@
6674
6748
  var iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);
6675
6749
  var vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);
6676
6750
  properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;
6677
- properties.stop = i > 0 && parsed[iAxis] - prevParsed[iAxis] > maxGapLength;
6751
+ properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;
6678
6752
 
6679
6753
  if (segment) {
6680
6754
  properties.parsed = parsed;
@@ -6823,6 +6897,11 @@
6823
6897
  value: value
6824
6898
  };
6825
6899
  }
6900
+ }, {
6901
+ key: "parseObjectData",
6902
+ value: function parseObjectData(meta, data, start, count) {
6903
+ return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);
6904
+ }
6826
6905
  }, {
6827
6906
  key: "update",
6828
6907
  value: function update(mode) {
@@ -6832,6 +6911,31 @@
6832
6911
 
6833
6912
  this.updateElements(arcs, 0, arcs.length, mode);
6834
6913
  }
6914
+ }, {
6915
+ key: "getMinMax",
6916
+ value: function getMinMax() {
6917
+ var _this6 = this;
6918
+
6919
+ var meta = this._cachedMeta;
6920
+ var range = {
6921
+ min: Number.POSITIVE_INFINITY,
6922
+ max: Number.NEGATIVE_INFINITY
6923
+ };
6924
+ meta.data.forEach(function (element, index) {
6925
+ var parsed = _this6.getParsed(index).r;
6926
+
6927
+ if (!isNaN(parsed) && _this6.chart.getDataVisibility(index)) {
6928
+ if (parsed < range.min) {
6929
+ range.min = parsed;
6930
+ }
6931
+
6932
+ if (parsed > range.max) {
6933
+ range.max = parsed;
6934
+ }
6935
+ }
6936
+ });
6937
+ return range;
6938
+ }
6835
6939
  }, {
6836
6940
  key: "_updateRadius",
6837
6941
  value: function _updateRadius() {
@@ -6850,7 +6954,6 @@
6850
6954
  value: function updateElements(arcs, start, count, mode) {
6851
6955
  var reset = mode === 'reset';
6852
6956
  var chart = this.chart;
6853
- var dataset = this.getDataset();
6854
6957
  var opts = chart.options;
6855
6958
  var animationOpts = opts.animation;
6856
6959
  var scale = this._cachedMeta.rScale;
@@ -6871,7 +6974,7 @@
6871
6974
 
6872
6975
  var endAngle = angle + this._computeAngle(i, mode, defaultAngle);
6873
6976
 
6874
- var outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;
6977
+ var outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;
6875
6978
  angle = endAngle;
6876
6979
 
6877
6980
  if (reset) {
@@ -6899,13 +7002,12 @@
6899
7002
  }, {
6900
7003
  key: "countVisibleElements",
6901
7004
  value: function countVisibleElements() {
6902
- var _this6 = this;
7005
+ var _this7 = this;
6903
7006
 
6904
- var dataset = this.getDataset();
6905
7007
  var meta = this._cachedMeta;
6906
7008
  var count = 0;
6907
7009
  meta.data.forEach(function (element, index) {
6908
- if (!isNaN(dataset.data[index]) && _this6.chart.getDataVisibility(index)) {
7010
+ if (!isNaN(_this7.getParsed(index).r) && _this7.chart.getDataVisibility(index)) {
6909
7011
  count++;
6910
7012
  }
6911
7013
  });
@@ -7010,7 +7112,7 @@
7010
7112
  return _super6.apply(this, arguments);
7011
7113
  }
7012
7114
 
7013
- return PieController;
7115
+ return _createClass(PieController);
7014
7116
  }(DoughnutController);
7015
7117
 
7016
7118
  PieController.id = 'pie';
@@ -7042,6 +7144,11 @@
7042
7144
  value: '' + vScale.getLabelForValue(parsed[vScale.axis])
7043
7145
  };
7044
7146
  }
7147
+ }, {
7148
+ key: "parseObjectData",
7149
+ value: function parseObjectData(meta, data, start, count) {
7150
+ return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);
7151
+ }
7045
7152
  }, {
7046
7153
  key: "update",
7047
7154
  value: function update(mode) {
@@ -7071,14 +7178,13 @@
7071
7178
  }, {
7072
7179
  key: "updateElements",
7073
7180
  value: function updateElements(points, start, count, mode) {
7074
- var dataset = this.getDataset();
7075
7181
  var scale = this._cachedMeta.rScale;
7076
7182
  var reset = mode === 'reset';
7077
7183
 
7078
7184
  for (var i = start; i < start + count; i++) {
7079
7185
  var point = points[i];
7080
7186
  var options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);
7081
- var pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);
7187
+ var pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);
7082
7188
  var x = reset ? scale.xCenter : pointPosition.x;
7083
7189
  var y = reset ? scale.yCenter : pointPosition.y;
7084
7190
  var properties = {
@@ -7128,7 +7234,7 @@
7128
7234
  return _super8.apply(this, arguments);
7129
7235
  }
7130
7236
 
7131
- return ScatterController;
7237
+ return _createClass(ScatterController);
7132
7238
  }(LineController);
7133
7239
 
7134
7240
  ScatterController.id = 'scatter';
@@ -7232,36 +7338,6 @@
7232
7338
  _date: DateAdapter
7233
7339
  };
7234
7340
 
7235
- function getRelativePosition(e, chart) {
7236
- if ('native' in e) {
7237
- return {
7238
- x: e.x,
7239
- y: e.y
7240
- };
7241
- }
7242
-
7243
- return getRelativePosition$1(e, chart);
7244
- }
7245
-
7246
- function evaluateAllVisibleItems(chart, handler) {
7247
- var metasets = chart.getSortedVisibleDatasetMetas();
7248
- var index, data, element;
7249
-
7250
- for (var i = 0, ilen = metasets.length; i < ilen; ++i) {
7251
- var _metasets$i = metasets[i];
7252
- index = _metasets$i.index;
7253
- data = _metasets$i.data;
7254
-
7255
- for (var j = 0, jlen = data.length; j < jlen; ++j) {
7256
- element = data[j];
7257
-
7258
- if (!element.skip) {
7259
- handler(element, index, j);
7260
- }
7261
- }
7262
- }
7263
- }
7264
-
7265
7341
  function binarySearch(metaset, axis, value, intersect) {
7266
7342
  var controller = metaset.controller,
7267
7343
  data = metaset.data,
@@ -7294,14 +7370,14 @@
7294
7370
  };
7295
7371
  }
7296
7372
 
7297
- function optimizedEvaluateItems(chart, axis, position, handler, intersect) {
7373
+ function evaluateInteractionItems(chart, axis, position, handler, intersect) {
7298
7374
  var metasets = chart.getSortedVisibleDatasetMetas();
7299
7375
  var value = position[axis];
7300
7376
 
7301
7377
  for (var i = 0, ilen = metasets.length; i < ilen; ++i) {
7302
- var _metasets$i2 = metasets[i],
7303
- index = _metasets$i2.index,
7304
- data = _metasets$i2.data;
7378
+ var _metasets$i = metasets[i],
7379
+ _index2 = _metasets$i.index,
7380
+ data = _metasets$i.data;
7305
7381
 
7306
7382
  var _binarySearch = binarySearch(metasets[i], axis, value, intersect),
7307
7383
  lo = _binarySearch.lo,
@@ -7311,7 +7387,7 @@
7311
7387
  var element = data[j];
7312
7388
 
7313
7389
  if (!element.skip) {
7314
- handler(element, index, j);
7390
+ handler(element, _index2, j);
7315
7391
  }
7316
7392
  }
7317
7393
  }
@@ -7327,14 +7403,18 @@
7327
7403
  };
7328
7404
  }
7329
7405
 
7330
- function getIntersectItems(chart, position, axis, useFinalPosition) {
7406
+ function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {
7331
7407
  var items = [];
7332
7408
 
7333
- if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {
7409
+ if (!includeInvisible && !chart.isPointInArea(position)) {
7334
7410
  return items;
7335
7411
  }
7336
7412
 
7337
7413
  var evaluationFunc = function evaluationFunc(element, datasetIndex, index) {
7414
+ if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {
7415
+ return;
7416
+ }
7417
+
7338
7418
  if (element.inRange(position.x, position.y, useFinalPosition)) {
7339
7419
  items.push({
7340
7420
  element: element,
@@ -7344,7 +7424,7 @@
7344
7424
  }
7345
7425
  };
7346
7426
 
7347
- optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);
7427
+ evaluateInteractionItems(chart, axis, position, evaluationFunc, true);
7348
7428
  return items;
7349
7429
  }
7350
7430
 
@@ -7371,11 +7451,11 @@
7371
7451
  }
7372
7452
  }
7373
7453
 
7374
- optimizedEvaluateItems(chart, axis, position, evaluationFunc);
7454
+ evaluateInteractionItems(chart, axis, position, evaluationFunc);
7375
7455
  return items;
7376
7456
  }
7377
7457
 
7378
- function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {
7458
+ function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {
7379
7459
  var items = [];
7380
7460
  var distanceMetric = getDistanceMetricForAxis(axis);
7381
7461
  var minDistance = Number.POSITIVE_INFINITY;
@@ -7388,8 +7468,7 @@
7388
7468
  }
7389
7469
 
7390
7470
  var center = element.getCenterPoint(useFinalPosition);
7391
-
7392
- var pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);
7471
+ var pointInArea = !!includeInvisible || chart.isPointInArea(center);
7393
7472
 
7394
7473
  if (!pointInArea && !inRange) {
7395
7474
  return;
@@ -7413,39 +7492,34 @@
7413
7492
  }
7414
7493
  }
7415
7494
 
7416
- optimizedEvaluateItems(chart, axis, position, evaluationFunc);
7495
+ evaluateInteractionItems(chart, axis, position, evaluationFunc);
7417
7496
  return items;
7418
7497
  }
7419
7498
 
7420
- function getNearestItems(chart, position, axis, intersect, useFinalPosition) {
7421
- if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {
7499
+ function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {
7500
+ if (!includeInvisible && !chart.isPointInArea(position)) {
7422
7501
  return [];
7423
7502
  }
7424
7503
 
7425
- return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);
7504
+ return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);
7426
7505
  }
7427
7506
 
7428
- function getAxisItems(chart, e, options, useFinalPosition) {
7429
- var position = getRelativePosition(e, chart);
7507
+ function getAxisItems(chart, position, axis, intersect, useFinalPosition) {
7430
7508
  var items = [];
7431
- var axis = options.axis;
7432
7509
  var rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
7433
7510
  var intersectsItem = false;
7434
- evaluateAllVisibleItems(chart, function (element, datasetIndex, index) {
7511
+ evaluateInteractionItems(chart, axis, position, function (element, datasetIndex, index) {
7435
7512
  if (element[rangeMethod](position[axis], useFinalPosition)) {
7436
7513
  items.push({
7437
7514
  element: element,
7438
7515
  datasetIndex: datasetIndex,
7439
7516
  index: index
7440
7517
  });
7518
+ intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);
7441
7519
  }
7520
+ });
7442
7521
 
7443
- if (element.inRange(position.x, position.y, useFinalPosition)) {
7444
- intersectsItem = true;
7445
- }
7446
- });
7447
-
7448
- if (options.intersect && !intersectsItem) {
7522
+ if (intersect && !intersectsItem) {
7449
7523
  return [];
7450
7524
  }
7451
7525
 
@@ -7453,11 +7527,13 @@
7453
7527
  }
7454
7528
 
7455
7529
  var Interaction = {
7530
+ evaluateInteractionItems: evaluateInteractionItems,
7456
7531
  modes: {
7457
7532
  index: function index(chart, e, options, useFinalPosition) {
7458
7533
  var position = getRelativePosition(e, chart);
7459
7534
  var axis = options.axis || 'x';
7460
- var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);
7535
+ var includeInvisible = options.includeInvisible || false;
7536
+ var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);
7461
7537
  var elements = [];
7462
7538
 
7463
7539
  if (!items.length) {
@@ -7481,7 +7557,8 @@
7481
7557
  dataset: function dataset(chart, e, options, useFinalPosition) {
7482
7558
  var position = getRelativePosition(e, chart);
7483
7559
  var axis = options.axis || 'xy';
7484
- var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);
7560
+ var includeInvisible = options.includeInvisible || false;
7561
+ var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);
7485
7562
 
7486
7563
  if (items.length > 0) {
7487
7564
  var datasetIndex = items[0].datasetIndex;
@@ -7502,24 +7579,22 @@
7502
7579
  point: function point(chart, e, options, useFinalPosition) {
7503
7580
  var position = getRelativePosition(e, chart);
7504
7581
  var axis = options.axis || 'xy';
7505
- return getIntersectItems(chart, position, axis, useFinalPosition);
7582
+ var includeInvisible = options.includeInvisible || false;
7583
+ return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);
7506
7584
  },
7507
7585
  nearest: function nearest(chart, e, options, useFinalPosition) {
7508
7586
  var position = getRelativePosition(e, chart);
7509
7587
  var axis = options.axis || 'xy';
7510
- return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);
7588
+ var includeInvisible = options.includeInvisible || false;
7589
+ return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);
7511
7590
  },
7512
7591
  x: function x(chart, e, options, useFinalPosition) {
7513
- return getAxisItems(chart, e, {
7514
- axis: 'x',
7515
- intersect: options.intersect
7516
- }, useFinalPosition);
7592
+ var position = getRelativePosition(e, chart);
7593
+ return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);
7517
7594
  },
7518
7595
  y: function y(chart, e, options, useFinalPosition) {
7519
- return getAxisItems(chart, e, {
7520
- axis: 'y',
7521
- intersect: options.intersect
7522
- }, useFinalPosition);
7596
+ var position = getRelativePosition(e, chart);
7597
+ return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);
7523
7598
  }
7524
7599
  }
7525
7600
  };
@@ -8093,9 +8168,9 @@
8093
8168
  function fromNativeEvent(event, chart) {
8094
8169
  var type = EVENT_TYPES[event.type] || event.type;
8095
8170
 
8096
- var _getRelativePosition$ = getRelativePosition$1(event, chart),
8097
- x = _getRelativePosition$.x,
8098
- y = _getRelativePosition$.y;
8171
+ var _getRelativePosition = getRelativePosition(event, chart),
8172
+ x = _getRelativePosition.x,
8173
+ y = _getRelativePosition.y;
8099
8174
 
8100
8175
  return {
8101
8176
  type: type,
@@ -8421,7 +8496,7 @@
8421
8496
  }, {
8422
8497
  key: "getProps",
8423
8498
  value: function getProps(props, final) {
8424
- var _this7 = this;
8499
+ var _this8 = this;
8425
8500
 
8426
8501
  var anims = this.$animations;
8427
8502
 
@@ -8431,7 +8506,7 @@
8431
8506
 
8432
8507
  var ret = {};
8433
8508
  props.forEach(function (prop) {
8434
- ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : _this7[prop];
8509
+ ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : _this8[prop];
8435
8510
  });
8436
8511
  return ret;
8437
8512
  }
@@ -8442,7 +8517,7 @@
8442
8517
 
8443
8518
  Element.defaults = {};
8444
8519
  Element.defaultRoutes = undefined;
8445
- var formatters$2 = {
8520
+ var formatters$4 = {
8446
8521
  values: function values(value) {
8447
8522
  return isArray(value) ? value : '' + value;
8448
8523
  },
@@ -8483,7 +8558,7 @@
8483
8558
  var remain = tickValue / Math.pow(10, Math.floor(log10(tickValue)));
8484
8559
 
8485
8560
  if (remain === 1 || remain === 2 || remain === 5) {
8486
- return formatters$2.numeric.call(this, tickValue, index, ticks);
8561
+ return formatters$4.numeric.call(this, tickValue, index, ticks);
8487
8562
  }
8488
8563
 
8489
8564
  return '';
@@ -8501,7 +8576,7 @@
8501
8576
  }
8502
8577
 
8503
8578
  var Ticks = {
8504
- formatters: formatters$2
8579
+ formatters: formatters$4
8505
8580
  };
8506
8581
  defaults.set('scale', {
8507
8582
  display: true,
@@ -8880,59 +8955,59 @@
8880
8955
  var _super11 = _createSuper(Scale);
8881
8956
 
8882
8957
  function Scale(cfg) {
8883
- var _this8;
8958
+ var _this9;
8884
8959
 
8885
8960
  _classCallCheck(this, Scale);
8886
8961
 
8887
- _this8 = _super11.call(this);
8888
- _this8.id = cfg.id;
8889
- _this8.type = cfg.type;
8890
- _this8.options = undefined;
8891
- _this8.ctx = cfg.ctx;
8892
- _this8.chart = cfg.chart;
8893
- _this8.top = undefined;
8894
- _this8.bottom = undefined;
8895
- _this8.left = undefined;
8896
- _this8.right = undefined;
8897
- _this8.width = undefined;
8898
- _this8.height = undefined;
8899
- _this8._margins = {
8962
+ _this9 = _super11.call(this);
8963
+ _this9.id = cfg.id;
8964
+ _this9.type = cfg.type;
8965
+ _this9.options = undefined;
8966
+ _this9.ctx = cfg.ctx;
8967
+ _this9.chart = cfg.chart;
8968
+ _this9.top = undefined;
8969
+ _this9.bottom = undefined;
8970
+ _this9.left = undefined;
8971
+ _this9.right = undefined;
8972
+ _this9.width = undefined;
8973
+ _this9.height = undefined;
8974
+ _this9._margins = {
8900
8975
  left: 0,
8901
8976
  right: 0,
8902
8977
  top: 0,
8903
8978
  bottom: 0
8904
8979
  };
8905
- _this8.maxWidth = undefined;
8906
- _this8.maxHeight = undefined;
8907
- _this8.paddingTop = undefined;
8908
- _this8.paddingBottom = undefined;
8909
- _this8.paddingLeft = undefined;
8910
- _this8.paddingRight = undefined;
8911
- _this8.axis = undefined;
8912
- _this8.labelRotation = undefined;
8913
- _this8.min = undefined;
8914
- _this8.max = undefined;
8915
- _this8._range = undefined;
8916
- _this8.ticks = [];
8917
- _this8._gridLineItems = null;
8918
- _this8._labelItems = null;
8919
- _this8._labelSizes = null;
8920
- _this8._length = 0;
8921
- _this8._maxLength = 0;
8922
- _this8._longestTextCache = {};
8923
- _this8._startPixel = undefined;
8924
- _this8._endPixel = undefined;
8925
- _this8._reversePixels = false;
8926
- _this8._userMax = undefined;
8927
- _this8._userMin = undefined;
8928
- _this8._suggestedMax = undefined;
8929
- _this8._suggestedMin = undefined;
8930
- _this8._ticksLength = 0;
8931
- _this8._borderValue = 0;
8932
- _this8._cache = {};
8933
- _this8._dataLimitsCached = false;
8934
- _this8.$context = undefined;
8935
- return _this8;
8980
+ _this9.maxWidth = undefined;
8981
+ _this9.maxHeight = undefined;
8982
+ _this9.paddingTop = undefined;
8983
+ _this9.paddingBottom = undefined;
8984
+ _this9.paddingLeft = undefined;
8985
+ _this9.paddingRight = undefined;
8986
+ _this9.axis = undefined;
8987
+ _this9.labelRotation = undefined;
8988
+ _this9.min = undefined;
8989
+ _this9.max = undefined;
8990
+ _this9._range = undefined;
8991
+ _this9.ticks = [];
8992
+ _this9._gridLineItems = null;
8993
+ _this9._labelItems = null;
8994
+ _this9._labelSizes = null;
8995
+ _this9._length = 0;
8996
+ _this9._maxLength = 0;
8997
+ _this9._longestTextCache = {};
8998
+ _this9._startPixel = undefined;
8999
+ _this9._endPixel = undefined;
9000
+ _this9._reversePixels = false;
9001
+ _this9._userMax = undefined;
9002
+ _this9._userMin = undefined;
9003
+ _this9._suggestedMax = undefined;
9004
+ _this9._suggestedMin = undefined;
9005
+ _this9._ticksLength = 0;
9006
+ _this9._borderValue = 0;
9007
+ _this9._cache = {};
9008
+ _this9._dataLimitsCached = false;
9009
+ _this9.$context = undefined;
9010
+ return _this9;
8936
9011
  }
8937
9012
 
8938
9013
  _createClass(Scale, [{
@@ -9088,6 +9163,7 @@
9088
9163
  if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {
9089
9164
  this.ticks = autoSkip(this, this.ticks);
9090
9165
  this._labelSizes = null;
9166
+ this.afterAutoSkip();
9091
9167
  }
9092
9168
 
9093
9169
  if (samplingEnabled) {
@@ -9253,6 +9329,9 @@
9253
9329
  value: function afterCalculateLabelRotation() {
9254
9330
  callback(this.options.afterCalculateLabelRotation, [this]);
9255
9331
  }
9332
+ }, {
9333
+ key: "afterAutoSkip",
9334
+ value: function afterAutoSkip() {}
9256
9335
  }, {
9257
9336
  key: "beforeFit",
9258
9337
  value: function beforeFit() {
@@ -9349,7 +9428,7 @@
9349
9428
  paddingRight = last.width;
9350
9429
  } else if (align === 'end') {
9351
9430
  paddingLeft = first.width;
9352
- } else {
9431
+ } else if (align !== 'inner') {
9353
9432
  paddingLeft = first.width / 2;
9354
9433
  paddingRight = last.width / 2;
9355
9434
  }
@@ -9796,10 +9875,21 @@
9796
9875
  var color = optsAtIndex.color;
9797
9876
  var strokeColor = optsAtIndex.textStrokeColor;
9798
9877
  var strokeWidth = optsAtIndex.textStrokeWidth;
9878
+ var tickTextAlign = textAlign;
9799
9879
 
9800
9880
  if (isHorizontal) {
9801
9881
  x = pixel;
9802
9882
 
9883
+ if (textAlign === 'inner') {
9884
+ if (i === ilen - 1) {
9885
+ tickTextAlign = !this.options.reverse ? 'right' : 'left';
9886
+ } else if (i === 0) {
9887
+ tickTextAlign = !this.options.reverse ? 'left' : 'right';
9888
+ } else {
9889
+ tickTextAlign = 'center';
9890
+ }
9891
+ }
9892
+
9803
9893
  if (position === 'top') {
9804
9894
  if (crossAlign === 'near' || rotation !== 0) {
9805
9895
  textOffset = -lineCount * lineHeight + lineHeight / 2;
@@ -9872,7 +9962,7 @@
9872
9962
  strokeColor: strokeColor,
9873
9963
  strokeWidth: strokeWidth,
9874
9964
  textOffset: textOffset,
9875
- textAlign: textAlign,
9965
+ textAlign: tickTextAlign,
9876
9966
  textBaseline: textBaseline,
9877
9967
  translation: [x, y],
9878
9968
  backdrop: backdrop
@@ -9899,6 +9989,8 @@
9899
9989
  align = 'left';
9900
9990
  } else if (ticks.align === 'end') {
9901
9991
  align = 'right';
9992
+ } else if (ticks.align === 'inner') {
9993
+ align = 'inner';
9902
9994
  }
9903
9995
 
9904
9996
  return align;
@@ -10239,7 +10331,7 @@
10239
10331
  }, {
10240
10332
  key: "_layers",
10241
10333
  value: function _layers() {
10242
- var _this9 = this;
10334
+ var _this10 = this;
10243
10335
 
10244
10336
  var opts = this.options;
10245
10337
  var tz = opts.ticks && opts.ticks.z || 0;
@@ -10249,7 +10341,7 @@
10249
10341
  return [{
10250
10342
  z: tz,
10251
10343
  draw: function draw(chartArea) {
10252
- _this9.draw(chartArea);
10344
+ _this10.draw(chartArea);
10253
10345
  }
10254
10346
  }];
10255
10347
  }
@@ -10257,21 +10349,21 @@
10257
10349
  return [{
10258
10350
  z: gz,
10259
10351
  draw: function draw(chartArea) {
10260
- _this9.drawBackground();
10352
+ _this10.drawBackground();
10261
10353
 
10262
- _this9.drawGrid(chartArea);
10354
+ _this10.drawGrid(chartArea);
10263
10355
 
10264
- _this9.drawTitle();
10356
+ _this10.drawTitle();
10265
10357
  }
10266
10358
  }, {
10267
10359
  z: gz + 1,
10268
10360
  draw: function draw() {
10269
- _this9.drawBorder();
10361
+ _this10.drawBorder();
10270
10362
  }
10271
10363
  }, {
10272
10364
  z: tz,
10273
10365
  draw: function draw(chartArea) {
10274
- _this9.drawLabels(chartArea);
10366
+ _this10.drawLabels(chartArea);
10275
10367
  }
10276
10368
  }];
10277
10369
  }
@@ -10539,18 +10631,18 @@
10539
10631
  }, {
10540
10632
  key: "_each",
10541
10633
  value: function _each(method, args, typedRegistry) {
10542
- var _this10 = this;
10634
+ var _this11 = this;
10543
10635
 
10544
10636
  _toConsumableArray(args).forEach(function (arg) {
10545
- var reg = typedRegistry || _this10._getRegistryForType(arg);
10637
+ var reg = typedRegistry || _this11._getRegistryForType(arg);
10546
10638
 
10547
- if (typedRegistry || reg.isForType(arg) || reg === _this10.plugins && arg.id) {
10548
- _this10._exec(method, reg, arg);
10639
+ if (typedRegistry || reg.isForType(arg) || reg === _this11.plugins && arg.id) {
10640
+ _this11._exec(method, reg, arg);
10549
10641
  } else {
10550
10642
  each(arg, function (item) {
10551
- var itemReg = typedRegistry || _this10._getRegistryForType(item);
10643
+ var itemReg = typedRegistry || _this11._getRegistryForType(item);
10552
10644
 
10553
- _this10._exec(method, itemReg, item);
10645
+ _this11._exec(method, itemReg, item);
10554
10646
  });
10555
10647
  }
10556
10648
  });
@@ -11170,7 +11262,7 @@
11170
11262
  return false;
11171
11263
  }
11172
11264
 
11173
- var version = "3.7.0";
11265
+ var version = "3.8.0";
11174
11266
  var KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];
11175
11267
 
11176
11268
  function positionIsHorizontal(position, axis) {
@@ -11251,7 +11343,7 @@
11251
11343
 
11252
11344
  var Chart = /*#__PURE__*/function () {
11253
11345
  function Chart(item, userConfig) {
11254
- var _this11 = this;
11346
+ var _this12 = this;
11255
11347
 
11256
11348
  _classCallCheck(this, Chart);
11257
11349
 
@@ -11296,7 +11388,7 @@
11296
11388
  this._animationsDisabled = undefined;
11297
11389
  this.$context = undefined;
11298
11390
  this._doResize = debounce(function (mode) {
11299
- return _this11.update(mode);
11391
+ return _this12.update(mode);
11300
11392
  }, options.resizeDelay || 0);
11301
11393
  this._dataChanges = [];
11302
11394
  instances[this.id] = this;
@@ -11431,7 +11523,7 @@
11431
11523
  }, {
11432
11524
  key: "buildOrUpdateScales",
11433
11525
  value: function buildOrUpdateScales() {
11434
- var _this12 = this;
11526
+ var _this13 = this;
11435
11527
 
11436
11528
  var options = this.options;
11437
11529
  var scaleOpts = options.scales;
@@ -11476,8 +11568,8 @@
11476
11568
  scale = new scaleClass({
11477
11569
  id: id,
11478
11570
  type: scaleType,
11479
- ctx: _this12.ctx,
11480
- chart: _this12
11571
+ ctx: _this13.ctx,
11572
+ chart: _this13
11481
11573
  });
11482
11574
  scales[scale.id] = scale;
11483
11575
  }
@@ -11490,8 +11582,8 @@
11490
11582
  }
11491
11583
  });
11492
11584
  each(scales, function (scale) {
11493
- layouts.configure(_this12, scale, scale.options);
11494
- layouts.addBox(_this12, scale);
11585
+ layouts.configure(_this13, scale, scale.options);
11586
+ layouts.addBox(_this13, scale);
11495
11587
  });
11496
11588
  }
11497
11589
  }, {
@@ -11517,7 +11609,7 @@
11517
11609
  }, {
11518
11610
  key: "_removeUnreferencedMetasets",
11519
11611
  value: function _removeUnreferencedMetasets() {
11520
- var _this13 = this;
11612
+ var _this14 = this;
11521
11613
 
11522
11614
  var metasets = this._metasets,
11523
11615
  datasets = this.data.datasets;
@@ -11530,7 +11622,7 @@
11530
11622
  if (datasets.filter(function (x) {
11531
11623
  return x === meta._dataset;
11532
11624
  }).length === 0) {
11533
- _this13._destroyDatasetMeta(index);
11625
+ _this14._destroyDatasetMeta(index);
11534
11626
  }
11535
11627
  });
11536
11628
  }
@@ -11585,10 +11677,10 @@
11585
11677
  }, {
11586
11678
  key: "_resetElements",
11587
11679
  value: function _resetElements() {
11588
- var _this14 = this;
11680
+ var _this15 = this;
11589
11681
 
11590
11682
  each(this.data.datasets, function (dataset, datasetIndex) {
11591
- _this14.getDatasetMeta(datasetIndex).controller.reset();
11683
+ _this15.getDatasetMeta(datasetIndex).controller.reset();
11592
11684
  }, this);
11593
11685
  }
11594
11686
  }, {
@@ -11666,10 +11758,10 @@
11666
11758
  }, {
11667
11759
  key: "_updateScales",
11668
11760
  value: function _updateScales() {
11669
- var _this15 = this;
11761
+ var _this16 = this;
11670
11762
 
11671
11763
  each(this.scales, function (scale) {
11672
- layouts.removeBox(_this15, scale);
11764
+ layouts.removeBox(_this16, scale);
11673
11765
  });
11674
11766
  this.ensureScalesHaveIDs();
11675
11767
  this.buildOrUpdateScales();
@@ -11751,7 +11843,7 @@
11751
11843
  }, {
11752
11844
  key: "_updateLayout",
11753
11845
  value: function _updateLayout(minPadding) {
11754
- var _this16 = this;
11846
+ var _this17 = this;
11755
11847
 
11756
11848
  if (this.notifyPlugins('beforeLayout', {
11757
11849
  cancelable: true
@@ -11764,7 +11856,7 @@
11764
11856
  var noArea = area.width <= 0 || area.height <= 0;
11765
11857
  this._layers = [];
11766
11858
  each(this.boxes, function (box) {
11767
- var _this16$_layers;
11859
+ var _this17$_layers;
11768
11860
 
11769
11861
  if (noArea && box.position === 'chartArea') {
11770
11862
  return;
@@ -11774,7 +11866,7 @@
11774
11866
  box.configure();
11775
11867
  }
11776
11868
 
11777
- (_this16$_layers = _this16._layers).push.apply(_this16$_layers, _toConsumableArray(box._layers()));
11869
+ (_this17$_layers = _this17._layers).push.apply(_this17$_layers, _toConsumableArray(box._layers()));
11778
11870
  }, this);
11779
11871
 
11780
11872
  this._layers.forEach(function (item, index) {
@@ -11962,6 +12054,11 @@
11962
12054
  args.cancelable = false;
11963
12055
  this.notifyPlugins('afterDatasetDraw', args);
11964
12056
  }
12057
+ }, {
12058
+ key: "isPointInArea",
12059
+ value: function isPointInArea(point) {
12060
+ return _isPointInArea(point, this.chartArea, this._minPadding);
12061
+ }
11965
12062
  }, {
11966
12063
  key: "getElementsAtEventForMode",
11967
12064
  value: function getElementsAtEventForMode(e, mode, options, useFinalPosition) {
@@ -12140,13 +12237,13 @@
12140
12237
  }, {
12141
12238
  key: "bindUserEvents",
12142
12239
  value: function bindUserEvents() {
12143
- var _this17 = this;
12240
+ var _this18 = this;
12144
12241
 
12145
12242
  var listeners = this._listeners;
12146
12243
  var platform = this.platform;
12147
12244
 
12148
12245
  var _add = function _add(type, listener) {
12149
- platform.addEventListener(_this17, type, listener);
12246
+ platform.addEventListener(_this18, type, listener);
12150
12247
  listeners[type] = listener;
12151
12248
  };
12152
12249
 
@@ -12154,7 +12251,7 @@
12154
12251
  e.offsetX = x;
12155
12252
  e.offsetY = y;
12156
12253
 
12157
- _this17._eventHandler(e);
12254
+ _this18._eventHandler(e);
12158
12255
  };
12159
12256
 
12160
12257
  each(this.options.events, function (type) {
@@ -12164,7 +12261,7 @@
12164
12261
  }, {
12165
12262
  key: "bindResponsiveEvents",
12166
12263
  value: function bindResponsiveEvents() {
12167
- var _this18 = this;
12264
+ var _this19 = this;
12168
12265
 
12169
12266
  if (!this._responsiveListeners) {
12170
12267
  this._responsiveListeners = {};
@@ -12174,20 +12271,20 @@
12174
12271
  var platform = this.platform;
12175
12272
 
12176
12273
  var _add = function _add(type, listener) {
12177
- platform.addEventListener(_this18, type, listener);
12274
+ platform.addEventListener(_this19, type, listener);
12178
12275
  listeners[type] = listener;
12179
12276
  };
12180
12277
 
12181
12278
  var _remove = function _remove(type, listener) {
12182
12279
  if (listeners[type]) {
12183
- platform.removeEventListener(_this18, type, listener);
12280
+ platform.removeEventListener(_this19, type, listener);
12184
12281
  delete listeners[type];
12185
12282
  }
12186
12283
  };
12187
12284
 
12188
12285
  var listener = function listener(width, height) {
12189
- if (_this18.canvas) {
12190
- _this18.resize(width, height);
12286
+ if (_this19.canvas) {
12287
+ _this19.resize(width, height);
12191
12288
  }
12192
12289
  };
12193
12290
 
@@ -12196,9 +12293,9 @@
12196
12293
  var attached = function attached() {
12197
12294
  _remove('attach', attached);
12198
12295
 
12199
- _this18.attached = true;
12296
+ _this19.attached = true;
12200
12297
 
12201
- _this18.resize();
12298
+ _this19.resize();
12202
12299
 
12203
12300
  _add('resize', listener);
12204
12301
 
@@ -12206,13 +12303,13 @@
12206
12303
  };
12207
12304
 
12208
12305
  detached = function detached() {
12209
- _this18.attached = false;
12306
+ _this19.attached = false;
12210
12307
 
12211
12308
  _remove('resize', listener);
12212
12309
 
12213
- _this18._stop();
12310
+ _this19._stop();
12214
12311
 
12215
- _this18._resize(0, 0);
12312
+ _this19._resize(0, 0);
12216
12313
 
12217
12314
  _add('attach', attached);
12218
12315
  };
@@ -12226,14 +12323,14 @@
12226
12323
  }, {
12227
12324
  key: "unbindEvents",
12228
12325
  value: function unbindEvents() {
12229
- var _this19 = this;
12326
+ var _this20 = this;
12230
12327
 
12231
12328
  each(this._listeners, function (listener, type) {
12232
- _this19.platform.removeEventListener(_this19, type, listener);
12329
+ _this20.platform.removeEventListener(_this20, type, listener);
12233
12330
  });
12234
12331
  this._listeners = {};
12235
12332
  each(this._responsiveListeners, function (listener, type) {
12236
- _this19.platform.removeEventListener(_this19, type, listener);
12333
+ _this20.platform.removeEventListener(_this20, type, listener);
12237
12334
  });
12238
12335
  this._responsiveListeners = undefined;
12239
12336
  }
@@ -12265,14 +12362,14 @@
12265
12362
  }, {
12266
12363
  key: "setActiveElements",
12267
12364
  value: function setActiveElements(activeElements) {
12268
- var _this20 = this;
12365
+ var _this21 = this;
12269
12366
 
12270
12367
  var lastActive = this._active || [];
12271
12368
  var active = activeElements.map(function (_ref2) {
12272
12369
  var datasetIndex = _ref2.datasetIndex,
12273
12370
  index = _ref2.index;
12274
12371
 
12275
- var meta = _this20.getDatasetMeta(datasetIndex);
12372
+ var meta = _this21.getDatasetMeta(datasetIndex);
12276
12373
 
12277
12374
  if (!meta) {
12278
12375
  throw new Error('No dataset found at index ' + datasetIndex);
@@ -12325,17 +12422,17 @@
12325
12422
  }, {
12326
12423
  key: "_eventHandler",
12327
12424
  value: function _eventHandler(e, replay) {
12328
- var _this21 = this;
12425
+ var _this22 = this;
12329
12426
 
12330
12427
  var args = {
12331
12428
  event: e,
12332
12429
  replay: replay,
12333
12430
  cancelable: true,
12334
- inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)
12431
+ inChartArea: this.isPointInArea(e)
12335
12432
  };
12336
12433
 
12337
12434
  var eventFilter = function eventFilter(plugin) {
12338
- return (plugin.options.events || _this21.options.events).includes(e.native.type);
12435
+ return (plugin.options.events || _this22.options.events).includes(e.native.type);
12339
12436
  };
12340
12437
 
12341
12438
  if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {
@@ -12672,25 +12769,25 @@
12672
12769
  var _super12 = _createSuper(ArcElement);
12673
12770
 
12674
12771
  function ArcElement(cfg) {
12675
- var _this22;
12772
+ var _this23;
12676
12773
 
12677
12774
  _classCallCheck(this, ArcElement);
12678
12775
 
12679
- _this22 = _super12.call(this);
12680
- _this22.options = undefined;
12681
- _this22.circumference = undefined;
12682
- _this22.startAngle = undefined;
12683
- _this22.endAngle = undefined;
12684
- _this22.innerRadius = undefined;
12685
- _this22.outerRadius = undefined;
12686
- _this22.pixelMargin = 0;
12687
- _this22.fullCircles = 0;
12776
+ _this23 = _super12.call(this);
12777
+ _this23.options = undefined;
12778
+ _this23.circumference = undefined;
12779
+ _this23.startAngle = undefined;
12780
+ _this23.endAngle = undefined;
12781
+ _this23.innerRadius = undefined;
12782
+ _this23.outerRadius = undefined;
12783
+ _this23.pixelMargin = 0;
12784
+ _this23.fullCircles = 0;
12688
12785
 
12689
12786
  if (cfg) {
12690
- Object.assign(_assertThisInitialized(_this22), cfg);
12787
+ Object.assign(_assertThisInitialized(_this23), cfg);
12691
12788
  }
12692
12789
 
12693
- return _this22;
12790
+ return _this23;
12694
12791
  }
12695
12792
 
12696
12793
  _createClass(ArcElement, [{
@@ -13037,28 +13134,28 @@
13037
13134
  var _super13 = _createSuper(LineElement);
13038
13135
 
13039
13136
  function LineElement(cfg) {
13040
- var _this23;
13137
+ var _this24;
13041
13138
 
13042
13139
  _classCallCheck(this, LineElement);
13043
13140
 
13044
- _this23 = _super13.call(this);
13045
- _this23.animated = true;
13046
- _this23.options = undefined;
13047
- _this23._chart = undefined;
13048
- _this23._loop = undefined;
13049
- _this23._fullLoop = undefined;
13050
- _this23._path = undefined;
13051
- _this23._points = undefined;
13052
- _this23._segments = undefined;
13053
- _this23._decimated = false;
13054
- _this23._pointsUpdated = false;
13055
- _this23._datasetIndex = undefined;
13141
+ _this24 = _super13.call(this);
13142
+ _this24.animated = true;
13143
+ _this24.options = undefined;
13144
+ _this24._chart = undefined;
13145
+ _this24._loop = undefined;
13146
+ _this24._fullLoop = undefined;
13147
+ _this24._path = undefined;
13148
+ _this24._points = undefined;
13149
+ _this24._segments = undefined;
13150
+ _this24._decimated = false;
13151
+ _this24._pointsUpdated = false;
13152
+ _this24._datasetIndex = undefined;
13056
13153
 
13057
13154
  if (cfg) {
13058
- Object.assign(_assertThisInitialized(_this23), cfg);
13155
+ Object.assign(_assertThisInitialized(_this24), cfg);
13059
13156
  }
13060
13157
 
13061
- return _this23;
13158
+ return _this24;
13062
13159
  }
13063
13160
 
13064
13161
  _createClass(LineElement, [{
@@ -13251,21 +13348,21 @@
13251
13348
  var _super14 = _createSuper(PointElement);
13252
13349
 
13253
13350
  function PointElement(cfg) {
13254
- var _this24;
13351
+ var _this25;
13255
13352
 
13256
13353
  _classCallCheck(this, PointElement);
13257
13354
 
13258
- _this24 = _super14.call(this);
13259
- _this24.options = undefined;
13260
- _this24.parsed = undefined;
13261
- _this24.skip = undefined;
13262
- _this24.stop = undefined;
13355
+ _this25 = _super14.call(this);
13356
+ _this25.options = undefined;
13357
+ _this25.parsed = undefined;
13358
+ _this25.skip = undefined;
13359
+ _this25.stop = undefined;
13263
13360
 
13264
13361
  if (cfg) {
13265
- Object.assign(_assertThisInitialized(_this24), cfg);
13362
+ Object.assign(_assertThisInitialized(_this25), cfg);
13266
13363
  }
13267
13364
 
13268
- return _this24;
13365
+ return _this25;
13269
13366
  }
13270
13367
 
13271
13368
  _createClass(PointElement, [{
@@ -13481,23 +13578,23 @@
13481
13578
  var _super15 = _createSuper(BarElement);
13482
13579
 
13483
13580
  function BarElement(cfg) {
13484
- var _this25;
13581
+ var _this26;
13485
13582
 
13486
13583
  _classCallCheck(this, BarElement);
13487
13584
 
13488
- _this25 = _super15.call(this);
13489
- _this25.options = undefined;
13490
- _this25.horizontal = undefined;
13491
- _this25.base = undefined;
13492
- _this25.width = undefined;
13493
- _this25.height = undefined;
13494
- _this25.inflateAmount = undefined;
13585
+ _this26 = _super15.call(this);
13586
+ _this26.options = undefined;
13587
+ _this26.horizontal = undefined;
13588
+ _this26.base = undefined;
13589
+ _this26.width = undefined;
13590
+ _this26.height = undefined;
13591
+ _this26.inflateAmount = undefined;
13495
13592
 
13496
13593
  if (cfg) {
13497
- Object.assign(_assertThisInitialized(_this25), cfg);
13594
+ Object.assign(_assertThisInitialized(_this26), cfg);
13498
13595
  }
13499
13596
 
13500
- return _this25;
13597
+ return _this26;
13501
13598
  }
13502
13599
 
13503
13600
  _createClass(BarElement, [{
@@ -13773,7 +13870,7 @@
13773
13870
  return;
13774
13871
  }
13775
13872
 
13776
- if (meta.type !== 'line') {
13873
+ if (!meta.controller.supportsDecimation) {
13777
13874
  return;
13778
13875
  }
13779
13876
 
@@ -13836,222 +13933,294 @@
13836
13933
  }
13837
13934
  };
13838
13935
 
13839
- function getLineByIndex(chart, index) {
13840
- var meta = chart.getDatasetMeta(index);
13841
- var visible = meta && chart.isDatasetVisible(index);
13842
- return visible ? meta.dataset : null;
13843
- }
13936
+ function _segments(line, target, property) {
13937
+ var segments = line.segments;
13938
+ var points = line.points;
13939
+ var tpoints = target.points;
13940
+ var parts = [];
13844
13941
 
13845
- function parseFillOption(line) {
13846
- var options = line.options;
13847
- var fillOption = options.fill;
13848
- var fill = valueOrDefault(fillOption && fillOption.target, fillOption);
13942
+ var _iterator16 = _createForOfIteratorHelper(segments),
13943
+ _step16;
13849
13944
 
13850
- if (fill === undefined) {
13851
- fill = !!options.backgroundColor;
13852
- }
13945
+ try {
13946
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
13947
+ var segment = _step16.value;
13948
+ var start = segment.start,
13949
+ end = segment.end;
13950
+ end = _findSegmentEnd(start, end, points);
13853
13951
 
13854
- if (fill === false || fill === null) {
13855
- return false;
13856
- }
13952
+ var bounds = _getBounds(property, points[start], points[end], segment.loop);
13857
13953
 
13858
- if (fill === true) {
13859
- return 'origin';
13860
- }
13954
+ if (!target.segments) {
13955
+ parts.push({
13956
+ source: segment,
13957
+ target: bounds,
13958
+ start: points[start],
13959
+ end: points[end]
13960
+ });
13961
+ continue;
13962
+ }
13861
13963
 
13862
- return fill;
13863
- }
13964
+ var targetSegments = _boundSegments(target, bounds);
13864
13965
 
13865
- function decodeFill(line, index, count) {
13866
- var fill = parseFillOption(line);
13966
+ var _iterator17 = _createForOfIteratorHelper(targetSegments),
13967
+ _step17;
13867
13968
 
13868
- if (isObject(fill)) {
13869
- return isNaN(fill.value) ? false : fill;
13870
- }
13969
+ try {
13970
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
13971
+ var tgt = _step17.value;
13871
13972
 
13872
- var target = parseFloat(fill);
13973
+ var subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);
13873
13974
 
13874
- if (isNumberFinite(target) && Math.floor(target) === target) {
13875
- if (fill[0] === '-' || fill[0] === '+') {
13876
- target = index + target;
13877
- }
13975
+ var fillSources = _boundSegment(segment, points, subBounds);
13878
13976
 
13879
- if (target === index || target < 0 || target >= count) {
13880
- return false;
13881
- }
13977
+ var _iterator18 = _createForOfIteratorHelper(fillSources),
13978
+ _step18;
13882
13979
 
13883
- return target;
13980
+ try {
13981
+ for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
13982
+ var fillSource = _step18.value;
13983
+ parts.push({
13984
+ source: fillSource,
13985
+ target: tgt,
13986
+ start: _defineProperty({}, property, _getEdge(bounds, subBounds, 'start', Math.max)),
13987
+ end: _defineProperty({}, property, _getEdge(bounds, subBounds, 'end', Math.min))
13988
+ });
13989
+ }
13990
+ } catch (err) {
13991
+ _iterator18.e(err);
13992
+ } finally {
13993
+ _iterator18.f();
13994
+ }
13995
+ }
13996
+ } catch (err) {
13997
+ _iterator17.e(err);
13998
+ } finally {
13999
+ _iterator17.f();
14000
+ }
14001
+ }
14002
+ } catch (err) {
14003
+ _iterator16.e(err);
14004
+ } finally {
14005
+ _iterator16.f();
13884
14006
  }
13885
14007
 
13886
- return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;
14008
+ return parts;
13887
14009
  }
13888
14010
 
13889
- function computeLinearBoundary(source) {
13890
- var _source$scale = source.scale,
13891
- scale = _source$scale === void 0 ? {} : _source$scale,
13892
- fill = source.fill;
13893
- var target = null;
13894
- var horizontal;
13895
-
13896
- if (fill === 'start') {
13897
- target = scale.bottom;
13898
- } else if (fill === 'end') {
13899
- target = scale.top;
13900
- } else if (isObject(fill)) {
13901
- target = scale.getPixelForValue(fill.value);
13902
- } else if (scale.getBasePixel) {
13903
- target = scale.getBasePixel();
14011
+ function _getBounds(property, first, last, loop) {
14012
+ if (loop) {
14013
+ return;
13904
14014
  }
13905
14015
 
13906
- if (isNumberFinite(target)) {
13907
- horizontal = scale.isHorizontal();
13908
- return {
13909
- x: horizontal ? target : null,
13910
- y: horizontal ? null : target
13911
- };
14016
+ var start = first[property];
14017
+ var end = last[property];
14018
+
14019
+ if (property === 'angle') {
14020
+ start = _normalizeAngle(start);
14021
+ end = _normalizeAngle(end);
13912
14022
  }
13913
14023
 
13914
- return null;
14024
+ return {
14025
+ property: property,
14026
+ start: start,
14027
+ end: end
14028
+ };
13915
14029
  }
13916
14030
 
13917
- var simpleArc = /*#__PURE__*/function () {
13918
- function simpleArc(opts) {
13919
- _classCallCheck(this, simpleArc);
14031
+ function _pointsFromSegments(boundary, line) {
14032
+ var _ref5 = boundary || {},
14033
+ _ref5$x = _ref5.x,
14034
+ x = _ref5$x === void 0 ? null : _ref5$x,
14035
+ _ref5$y = _ref5.y,
14036
+ y = _ref5$y === void 0 ? null : _ref5$y;
13920
14037
 
13921
- this.x = opts.x;
13922
- this.y = opts.y;
13923
- this.radius = opts.radius;
13924
- }
14038
+ var linePoints = line.points;
14039
+ var points = [];
14040
+ line.segments.forEach(function (_ref6) {
14041
+ var start = _ref6.start,
14042
+ end = _ref6.end;
14043
+ end = _findSegmentEnd(start, end, linePoints);
14044
+ var first = linePoints[start];
14045
+ var last = linePoints[end];
13925
14046
 
13926
- _createClass(simpleArc, [{
13927
- key: "pathSegment",
13928
- value: function pathSegment(ctx, bounds, opts) {
13929
- var x = this.x,
13930
- y = this.y,
13931
- radius = this.radius;
13932
- bounds = bounds || {
13933
- start: 0,
13934
- end: TAU
13935
- };
13936
- ctx.arc(x, y, radius, bounds.end, bounds.start, true);
13937
- return !opts.bounds;
14047
+ if (y !== null) {
14048
+ points.push({
14049
+ x: first.x,
14050
+ y: y
14051
+ });
14052
+ points.push({
14053
+ x: last.x,
14054
+ y: y
14055
+ });
14056
+ } else if (x !== null) {
14057
+ points.push({
14058
+ x: x,
14059
+ y: first.y
14060
+ });
14061
+ points.push({
14062
+ x: x,
14063
+ y: last.y
14064
+ });
13938
14065
  }
13939
- }, {
13940
- key: "interpolate",
13941
- value: function interpolate(point) {
13942
- var x = this.x,
13943
- y = this.y,
13944
- radius = this.radius;
13945
- var angle = point.angle;
13946
- return {
13947
- x: x + Math.cos(angle) * radius,
13948
- y: y + Math.sin(angle) * radius,
13949
- angle: angle
13950
- };
14066
+ });
14067
+ return points;
14068
+ }
14069
+
14070
+ function _findSegmentEnd(start, end, points) {
14071
+ for (; end > start; end--) {
14072
+ var point = points[end];
14073
+
14074
+ if (!isNaN(point.x) && !isNaN(point.y)) {
14075
+ break;
13951
14076
  }
13952
- }]);
14077
+ }
13953
14078
 
13954
- return simpleArc;
13955
- }();
14079
+ return end;
14080
+ }
13956
14081
 
13957
- function computeCircularBoundary(source) {
13958
- var scale = source.scale,
13959
- fill = source.fill;
13960
- var options = scale.options;
13961
- var length = scale.getLabels().length;
13962
- var target = [];
13963
- var start = options.reverse ? scale.max : scale.min;
13964
- var end = options.reverse ? scale.min : scale.max;
13965
- var i, center, value;
14082
+ function _getEdge(a, b, prop, fn) {
14083
+ if (a && b) {
14084
+ return fn(a[prop], b[prop]);
14085
+ }
13966
14086
 
13967
- if (fill === 'start') {
13968
- value = start;
13969
- } else if (fill === 'end') {
13970
- value = end;
13971
- } else if (isObject(fill)) {
13972
- value = fill.value;
14087
+ return a ? a[prop] : b ? b[prop] : 0;
14088
+ }
14089
+
14090
+ function _createBoundaryLine(boundary, line) {
14091
+ var points = [];
14092
+ var _loop = false;
14093
+
14094
+ if (isArray(boundary)) {
14095
+ _loop = true;
14096
+ points = boundary;
13973
14097
  } else {
13974
- value = scale.getBaseValue();
14098
+ points = _pointsFromSegments(boundary, line);
13975
14099
  }
13976
14100
 
13977
- if (options.grid.circular) {
13978
- center = scale.getPointPositionForValue(0, start);
13979
- return new simpleArc({
13980
- x: center.x,
13981
- y: center.y,
13982
- radius: scale.getDistanceFromCenterForValue(value)
13983
- });
14101
+ return points.length ? new LineElement({
14102
+ points: points,
14103
+ options: {
14104
+ tension: 0
14105
+ },
14106
+ _loop: _loop,
14107
+ _fullLoop: _loop
14108
+ }) : null;
14109
+ }
14110
+
14111
+ function _resolveTarget(sources, index, propagate) {
14112
+ var source = sources[index];
14113
+ var fill = source.fill;
14114
+ var visited = [index];
14115
+ var target;
14116
+
14117
+ if (!propagate) {
14118
+ return fill;
13984
14119
  }
13985
14120
 
13986
- for (i = 0; i < length; ++i) {
13987
- target.push(scale.getPointPositionForValue(i, value));
14121
+ while (fill !== false && visited.indexOf(fill) === -1) {
14122
+ if (!isNumberFinite(fill)) {
14123
+ return fill;
14124
+ }
14125
+
14126
+ target = sources[fill];
14127
+
14128
+ if (!target) {
14129
+ return false;
14130
+ }
14131
+
14132
+ if (target.visible) {
14133
+ return fill;
14134
+ }
14135
+
14136
+ visited.push(fill);
14137
+ fill = target.fill;
14138
+ }
14139
+
14140
+ return false;
14141
+ }
14142
+
14143
+ function _decodeFill(line, index, count) {
14144
+ var fill = parseFillOption(line);
14145
+
14146
+ if (isObject(fill)) {
14147
+ return isNaN(fill.value) ? false : fill;
14148
+ }
14149
+
14150
+ var target = parseFloat(fill);
14151
+
14152
+ if (isNumberFinite(target) && Math.floor(target) === target) {
14153
+ return decodeTargetIndex(fill[0], index, target, count);
14154
+ }
14155
+
14156
+ return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;
14157
+ }
14158
+
14159
+ function decodeTargetIndex(firstCh, index, target, count) {
14160
+ if (firstCh === '-' || firstCh === '+') {
14161
+ target = index + target;
14162
+ }
14163
+
14164
+ if (target === index || target < 0 || target >= count) {
14165
+ return false;
13988
14166
  }
13989
14167
 
13990
14168
  return target;
13991
14169
  }
13992
14170
 
13993
- function computeBoundary(source) {
13994
- var scale = source.scale || {};
14171
+ function _getTargetPixel(fill, scale) {
14172
+ var pixel = null;
13995
14173
 
13996
- if (scale.getPointPositionForValue) {
13997
- return computeCircularBoundary(source);
14174
+ if (fill === 'start') {
14175
+ pixel = scale.bottom;
14176
+ } else if (fill === 'end') {
14177
+ pixel = scale.top;
14178
+ } else if (isObject(fill)) {
14179
+ pixel = scale.getPixelForValue(fill.value);
14180
+ } else if (scale.getBasePixel) {
14181
+ pixel = scale.getBasePixel();
13998
14182
  }
13999
14183
 
14000
- return computeLinearBoundary(source);
14184
+ return pixel;
14001
14185
  }
14002
14186
 
14003
- function findSegmentEnd(start, end, points) {
14004
- for (; end > start; end--) {
14005
- var point = points[end];
14187
+ function _getTargetValue(fill, scale, startValue) {
14188
+ var value;
14006
14189
 
14007
- if (!isNaN(point.x) && !isNaN(point.y)) {
14008
- break;
14009
- }
14190
+ if (fill === 'start') {
14191
+ value = startValue;
14192
+ } else if (fill === 'end') {
14193
+ value = scale.options.reverse ? scale.min : scale.max;
14194
+ } else if (isObject(fill)) {
14195
+ value = fill.value;
14196
+ } else {
14197
+ value = scale.getBaseValue();
14010
14198
  }
14011
14199
 
14012
- return end;
14200
+ return value;
14013
14201
  }
14014
14202
 
14015
- function pointsFromSegments(boundary, line) {
14016
- var _ref5 = boundary || {},
14017
- _ref5$x = _ref5.x,
14018
- x = _ref5$x === void 0 ? null : _ref5$x,
14019
- _ref5$y = _ref5.y,
14020
- y = _ref5$y === void 0 ? null : _ref5$y;
14203
+ function parseFillOption(line) {
14204
+ var options = line.options;
14205
+ var fillOption = options.fill;
14206
+ var fill = valueOrDefault(fillOption && fillOption.target, fillOption);
14021
14207
 
14022
- var linePoints = line.points;
14023
- var points = [];
14024
- line.segments.forEach(function (_ref6) {
14025
- var start = _ref6.start,
14026
- end = _ref6.end;
14027
- end = findSegmentEnd(start, end, linePoints);
14028
- var first = linePoints[start];
14029
- var last = linePoints[end];
14208
+ if (fill === undefined) {
14209
+ fill = !!options.backgroundColor;
14210
+ }
14030
14211
 
14031
- if (y !== null) {
14032
- points.push({
14033
- x: first.x,
14034
- y: y
14035
- });
14036
- points.push({
14037
- x: last.x,
14038
- y: y
14039
- });
14040
- } else if (x !== null) {
14041
- points.push({
14042
- x: x,
14043
- y: first.y
14044
- });
14045
- points.push({
14046
- x: x,
14047
- y: last.y
14048
- });
14049
- }
14050
- });
14051
- return points;
14212
+ if (fill === false || fill === null) {
14213
+ return false;
14214
+ }
14215
+
14216
+ if (fill === true) {
14217
+ return 'origin';
14218
+ }
14219
+
14220
+ return fill;
14052
14221
  }
14053
14222
 
14054
- function buildStackLine(source) {
14223
+ function _buildStackLine(source) {
14055
14224
  var scale = source.scale,
14056
14225
  index = source.index,
14057
14226
  line = source.line;
@@ -14059,7 +14228,7 @@
14059
14228
  var segments = line.segments;
14060
14229
  var sourcePoints = line.points;
14061
14230
  var linesBelow = getLinesBelow(scale, index);
14062
- linesBelow.push(createBoundaryLine({
14231
+ linesBelow.push(_createBoundaryLine({
14063
14232
  x: null,
14064
14233
  y: scale.bottom
14065
14234
  }, line));
@@ -14158,7 +14327,47 @@
14158
14327
  };
14159
14328
  }
14160
14329
 
14161
- function getTarget(source) {
14330
+ var simpleArc = /*#__PURE__*/function () {
14331
+ function simpleArc(opts) {
14332
+ _classCallCheck(this, simpleArc);
14333
+
14334
+ this.x = opts.x;
14335
+ this.y = opts.y;
14336
+ this.radius = opts.radius;
14337
+ }
14338
+
14339
+ _createClass(simpleArc, [{
14340
+ key: "pathSegment",
14341
+ value: function pathSegment(ctx, bounds, opts) {
14342
+ var x = this.x,
14343
+ y = this.y,
14344
+ radius = this.radius;
14345
+ bounds = bounds || {
14346
+ start: 0,
14347
+ end: TAU
14348
+ };
14349
+ ctx.arc(x, y, radius, bounds.end, bounds.start, true);
14350
+ return !opts.bounds;
14351
+ }
14352
+ }, {
14353
+ key: "interpolate",
14354
+ value: function interpolate(point) {
14355
+ var x = this.x,
14356
+ y = this.y,
14357
+ radius = this.radius;
14358
+ var angle = point.angle;
14359
+ return {
14360
+ x: x + Math.cos(angle) * radius,
14361
+ y: y + Math.sin(angle) * radius,
14362
+ angle: angle
14363
+ };
14364
+ }
14365
+ }]);
14366
+
14367
+ return simpleArc;
14368
+ }();
14369
+
14370
+ function _getTarget(source) {
14162
14371
  var chart = source.chart,
14163
14372
  fill = source.fill,
14164
14373
  line = source.line;
@@ -14168,7 +14377,7 @@
14168
14377
  }
14169
14378
 
14170
14379
  if (fill === 'stack') {
14171
- return buildStackLine(source);
14380
+ return _buildStackLine(source);
14172
14381
  }
14173
14382
 
14174
14383
  if (fill === 'shape') {
@@ -14181,198 +14390,184 @@
14181
14390
  return boundary;
14182
14391
  }
14183
14392
 
14184
- return createBoundaryLine(boundary, line);
14393
+ return _createBoundaryLine(boundary, line);
14185
14394
  }
14186
14395
 
14187
- function createBoundaryLine(boundary, line) {
14188
- var points = [];
14189
- var _loop = false;
14396
+ function getLineByIndex(chart, index) {
14397
+ var meta = chart.getDatasetMeta(index);
14398
+ var visible = meta && chart.isDatasetVisible(index);
14399
+ return visible ? meta.dataset : null;
14400
+ }
14190
14401
 
14191
- if (isArray(boundary)) {
14192
- _loop = true;
14193
- points = boundary;
14194
- } else {
14195
- points = pointsFromSegments(boundary, line);
14402
+ function computeBoundary(source) {
14403
+ var scale = source.scale || {};
14404
+
14405
+ if (scale.getPointPositionForValue) {
14406
+ return computeCircularBoundary(source);
14196
14407
  }
14197
14408
 
14198
- return points.length ? new LineElement({
14199
- points: points,
14200
- options: {
14201
- tension: 0
14202
- },
14203
- _loop: _loop,
14204
- _fullLoop: _loop
14205
- }) : null;
14409
+ return computeLinearBoundary(source);
14206
14410
  }
14207
14411
 
14208
- function resolveTarget(sources, index, propagate) {
14209
- var source = sources[index];
14210
- var fill = source.fill;
14211
- var visited = [index];
14212
- var target;
14412
+ function computeLinearBoundary(source) {
14413
+ var _source$scale = source.scale,
14414
+ scale = _source$scale === void 0 ? {} : _source$scale,
14415
+ fill = source.fill;
14213
14416
 
14214
- if (!propagate) {
14215
- return fill;
14417
+ var pixel = _getTargetPixel(fill, scale);
14418
+
14419
+ if (isNumberFinite(pixel)) {
14420
+ var horizontal = scale.isHorizontal();
14421
+ return {
14422
+ x: horizontal ? pixel : null,
14423
+ y: horizontal ? null : pixel
14424
+ };
14216
14425
  }
14217
14426
 
14218
- while (fill !== false && visited.indexOf(fill) === -1) {
14219
- if (!isNumberFinite(fill)) {
14220
- return fill;
14221
- }
14427
+ return null;
14428
+ }
14222
14429
 
14223
- target = sources[fill];
14430
+ function computeCircularBoundary(source) {
14431
+ var scale = source.scale,
14432
+ fill = source.fill;
14433
+ var options = scale.options;
14434
+ var length = scale.getLabels().length;
14435
+ var start = options.reverse ? scale.max : scale.min;
14224
14436
 
14225
- if (!target) {
14226
- return false;
14227
- }
14437
+ var value = _getTargetValue(fill, scale, start);
14228
14438
 
14229
- if (target.visible) {
14230
- return fill;
14231
- }
14439
+ var target = [];
14232
14440
 
14233
- visited.push(fill);
14234
- fill = target.fill;
14441
+ if (options.grid.circular) {
14442
+ var center = scale.getPointPositionForValue(0, start);
14443
+ return new simpleArc({
14444
+ x: center.x,
14445
+ y: center.y,
14446
+ radius: scale.getDistanceFromCenterForValue(value)
14447
+ });
14235
14448
  }
14236
14449
 
14237
- return false;
14238
- }
14450
+ for (var i = 0; i < length; ++i) {
14451
+ target.push(scale.getPointPositionForValue(i, value));
14452
+ }
14239
14453
 
14240
- function _clip(ctx, target, clipY) {
14241
- ctx.beginPath();
14242
- target.path(ctx);
14243
- ctx.lineTo(target.last().x, clipY);
14244
- ctx.lineTo(target.first().x, clipY);
14245
- ctx.closePath();
14246
- ctx.clip();
14454
+ return target;
14247
14455
  }
14248
14456
 
14249
- function getBounds(property, first, last, loop) {
14250
- if (loop) {
14251
- return;
14252
- }
14253
-
14254
- var start = first[property];
14255
- var end = last[property];
14457
+ function _drawfill(ctx, source, area) {
14458
+ var target = _getTarget(source);
14256
14459
 
14257
- if (property === 'angle') {
14258
- start = _normalizeAngle(start);
14259
- end = _normalizeAngle(end);
14260
- }
14460
+ var line = source.line,
14461
+ scale = source.scale,
14462
+ axis = source.axis;
14463
+ var lineOpts = line.options;
14464
+ var fillOption = lineOpts.fill;
14465
+ var color = lineOpts.backgroundColor;
14261
14466
 
14262
- return {
14263
- property: property,
14264
- start: start,
14265
- end: end
14266
- };
14467
+ var _ref7 = fillOption || {},
14468
+ _ref7$above = _ref7.above,
14469
+ above = _ref7$above === void 0 ? color : _ref7$above,
14470
+ _ref7$below = _ref7.below,
14471
+ below = _ref7$below === void 0 ? color : _ref7$below;
14472
+
14473
+ if (target && line.points.length) {
14474
+ clipArea(ctx, area);
14475
+ doFill(ctx, {
14476
+ line: line,
14477
+ target: target,
14478
+ above: above,
14479
+ below: below,
14480
+ area: area,
14481
+ scale: scale,
14482
+ axis: axis
14483
+ });
14484
+ unclipArea(ctx);
14485
+ }
14267
14486
  }
14268
14487
 
14269
- function _getEdge(a, b, prop, fn) {
14270
- if (a && b) {
14271
- return fn(a[prop], b[prop]);
14488
+ function doFill(ctx, cfg) {
14489
+ var line = cfg.line,
14490
+ target = cfg.target,
14491
+ above = cfg.above,
14492
+ below = cfg.below,
14493
+ area = cfg.area,
14494
+ scale = cfg.scale;
14495
+ var property = line._loop ? 'angle' : cfg.axis;
14496
+ ctx.save();
14497
+
14498
+ if (property === 'x' && below !== above) {
14499
+ clipVertical(ctx, target, area.top);
14500
+ fill(ctx, {
14501
+ line: line,
14502
+ target: target,
14503
+ color: above,
14504
+ scale: scale,
14505
+ property: property
14506
+ });
14507
+ ctx.restore();
14508
+ ctx.save();
14509
+ clipVertical(ctx, target, area.bottom);
14272
14510
  }
14273
14511
 
14274
- return a ? a[prop] : b ? b[prop] : 0;
14512
+ fill(ctx, {
14513
+ line: line,
14514
+ target: target,
14515
+ color: below,
14516
+ scale: scale,
14517
+ property: property
14518
+ });
14519
+ ctx.restore();
14275
14520
  }
14276
14521
 
14277
- function _segments(line, target, property) {
14278
- var segments = line.segments;
14279
- var points = line.points;
14280
- var tpoints = target.points;
14281
- var parts = [];
14522
+ function clipVertical(ctx, target, clipY) {
14523
+ var segments = target.segments,
14524
+ points = target.points;
14525
+ var first = true;
14526
+ var lineLoop = false;
14527
+ ctx.beginPath();
14282
14528
 
14283
- var _iterator16 = _createForOfIteratorHelper(segments),
14284
- _step16;
14529
+ var _iterator19 = _createForOfIteratorHelper(segments),
14530
+ _step19;
14285
14531
 
14286
14532
  try {
14287
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
14288
- var segment = _step16.value;
14533
+ for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
14534
+ var segment = _step19.value;
14289
14535
  var start = segment.start,
14290
14536
  end = segment.end;
14291
- end = findSegmentEnd(start, end, points);
14292
- var bounds = getBounds(property, points[start], points[end], segment.loop);
14293
-
14294
- if (!target.segments) {
14295
- parts.push({
14296
- source: segment,
14297
- target: bounds,
14298
- start: points[start],
14299
- end: points[end]
14300
- });
14301
- continue;
14302
- }
14303
-
14304
- var targetSegments = _boundSegments(target, bounds);
14305
-
14306
- var _iterator17 = _createForOfIteratorHelper(targetSegments),
14307
- _step17;
14537
+ var firstPoint = points[start];
14308
14538
 
14309
- try {
14310
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
14311
- var tgt = _step17.value;
14312
- var subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);
14539
+ var lastPoint = points[_findSegmentEnd(start, end, points)];
14313
14540
 
14314
- var fillSources = _boundSegment(segment, points, subBounds);
14541
+ if (first) {
14542
+ ctx.moveTo(firstPoint.x, firstPoint.y);
14543
+ first = false;
14544
+ } else {
14545
+ ctx.lineTo(firstPoint.x, clipY);
14546
+ ctx.lineTo(firstPoint.x, firstPoint.y);
14547
+ }
14315
14548
 
14316
- var _iterator18 = _createForOfIteratorHelper(fillSources),
14317
- _step18;
14549
+ lineLoop = !!target.pathSegment(ctx, segment, {
14550
+ move: lineLoop
14551
+ });
14318
14552
 
14319
- try {
14320
- for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
14321
- var fillSource = _step18.value;
14322
- parts.push({
14323
- source: fillSource,
14324
- target: tgt,
14325
- start: _defineProperty({}, property, _getEdge(bounds, subBounds, 'start', Math.max)),
14326
- end: _defineProperty({}, property, _getEdge(bounds, subBounds, 'end', Math.min))
14327
- });
14328
- }
14329
- } catch (err) {
14330
- _iterator18.e(err);
14331
- } finally {
14332
- _iterator18.f();
14333
- }
14334
- }
14335
- } catch (err) {
14336
- _iterator17.e(err);
14337
- } finally {
14338
- _iterator17.f();
14553
+ if (lineLoop) {
14554
+ ctx.closePath();
14555
+ } else {
14556
+ ctx.lineTo(lastPoint.x, clipY);
14339
14557
  }
14340
14558
  }
14341
14559
  } catch (err) {
14342
- _iterator16.e(err);
14560
+ _iterator19.e(err);
14343
14561
  } finally {
14344
- _iterator16.f();
14345
- }
14346
-
14347
- return parts;
14348
- }
14349
-
14350
- function clipBounds(ctx, scale, bounds) {
14351
- var _scale$chart$chartAre = scale.chart.chartArea,
14352
- top = _scale$chart$chartAre.top,
14353
- bottom = _scale$chart$chartAre.bottom;
14354
-
14355
- var _ref7 = bounds || {},
14356
- property = _ref7.property,
14357
- start = _ref7.start,
14358
- end = _ref7.end;
14359
-
14360
- if (property === 'x') {
14361
- ctx.beginPath();
14362
- ctx.rect(start, top, end - start, bottom - top);
14363
- ctx.clip();
14562
+ _iterator19.f();
14364
14563
  }
14365
- }
14366
-
14367
- function interpolatedLineTo(ctx, target, point, property) {
14368
- var interpolatedPoint = target.interpolate(point, property);
14369
14564
 
14370
- if (interpolatedPoint) {
14371
- ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);
14372
- }
14565
+ ctx.lineTo(target.first().x, clipY);
14566
+ ctx.closePath();
14567
+ ctx.clip();
14373
14568
  }
14374
14569
 
14375
- function _fill(ctx, cfg) {
14570
+ function fill(ctx, cfg) {
14376
14571
  var line = cfg.line,
14377
14572
  target = cfg.target,
14378
14573
  property = cfg.property,
@@ -14381,16 +14576,16 @@
14381
14576
 
14382
14577
  var segments = _segments(line, target, property);
14383
14578
 
14384
- var _iterator19 = _createForOfIteratorHelper(segments),
14385
- _step19;
14579
+ var _iterator20 = _createForOfIteratorHelper(segments),
14580
+ _step20;
14386
14581
 
14387
14582
  try {
14388
- for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
14389
- var _step19$value = _step19.value,
14390
- src = _step19$value.source,
14391
- tgt = _step19$value.target,
14392
- start = _step19$value.start,
14393
- end = _step19$value.end;
14583
+ for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
14584
+ var _step20$value = _step20.value,
14585
+ src = _step20$value.source,
14586
+ tgt = _step20$value.target,
14587
+ start = _step20$value.start,
14588
+ end = _step20$value.end;
14394
14589
  var _src$style = src.style;
14395
14590
  _src$style = _src$style === void 0 ? {} : _src$style;
14396
14591
  var _src$style$background = _src$style.backgroundColor,
@@ -14398,7 +14593,7 @@
14398
14593
  var notShape = target !== true;
14399
14594
  ctx.save();
14400
14595
  ctx.fillStyle = backgroundColor;
14401
- clipBounds(ctx, scale, notShape && getBounds(property, start, end));
14596
+ clipBounds(ctx, scale, notShape && _getBounds(property, start, end));
14402
14597
  ctx.beginPath();
14403
14598
  var lineLoop = !!line.pathSegment(ctx, src);
14404
14599
  var loop = void 0;
@@ -14426,81 +14621,38 @@
14426
14621
  ctx.restore();
14427
14622
  }
14428
14623
  } catch (err) {
14429
- _iterator19.e(err);
14624
+ _iterator20.e(err);
14430
14625
  } finally {
14431
- _iterator19.f();
14626
+ _iterator20.f();
14432
14627
  }
14433
14628
  }
14434
14629
 
14435
- function doFill(ctx, cfg) {
14436
- var line = cfg.line,
14437
- target = cfg.target,
14438
- above = cfg.above,
14439
- below = cfg.below,
14440
- area = cfg.area,
14441
- scale = cfg.scale;
14442
- var property = line._loop ? 'angle' : cfg.axis;
14443
- ctx.save();
14444
-
14445
- if (property === 'x' && below !== above) {
14446
- _clip(ctx, target, area.top);
14447
-
14448
- _fill(ctx, {
14449
- line: line,
14450
- target: target,
14451
- color: above,
14452
- scale: scale,
14453
- property: property
14454
- });
14630
+ function clipBounds(ctx, scale, bounds) {
14631
+ var _scale$chart$chartAre = scale.chart.chartArea,
14632
+ top = _scale$chart$chartAre.top,
14633
+ bottom = _scale$chart$chartAre.bottom;
14455
14634
 
14456
- ctx.restore();
14457
- ctx.save();
14635
+ var _ref8 = bounds || {},
14636
+ property = _ref8.property,
14637
+ start = _ref8.start,
14638
+ end = _ref8.end;
14458
14639
 
14459
- _clip(ctx, target, area.bottom);
14640
+ if (property === 'x') {
14641
+ ctx.beginPath();
14642
+ ctx.rect(start, top, end - start, bottom - top);
14643
+ ctx.clip();
14460
14644
  }
14461
-
14462
- _fill(ctx, {
14463
- line: line,
14464
- target: target,
14465
- color: below,
14466
- scale: scale,
14467
- property: property
14468
- });
14469
-
14470
- ctx.restore();
14471
14645
  }
14472
14646
 
14473
- function drawfill(ctx, source, area) {
14474
- var target = getTarget(source);
14475
- var line = source.line,
14476
- scale = source.scale,
14477
- axis = source.axis;
14478
- var lineOpts = line.options;
14479
- var fillOption = lineOpts.fill;
14480
- var color = lineOpts.backgroundColor;
14481
-
14482
- var _ref8 = fillOption || {},
14483
- _ref8$above = _ref8.above,
14484
- above = _ref8$above === void 0 ? color : _ref8$above,
14485
- _ref8$below = _ref8.below,
14486
- below = _ref8$below === void 0 ? color : _ref8$below;
14647
+ function interpolatedLineTo(ctx, target, point, property) {
14648
+ var interpolatedPoint = target.interpolate(point, property);
14487
14649
 
14488
- if (target && line.points.length) {
14489
- clipArea(ctx, area);
14490
- doFill(ctx, {
14491
- line: line,
14492
- target: target,
14493
- above: above,
14494
- below: below,
14495
- area: area,
14496
- scale: scale,
14497
- axis: axis
14498
- });
14499
- unclipArea(ctx);
14650
+ if (interpolatedPoint) {
14651
+ ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);
14500
14652
  }
14501
14653
  }
14502
14654
 
14503
- var plugin_filler = {
14655
+ var index = {
14504
14656
  id: 'filler',
14505
14657
  afterDatasetsUpdate: function afterDatasetsUpdate(chart, _args, options) {
14506
14658
  var count = (chart.data.datasets || []).length;
@@ -14516,7 +14668,7 @@
14516
14668
  source = {
14517
14669
  visible: chart.isDatasetVisible(i),
14518
14670
  index: i,
14519
- fill: decodeFill(line, i, count),
14671
+ fill: _decodeFill(line, i, count),
14520
14672
  chart: chart,
14521
14673
  axis: meta.controller.options.indexAxis,
14522
14674
  scale: meta.vScale,
@@ -14535,7 +14687,7 @@
14535
14687
  continue;
14536
14688
  }
14537
14689
 
14538
- source.fill = resolveTarget(sources, i, options.propagate);
14690
+ source.fill = _resolveTarget(sources, i, options.propagate);
14539
14691
  }
14540
14692
  },
14541
14693
  beforeDraw: function beforeDraw(chart, _args, options) {
@@ -14553,7 +14705,7 @@
14553
14705
  source.line.updateControlPoints(area, source.axis);
14554
14706
 
14555
14707
  if (draw) {
14556
- drawfill(chart.ctx, source, area);
14708
+ _drawfill(chart.ctx, source, area);
14557
14709
  }
14558
14710
  }
14559
14711
  },
@@ -14568,7 +14720,7 @@
14568
14720
  var source = metasets[i].$filler;
14569
14721
 
14570
14722
  if (source) {
14571
- drawfill(chart.ctx, source, chart.chartArea);
14723
+ _drawfill(chart.ctx, source, chart.chartArea);
14572
14724
  }
14573
14725
  }
14574
14726
  },
@@ -14579,7 +14731,7 @@
14579
14731
  return;
14580
14732
  }
14581
14733
 
14582
- drawfill(chart.ctx, source, chart.chartArea);
14734
+ _drawfill(chart.ctx, source, chart.chartArea);
14583
14735
  },
14584
14736
  defaults: {
14585
14737
  propagate: true,
@@ -14615,34 +14767,34 @@
14615
14767
  var _super16 = _createSuper(Legend);
14616
14768
 
14617
14769
  function Legend(config) {
14618
- var _this26;
14770
+ var _this27;
14619
14771
 
14620
14772
  _classCallCheck(this, Legend);
14621
14773
 
14622
- _this26 = _super16.call(this);
14623
- _this26._added = false;
14624
- _this26.legendHitBoxes = [];
14625
- _this26._hoveredItem = null;
14626
- _this26.doughnutMode = false;
14627
- _this26.chart = config.chart;
14628
- _this26.options = config.options;
14629
- _this26.ctx = config.ctx;
14630
- _this26.legendItems = undefined;
14631
- _this26.columnSizes = undefined;
14632
- _this26.lineWidths = undefined;
14633
- _this26.maxHeight = undefined;
14634
- _this26.maxWidth = undefined;
14635
- _this26.top = undefined;
14636
- _this26.bottom = undefined;
14637
- _this26.left = undefined;
14638
- _this26.right = undefined;
14639
- _this26.height = undefined;
14640
- _this26.width = undefined;
14641
- _this26._margins = undefined;
14642
- _this26.position = undefined;
14643
- _this26.weight = undefined;
14644
- _this26.fullSize = undefined;
14645
- return _this26;
14774
+ _this27 = _super16.call(this);
14775
+ _this27._added = false;
14776
+ _this27.legendHitBoxes = [];
14777
+ _this27._hoveredItem = null;
14778
+ _this27.doughnutMode = false;
14779
+ _this27.chart = config.chart;
14780
+ _this27.options = config.options;
14781
+ _this27.ctx = config.ctx;
14782
+ _this27.legendItems = undefined;
14783
+ _this27.columnSizes = undefined;
14784
+ _this27.lineWidths = undefined;
14785
+ _this27.maxHeight = undefined;
14786
+ _this27.maxWidth = undefined;
14787
+ _this27.top = undefined;
14788
+ _this27.bottom = undefined;
14789
+ _this27.left = undefined;
14790
+ _this27.right = undefined;
14791
+ _this27.height = undefined;
14792
+ _this27.width = undefined;
14793
+ _this27._margins = undefined;
14794
+ _this27.position = undefined;
14795
+ _this27.weight = undefined;
14796
+ _this27.fullSize = undefined;
14797
+ return _this27;
14646
14798
  }
14647
14799
 
14648
14800
  _createClass(Legend, [{
@@ -14671,20 +14823,20 @@
14671
14823
  }, {
14672
14824
  key: "buildLabels",
14673
14825
  value: function buildLabels() {
14674
- var _this27 = this;
14826
+ var _this28 = this;
14675
14827
 
14676
14828
  var labelOpts = this.options.labels || {};
14677
14829
  var legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];
14678
14830
 
14679
14831
  if (labelOpts.filter) {
14680
14832
  legendItems = legendItems.filter(function (item) {
14681
- return labelOpts.filter(item, _this27.chart.data);
14833
+ return labelOpts.filter(item, _this28.chart.data);
14682
14834
  });
14683
14835
  }
14684
14836
 
14685
14837
  if (labelOpts.sort) {
14686
14838
  legendItems = legendItems.sort(function (a, b) {
14687
- return labelOpts.sort(a, b, _this27.chart.data);
14839
+ return labelOpts.sort(a, b, _this28.chart.data);
14688
14840
  });
14689
14841
  }
14690
14842
 
@@ -14830,12 +14982,12 @@
14830
14982
 
14831
14983
  var left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);
14832
14984
 
14833
- var _iterator20 = _createForOfIteratorHelper(hitboxes),
14834
- _step20;
14985
+ var _iterator21 = _createForOfIteratorHelper(hitboxes),
14986
+ _step21;
14835
14987
 
14836
14988
  try {
14837
- for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
14838
- var hitbox = _step20.value;
14989
+ for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
14990
+ var hitbox = _step21.value;
14839
14991
 
14840
14992
  if (row !== hitbox.row) {
14841
14993
  row = hitbox.row;
@@ -14847,21 +14999,21 @@
14847
14999
  left += hitbox.width + padding;
14848
15000
  }
14849
15001
  } catch (err) {
14850
- _iterator20.e(err);
15002
+ _iterator21.e(err);
14851
15003
  } finally {
14852
- _iterator20.f();
15004
+ _iterator21.f();
14853
15005
  }
14854
15006
  } else {
14855
15007
  var col = 0;
14856
15008
 
14857
15009
  var top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);
14858
15010
 
14859
- var _iterator21 = _createForOfIteratorHelper(hitboxes),
14860
- _step21;
15011
+ var _iterator22 = _createForOfIteratorHelper(hitboxes),
15012
+ _step22;
14861
15013
 
14862
15014
  try {
14863
- for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
14864
- var _hitbox = _step21.value;
15015
+ for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
15016
+ var _hitbox = _step22.value;
14865
15017
 
14866
15018
  if (_hitbox.col !== col) {
14867
15019
  col = _hitbox.col;
@@ -14874,9 +15026,9 @@
14874
15026
  top += _hitbox.height + padding;
14875
15027
  }
14876
15028
  } catch (err) {
14877
- _iterator21.e(err);
15029
+ _iterator22.e(err);
14878
15030
  } finally {
14879
- _iterator21.f();
15031
+ _iterator22.f();
14880
15032
  }
14881
15033
  }
14882
15034
  }
@@ -14900,7 +15052,7 @@
14900
15052
  }, {
14901
15053
  key: "_draw",
14902
15054
  value: function _draw() {
14903
- var _this28 = this;
15055
+ var _this29 = this;
14904
15056
 
14905
15057
  var opts = this.options,
14906
15058
  columnSizes = this.columnSizes,
@@ -15017,23 +15169,23 @@
15017
15169
  var width = boxWidth + halfFontSize + textWidth;
15018
15170
  var x = cursor.x;
15019
15171
  var y = cursor.y;
15020
- rtlHelper.setWidth(_this28.width);
15172
+ rtlHelper.setWidth(_this29.width);
15021
15173
 
15022
15174
  if (isHorizontal) {
15023
- if (i > 0 && x + width + padding > _this28.right) {
15175
+ if (i > 0 && x + width + padding > _this29.right) {
15024
15176
  y = cursor.y += lineHeight;
15025
15177
  cursor.line++;
15026
- x = cursor.x = _alignStartEnd(align, _this28.left + padding, _this28.right - lineWidths[cursor.line]);
15178
+ x = cursor.x = _alignStartEnd(align, _this29.left + padding, _this29.right - lineWidths[cursor.line]);
15027
15179
  }
15028
- } else if (i > 0 && y + lineHeight > _this28.bottom) {
15180
+ } else if (i > 0 && y + lineHeight > _this29.bottom) {
15029
15181
  x = cursor.x = x + columnSizes[cursor.line].width + padding;
15030
15182
  cursor.line++;
15031
- y = cursor.y = _alignStartEnd(align, _this28.top + titleHeight + padding, _this28.bottom - columnSizes[cursor.line].height);
15183
+ y = cursor.y = _alignStartEnd(align, _this29.top + titleHeight + padding, _this29.bottom - columnSizes[cursor.line].height);
15032
15184
  }
15033
15185
 
15034
15186
  var realX = rtlHelper.x(x);
15035
15187
  drawLegendBox(realX, y, legendItem);
15036
- x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : _this28.right, opts.rtl);
15188
+ x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : _this29.right, opts.rtl);
15037
15189
  fillText(rtlHelper.x(x), y, legendItem);
15038
15190
 
15039
15191
  if (isHorizontal) {
@@ -15123,7 +15275,7 @@
15123
15275
 
15124
15276
  var hoveredItem = this._getLegendItemAt(e.x, e.y);
15125
15277
 
15126
- if (e.type === 'mousemove') {
15278
+ if (e.type === 'mousemove' || e.type === 'mouseout') {
15127
15279
  var previous = this._hoveredItem;
15128
15280
  var sameItem = itemsEqual(previous, hoveredItem);
15129
15281
 
@@ -15146,7 +15298,7 @@
15146
15298
  }(Element);
15147
15299
 
15148
15300
  function isListened(type, opts) {
15149
- if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {
15301
+ if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {
15150
15302
  return true;
15151
15303
  }
15152
15304
 
@@ -15272,25 +15424,25 @@
15272
15424
  var _super17 = _createSuper(Title);
15273
15425
 
15274
15426
  function Title(config) {
15275
- var _this29;
15427
+ var _this30;
15276
15428
 
15277
15429
  _classCallCheck(this, Title);
15278
15430
 
15279
- _this29 = _super17.call(this);
15280
- _this29.chart = config.chart;
15281
- _this29.options = config.options;
15282
- _this29.ctx = config.ctx;
15283
- _this29._padding = undefined;
15284
- _this29.top = undefined;
15285
- _this29.bottom = undefined;
15286
- _this29.left = undefined;
15287
- _this29.right = undefined;
15288
- _this29.width = undefined;
15289
- _this29.height = undefined;
15290
- _this29.position = undefined;
15291
- _this29.weight = undefined;
15292
- _this29.fullSize = undefined;
15293
- return _this29;
15431
+ _this30 = _super17.call(this);
15432
+ _this30.chart = config.chart;
15433
+ _this30.options = config.options;
15434
+ _this30.ctx = config.ctx;
15435
+ _this30._padding = undefined;
15436
+ _this30.top = undefined;
15437
+ _this30.bottom = undefined;
15438
+ _this30.left = undefined;
15439
+ _this30.right = undefined;
15440
+ _this30.width = undefined;
15441
+ _this30.height = undefined;
15442
+ _this30.position = undefined;
15443
+ _this30.weight = undefined;
15444
+ _this30.fullSize = undefined;
15445
+ return _this30;
15294
15446
  }
15295
15447
 
15296
15448
  _createClass(Title, [{
@@ -15803,40 +15955,40 @@
15803
15955
  var _super18 = _createSuper(Tooltip);
15804
15956
 
15805
15957
  function Tooltip(config) {
15806
- var _this30;
15958
+ var _this31;
15807
15959
 
15808
15960
  _classCallCheck(this, Tooltip);
15809
15961
 
15810
- _this30 = _super18.call(this);
15811
- _this30.opacity = 0;
15812
- _this30._active = [];
15813
- _this30._eventPosition = undefined;
15814
- _this30._size = undefined;
15815
- _this30._cachedAnimations = undefined;
15816
- _this30._tooltipItems = [];
15817
- _this30.$animations = undefined;
15818
- _this30.$context = undefined;
15819
- _this30.chart = config.chart || config._chart;
15820
- _this30._chart = _this30.chart;
15821
- _this30.options = config.options;
15822
- _this30.dataPoints = undefined;
15823
- _this30.title = undefined;
15824
- _this30.beforeBody = undefined;
15825
- _this30.body = undefined;
15826
- _this30.afterBody = undefined;
15827
- _this30.footer = undefined;
15828
- _this30.xAlign = undefined;
15829
- _this30.yAlign = undefined;
15830
- _this30.x = undefined;
15831
- _this30.y = undefined;
15832
- _this30.height = undefined;
15833
- _this30.width = undefined;
15834
- _this30.caretX = undefined;
15835
- _this30.caretY = undefined;
15836
- _this30.labelColors = undefined;
15837
- _this30.labelPointStyles = undefined;
15838
- _this30.labelTextColors = undefined;
15839
- return _this30;
15962
+ _this31 = _super18.call(this);
15963
+ _this31.opacity = 0;
15964
+ _this31._active = [];
15965
+ _this31._eventPosition = undefined;
15966
+ _this31._size = undefined;
15967
+ _this31._cachedAnimations = undefined;
15968
+ _this31._tooltipItems = [];
15969
+ _this31.$animations = undefined;
15970
+ _this31.$context = undefined;
15971
+ _this31.chart = config.chart || config._chart;
15972
+ _this31._chart = _this31.chart;
15973
+ _this31.options = config.options;
15974
+ _this31.dataPoints = undefined;
15975
+ _this31.title = undefined;
15976
+ _this31.beforeBody = undefined;
15977
+ _this31.body = undefined;
15978
+ _this31.afterBody = undefined;
15979
+ _this31.footer = undefined;
15980
+ _this31.xAlign = undefined;
15981
+ _this31.yAlign = undefined;
15982
+ _this31.x = undefined;
15983
+ _this31.y = undefined;
15984
+ _this31.height = undefined;
15985
+ _this31.width = undefined;
15986
+ _this31.caretX = undefined;
15987
+ _this31.caretY = undefined;
15988
+ _this31.labelColors = undefined;
15989
+ _this31.labelPointStyles = undefined;
15990
+ _this31.labelTextColors = undefined;
15991
+ return _this31;
15840
15992
  }
15841
15993
 
15842
15994
  _createClass(Tooltip, [{
@@ -15892,7 +16044,7 @@
15892
16044
  }, {
15893
16045
  key: "getBody",
15894
16046
  value: function getBody(tooltipItems, options) {
15895
- var _this31 = this;
16047
+ var _this32 = this;
15896
16048
 
15897
16049
  var callbacks = options.callbacks;
15898
16050
  var bodyItems = [];
@@ -15903,9 +16055,9 @@
15903
16055
  after: []
15904
16056
  };
15905
16057
  var scoped = overrideCallbacks(callbacks, context);
15906
- pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(_this31, context)));
15907
- pushOrConcat(bodyItem.lines, scoped.label.call(_this31, context));
15908
- pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(_this31, context)));
16058
+ pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(_this32, context)));
16059
+ pushOrConcat(bodyItem.lines, scoped.label.call(_this32, context));
16060
+ pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(_this32, context)));
15909
16061
  bodyItems.push(bodyItem);
15910
16062
  });
15911
16063
  return bodyItems;
@@ -15931,7 +16083,7 @@
15931
16083
  }, {
15932
16084
  key: "_createItems",
15933
16085
  value: function _createItems(options) {
15934
- var _this32 = this;
16086
+ var _this33 = this;
15935
16087
 
15936
16088
  var active = this._active;
15937
16089
  var data = this.chart.data;
@@ -15959,9 +16111,9 @@
15959
16111
 
15960
16112
  each(tooltipItems, function (context) {
15961
16113
  var scoped = overrideCallbacks(options.callbacks, context);
15962
- labelColors.push(scoped.labelColor.call(_this32, context));
15963
- labelPointStyles.push(scoped.labelPointStyle.call(_this32, context));
15964
- labelTextColors.push(scoped.labelTextColor.call(_this32, context));
16114
+ labelColors.push(scoped.labelColor.call(_this33, context));
16115
+ labelPointStyles.push(scoped.labelPointStyle.call(_this33, context));
16116
+ labelTextColors.push(scoped.labelTextColor.call(_this33, context));
15965
16117
  });
15966
16118
  this.labelColors = labelColors;
15967
16119
  this.labelPointStyles = labelPointStyles;
@@ -16367,6 +16519,11 @@
16367
16519
  }
16368
16520
  }
16369
16521
  }
16522
+ }, {
16523
+ key: "_willRender",
16524
+ value: function _willRender() {
16525
+ return !!this.opacity;
16526
+ }
16370
16527
  }, {
16371
16528
  key: "draw",
16372
16529
  value: function draw(ctx) {
@@ -16412,14 +16569,14 @@
16412
16569
  }, {
16413
16570
  key: "setActiveElements",
16414
16571
  value: function setActiveElements(activeElements, eventPosition) {
16415
- var _this33 = this;
16572
+ var _this34 = this;
16416
16573
 
16417
16574
  var lastActive = this._active;
16418
16575
  var active = activeElements.map(function (_ref9) {
16419
16576
  var datasetIndex = _ref9.datasetIndex,
16420
16577
  index = _ref9.index;
16421
16578
 
16422
- var meta = _this33.chart.getDatasetMeta(datasetIndex);
16579
+ var meta = _this34.chart.getDatasetMeta(datasetIndex);
16423
16580
 
16424
16581
  if (!meta) {
16425
16582
  throw new Error('Cannot find a dataset at index ' + datasetIndex);
@@ -16535,19 +16692,19 @@
16535
16692
  },
16536
16693
  afterDraw: function afterDraw(chart) {
16537
16694
  var tooltip = chart.tooltip;
16538
- var args = {
16539
- tooltip: tooltip
16540
- };
16541
16695
 
16542
- if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {
16543
- return;
16544
- }
16696
+ if (tooltip && tooltip._willRender()) {
16697
+ var args = {
16698
+ tooltip: tooltip
16699
+ };
16700
+
16701
+ if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {
16702
+ return;
16703
+ }
16545
16704
 
16546
- if (tooltip) {
16547
16705
  tooltip.draw(chart.ctx);
16706
+ chart.notifyPlugins('afterTooltipDraw', args);
16548
16707
  }
16549
-
16550
- chart.notifyPlugins('afterTooltipDraw', args);
16551
16708
  },
16552
16709
  afterEvent: function afterEvent(chart, args) {
16553
16710
  if (chart.tooltip) {
@@ -16707,7 +16864,7 @@
16707
16864
  var plugins = /*#__PURE__*/Object.freeze({
16708
16865
  __proto__: null,
16709
16866
  Decimation: plugin_decimation,
16710
- Filler: plugin_filler,
16867
+ Filler: index,
16711
16868
  Legend: plugin_legend,
16712
16869
  SubTitle: plugin_subtitle,
16713
16870
  Title: plugin_title,
@@ -16749,15 +16906,15 @@
16749
16906
  var _super19 = _createSuper(CategoryScale);
16750
16907
 
16751
16908
  function CategoryScale(cfg) {
16752
- var _this34;
16909
+ var _this35;
16753
16910
 
16754
16911
  _classCallCheck(this, CategoryScale);
16755
16912
 
16756
- _this34 = _super19.call(this, cfg);
16757
- _this34._startValue = undefined;
16758
- _this34._valueRange = 0;
16759
- _this34._addedLabels = [];
16760
- return _this34;
16913
+ _this35 = _super19.call(this, cfg);
16914
+ _this35._startValue = undefined;
16915
+ _this35._valueRange = 0;
16916
+ _this35._addedLabels = [];
16917
+ return _this35;
16761
16918
  }
16762
16919
 
16763
16920
  _createClass(CategoryScale, [{
@@ -16768,23 +16925,23 @@
16768
16925
  if (added.length) {
16769
16926
  var labels = this.getLabels();
16770
16927
 
16771
- var _iterator22 = _createForOfIteratorHelper(added),
16772
- _step22;
16928
+ var _iterator23 = _createForOfIteratorHelper(added),
16929
+ _step23;
16773
16930
 
16774
16931
  try {
16775
- for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
16776
- var _step22$value = _step22.value,
16777
- index = _step22$value.index,
16778
- label = _step22$value.label;
16932
+ for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
16933
+ var _step23$value = _step23.value,
16934
+ _index3 = _step23$value.index,
16935
+ label = _step23$value.label;
16779
16936
 
16780
- if (labels[index] === label) {
16781
- labels.splice(index, 1);
16937
+ if (labels[_index3] === label) {
16938
+ labels.splice(_index3, 1);
16782
16939
  }
16783
16940
  }
16784
16941
  } catch (err) {
16785
- _iterator22.e(err);
16942
+ _iterator23.e(err);
16786
16943
  } finally {
16787
- _iterator22.f();
16944
+ _iterator23.f();
16788
16945
  }
16789
16946
 
16790
16947
  this._addedLabels = [];
@@ -17041,17 +17198,17 @@
17041
17198
  var _super20 = _createSuper(LinearScaleBase);
17042
17199
 
17043
17200
  function LinearScaleBase(cfg) {
17044
- var _this35;
17201
+ var _this36;
17045
17202
 
17046
17203
  _classCallCheck(this, LinearScaleBase);
17047
17204
 
17048
- _this35 = _super20.call(this, cfg);
17049
- _this35.start = undefined;
17050
- _this35.end = undefined;
17051
- _this35._startValue = undefined;
17052
- _this35._endValue = undefined;
17053
- _this35._valueRange = 0;
17054
- return _this35;
17205
+ _this36 = _super20.call(this, cfg);
17206
+ _this36.start = undefined;
17207
+ _this36.end = undefined;
17208
+ _this36._startValue = undefined;
17209
+ _this36._endValue = undefined;
17210
+ _this36._valueRange = 0;
17211
+ return _this36;
17055
17212
  }
17056
17213
 
17057
17214
  _createClass(LinearScaleBase, [{
@@ -17313,16 +17470,16 @@
17313
17470
  var _super22 = _createSuper(LogarithmicScale);
17314
17471
 
17315
17472
  function LogarithmicScale(cfg) {
17316
- var _this36;
17473
+ var _this37;
17317
17474
 
17318
17475
  _classCallCheck(this, LogarithmicScale);
17319
17476
 
17320
- _this36 = _super22.call(this, cfg);
17321
- _this36.start = undefined;
17322
- _this36.end = undefined;
17323
- _this36._startValue = undefined;
17324
- _this36._valueRange = 0;
17325
- return _this36;
17477
+ _this37 = _super22.call(this, cfg);
17478
+ _this37.start = undefined;
17479
+ _this37.end = undefined;
17480
+ _this37._startValue = undefined;
17481
+ _this37._valueRange = 0;
17482
+ return _this37;
17326
17483
  }
17327
17484
 
17328
17485
  _createClass(LogarithmicScale, [{
@@ -17646,9 +17803,29 @@
17646
17803
  var backdropColor = optsAtIndex.backdropColor;
17647
17804
 
17648
17805
  if (!isNullOrUndef(backdropColor)) {
17806
+ var borderRadius = toTRBLCorners(optsAtIndex.borderRadius);
17649
17807
  var padding = toPadding(optsAtIndex.backdropPadding);
17650
17808
  ctx.fillStyle = backdropColor;
17651
- ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);
17809
+ var backdropLeft = left - padding.left;
17810
+ var backdropTop = top - padding.top;
17811
+ var backdropWidth = right - left + padding.width;
17812
+ var backdropHeight = bottom - top + padding.height;
17813
+
17814
+ if (Object.values(borderRadius).some(function (v) {
17815
+ return v !== 0;
17816
+ })) {
17817
+ ctx.beginPath();
17818
+ addRoundedRectPath(ctx, {
17819
+ x: backdropLeft,
17820
+ y: backdropTop,
17821
+ w: backdropWidth,
17822
+ h: backdropHeight,
17823
+ radius: borderRadius
17824
+ });
17825
+ ctx.fill();
17826
+ } else {
17827
+ ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);
17828
+ }
17652
17829
  }
17653
17830
 
17654
17831
  renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {
@@ -17711,17 +17888,17 @@
17711
17888
  var _super23 = _createSuper(RadialLinearScale);
17712
17889
 
17713
17890
  function RadialLinearScale(cfg) {
17714
- var _this37;
17891
+ var _this38;
17715
17892
 
17716
17893
  _classCallCheck(this, RadialLinearScale);
17717
17894
 
17718
- _this37 = _super23.call(this, cfg);
17719
- _this37.xCenter = undefined;
17720
- _this37.yCenter = undefined;
17721
- _this37.drawingArea = undefined;
17722
- _this37._pointLabels = [];
17723
- _this37._pointLabelItems = [];
17724
- return _this37;
17895
+ _this38 = _super23.call(this, cfg);
17896
+ _this38.xCenter = undefined;
17897
+ _this38.yCenter = undefined;
17898
+ _this38.drawingArea = undefined;
17899
+ _this38._pointLabels = [];
17900
+ _this38._pointLabelItems = [];
17901
+ return _this38;
17725
17902
  }
17726
17903
 
17727
17904
  _createClass(RadialLinearScale, [{
@@ -17753,14 +17930,14 @@
17753
17930
  }, {
17754
17931
  key: "generateTickLabels",
17755
17932
  value: function generateTickLabels(ticks) {
17756
- var _this38 = this;
17933
+ var _this39 = this;
17757
17934
 
17758
17935
  LinearScaleBase.prototype.generateTickLabels.call(this, ticks);
17759
17936
  this._pointLabels = this.getLabels().map(function (value, index) {
17760
- var label = callback(_this38.options.pointLabels.callback, [value, index], _this38);
17937
+ var label = callback(_this39.options.pointLabels.callback, [value, index], _this39);
17761
17938
  return label || label === 0 ? label : '';
17762
17939
  }).filter(function (v, i) {
17763
- return _this38.chart.getDataVisibility(i);
17940
+ return _this39.chart.getDataVisibility(i);
17764
17941
  });
17765
17942
  }
17766
17943
  }, {
@@ -17880,7 +18057,7 @@
17880
18057
  }, {
17881
18058
  key: "drawGrid",
17882
18059
  value: function drawGrid() {
17883
- var _this39 = this;
18060
+ var _this40 = this;
17884
18061
 
17885
18062
  var ctx = this.ctx;
17886
18063
  var opts = this.options;
@@ -17896,9 +18073,9 @@
17896
18073
  if (grid.display) {
17897
18074
  this.ticks.forEach(function (tick, index) {
17898
18075
  if (index !== 0) {
17899
- offset = _this39.getDistanceFromCenterForValue(tick.value);
17900
- var optsAtIndex = grid.setContext(_this39.getContext(index - 1));
17901
- drawRadiusLine(_this39, optsAtIndex, offset, labelCount);
18076
+ offset = _this40.getDistanceFromCenterForValue(tick.value);
18077
+ var optsAtIndex = grid.setContext(_this40.getContext(index - 1));
18078
+ drawRadiusLine(_this40, optsAtIndex, offset, labelCount);
17902
18079
  }
17903
18080
  });
17904
18081
  }
@@ -17936,7 +18113,7 @@
17936
18113
  }, {
17937
18114
  key: "drawLabels",
17938
18115
  value: function drawLabels() {
17939
- var _this40 = this;
18116
+ var _this41 = this;
17940
18117
 
17941
18118
  var ctx = this.ctx;
17942
18119
  var opts = this.options;
@@ -17958,9 +18135,9 @@
17958
18135
  return;
17959
18136
  }
17960
18137
 
17961
- var optsAtIndex = tickOpts.setContext(_this40.getContext(index));
18138
+ var optsAtIndex = tickOpts.setContext(_this41.getContext(index));
17962
18139
  var tickFont = toFont(optsAtIndex.font);
17963
- offset = _this40.getDistanceFromCenterForValue(_this40.ticks[index].value);
18140
+ offset = _this41.getDistanceFromCenterForValue(_this41.ticks[index].value);
17964
18141
 
17965
18142
  if (optsAtIndex.showLabelBackdrop) {
17966
18143
  ctx.font = tickFont.string;
@@ -18199,22 +18376,22 @@
18199
18376
  var _super24 = _createSuper(TimeScale);
18200
18377
 
18201
18378
  function TimeScale(props) {
18202
- var _this41;
18379
+ var _this42;
18203
18380
 
18204
18381
  _classCallCheck(this, TimeScale);
18205
18382
 
18206
- _this41 = _super24.call(this, props);
18207
- _this41._cache = {
18383
+ _this42 = _super24.call(this, props);
18384
+ _this42._cache = {
18208
18385
  data: [],
18209
18386
  labels: [],
18210
18387
  all: []
18211
18388
  };
18212
- _this41._unit = 'day';
18213
- _this41._majorUnit = undefined;
18214
- _this41._offsets = {};
18215
- _this41._normalized = false;
18216
- _this41._parseOpts = undefined;
18217
- return _this41;
18389
+ _this42._unit = 'day';
18390
+ _this42._majorUnit = undefined;
18391
+ _this42._offsets = {};
18392
+ _this42._normalized = false;
18393
+ _this42._parseOpts = undefined;
18394
+ return _this42;
18218
18395
  }
18219
18396
 
18220
18397
  _createClass(TimeScale, [{
@@ -18334,6 +18511,15 @@
18334
18511
 
18335
18512
  return ticksFromTimestamps(this, ticks, this._majorUnit);
18336
18513
  }
18514
+ }, {
18515
+ key: "afterAutoSkip",
18516
+ value: function afterAutoSkip() {
18517
+ if (this.options.offsetAfterAutoskip) {
18518
+ this.initOffsets(this.ticks.map(function (tick) {
18519
+ return +tick.value;
18520
+ }));
18521
+ }
18522
+ }
18337
18523
  }, {
18338
18524
  key: "initOffsets",
18339
18525
  value: function initOffsets(timestamps) {
@@ -18613,15 +18799,15 @@
18613
18799
  var _super25 = _createSuper(TimeSeriesScale);
18614
18800
 
18615
18801
  function TimeSeriesScale(props) {
18616
- var _this42;
18802
+ var _this43;
18617
18803
 
18618
18804
  _classCallCheck(this, TimeSeriesScale);
18619
18805
 
18620
- _this42 = _super25.call(this, props);
18621
- _this42._table = [];
18622
- _this42._minPos = undefined;
18623
- _this42._tableRange = undefined;
18624
- return _this42;
18806
+ _this43 = _super25.call(this, props);
18807
+ _this43._table = [];
18808
+ _this43._minPos = undefined;
18809
+ _this43._tableRange = undefined;
18810
+ return _this43;
18625
18811
  }
18626
18812
 
18627
18813
  _createClass(TimeSeriesScale, [{
@@ -18940,7 +19126,7 @@
18940
19126
  return new Date(timestamp + amount);
18941
19127
  }
18942
19128
 
18943
- var MILLISECONDS_IN_HOUR$2 = 3600000;
19129
+ var MILLISECONDS_IN_HOUR$1 = 3600000;
18944
19130
  /**
18945
19131
  * @name addHours
18946
19132
  * @category Hour Helpers
@@ -18967,7 +19153,7 @@
18967
19153
  function addHours(dirtyDate, dirtyAmount) {
18968
19154
  requiredArgs(2, arguments);
18969
19155
  var amount = toInteger(dirtyAmount);
18970
- return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR$2);
19156
+ return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR$1);
18971
19157
  }
18972
19158
 
18973
19159
  /**
@@ -19117,7 +19303,7 @@
19117
19303
  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY$1);
19118
19304
  }
19119
19305
 
19120
- var MILLISECONDS_IN_MINUTE$2 = 60000;
19306
+ var MILLISECONDS_IN_MINUTE$1 = 60000;
19121
19307
  /**
19122
19308
  * @name addMinutes
19123
19309
  * @category Minute Helpers
@@ -19144,7 +19330,7 @@
19144
19330
  function addMinutes(dirtyDate, dirtyAmount) {
19145
19331
  requiredArgs(2, arguments);
19146
19332
  var amount = toInteger(dirtyAmount);
19147
- return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE$2);
19333
+ return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE$1);
19148
19334
  }
19149
19335
 
19150
19336
  /**
@@ -20457,6 +20643,8 @@
20457
20643
  return result;
20458
20644
  };
20459
20645
 
20646
+ var formatDistance$1 = formatDistance;
20647
+
20460
20648
  function buildFormatLongFn(args) {
20461
20649
  return function () {
20462
20650
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // TODO: Remove String()
@@ -20499,6 +20687,7 @@
20499
20687
  defaultWidth: 'full'
20500
20688
  })
20501
20689
  };
20690
+ var formatLong$1 = formatLong;
20502
20691
 
20503
20692
  var formatRelativeLocale = {
20504
20693
  lastWeek: "'last' eeee 'at' p",
@@ -20513,6 +20702,8 @@
20513
20702
  return formatRelativeLocale[token];
20514
20703
  };
20515
20704
 
20705
+ var formatRelative$1 = formatRelative;
20706
+
20516
20707
  function buildLocalizeFn(args) {
20517
20708
  return function (dirtyIndex, dirtyOptions) {
20518
20709
  var options = dirtyOptions || {};
@@ -20531,7 +20722,7 @@
20531
20722
  valuesArray = args.values[_width] || args.values[_defaultWidth];
20532
20723
  }
20533
20724
 
20534
- var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challange you to try to remove it!
20725
+ var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!
20535
20726
 
20536
20727
  return valuesArray[index];
20537
20728
  };
@@ -20681,6 +20872,7 @@
20681
20872
  defaultFormattingWidth: 'wide'
20682
20873
  })
20683
20874
  };
20875
+ var localize$1 = localize;
20684
20876
 
20685
20877
  function buildMatchFn(args) {
20686
20878
  return function (string) {
@@ -20844,6 +21036,7 @@
20844
21036
  defaultParseWidth: 'any'
20845
21037
  })
20846
21038
  };
21039
+ var match$1 = match;
20847
21040
 
20848
21041
  /**
20849
21042
  * @type {Locale}
@@ -20857,11 +21050,11 @@
20857
21050
 
20858
21051
  var locale = {
20859
21052
  code: 'en-US',
20860
- formatDistance: formatDistance,
20861
- formatLong: formatLong,
20862
- formatRelative: formatRelative,
20863
- localize: localize,
20864
- match: match,
21053
+ formatDistance: formatDistance$1,
21054
+ formatLong: formatLong$1,
21055
+ formatRelative: formatRelative$1,
21056
+ localize: localize$1,
21057
+ match: match$1,
20865
21058
  options: {
20866
21059
  weekStartsOn: 0
20867
21060
  /* Sunday */
@@ -20869,6 +21062,7 @@
20869
21062
  firstWeekContainsDate: 1
20870
21063
  }
20871
21064
  };
21065
+ var defaultLocale = locale;
20872
21066
 
20873
21067
  /**
20874
21068
  * @name subMilliseconds
@@ -20899,100 +21093,6 @@
20899
21093
  return addMilliseconds(dirtyDate, -amount);
20900
21094
  }
20901
21095
 
20902
- function addLeadingZeros(number, targetLength) {
20903
- var sign = number < 0 ? '-' : '';
20904
- var output = Math.abs(number).toString();
20905
-
20906
- while (output.length < targetLength) {
20907
- output = '0' + output;
20908
- }
20909
-
20910
- return sign + output;
20911
- }
20912
-
20913
- /*
20914
- * | | Unit | | Unit |
20915
- * |-----|--------------------------------|-----|--------------------------------|
20916
- * | a | AM, PM | A* | |
20917
- * | d | Day of month | D | |
20918
- * | h | Hour [1-12] | H | Hour [0-23] |
20919
- * | m | Minute | M | Month |
20920
- * | s | Second | S | Fraction of second |
20921
- * | y | Year (abs) | Y | |
20922
- *
20923
- * Letters marked by * are not implemented but reserved by Unicode standard.
20924
- */
20925
-
20926
- var formatters$1 = {
20927
- // Year
20928
- y: function y(date, token) {
20929
- // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens
20930
- // | Year | y | yy | yyy | yyyy | yyyyy |
20931
- // |----------|-------|----|-------|-------|-------|
20932
- // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |
20933
- // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |
20934
- // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |
20935
- // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |
20936
- // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
20937
- var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)
20938
-
20939
- var year = signedYear > 0 ? signedYear : 1 - signedYear;
20940
- return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);
20941
- },
20942
- // Month
20943
- M: function M(date, token) {
20944
- var month = date.getUTCMonth();
20945
- return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);
20946
- },
20947
- // Day of the month
20948
- d: function d(date, token) {
20949
- return addLeadingZeros(date.getUTCDate(), token.length);
20950
- },
20951
- // AM or PM
20952
- a: function a(date, token) {
20953
- var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';
20954
-
20955
- switch (token) {
20956
- case 'a':
20957
- case 'aa':
20958
- return dayPeriodEnumValue.toUpperCase();
20959
-
20960
- case 'aaa':
20961
- return dayPeriodEnumValue;
20962
-
20963
- case 'aaaaa':
20964
- return dayPeriodEnumValue[0];
20965
-
20966
- case 'aaaa':
20967
- default:
20968
- return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';
20969
- }
20970
- },
20971
- // Hour [1-12]
20972
- h: function h(date, token) {
20973
- return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);
20974
- },
20975
- // Hour [0-23]
20976
- H: function H(date, token) {
20977
- return addLeadingZeros(date.getUTCHours(), token.length);
20978
- },
20979
- // Minute
20980
- m: function m(date, token) {
20981
- return addLeadingZeros(date.getUTCMinutes(), token.length);
20982
- },
20983
- // Second
20984
- s: function s(date, token) {
20985
- return addLeadingZeros(date.getUTCSeconds(), token.length);
20986
- },
20987
- // Fraction of second
20988
- S: function S(date, token) {
20989
- var numberOfDigits = token.length;
20990
- var milliseconds = date.getUTCMilliseconds();
20991
- var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));
20992
- return addLeadingZeros(fractionalSeconds, token.length);
20993
- }
20994
- };
20995
-
20996
21096
  var MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.
20997
21097
  // See issue: https://github.com/date-fns/date-fns/issues/376
20998
21098
 
@@ -21095,7 +21195,7 @@
21095
21195
 
21096
21196
  function getUTCWeekYear(dirtyDate, dirtyOptions) {
21097
21197
  requiredArgs(1, arguments);
21098
- var date = toDate(dirtyDate, dirtyOptions);
21198
+ var date = toDate(dirtyDate);
21099
21199
  var year = date.getUTCFullYear();
21100
21200
  var options = dirtyOptions || {};
21101
21201
  var locale = options.locale;
@@ -21155,6 +21255,101 @@
21155
21255
  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;
21156
21256
  }
21157
21257
 
21258
+ function addLeadingZeros(number, targetLength) {
21259
+ var sign = number < 0 ? '-' : '';
21260
+ var output = Math.abs(number).toString();
21261
+
21262
+ while (output.length < targetLength) {
21263
+ output = '0' + output;
21264
+ }
21265
+
21266
+ return sign + output;
21267
+ }
21268
+
21269
+ /*
21270
+ * | | Unit | | Unit |
21271
+ * |-----|--------------------------------|-----|--------------------------------|
21272
+ * | a | AM, PM | A* | |
21273
+ * | d | Day of month | D | |
21274
+ * | h | Hour [1-12] | H | Hour [0-23] |
21275
+ * | m | Minute | M | Month |
21276
+ * | s | Second | S | Fraction of second |
21277
+ * | y | Year (abs) | Y | |
21278
+ *
21279
+ * Letters marked by * are not implemented but reserved by Unicode standard.
21280
+ */
21281
+
21282
+ var formatters$2 = {
21283
+ // Year
21284
+ y: function y(date, token) {
21285
+ // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens
21286
+ // | Year | y | yy | yyy | yyyy | yyyyy |
21287
+ // |----------|-------|----|-------|-------|-------|
21288
+ // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |
21289
+ // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |
21290
+ // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |
21291
+ // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |
21292
+ // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
21293
+ var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)
21294
+
21295
+ var year = signedYear > 0 ? signedYear : 1 - signedYear;
21296
+ return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);
21297
+ },
21298
+ // Month
21299
+ M: function M(date, token) {
21300
+ var month = date.getUTCMonth();
21301
+ return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);
21302
+ },
21303
+ // Day of the month
21304
+ d: function d(date, token) {
21305
+ return addLeadingZeros(date.getUTCDate(), token.length);
21306
+ },
21307
+ // AM or PM
21308
+ a: function a(date, token) {
21309
+ var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';
21310
+
21311
+ switch (token) {
21312
+ case 'a':
21313
+ case 'aa':
21314
+ return dayPeriodEnumValue.toUpperCase();
21315
+
21316
+ case 'aaa':
21317
+ return dayPeriodEnumValue;
21318
+
21319
+ case 'aaaaa':
21320
+ return dayPeriodEnumValue[0];
21321
+
21322
+ case 'aaaa':
21323
+ default:
21324
+ return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';
21325
+ }
21326
+ },
21327
+ // Hour [1-12]
21328
+ h: function h(date, token) {
21329
+ return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);
21330
+ },
21331
+ // Hour [0-23]
21332
+ H: function H(date, token) {
21333
+ return addLeadingZeros(date.getUTCHours(), token.length);
21334
+ },
21335
+ // Minute
21336
+ m: function m(date, token) {
21337
+ return addLeadingZeros(date.getUTCMinutes(), token.length);
21338
+ },
21339
+ // Second
21340
+ s: function s(date, token) {
21341
+ return addLeadingZeros(date.getUTCSeconds(), token.length);
21342
+ },
21343
+ // Fraction of second
21344
+ S: function S(date, token) {
21345
+ var numberOfDigits = token.length;
21346
+ var milliseconds = date.getUTCMilliseconds();
21347
+ var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));
21348
+ return addLeadingZeros(fractionalSeconds, token.length);
21349
+ }
21350
+ };
21351
+ var formatters$3 = formatters$2;
21352
+
21158
21353
  var dayPeriodEnum = {
21159
21354
  am: 'am',
21160
21355
  pm: 'pm',
@@ -21251,7 +21446,7 @@
21251
21446
  });
21252
21447
  }
21253
21448
 
21254
- return formatters$1.y(date, token);
21449
+ return formatters$3.y(date, token);
21255
21450
  },
21256
21451
  // Local week-numbering year
21257
21452
  Y: function Y(date, token, localize, options) {
@@ -21384,7 +21579,7 @@
21384
21579
  switch (token) {
21385
21580
  case 'M':
21386
21581
  case 'MM':
21387
- return formatters$1.M(date, token);
21582
+ return formatters$3.M(date, token);
21388
21583
  // 1st, 2nd, ..., 12th
21389
21584
 
21390
21585
  case 'Mo':
@@ -21489,7 +21684,7 @@
21489
21684
  });
21490
21685
  }
21491
21686
 
21492
- return formatters$1.d(date, token);
21687
+ return formatters$3.d(date, token);
21493
21688
  },
21494
21689
  // Day of year
21495
21690
  D: function D(date, token, localize) {
@@ -21810,7 +22005,7 @@
21810
22005
  });
21811
22006
  }
21812
22007
 
21813
- return formatters$1.h(date, token);
22008
+ return formatters$3.h(date, token);
21814
22009
  },
21815
22010
  // Hour [0-23]
21816
22011
  H: function H(date, token, localize) {
@@ -21820,7 +22015,7 @@
21820
22015
  });
21821
22016
  }
21822
22017
 
21823
- return formatters$1.H(date, token);
22018
+ return formatters$3.H(date, token);
21824
22019
  },
21825
22020
  // Hour [0-11]
21826
22021
  K: function K(date, token, localize) {
@@ -21855,7 +22050,7 @@
21855
22050
  });
21856
22051
  }
21857
22052
 
21858
- return formatters$1.m(date, token);
22053
+ return formatters$3.m(date, token);
21859
22054
  },
21860
22055
  // Second
21861
22056
  s: function s(date, token, localize) {
@@ -21865,11 +22060,11 @@
21865
22060
  });
21866
22061
  }
21867
22062
 
21868
- return formatters$1.s(date, token);
22063
+ return formatters$3.s(date, token);
21869
22064
  },
21870
22065
  // Fraction of second
21871
22066
  S: function S(date, token) {
21872
- return formatters$1.S(date, token);
22067
+ return formatters$3.S(date, token);
21873
22068
  },
21874
22069
  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
21875
22070
  X: function X(date, token, _localize, options) {
@@ -22013,6 +22208,8 @@
22013
22208
  return sign + hours + delimiter + minutes;
22014
22209
  }
22015
22210
 
22211
+ var formatters$1 = formatters;
22212
+
22016
22213
  function dateLongFormatter(pattern, formatLong) {
22017
22214
  switch (pattern) {
22018
22215
  case 'P':
@@ -22064,7 +22261,7 @@
22064
22261
  }
22065
22262
 
22066
22263
  function dateTimeLongFormatter(pattern, formatLong) {
22067
- var matchResult = pattern.match(/(P+)(p+)?/);
22264
+ var matchResult = pattern.match(/(P+)(p+)?/) || [];
22068
22265
  var datePattern = matchResult[1];
22069
22266
  var timePattern = matchResult[2];
22070
22267
 
@@ -22108,6 +22305,7 @@
22108
22305
  p: timeLongFormatter,
22109
22306
  P: dateTimeLongFormatter
22110
22307
  };
22308
+ var longFormatters$1 = longFormatters;
22111
22309
 
22112
22310
  var protectedDayOfYearTokens = ['D', 'DD'];
22113
22311
  var protectedWeekYearTokens = ['YY', 'YYYY'];
@@ -22394,7 +22592,7 @@
22394
22592
  * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.
22395
22593
  * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr
22396
22594
  *
22397
- * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.
22595
+ * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.
22398
22596
  * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr
22399
22597
  *
22400
22598
  * ### v2.0.0 breaking changes:
@@ -22463,8 +22661,8 @@
22463
22661
  requiredArgs(2, arguments);
22464
22662
  var formatStr = String(dirtyFormatStr);
22465
22663
  var options = dirtyOptions || {};
22466
- var locale$1 = options.locale || locale;
22467
- var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;
22664
+ var locale = options.locale || defaultLocale;
22665
+ var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;
22468
22666
  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);
22469
22667
  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
22470
22668
 
@@ -22472,7 +22670,7 @@
22472
22670
  throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
22473
22671
  }
22474
22672
 
22475
- var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;
22673
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;
22476
22674
  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);
22477
22675
  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
22478
22676
 
@@ -22480,11 +22678,11 @@
22480
22678
  throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');
22481
22679
  }
22482
22680
 
22483
- if (!locale$1.localize) {
22681
+ if (!locale.localize) {
22484
22682
  throw new RangeError('locale must contain localize property');
22485
22683
  }
22486
22684
 
22487
- if (!locale$1.formatLong) {
22685
+ if (!locale.formatLong) {
22488
22686
  throw new RangeError('locale must contain formatLong property');
22489
22687
  }
22490
22688
 
@@ -22502,15 +22700,15 @@
22502
22700
  var formatterOptions = {
22503
22701
  firstWeekContainsDate: firstWeekContainsDate,
22504
22702
  weekStartsOn: weekStartsOn,
22505
- locale: locale$1,
22703
+ locale: locale,
22506
22704
  _originalDate: originalDate
22507
22705
  };
22508
22706
  var result = formatStr.match(longFormattingTokensRegExp$1).map(function (substring) {
22509
22707
  var firstCharacter = substring[0];
22510
22708
 
22511
22709
  if (firstCharacter === 'p' || firstCharacter === 'P') {
22512
- var longFormatter = longFormatters[firstCharacter];
22513
- return longFormatter(substring, locale$1.formatLong, formatterOptions);
22710
+ var longFormatter = longFormatters$1[firstCharacter];
22711
+ return longFormatter(substring, locale.formatLong, formatterOptions);
22514
22712
  }
22515
22713
 
22516
22714
  return substring;
@@ -22526,7 +22724,7 @@
22526
22724
  return cleanEscapedString$1(substring);
22527
22725
  }
22528
22726
 
22529
- var formatter = formatters[firstCharacter];
22727
+ var formatter = formatters$1[firstCharacter];
22530
22728
 
22531
22729
  if (formatter) {
22532
22730
  if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {
@@ -22537,7 +22735,7 @@
22537
22735
  throwProtectedError(substring, dirtyFormatStr, dirtyDate);
22538
22736
  }
22539
22737
 
22540
- return formatter(utcDate, substring, locale$1.localize, formatterOptions);
22738
+ return formatter(utcDate, substring, locale.localize, formatterOptions);
22541
22739
  }
22542
22740
 
22543
22741
  if (firstCharacter.match(unescapedLatinCharacterRegExp$1)) {
@@ -22635,8 +22833,8 @@
22635
22833
  return date;
22636
22834
  }
22637
22835
 
22638
- var MILLISECONDS_IN_HOUR$1 = 3600000;
22639
- var MILLISECONDS_IN_MINUTE$1 = 60000;
22836
+ var MILLISECONDS_IN_HOUR = 3600000;
22837
+ var MILLISECONDS_IN_MINUTE = 60000;
22640
22838
  var MILLISECONDS_IN_SECOND = 1000;
22641
22839
  var numericPatterns = {
22642
22840
  month: /^(1[0-2]|0?\d)/,
@@ -22719,7 +22917,7 @@
22719
22917
  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;
22720
22918
  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;
22721
22919
  return {
22722
- value: sign * (hours * MILLISECONDS_IN_HOUR$1 + minutes * MILLISECONDS_IN_MINUTE$1 + seconds * MILLISECONDS_IN_SECOND),
22920
+ value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),
22723
22921
  rest: string.slice(matchResult[0].length)
22724
22922
  };
22725
22923
  }
@@ -23766,7 +23964,7 @@
23766
23964
  date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);
23767
23965
  return date;
23768
23966
  },
23769
- incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']
23967
+ incompatibleTokens: ['b', 'B', 'H', 'k', 't', 'T']
23770
23968
  },
23771
23969
  // AM, PM, midnight
23772
23970
  b: {
@@ -23808,7 +24006,7 @@
23808
24006
  date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);
23809
24007
  return date;
23810
24008
  },
23811
- incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']
24009
+ incompatibleTokens: ['a', 'B', 'H', 'k', 't', 'T']
23812
24010
  },
23813
24011
  // in the morning, in the afternoon, in the evening, at night
23814
24012
  B: {
@@ -23944,7 +24142,7 @@
23944
24142
 
23945
24143
  return date;
23946
24144
  },
23947
- incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']
24145
+ incompatibleTokens: ['h', 'H', 'k', 't', 'T']
23948
24146
  },
23949
24147
  // Hour [1-24]
23950
24148
  k: {
@@ -24130,6 +24328,7 @@
24130
24328
  incompatibleTokens: '*'
24131
24329
  }
24132
24330
  };
24331
+ var parsers$1 = parsers;
24133
24332
 
24134
24333
  var TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:
24135
24334
  // - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token
@@ -24301,7 +24500,7 @@
24301
24500
  * | | | tt | ... | 2 |
24302
24501
  * | Fraction of second | 30 | S | 0, 1, ..., 9 | |
24303
24502
  * | | | SS | 00, 01, ..., 99 | |
24304
- * | | | SSS | 000, 0001, ..., 999 | |
24503
+ * | | | SSS | 000, 001, ..., 999 | |
24305
24504
  * | | | SSSS | ... | 2 |
24306
24505
  * | Milliseconds timestamp | 20 | T | 512969520900 | |
24307
24506
  * | | | TT | ... | 2 |
@@ -24475,13 +24674,13 @@
24475
24674
  var dateString = String(dirtyDateString);
24476
24675
  var formatString = String(dirtyFormatString);
24477
24676
  var options = dirtyOptions || {};
24478
- var locale$1 = options.locale || locale;
24677
+ var locale = options.locale || defaultLocale;
24479
24678
 
24480
- if (!locale$1.match) {
24679
+ if (!locale.match) {
24481
24680
  throw new RangeError('locale must contain match property');
24482
24681
  }
24483
24682
 
24484
- var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;
24683
+ var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;
24485
24684
  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);
24486
24685
  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
24487
24686
 
@@ -24489,7 +24688,7 @@
24489
24688
  throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
24490
24689
  }
24491
24690
 
24492
- var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;
24691
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;
24493
24692
  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);
24494
24693
  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
24495
24694
 
@@ -24508,7 +24707,7 @@
24508
24707
  var subFnOptions = {
24509
24708
  firstWeekContainsDate: firstWeekContainsDate,
24510
24709
  weekStartsOn: weekStartsOn,
24511
- locale: locale$1
24710
+ locale: locale
24512
24711
  }; // If timezone isn't specified, it will be set to the system timezone
24513
24712
 
24514
24713
  var setters = [{
@@ -24522,8 +24721,8 @@
24522
24721
  var firstCharacter = substring[0];
24523
24722
 
24524
24723
  if (firstCharacter === 'p' || firstCharacter === 'P') {
24525
- var longFormatter = longFormatters[firstCharacter];
24526
- return longFormatter(substring, locale$1.formatLong, subFnOptions);
24724
+ var longFormatter = longFormatters$1[firstCharacter];
24725
+ return longFormatter(substring, locale.formatLong, subFnOptions);
24527
24726
  }
24528
24727
 
24529
24728
  return substring;
@@ -24542,7 +24741,7 @@
24542
24741
  }
24543
24742
 
24544
24743
  var firstCharacter = token[0];
24545
- var parser = parsers[firstCharacter];
24744
+ var parser = parsers$1[firstCharacter];
24546
24745
 
24547
24746
  if (parser) {
24548
24747
  var incompatibleTokens = parser.incompatibleTokens;
@@ -24570,7 +24769,7 @@
24570
24769
  token: firstCharacter,
24571
24770
  fullToken: token
24572
24771
  });
24573
- var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);
24772
+ var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);
24574
24773
 
24575
24774
  if (!parseResult) {
24576
24775
  return new Date(NaN);
@@ -24733,17 +24932,6 @@
24733
24932
  return date;
24734
24933
  }
24735
24934
 
24736
- var MILLISECONDS_IN_HOUR = 3600000;
24737
- var MILLISECONDS_IN_MINUTE = 60000;
24738
- var DEFAULT_ADDITIONAL_DIGITS = 2;
24739
- var patterns = {
24740
- dateTimeDelimiter: /[T ]/,
24741
- timeZoneDelimiter: /[Z ]/i,
24742
- timezone: /([Z+-].*)$/
24743
- };
24744
- var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/;
24745
- var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/;
24746
- var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/;
24747
24935
  /**
24748
24936
  * @name parseISO
24749
24937
  * @category Common Helpers
@@ -24792,20 +24980,20 @@
24792
24980
  *
24793
24981
  * @example
24794
24982
  * // Convert string '2014-02-11T11:30:30' to date:
24795
- * var result = parseISO('2014-02-11T11:30:30')
24983
+ * const result = parseISO('2014-02-11T11:30:30')
24796
24984
  * //=> Tue Feb 11 2014 11:30:30
24797
24985
  *
24798
24986
  * @example
24799
24987
  * // Convert string '+02014101' to date,
24800
24988
  * // if the additional number of digits in the extended year format is 1:
24801
- * var result = parseISO('+02014101', { additionalDigits: 1 })
24989
+ * const result = parseISO('+02014101', { additionalDigits: 1 })
24802
24990
  * //=> Fri Apr 11 2014 00:00:00
24803
24991
  */
24804
24992
 
24805
24993
  function parseISO(argument, dirtyOptions) {
24806
24994
  requiredArgs(1, arguments);
24807
24995
  var options = dirtyOptions || {};
24808
- var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);
24996
+ var additionalDigits = options.additionalDigits == null ? 2 : toInteger(options.additionalDigits);
24809
24997
 
24810
24998
  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {
24811
24999
  throw new RangeError('additionalDigits must be 0, 1 or 2');
@@ -24823,7 +25011,7 @@
24823
25011
  date = parseDate(parseYearResult.restDateString, parseYearResult.year);
24824
25012
  }
24825
25013
 
24826
- if (isNaN(date) || !date) {
25014
+ if (!date || isNaN(date.getTime())) {
24827
25015
  return new Date(NaN);
24828
25016
  }
24829
25017
 
@@ -24834,7 +25022,7 @@
24834
25022
  if (dateStrings.time) {
24835
25023
  time = parseTime(dateStrings.time);
24836
25024
 
24837
- if (isNaN(time) || time === null) {
25025
+ if (isNaN(time)) {
24838
25026
  return new Date(NaN);
24839
25027
  }
24840
25028
  }
@@ -24860,6 +25048,14 @@
24860
25048
 
24861
25049
  return new Date(timestamp + time + offset);
24862
25050
  }
25051
+ var patterns = {
25052
+ dateTimeDelimiter: /[T ]/,
25053
+ timeZoneDelimiter: /[Z ]/i,
25054
+ timezone: /([Z+-].*)$/
25055
+ };
25056
+ var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/;
25057
+ var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/;
25058
+ var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/;
24863
25059
 
24864
25060
  function splitDateString(dateString) {
24865
25061
  var dateStrings = {};
@@ -24872,7 +25068,6 @@
24872
25068
  }
24873
25069
 
24874
25070
  if (/:/.test(array[0])) {
24875
- dateStrings.date = null;
24876
25071
  timeString = array[0];
24877
25072
  } else {
24878
25073
  dateStrings.date = array[0];
@@ -24903,22 +25098,24 @@
24903
25098
  var captures = dateString.match(regex); // Invalid ISO-formatted year
24904
25099
 
24905
25100
  if (!captures) return {
24906
- year: null
25101
+ year: NaN,
25102
+ restDateString: ''
24907
25103
  };
24908
- var year = captures[1] && parseInt(captures[1]);
24909
- var century = captures[2] && parseInt(captures[2]);
25104
+ var year = captures[1] ? parseInt(captures[1]) : null;
25105
+ var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both
25106
+
24910
25107
  return {
24911
- year: century == null ? year : century * 100,
25108
+ year: century === null ? year : century * 100,
24912
25109
  restDateString: dateString.slice((captures[1] || captures[2]).length)
24913
25110
  };
24914
25111
  }
24915
25112
 
24916
25113
  function parseDate(dateString, year) {
24917
25114
  // Invalid ISO-formatted year
24918
- if (year === null) return null;
25115
+ if (year === null) return new Date(NaN);
24919
25116
  var captures = dateString.match(dateRegex); // Invalid ISO-formatted string
24920
25117
 
24921
- if (!captures) return null;
25118
+ if (!captures) return new Date(NaN);
24922
25119
  var isWeekDate = !!captures[4];
24923
25120
  var dayOfYear = parseDateUnit(captures[1]);
24924
25121
  var month = parseDateUnit(captures[2]) - 1;
@@ -24950,7 +25147,7 @@
24950
25147
 
24951
25148
  function parseTime(timeString) {
24952
25149
  var captures = timeString.match(timeRegex);
24953
- if (!captures) return null; // Invalid ISO-formatted time
25150
+ if (!captures) return NaN; // Invalid ISO-formatted time
24954
25151
 
24955
25152
  var hours = parseTimeUnit(captures[1]);
24956
25153
  var minutes = parseTimeUnit(captures[2]);
@@ -24960,7 +25157,7 @@
24960
25157
  return NaN;
24961
25158
  }
24962
25159
 
24963
- return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;
25160
+ return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;
24964
25161
  }
24965
25162
 
24966
25163
  function parseTimeUnit(value) {
@@ -24979,7 +25176,7 @@
24979
25176
  return NaN;
24980
25177
  }
24981
25178
 
24982
- return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);
25179
+ return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);
24983
25180
  }
24984
25181
 
24985
25182
  function dayOfISOWeekYear(isoWeekYear, week, day) {
@@ -24996,7 +25193,7 @@
24996
25193
  var daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
24997
25194
 
24998
25195
  function isLeapYearIndex(year) {
24999
- return year % 400 === 0 || year % 4 === 0 && year % 100;
25196
+ return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
25000
25197
  }
25001
25198
 
25002
25199
  function validateDate(year, month, date) {
@@ -25199,4 +25396,4 @@
25199
25396
 
25200
25397
  return Chart;
25201
25398
 
25202
- })));
25399
+ }));