code: function continuous(deinterpolate, reinterpolate) {
      var domain = unit, range = unit, interpolate$$1 = interpolateValue, clamp = false, piecewise, output, input;
      function rescale() {
          piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
          output = input = null;
          return scale;
      }
      function scale(x) {
          return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);
      }
      scale.invert = function (y) {
          return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);
      };
      scale.domain = function (_) {
          return arguments.length ? (domain = map$3.call(_, number$1), rescale()) : domain.slice();
      };
      scale.range = function (_) {
          return arguments.length ? (range = slice$1.call(_), rescale()) : range.slice();
      };
      scale.rangeRound = function (_) {
          return range = slice$1.call(_), interpolate$$1 = interpolateRound, rescale();
      };
      scale.clamp = function (_) {
          return arguments.length ? (clamp = !!_, rescale()) : clamp;
      };
      scale.interpolate = function (_) {
          return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;
      };
      return rescale();
  }
docs: deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].