{"version":3,"sources":["webpack:///./src/components/Map/Map.vue?f801","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/pointer.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-transition/src/selection/interrupt.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/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.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/easeVarying.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/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.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/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.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/textTween.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-array/src/fsum.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/topojson-client/src/identity.js","webpack:///./node_modules/topojson-client/src/transform.js","webpack:///./node_modules/topojson-client/src/reverse.js","webpack:///./node_modules/topojson-client/src/feature.js","webpack:///./node_modules/topojson-client/src/bisect.js","webpack:///./src/components/Map/Map.vue","webpack:///./src/components/Map/Map.vue?000d","webpack:///./src/data/redSeries.ts","webpack:///./src/components/Map/Legend.vue?c8c6","webpack:///./src/components/Map/Legend.vue","webpack:///./src/components/Map/Legend.vue?223e","webpack:///./src/components/MetricGrid.vue?4222","webpack:///./src/components/MetricGrid.vue","webpack:///./src/components/MetricGrid.vue?b52e","webpack:///./src/components/MetricStat.vue?30b3","webpack:///./src/components/MetricStat.vue","webpack:///./src/components/MetricStat.vue?6415","webpack:///./src/components/MetricSource.vue?5afe","webpack:///./src/components/MetricSource.vue","webpack:///./src/components/MetricSource.vue?a4a9","webpack:///./src/components/MetricHighlight.vue?bc0a","webpack:///./src/components/MetricHighlight.vue","webpack:///./src/components/MetricHighlight.vue?9b35","webpack:///./src/components/MetricSource.vue?da49","webpack:///./src/components/MetricTitle.vue?85b8","webpack:///./src/components/MetricTitle.vue","webpack:///./src/components/MetricTitle.vue?02f0","webpack:///./src/data/greenSeries.ts","webpack:///./src/components/Map/Map.vue?227f","webpack:///./src/components/MetricStat.vue?0823","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/components/Map/Legend.vue?df89","webpack:///./src/components/SectionTitle.vue?8763","webpack:///./src/components/SectionTitle.vue","webpack:///./src/components/SectionTitle.vue?47b1"],"names":["_hoisted_1","ref","_hoisted_2","_hoisted_3","class","_hoisted_4","render","_ctx","_cache","$props","$setup","$data","$options","showPopup","key","style","showClose","onClick","closePopup","popupState","popupRate","noop","value","dispatch","t","i","n","arguments","length","_","test","Error","Dispatch","this","parseTypenames","typenames","types","trim","split","map","name","indexOf","slice","hasOwnProperty","type","get","c","set","callback","concat","push","prototype","constructor","on","typename","T","copy","call","that","args","Array","apply","none","selector","querySelector","select","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","array","x","isArray","from","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","filter","childrenFilter","selectAll","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","has","delete","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","selection","append","onupdate","onexit","remove","merge","order","context","groups0","groups1","m0","m1","Math","min","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","a","b","compare","ascending","sortgroups","sortgroup","sort","NaN","size","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","getAttribute","each","defaultView","document","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","event","onRemove","__on","o","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","nodes","selection_node","selection_size","empty","selection_empty","attr","selection_style","classed","text","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_datum","selection_on","selection_dispatch","Symbol","iterator","nonpassivecapture","capture","passive","preventDefault","stopImmediatePropagation","root","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","format","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","max","round","toString","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","k","pow","values","floor","linear","d","exponential","y","gamma","nogamma","color","start","end","rgbGamma","rgbSpline","spline","colors","basisClosed","reA","reB","source","zero","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","index","number","sourceEvent","undefined","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","left","clientLeft","top","clientTop","pageX","pageY","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","f","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","id","tween","timing","duration","ease","state","init","schedule","self","tick","svgNode","active","interrupt","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","transform","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_easeVarying","transition_end","defaultTiming","selection_interrupt","selection_transition","abs","number1","number2","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","Adder","_partials","Float64Array","_n","p","hi","lo","pi","tau","cos","ceil","exp","hypot","log","sin","sign","x00","y00","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","result","area","areaPointFirst","areaPoint","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","dx","dy","z","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","arc","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","circle","radius","_circle","projectionStream","contextStream","path","measure","projection","cosh","sinh","tanh","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","rho","d1","b0","rho4","rho2","b1","r0","r1","coshr0","u","SQRT2","_1","_2","_4","zoomRho","ZoomEvent","target","defineProperties","enumerable","configurable","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","__zoom","ctrlKey","button","SVGElement","hasAttribute","viewBox","width","height","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","navigator","maxTouchPoints","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","touchstarting","touchfirst","touchending","constrain","wheelDelta","touchable","scaleExtent","listeners","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","gesture","w","clean","__zooming","Gesture","taps","pointer","wheel","mouse","wheelidled","mousemoved","mouseupped","x0","y0","moved","changedTouches","k1","shiftKey","started","touches","identifier","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","emit","clickDistance","kx","ky","input","output","topology","objects","bbox","properties","transformPoint","arcs","points","reverse","line","ring","polygon","props","setup","states","mapContainer","mapRef","seriesColors","redSeries","greenSeries","legend","metricData","dataProp","reset","displayPopup","container","wasClicked","stopPropagation","found","Number","toFixed","popStyle","position","minWidth","background","border","borderRadius","boxShadow","display","flexDirection","padding","right","xOffset","yOffset","zoomed","rate","iconCSS","backgroundColor","__exports__","boarder","fill","series","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","$slots","filterTabs","summaryTitle","metricStats","featured","label","String","Boolean","href","metric","$emit","content","title","_defineProperties","descriptor","writable","defineProperty","_createClass","Constructor","protoProps","staticProps"],"mappings":"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","file":"js/chunk-019b8662.51da6979.js","sourcesContent":["import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { ref: \"mapContainer\" }\nconst _hoisted_2 = { ref: \"mapRef\" }\nconst _hoisted_3 = { class: \"state\" }\nconst _hoisted_4 = { class: \"rate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, null, 512)),\n (_ctx.showPopup)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n style: _normalizeStyle(_ctx.style)\n }, [\n (_ctx.showClose)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"close\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.closePopup && _ctx.closePopup (...args)))\n }, \"X\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.popupState), 1),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.popupRate), 1)\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 512))\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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\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 }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else 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 subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.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 Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._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 Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.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, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\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 return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\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","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","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","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\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","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","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\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 {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","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\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","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 {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","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 {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 {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 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","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 {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 {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 {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","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 {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","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 {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 x => x;\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\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 transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\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 {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2, n = input.length, output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\n","export default function(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\"\n ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n return transformPoint(p);\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var type = o.type, coordinates;\n switch (type) {\n case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n case \"Point\": coordinates = point(o.coordinates); break;\n case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n case \"LineString\": coordinates = line(o.arcs); break;\n case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n case \"Polygon\": coordinates = polygon(o.arcs); break;\n case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n default: return null;\n }\n return {type: type, coordinates: coordinates};\n }\n\n return geometry(o);\n}\n","export default function(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n","\r\nimport { defineComponent, onMounted, ref } from \"vue\";\r\nimport * as d3 from \"d3\";\r\nimport * as topojson from \"topojson-client\";\r\nimport { Topology, GeometryCollection } from \"topojson-specification\";\r\nimport { GetLegendItems } from \"@/utils\";\r\nimport stateGeom from \"@/data/states.json\";\r\nimport greenSeries from \"@/data/greenSeries\";\r\nimport redSeries from \"@/data/redSeries\";\r\n\r\nexport default defineComponent({\r\n props: [\"metricData\", \"dataProp\", \"color\"],\r\n setup(props) {\r\n const path = d3.geoPath();\r\n const width = 975;\r\n const height = 610;\r\n const mapContainer = ref();\r\n const mapRef: any = ref(null);\r\n let showPopup = ref(false);\r\n let showClose = ref(false);\r\n let popupState = ref(\"\");\r\n let popupRate = ref(\"\");\r\n let style = ref();\r\n let states: any;\r\n let svg: any;\r\n let zoom: any;\r\n let g: any;\r\n const seriesColors = props.color === \"red\" ? redSeries : greenSeries;\r\n const legend = GetLegendItems(\r\n seriesColors,\r\n props.metricData,\r\n props.dataProp\r\n );\r\n\r\n const closePopup = () => {\r\n showPopup.value = false;\r\n showClose.value = false;\r\n }\r\n\r\n const reset = () => {\r\n states.transition().style(\"fill\", null);\r\n svg\r\n .transition()\r\n .duration(750)\r\n .call(\r\n zoom.transform,\r\n d3.zoomIdentity,\r\n d3.zoomTransform(svg.node()).invert([width / 2, height / 2])\r\n );\r\n showPopup.value = false;\r\n };\r\n\r\n const displayPopup = (event: any, d: any, container: any) => {\r\n const [[x0, y0], [x1, y1]] = path.bounds(d);\r\n const wasClicked = (event.type === \"click\")\r\n event.stopPropagation();\r\n const found = props.metricData.filter(\r\n (x: any) => x.state.toLowerCase() == d.properties.name.toLowerCase()\r\n );\r\n if (found.length > 0 && (wasClicked || (!showClose.value && !wasClicked))) {\r\n showPopup.value = true;\r\n\r\n showClose.value = ((showClose.value && !wasClicked) || wasClicked); // show when clicked or \r\n popupRate.value = `${Number(found[0][props.dataProp]).toFixed(1)}%`;\r\n popupState.value = d.properties.name;\r\n const y = event.clientY;\r\n const x = event.clientX;\r\n\r\n const popStyle = {\r\n position: `fixed`,\r\n minWidth: `170px`,\r\n background: `#FFF`,\r\n border: `1px solid #D0D0D0`,\r\n borderRadius: `2px`,\r\n boxShadow: `0px 4px 8px rgba(0,0,0, 0.2)`,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n padding: `0.5rem 2.25rem 0.5rem 0.75rem`,\r\n top: \"\",\r\n left: \"\",\r\n right: \"\",\r\n };\r\n const rect = container.getBoundingClientRect();\r\n const xOffset = x - rect.left;\r\n const yOffset = y - rect.top;\r\n\r\n if (xOffset > rect.width / 2) {\r\n popStyle.left = `${x - 180}px`;\r\n } else {\r\n popStyle.left = `${x + 10}px`;\r\n }\r\n\r\n if (yOffset > rect.height / 2) {\r\n popStyle.top = `${y - 80}px`;\r\n } else {\r\n popStyle.top = `${y + 10}px`;\r\n }\r\n\r\n style.value = popStyle;\r\n }\r\n };\r\n\r\n const zoomed = (event: any) => {\r\n const { transform } = event;\r\n g.attr(\"transform\", transform);\r\n g.attr(\"stroke-width\", 1 / transform.k);\r\n closePopup();\r\n };\r\n\r\n onMounted(() => {\r\n zoom = d3.zoom().scaleExtent([1, 8]).on(\"zoom\", zoomed);\r\n\r\n svg = d3\r\n .select(mapRef.value)\r\n .attr(\"viewBox\", `0, 0, ${width}, ${height}`)\r\n .on(\"click\", reset);\r\n\r\n g = svg.append(\"g\");\r\n\r\n states = g\r\n .append(\"g\")\r\n .attr(\"cursor\", \"pointer\")\r\n .selectAll(\"path\")\r\n .data(\r\n topojson.feature(\r\n stateGeom as unknown as Topology,\r\n stateGeom.objects.states as GeometryCollection\r\n ).features\r\n )\r\n .join(\"path\")\r\n .on(\"click\", (event: any, d: any) => {\r\n displayPopup(event, d, mapContainer.value);\r\n })\r\n .on(\"mouseover\", (event: any, d: any) => {\r\n displayPopup(event, d, mapContainer.value);\r\n })\r\n .on(\"mouseout\", (event: any, d: any) => {\r\n if (!showClose.value) {\r\n closePopup();\r\n }\r\n })\r\n .attr(\"d\", path)\r\n .attr(\"stroke\", \"#000\")\r\n .attr(\"fill\", (d: any) => {\r\n // Get the state's color\r\n const found = props.metricData.filter(\r\n (x: any) => x.state.toLowerCase() == d.properties.name.toLowerCase()\r\n );\r\n let color = \"#444\";\r\n if (found.length > 0) {\r\n const rate = found[0][props.dataProp];\r\n color = legend.filter((x: any) => {\r\n return rate >= x.min && rate <= x.max;\r\n })[0].iconCSS.backgroundColor;\r\n }\r\n return color;\r\n });\r\n\r\n svg.call(zoom);\r\n });\r\n\r\n return {\r\n mapRef,\r\n mapContainer,\r\n showPopup,\r\n showClose,\r\n popupState,\r\n popupRate,\r\n style,\r\n closePopup,\r\n };\r\n },\r\n});\r\n","import { render } from \"./Map.vue?vue&type=template&id=0475f91d&ts=true\"\nimport script from \"./Map.vue?vue&type=script&lang=ts\"\nexport * from \"./Map.vue?vue&type=script&lang=ts\"\n\nimport \"./Map.vue?vue&type=style&index=0&id=0475f91d&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n { boarder: [0, 0, 0, 1], fill: [254, 240, 217, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [253, 204, 138, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [252, 141, 89, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [227, 74, 51, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [179, 0, 0, 1] }\r\n ];","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\n_pushScopeId(\"data-v-3e4992b8\")\nconst _hoisted_1 = { class: \"legendContainer\" }\n_popScopeId()\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList([0, 1, 2, 3, 4], (index) => {\n return _createElementVNode(\"div\", {\n key: index,\n class: \"legendItem\"\n }, [\n _createElementVNode(\"span\", {\n style: _normalizeStyle(_ctx.legend[index].iconCSS)\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.legend[index].text), 1)\n ])\n }), 64))\n ])\n ]))\n}","\r\nimport { defineComponent } from \"vue\";\r\nimport { GetLegendItems } from \"@/utils\";\r\nexport default defineComponent({\r\n props: [\"series\", \"data\", \"dataProp\"],\r\n setup(props) {\r\n const legend = GetLegendItems(props.series, props.data, props.dataProp);\r\n return {\r\n legend,\r\n };\r\n },\r\n});\r\n","import { render } from \"./Legend.vue?vue&type=template&id=3e4992b8&scoped=true&ts=true\"\nimport script from \"./Legend.vue?vue&type=script&lang=ts\"\nexport * from \"./Legend.vue?vue&type=script&lang=ts\"\n\nimport \"./Legend.vue?vue&type=style&index=0&id=3e4992b8&lang=scss&scoped=true\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3e4992b8\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"row h-xxl-100\" }\nconst _hoisted_2 = { class: \"col-12 col-xxl-7 chart-wrapper px-sm-2 px-md-4 pb-2_5 h-100\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = { class: \"col\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"row mt-2\"\n}\nconst _hoisted_6 = { class: \"col\" }\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = { class: \"col\" }\nconst _hoisted_9 = { class: \"col-12 col-xxl-5 px-sm-2 px-md-4 mt-0 mt-xxl-2_5 h-100 mb-2_5\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"row mt-2_5 mt-xxl-0\"\n}\nconst _hoisted_11 = { class: \"col\" }\nconst _hoisted_12 = {\n key: 1,\n class: \"row row-cols-2\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"metric-title\")\n ])\n ]),\n (_ctx.$slots.filterTabs)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"filterTabs\")\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _renderSlot(_ctx.$slots, \"chart\")\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_ctx.$slots.summaryTitle)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _renderSlot(_ctx.$slots, \"summaryTitle\")\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.metricStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _renderSlot(_ctx.$slots, \"metricStats\")\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"metric-highlight\")\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {},\r\n})\r\nexport default class MetricGrid extends Vue {}\r\n","import { render } from \"./MetricGrid.vue?vue&type=template&id=21d667ac&ts=true\"\nimport script from \"./MetricGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricGrid.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"p\", {\n class: _normalizeClass([\"text-body mb-0_5\", _ctx.featured ? 'text-type-5-bold ' : 'text-type-7-bold '])\n }, _toDisplayString(_ctx.label), 3),\n _createElementVNode(\"p\", {\n class: _normalizeClass(_ctx.featured ? 'display-title' : 'text-type-2-bold')\n }, _toDisplayString(_ctx.value), 3)\n ], 64))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n label: String,\r\n value: String,\r\n featured: Boolean,\r\n },\r\n})\r\nexport default class MetricStat extends Vue {}\r\n","import { render } from \"./MetricStat.vue?vue&type=template&id=47f6cf4a&ts=true\"\nimport script from \"./MetricStat.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricStat.vue?vue&type=script&lang=ts\"\n\nimport \"./MetricStat.vue?vue&type=style&index=0&id=47f6cf4a&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-type-7-bold text-right mb-0 mt-1\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" Source: \")\nconst _hoisted_3 = [\"href\", \"aria-label\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"p\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"a\", {\n href: _ctx.href,\n target: \"_blank\",\n class: \"metric-source text-type-7\",\n \"aria-label\": `Open ${_ctx.metric.metric} source data`\n }, _toDisplayString(_ctx.metric.source), 9, _hoisted_3)\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n metric: Object,\r\n href: String,\r\n },\r\n})\r\nexport default class MetricSource extends Vue {\r\n handleClick() {\r\n this.$emit(\"handleClick\", null);\r\n }\r\n}\r\n","import { render } from \"./MetricSource.vue?vue&type=template&id=618700b8&ts=true\"\nimport script from \"./MetricSource.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricSource.vue?vue&type=script&lang=ts\"\n\nimport \"./MetricSource.vue?vue&type=style&index=0&id=618700b8&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row mt-2\" }\nconst _hoisted_2 = { class: \"col\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"text-type-3-bold\" }, \"Highlights\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.content), 1)\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n content: String,\r\n },\r\n})\r\nexport default class MetricHighlight extends Vue {\r\n title!: string;\r\n}\r\n","import { render } from \"./MetricHighlight.vue?vue&type=template&id=4d996ded&ts=true\"\nimport script from \"./MetricHighlight.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricHighlight.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MetricSource.vue?vue&type=style&index=0&id=618700b8&lang=scss\"","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-type-2-bold\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"h1\", _hoisted_1, _toDisplayString(_ctx.title), 1))\n}","\r\nimport { Options, Vue } from 'vue-class-component';\r\n\r\n@Options({\r\n props: {\r\n title: String\r\n }\r\n})\r\nexport default class MetricTitle extends Vue {\r\n title!: string\r\n}\r\n","import { render } from \"./MetricTitle.vue?vue&type=template&id=43161482&ts=true\"\nimport script from \"./MetricTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricTitle.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default [\r\n { boarder: [0, 0, 0, 1], fill: [233, 247, 227, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [182, 227, 172, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [123, 200, 124, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [42, 146, 74, 1] },\r\n { boarder: [0, 0, 0, 1], fill: [0, 68, 27, 1] }\r\n ];","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Map.vue?vue&type=style&index=0&id=0475f91d&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MetricStat.vue?vue&type=style&index=0&id=47f6cf4a&lang=scss\"","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Legend.vue?vue&type=style&index=0&id=3e4992b8&lang=scss&scoped=true\"","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"section-title mb-1_5\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"h2\", _hoisted_1, _toDisplayString(_ctx.title), 1))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n title: String,\r\n },\r\n})\r\nexport default class SectionTitle extends Vue {\r\n title!: string;\r\n}\r\n","import { render } from \"./SectionTitle.vue?vue&type=template&id=af6d4d54&ts=true\"\nimport script from \"./SectionTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionTitle.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}