vega-time 2.0.4 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-2018, University of Washington Interactive Data Lab
1
+ Copyright (c) 2015-2023, University of Washington Interactive Data Lab
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
package/README.md CHANGED
@@ -69,7 +69,7 @@ Determine a temporal binning scheme, for example to create a histogram. Based on
69
69
  The supported options properties are:
70
70
 
71
71
  - _extent_: (required) A two-element (`[min, max]`) array indicating the date range over which the bin values are defined.
72
- - _maxbins_: The maximum number of allowable bins (default `40`).
72
+ - _maxbins_: The maximum number of allowable bins (default `40`). There will often be fewer bins as the domain gets sliced at "nicely" rounded values.
73
73
 
74
74
  ### Local Time Utilities
75
75
 
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vega-util'), require('d3-time'), require('d3-array')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'vega-util', 'd3-time', 'd3-array'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.vega = {}, global.vega, global.d3, global.d3));
5
- }(this, (function (exports, vegaUtil, d3Time, d3Array) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vega-util')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'vega-util'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.vega = {}, global.vega));
5
+ })(this, (function (exports, vegaUtil) { 'use strict';
6
6
 
7
7
  const YEAR = 'year';
8
8
  const QUARTER = 'quarter';
@@ -19,8 +19,9 @@
19
19
  const UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});
20
20
  function timeUnits(units) {
21
21
  const u = vegaUtil.array(units).slice(),
22
- m = {}; // check validity
22
+ m = {};
23
23
 
24
+ // check validity
24
25
  if (!u.length) vegaUtil.error('Missing time unit.');
25
26
  u.forEach(unit => {
26
27
  if (vegaUtil.hasOwnProperty(UNITS, unit)) {
@@ -30,12 +31,11 @@
30
31
  }
31
32
  });
32
33
  const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);
33
-
34
34
  if (numTypes > 1) {
35
35
  vegaUtil.error(`Incompatible time units: ${units}`);
36
- } // ensure proper sort order
37
-
36
+ }
38
37
 
38
+ // ensure proper sort order
39
39
  u.sort((a, b) => UNITS[a] - UNITS[b]);
40
40
  return u;
41
41
  }
@@ -57,17 +57,15 @@
57
57
  };
58
58
  function timeUnitSpecifier(units, specifiers) {
59
59
  const s = vegaUtil.extend({}, defaultSpecifiers, specifiers),
60
- u = timeUnits(units),
61
- n = u.length;
60
+ u = timeUnits(units),
61
+ n = u.length;
62
62
  let fmt = '',
63
- start = 0,
64
- end,
65
- key;
66
-
63
+ start = 0,
64
+ end,
65
+ key;
67
66
  for (start = 0; start < n;) {
68
67
  for (end = u.length; end > start; --end) {
69
68
  key = u.slice(start, end).join('-');
70
-
71
69
  if (s[key] != null) {
72
70
  fmt += s[key];
73
71
  start = end;
@@ -75,12 +73,385 @@
75
73
  }
76
74
  }
77
75
  }
78
-
79
76
  return fmt.trim();
80
77
  }
81
78
 
82
- const t0 = new Date();
79
+ const t0$1 = new Date(),
80
+ t1 = new Date();
81
+ function timeInterval$1(floori, offseti, count, field) {
82
+ function interval(date) {
83
+ return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;
84
+ }
85
+ interval.floor = date => {
86
+ return floori(date = new Date(+date)), date;
87
+ };
88
+ interval.ceil = date => {
89
+ return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
90
+ };
91
+ interval.round = date => {
92
+ const d0 = interval(date),
93
+ d1 = interval.ceil(date);
94
+ return date - d0 < d1 - date ? d0 : d1;
95
+ };
96
+ interval.offset = (date, step) => {
97
+ return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
98
+ };
99
+ interval.range = (start, stop, step) => {
100
+ const range = [];
101
+ start = interval.ceil(start);
102
+ step = step == null ? 1 : Math.floor(step);
103
+ if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
104
+ let previous;
105
+ do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);
106
+ return range;
107
+ };
108
+ interval.filter = test => {
109
+ return timeInterval$1(date => {
110
+ if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
111
+ }, (date, step) => {
112
+ if (date >= date) {
113
+ if (step < 0) while (++step <= 0) {
114
+ while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
115
+ } else while (--step >= 0) {
116
+ while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
117
+ }
118
+ }
119
+ });
120
+ };
83
121
 
