Download node_modules/d3-time/dist/d3-time.js from NKessler/Horizon: direct link, hf CLI and curl.
- Browser
- Download file 13.9 kB
-
https://huggingface.co/NKessler/Horizon/resolve/main/node_modules/d3-time/dist/d3-time.js
- Command line
-
hf download hf://NKessler/Horizon/node_modules/d3-time/dist/d3-time.js
-
curl -L -o d3-time.js https://huggingface.co/NKessler/Horizon/resolve/main/node_modules/d3-time/dist/d3-time.js
13.9 kB
| // https://d3js.org/d3-time/ v3.1.0 Copyright 2010-2022 Mike Bostock | |
| (function (global, factory) { | |
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : | |
| typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : | |
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {}, global.d3)); | |
| })(this, (function (exports, d3Array) { 'use strict'; | |
| const t0 = new Date, t1 = new Date; | |
| function timeInterval(floori, offseti, count, field) { | |
| function interval(date) { | |
| return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; | |
| } | |
| interval.floor = (date) => { | |
| return floori(date = new Date(+date)), date; | |
| }; | |
| interval.ceil = (date) => { | |
| return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; | |
| }; | |
| interval.round = (date) => { | |
| const d0 = interval(date), d1 = interval.ceil(date); | |
| return date - d0 < d1 - date ? d0 : d1; | |
| }; | |
| interval.offset = (date, step) => { | |
| return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; | |
| }; | |
| interval.range = (start, stop, step) => { | |
| const range = []; | |
| start = interval.ceil(start); | |
| step = step == null ? 1 : Math.floor(step); | |
| if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date | |
| let previous; | |
| do range.push(previous = new Date(+start)), offseti(start, step), floori(start); | |
| while (previous < start && start < stop); | |
| return range; | |
| }; | |
| interval.filter = (test) => { | |
| return timeInterval((date) => { | |
| if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); | |
| }, (date, step) => { | |
| if (date >= date) { | |
| if (step < 0) while (++step <= 0) { | |
| while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty | |
| } else while (--step >= 0) { | |
| while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty | |
| } | |
| } | |
| }); | |
| }; | |
| if (count) { | |
| interval.count = (start, end) => { | |
| t0.setTime(+start), t1.setTime(+end); | |
| floori(t0), floori(t1); | |
| return Math.floor(count(t0, t1)); | |
| }; | |
| interval.every = (step) => { | |
| step = Math.floor(step); | |
| return !isFinite(step) || !(step > 0) ? null | |
| : !(step > 1) ? interval | |
| : interval.filter(field | |
| ? (d) => field(d) % step === 0 | |
| : (d) => interval.count(0, d) % step === 0); | |
| }; | |
| } | |
| return interval; | |
| } | |
| const millisecond = timeInterval(() => { | |
| // noop | |
| }, (date, step) => { | |
| date.setTime(+date + step); | |
| }, (start, end) => { | |
| return end - start; | |
| }); | |
| // An optimized implementation for this simple case. | |
| millisecond.every = (k) => { | |
| k = Math.floor(k); | |
| if (!isFinite(k) || !(k > 0)) return null; | |
| if (!(k > 1)) return millisecond; | |
| return timeInterval((date) => { | |
| date.setTime(Math.floor(date / k) * k); | |
| }, (date, step) => { | |
| date.setTime(+date + step * k); | |
| }, (start, end) => { | |
| return (end - start) / k; | |
| }); | |
| }; | |
| const milliseconds = millisecond.range; | |
| const durationSecond = 1000; | |
| const durationMinute = durationSecond * 60; | |
| const durationHour = durationMinute * 60; | |
| const durationDay = durationHour * 24; | |
| const durationWeek = durationDay * 7; | |
| const durationMonth = durationDay * 30; | |
| const durationYear = durationDay * 365; | |
| const second = timeInterval((date) => { | |
| date.setTime(date - date.getMilliseconds()); | |
| }, (date, step) => { | |
| date.setTime(+date + step * durationSecond); | |
| }, (start, end) => { | |
| return (end - start) / durationSecond; | |
| }, (date) => { | |
| return date.getUTCSeconds(); | |
| }); | |
| const seconds = second.range; | |
| const timeMinute = timeInterval((date) => { | |
| date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); | |
| }, (date, step) => { | |
| date.setTime(+date + step * durationMinute); | |
| }, (start, end) => { | |
| return (end - start) / durationMinute; | |
| }, (date) => { | |
| return date.getMinutes(); | |
| }); | |
| const timeMinutes = timeMinute.range; | |
| const utcMinute = timeInterval((date) => { | |
| date.setUTCSeconds(0, 0); | |
| }, (date, step) => { | |
| date.setTime(+date + step * durationMinute); | |
| }, (start, end) => { | |
| return (end - start) / durationMinute; | |
| }, (date) => { | |
| return date.getUTCMinutes(); | |
| }); | |
| const utcMinutes = utcMinute.range; | |
| const timeHour = timeInterval((date) => { | |
| date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); | |
| }, (date, step) => { | |
| date.setTime(+date + step * durationHour); | |
| }, (start, end) => { | |
| return (end - start) / durationHour; | |
| }, (date) => { | |
| return date.getHours(); | |
| }); | |
| const timeHours = timeHour.range; | |
| const utcHour = timeInterval((date) => { | |
| date.setUTCMinutes(0, 0, 0); | |
| }, (date, step) => { | |
| date.setTime(+date + step * durationHour); | |
| }, (start, end) => { | |
| return (end - start) / durationHour; | |
| }, (date) => { | |
| return date.getUTCHours(); | |
| }); | |
| const utcHours = utcHour.range; | |
| const timeDay = timeInterval( | |
| date => date.setHours(0, 0, 0, 0), | |
| (date, step) => date.setDate(date.getDate() + step), | |
| (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay, | |
| date => date.getDate() - 1 | |
| ); | |
| const timeDays = timeDay.range; | |
| const utcDay = timeInterval((date) => { | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCDate(date.getUTCDate() + step); | |
| }, (start, end) => { | |
| return (end - start) / durationDay; | |
| }, (date) => { | |
| return date.getUTCDate() - 1; | |
| }); | |
| const utcDays = utcDay.range; | |
| const unixDay = timeInterval((date) => { | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCDate(date.getUTCDate() + step); | |
| }, (start, end) => { | |
| return (end - start) / durationDay; | |
| }, (date) => { | |
| return Math.floor(date / durationDay); | |
| }); | |
| const unixDays = unixDay.range; | |
| function timeWeekday(i) { | |
| return timeInterval((date) => { | |
| date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); | |
| date.setHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setDate(date.getDate() + step * 7); | |
| }, (start, end) => { | |
| return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; | |
| }); | |
| } | |
| const timeSunday = timeWeekday(0); | |
| const timeMonday = timeWeekday(1); | |
| const timeTuesday = timeWeekday(2); | |
| const timeWednesday = timeWeekday(3); | |
| const timeThursday = timeWeekday(4); | |
| const timeFriday = timeWeekday(5); | |
| const timeSaturday = timeWeekday(6); | |
| const timeSundays = timeSunday.range; | |
| const timeMondays = timeMonday.range; | |
| const timeTuesdays = timeTuesday.range; | |
| const timeWednesdays = timeWednesday.range; | |
| const timeThursdays = timeThursday.range; | |
| const timeFridays = timeFriday.range; | |
| const timeSaturdays = timeSaturday.range; | |
| function utcWeekday(i) { | |
| return timeInterval((date) => { | |
| date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCDate(date.getUTCDate() + step * 7); | |
| }, (start, end) => { | |
| return (end - start) / durationWeek; | |
| }); | |
| } | |
| const utcSunday = utcWeekday(0); | |
| const utcMonday = utcWeekday(1); | |
| const utcTuesday = utcWeekday(2); | |
| const utcWednesday = utcWeekday(3); | |
| const utcThursday = utcWeekday(4); | |
| const utcFriday = utcWeekday(5); | |
| const utcSaturday = utcWeekday(6); | |
| const utcSundays = utcSunday.range; | |
| const utcMondays = utcMonday.range; | |
| const utcTuesdays = utcTuesday.range; | |
| const utcWednesdays = utcWednesday.range; | |
| const utcThursdays = utcThursday.range; | |
| const utcFridays = utcFriday.range; | |
| const utcSaturdays = utcSaturday.range; | |
| const timeMonth = timeInterval((date) => { | |
| date.setDate(1); | |
| date.setHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setMonth(date.getMonth() + step); | |
| }, (start, end) => { | |
| return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; | |
| }, (date) => { | |
| return date.getMonth(); | |
| }); | |
| const timeMonths = timeMonth.range; | |
| const utcMonth = timeInterval((date) => { | |
| date.setUTCDate(1); | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCMonth(date.getUTCMonth() + step); | |
| }, (start, end) => { | |
| return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; | |
| }, (date) => { | |
| return date.getUTCMonth(); | |
| }); | |
| const utcMonths = utcMonth.range; | |
| const timeYear = timeInterval((date) => { | |
| date.setMonth(0, 1); | |
| date.setHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setFullYear(date.getFullYear() + step); | |
| }, (start, end) => { | |
| return end.getFullYear() - start.getFullYear(); | |
| }, (date) => { | |
| return date.getFullYear(); | |
| }); | |
| // An optimized implementation for this simple case. | |
| timeYear.every = (k) => { | |
| return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { | |
| date.setFullYear(Math.floor(date.getFullYear() / k) * k); | |
| date.setMonth(0, 1); | |
| date.setHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setFullYear(date.getFullYear() + step * k); | |
| }); | |
| }; | |
| const timeYears = timeYear.range; | |
| const utcYear = timeInterval((date) => { | |
| date.setUTCMonth(0, 1); | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCFullYear(date.getUTCFullYear() + step); | |
| }, (start, end) => { | |
| return end.getUTCFullYear() - start.getUTCFullYear(); | |
| }, (date) => { | |
| return date.getUTCFullYear(); | |
| }); | |
| // An optimized implementation for this simple case. | |
| utcYear.every = (k) => { | |
| return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => { | |
| date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); | |
| date.setUTCMonth(0, 1); | |
| date.setUTCHours(0, 0, 0, 0); | |
| }, (date, step) => { | |
| date.setUTCFullYear(date.getUTCFullYear() + step * k); | |
| }); | |
| }; | |
| const utcYears = utcYear.range; | |
| function ticker(year, month, week, day, hour, minute) { | |
| const tickIntervals = [ | |
| [second, 1, durationSecond], | |
| [second, 5, 5 * durationSecond], | |
| [second, 15, 15 * durationSecond], | |
| [second, 30, 30 * durationSecond], | |
| [minute, 1, durationMinute], | |
| [minute, 5, 5 * durationMinute], | |
| [minute, 15, 15 * durationMinute], | |
| [minute, 30, 30 * durationMinute], | |
| [ hour, 1, durationHour ], | |
| [ hour, 3, 3 * durationHour ], | |
| [ hour, 6, 6 * durationHour ], | |
| [ hour, 12, 12 * durationHour ], | |
| [ day, 1, durationDay ], | |
| [ day, 2, 2 * durationDay ], | |
| [ week, 1, durationWeek ], | |
| [ month, 1, durationMonth ], | |
| [ month, 3, 3 * durationMonth ], | |
| [ year, 1, durationYear ] | |
| ]; | |
| function ticks(start, stop, count) { | |
| const reverse = stop < start; | |
| if (reverse) [start, stop] = [stop, start]; | |
| const interval = count && typeof count.range === "function" ? count : tickInterval(start, stop, count); | |
| const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop | |
| return reverse ? ticks.reverse() : ticks; | |
| } | |
| function tickInterval(start, stop, count) { | |
| const target = Math.abs(stop - start) / count; | |
| const i = d3Array.bisector(([,, step]) => step).right(tickIntervals, target); | |
| if (i === tickIntervals.length) return year.every(d3Array.tickStep(start / durationYear, stop / durationYear, count)); | |
| if (i === 0) return millisecond.every(Math.max(d3Array.tickStep(start, stop, count), 1)); | |
| const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; | |
| return t.every(step); | |
| } | |
| return [ticks, tickInterval]; | |
| } | |
| const [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute); | |
| const [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute); | |
| exports.timeDay = timeDay; | |
| exports.timeDays = timeDays; | |
| exports.timeFriday = timeFriday; | |
| exports.timeFridays = timeFridays; | |
| exports.timeHour = timeHour; | |
| exports.timeHours = timeHours; | |
| exports.timeInterval = timeInterval; | |
| exports.timeMillisecond = millisecond; | |
| exports.timeMilliseconds = milliseconds; | |
| exports.timeMinute = timeMinute; | |
| exports.timeMinutes = timeMinutes; | |
| exports.timeMonday = timeMonday; | |
| exports.timeMondays = timeMondays; | |
| exports.timeMonth = timeMonth; | |
| exports.timeMonths = timeMonths; | |
| exports.timeSaturday = timeSaturday; | |
| exports.timeSaturdays = timeSaturdays; | |
| exports.timeSecond = second; | |
| exports.timeSeconds = seconds; | |
| exports.timeSunday = timeSunday; | |
| exports.timeSundays = timeSundays; | |
| exports.timeThursday = timeThursday; | |
| exports.timeThursdays = timeThursdays; | |
| exports.timeTickInterval = timeTickInterval; | |
| exports.timeTicks = timeTicks; | |
| exports.timeTuesday = timeTuesday; | |
| exports.timeTuesdays = timeTuesdays; | |
| exports.timeWednesday = timeWednesday; | |
| exports.timeWednesdays = timeWednesdays; | |
| exports.timeWeek = timeSunday; | |
| exports.timeWeeks = timeSundays; | |
| exports.timeYear = timeYear; | |
| exports.timeYears = timeYears; | |
| exports.unixDay = unixDay; | |
| exports.unixDays = unixDays; | |
| exports.utcDay = utcDay; | |
| exports.utcDays = utcDays; | |
| exports.utcFriday = utcFriday; | |
| exports.utcFridays = utcFridays; | |
| exports.utcHour = utcHour; | |
| exports.utcHours = utcHours; | |
| exports.utcMillisecond = millisecond; | |
| exports.utcMilliseconds = milliseconds; | |
| exports.utcMinute = utcMinute; | |
| exports.utcMinutes = utcMinutes; | |
| exports.utcMonday = utcMonday; | |
| exports.utcMondays = utcMondays; | |
| exports.utcMonth = utcMonth; | |
| exports.utcMonths = utcMonths; | |
| exports.utcSaturday = utcSaturday; | |
| exports.utcSaturdays = utcSaturdays; | |
| exports.utcSecond = second; | |
| exports.utcSeconds = seconds; | |
| exports.utcSunday = utcSunday; | |
| exports.utcSundays = utcSundays; | |
| exports.utcThursday = utcThursday; | |
| exports.utcThursdays = utcThursdays; | |
| exports.utcTickInterval = utcTickInterval; | |
| exports.utcTicks = utcTicks; | |
| exports.utcTuesday = utcTuesday; | |
| exports.utcTuesdays = utcTuesdays; | |
| exports.utcWednesday = utcWednesday; | |
| exports.utcWednesdays = utcWednesdays; | |
| exports.utcWeek = utcSunday; | |
| exports.utcWeeks = utcSundays; | |
| exports.utcYear = utcYear; | |
| exports.utcYears = utcYears; | |
| })); | |