chartkick 4.1.3 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+ }));