122
+ if (count) {
123
+ interval.count = (start, end) => {
124
+ t0$1.setTime(+start), t1.setTime(+end);
125
+ floori(t0$1), floori(t1);
126
+ return Math.floor(count(t0$1, t1));
127
+ };
128
+ interval.every = step => {
129
+ step = Math.floor(step);
130
+ return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? d => field(d) % step === 0 : d => interval.count(0, d) % step === 0);
131
+ };
132
+ }
133
+ return interval;
134
+ }
135
+
136
+ const millisecond = timeInterval$1(() => {
137
+ // noop
138
+ }, (date, step) => {
139
+ date.setTime(+date + step);
140
+ }, (start, end) => {
141
+ return end - start;
142
+ });
143
+
144
+ // An optimized implementation for this simple case.
145
+ millisecond.every = k => {
146
+ k = Math.floor(k);
147
+ if (!isFinite(k) || !(k > 0)) return null;
148
+ if (!(k > 1)) return millisecond;
149
+ return timeInterval$1(date => {
150
+ date.setTime(Math.floor(date / k) * k);
151
+ }, (date, step) => {
152
+ date.setTime(+date + step * k);
153
+ }, (start, end) => {
154
+ return (end - start) / k;
155
+ });
156
+ };
157
+ millisecond.range;
158
+
159
+ const durationSecond$1 = 1000;
160
+ const durationMinute$1 = durationSecond$1 * 60;
161
+ const durationHour$1 = durationMinute$1 * 60;
162
+ const durationDay$1 = durationHour$1 * 24;
163
+ const durationWeek$1 = durationDay$1 * 7;
164
+
165
+ const second = timeInterval$1(date => {
166
+ date.setTime(date - date.getMilliseconds());
167
+ }, (date, step) => {
168
+ date.setTime(+date + step * durationSecond$1);
169
+ }, (start, end) => {
170
+ return (end - start) / durationSecond$1;
171
+ }, date => {
172
+ return date.getUTCSeconds();
173
+ });
174
+ second.range;
175
+
176
+ const timeMinute = timeInterval$1(date => {
177
+ date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond$1);
178
+ }, (date, step) => {
179
+ date.setTime(+date + step * durationMinute$1);
180
+ }, (start, end) => {
181
+ return (end - start) / durationMinute$1;
182
+ }, date => {
183
+ return date.getMinutes();
184
+ });
185
+ timeMinute.range;
186
+ const utcMinute = timeInterval$1(date => {
187
+ date.setUTCSeconds(0, 0);
188
+ }, (date, step) => {
189
+ date.setTime(+date + step * durationMinute$1);
190
+ }, (start, end) => {
191
+ return (end - start) / durationMinute$1;
192
+ }, date => {
193
+ return date.getUTCMinutes();
194
+ });
195
+ utcMinute.range;
196
+
197
+ const timeHour = timeInterval$1(date => {
198
+ date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond$1 - date.getMinutes() * durationMinute$1);
199
+ }, (date, step) => {
200
+ date.setTime(+date + step * durationHour$1);
201
+ }, (start, end) => {
202
+ return (end - start) / durationHour$1;
203
+ }, date => {
204
+ return date.getHours();
205
+ });
206
+ timeHour.range;
207
+ const utcHour = timeInterval$1(date => {
208
+ date.setUTCMinutes(0, 0, 0);
209
+ }, (date, step) => {
210
+ date.setTime(+date + step * durationHour$1);
211
+ }, (start, end) => {
212
+ return (end - start) / durationHour$1;
213
+ }, date => {
214
+ return date.getUTCHours();
215
+ });
216
+ utcHour.range;
217
+
218
+ const timeDay = timeInterval$1(date => date.setHours(0, 0, 0, 0), (date, step) => date.setDate(date.getDate() + step), (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationDay$1, date => date.getDate() - 1);
219
+ timeDay.range;
220
+ const utcDay = timeInterval$1(date => {
221
+ date.setUTCHours(0, 0, 0, 0);
222
+ }, (date, step) => {
223
+ date.setUTCDate(date.getUTCDate() + step);
224
+ }, (start, end) => {
225
+ return (end - start) / durationDay$1;
226
+ }, date => {
227
+ return date.getUTCDate() - 1;
228
+ });
229
+ utcDay.range;
230
+ const unixDay = timeInterval$1(date => {
231
+ date.setUTCHours(0, 0, 0, 0);
232
+ }, (date, step) => {
233
+ date.setUTCDate(date.getUTCDate() + step);
234
+ }, (start, end) => {
235
+ return (end - start) / durationDay$1;
236
+ }, date => {
237
+ return Math.floor(date / durationDay$1);
238
+ });
239
+ unixDay.range;
240
+
241
+ function timeWeekday(i) {
242
+ return timeInterval$1(date => {
243
+ date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
244
+ date.setHours(0, 0, 0, 0);
245
+ }, (date, step) => {
246
+ date.setDate(date.getDate() + step * 7);
247
+ }, (start, end) => {
248
+ return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationWeek$1;
249
+ });
250
+ }
251
+ const timeSunday = timeWeekday(0);
252
+ const timeMonday = timeWeekday(1);
253
+ const timeTuesday = timeWeekday(2);
254
+ const timeWednesday = timeWeekday(3);
255
+ const timeThursday = timeWeekday(4);
256
+ const timeFriday = timeWeekday(5);
257
+ const timeSaturday = timeWeekday(6);
258
+ timeSunday.range;
259
+ timeMonday.range;
260
+ timeTuesday.range;
261
+ timeWednesday.range;
262
+ timeThursday.range;
263
+ timeFriday.range;
264
+ timeSaturday.range;
265
+ function utcWeekday(i) {
266
+ return timeInterval$1(date => {
267
+ date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
268
+ date.setUTCHours(0, 0, 0, 0);
269
+ }, (date, step) => {
270
+ date.setUTCDate(date.getUTCDate() + step * 7);
271
+ }, (start, end) => {
272
+ return (end - start) / durationWeek$1;
273
+ });
274
+ }
275
+ const utcSunday = utcWeekday(0);
276
+ const utcMonday = utcWeekday(1);
277
+ const utcTuesday = utcWeekday(2);
278
+ const utcWednesday = utcWeekday(3);
279
+ const utcThursday = utcWeekday(4);
280
+ const utcFriday = utcWeekday(5);
281
+ const utcSaturday = utcWeekday(6);
282
+ utcSunday.range;
283
+ utcMonday.range;
284
+ utcTuesday.range;
285
+ utcWednesday.range;
286
+ utcThursday.range;
287
+ utcFriday.range;
288
+ utcSaturday.range;
289
+
290
+ const timeMonth = timeInterval$1(date => {
291
+ date.setDate(1);
292
+ date.setHours(0, 0, 0, 0);
293
+ }, (date, step) => {
294
+ date.setMonth(date.getMonth() + step);
295
+ }, (start, end) => {
296
+ return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
297
+ }, date => {
298
+ return date.getMonth();
299
+ });
300
+ timeMonth.range;
301
+ const utcMonth = timeInterval$1(date => {
302
+ date.setUTCDate(1);
303
+ date.setUTCHours(0, 0, 0, 0);
304
+ }, (date, step) => {
305
+ date.setUTCMonth(date.getUTCMonth() + step);
306
+ }, (start, end) => {
307
+ return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
308
+ }, date => {
309
+ return date.getUTCMonth();
310
+ });
311
+ utcMonth.range;
312
+
313
+ const timeYear = timeInterval$1(date => {
314
+ date.setMonth(0, 1);
315
+ date.setHours(0, 0, 0, 0);
316
+ }, (date, step) => {
317
+ date.setFullYear(date.getFullYear() + step);
318
+ }, (start, end) => {
319
+ return end.getFullYear() - start.getFullYear();
320
+ }, date => {
321
+ return date.getFullYear();
322
+ });
323
+
324
+ // An optimized implementation for this simple case.
325
+ timeYear.every = k => {
326
+ return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval$1(date => {
327
+ date.setFullYear(Math.floor(date.getFullYear() / k) * k);
328
+ date.setMonth(0, 1);
329
+ date.setHours(0, 0, 0, 0);
330
+ }, (date, step) => {
331
+ date.setFullYear(date.getFullYear() + step * k);
332
+ });
333
+ };
334
+ timeYear.range;
335
+ const utcYear = timeInterval$1(date => {
336
+ date.setUTCMonth(0, 1);
337
+ date.setUTCHours(0, 0, 0, 0);
338
+ }, (date, step) => {
339
+ date.setUTCFullYear(date.getUTCFullYear() + step);
340
+ }, (start, end) => {
341
+ return end.getUTCFullYear() - start.getUTCFullYear();
342
+ }, date => {
343
+ return date.getUTCFullYear();
344
+ });
345
+
346
+ // An optimized implementation for this simple case.
347
+ utcYear.every = k => {
348
+ return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval$1(date => {
349
+ date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
350
+ date.setUTCMonth(0, 1);
351
+ date.setUTCHours(0, 0, 0, 0);
352
+ }, (date, step) => {
353
+ date.setUTCFullYear(date.getUTCFullYear() + step * k);
354
+ });
355
+ };
356
+ utcYear.range;
357
+
358
+ function ascending(a, b) {
359
+ return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
360
+ }
361
+
362
+ function descending(a, b) {
363
+ return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
364
+ }
365
+
366
+ function bisector(f) {
367
+ let compare1, compare2, delta;
368
+
369
+ // If an accessor is specified, promote it to a comparator. In this case we
370
+ // can test whether the search value is (self-) comparable. We can’t do this
371
+ // for a comparator (except for specific, known comparators) because we can’t
372
+ // tell if the comparator is symmetric, and an asymmetric comparator can’t be
373
+ // used to test whether a single value is comparable.
374
+ if (f.length !== 2) {
375
+ compare1 = ascending;
376
+ compare2 = (d, x) => ascending(f(d), x);
377
+ delta = (d, x) => f(d) - x;
378
+ } else {
379
+ compare1 = f === ascending || f === descending ? f : zero;
380
+ compare2 = f;
381
+ delta = f;
382
+ }
383
+ function left(a, x, lo = 0, hi = a.length) {
384
+ if (lo < hi) {
385
+ if (compare1(x, x) !== 0) return hi;
386
+ do {
387
+ const mid = lo + hi >>> 1;
388
+ if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;
389
+ } while (lo < hi);
390
+ }
391
+ return lo;
392
+ }
393
+ function right(a, x, lo = 0, hi = a.length) {
394
+ if (lo < hi) {
395
+ if (compare1(x, x) !== 0) return hi;
396
+ do {
397
+ const mid = lo + hi >>> 1;
398
+ if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;
399
+ } while (lo < hi);
400
+ }
401
+ return lo;
402
+ }
403
+ function center(a, x, lo = 0, hi = a.length) {
404
+ const i = left(a, x, lo, hi - 1);
405
+ return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;
406
+ }
407
+ return {
408
+ left,
409
+ center,
410
+ right
411
+ };
412
+ }
413
+ function zero() {
414
+ return 0;
415
+ }
416
+
417
+ const e10 = Math.sqrt(50),
418
+ e5 = Math.sqrt(10),
419
+ e2 = Math.sqrt(2);
420
+ function tickSpec(start, stop, count) {
421
+ const step = (stop - start) / Math.max(0, count),
422
+ power = Math.floor(Math.log10(step)),
423
+ error = step / Math.pow(10, power),
424
+ factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;
425
+ let i1, i2, inc;
426
+ if (power < 0) {
427
+ inc = Math.pow(10, -power) / factor;
428
+ i1 = Math.round(start * inc);
429
+ i2 = Math.round(stop * inc);
430
+ if (i1 / inc < start) ++i1;
431
+ if (i2 / inc > stop) --i2;
432
+ inc = -inc;
433
+ } else {
434
+ inc = Math.pow(10, power) * factor;
435
+ i1 = Math.round(start / inc);
436
+ i2 = Math.round(stop / inc);
437
+ if (i1 * inc < start) ++i1;
438
+ if (i2 * inc > stop) --i2;
439
+ }
440
+ if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);
441
+ return [i1, i2, inc];
442
+ }
443
+ function tickIncrement(start, stop, count) {
444
+ stop = +stop, start = +start, count = +count;
445
+ return tickSpec(start, stop, count)[2];
446
+ }
447
+ function tickStep(start, stop, count) {
448
+ stop = +stop, start = +start, count = +count;
449
+ const reverse = stop < start,
450
+ inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);
451
+ return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);
452
+ }
453
+
454
+ const t0 = new Date();
84
455
  function localYear(y) {
85
456
  t0.setFullYear(y);
86
457
  t0.setMonth(0);
@@ -88,7 +459,6 @@
88
459
  t0.setHours(0, 0, 0, 0);
89
460
  return t0;
90
461
  }
91
-
92
462
  function dayofyear(d) {
93
463
  return localDayOfYear(new Date(d));
94
464
  }
@@ -96,10 +466,10 @@
96
466
  return localWeekNum(new Date(d));
97
467
  }
98
468
  function localDayOfYear(d) {
99
- return d3Time.timeDay.count(localYear(d.getFullYear()) - 1, d);
469
+ return timeDay.count(localYear(d.getFullYear()) - 1, d);
100
470
  }
101
471
  function localWeekNum(d) {
102
- return d3Time.timeWeek.count(localYear(d.getFullYear()) - 1, d);
472
+ return timeSunday.count(localYear(d.getFullYear()) - 1, d);
103
473
  }
104
474
  function localFirst(y) {
105
475
  return localYear(y).getDay();
@@ -110,7 +480,6 @@
110
480
  date.setFullYear(y);
111
481
  return date;
112
482
  }
113
-
114
483
  return new Date(y, m, d, H, M, S, L);
115
484
  }
116
485
  function utcdayofyear(d) {
@@ -121,11 +490,11 @@
121
490
  }
122
491
  function utcDayOfYear(d) {
123
492
  const y = Date.UTC(d.getUTCFullYear(), 0, 1);
124
- return d3Time.utcDay.count(y - 1, d);
493
+ return utcDay.count(y - 1, d);
125
494
  }
126
495
  function utcWeekNum(d) {
127
496
  const y = Date.UTC(d.getUTCFullYear(), 0, 1);
128
- return d3Time.utcWeek.count(y - 1, d);
497
+ return utcSunday.count(y - 1, d);
129
498
  }
130
499
  function utcFirst(y) {
131
500
  t0.setTime(Date.UTC(y, 0, 1));
@@ -137,45 +506,43 @@
137
506
  date.setUTCFullYear(d.y);
138
507
  return date;
139
508
  }
140
-
141
509
  return new Date(Date.UTC(y, m, d, H, M, S, L));
142
510
  }
143
511
 
144
512
  function floor(units, step, get, inv, newDate) {
145
513
  const s = step || 1,
146
- b = vegaUtil.peek(units),
147
- _ = (unit, p, key) => {
148
- key = key || unit;
149
- return getUnit(get[key], inv[key], unit === b && s, p);
150
- };
151
-
514
+ b = vegaUtil.peek(units),
515
+ _ = (unit, p, key) => {
516
+ key = key || unit;
517
+ return getUnit(get[key], inv[key], unit === b && s, p);
518
+ };
152
519
  const t = new Date(),
153
- u = vegaUtil.toSet(units),
154
- y = u[YEAR] ? _(YEAR) : vegaUtil.constant(2012),
155
- m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : vegaUtil.zero,
156
- d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : vegaUtil.one,
157
- H = u[HOURS] ? _(HOURS) : vegaUtil.zero,
158
- M = u[MINUTES] ? _(MINUTES) : vegaUtil.zero,
159
- S = u[SECONDS] ? _(SECONDS) : vegaUtil.zero,
160
- L = u[MILLISECONDS] ? _(MILLISECONDS) : vegaUtil.zero;
520
+ u = vegaUtil.toSet(units),
521
+ y = u[YEAR] ? _(YEAR) : vegaUtil.constant(2012),
522
+ m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : vegaUtil.zero,
523
+ d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : vegaUtil.one,
524
+ H = u[HOURS] ? _(HOURS) : vegaUtil.zero,
525
+ M = u[MINUTES] ? _(MINUTES) : vegaUtil.zero,
526
+ S = u[SECONDS] ? _(SECONDS) : vegaUtil.zero,
527
+ L = u[MILLISECONDS] ? _(MILLISECONDS) : vegaUtil.zero;
161
528
  return function (v) {
162
529
  t.setTime(+v);
163
530
  const year = y(t);
164
531
  return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));
165
532
  };
166
533
  }
167
-
168
534
  function getUnit(f, inv, step, phase) {
169
535
  const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);
170
536
  return inv ? (d, y) => inv(u(d, y), y) : u;
171
- } // returns the day of the year based on week number, day of week,
172
- // and the day of the week for the first day of the year
173
-
537
+ }
174
538
 
539
+ // returns the day of the year based on week number, day of week,
540
+ // and the day of the week for the first day of the year
175
541
  function weekday(week, day, firstDay) {
176
542
  return day + week * 7 - (firstDay + 6) % 7;
177
- } // -- LOCAL TIME --
543
+ }
178
544
 
