text: import { d3$scale } from './scale';
  
  var d3$scale$quantize;
  
  d3$scale$quantize = function() {
    return d3_scale_quantize(0, 1, [0, 1]);
  };
  
  function d3_scale_quantize(x0, x1, range) {
    var kx, i;
  
    function scale(x) {
      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
    }
  
    function rescale() {
      kx = range.length / (x1 - x0);
      i = range.length - 1;
      return scale;
    }
  
    scale.domain = function(x) {
      if (!arguments.length) return [x0, x1];
      x0 = +x[0];
      x1 = +x[x.length - 1];
      return rescale();
    };
  
    scale.range = function(x) {
      if (!arguments.length) return range;
      range = x;
      return rescale();
    };
  
    scale.invertExtent = function(y) {
      y = range.indexOf(y);
      y = y < 0 ? NaN : y / kx + x0;
      return [y, y + 1 / kx];
    };
  
    scale.copy = function() {
      return d3_scale_quantize(x0, x1, range); // copy on write
    };
  
    return rescale();
  }
  
  export { d3$scale$quantize, d3_scale_quantize };