{"version":3,"sources":["webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-brush/src/constant.js","webpack:///./node_modules/d3-brush/src/noevent.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-brush/src/event.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-selection/src/pointer.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js"],"names":["taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","this","_call","_time","_next","timer","callback","delay","time","t","restart","wake","e","call","undefined","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","prototype","constructor","TypeError","stop","src_timeout","elapsed","emptyOn","dispatch","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","transition_schedule","node","name","id","index","group","timing","schedules","__transition","self","tween","start","i","j","n","o","state","on","__data__","tick","Array","length","value","duration","ease","create","init","schedule","get","Error","set","svgNode","interrupt","active","empty","degrees","Math","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","a","b","c","d","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","s","q","xa","ya","xb","yb","push","x","number","translate","scale","join","interpolateTransformCss","m","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","document","createElementNS","setAttribute","transform","baseVal","consolidate","matrix","tweenValue","transition","_id","each","apply","arguments","transition_interpolate","interpolateNumber","color","interpolateRgb","interpolateString","Selection","selection","styleRemove","style","removeProperty","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","select","selector","subgroups","subnode","subgroup","selectAll","selectorAll","child","children","inherit","k","l","selectChild","selectChildren","filter","match","matcher","merge","groups0","groups1","m0","m1","min","merges","group0","group1","id0","id1","nodes","size","listener","on0","on1","sit","trim","split","every","indexOf","slice","copy","onFunction","attr","fullname","namespace","interpolate","attrTween","local","string00","string10","interpolate0","string0","string1","value1","getAttributeNS","space","removeAttributeNS","getAttribute","removeAttribute","key","_value","i0","setAttributeNS","attrInterpolateNS","attrInterpolate","priority","styleTween","styleNull","styleFunction","listener0","remove","event","styleMaybeRemove","styleConstant","setProperty","styleInterpolate","text","textContent","textFunction","textConstant","textTween","textInterpolate","parent","parentNode","removeChild","tween0","tween1","splice","easeConstant","easeVarying","v","end","that","Promise","resolve","reject","cancel","_","[object Object]","Symbol","iterator","defaultTiming","noevent","preventDefault","stopImmediatePropagation","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","abs","max","number1","number2","X","handles","map","type","input","output","xy","Y","y","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","svg","ownerSVGElement","hasAttribute","viewBox","width","height","defaultTouchable","navigator","maxTouchPoints","__brush","brushX","brush","dim","touchending","extent","touchable","keys","listeners","handleSize","property","initialize","data","enter","append","handle","exit","redraw","started","touchmoved","touchended","emitter","args","clean","emit","Emitter","touches","w0","w1","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","target","mode","metaKey","altKey","signX","signY","W","N","E","S","dx","dy","shifting","shiftKey","points","from","identifier","pointer","point0","beforestart","pts","move","moved","ended","view","keyCode","dragDisable","p","changedTouches","cur","point","nopropagation","dragEnable","selection0","selection1","clear","starting","datum","sourceEvent","Object","defineProperties","enumerable","configurable","constant","keyModifiers","values","valueof","__webpack_require__","__webpack_exports__","currentTarget","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","left","clientLeft","top","clientTop","pageX","pageY","noop","test","Dispatch","concat","typename","types","T","hasOwnProperty","nonpassivecapture","capture","passive","root","documentElement","__noselect","MozUserSelect","yesdrag","noclick"],"mappings":"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","file":"assets/js/3.js","sourcesContent":["var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","export default x => () => x;\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, nonpassivecapture);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n"],"sourceRoot":""}