545
+ // -- LOCAL TIME --
179
546
 
180
547
  const localGet = {
181
548
  [YEAR]: d => d.getFullYear(),
@@ -197,7 +564,9 @@
197
564
  };
198
565
  function timeFloor(units, step) {
199
566
  return floor(units, step || 1, localGet, localInv, localDate);
200
- } // -- UTC TIME --
567
+ }
568
+
569
+ // -- UTC TIME --
201
570
 
202
571
  const utcGet = {
203
572
  [YEAR]: d => d.getUTCFullYear(),
@@ -222,30 +591,30 @@
222
591
  }
223
592
 
224
593
  const timeIntervals = {
225
- [YEAR]: d3Time.timeYear,
226
- [QUARTER]: d3Time.timeMonth.every(3),
227
- [MONTH]: d3Time.timeMonth,
228
- [WEEK]: d3Time.timeWeek,
229
- [DATE]: d3Time.timeDay,
230
- [DAY]: d3Time.timeDay,
231
- [DAYOFYEAR]: d3Time.timeDay,
232
- [HOURS]: d3Time.timeHour,
233
- [MINUTES]: d3Time.timeMinute,
234
- [SECONDS]: d3Time.timeSecond,
235
- [MILLISECONDS]: d3Time.timeMillisecond
594
+ [YEAR]: timeYear,
595
+ [QUARTER]: timeMonth.every(3),
596
+ [MONTH]: timeMonth,
597
+ [WEEK]: timeSunday,
598
+ [DATE]: timeDay,
599
+ [DAY]: timeDay,
600
+ [DAYOFYEAR]: timeDay,
601
+ [HOURS]: timeHour,
602
+ [MINUTES]: timeMinute,
603
+ [SECONDS]: second,
604
+ [MILLISECONDS]: millisecond
236
605
  };
237
606
  const utcIntervals = {
238
- [YEAR]: d3Time.utcYear,
239
- [QUARTER]: d3Time.utcMonth.every(3),
240
- [MONTH]: d3Time.utcMonth,
241
- [WEEK]: d3Time.utcWeek,
242
- [DATE]: d3Time.utcDay,
243
- [DAY]: d3Time.utcDay,
244
- [DAYOFYEAR]: d3Time.utcDay,
245
- [HOURS]: d3Time.utcHour,
246
- [MINUTES]: d3Time.utcMinute,
247
- [SECONDS]: d3Time.utcSecond,
248
- [MILLISECONDS]: d3Time.utcMillisecond
607
+ [YEAR]: utcYear,
608
+ [QUARTER]: utcMonth.every(3),
609
+ [MONTH]: utcMonth,
610
+ [WEEK]: utcSunday,
611
+ [DATE]: utcDay,
612
+ [DAY]: utcDay,
613
+ [DAYOFYEAR]: utcDay,
614
+ [HOURS]: utcHour,
615
+ [MINUTES]: utcMinute,
616
+ [SECONDS]: second,
617
+ [MILLISECONDS]: millisecond
249
618
  };
250
619
  function timeInterval(unit) {
251
620
  return timeIntervals[unit];
@@ -253,22 +622,18 @@
253
622
  function utcInterval(unit) {
254
623
  return utcIntervals[unit];
255
624
  }
256
-
257
625
  function offset(ival, date, step) {
258
626
  return ival ? ival.offset(date, step) : undefined;
259
627
  }
260
-
261
628
  function timeOffset(unit, date, step) {
262
629
  return offset(timeInterval(unit), date, step);
263
630
  }
264
631
  function utcOffset(unit, date, step) {
265
632
  return offset(utcInterval(unit), date, step);
266
633
  }
267
-
268
634
  function sequence(ival, start, stop, step) {
269
635
  return ival ? ival.range(start, stop, step) : undefined;
270
636
  }
271
-
272
637
  function timeSequence(unit, start, stop, step) {
273
638
  return sequence(timeInterval(unit), start, stop, step);
274
639
  }
@@ -277,40 +642,38 @@
277
642
  }
278
643
 
279
644
  const durationSecond = 1000,
280
- durationMinute = durationSecond * 60,
281
- durationHour = durationMinute * 60,
282
- durationDay = durationHour * 24,
283
- durationWeek = durationDay * 7,
284
- durationMonth = durationDay * 30,
285
- durationYear = durationDay * 365;
645
+ durationMinute = durationSecond * 60,
646
+ durationHour = durationMinute * 60,
647
+ durationDay = durationHour * 24,
648
+ durationWeek = durationDay * 7,
649
+ durationMonth = durationDay * 30,
650
+ durationYear = durationDay * 365;
286
651
  const Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],
287
- Seconds = Milli.slice(0, -1),
288
- Minutes = Seconds.slice(0, -1),
289
- Hours = Minutes.slice(0, -1),
290
- Day = Hours.slice(0, -1),
291
- Week = [YEAR, WEEK],
292
- Month = [YEAR, MONTH],
293
- Year = [YEAR];
652
+ Seconds = Milli.slice(0, -1),
653
+ Minutes = Seconds.slice(0, -1),
654
+ Hours = Minutes.slice(0, -1),
655
+ Day = Hours.slice(0, -1),
656
+ Week = [YEAR, WEEK],
657
+ Month = [YEAR, MONTH],
658
+ Year = [YEAR];
294
659
  const intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];
295
660
  function bin (opt) {
296
661
  const ext = opt.extent,
297
- max = opt.maxbins || 40,
298
- target = Math.abs(vegaUtil.span(ext)) / max;
299
- let i = d3Array.bisector(i => i[2]).right(intervals, target),
300
- units,
301
- step;
302
-
662
+ max = opt.maxbins || 40,
663
+ target = Math.abs(vegaUtil.span(ext)) / max;
664
+ let i = bisector(i => i[2]).right(intervals, target),
665
+ units,
666
+ step;
303
667
  if (i === intervals.length) {
304
- units = Year, step = d3Array.tickStep(ext[0] / durationYear, ext[1] / durationYear, max);
668
+ units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);
305
669
  } else if (i) {
306
670
  i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];
307
671
  units = i[0];
308
672
  step = i[1];
309
673
  } else {
310
674
  units = Milli;
311
- step = Math.max(d3Array.tickStep(ext[0], ext[1], max), 1);
675
+ step = Math.max(tickStep(ext[0], ext[1], max), 1);
312
676
  }
