({
domain = "auto",
values = [],
range
}: CreateTimeScaleOptions)
| 8 | }; |
| 9 | |
| 10 | export const createTimeScale = ({ |
| 11 | domain = "auto", |
| 12 | values = [], |
| 13 | range |
| 14 | }: CreateTimeScaleOptions): TimeScale => { |
| 15 | const resolvedDomain = resolveTimeDomain(values, domain); |
| 16 | const domainMin = resolvedDomain[0].valueOf(); |
| 17 | const domainSpan = resolvedDomain[1].valueOf() - domainMin; |
| 18 | const rangeSpan = range[1] - range[0]; |
| 19 | |
| 20 | return { |
| 21 | domain: resolvedDomain, |
| 22 | range, |
| 23 | scale: (value: Date) => { |
| 24 | if (domainSpan === 0) { |
| 25 | return range[0]; |
| 26 | } |
| 27 | |
| 28 | return ( |
| 29 | range[0] + ((value.valueOf() - domainMin) / domainSpan) * rangeSpan |
| 30 | ); |
| 31 | }, |
| 32 | invert: (value: number) => { |
| 33 | if (rangeSpan === 0) { |
| 34 | return new Date(domainMin); |
| 35 | } |
| 36 | |
| 37 | return new Date( |
| 38 | domainMin + ((value - range[0]) / rangeSpan) * domainSpan |
| 39 | ); |
| 40 | } |
| 41 | }; |
| 42 | }; |
no test coverage detected