title: d3 version 4 workaround for drag origin
body: <p>In v3 I used drag origin to prevent a noticeable jump due to the mouse-position/element-coordinates offset.  Is there an alternative in v4 as the origin function has been removed?</p>
  
  <pre><code>var drag1 = d3.behavior.drag()
              .origin(function () {
                  var t = d3.select(this);
                  return {
                      x: t.attr("x") + d3.transform(t.attr("transform")).translate[0],
                      y: t.attr("y") + d3.transform(t.attr("transform")).translate[1]
                  };
              })
              .on("drag", function (d, i) {
                  d3.select(this).attr("transform", function (d, i) {
                      return "translate(" + [d3.event.x, d3.event.y] + ")"
                  })
              });
  
      var drag2 = d3.behavior.drag()
              .origin(function () {
                  var t = d3.select(this);
                  return { x: t.attr("x"), y: t.attr("y") };
              })
              .on("drag", function (d, i) {
                  d3.select(this)
                  .attr("x", d3.event.x)
                  .attr("y", d3.event.y);
              });
  </code></pre>