313
-
314
677
  return {
315
678
  units,
316
679
  step
@@ -345,6 +708,4 @@
345
708
  exports.utcweek = utcweek;
346
709
  exports.week = week;
347
710
 
348
- Object.defineProperty(exports, '__esModule', { value: true });
349
-
350
- })));
711
+ }));
@@ -1,2 +1,2 @@
1
- var vega=function(t,e){"use strict";const n="year",r="quarter",u="month",o="week",i="date",c="day",a="dayofyear",f="hours",s="minutes",l="seconds",g="milliseconds",T=[n,r,u,o,i,c,a,f,s,l,g],h=T.reduce((t,e,n)=>(t[e]=1+n,t),{});function U(t){const n=e.array(t).slice(),r={};n.length||e.error("Missing time unit."),n.forEach(t=>{e.hasOwnProperty(h,t)?r[t]=1:e.error("Invalid time unit: ".concat(t,"."))});return(r.week||r.day?1:0)+(r.quarter||r.month||r.date?1:0)+(r.dayofyear?1:0)>1&&e.error("Incompatible time units: ".concat(t)),n.sort((t,e)=>h[t]-h[e]),n}const M={[n]:"%Y ",[r]:"Q%q ",[u]:"%b ",[i]:"%d ",[o]:"W%U ",[c]:"%a ",[a]:"%j ",[f]:"%H:00",[s]:"00:%M",[l]:":%S",[g]:".%L",["".concat(n,"-").concat(u)]:"%Y-%m ",["".concat(n,"-").concat(u,"-").concat(i)]:"%Y-%m-%d ",["".concat(f,"-").concat(s)]:"%H:%M"};var C=new Date,D=new Date;function m(t,e,n,r){function u(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return u.floor=function(e){return t(e=new Date(+e)),e},u.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},u.round=function(t){var e=u(t),n=u.ceil(t);return t-e<n-t?e:n},u.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},u.range=function(n,r,o){var i,c=[];if(n=u.ceil(n),o=null==o?1:Math.floor(o),!(n<r&&o>0))return c;do{c.push(i=new Date(+n)),e(n,o),t(n)}while(i<n&&n<r);return c},u.filter=function(n){return m((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(u.count=function(e,r){return C.setTime(+e),D.setTime(+r),t(C),t(D),Math.floor(n(C,D))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(r?function(e){return r(e)%t==0}:function(e){return u.count(0,e)%t==0}):u:null}),u}var F=m((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));F.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?m((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):F:null};var Y=1e3,d=6e4,y=36e5,w=864e5,v=6048e5,H=m((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*Y)}),(function(t,e){return(e-t)/Y}),(function(t){return t.getUTCSeconds()})),S=m((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Y)}),(function(t,e){t.setTime(+t+e*d)}),(function(t,e){return(e-t)/d}),(function(t){return t.getMinutes()})),O=m((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Y-t.getMinutes()*d)}),(function(t,e){t.setTime(+t+e*y)}),(function(t,e){return(e-t)/y}),(function(t){return t.getHours()})),E=m(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*d)/w,t=>t.getDate()-1);function q(t){return m((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*d)/v}))}var z=q(0),I=(q(1),q(2),q(3),q(4),q(5),q(6),m((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}))),k=m((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));k.every=function(t){return isFinite(t=Math.floor(t))&&t>0?m((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var p=m((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*d)}),(function(t,e){return(e-t)/d}),(function(t){return t.getUTCMinutes()})),N=m((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*y)}),(function(t,e){return(e-t)/y}),(function(t){return t.getUTCHours()})),b=m((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/w}),(function(t){return t.getUTCDate()-1}));function A(t){return m((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/v}))}var x=A(0),R=(A(1),A(2),A(3),A(4),A(5),A(6),m((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}))),L=m((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));L.every=function(t){return isFinite(t=Math.floor(t))&&t>0?m((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const j=new Date;function Q(t){return j.setFullYear(t),j.setMonth(0),j.setDate(1),j.setHours(0,0,0,0),j}function W(t){return E.count(Q(t.getFullYear())-1,t)}function B(t){return z.count(Q(t.getFullYear())-1,t)}function K(t){return Q(t).getDay()}function P(t,e,n,r,u,o,i){if(0<=t&&t<100){const c=new Date(-1,e,n,r,u,o,i);return c.setFullYear(t),c}return new Date(t,e,n,r,u,o,i)}function _(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return b.count(e-1,t)}function G(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return x.count(e-1,t)}function J(t){return j.setTime(Date.UTC(t,0,1)),j.getUTCDay()}function V(t,e,n,r,u,o,i){if(0<=t&&t<100){const t=new Date(Date.UTC(-1,e,n,r,u,o,i));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(t,e,n,r,u,o,i))}function X(t,T,h,U,M){const C=T||1,D=e.peek(t),m=(t,e,n)=>function(t,e,n,r){const u=n<=1?t:r?(e,u)=>r+n*Math.floor((t(e,u)-r)/n):(e,r)=>n*Math.floor(t(e,r)/n);return e?(t,n)=>e(u(t,n),n):u}(h[n=n||t],U[n],t===D&&C,e),F=new Date,Y=e.toSet(t),d=Y.year?m(n):e.constant(2012),y=Y.month?m(u):Y.quarter?m(r):e.zero,w=Y.week&&Y.day?m(c,1,o+c):Y.week?m(o,1):Y.day?m(c,1):Y.date?m(i,1):Y.dayofyear?m(a,1):e.one,v=Y.hours?m(f):e.zero,H=Y.minutes?m(s):e.zero,S=Y.seconds?m(l):e.zero,O=Y.milliseconds?m(g):e.zero;return function(t){F.setTime(+t);const e=d(F);return M(e,y(F),w(F,e),v(F),H(F),S(F),O(F))}}function Z(t,e,n){return e+7*t-(n+6)%7}const $={[n]:t=>t.getFullYear(),[r]:t=>Math.floor(t.getMonth()/3),[u]:t=>t.getMonth(),[i]:t=>t.getDate(),[f]:t=>t.getHours(),[s]:t=>t.getMinutes(),[l]:t=>t.getSeconds(),[g]:t=>t.getMilliseconds(),[a]:t=>W(t),[o]:t=>B(t),[o+c]:(t,e)=>Z(B(t),t.getDay(),K(e)),[c]:(t,e)=>Z(1,t.getDay(),K(e))},tt={[r]:t=>3*t,[o]:(t,e)=>Z(t,0,K(e))};const et={[n]:t=>t.getUTCFullYear(),[r]:t=>Math.floor(t.getUTCMonth()/3),[u]:t=>t.getUTCMonth(),[i]:t=>t.getUTCDate(),[f]:t=>t.getUTCHours(),[s]:t=>t.getUTCMinutes(),[l]:t=>t.getUTCSeconds(),[g]:t=>t.getUTCMilliseconds(),[a]:t=>_(t),[o]:t=>G(t),[c]:(t,e)=>Z(1,t.getUTCDay(),J(e)),[o+c]:(t,e)=>Z(G(t),t.getUTCDay(),J(e))},nt={[r]:t=>3*t,[o]:(t,e)=>Z(t,0,J(e))};const rt={[n]:k,[r]:I.every(3),[u]:I,[o]:z,[i]:E,[c]:E,[a]:E,[f]:O,[s]:S,[l]:H,[g]:F},ut={[n]:L,[r]:R.every(3),[u]:R,[o]:x,[i]:b,[c]:b,[a]:b,[f]:N,[s]:p,[l]:H,[g]:F};function ot(t){return rt[t]}function it(t){return ut[t]}function ct(t,e,n){return t?t.offset(e,n):void 0}function at(t,e,n,r){return t?t.range(e,n,r):void 0}function ft(t){let e=t,n=t;function r(t,e,r,u){for(null==r&&(r=0),null==u&&(u=t.length);r<u;){const o=r+u>>>1;n(t[o],e)<0?r=o+1:u=o}return r}return 1===t.length&&(e=(e,n)=>t(e)-n,n=function(t){return(e,n)=>{return(r=t(e))<(u=n)?-1:r>u?1:r>=u?0:NaN;var r,u}}(t)),{left:r,center:function(t,n,u,o){null==u&&(u=0),null==o&&(o=t.length);const i=r(t,n,u,o-1);return i>u&&e(t[i-1],n)>-e(t[i],n)?i-1:i},right:function(t,e,r,u){for(null==r&&(r=0),null==u&&(u=t.length);r<u;){const o=r+u>>>1;n(t[o],e)>0?u=o:r=o+1}return r}}}var st=Math.sqrt(50),lt=Math.sqrt(10),gt=Math.sqrt(2);function Tt(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),u=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/u;return o>=st?u*=10:o>=lt?u*=5:o>=gt&&(u*=2),e<t?-u:u}const ht=1e3,Ut=6e4,Mt=36e5,Ct=864e5,Dt=2592e6,mt=31536e6,Ft=[n,u,i,f,s,l,g],Yt=Ft.slice(0,-1),dt=Yt.slice(0,-1),yt=dt.slice(0,-1),wt=yt.slice(0,-1),vt=[n,u],Ht=[n],St=[[Yt,1,ht],[Yt,5,5e3],[Yt,15,15e3],[Yt,30,3e4],[dt,1,Ut],[dt,5,3e5],[dt,15,9e5],[dt,30,18e5],[yt,1,Mt],[yt,3,108e5],[yt,6,216e5],[yt,12,432e5],[wt,1,Ct],[[n,o],1,6048e5],[vt,1,Dt],[vt,3,7776e6],[Ht,1,mt]];return t.DATE=i,t.DAY=c,t.DAYOFYEAR=a,t.HOURS=f,t.MILLISECONDS=g,t.MINUTES=s,t.MONTH=u,t.QUARTER=r,t.SECONDS=l,t.TIME_UNITS=T,t.WEEK=o,t.YEAR=n,t.dayofyear=function(t){return W(new Date(t))},t.timeBin=function(t){const n=t.extent,r=t.maxbins||40,u=Math.abs(e.span(n))/r;let o,i,c=ft(t=>t[2]).right(St,u);return c===St.length?(o=Ht,i=Tt(n[0]/mt,n[1]/mt,r)):c?(c=St[u/St[c-1][2]<St[c][2]/u?c-1:c],o=c[0],i=c[1]):(o=Ft,i=Math.max(Tt(n[0],n[1],r),1)),{units:o,step:i}},t.timeFloor=function(t,e){return X(t,e||1,$,tt,P)},t.timeInterval=ot,t.timeOffset=function(t,e,n){return ct(ot(t),e,n)},t.timeSequence=function(t,e,n,r){return at(ot(t),e,n,r)},t.timeUnitSpecifier=function(t,n){const r=e.extend({},M,n),u=U(t),o=u.length;let i,c,a="",f=0;for(f=0;f<o;)for(i=u.length;i>f;--i)if(c=u.slice(f,i).join("-"),null!=r[c]){a+=r[c],f=i;break}return a.trim()},t.timeUnits=U,t.utcFloor=function(t,e){return X(t,e||1,et,nt,V)},t.utcInterval=it,t.utcOffset=function(t,e,n){return ct(it(t),e,n)},t.utcSequence=function(t,e,n,r){return at(it(t),e,n,r)},t.utcdayofyear=function(t){return _(new Date(t))},t.utcweek=function(t){return G(new Date(t))},t.week=function(t){return B(new Date(t))},t}({},vega);
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-util")):"function"==typeof define&&define.amd?define(["exports","vega-util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega)}(this,(function(e,t){"use strict";const n="year",r="quarter",o="month",u="week",s="date",a="day",i="dayofyear",l="hours",c="minutes",g="seconds",f="milliseconds",T=[n,r,o,u,s,a,i,l,c,g,f],h=T.reduce(((e,t,n)=>(e[t]=1+n,e)),{});function M(e){const n=t.array(e).slice(),l={};n.length||t.error("Missing time unit."),n.forEach((e=>{t.hasOwnProperty(h,e)?l[e]=1:t.error(`Invalid time unit: ${e}.`)}));return(l[u]||l[a]?1:0)+(l[r]||l[o]||l[s]?1:0)+(l[i]?1:0)>1&&t.error(`Incompatible time units: ${e}`),n.sort(((e,t)=>h[e]-h[t])),n}const U={[n]:"%Y ",[r]:"Q%q ",[o]:"%b ",[s]:"%d ",[u]:"W%U ",[a]:"%a ",[i]:"%j ",[l]:"%H:00",[c]:"00:%M",[g]:":%S",[f]:".%L",[`${n}-${o}`]:"%Y-%m ",[`${n}-${o}-${s}`]:"%Y-%m-%d ",[`${l}-${c}`]:"%H:%M"};const C=new Date,D=new Date;function d(e,t,n,r){function o(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return o.floor=t=>(e(t=new Date(+t)),t),o.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),o.round=e=>{const t=o(e),n=o.ceil(e);return e-t<n-e?t:n},o.offset=(e,n)=>(t(e=new Date(+e),null==n?1:Math.floor(n)),e),o.range=(n,r,u)=>{const s=[];if(n=o.ceil(n),u=null==u?1:Math.floor(u),!(n<r&&u>0))return s;let a;do{s.push(a=new Date(+n)),t(n,u),e(n)}while(a<n&&n<r);return s},o.filter=n=>d((t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)}),((e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););})),n&&(o.count=(t,r)=>(C.setTime(+t),D.setTime(+r),e(C),e(D),Math.floor(n(C,D))),o.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?o.filter(r?t=>r(t)%e==0:t=>o.count(0,t)%e==0):o:null)),o}const m=d((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));m.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?d((t=>{t.setTime(Math.floor(t/e)*e)}),((t,n)=>{t.setTime(+t+n*e)}),((t,n)=>(n-t)/e)):m:null),m.range;const F=1e3,Y=6e4,y=60*Y,w=24*y,v=7*w,H=d((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*F)}),((e,t)=>(t-e)/F),(e=>e.getUTCSeconds()));H.range;const S=d((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F)}),((e,t)=>{e.setTime(+e+t*Y)}),((e,t)=>(t-e)/Y),(e=>e.getMinutes()));S.range;const p=d((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*Y)}),((e,t)=>(t-e)/Y),(e=>e.getUTCMinutes()));p.range;const N=d((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*F-e.getMinutes()*Y)}),((e,t)=>{e.setTime(+e+t*y)}),((e,t)=>(t-e)/y),(e=>e.getHours()));N.range;const O=d((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*y)}),((e,t)=>(t-e)/y),(e=>e.getUTCHours()));O.range;const E=d((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Y)/w),(e=>e.getDate()-1));E.range;const z=d((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/w),(e=>e.getUTCDate()-1));z.range;function I(e){return d((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Y)/v))}d((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/w),(e=>Math.floor(e/w))).range;const $=I(0),b=I(1),q=I(2),x=I(3),A=I(4),k=I(5),R=I(6);function j(e){return d((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/v))}$.range,b.range,q.range,x.range,A.range,k.range,R.range;const L=j(0),Q=j(1),W=j(2),B=j(3),K=j(4),P=j(5),_=j(6);L.range,Q.range,W.range,B.range,K.range,P.range,_.range;const G=d((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth()));G.range;const J=d((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth()));J.range;const V=d((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear()));V.every=e=>isFinite(e=Math.floor(e))&&e>0?d((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n*e)})):null,V.range;const X=d((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));function Z(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ee(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function te(){return 0}X.every=e=>isFinite(e=Math.floor(e))&&e>0?d((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null,X.range;const ne=Math.sqrt(50),re=Math.sqrt(10),oe=Math.sqrt(2);function ue(e,t,n){const r=(t-e)/Math.max(0,n),o=Math.floor(Math.log10(r)),u=r/Math.pow(10,o),s=u>=ne?10:u>=re?5:u>=oe?2:1;let a,i,l;return o<0?(l=Math.pow(10,-o)/s,a=Math.round(e*l),i=Math.round(t*l),a/l<e&&++a,i/l>t&&--i,l=-l):(l=Math.pow(10,o)*s,a=Math.round(e/l),i=Math.round(t/l),a*l<e&&++a,i*l>t&&--i),i<a&&.5<=n&&n<2?ue(e,t,2*n):[a,i,l]}function se(e,t,n){return ue(e=+e,t=+t,n=+n)[2]}function ae(e,t,n){n=+n;const r=(t=+t)<(e=+e),o=r?se(t,e,n):se(e,t,n);return(r?-1:1)*(o<0?1/-o:o)}const ie=new Date;function le(e){return ie.setFullYear(e),ie.setMonth(0),ie.setDate(1),ie.setHours(0,0,0,0),ie}function ce(e){return E.count(le(e.getFullYear())-1,e)}function ge(e){return $.count(le(e.getFullYear())-1,e)}function fe(e){return le(e).getDay()}function Te(e,t,n,r,o,u,s){if(0<=e&&e<100){const a=new Date(-1,t,n,r,o,u,s);return a.setFullYear(e),a}return new Date(e,t,n,r,o,u,s)}function he(e){const t=Date.UTC(e.getUTCFullYear(),0,1);return z.count(t-1,e)}function Me(e){const t=Date.UTC(e.getUTCFullYear(),0,1);return L.count(t-1,e)}function Ue(e){return ie.setTime(Date.UTC(e,0,1)),ie.getUTCDay()}function Ce(e,t,n,r,o,u,s){if(0<=e&&e<100){const e=new Date(Date.UTC(-1,t,n,r,o,u,s));return e.setUTCFullYear(n.y),e}return new Date(Date.UTC(e,t,n,r,o,u,s))}function De(e,T,h,M,U){const C=T||1,D=t.peek(e),d=(e,t,n)=>function(e,t,n,r){const o=n<=1?e:r?(t,o)=>r+n*Math.floor((e(t,o)-r)/n):(t,r)=>n*Math.floor(e(t,r)/n);return t?(e,n)=>t(o(e,n),n):o}(h[n=n||e],M[n],e===D&&C,t),m=new Date,F=t.toSet(e),Y=F[n]?d(n):t.constant(2012),y=F[o]?d(o):F[r]?d(r):t.zero,w=F[u]&&F[a]?d(a,1,u+a):F[u]?d(u,1):F[a]?d(a,1):F[s]?d(s,1):F[i]?d(i,1):t.one,v=F[l]?d(l):t.zero,H=F[c]?d(c):t.zero,S=F[g]?d(g):t.zero,p=F[f]?d(f):t.zero;return function(e){m.setTime(+e);const t=Y(m);return U(t,y(m),w(m,t),v(m),H(m),S(m),p(m))}}function de(e,t,n){return t+7*e-(n+6)%7}const me={[n]:e=>e.getFullYear(),[r]:e=>Math.floor(e.getMonth()/3),[o]:e=>e.getMonth(),[s]:e=>e.getDate(),[l]:e=>e.getHours(),[c]:e=>e.getMinutes(),[g]:e=>e.getSeconds(),[f]:e=>e.getMilliseconds(),[i]:e=>ce(e),[u]:e=>ge(e),[u+a]:(e,t)=>de(ge(e),e.getDay(),fe(t)),[a]:(e,t)=>de(1,e.getDay(),fe(t))},Fe={[r]:e=>3*e,[u]:(e,t)=>de(e,0,fe(t))};const Ye={[n]:e=>e.getUTCFullYear(),[r]:e=>Math.floor(e.getUTCMonth()/3),[o]:e=>e.getUTCMonth(),[s]:e=>e.getUTCDate(),[l]:e=>e.getUTCHours(),[c]:e=>e.getUTCMinutes(),[g]:e=>e.getUTCSeconds(),[f]:e=>e.getUTCMilliseconds(),[i]:e=>he(e),[u]:e=>Me(e),[a]:(e,t)=>de(1,e.getUTCDay(),Ue(t)),[u+a]:(e,t)=>de(Me(e),e.getUTCDay(),Ue(t))},ye={[r]:e=>3*e,[u]:(e,t)=>de(e,0,Ue(t))};const we={[n]:V,[r]:G.every(3),[o]:G,[u]:$,[s]:E,[a]:E,[i]:E,[l]:N,[c]:S,[g]:H,[f]:m},ve={[n]:X,[r]:J.every(3),[o]:J,[u]:L,[s]:z,[a]:z,[i]:z,[l]:O,[c]:p,[g]:H,[f]:m};function He(e){return we[e]}function Se(e){return ve[e]}function pe(e,t,n){return e?e.offset(t,n):void 0}function Ne(e,t,n,r){return e?e.range(t,n,r):void 0}const Oe=1e3,Ee=6e4,ze=36e5,Ie=864e5,$e=2592e6,be=31536e6,qe=[n,o,s,l,c,g,f],xe=qe.slice(0,-1),Ae=xe.slice(0,-1),ke=Ae.slice(0,-1),Re=ke.slice(0,-1),je=[n,o],Le=[n],Qe=[[xe,1,Oe],[xe,5,5e3],[xe,15,15e3],[xe,30,3e4],[Ae,1,Ee],[Ae,5,3e5],[Ae,15,9e5],[Ae,30,18e5],[ke,1,ze],[ke,3,108e5],[ke,6,216e5],[ke,12,432e5],[Re,1,Ie],[[n,u],1,6048e5],[je,1,$e],[je,3,7776e6],[Le,1,be]];e.DATE=s,e.DAY=a,e.DAYOFYEAR=i,e.HOURS=l,e.MILLISECONDS=f,e.MINUTES=c,e.MONTH=o,e.QUARTER=r,e.SECONDS=g,e.TIME_UNITS=T,e.WEEK=u,e.YEAR=n,e.dayofyear=function(e){return ce(new Date(e))},e.timeBin=function(e){const n=e.extent,r=e.maxbins||40,o=Math.abs(t.span(n))/r;let u,s,a=function(e){let t,n,r;function o(e,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;if(o<u){if(0!==t(r,r))return u;do{const t=o+u>>>1;n(e[t],r)<0?o=t+1:u=t}while(o<u)}return o}return 2!==e.length?(t=Z,n=(t,n)=>Z(e(t),n),r=(t,n)=>e(t)-n):(t=e===Z||e===ee?e:te,n=e,r=e),{left:o,center:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const u=o(e,t,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length)-1);return u>n&&r(e[u-1],t)>-r(e[u],t)?u-1:u},right:function(e,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;if(o<u){if(0!==t(r,r))return u;do{const t=o+u>>>1;n(e[t],r)<=0?o=t+1:u=t}while(o<u)}return o}}}((e=>e[2])).right(Qe,o);return a===Qe.length?(u=Le,s=ae(n[0]/be,n[1]/be,r)):a?(a=Qe[o/Qe[a-1][2]<Qe[a][2]/o?a-1:a],u=a[0],s=a[1]):(u=qe,s=Math.max(ae(n[0],n[1],r),1)),{units:u,step:s}},e.timeFloor=function(e,t){return De(e,t||1,me,Fe,Te)},e.timeInterval=He,e.timeOffset=function(e,t,n){return pe(He(e),t,n)},e.timeSequence=function(e,t,n,r){return Ne(He(e),t,n,r)},e.timeUnitSpecifier=function(e,n){const r=t.extend({},U,n),o=M(e),u=o.length;let s,a,i="",l=0;for(l=0;l<u;)for(s=o.length;s>l;--s)if(a=o.slice(l,s).join("-"),null!=r[a]){i+=r[a],l=s;break}return i.trim()},e.timeUnits=M,e.utcFloor=function(e,t){return De(e,t||1,Ye,ye,Ce)},e.utcInterval=Se,e.utcOffset=function(e,t,n){return pe(Se(e),t,n)},e.utcSequence=function(e,t,n,r){return Ne(Se(e),t,n,r)},e.utcdayofyear=function(e){return he(new Date(e))},e.utcweek=function(e){return Me(new Date(e))},e.week=function(e){return ge(new Date(e))}}));
2
2
  //# sourceMappingURL=vega-time.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vega-time.min.js","sources":["../src/units.js","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/millisecond.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/second.js","../../../node_modules/d3-time/src/minute.js","../../../node_modules/d3-time/src/hour.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../../../node_modules/d3-time/src/utcMinute.js","../../../node_modules/d3-time/src/utcHour.js","../../../node_modules/d3-time/src/utcDay.js","../../../node_modules/d3-time/src/utcWeek.js","../../../node_modules/d3-time/src/utcMonth.js","../../../node_modules/d3-time/src/utcYear.js","../src/util.js","../src/floor.js","../src/interval.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/ticks.js","../src/bin.js"],"sourcesContent":["import {array, error, extend, hasOwnProperty} from 'vega-util';\n\nexport const YEAR = 'year';\nexport const QUARTER = 'quarter';\nexport const MONTH = 'month';\nexport const WEEK = 'week';\nexport const DATE = 'date';\nexport const DAY = 'day';\nexport const DAYOFYEAR = 'dayofyear';\nexport const HOURS = 'hours';\nexport const MINUTES = 'minutes';\nexport const SECONDS = 'seconds';\nexport const MILLISECONDS = 'milliseconds';\n\nexport const TIME_UNITS = [\n YEAR,\n QUARTER,\n MONTH,\n WEEK,\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MINUTES,\n SECONDS,\n MILLISECONDS\n];\n\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\n\nexport function timeUnits(units) {\n const u = array(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n\n u.forEach(unit => {\n if (hasOwnProperty(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(`Invalid time unit: ${unit}.`);\n }\n });\n\n const numTypes = (\n (m[WEEK] || m[DAY] ? 1 : 0) +\n (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) +\n (m[DAYOFYEAR] ? 1 : 0)\n );\n\n if (numTypes > 1) {\n error(`Incompatible time units: ${units}`);\n }\n\n // ensure proper sort order\n u.sort((a, b) => UNITS[a] - UNITS[b]);\n\n return u;\n}\n\nconst defaultSpecifiers = {\n [YEAR]: '%Y ',\n [QUARTER]: 'Q%q ',\n [MONTH]: '%b ',\n [DATE]: '%d ',\n [WEEK]: 'W%U ',\n [DAY]: '%a ',\n [DAYOFYEAR]: '%j ',\n [HOURS]: '%H:00',\n [MINUTES]: '00:%M',\n [SECONDS]: ':%S',\n [MILLISECONDS]: '.%L',\n [`${YEAR}-${MONTH}`]: '%Y-%m ',\n [`${YEAR}-${MONTH}-${DATE}`]: '%Y-%m-%d ',\n [`${HOURS}-${MINUTES}`]: '%H:%M'\n};\n\nexport function timeUnitSpecifier(units, specifiers) {\n const s = extend({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n\n let fmt = '', start = 0, end, key;\n\n for (start=0; start<n; ) {\n for (end=u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n\n return fmt.trim();\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeWeek, utcDay, utcWeek} from 'd3-time';\n\nconst t0 = new Date;\n\nfunction localYear(y) {\n t0.setFullYear(y);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setHours(0, 0, 0, 0);\n return t0;\n}\n\nexport function dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\n\nexport function week(d) {\n return localWeekNum(new Date(d));\n}\n\nexport function localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\n\nexport function localWeekNum(d) {\n return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\n\nexport function localFirst(y) {\n return localYear(y).getDay();\n}\n\nexport function localDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\n\nexport function utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\n\nexport function utcweek(d) {\n return utcWeekNum(new Date(d));\n}\n\nexport function utcDayOfYear(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\n\nexport function utcWeekNum(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcWeek.count(y - 1, d);\n}\n\nexport function utcFirst(y) {\n t0.setTime(Date.UTC(y, 0, 1));\n return t0.getUTCDay();\n}\n\nexport function utcDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n","import {\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MILLISECONDS,\n MINUTES,\n MONTH,\n QUARTER,\n SECONDS,\n WEEK,\n YEAR\n} from './units';\nimport {\n localDate, localDayOfYear, localFirst, localWeekNum,\n utcDate, utcDayOfYear, utcFirst, utcWeekNum\n} from './util';\nimport {constant, one, peek, toSet, zero} from 'vega-util';\n\nfunction floor(units, step, get, inv, newDate) {\n const s = step || 1,\n b = peek(units),\n _ = (unit, p, key) => {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n\n const t = new Date,\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant(2012),\n m = u[MONTH] ? _(MONTH)\n : u[QUARTER] ? _(QUARTER)\n : zero,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY)\n : u[WEEK] ? _(WEEK, 1)\n : u[DAY] ? _(DAY, 1)\n : u[DATE] ? _(DATE, 1)\n : u[DAYOFYEAR] ? _(DAYOFYEAR, 1)\n : one,\n H = u[HOURS] ? _(HOURS) : zero,\n M = u[MINUTES] ? _(MINUTES) : zero,\n S = u[SECONDS] ? _(SECONDS) : zero,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n\n return function(v) {\n t.setTime(+v);\n const year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\n\nfunction getUnit(f, inv, step, phase) {\n const u = step <= 1 ? f\n : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step)\n : (d, y) => step * Math.floor(f(d, y) / step);\n return inv ? (d, y) => inv(u(d, y), y) : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nconst localGet = {\n [YEAR]: d => d.getFullYear(),\n [QUARTER]: d => Math.floor(d.getMonth() / 3),\n [MONTH]: d => d.getMonth(),\n [DATE]: d => d.getDate(),\n [HOURS]: d => d.getHours(),\n [MINUTES]: d => d.getMinutes(),\n [SECONDS]: d => d.getSeconds(),\n [MILLISECONDS]: d => d.getMilliseconds(),\n [DAYOFYEAR]: d => localDayOfYear(d),\n [WEEK]: d => localWeekNum(d),\n [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\n\nconst localInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\n\nexport function timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nconst utcGet = {\n [YEAR]: d => d.getUTCFullYear(),\n [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n [MONTH]: d => d.getUTCMonth(),\n [DATE]: d => d.getUTCDate(),\n [HOURS]: d => d.getUTCHours(),\n [MINUTES]: d => d.getUTCMinutes(),\n [SECONDS]: d => d.getUTCSeconds(),\n [MILLISECONDS]: d => d.getUTCMilliseconds(),\n [DAYOFYEAR]: d => utcDayOfYear(d),\n [WEEK]: d => utcWeekNum(d),\n [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\n\nconst utcInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\n\nexport function utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n","import {\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MILLISECONDS,\n MINUTES,\n MONTH,\n QUARTER,\n SECONDS,\n WEEK,\n YEAR\n} from './units';\n\nimport {\n timeDay,\n timeHour,\n timeMillisecond,\n timeMinute,\n timeMonth,\n timeSecond,\n timeWeek,\n timeYear,\n utcDay,\n utcHour,\n utcMillisecond,\n utcMinute,\n utcMonth,\n utcSecond,\n utcWeek,\n utcYear\n} from 'd3-time';\n\nconst timeIntervals = {\n [YEAR]: timeYear,\n [QUARTER]: timeMonth.every(3),\n [MONTH]: timeMonth,\n [WEEK]: timeWeek,\n [DATE]: timeDay,\n [DAY]: timeDay,\n [DAYOFYEAR]: timeDay,\n [HOURS]: timeHour,\n [MINUTES]: timeMinute,\n [SECONDS]: timeSecond,\n [MILLISECONDS]: timeMillisecond\n};\n\nconst utcIntervals = {\n [YEAR]: utcYear,\n [QUARTER]: utcMonth.every(3),\n [MONTH]: utcMonth,\n [WEEK]: utcWeek,\n [DATE]: utcDay,\n [DAY]: utcDay,\n [DAYOFYEAR]: utcDay,\n [HOURS]: utcHour,\n [MINUTES]: utcMinute,\n [SECONDS]: utcSecond,\n [MILLISECONDS]: utcMillisecond\n};\n\nexport function timeInterval(unit) {\n return timeIntervals[unit];\n}\n\nexport function utcInterval(unit) {\n return utcIntervals[unit];\n}\n\nfunction offset(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\n\nexport function timeOffset(unit, date, step) {\n return offset(timeInterval(unit), date, step);\n}\n\nexport function utcOffset(unit, date, step) {\n return offset(utcInterval(unit), date, step);\n}\n\nfunction sequence(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\n\nexport function timeSequence(unit, start, stop, step) {\n return sequence(timeInterval(unit), start, stop, step);\n}\n\nexport function utcSequence(unit, start, stop, step) {\n return sequence(utcInterval(unit), start, stop, step);\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n step = -step;\n start = Math.ceil(start * step);\n stop = Math.floor(stop * step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import {DATE, HOURS, MILLISECONDS, MINUTES, MONTH, SECONDS, WEEK, YEAR} from './units';\nimport {span} from 'vega-util';\nimport {bisector, tickStep} from 'd3-array';\n\nconst durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\n\nconst intervals = [\n [Seconds, 1, durationSecond],\n [Seconds, 5, 5 * durationSecond],\n [Seconds, 15, 15 * durationSecond],\n [Seconds, 30, 30 * durationSecond],\n [Minutes, 1, durationMinute],\n [Minutes, 5, 5 * durationMinute],\n [Minutes, 15, 15 * durationMinute],\n [Minutes, 30, 30 * durationMinute],\n [ Hours, 1, durationHour ],\n [ Hours, 3, 3 * durationHour ],\n [ Hours, 6, 6 * durationHour ],\n [ Hours, 12, 12 * durationHour ],\n [ Day, 1, durationDay ],\n [ Week, 1, durationWeek ],\n [ Month, 1, durationMonth ],\n [ Month, 3, 3 * durationMonth ],\n [ Year, 1, durationYear ]\n];\n\nexport default function(opt) {\n const ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n\n let i = bisector(i => i[2]).right(intervals, target),\n units, step;\n\n if (i === intervals.length) {\n units = Year,\n step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n\n return {units, step};\n}\n"],"names":["YEAR","QUARTER","MONTH","WEEK","DATE","DAY","DAYOFYEAR","HOURS","MINUTES","SECONDS","MILLISECONDS","TIME_UNITS","UNITS","reduce","o","u","i","timeUnits","units","array","slice","m","length","error","forEach","unit","hasOwnProperty","sort","a","b","defaultSpecifiers","t0","Date","t1","newInterval","floori","offseti","count","field","interval","date","arguments","floor","ceil","round","d0","d1","offset","step","Math","range","start","stop","previous","push","filter","test","setTime","end","every","isFinite","d","millisecond","k","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","getUTCSeconds","minute","getSeconds","getMinutes","hour","getHours","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","month","setMonth","getMonth","getFullYear","year","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","localYear","y","localDayOfYear","timeDay","localWeekNum","timeWeek","localFirst","localDate","H","M","S","L","utcDayOfYear","UTC","utcWeekNum","utcWeek","utcFirst","utcDate","get","inv","newDate","s","peek","_","p","key","f","phase","getUnit","t","toSet","constant","zero","one","v","week","firstDay","localGet","localInv","q","w","utcGet","getUTCMilliseconds","utcInv","timeIntervals","timeYear","timeMonth","timeHour","timeMinute","timeSecond","timeMillisecond","utcIntervals","utcSecond","utcMillisecond","timeInterval","utcInterval","ival","undefined","sequence","delta","compare","left","x","lo","hi","mid","ascending","NaN","ascendingComparator","center","right","e10","sqrt","e5","e2","tickStep","step0","abs","max","step1","pow","log","LN10","durationMonth","durationYear","Milli","Seconds","Minutes","Hours","Day","Month","Year","intervals","opt","ext","extent","maxbins","target","span","bisector","specifiers","extend","n","fmt","join","trim"],"mappings":"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"}
