| 15589 | } |
| 15590 | |
| 15591 | function threshold() { |
| 15592 | var domain = [0.5], |
| 15593 | range = [0, 1], |
| 15594 | unknown, |
| 15595 | n = 1; |
| 15596 | |
| 15597 | function scale(x) { |
| 15598 | return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown; |
| 15599 | } |
| 15600 | |
| 15601 | scale.domain = function(_) { |
| 15602 | return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); |
| 15603 | }; |
| 15604 | |
| 15605 | scale.range = function(_) { |
| 15606 | return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); |
| 15607 | }; |
| 15608 | |
| 15609 | scale.invertExtent = function(y) { |
| 15610 | var i = range.indexOf(y); |
| 15611 | return [domain[i - 1], domain[i]]; |
| 15612 | }; |
| 15613 | |
| 15614 | scale.unknown = function(_) { |
| 15615 | return arguments.length ? (unknown = _, scale) : unknown; |
| 15616 | }; |
| 15617 | |
| 15618 | scale.copy = function() { |
| 15619 | return threshold() |
| 15620 | .domain(domain) |
| 15621 | .range(range) |
| 15622 | .unknown(unknown); |
| 15623 | }; |
| 15624 | |
| 15625 | return initRange.apply(scale, arguments); |
| 15626 | } |
| 15627 | |
| 15628 | const t0 = new Date, t1 = new Date; |
| 15629 | |