1
+ {"version":3,"file":"vega-time.min.js","sources":["../src/units.js","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/millisecond.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/second.js","../../../node_modules/d3-time/src/minute.js","../../../node_modules/d3-time/src/hour.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/ticks.js","../src/util.js","../src/floor.js","../src/interval.js","../src/bin.js"],"sourcesContent":["import {array, error, extend, hasOwnProperty} from 'vega-util';\n\nexport const YEAR = 'year';\nexport const QUARTER = 'quarter';\nexport const MONTH = 'month';\nexport const WEEK = 'week';\nexport const DATE = 'date';\nexport const DAY = 'day';\nexport const DAYOFYEAR = 'dayofyear';\nexport const HOURS = 'hours';\nexport const MINUTES = 'minutes';\nexport const SECONDS = 'seconds';\nexport const MILLISECONDS = 'milliseconds';\n\nexport const TIME_UNITS = [\n YEAR,\n QUARTER,\n MONTH,\n WEEK,\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MINUTES,\n SECONDS,\n MILLISECONDS\n];\n\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\n\nexport function timeUnits(units) {\n const u = array(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n\n u.forEach(unit => {\n if (hasOwnProperty(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(`Invalid time unit: ${unit}.`);\n }\n });\n\n const numTypes = (\n (m[WEEK] || m[DAY] ? 1 : 0) +\n (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) +\n (m[DAYOFYEAR] ? 1 : 0)\n );\n\n if (numTypes > 1) {\n error(`Incompatible time units: ${units}`);\n }\n\n // ensure proper sort order\n u.sort((a, b) => UNITS[a] - UNITS[b]);\n\n return u;\n}\n\nconst defaultSpecifiers = {\n [YEAR]: '%Y ',\n [QUARTER]: 'Q%q ',\n [MONTH]: '%b ',\n [DATE]: '%d ',\n [WEEK]: 'W%U ',\n [DAY]: '%a ',\n [DAYOFYEAR]: '%j ',\n [HOURS]: '%H:00',\n [MINUTES]: '00:%M',\n [SECONDS]: ':%S',\n [MILLISECONDS]: '.%L',\n [`${YEAR}-${MONTH}`]: '%Y-%m ',\n [`${YEAR}-${MONTH}-${DATE}`]: '%Y-%m-%d ',\n [`${HOURS}-${MINUTES}`]: '%H:%M'\n};\n\nexport function timeUnitSpecifier(units, specifiers) {\n const s = extend({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n\n let fmt = '', start = 0, end, key;\n\n for (start=0; start<n; ) {\n for (end=u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n\n return fmt.trim();\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {timeDay, timeWeek, utcDay, utcWeek} from 'd3-time';\n\nconst t0 = new Date;\n\nfunction localYear(y) {\n t0.setFullYear(y);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setHours(0, 0, 0, 0);\n return t0;\n}\n\nexport function dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\n\nexport function week(d) {\n return localWeekNum(new Date(d));\n}\n\nexport function localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\n\nexport function localWeekNum(d) {\n return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\n\nexport function localFirst(y) {\n return localYear(y).getDay();\n}\n\nexport function localDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\n\nexport function utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\n\nexport function utcweek(d) {\n return utcWeekNum(new Date(d));\n}\n\nexport function utcDayOfYear(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\n\nexport function utcWeekNum(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcWeek.count(y - 1, d);\n}\n\nexport function utcFirst(y) {\n t0.setTime(Date.UTC(y, 0, 1));\n return t0.getUTCDay();\n}\n\nexport function utcDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n","import {\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MILLISECONDS,\n MINUTES,\n MONTH,\n QUARTER,\n SECONDS,\n WEEK,\n YEAR\n} from './units';\nimport {\n localDate, localDayOfYear, localFirst, localWeekNum,\n utcDate, utcDayOfYear, utcFirst, utcWeekNum\n} from './util';\nimport {constant, one, peek, toSet, zero} from 'vega-util';\n\nfunction floor(units, step, get, inv, newDate) {\n const s = step || 1,\n b = peek(units),\n _ = (unit, p, key) => {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n\n const t = new Date,\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant(2012),\n m = u[MONTH] ? _(MONTH)\n : u[QUARTER] ? _(QUARTER)\n : zero,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY)\n : u[WEEK] ? _(WEEK, 1)\n : u[DAY] ? _(DAY, 1)\n : u[DATE] ? _(DATE, 1)\n : u[DAYOFYEAR] ? _(DAYOFYEAR, 1)\n : one,\n H = u[HOURS] ? _(HOURS) : zero,\n M = u[MINUTES] ? _(MINUTES) : zero,\n S = u[SECONDS] ? _(SECONDS) : zero,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n\n return function(v) {\n t.setTime(+v);\n const year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\n\nfunction getUnit(f, inv, step, phase) {\n const u = step <= 1 ? f\n : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step)\n : (d, y) => step * Math.floor(f(d, y) / step);\n return inv ? (d, y) => inv(u(d, y), y) : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nconst localGet = {\n [YEAR]: d => d.getFullYear(),\n [QUARTER]: d => Math.floor(d.getMonth() / 3),\n [MONTH]: d => d.getMonth(),\n [DATE]: d => d.getDate(),\n [HOURS]: d => d.getHours(),\n [MINUTES]: d => d.getMinutes(),\n [SECONDS]: d => d.getSeconds(),\n [MILLISECONDS]: d => d.getMilliseconds(),\n [DAYOFYEAR]: d => localDayOfYear(d),\n [WEEK]: d => localWeekNum(d),\n [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\n\nconst localInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\n\nexport function timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nconst utcGet = {\n [YEAR]: d => d.getUTCFullYear(),\n [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n [MONTH]: d => d.getUTCMonth(),\n [DATE]: d => d.getUTCDate(),\n [HOURS]: d => d.getUTCHours(),\n [MINUTES]: d => d.getUTCMinutes(),\n [SECONDS]: d => d.getUTCSeconds(),\n [MILLISECONDS]: d => d.getUTCMilliseconds(),\n [DAYOFYEAR]: d => utcDayOfYear(d),\n [WEEK]: d => utcWeekNum(d),\n [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\n\nconst utcInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\n\nexport function utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n","import {\n DATE,\n DAY,\n DAYOFYEAR,\n HOURS,\n MILLISECONDS,\n MINUTES,\n MONTH,\n QUARTER,\n SECONDS,\n WEEK,\n YEAR\n} from './units';\n\nimport {\n timeDay,\n timeHour,\n timeMillisecond,\n timeMinute,\n timeMonth,\n timeSecond,\n timeWeek,\n timeYear,\n utcDay,\n utcHour,\n utcMillisecond,\n utcMinute,\n utcMonth,\n utcSecond,\n utcWeek,\n utcYear\n} from 'd3-time';\n\nconst timeIntervals = {\n [YEAR]: timeYear,\n [QUARTER]: timeMonth.every(3),\n [MONTH]: timeMonth,\n [WEEK]: timeWeek,\n [DATE]: timeDay,\n [DAY]: timeDay,\n [DAYOFYEAR]: timeDay,\n [HOURS]: timeHour,\n [MINUTES]: timeMinute,\n [SECONDS]: timeSecond,\n [MILLISECONDS]: timeMillisecond\n};\n\nconst utcIntervals = {\n [YEAR]: utcYear,\n [QUARTER]: utcMonth.every(3),\n [MONTH]: utcMonth,\n [WEEK]: utcWeek,\n [DATE]: utcDay,\n [DAY]: utcDay,\n [DAYOFYEAR]: utcDay,\n [HOURS]: utcHour,\n [MINUTES]: utcMinute,\n [SECONDS]: utcSecond,\n [MILLISECONDS]: utcMillisecond\n};\n\nexport function timeInterval(unit) {\n return timeIntervals[unit];\n}\n\nexport function utcInterval(unit) {\n return utcIntervals[unit];\n}\n\nfunction offset(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\n\nexport function timeOffset(unit, date, step) {\n return offset(timeInterval(unit), date, step);\n}\n\nexport function utcOffset(unit, date, step) {\n return offset(utcInterval(unit), date, step);\n}\n\nfunction sequence(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\n\nexport function timeSequence(unit, start, stop, step) {\n return sequence(timeInterval(unit), start, stop, step);\n}\n\nexport function utcSequence(unit, start, stop, step) {\n return sequence(utcInterval(unit), start, stop, step);\n}\n","import {DATE, HOURS, MILLISECONDS, MINUTES, MONTH, SECONDS, WEEK, YEAR} from './units';\nimport {span} from 'vega-util';\nimport {bisector, tickStep} from 'd3-array';\n\nconst durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\n\nconst intervals = [\n [Seconds, 1, durationSecond],\n [Seconds, 5, 5 * durationSecond],\n [Seconds, 15, 15 * durationSecond],\n [Seconds, 30, 30 * durationSecond],\n [Minutes, 1, durationMinute],\n [Minutes, 5, 5 * durationMinute],\n [Minutes, 15, 15 * durationMinute],\n [Minutes, 30, 30 * durationMinute],\n [ Hours, 1, durationHour ],\n [ Hours, 3, 3 * durationHour ],\n [ Hours, 6, 6 * durationHour ],\n [ Hours, 12, 12 * durationHour ],\n [ Day, 1, durationDay ],\n [ Week, 1, durationWeek ],\n [ Month, 1, durationMonth ],\n [ Month, 3, 3 * durationMonth ],\n [ Year, 1, durationYear ]\n];\n\nexport default function(opt) {\n const ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n\n let i = bisector(i => i[2]).right(intervals, target),\n units, step;\n\n if (i === intervals.length) {\n units = Year,\n step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n\n return {units, step};\n}\n"],"names":["YEAR","QUARTER","MONTH","WEEK","DATE","DAY","DAYOFYEAR","HOURS","MINUTES","SECONDS","MILLISECONDS","TIME_UNITS","UNITS","reduce","o","u","i","timeUnits","units","array","slice","m","length","error","forEach","unit","hasOwnProperty","sort","a","b","defaultSpecifiers","t0","Date","t1","timeInterval","floori","offseti","count","field","interval","date","arguments","floor","ceil","round","d0","d1","offset","step","Math","range","start","stop","previous","push","filter","test","setTime","end","every","isFinite","d","millisecond","k","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ascending","NaN","descending","zero","e10","sqrt","e5","e2","tickSpec","max","power","log10","pow","factor","i1","i2","inc","tickIncrement","tickStep","reverse","localYear","y","localDayOfYear","localWeekNum","timeWeek","localFirst","localDate","H","M","S","L","utcDayOfYear","UTC","utcWeekNum","utcWeek","utcFirst","utcDate","get","inv","newDate","s","peek","_","p","key","f","phase","getUnit","t","toSet","constant","one","v","year","weekday","week","day","firstDay","localGet","localInv","q","w","utcGet","getUTCMilliseconds","utcInv","timeIntervals","timeSecond","timeMillisecond","utcIntervals","utcSecond","utcMillisecond","utcInterval","ival","undefined","sequence","durationMonth","durationYear","Milli","Seconds","Minutes","Hours","Day","Month","Year","intervals","opt","ext","extent","maxbins","target","abs","span","compare1","compare2","delta","left","x","lo","hi","mid","center","right","bisector","specifiers","extend","n","fmt","join","trim"],"mappings":"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"}
@@ -17,23 +17,23 @@ const TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MIN
17
17
  const UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});
18
18
  function timeUnits(units) {
19
19
  const u = array(units).slice(),
20
- m = {}; // check validity
20
+ m = {};
21
21
 
22
+ // check validity
22
23
  if (!u.length) error('Missing time unit.');
23
24
  u.forEach(unit => {
24
25
  if (hasOwnProperty(UNITS, unit)) {
25
26
  m[unit] = 1;
26
27
  } else {
27
- error("Invalid time unit: ".concat(unit, "."));
28
+ error(`Invalid time unit: ${unit}.`);
28
29
  }
29
30
  });
30
31
  const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);
31
-
32
32
  if (numTypes > 1) {
33
- error("Incompatible time units: ".concat(units));
34
- } // ensure proper sort order
35
-
33
+ error(`Incompatible time units: ${units}`);
34
+ }
36
35
 
36
+ // ensure proper sort order
37
37
  u.sort((a, b) => UNITS[a] - UNITS[b]);
38
38
  return u;
39
39
  }
@@ -49,23 +49,21 @@ const defaultSpecifiers = {
49
49
  [MINUTES]: '00:%M',
50
50
  [SECONDS]: ':%S',
51
51
  [MILLISECONDS]: '.%L',
52
- ["".concat(YEAR, "-").concat(MONTH)]: '%Y-%m ',
53
- ["".concat(YEAR, "-").concat(MONTH, "-").concat(DATE)]: '%Y-%m-%d ',
54
- ["".concat(HOURS, "-").concat(MINUTES)]: '%H:%M'
52
+ [`${YEAR}-${MONTH}`]: '%Y-%m ',
53
+ [`${YEAR}-${MONTH}-${DATE}`]: '%Y-%m-%d ',
54
+ [`${HOURS}-${MINUTES}`]: '%H:%M'
55
55
  };
56
56
  function timeUnitSpecifier(units, specifiers) {
57
57
  const s = extend({}, defaultSpecifiers, specifiers),
58
- u = timeUnits(units),
59
- n = u.length;
58
+ u = timeUnits(units),
59
+ n = u.length;
60
60
  let fmt = '',
61
- start = 0,
62
- end,
63
- key;
64
-
61
+ start = 0,
62
+ end,
63
+ key;
65
64
  for (start = 0; start < n;) {
66
65
  for (end = u.length; end > start; --end) {
67
66
  key = u.slice(start, end).join('-');
68
-
69
67
  if (s[key] != null) {
70
68
  fmt += s[key];
71
69
  start = end;
@@ -73,12 +71,10 @@ function timeUnitSpecifier(units, specifiers) {
73
71
  }
74
72
  }
75
73
  }
76
-
77
74
  return fmt.trim();
78
75
  }
79
76
 
80
77
  const t0 = new Date();
81
-
82
78
  function localYear(y) {
83
79
  t0.setFullYear(y);
84
80
  t0.setMonth(0);
@@ -86,7 +82,6 @@ function localYear(y) {
86
82
  t0.setHours(0, 0, 0, 0);
87
83
  return t0;
88
84
  }
89
-
90
85
  function dayofyear(d) {
91
86
  return localDayOfYear(new Date(d));
92
87
  }
@@ -108,7 +103,6 @@ function localDate(y, m, d, H, M, S, L) {
108
103
  date.setFullYear(y);
109
104
  return date;
110
105
  }
111
-
112
106
  return new Date(y, m, d, H, M, S, L);
113
107
  }
114
108
  function utcdayofyear(d) {
@@ -135,45 +129,43 @@ function utcDate(y, m, d, H, M, S, L) {
135
129
  date.setUTCFullYear(d.y);
136
130
  return date;
137
131
  }
138
-
139
132
  return new Date(Date.UTC(y, m, d, H, M, S, L));
140
133
  }
141
134
 
142
135
  function floor(units, step, get, inv, newDate) {
143
136
  const s = step || 1,
144
- b = peek(units),
145
- _ = (unit, p, key) => {
146
- key = key || unit;
147
- return getUnit(get[key], inv[key], unit === b && s, p);
148
- };
149
-
137
+ b = peek(units),
138
+ _ = (unit, p, key) => {
139
+ key = key || unit;
140
+ return getUnit(get[key], inv[key], unit === b && s, p);
141
+ };
150
142
  const t = new Date(),
151
- u = toSet(units),
152
- y = u[YEAR] ? _(YEAR) : constant(2012),
153
- m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,
154
- d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,
155
- H = u[HOURS] ? _(HOURS) : zero,
156
- M = u[MINUTES] ? _(MINUTES) : zero,
157
- S = u[SECONDS] ? _(SECONDS) : zero,
158
- L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;
143
+ u = toSet(units),
144
+ y = u[YEAR] ? _(YEAR) : constant(2012),
145
+ m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,
146
+ d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,
147
+ H = u[HOURS] ? _(HOURS) : zero,
148
+ M = u[MINUTES] ? _(MINUTES) : zero,
149
+ S = u[SECONDS] ? _(SECONDS) : zero,
150
+ L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;
159
151
  return function (v) {
160
152
  t.setTime(+v);
161
153
  const year = y(t);
162
154
  return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));
163
155
  };
164
156
  }
165
-
166
157
  function getUnit(f, inv, step, phase) {
167
158
  const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);
168
159
  return inv ? (d, y) => inv(u(d, y), y) : u;
169
- } // returns the day of the year based on week number, day of week,
170
- // and the day of the week for the first day of the year
171
-
160
+ }
172
161
 
162
+ // returns the day of the year based on week number, day of week,
163
+ // and the day of the week for the first day of the year
173
164
  function weekday(week, day, firstDay) {
174
165
  return day + week * 7 - (firstDay + 6) % 7;
175
- } // -- LOCAL TIME --
166
+ }
176
167
 
168
+ // -- LOCAL TIME --
177
169
 
178
170
  const localGet = {
179
171
  [YEAR]: d => d.getFullYear(),
@@ -195,7 +187,9 @@ const localInv = {
195
187
  };
196
188
  function timeFloor(units, step) {
197
189
  return floor(units, step || 1, localGet, localInv, localDate);
198
- } // -- UTC TIME --
190
+ }
191
+
192
+ // -- UTC TIME --
199
193
 
200
194
  const utcGet = {
201
195
  [YEAR]: d => d.getUTCFullYear(),
@@ -251,22 +245,18 @@ function timeInterval(unit) {
251
245
  function utcInterval(unit) {
252
246
  return utcIntervals[unit];
253
247
  }
254
-
255
248
  function offset(ival, date, step) {
256
249
  return ival ? ival.offset(date, step) : undefined;
257
250
  }
258
-
259
251
  function timeOffset(unit, date, step) {
260
252
  return offset(timeInterval(unit), date, step);
261
253
  }
262
254
  function utcOffset(unit, date, step) {
263
255
  return offset(utcInterval(unit), date, step);
264
256
  }
265
-
266
257
  function sequence(ival, start, stop, step) {
267
258
  return ival ? ival.range(start, stop, step) : undefined;
268
259
  }
269
-
270
260
  function timeSequence(unit, start, stop, step) {
271
261
  return sequence(timeInterval(unit), start, stop, step);
272
262
  }
@@ -275,29 +265,28 @@ function utcSequence(unit, start, stop, step) {
275
265
  }
276
266
 
277
267
  const durationSecond = 1000,
278
- durationMinute = durationSecond * 60,
279
- durationHour = durationMinute * 60,
280
- durationDay = durationHour * 24,
281
- durationWeek = durationDay * 7,
282
- durationMonth = durationDay * 30,
283
- durationYear = durationDay * 365;
268
+ durationMinute = durationSecond * 60,
269
+ durationHour = durationMinute * 60,
270
+ durationDay = durationHour * 24,
271
+ durationWeek = durationDay * 7,
272
+ durationMonth = durationDay * 30,
273
+ durationYear = durationDay * 365;
284
274
  const Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],
285
- Seconds = Milli.slice(0, -1),
286
- Minutes = Seconds.slice(0, -1),
287
- Hours = Minutes.slice(0, -1),
288
- Day = Hours.slice(0, -1),
289
- Week = [YEAR, WEEK],
290
- Month = [YEAR, MONTH],
291
- Year = [YEAR];
275
+ Seconds = Milli.slice(0, -1),
276
+ Minutes = Seconds.slice(0, -1),
277
+ Hours = Minutes.slice(0, -1),
278
+ Day = Hours.slice(0, -1),
279
+ Week = [YEAR, WEEK],
280
+ Month = [YEAR, MONTH],
281
+ Year = [YEAR];
292
282
  const intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];
293
283
  function bin (opt) {
294
284
  const ext = opt.extent,
295
- max = opt.maxbins || 40,
296
- target = Math.abs(span(ext)) / max;
285
+ max = opt.maxbins || 40,
286
+ target = Math.abs(span(ext)) / max;
297
287
  let i = bisector(i => i[2]).right(intervals, target),
298
- units,
299
- step;
300
-
288
+ units,
289
+ step;
301
290
  if (i === intervals.length) {
302
291
  units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);
303
292
  } else if (i) {
@@ -308,7 +297,6 @@ function bin (opt) {
308
297
  units = Milli;
309
298
  step = Math.max(tickStep(ext[0], ext[1], max), 1);
310
299
  }
311
-
312
300
  return {
313
301
  units,
314
302
  step
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vega-time",
3
- "version": "2.0.4",
3
+ "version": "2.1.1",
4
4
  "description": "JavaScript date/time utilities for Vega.",
5
5
  "keywords": [
6
6
  "vega",
@@ -16,15 +16,15 @@
16
16
  "repository": "vega/vega",
17
17
  "scripts": {
18
18
  "prebuild": "rimraf build",
19
- "build": "rollup -c",
19
+ "build": "rollup -c rollup.config.mjs",
20
20
  "pretest": "yarn build --config-test",
21
21
  "test": "tape 'test/**/*-test.js'",
22
22
  "prepublishOnly": "yarn test && yarn build"
23
23
  },
24
24
  "dependencies": {
25
- "d3-array": "^2.7.1",
26
- "d3-time": "^2.0.0",
27
- "vega-util": "^1.15.2"
25
+ "d3-array": "^3.2.2",
26
+ "d3-time": "^3.1.0",
27
+ "vega-util": "^1.17.1"
28
28
  },
29
- "gitHead": "4affcbedb9d14815dbb6d3b250ed231b54fc95c0"
29
+ "gitHead": "fb1092f6b931d450f9c210b67ae4752bd3dd461b"
30
30
  }
@@ -0,0 +1 @@
1
+ export { default } from '../../rollup.config.mjs';
package/rollup.config.js DELETED
@@ -1 +0,0 @@
1
- export { default } from '../../rollup.config';