{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/library/fn/get-iterator.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./src/components/grafieken/hoverpercentages/hoverpercentages.scss?662c","webpack:///./node_modules/core-js/library/modules/core.get-iterator.js","webpack:///./src/components/UI/printbutton/printbutton.vue?1574","webpack:///./src/components/UI/printbutton/printbutton.vue?e92d","webpack:///./src/components/UI/printbutton/printbutton.vue?ff1f","webpack:///./src/components/UI/printbutton/printbutton.vue?4718","webpack:///./src/views/DesktopViewport.vue?dfbc","webpack:///./src/components/MapComponent.vue?9191","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatDefault.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3/node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-queue/src/array.js","webpack:///./node_modules/d3-queue/src/queue.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-request/src/request.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-request/src/type.js","webpack:///./node_modules/d3-request/src/dsv.js","webpack:///./node_modules/d3-request/src/html.js","webpack:///./node_modules/d3-request/src/json.js","webpack:///./node_modules/d3-request/src/text.js","webpack:///./node_modules/d3-request/src/xml.js","webpack:///./node_modules/d3-request/src/csv.js","webpack:///./node_modules/d3-request/src/tsv.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/colors.js","webpack:///./node_modules/d3-scale/src/category10.js","webpack:///./node_modules/d3-scale/src/category20b.js","webpack:///./node_modules/d3-scale/src/category20c.js","webpack:///./node_modules/d3-scale/src/category20.js","webpack:///./node_modules/d3-scale/src/cubehelix.js","webpack:///./node_modules/d3-scale/src/rainbow.js","webpack:///./node_modules/d3-scale/src/viridis.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-voronoi/src/voronoi.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:///./src/components/kaart/quickview.component.vue?2863","webpack:///./src/components/grafieken/hoverpercentages/hoverpercentages.vue?9026","webpack:///./src/components/grafieken/hoverpercentages/hoverpercentages.vue?032f","webpack:///./src/components/grafieken/hoverpercentages/hoverpercentages.vue?bd21","webpack:///./src/components/grafieken/hoverpercentages/hoverpercentages.vue","webpack:///./src/components/grafieken/hoverprogress/hoverprogress.html","webpack:///./src/components/grafieken/hoverprogress/hoverprogress.vue?e60b","webpack:///./src/components/grafieken/hoverprogress/hoverprogress.vue?7abc","webpack:///./src/components/grafieken/hoverprogress/hoverprogress.vue","webpack:///./src/components/kaart/quickview.component.vue?623f","webpack:///./src/components/kaart/quickview.component.vue?10e9","webpack:///./src/components/kaart/quickview.component.vue?b069","webpack:///./src/components/MapComponent.vue?dcf8","webpack:///./src/components/MapComponent.vue?5c47","webpack:///./src/components/MapComponent.vue?19e7","webpack:///./src/components/sidebar/SideBar.vue?3781","webpack:///./src/components/sidebar/SideBar.vue?7226","webpack:///./src/components/sidebar/SideBar.vue?e149","webpack:///./src/components/sidebar/SideBar.vue?156f","webpack:///./src/views/DesktopViewport.vue?b1e1","webpack:///./src/views/DesktopViewport.vue?6bcb","webpack:///./src/views/DesktopViewport.vue?aa39","webpack:///./node_modules/core-js/library/fn/json/stringify.js","webpack:///./src/components/grafieken/genderverdeling/genderverdeling.vue?9596","webpack:///./src/components/grafieken/genderverdeling/genderverdeling.vue?3819","webpack:///./src/components/grafieken/genderverdeling/genderverdeling.vue?8a2c","webpack:///./src/components/grafieken/genderverdeling/genderverdeling.vue","webpack:///./src/components/sidebar/SideBar.vue?df2c","webpack:///./src/components/kaart/quickview.component.vue?091b","webpack:///./src/components/MapComponent.vue?03b6","webpack:///./src/components/UI/closebutton/closebutton.vue?a069","webpack:///./src/components/UI/printbutton/printbutton.vue?a2a3","webpack:///./src/components/grafieken/genderverdeling/genderverdeling.scss?a908","webpack:///./src/components/grafieken/hoverprogress/hoverprogress.scss?890f","webpack:///./src/components/resultheader/resultheader.scss?200c","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./src/components/resultheader/resultheader.html","webpack:///./src/components/resultheader/resultheader.vue?b74a","webpack:///./src/components/resultheader/resultheader.vue?4cee","webpack:///./src/components/resultheader/resultheader.vue","webpack:///./node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","webpack:///./src/components/UI/closebutton/closebutton.vue?2bf6","webpack:///./src/components/UI/closebutton/closebutton.vue?0765","webpack:///./src/components/UI/closebutton/closebutton.vue?533a","webpack:///./src/components/UI/closebutton/closebutton.vue?a1b6","webpack:///./src/views/DesktopViewport.vue?a349"],"names":["$export","__webpack_require__","fails","defined","quot","createHTML","string","tag","attribute","value","S","String","p1","replace","module","exports","NAME","exec","O","P","F","test","toLowerCase","split","length","$at","iterated","this","_t","_i","point","index","undefined","done","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_hoverpercentages_scss_vue_type_style_index_0_id_8c0249f4_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_hoverpercentages_scss_vue_type_style_index_0_id_8c0249f4_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","n","anObject","get","getIterator","it","iterFn","TypeError","call","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","title","label","aria-label","tabindex","on","click","$event","$emit","xlink:href","staticRenderFns","printbuttonvue_type_script_lang_ts_PrintButtonComponent","_Vue","PrintButtonComponent","_this","Object","classCallCheck","possibleConstructorReturn","getPrototypeOf","DEFAULT_TEXT","DELAY","isHidden","inherits","createClass","key","_this2","setTimeout","vue_property_decorator","__decorate","printbuttonvue_type_script_lang_ts_","printbutton_printbuttonvue_type_script_lang_ts_","component","componentNormalizer","__webpack_exports__","role","id","sideBar","close","mapVisible","viewport","viewPortSize","MapComponentvue_type_template_id_d849eeb0_scoped_true_render","aria-hidden","_v","_s","_f","mapElectionName","hideResults","_e","mapTypeName","map","alt","lijsten","lijst","src","partijLogo","ref","class","mapGeoLocating","geoLocating","disabled","allowZoom","zoomIn","zoomOut","style","name","hoverName","mapType","results","quickData","visible","quickViewVisible","legendName","_l","item","i","fill","legendItems","backgroundColor","color","print","printMap","active","electionType","ELECTION_TYPES","PARLEMENT","to","params","electionTypeName","nis","ELECTION_MAP_NAMES","CONSTITUENCY","ELECTION_NAMES","KANTON","MUNICIPALITY","MAP_TYPES","VOTES","loadMapResults","GID","loadPartijMapResults","lijstkleur","lijstnaam","AGE","loadAgeMapResults","GENDER","loadGenderMapResults","MapComponentvue_type_template_id_d849eeb0_scoped_true_staticRenderFns","Array","prototype","slice","noevent","d3_selection","preventDefault","stopImmediatePropagation","nodrag","view","root","document","documentElement","selection","__noselect","MozUserSelect","yesdrag","noclick","DragEvent","target","type","subject","x","y","dx","dy","dispatch","identifier","_","apply","arguments","brush_type","t","Math","cos","sin","PI","max","map_prefix","Map","object","f","each","set","isArray","o","constructor","has","remove","property","clear","keys","push","values","entries","size","empty","src_map","Set","proto","add","d","_x","_y","add_add","cover","tree","isNaN","parent","xm","ym","xp","yp","right","bottom","j","node","_root","leaf","data","x0","_x0","y0","_y0","x1","_x1","y1","_y1","next","addAll","xz","yz","Infinity","src_cover","floor","z","src_data","visit","src_extent","src_quad","find","radius","x2","y2","q","x3","y3","quads","pop","d2","sqrt","retainer","previous","removeAll","src_root","src_size","callback","child","visitAfter","defaultX","src_x","defaultY","src_y","quadtree","nodes","Quadtree","NaN","leaf_copy","copy","treeProto","source","extent","prefixExponent","formatDecimal","p","toExponential","indexOf","coefficient","src_exponent","abs","formatGroup","grouping","thousands","width","g","substring","reverse","join","formatNumerals","numerals","formatDefault","toPrecision","out","i1","i0","formatPrefixAuto","exponent","min","formatRounded","formatTypes","","%","toFixed","b","round","toString","c","e","r","s","X","toUpperCase","re","formatSpecifier","specifier","FormatSpecifier","match","Error","align","sign","symbol","zero","comma","precision","defaultLocale_locale","src_identity","prefixes","src_locale","locale","group","currency","decimal","percent","newFormat","prefix","suffix","formatType","maybeSuffix","format","valuePrefix","valueSuffix","valueNegative","charCodeAt","padding","formatPrefix","k","pow","defaultLocale","definition","adder","Adder","reset","adder_add","temp","valueOf","a","bv","av","math_epsilon","math_pi","math_halfPi","quarterPi","math_tau","radians","atan","atan2","math_cos","exp","ceil","log","math_sin","tan","acos","asin","noop","cartesian_cartesian","spherical","lambda","phi","cosPhi","cartesianCross","cartesianNormalizeInPlace","l","rotationIdentity","invert","clip_buffer","line","lines","lineStart","lineEnd","rejoin","concat","shift","result","pointEqual","Intersection","points","other","entry","v","segments","compareIntersection","startInside","interpolate","stream","clip","forEach","segment","p0","sort","rejoin_link","start","current","isSubject","array","sum","polygonContains","polygon","normal","angle","winding","m","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","delta","absDelta","antimeridian","arc","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","polygonStart","pointRing","ringStart","ringEnd","polygonEnd","d3_array","clip_compareIntersection","sphere","pointLine","clean","ringSegments","filter","validSegment","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","direction","PathContext","context","_context","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","PathString","_string","string_circle","_circle","transformer","methods","TransformStream","azimuthalRaw","scale","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","equirectangularRaw","gnomonicRaw","naturalEarth1Raw","phi2","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","count_count","children","hierarchy_count","eachAfter","eachBefore","hierarchy_sum","compare","hierarchy_path","end","ancestor","leastCommonAncestor","splice","aNodes","ancestors","bNodes","descendants","leaves","hierarchy_links","links","hierarchy","childs","Node","valued","defaultChildren","depth","computeHeight","node_copy","copyData","height","count","path","dice","TreeNode","A","create","treemap_slice","squarify_phi","squarifyRatio","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","rows","custom","squarify","resquarify","_squarify","d3_queue_src_array_slice","noabort","Queue","_size","_call","_error","_tasks","_data","_waiting","_active","_ended","_start","poke","queue_start","abort","queue_end","maybeNotify","queue","concurrency","defer","await","error","awaitAll","src_defaultSource","random","src_normal","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","irwinHall","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","src_request","sourceRandomBates","randomBates","sourceRandomExponential","randomExponential","url","request","mimeType","response","responseType","event","d3_dispatch","headers","xhr","XMLHttpRequest","user","password","timeout","respond","status","hasResponse","XDomainRequest","onload","onerror","ontimeout","onreadystatechange","readyState","onprogress","header","send","post","method","open","setRequestHeader","overrideMimeType","fixCallback","responseText","src_type","defaultMimeType","dsv","createRange","createContextualFragment","JSON","parse","xml","responseXML","responseOf","d3_dsv","array_array","interval_t0","Date","interval_t1","newInterval","floori","offseti","field","interval","date","d0","d1","offset","step","range","stop","setTime","every","isFinite","millisecond_millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second_second","getUTCSeconds","minute_minute","getMinutes","hour_hour","getTimezoneOffset","getHours","day_day","setHours","setDate","getDate","src_day","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month_month","setMonth","getMonth","getFullYear","year_year","setFullYear","src_year","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","src_utcDay","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","src_utcYear","localDate","H","M","L","utcDate","UTC","newYear","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","B","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","I","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","u","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","w","formatWeekdayNumberSunday","W","formatWeekNumberMonday","locale_formatYear","Y","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","newDate","week","day","parseSpecifier","utcFormat","utcParse","src_defaultLocale_locale","-","0","numberRe","percentRe","requoteRe","requote","names","RegExp","getMilliseconds","getSeconds","getUTCMilliseconds","dow","defaultLocale_defaultLocale","isoSpecifier","formatIsoNative","toISOString","parseIsoNative","colors","d3_interpolate","d3_color","ramp","RedBlackTree","RedBlackNode","C","R","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","insert","after","grandpa","uncle","sibling","red","left","src_RedBlackTree","createEdge","v0","v1","edge","Diagram_edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","bx","by","t0","t1","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","clipEdges","Diagram_epsilon","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","Diagram_epsilon2","ha","hc","circle","before","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","edges","polygons","triangles","s0","e1","s1","that","_found","vx","vy","v2","d3_zoom_src_constant","ZoomEvent","transform","Transform","translate","applyX","applyY","location","invertX","invertY","rescaleX","domain","rescaleY","transform_identity","transform_transform","__zoom","src_noevent_nopropagation","d3_zoom_src_noevent","zoom_defaultFilter","button","zoom_defaultExtent","h","SVGElement","ownerSVGElement","baseVal","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","zoom_defaultTouchable","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","src_zoom","touchstarting","touchending","constrain","wheelDelta","touchable","scaleExtent","duration","gestures","listeners","touchDelay","wheelDelay","clickDistance2","zoom","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","schedule","transition","center","gesture","tween","args","Gesture","wheel","mouse","clearTimeout","d3_transition","wheelidled","mousemoved","mouseupped","clientX","clientY","moved","k1","shiftKey","started","touches","changedTouches","touch0","touch1","l0","l1","dp","dl","collection","interrupt","scaleBy","scaleTo","k0","translateBy","translateTo","emit","clickDistance","quickview_componentvue_type_template_id_8f3bf730_scoped_true_render","hidden","totaalBureaus","election","geteldeBureaus","small","statistiek","complete","definitief","quickview_componentvue_type_template_id_8f3bf730_scoped_true_staticRenderFns","hoverpercentagesvue_type_template_id_8c0249f4_scoped_true_render","barCSS","hoverpercentagesvue_type_template_id_8c0249f4_scoped_true_staticRenderFns","hoverpercentagesvue_type_script_lang_ts_HoverPercentagesComponent","HoverPercentagesComponent","firstRun","sortedLijsten","segmentScale","MAX_VISIBLE","ANIMATION_DELAY","settings","HIDE_RESULTS","listColor","LIST_NUMBER_COLOR","newValue","setDefaultSorting","$nextTick","initGraph","itemScale","amount","_this3","initGraphScale","maxResult","sortedList","orderBy_default","election_result_model","STEMMEN","DESC","omitBlancos","lijstnr","RESULTS_MINIMUM_BUREAUS","hoverpercentagesvue_type_script_lang_ts_","hoverpercentages_hoverpercentagesvue_type_script_lang_ts_","hoverpercentages","hoverprogressvue_type_template_id_d07121d4_scoped_true_render","data-percentage","progressPct","_m","hoverprogressvue_type_template_id_d07121d4_scoped_true_staticRenderFns","hoverprogressvue_type_script_lang_ts_HoverProgressComponent","HoverProgressComponent","percentageBureaus","hoverprogressvue_type_script_lang_ts_decorate","hoverprogressvue_type_script_lang_ts_","hoverprogress_hoverprogressvue_type_script_lang_ts_","hoverprogress_component","hoverprogress","quickview_componentvue_type_script_lang_ts_QuickViewComponent","QuickViewComponent","quickview_componentvue_type_script_lang_ts_decorate","components","genderverdeling","percentages","lvProgress","quickview_componentvue_type_script_lang_ts_","kaart_quickview_componentvue_type_script_lang_ts_","quickview_component_component","quickview_component","MapComponentvue_type_script_lang_ts_MapComponent","MapComponent","map_model","quickViewPositionCSS","stateGeometries","cityGeometries","zoomedIn","markerscale","updatingLayers","console","$store","createMap","then","updateLayers","setColors","projection","mapDom","getElementById","zoomBehavior","zoomed","svg","attr","append","stateBorderContainer","nisContainer","getters","promise_default","all","__awaiter","regeneratorRuntime","mark","_callee","wrap","prev","topojson","objects","features","layerName","datum","resolve","notChanged","lastRouteParams","$route","assign_default","needsUpdating","detectMissingNis","raise","clicked","getFeatures","classed","select","paths","selectAll","geometry","coordinates","exit","properties","_this4","models_colors","NODATA","enter","showTooltip","hideTooltip","setActiveFeature","fileNames","_this5","_callee4","_context4","centered","_this6","setMarker","provincies","query","year","ELECTION_YEAR","bounds","isProvincieraad","isDistrictNis","isProvincie","provincieType","$router","geolocation","zoomToBounds","getZoomLevel","_this7","setLegend","lijstGID","createLijstRanges","utils","createTint","hoverElement","_this9","canFlipRightLeft","realMapWidth","$refs","mapReference","flipPercent","top","scrollTop","hoverNis","printResults","logo","DISABLE_STATS","stadsDistrictBounds","ocmwBounds","MapComponentvue_type_script_lang_ts_decorate","quickview","closebutton","printbutton","MapComponentvue_type_script_lang_ts_","components_MapComponentvue_type_script_lang_ts_","MapComponent_component","components_MapComponent","SideBarvue_type_template_id_495f2bde_scoped_true_render","mapList","aria-labelledby","staticStyle","background-color","keyup","_k","keyCode","favoriteKeys","favorite","xmlns:xlink","favorites","electionNames","loaded","verwant","isNotCurrent","routeElection","electionName","naam","href","SideBarvue_type_template_id_495f2bde_scoped_true_staticRenderFns","SideBarvue_type_script_lang_ts_SideBar","SideBar","typeToName","typeToMapName","localStorage","getItem","sortBy_default","toPairs_default","showMap","elections","SideBarvue_type_script_lang_ts_decorate","DesktopViewport","views_DesktopViewport","SideBarvue_type_script_lang_ts_","sidebar_SideBarvue_type_script_lang_ts_","SideBar_component","sidebar_SideBar","DesktopViewportvue_type_script_lang_ts_DesktopViewport","DesktopViewportvue_type_script_lang_ts_decorate","ResultHeaderComponent","resultheader","DesktopViewportvue_type_script_lang_ts_","views_DesktopViewportvue_type_script_lang_ts_","DesktopViewport_component","core","$JSON","stringify","genderDistributie","vrouw","barCSSWidth","shouldShowBar","vrouwpct","man","totaalVrouw","barCSSWidthTotal","totaalMan","genderverdelingvue_type_script_lang_ts_GenderVerdelingComponent","GenderVerdelingComponent","distributie","totaalVrouwPct","totalScaleAmount","DISPLAY_TRESHOLD","totalScale","emptyGenderDistributie","emptyDistributie","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","get_iterator_default","stats_age_range","err","return","maxPerson","reduce","maxAmount","maxScale","totaalVerkozen","viewport_model","_a","share","genderverdelingvue_type_script_lang_ts_","genderverdeling_genderverdelingvue_type_script_lang_ts_","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SideBar_vue_vue_type_style_index_0_id_495f2bde_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SideBar_vue_vue_type_style_index_0_id_495f2bde_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_quickview_component_vue_vue_type_style_index_0_id_8f3bf730_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_quickview_component_vue_vue_type_style_index_0_id_8f3bf730_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MapComponent_vue_vue_type_style_index_0_id_d849eeb0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MapComponent_vue_vue_type_style_index_0_id_d849eeb0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_closebutton_vue_vue_type_style_index_0_id_368c1770_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_closebutton_vue_vue_type_style_index_0_id_368c1770_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_printbutton_vue_vue_type_style_index_0_id_06e660c5_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_printbutton_vue_vue_type_style_index_0_id_06e660c5_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_genderverdeling_scss_vue_type_style_index_0_id_3bdbb13f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_genderverdeling_scss_vue_type_style_index_0_id_3bdbb13f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_hoverprogress_scss_vue_type_style_index_0_id_d07121d4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_hoverprogress_scss_vue_type_style_index_0_id_d07121d4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_resultheader_scss_vue_type_style_index_0_id_5bbdfc22_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_resultheader_scss_vue_type_style_index_0_id_5bbdfc22_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","isParlement","gotoResultPage","mobileView","toggleFavorite","isFavorite","resultheadervue_type_script_lang_ts_ResultHeaderComponent","checkFavorite","newRoute","oldRoute","currentBasePath","setItem","stringify_default","resultheadervue_type_script_lang_ts_","resultheader_resultheadervue_type_script_lang_ts_","closebuttonvue_type_script_lang_ts_CloseButtonComponent","CloseButtonComponent","closebuttonvue_type_script_lang_ts_","closebutton_closebuttonvue_type_script_lang_ts_","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DesktopViewport_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DesktopViewport_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"js/desktopView.e95186c4.js","sourcesContent":["var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","module.exports = require(\"core-js/library/fn/get-iterator\");","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./hoverpercentages.scss?vue&type=style&index=0&id=8c0249f4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./hoverpercentages.scss?vue&type=style&index=0&id=8c0249f4&scoped=true&lang=scss&\"","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"print-hidden\",attrs:{\"title\":_vm.label,\"aria-label\":_vm.label,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.$emit('print')}}},[_c('svg',{staticClass:\"icon icon-print\"},[_c('use',{attrs:{\"xlink:href\":\"#icon-print\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from 'vue-property-decorator';\n\n@Component\nexport default class PrintButtonComponent extends Vue {\n @Prop() public label: string;\n\n public DEFAULT_TEXT: string = 'Aan het laden'; // anySurfer text\n public DELAY: number = 50; // ms to wait before showing\n\n private isHidden: boolean = true;\n\n constructor() {\n super();\n }\n\n created() {\n setTimeout(() => {\n this.isHidden = false;\n }, this.DELAY);\n }\n\n get invisibleText(): string {\n return this.label || this.DEFAULT_TEXT;\n }\n\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./printbutton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./printbutton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./printbutton.vue?vue&type=template&id=06e660c5&scoped=true&\"\nimport script from \"./printbutton.vue?vue&type=script&lang=ts&\"\nexport * from \"./printbutton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./printbutton.vue?vue&type=style&index=0&id=06e660c5&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06e660c5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"role\":\"presentation\",\"id\":\"desktop-container\"}},[(_vm.mapVisible)?[_c('map-component',{attrs:{\"sideBar\":false},on:{\"close\":function($event){_vm.mapVisible = false}}})]:_c('div',{staticClass:\"print-hidden\",attrs:{\"id\":\"header-image\"}}),_c('ResultHeaderComponent',{attrs:{\"viewport\":_vm.viewPortSize}}),_c('main',[_c('router-view'),_c('SideBar')],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.sideBar)?_c('div',{staticClass:\"mapComponent\",attrs:{\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"mapColumn print-results-hidden\"},[_c('span',{staticClass:\"mapHeader\"},[_c('h2',[_vm._v(_vm._s(_vm._f(\"capitalize\")(_vm.mapElectionName))+\"\\n \"),(!_vm.hideResults)?[_vm._v(\" - \"+_vm._s(_vm.mapTypeName))]:_vm._e(),(_vm.map.lijst)?_c('span',{staticClass:\"logoHolder\"},[_c('img',{attrs:{\"alt\":'Logo ' + _vm.map.lijsten[this.map.lijst]['lijstnaam'],\"src\":_vm.partijLogo}})]):_vm._e()],2),_c('closebutton',{attrs:{\"label\":\"Verberg kaart\"},on:{\"close\":function($event){return _vm.$emit('close')}}})],1),_c('span',{ref:\"mapReference\",staticClass:\"map-container\"},[_c('svg',{class:{ mapGeoLocating: _vm.geoLocating },attrs:{\"role\":\"img\",\"aria-label\":\"Kaart vlaanderen\",\"id\":\"map\"}}),_c('ul',{staticClass:\"map-controls\"},[_c('li',[_c('button',{staticClass:\"button\",attrs:{\"disabled\":!_vm.allowZoom,\"title\":\"Zoom in\"},on:{\"click\":function($event){return _vm.zoomIn()}}},[_vm._v(\"+\")])]),_c('li',[_c('button',{staticClass:\"button\",attrs:{\"disabled\":!_vm.allowZoom,\"title\":\"Zoom uit\"},on:{\"click\":function($event){return _vm.zoomOut()}}},[_vm._v(\"-\\n \")])])]),_c('quickview',{style:(_vm.quickViewPositionCSS),attrs:{\"name\":_vm.hoverName,\"mapType\":_vm.map.mapType,\"results\":_vm.quickData,\"visible\":_vm.quickViewVisible}})],1),_c('ul',{staticClass:\"legend\"},[_c('li',[_c('strong',[_vm._v(_vm._s(_vm.legendName))])]),_vm._l((_vm.legendItems),function(item,i){return _c('li',{class:{fill: i===_vm.legendItems.length-1}},[_c('i',{staticClass:\"print-bg\",style:(_vm.backgroundColor(item.color))}),_vm._v(\" \"+_vm._s(item.label)+\"\\n \")])}),_c('li',[_c('printbutton',{attrs:{\"label\":\"Afdrukken kaart\"},on:{\"print\":function($event){return _vm.printMap()}}})],1)],2)]),_c('nav',{staticClass:\"navColumn print-hidden\"},[_c('ul',{staticClass:\"main\"},[_c('li',{staticClass:\"header\"},[_vm._v(\"Weergave\")]),_c('li',[_c('router-link',{staticClass:\"clickable\",class:{ active: _vm.electionType === _vm.ELECTION_TYPES.PARLEMENT},attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'parlement', nis: '02000'}}}},[_vm._v(\"\\n \"+_vm._s(_vm.ELECTION_MAP_NAMES.PARLEMENT)+\"\\n \")])],1),_c('li',[_c('router-link',{staticClass:\"clickable\",class:{ active: _vm.electionType === _vm.ELECTION_TYPES.CONSTITUENCY},attrs:{\"to\":{ name: 'electionTypeHome', params: { electionTypeName: _vm.ELECTION_NAMES.CONSTITUENCY}}}},[_vm._v(\"\\n \"+_vm._s(_vm.ELECTION_MAP_NAMES.CONSTITUENCY)+\"\\n \")])],1),_c('li',[_c('router-link',{staticClass:\"clickable\",class:{ active: _vm.electionType === _vm.ELECTION_TYPES.KANTON},attrs:{\"to\":{ name: 'electionTypeHome', params: { electionTypeName: _vm.ELECTION_NAMES.KANTON}}}},[_vm._v(\"\\n \"+_vm._s(_vm.ELECTION_MAP_NAMES.KANTON)+\"\\n \")])],1),_c('li',[_c('router-link',{staticClass:\"clickable\",class:{ active: _vm.electionType === _vm.ELECTION_TYPES.MUNICIPALITY},attrs:{\"to\":{ name: 'electionTypeHome', params: { electionTypeName: _vm.ELECTION_NAMES.MUNICIPALITY}}}},[_vm._v(\"\\n \"+_vm._s(_vm.ELECTION_MAP_NAMES.MUNICIPALITY)+\"\\n \")])],1)]),(!_vm.hideResults)?_c('ul',[_c('li',{staticClass:\"header\"},[_vm._v(\"Resultaten per lijst\")]),_c('li',[_c('button',{staticClass:\"clickable\",class:{ active: _vm.map.mapType === _vm.MAP_TYPES.VOTES && !_vm.map.lijst},on:{\"click\":function($event){return _vm.loadMapResults()}}},[_vm._v(\"Sterkste lijst\\n \")])]),_c('li',{staticClass:\"party-select\"},_vm._l((_vm.map.lijsten),function(lijst){return _c('button',{staticClass:\"clickable\",class:{ active: _vm.map.mapType === _vm.MAP_TYPES.VOTES && _vm.map.lijst === lijst.GID},on:{\"click\":function($event){return _vm.loadPartijMapResults(lijst.GID)}}},[_c('i',{style:(_vm.backgroundColor(lijst.lijstkleur))}),_vm._v(\"\\n \"+_vm._s(lijst.lijstnaam)+\"\\n \")])}),0),(_vm.statistiekEnabled)?[_c('li',[_c('button',{staticClass:\"clickable\",class:{ active: _vm.map.mapType === _vm.MAP_TYPES.AGE},on:{\"click\":function($event){return _vm.loadAgeMapResults()}}},[_vm._v(\"Leeftijd verkozenen\\n \")])]),_c('li',[_c('button',{staticClass:\"clickable\",class:{ active: _vm.map.mapType === _vm.MAP_TYPES.GENDER},on:{\"click\":function($event){return _vm.loadGenderMapResults()}}},[_vm._v(\"Genderverdeling\\n \")])])]:_vm._e()],2):_vm._e()])]):_c('svg',{attrs:{\"role\":\"img\",\"aria-label\":\"Kaart vlaanderen\",\"id\":\"map\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export var slice = Array.prototype.slice;\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\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, true);\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 DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag\";\nimport noevent, {nopropagation} from \"./noevent\";\nimport constant from \"./constant\";\nimport DragEvent from \"./event\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return \"ontouchstart\" in this;\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport BrushEvent from \"./event\";\nimport noevent, {nopropagation} from \"./noevent\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nvar X = {\n name: \"x\",\n handles: [\"e\", \"w\"].map(type),\n input: function(x, e) { return x && [[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 && [[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\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n input: function(xy) { return 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() {\n return !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\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 listeners = dispatch(brush, \"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 .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n .on(\"mousedown.brush touchstart.brush\", started);\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\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 && empty(selection1) ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 && selection1 ? 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 || empty(selection1) ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\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) {\n return that.__brush.emitter || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\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() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); }\n else if (touchending) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (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,\n dy,\n moving,\n shifting = signX && signY && event.shiftKey,\n lockX,\n lockY,\n point0 = mouse(that),\n point = point0,\n emit = emitter(that, arguments).beforestart();\n\n if (type === \"overlay\") {\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\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 group\n .on(\"touchmove.brush\", moved, true)\n .on(\"touchend.brush touchcancel.brush\", ended, true);\n } else {\n var view = select(event.view)\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = mouse(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\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 = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.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();\n }\n }\n\n function ended() {\n nopropagation();\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 group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\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();\n }\n\n function keydowned() {\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();\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();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\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();\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();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = 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([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\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 var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = 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\n // If there were no (valid) points, inherit the existing extent.\n if (x1 < x0) x0 = this._x0, x1 = this._x1;\n if (y1 < y0) y0 = this._y0, y1 = this._y1;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else if (x0 > x || x > x1 || y0 > y || y > y1) {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {\n case 0: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);\n break;\n }\n case 1: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);\n break;\n }\n case 2: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);\n break;\n }\n case 3: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);\n break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n // If the quadtree covers the point already, just return.\n else return this;\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick() {\n var i, n = nodes.length, node;\n\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","export default function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDefault from \"./formatDefault\";\nimport formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","import formatTypes from \"./formatTypes\";\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n","export default function(x) {\n return x;\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value†part that can be\n // grouped, and fractional or exponential “suffix†part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\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 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 \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = 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.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\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 {tau} from \"../math\";\nimport noop from \"../noop\";\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 \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = 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.reset();\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","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n dx, dy, lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n theta = null, preclip = clipAntimeridian, // clip angle\n x0 = null, y0, x1, y1, postclip = identity, // clip extent\n delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n cache,\n cacheStream;\n\n function projection(point) {\n point = projectRotate(point[0] * radians, point[1] * radians);\n return [point[0] * k + dx, dy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n function projectTransform(x, y) {\n return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export var slice = [].slice;\n","import {slice} from \"./array\";\n\nvar noabort = {};\n\nfunction Queue(size) {\n this._size = size;\n this._call =\n this._error = null;\n this._tasks = [];\n this._data = [];\n this._waiting =\n this._active =\n this._ended =\n this._start = 0; // inside a synchronous task callback?\n}\n\nQueue.prototype = queue.prototype = {\n constructor: Queue,\n defer: function(callback) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n if (this._call) throw new Error(\"defer after await\");\n if (this._error != null) return this;\n var t = slice.call(arguments, 1);\n t.push(callback);\n ++this._waiting, this._tasks.push(t);\n poke(this);\n return this;\n },\n abort: function() {\n if (this._error == null) abort(this, new Error(\"abort\"));\n return this;\n },\n await: function(callback) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n if (this._call) throw new Error(\"multiple await\");\n this._call = function(error, results) { callback.apply(null, [error].concat(results)); };\n maybeNotify(this);\n return this;\n },\n awaitAll: function(callback) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback\");\n if (this._call) throw new Error(\"multiple await\");\n this._call = callback;\n maybeNotify(this);\n return this;\n }\n};\n\nfunction poke(q) {\n if (!q._start) {\n try { start(q); } // let the current task complete\n catch (e) {\n if (q._tasks[q._ended + q._active - 1]) abort(q, e); // task errored synchronously\n else if (!q._data) throw e; // await callback errored synchronously\n }\n }\n}\n\nfunction start(q) {\n while (q._start = q._waiting && q._active < q._size) {\n var i = q._ended + q._active,\n t = q._tasks[i],\n j = t.length - 1,\n c = t[j];\n t[j] = end(q, i);\n --q._waiting, ++q._active;\n t = c.apply(null, t);\n if (!q._tasks[i]) continue; // task finished synchronously\n q._tasks[i] = t || noabort;\n }\n}\n\nfunction end(q, i) {\n return function(e, r) {\n if (!q._tasks[i]) return; // ignore multiple callbacks\n --q._active, ++q._ended;\n q._tasks[i] = null;\n if (q._error != null) return; // ignore secondary errors\n if (e != null) {\n abort(q, e);\n } else {\n q._data[i] = r;\n if (q._waiting) poke(q);\n else maybeNotify(q);\n }\n };\n}\n\nfunction abort(q, e) {\n var i = q._tasks.length, t;\n q._error = e; // ignore active callbacks\n q._data = undefined; // allow gc\n q._waiting = NaN; // prevent starting\n\n while (--i >= 0) {\n if (t = q._tasks[i]) {\n q._tasks[i] = null;\n if (t.abort) {\n try { t.abort(); }\n catch (e) { /* ignore */ }\n }\n }\n }\n\n q._active = NaN; // allow notification\n maybeNotify(q);\n}\n\nfunction maybeNotify(q) {\n if (!q._active && q._call) {\n var d = q._data;\n q._data = undefined; // allow gc\n q._call(q._error, d);\n }\n}\n\nexport default function queue(concurrency) {\n if (concurrency == null) concurrency = Infinity;\n else if (!((concurrency = +concurrency) >= 1)) throw new Error(\"invalid concurrency\");\n return new Queue(concurrency);\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import {map} from \"d3-collection\";\nimport {dispatch} from \"d3-dispatch\";\n\nexport default function(url, callback) {\n var request,\n event = dispatch(\"beforesend\", \"progress\", \"load\", \"error\"),\n mimeType,\n headers = map(),\n xhr = new XMLHttpRequest,\n user = null,\n password = null,\n response,\n responseType,\n timeout = 0;\n\n // If IE does not support CORS, use XDomainRequest.\n if (typeof XDomainRequest !== \"undefined\"\n && !(\"withCredentials\" in xhr)\n && /^(http(s)?:)?\\/\\//.test(url)) xhr = new XDomainRequest;\n\n \"onload\" in xhr\n ? xhr.onload = xhr.onerror = xhr.ontimeout = respond\n : xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); };\n\n function respond(o) {\n var status = xhr.status, result;\n if (!status && hasResponse(xhr)\n || status >= 200 && status < 300\n || status === 304) {\n if (response) {\n try {\n result = response.call(request, xhr);\n } catch (e) {\n event.call(\"error\", request, e);\n return;\n }\n } else {\n result = xhr;\n }\n event.call(\"load\", request, result);\n } else {\n event.call(\"error\", request, o);\n }\n }\n\n xhr.onprogress = function(e) {\n event.call(\"progress\", request, e);\n };\n\n request = {\n header: function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers.get(name);\n if (value == null) headers.remove(name);\n else headers.set(name, value + \"\");\n return request;\n },\n\n // If mimeType is non-null and no Accept header is set, a default is used.\n mimeType: function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return request;\n },\n\n // Specifies what type the response value should take;\n // for instance, arraybuffer, blob, document, or text.\n responseType: function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return request;\n },\n\n timeout: function(value) {\n if (!arguments.length) return timeout;\n timeout = +value;\n return request;\n },\n\n user: function(value) {\n return arguments.length < 1 ? user : (user = value == null ? null : value + \"\", request);\n },\n\n password: function(value) {\n return arguments.length < 1 ? password : (password = value == null ? null : value + \"\", request);\n },\n\n // Specify how to convert the response content to a specific type;\n // changes the callback value on \"load\" events.\n response: function(value) {\n response = value;\n return request;\n },\n\n // Alias for send(\"GET\", …).\n get: function(data, callback) {\n return request.send(\"GET\", data, callback);\n },\n\n // Alias for send(\"POST\", …).\n post: function(data, callback) {\n return request.send(\"POST\", data, callback);\n },\n\n // If callback is non-null, it will be used for error and load events.\n send: function(method, data, callback) {\n xhr.open(method, url, true, user, password);\n if (mimeType != null && !headers.has(\"accept\")) headers.set(\"accept\", mimeType + \",*/*\");\n if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); });\n if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType);\n if (responseType != null) xhr.responseType = responseType;\n if (timeout > 0) xhr.timeout = timeout;\n if (callback == null && typeof data === \"function\") callback = data, data = null;\n if (callback != null && callback.length === 1) callback = fixCallback(callback);\n if (callback != null) request.on(\"error\", callback).on(\"load\", function(xhr) { callback(null, xhr); });\n event.call(\"beforesend\", request, xhr);\n xhr.send(data == null ? null : data);\n return request;\n },\n\n abort: function() {\n xhr.abort();\n return request;\n },\n\n on: function() {\n var value = event.on.apply(event, arguments);\n return value === event ? request : value;\n }\n };\n\n if (callback != null) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n return request.get(callback);\n }\n\n return request;\n}\n\nfunction fixCallback(callback) {\n return function(error, xhr) {\n callback(error == null ? xhr : null);\n };\n}\n\nfunction hasResponse(xhr) {\n var type = xhr.responseType;\n return type && type !== \"text\"\n ? xhr.response // null on error\n : xhr.responseText; // \"\" on error\n}\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","import request from \"./request\";\n\nexport default function(defaultMimeType, response) {\n return function(url, callback) {\n var r = request(url).mimeType(defaultMimeType).response(response);\n if (callback != null) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n return r.get(callback);\n }\n return r;\n };\n}\n","import request from \"./request\";\n\nexport default function(defaultMimeType, parse) {\n return function(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var r = request(url).mimeType(defaultMimeType);\n r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; };\n r.row(row);\n return callback ? r.get(callback) : r;\n };\n}\n\nfunction responseOf(parse, row) {\n return function(request) {\n return parse(request.responseText, row);\n };\n}\n","import type from \"./type\";\n\nexport default type(\"text/html\", function(xhr) {\n return document.createRange().createContextualFragment(xhr.responseText);\n});\n","import type from \"./type\";\n\nexport default type(\"application/json\", function(xhr) {\n return JSON.parse(xhr.responseText);\n});\n","import type from \"./type\";\n\nexport default type(\"text/plain\", function(xhr) {\n return xhr.responseText;\n});\n","import type from \"./type\";\n\nexport default type(\"application/xml\", function(xhr) {\n var xml = xhr.responseXML;\n if (!xml) throw new Error(\"parse error\");\n return xml;\n});\n","import {csvParse} from \"d3-dsv\";\nimport dsv from \"./dsv\";\n\nexport default dsv(\"text/csv\", csvParse);\n","import {tsvParse} from \"d3-dsv\";\nimport dsv from \"./dsv\";\n\nexport default dsv(\"text/tab-separated-values\", tsvParse);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\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 return node.__zoom || identity;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\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 {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport ZoomEvent from \"./event\";\nimport {Transform, identity} from \"./transform\";\nimport noevent, {nopropagation} from \"./noevent\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultExtent() {\n var e = this, w, h;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n w = e.width.baseVal.value;\n h = e.height.baseVal.value;\n } else {\n w = e.clientWidth;\n h = e.clientHeight;\n }\n return [[0, 0], [w, h]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode ? 120 : 1) / 500;\n}\n\nfunction defaultTouchable() {\n return \"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 gestures = [],\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\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(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\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) {\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 });\n };\n\n zoom.scaleTo = function(selection, k) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = centroid(e),\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 });\n };\n\n zoom.translateBy = function(selection, x, y) {\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 });\n };\n\n zoom.translateTo = function(selection, x, y) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p = centroid(e);\n return constrain(identity.translate(p[0], p[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 });\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, center) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = center || centroid(e),\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) {\n for (var i = 0, n = gestures.length, g; i < n; ++i) {\n if ((g = gestures[i]).that === that) {\n return g;\n }\n }\n return new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.index = -1;\n this.active = 0;\n this.extent = extent.apply(that, args);\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.index = gestures.push(this) - 1;\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 gestures.splice(this.index, 1);\n this.index = -1;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\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 = mouse(this);\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();\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() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\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.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(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, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n started,\n n = touches.length, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true;\n else if (!g.touch1) g.touch1 = p;\n }\n\n // If this is a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (touchstarting) {\n touchstarting = clearTimeout(touchstarting);\n if (!g.touch1) {\n g.end();\n p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n return;\n }\n }\n\n if (started) {\n touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\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 g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\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 g.end();\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 return zoom;\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"quickview print-hidden\",class:{'hidden': !_vm.visible}},[_c('span',{staticClass:\"progress\"},[_c('h3',[_vm._v(_vm._s(_vm.name))]),(_vm.results.definitief)?[_c('em',[_vm._v(\"(volledig)\")])]:(!_vm.hideResults && _vm.results && _vm.results.totaalBureaus>0)?[_c('lvProgress',{attrs:{\"election\":_vm.results}}),_c('em',[_vm._v(\"\\n \"+_vm._s(_vm.results.geteldeBureaus)+\" van \"+_vm._s(_vm.results.totaalBureaus)+\" bureaus geteld\\n \")])]:_vm._e()],2),(_vm.useStatistiek)?[_c('genderverdeling',{attrs:{\"small\":\"true\",\"statistiek\":_vm.results.statistiek}})]:[_c('percentages',{attrs:{\"small\":\"true\",\"complete\":_vm.results.definitief,\"results\":_vm.results}})]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hoverpercentages\"},[(_vm.nodata)?[(!_vm.hideResults)?_c('p',[_c('em',[_vm._v(\"\\n Nog geen gegevens beschikbaar\\n \")])]):_vm._e()]:[(_vm.lijsten)?_c('ul',_vm._l((_vm.lijsten),function(lijst){return _c('li',[_c('span',{staticClass:\"bar\",style:(_vm.barCSS(lijst))}),_c('span',{staticClass:\"percent\"},[_vm._v(_vm._s(_vm._f(\"percent\")(lijst.percent)))]),_c('span',{staticClass:\"lijst\"},[_vm._v(_vm._s(lijst.lijstnaam))])])}),0):_vm._e()]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport orderBy from 'lodash/orderBy';\nimport {LijstResult, SORT_DIRECTION, SORT_TYPES} from '@/models/election.result.model';\nimport {HoverResult} from '@/models/map.model';\nimport {Settings} from '../../../shared/settings';\n\n@Component\nexport default class HoverPercentagesComponent extends Vue {\n // quickfix: type set to any because below prop always gave error: Invalid prop: type check failed for prop \"results\". Expected HoverResult, got Object.\n @Prop() public results: any; // HoverResult\n @Prop() public complete: boolean;\n\n public lijsten: LijstResult[] = []; // actual visible list\n public firstRun: boolean = true;\n\n private sortedLijsten: LijstResult[] = []; // internal memory list\n private segmentScale = 100; // in percent\n private MAX_VISIBLE: number = 5; // number of lijsten visible in hover\n private ANIMATION_DELAY: number = 250; // ms\n private hideResults = Settings.HIDE_RESULTS;\n\n\n public listColor: string = Settings.LIST_NUMBER_COLOR;\n\n constructor() {\n super();\n }\n\n @Watch('results')\n public onResultsChanged(newValue: any) {\n this.setDefaultSorting();\n\n this.$nextTick(() => {\n this.initGraph();\n });\n }\n\n public get nodata(): boolean {\n return !this.results || this.results.geteldeBureaus < Settings.RESULTS_MINIMUM_BUREAUS;\n }\n\n public barCSS(lijst: LijstResult): any {\n if (this.firstRun) {\n return {\n width: '0',\n backgroundColor: lijst.lijstkleur,\n };\n }\n\n return {\n width: this.itemScale(lijst.percent) + 'px',\n backgroundColor: lijst.lijstkleur,\n };\n }\n\n private itemScale(amount: number): number {\n return amount * this.segmentScale; // in pixels\n }\n\n private initGraph() {\n if (!this.sortedLijsten || !this.sortedLijsten.length) {\n return;\n }\n\n this.initGraphScale();\n\n // we need an original value to start animating from\n // (after first run this is the previous nis hover result)\n if (this.firstRun) {\n this.lijsten = this.sortedLijsten;\n }\n\n // trigger animation\n setTimeout(() => {\n this.lijsten = this.sortedLijsten;\n this.firstRun = false;\n }, this.ANIMATION_DELAY);\n }\n\n private initGraphScale() {\n const maxResult = this.sortedLijsten[0].percent; // 0 = because sorted on result desc already\n this.segmentScale = (100 / maxResult);\n }\n\n private setDefaultSorting() {\n const sortedList = <LijstResult[]> orderBy(this.results.lijsten, [SORT_TYPES.STEMMEN], [SORT_DIRECTION.DESC]);\n this.sortedLijsten = sortedList\n .filter(this.omitBlancos)\n .slice(0, this.MAX_VISIBLE);\n }\n\n private omitBlancos(lijst: LijstResult) {\n return lijst.lijstnr !== 0;\n }\n\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hoverpercentages.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hoverpercentages.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./hoverpercentages.vue?vue&type=template&id=8c0249f4&scoped=true&\"\nimport script from \"./hoverpercentages.vue?vue&type=script&lang=ts&\"\nexport * from \"./hoverpercentages.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./hoverpercentages.scss?vue&type=style&index=0&id=8c0249f4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c0249f4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"hoverprogress\",attrs:{\"data-percentage\":_vm.progressPct}},[_vm._m(0),_vm._m(1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"progress-left\"},[_c('span',{staticClass:\"progress-bar\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"progress-right\"},[_c('span',{staticClass:\"progress-bar\"})])}]\n\nexport { render, staticRenderFns }","\n\n\nimport {Component, Prop, Vue} from 'vue-property-decorator';\nimport {EntityResult} from '@/models/election.result.model';\nimport {Utils} from '@/shared/utils';\n\n@Component\nexport default class HoverProgressComponent extends Vue {\n @Prop() public election?: any;\n\n constructor() {\n super();\n }\n\n public get progressPct(): number {\n return (this.election && this.election.totaalBureaus) ? this.percentageBureaus : 0;\n }\n\n private get percentageBureaus(): number {\n return (this.election && this.election.totaalBureaus) ? Math.floor(this.election.geteldeBureaus / this.election.totaalBureaus * 100) : 0;\n }\n\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hoverprogress.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hoverprogress.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./hoverprogress.html?vue&type=template&id=d07121d4&scoped=true&\"\nimport script from \"./hoverprogress.vue?vue&type=script&lang=ts&\"\nexport * from \"./hoverprogress.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./hoverprogress.scss?vue&type=style&index=0&id=d07121d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d07121d4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GenderVerdelingComponent from \"@/components/grafieken/genderverdeling/genderverdeling.vue\";\nimport HoverPercentagesComponent from \"@/components/grafieken/hoverpercentages/hoverpercentages.vue\";\nimport HoverProgressComponent from \"@/components/grafieken/hoverprogress/hoverprogress.vue\";\nimport {Settings} from \"@/shared/settings\";\n\n@Component({\n components: {\n genderverdeling: GenderVerdelingComponent,\n percentages: HoverPercentagesComponent,\n lvProgress: HoverProgressComponent\n }\n})\nexport default class QuickViewComponent extends Vue {\n @Prop() public visible: boolean;\n @Prop() public name: string;\n @Prop() public mapType: string; // stats or results\n // quickfix: type set to any because below prop always gave error: Invalid prop: type check failed for prop \"results\". Expected HoverResult, got Object.\n @Prop() public results: any; // HoverResult: current nis data (lijsten, statistiek)\n\n private hideResults: boolean = Settings.HIDE_RESULTS;\n\n constructor() {\n super();\n }\n\n public get useStatistiek(): boolean {\n return !!this.mapType; // all statistiek types are non empty (eg age, gender)\n }\n\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quickview.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quickview.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./quickview.component.vue?vue&type=template&id=8f3bf730&scoped=true&\"\nimport script from \"./quickview.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./quickview.component.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./quickview.component.vue?vue&type=style&index=0&id=8f3bf730&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8f3bf730\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {event, select} from \"d3\";\nimport {geoMercator, geoPath} from \"d3-geo\";\nimport {feature, mesh} from \"topojson\";\nimport {zoom, zoomIdentity} from \"d3-zoom\";\nimport {\n ELECTION_MAP_NAMES,\n ELECTION_NAME_TO_TYPE,\n ELECTION_NAMES,\n ELECTION_TYPE_TO_MAP_NAME,\n ELECTION_TYPE_TO_NAME,\n ELECTION_TYPES,\n ElectionType,\n ResultQuery\n} from \"../models/election.result.model\";\nimport {Settings} from \"../shared/settings\";\nimport {Utils} from \"../shared/utils\";\nimport {AGE_LEGEND, GENDER_LEGEND, HoverResult, LegendItem, MAP_TYPES, STRONGEST_PARTY_LEGEND} from \"../models/map.model\";\nimport {COLORS} from \"../models/colors\";\nimport CloseButtonComponent from \"@/components/UI/closebutton/closebutton.vue\";\nimport PrintButtonComponent from \"@/components/UI/printbutton/printbutton.vue\";\nimport QuickViewComponent from \"@/components/kaart/quickview.component.vue\";\nimport {PROVINCIES} from \"../models/provincies\";\nimport {RawLocation} from \"vue-router\";\n\n/* tslint:disable:no-shadowed-variable */\n@Component({\n components: {\n quickview: QuickViewComponent,\n closebutton: CloseButtonComponent,\n printbutton: PrintButtonComponent\n }\n})\nexport default class MapComponent extends Vue {\n\n @Prop() sideBar: boolean;\n\n public legendItems: LegendItem[] = [];\n public MAP_TYPES = MAP_TYPES;\n public ELECTION_TYPES = ELECTION_TYPES;\n public ELECTION_NAMES = ELECTION_NAMES;\n public ELECTION_MAP_NAMES = ELECTION_MAP_NAMES;\n\n public quickViewVisible: boolean = false;\n public quickViewPositionCSS: any = {};\n public hoverName: string = \"\";\n // public geolocationErrorVisible: boolean = false;\n\n private width = 960;\n private height = 350;\n\n private centered: any;\n private hoverElement: any;\n private lastRouteParams: any;\n\n private path: any;\n private g: any;\n private nisContainer: any;\n private stateBorderContainer: any;\n\n private svg: any;\n private zoomBehavior: any;\n\n private stateGeometries: any[] = [];\n private cityGeometries: any[] = [];\n\n private allowZoom = true;\n private static stadsDistrictBounds: any[][] = [[476, 60], [525, 160]];\n private static ocmwBounds: any[][] = [[650, 250], [400, 340]];\n\n private zoomedIn = false;\n private markerscale = 1;\n\n private updatingLayers = true;\n\n private hideResults = Settings.HIDE_RESULTS;\n\n get electionTypeName(): string {\n return this.$route.params[\"electionTypeName\"];\n }\n\n get lijstnaam(): string {\n return this.map.lijsten[this.map.lijst][\"lijstnaam\"] || \"\";\n }\n\n get electionType(): ElectionType {\n const current = this.$store.getters[\"current/query\"];\n return current.electionType;\n }\n\n get mapElectionName(): string {\n const current = this.$store.getters[\"current/query\"];\n return ELECTION_TYPE_TO_MAP_NAME[current.electionType];\n }\n\n get mapTypeName(): string {\n switch (this.map.mapType) {\n case MAP_TYPES.VOTES:\n return (!!this.map.lijst) ? this.lijstnaam : \"Sterkste lijst\";\n case MAP_TYPES.AGE:\n return \"Leeftijd verkozenen\";\n case MAP_TYPES.GENDER:\n return \"Percentage vrouwelijke verkozenen\";\n }\n\n return \"\";\n }\n\n get legendName(): string {\n switch (this.map.mapType) {\n case MAP_TYPES.VOTES:\n return (!!this.map.lijst) ? \"Percentage stemmen\" : \"Legende\";\n case MAP_TYPES.AGE:\n return \"Percentage leeftijd\";\n case MAP_TYPES.GENDER:\n return \"Percentage vrouwelijke verkozenen\";\n }\n\n return \"Legende\";\n }\n\n get partijLogo(): string {\n return (this.map.lijsten) ? this.map.lijsten[this.map.lijst].logo : \"\";\n }\n\n get geolocationError(): string {\n return this.$store.getters[\"map/geolocation_error\"];\n }\n\n get geolocation(): any {\n return this.$store.getters[\"map/geolocation\"];\n }\n\n get nis() {\n const current = this.$store.getters[\"current/query\"];\n return current.nis;\n }\n\n get map() {\n return this.$store.getters[\"map/all\"];\n }\n\n get colors() {\n return this.$store.getters[\"map/colors\"];\n }\n\n get geoLocating() {\n return this.$store.getters[\"map/geolocating\"];\n }\n\n get statistiekEnabled(): boolean {\n return !Settings.DISABLE_STATS;\n }\n\n constructor() {\n super();\n console.log(\"MAP CONSTRUCTOR\");\n }\n\n // noinspection JSUnusedGlobalSymbols\n public mounted() {\n //Make sure update cycle is triggered when map is visible\n this.$store.dispatch(\"current/schedule_next_update\");\n\n this.createMap().then(() => this.updateLayers());\n }\n\n @Watch(\"colors\")\n private colorsChanges() {\n this.setColors();\n }\n\n // noinspection JSUnusedGlobalSymbols\n private async createMap(): Promise<void> {\n const projection = geoMercator()\n .translate([-650, 16100])\n // .translate([-650, 16150])\n .scale(15300);\n\n this.path = geoPath()\n .projection(projection);\n\n const mapDom = document.getElementById(\"map\");\n if (!mapDom) {\n console.error(\"No map to show\");\n return;\n }\n\n this.zoomBehavior = zoom<HTMLElement, any>()\n .filter(() => event.type !== \"wheel\" || this.allowZoom)\n .scaleExtent([1, 4])\n .translateExtent([[0, 0], [this.width, this.height]])\n .on(\"zoom\", this.zoomed);\n\n // noinspection TypeScriptValidateTypes\n this.svg = select(mapDom)\n .attr(\"width\", this.width)\n .attr(\"height\", this.height)\n .attr(\"viewBox\", \"0 0 \" + this.width + \" \" + this.height)\n .attr(\"preserveAspectRatio\", \"xMidYMid\")\n .call(this.zoomBehavior);\n\n this.g = this.svg.append(\"g\");\n this.stateBorderContainer = this.g.append(\"g\").attr(\"class\", \"state-border-container hide\");\n this.nisContainer = this.g.append(\"g\").attr(\"class\", \"nis-container\");\n\n if (!this.$store.getters[\"map/topojsons_loaded\"]) {\n await this.$store.dispatch(\"map/load_topojsons\");\n }\n\n await Promise.all([\"municipalities\"].map(async (name) => {\n const data = this.$store.getters[\"cache/getFile\"]({name: name + \".topojson\"});\n this.cityGeometries = this.cityGeometries.concat((<any>feature(data, data.objects[name])).features);\n }));\n const layerName = \"constituencies\";\n const data = this.$store.getters[\"cache/getFile\"]({name: layerName + \".topojson\"});\n\n // this.stateGeometries = feature(data, data.objects[layerName]).features.sort((a: any, b: any) => a.properties.n.localeCompare(b.properties.n));\n this.stateBorderContainer.append(\"path\")\n .datum(mesh(data, data.objects[layerName]))\n .attr(\"class\", \"map-state-borders\")\n .attr(\"d\", this.path);\n this.stateGeometries = this.stateGeometries.concat((<any>feature(data, data.objects[layerName])).features);\n return Promise.resolve();\n }\n\n private needsUpdating(): boolean {\n // do not trigger all those map updates\n // when the route has not changed for map related parameters\n // (colors are detected via the store, not route)\n const notChanged: boolean = this.lastRouteParams\n && this.lastRouteParams[\"electionTypeName\"] === this.$route.params[\"electionTypeName\"]\n && this.lastRouteParams[\"nis\"] === this.$route.params[\"nis\"];\n if (notChanged) {\n return false;\n }\n\n this.lastRouteParams = {\n ...this.$route.params\n };\n return true;\n }\n\n @Watch(\"$route\")\n private async updateLayers() {\n if (!this.needsUpdating()) {\n return;\n }\n\n this.updatingLayers = true;\n await this.detectMissingNis();\n await this.loadMapResults();\n\n let features: any[] = [];\n this.allowZoom = true;\n this.stateBorderContainer.raise();\n // this.cityBorderContainer.classed(\"hide\", true);\n switch (this.electionType) {\n case ELECTION_TYPES.MUNICIPALITY:\n // this.cityBorderContainer.classed(\"hide\", false);\n this.markerscale = 1;\n this.zoomBehavior.translateExtent([[0, 0], [this.width, this.height]]);\n this.clicked(null);\n features = this.cityGeometries;\n break;\n case ELECTION_TYPES.KANTON:\n this.markerscale = 1;\n this.zoomBehavior.translateExtent([[0, 0], [this.width, this.height]]);\n this.clicked(null);\n features = await this.getFeatures([\"cantons\"]);\n break;\n /*case ELECTION_TYPES.PARLEMENT:\n this.markerscale = 4;\n this.allowZoom = false;\n this.zoomBehavior.translateExtent(MapComponent.ocmwBounds);\n this.zoomToBounds(MapComponent.ocmwBounds);\n features = await this.getFeatures([\"ocmw\"]);\n this.ocmwContainer.raise();\n this.nisContainer.raise();\n break;*/\n case ELECTION_TYPES.PARLEMENT:\n case ELECTION_TYPES.CONSTITUENCY:\n this.markerscale = 1;\n this.zoomBehavior.translateExtent([[0, 0], [this.width, this.height]]);\n this.clicked(null);\n features = await this.getFeatures([\"constituencies\"]);\n break;\n }\n\n this.stateBorderContainer.classed(\"hide\", false);\n this.g.select(\".city-border-container\").classed(\"hide\", this.electionType === ELECTION_TYPES.KANTON);\n\n const paths = this.nisContainer.selectAll(\"path\").data(features, (d: any) => d.geometry.coordinates);\n const duration = 500;\n paths.exit()\n .transition().duration(duration).style(\"opacity\", 0)\n .remove();\n paths\n .attr(\"d\", this.path)\n .attr(\"name\", (d: any) => d.properties.c)\n .attr(\"fill\", (d: any) => this.map.colors[d.properties.n] || COLORS.NODATA)\n .attr(\"id\", (d: any) => d.id);\n\n paths.enter().append(\"path\")\n .attr(\"class\", \"map-nis-path\")\n .attr(\"d\", this.path)\n .attr(\"name\", (d: any) => d.properties.c)\n .attr(\"id\", (d: any) => d.id)\n .on(\"click\", this.clicked)\n .on(\"mousemove\", this.showTooltip)\n .on(\"mouseout\", this.hideTooltip)\n .style(\"opacity\", 0)\n .attr(\"fill\", (d: any) => this.map.colors[d.properties.n] || COLORS.NODATA)\n .transition()\n .duration(duration)\n .style(\"opacity\", 1);\n\n this.setActiveFeature(features);\n this.updatingLayers = false;\n }\n\n private async getFeatures(fileNames: string[]): Promise<any[]> {\n let features: any[] = [];\n if (!this.$store.getters[\"map/topojsons_loaded\"]) {\n await this.$store.dispatch(\"map/load_topojsons\");\n }\n await Promise.all(fileNames.map(async (name: string) => {\n const data = this.$store.getters[\"cache/getFile\"]({name: name + \".topojson\"});\n features = features.concat((<any>feature(data, data.objects[name])).features);\n }));\n\n return Promise.resolve(features);\n }\n\n // @Watch('nis')\n private async setActiveFeature(features: any[]) {\n console.log(\"setActiveFeature \", features);\n this.centered = null;\n features.forEach((d: any) => {\n if (d.properties && d.properties.n === this.nis) {\n this.centered = d;\n }\n });\n if (this.sideBar && this.centered) {\n this.setMarker();\n } else {\n this.svg.select(\"g.marker\").remove();\n this.svg.select(\"g path.map-active\").remove();\n this.svg.select(\"g\").append(\"path\").datum(this.centered)\n .attr(\"class\", \"map-active\").attr(\"d\", this.path).style(\"pointer-events\", \"none\");\n if (!(<any>PROVINCIES)[this.nis] && this.allowZoom) {\n console.log(\"setActiveFeature fake clicked this.centered)\", this.centered);\n this.clicked(this.centered);\n }\n }\n }\n\n private async detectMissingNis(): Promise<any> {\n if (!!this.$route.params[\"nis\"]) {\n // no further action needed\n // resultpage etc automatically update current results when nis changes\n return Promise.resolve(true);\n }\n // no nis available, trigger a store update first\n console.log(\"---- MAP / no nis results to update store, map will update current state\");\n const electionType: string = this.$route.params[\"electionTypeName\"] || ELECTION_TYPE_TO_NAME[ELECTION_TYPES.KANTON];\n const query: ResultQuery = {\n nis: \"\",\n electionType: ELECTION_NAME_TO_TYPE[electionType],\n year: Settings.ELECTION_YEAR\n } as ResultQuery;\n\n return await this.$store.dispatch(\"current/change\", query);\n }\n\n private setMarker() {\n // Multiple variable declarations in the same statement are forbidden (one-variable-per-declaration)\n const bounds = this.path.bounds(this.centered);\n const x = (bounds[0][0] + bounds[1][0]) / 2;\n const y = (bounds[0][1] + bounds[1][1]) / 2;\n this.svg.select(\".marker\").remove();\n const size = 20 * (4 / this.markerscale);\n this.g.append(\"g\").attr(\"class\", \"marker\").append(\"use\")\n .attr(\"width\", size)\n .attr(\"height\", size)\n .attr(\"stroke\", \"black\")\n .attr(\"fill\", \"#05FFB4\")\n .attr(\"xlink:href\", \"#icon-location\").attr(\"transform\", \"translate(\" + ([x - size / 2, y - size]) + \")\");\n }\n\n public async loadGeolocation() {\n const isProvincieraad: boolean = this.electionType === ELECTION_TYPES.KANTON;\n const isDistrictNis: boolean = isProvincieraad && this.nis.indexOf(\"D\") > -1;\n const isProvincie: boolean = isProvincieraad && !!(<any>PROVINCIES)[this.nis];\n await this.$store.dispatch(\"map/load_geolocation\", {\n type: this.electionType,\n provincieType: isProvincie ? \"provincies\" : isDistrictNis ? \"provinciedistricten\" : null\n });\n this.$router.push(<RawLocation>{\n name: \"resultpage\",\n params: {\n electionTypeName: this.electionTypeName ? this.electionTypeName : ELECTION_NAMES.MUNICIPALITY,\n nis: this.geolocation.properties.n\n }\n });\n }\n\n public zoomIn() {\n if (this.centered) {\n this.zoomToBounds(this.path.bounds(this.centered), this.getZoomLevel());\n } else if (this.$route.params[\"nis\"] && this.geolocation) {\n this.zoomToBounds(this.path.bounds(this.geolocation), this.getZoomLevel());\n } else {\n this.zoomToBounds([[this.width / 2, this.height / 2], [this.width / 2, this.height / 2]], 4);\n }\n }\n\n public zoomOut() {\n this.zoomToBounds([[0, 0], [this.width, this.height]], 1);\n }\n\n public setColors() {\n this.svg.selectAll(\".map-nis-path\").transition().attr(\"fill\", (d: any) => {\n return this.map.colors[d.properties.n] || COLORS.NODATA;\n });\n }\n\n // noinspection JSMethodCanBeStatic\n public backgroundColor(color: string) {\n return {\n backgroundColor: color\n };\n }\n\n public async loadMapResults(): Promise<void> {\n const query: ResultQuery = <ResultQuery>{\n // nis: this.nis, // not needed here\n electionType: this.electionType,\n year: Settings.ELECTION_YEAR\n };\n\n const electionType: string = this.$route.params[\"electionTypeName\"];\n await this.$store.dispatch(\"map/load_data\", query);\n if (!this.updatingLayers) {\n this.setColors();\n }\n this.setLegend();\n return Promise.resolve();\n }\n\n // Map: Single party tints\n public async loadPartijMapResults(lijstGID: string) {\n const query: ResultQuery = <ResultQuery>{\n electionType: this.electionType,\n year: Settings.ELECTION_YEAR,\n lijstGID\n };\n await this.$store.dispatch(\"map/load_data\", query);\n this.setColors();\n this.setLegend();\n }\n\n public async loadAgeMapResults() {\n const query: ResultQuery = <ResultQuery>{\n electionType: this.electionType,\n year: Settings.ELECTION_YEAR,\n mapType: MAP_TYPES.AGE\n };\n await this.$store.dispatch(\"map/load_data\", query);\n this.setColors();\n this.setLegend();\n }\n\n public async loadGenderMapResults() {\n const query: ResultQuery = <ResultQuery>{\n electionType: this.electionType,\n year: Settings.ELECTION_YEAR,\n mapType: MAP_TYPES.GENDER\n };\n await this.$store.dispatch(\"map/load_data\", query);\n this.setColors();\n this.setLegend();\n }\n\n public setLegend() {\n switch (this.map.mapType) {\n case MAP_TYPES.AGE:\n this.legendItems = AGE_LEGEND;\n break;\n case MAP_TYPES.GENDER:\n this.legendItems = GENDER_LEGEND;\n break;\n default:\n if (this.map.lijst) {\n this.legendItems = this.createLijstRanges();\n\n } else {\n this.legendItems = STRONGEST_PARTY_LEGEND;\n }\n break;\n }\n }\n\n private createLijstRanges(): LegendItem[] {\n const color = this.map.lijsten[this.map.lijst].lijstkleur;\n return [\n {label: \"0-10%\", color: Utils.createTint(color, 5)},\n {label: \"10-20%\", color: Utils.createTint(color, 15)},\n {label: \"20-30%\", color: Utils.createTint(color, 25)},\n {label: \"> 30%\", color: Utils.createTint(color, 50)},\n {label: \"Geen gegevens\", color: COLORS.NODATA}\n ];\n }\n\n public hideTooltip() {\n this.quickViewVisible = false;\n this.g.selectAll(\"path\")\n .classed(\"map-hover\", false && ((d: any) => d === this.hoverElement));\n this.hoverElement = null;\n }\n\n /**\n * Showing a tooltip for the element\n * @param d the element for which the tooltip should be shown\n */\n public showTooltip(d: any) {\n // update position always\n // update data only when nis has changed\n\n // Q: is this the most efficient selection of current node?\n // seems like it has to search all nodes with this.g(path)\n this.hoverElement = d;\n this.g.selectAll(\"path\")\n .classed(\"map-hover\", this.hoverElement && ((d: any) => d === this.hoverElement));\n\n // d.properties.c = naam\n // d.properties.n = nis\n const name: string = d.properties.c;\n const nis: string = \"\" + d.properties.n;\n this.quickViewVisible = true;\n\n // true = flip quickview left/right depending on user mouse position on map\n const canFlipRightLeft: boolean = true;\n const viewportWidth: number = document.documentElement.clientWidth; // faster than store lookup\n const realMapWidth: number = (<any>this.$refs.mapReference).clientWidth;\n const flipPercent: number = 0.70; // if mouse position > % map width then flip will be triggered\n if (canFlipRightLeft && event.clientX / realMapWidth >= flipPercent) {\n this.quickViewPositionCSS = {\n left: \"unset\",\n right: (realMapWidth - event.clientX + 80) + \"px\",\n top: (event.clientY - 110 + Utils.scrollTop()) + \"px\"\n };\n\n } else {\n this.quickViewPositionCSS = {\n left: (event.clientX + 20) + \"px\",\n top: (event.clientY - 110 + Utils.scrollTop()) + \"px\"\n };\n }\n\n // this.tooltip.classed('hidden', false)\n // .attr('style', 'left:' + (event.clientX + 10) + 'px;top:' + (event.clientY + 10 + Utils.scrollTop()) + 'px')\n // .html(d.properties.c);\n\n if (this.map.hoverNis === nis) {\n return;\n }\n\n this.hoverName = name;\n this.$store.dispatch(\"map/hover_over_nis\", nis);\n }\n\n public get quickData(): HoverResult {\n return <HoverResult>this.$store.getters[\"map/hoverResult\"];\n }\n\n /**\n * Method is called on click.\n * @param d the object that was clicked\n */\n public clicked(d: any) {\n if (d && this.centered !== d) {\n this.$router.push(\n <RawLocation>{\n name: \"resultpage\",\n params: {\n electionTypeName: this.electionType === ELECTION_TYPES.PARLEMENT ? ELECTION_NAMES.CONSTITUENCY : (this.electionTypeName || ELECTION_NAMES.KANTON),\n nis: d.properties.n\n }\n });\n return;\n }\n this.hideTooltip();\n let x;\n let y;\n let k;\n if (d && !this.zoomedIn) {\n const centroid = this.path.centroid(d);\n x = centroid[0];\n y = centroid[1];\n k = this.getZoomLevel();\n this.centered = d;\n this.zoomedIn = true;\n } else {\n x = this.width / 2;\n y = this.height / 2;\n k = 1;\n this.zoomedIn = false;\n }\n\n if (this.allowZoom) {\n\n const translate = [this.width / 2 - k * x, this.height / 2 - k * y];\n\n console.log(\"map | clicked transition d=\", d);\n this.svg.transition()\n .duration(750)\n .call(this.zoomBehavior.transform, zoomIdentity.translate(translate[0], translate[1]).scale(k))\n .style(\"stroke-width\", .75 / k + \"px\");\n }\n }\n\n private getZoomLevel(): number {\n return this.electionType == ELECTION_TYPES.MUNICIPALITY ? 3.5 : 1.5;\n }\n\n public zoomToBounds(bounds: any[][], k?: number) {\n const dx = bounds[1][0] - bounds[0][0];\n const dy = bounds[1][1] - bounds[0][1];\n const x = (bounds[0][0] + bounds[1][0]) / 2;\n const y = (bounds[0][1] + bounds[1][1]) / 2;\n const scale = k ? k : (.9 / Math.max(dx / this.width, dy / this.height));\n const translate = [this.width / 2 - scale * x, this.height / 2 - scale * y];\n\n this.svg.transition()\n .duration(750)\n .call(this.zoomBehavior.transform, zoomIdentity.translate(translate[0], translate[1]).scale(scale))\n .style(\"stroke-width\", .75 / scale + \"px\");\n }\n\n /**\n * Method is called when zooming.\n */\n public zoomed() {\n this.g\n .attr(\"transform\", event.transform)\n .style(\"stroke-width\", .75 / event.transform.k + \"px\");\n }\n\n // noinspection JSMethodCanBeStatic\n public printMap() {\n Utils.printMap();\n }\n\n // noinspection JSMethodCanBeStatic\n public printResults() {\n Utils.printResults();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComponent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComponent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MapComponent.vue?vue&type=template&id=d849eeb0&scoped=true&\"\nimport script from \"./MapComponent.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapComponent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MapComponent.vue?vue&type=style&index=0&id=d849eeb0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d849eeb0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('aside',{attrs:{\"aria-label\":\"Sidebar\",\"id\":\"sidebar\"}},[_c('div',{staticClass:\"navColumn print-hidden\"},[(!_vm.mapVisible)?_c('ul',{staticClass:\"main\",class:{ mapList: !_vm.nis},attrs:{\"aria-labelledby\":\"toon-kaart-header\"}},[_c('li',{staticClass:\"header\",attrs:{\"id\":\"toon-kaart-header\"}},[_vm._v(\"Toon kaart\")]),_c('li',{staticClass:\"clickable sidebar-map\",staticStyle:{\"background-color\":\"#efefef\"},attrs:{\"tabindex\":\"0\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }_vm.mapVisible = true},\"click\":function($event){_vm.mapVisible = true}}},[_c('MapComponent',{attrs:{\"sideBar\":true}})],1)]):_vm._e(),(_vm.favoriteKeys.length > 0)?_c('ul',{staticClass:\"main\",attrs:{\"aria-labelledby\":\"favorieten-header\"}},[_c('li',{staticClass:\"header\",attrs:{\"id\":\"favorieten-header\"}},[_vm._v(\"Favorieten\")]),_vm._l((_vm.favoriteKeys),function(favorite){return _c('li',{on:{\"click\":function($event){_vm.mapVisible = false}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":favorite}},[_c('svg',{staticClass:\"favorite\"},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#star\"}})]),_c('span',[_vm._v(_vm._s(_vm.favorites[favorite]))])])],1)})],2):_vm._e(),_c('ul',{staticClass:\"main\",attrs:{\"aria-labelledby\":\"suggesties-header\"}},[_c('li',{staticClass:\"header\",attrs:{\"id\":\"suggesties-header\"}},[_vm._v(_vm._s(_vm.hideResults? 'Kandidaten':'Resultaten')+\" verkiezingen\")]),(!(!_vm.nis && _vm.hideResults)&&(_vm.electionTypeName !== _vm.electionNames.PARLEMENT || !_vm.nis))?[_c('li',{on:{\"click\":function($event){_vm.mapVisible = false}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'parlement', nis: '02000'}}}},[_vm._v(\"\\n Vlaams Parlement\\n \")])],1)]:_vm._e(),(!_vm.nis && (_vm.hideResults || !_vm.electionTypeName))?[_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 11002}}}},[_vm._v(\"\\n Kieskring - Antwerpen\\n \")])],1),_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 21004}}}},[_vm._v(\"\\n Kieskring - Brussel-Hoofdstad\\n \")])],1),_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 71022}}}},[_vm._v(\"\\n Kieskring - Limburg\\n \")])],1),_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 44021}}}},[_vm._v(\"\\n Kieskring - Oost-Vlaanderen\\n \")])],1),_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 24062}}}},[_vm._v(\"\\n Kieskring - Vlaams-Brabant\\n \")])],1),_c('li',{on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: 'kieskring', nis: 31005}}}},[_vm._v(\"\\n Kieskring - West-Vlaanderen\\n \")])],1)]:_vm._e(),((_vm.geolocation && _vm.geolocation.properties) || (_vm.nis && _vm.election.loaded) )?[_vm._l((_vm.election.verwant),function(verwant){return [(_vm.isNotCurrent(verwant))?_c('li',{on:{\"click\":function($event){_vm.mapVisible = false}}},[_c('router-link',{staticClass:\"clickable\",attrs:{\"to\":{ name: 'resultpage', params: { electionTypeName: _vm.routeElection(verwant.electionType), nis: verwant.nis}}}},[_vm._v(\"\\n \"+_vm._s(_vm.electionName(verwant) +' - ' +verwant.naam)+\"\\n \")])],1):_vm._e()]})]:_vm._e()],2),_c('ul',{staticClass:\"main\",attrs:{\"aria-labelledby\":\"suggesties-header\"}},[_c('li',{staticClass:\"header\"},[_vm._v(\"Externe links\")]),_c('li',{on:{\"click\":function($event){_vm.mapVisible = false}}},[_c('a',{attrs:{\"href\":\"https://verkiezingen2019.belgium.be/nl/verkiezingen?el=CK\",\"target\":\"_blank\"}},[_vm._v(\"\\n Federale verkiezingen\\n \"),_c('svg',{attrs:{\"height\":\"14\"}},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#icon-external\"}})])])]),_c('li',{on:{\"click\":function($event){_vm.mapVisible = false}}},[_c('a',{attrs:{\"href\":\"https://verkiezingen2019.belgium.be/nl/verkiezingen?el=EU\",\"target\":\"_blank\"}},[_vm._v(\"\\n Europese verkiezingen\\n \"),_c('svg',{attrs:{\"height\":\"14\"}},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#icon-external\"}})])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport {ELECTION_NAMES, ELECTION_TYPE_TO_MAP_NAME, ELECTION_TYPE_TO_NAME, ElectionType, EntityResult, Verwant} from \"../../models/election.result.model\";\nimport MapComponent from \"@/components/MapComponent.vue\";\nimport {Settings} from \"../../shared/settings\";\nimport toPairs from \"lodash/toPairs\";\nimport sortBy from \"lodash/sortBy\";\nimport DesktopViewport from \"@/views/DesktopViewport.vue\";\n\n@Component({\n components: {DesktopViewport, MapComponent}\n}) export default class SideBar extends Vue {\n\n public typeToName = ELECTION_TYPE_TO_NAME;\n public electionNames = ELECTION_NAMES;\n public typeToMapName = ELECTION_TYPE_TO_MAP_NAME;\n private hideResults = Settings.HIDE_RESULTS;\n\n constructor() {\n super();\n }\n\n public mounted() {\n this.$store.dispatch(\"current/setFavorites\", JSON.parse(localStorage.getItem(\"favorites\") || \"{}\"));\n }\n\n public isNotCurrent(verwant: Verwant): boolean {\n return this.election.naam !== verwant.naam || this.electionTypeName !== ELECTION_TYPE_TO_NAME[verwant.electionType] || this.nis !== verwant.nis;\n }\n\n private get favorites(): { [path: string]: string } {\n return this.$store.getters[\"current/favorites\"];\n }\n\n // noinspection JSUnusedLocalSymbols\n private get favoriteKeys(): string[] {\n return sortBy(toPairs(this.favorites), 1).map((a: any) => <string>a[0]);\n }\n\n public get nis(): string {\n return this.$route.params[\"nis\"];\n }\n\n public get electionTypeName(): string {\n return this.$route.params[\"electionTypeName\"];\n }\n\n public set mapVisible(showMap: boolean) {\n this.$store.dispatch(\"current/showMap\", showMap);\n }\n\n public get mapVisible(): boolean {\n return this.$store.getters[\"current/showMap\"];\n }\n\n public get elections() {\n return this.$store.getters[\"current/elections\"];\n }\n\n public get geolocation(): any {\n return this.$store.getters[\"map/geolocation\"];\n }\n\n public get election(): EntityResult {\n return (<any>this.elections)[Settings.ELECTION_YEAR] || new EntityResult();\n }\n\n public electionName(verwant: Verwant) {\n let name = ELECTION_TYPE_TO_MAP_NAME[verwant.electionType];\n return name;\n }\n\n public routeElection(type: ElectionType) {\n return ELECTION_TYPE_TO_NAME[type];\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=495f2bde&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=495f2bde&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"495f2bde\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\nimport MapComponent from \"@/components/MapComponent.vue\";\nimport SideBar from \"@/components/sidebar/SideBar.vue\";\nimport ResultHeaderComponent from \"@/components/resultheader/resultheader.vue\";\nimport {ViewPortDimensions} from \"../models/viewport.model\";\n\n@Component({\n components: {SideBar, MapComponent, ResultHeaderComponent}\n})\nexport default class DesktopViewport extends Vue {\n\n public get mapVisible(): boolean {\n return this.$store.getters[\"current/showMap\"];\n }\n\n public set mapVisible(showMap: boolean) {\n this.$store.dispatch(\"current/showMap\", showMap);\n }\n\n get viewPortSize(): ViewPortDimensions {\n return this.$store.getters[\"current/viewportSize\"];\n }\n\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopViewport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopViewport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DesktopViewport.vue?vue&type=template&id=710d71c8&\"\nimport script from \"./DesktopViewport.vue?vue&type=script&lang=ts&\"\nexport * from \"./DesktopViewport.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DesktopViewport.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"genderverdeling print-without-break\",class:{'small': _vm.small},attrs:{\"role\":\"img\",\"aria-label\":\"Grafiek genderverdeling\"}},[(_vm.nodata)?[_vm._m(0)]:[_c('ul',[_vm._l((_vm.distributie),function(genderDistributie){return _c('li',[_c('label',[_vm._v(\"\\n \"+_vm._s(genderDistributie.range)+\"\\n \")]),_c('span',{staticClass:\"female\"},[_vm._v(\"\\n \"+_vm._s(genderDistributie.vrouw)+\"\\n \"),_c('em',{staticClass:\"print-bg\",style:(_vm.barCSSWidth(genderDistributie.vrouw))},[(_vm.shouldShowBar(genderDistributie.vrouw))?[_vm._v(\"\\n \"+_vm._s(_vm._f(\"percent\")(genderDistributie.vrouwpct))+\"\\n \")]:_vm._e()],2)]),_c('span',{staticClass:\"male\"},[_c('em',{style:(_vm.barCSSWidth(genderDistributie.man))}),_vm._v(\"\\n \"+_vm._s(genderDistributie.man)+\"\\n\\n \")])])}),_c('li',[_vm._m(1),_c('span',{staticClass:\"female\"},[_vm._v(\"\\n \"+_vm._s(_vm.totaalVrouw)+\"\\n \"),_c('em',{style:(_vm.barCSSWidthTotal(_vm.totaalVrouw))})]),_c('span',{staticClass:\"male\"},[_c('em',{style:(_vm.barCSSWidthTotal(_vm.totaalMan))}),_vm._v(\"\\n \"+_vm._s(_vm.totaalMan)+\"\\n \")])]),_vm._m(2)],2),_vm._m(3)]],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('em',[_vm._v(\"Nog geen gegevens beschikbaar\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_c('strong',[_vm._v(\"Totaal\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('label',[_vm._v(\" \")]),_c('span',{staticClass:\"female\"},[_vm._v(\"Vrouw \"),_c('em')]),_c('span',{staticClass:\"male\"},[_c('em'),_vm._v(\" Man\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('em',[_vm._v(\"Verdeling van de verkozenen volgens leeftijd en geslacht\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport {ViewPortDimensions} from '../../../models/viewport.model';\nimport {GenderDistributie, STATS_AGE_RANGES} from '../../../models/election.result.model';\nimport ShareComponent from '@/components/share/share.vue';\n\n@Component({\n components: {share: ShareComponent},\n})\nexport default class GenderVerdelingComponent extends Vue {\n @Prop() public statistiek: any;\n @Prop() public small: string;\n @Prop() public viewport: ViewPortDimensions;\n\n public distributie: GenderDistributie[] = [];\n public totaalMan: number = 0;\n public totaalVrouw: number = 0;\n public totaalVrouwPct: number = 0;\n\n private segmentScale = 100; // in percent\n private totalScaleAmount = 100; // in percent\n private DISPLAY_TRESHOLD: number = -1; // do not display % below this treshold (in %)\n private ANIMATION_DELAY: number = 250; // ms\n\n constructor() {\n super();\n }\n\n mounted() {\n this.initGraph();\n }\n\n @Watch('statistiek')\n public onStatistiekChanged() {\n this.$nextTick(() => {\n this.initGraph();\n });\n }\n\n public get nodata(): boolean {\n return !this.statistiek || !Math.max(this.statistiek.totaalVrouw, this.statistiek.totaalMan);\n }\n\n public barCSSWidth(amount: number): any {\n return {\n width: this.itemScale(amount) + '%',\n };\n }\n\n public barCSSWidthTotal(amount: number): any {\n return {\n width: this.totalScale(amount) + '%',\n };\n }\n\n private itemScale(amount: number): number {\n return amount * this.segmentScale; // in %\n }\n\n private totalScale(amount: number): number {\n return amount * this.totalScaleAmount; // in %\n }\n\n // decide whether we should show percentage\n public shouldShowBar(amount: number): boolean {\n return false;\n // return !this.small && this.itemScale(amount) > this.DISPLAY_TRESHOLD;\n }\n\n private initGraph() {\n if (!this.statistiek) {\n return;\n }\n\n this.initGraphScale();\n\n if (!this.small) {\n // reset data (so it's starts from zero)\n this.distributie = this.emptyGenderDistributie();\n }\n\n // trigger animation\n setTimeout(() => {\n this.distributie = this.statistiek.distributie;\n }, this.ANIMATION_DELAY);\n\n }\n\n // animation needs empty data at first\n // this mocks all the ranges with empty data\n private emptyGenderDistributie(): GenderDistributie[] {\n const emptyDistributie: GenderDistributie[] = [];\n for (const stats_age_range of STATS_AGE_RANGES) {\n const range = new GenderDistributie();\n range.range = stats_age_range;\n emptyDistributie.push(range);\n }\n return emptyDistributie;\n }\n\n private initGraphScale() {\n // calculate max amount over all ranges\n const maxPerson: number = this.statistiek.distributie.reduce(\n (maxAmount: number, distributie: GenderDistributie) => {\n maxAmount = Math.max(maxAmount, distributie.vrouw);\n maxAmount = Math.max(maxAmount, distributie.man);\n return maxAmount;\n },\n 0,\n );\n\n // maxScale can be used to make the bars smaller inside the chart\n const maxScale = 80;\n this.segmentScale = (maxScale / maxPerson);\n this.totalScaleAmount = (100 / this.statistiek.totaalVerkozen);\n this.totaalMan = this.statistiek.totaalMan;\n this.totaalVrouw = this.statistiek.totaalVrouw;\n this.totaalVrouwPct = this.statistiek.totaalVrouwPct;\n }\n\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./genderverdeling.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./genderverdeling.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./genderverdeling.vue?vue&type=template&id=3bdbb13f&scoped=true&\"\nimport script from \"./genderverdeling.vue?vue&type=script&lang=ts&\"\nexport * from \"./genderverdeling.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./genderverdeling.scss?vue&type=style&index=0&id=3bdbb13f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3bdbb13f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=495f2bde&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=495f2bde&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quickview.component.vue?vue&type=style&index=0&id=8f3bf730&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quickview.component.vue?vue&type=style&index=0&id=8f3bf730&scoped=true&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComponent.vue?vue&type=style&index=0&id=d849eeb0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComponent.vue?vue&type=style&index=0&id=d849eeb0&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./closebutton.vue?vue&type=style&index=0&id=368c1770&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./closebutton.vue?vue&type=style&index=0&id=368c1770&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./printbutton.vue?vue&type=style&index=0&id=06e660c5&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./printbutton.vue?vue&type=style&index=0&id=06e660c5&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./genderverdeling.scss?vue&type=style&index=0&id=3bdbb13f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./genderverdeling.scss?vue&type=style&index=0&id=3bdbb13f&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./hoverprogress.scss?vue&type=style&index=0&id=d07121d4&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./hoverprogress.scss?vue&type=style&index=0&id=d07121d4&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./resultheader.scss?vue&type=style&index=0&id=5bbdfc22&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!./resultheader.scss?vue&type=style&index=0&id=5bbdfc22&lang=scss&scoped=true&\"","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.electionTypeName && _vm.nis)?_c('header',{attrs:{\"aria-label\":\"Resultaten\"}},[(!_vm.isParlement)?[_c('h1',{on:{\"click\":function($event){return _vm.gotoResultPage()}}},[(_vm.naam)?_c('span',{staticClass:\"naam\"},[_vm._v(_vm._s(_vm.naam))]):_vm._e(),_c('span',{staticClass:\"electiontype\"},[_vm._v(\"\\n -  \"+_vm._s(_vm.electionName().toLowerCase())+\"\\n \")]),(!_vm.mobileView)?_c('printbutton',{attrs:{\"label\":\"Afdrukken resultaten\"},on:{\"print\":function($event){return _vm.printResults()}}}):_vm._e()],1),(!!_vm.nis)?_c('span',{staticClass:\"print-hidden\",attrs:{\"title\":\"Bewaar als favoriet\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.toggleFavorite()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.toggleFavorite()}}},[_c('svg',{staticClass:\"icon-result\",class:{'favorite': _vm.isFavorite}},[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#star\"}})])]):_vm._e()]:[_c('h1',{on:{\"click\":function($event){return _vm.gotoResultPage()}}},[_c('span',{staticClass:\"naam nofav\"},[_vm._v(\"Vlaams Parlement\")]),(!_vm.mobileView)?_c('printbutton',{attrs:{\"label\":\"Afdrukken resultaten\"},on:{\"print\":function($event){return _vm.printResults()}}}):_vm._e()],1)]],2):_c('header',{attrs:{\"aria-label\":\"Home\"}},[_c('h1',{on:{\"click\":function($event){return _vm.gotoResultPage()}}},[_c('span',{staticClass:\"naam nofav\"},[_vm._v(\"Welkom\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport {EntityResult, LijstResult} from '@/models/election.result.model';\nimport {VIEWPORT, ViewPortDimensions} from '@/models/viewport.model';\nimport PrintButtonComponent from '@/components/UI/printbutton/printbutton.vue';\nimport {\n ELECTION_NAME_TO_TYPE,\n ELECTION_NAMES,\n ELECTION_TYPE_TO_MAP_NAME,\n ELECTION_TYPE_TO_NAME,\n ELECTION_TYPES,\n} from '../../models/election.result.model';\nimport {PROVINCIES} from '../../models/provincies';\nimport {Utils} from '../../shared/utils';\n\n@Component({\n components: {\n printbutton: PrintButtonComponent,\n },\n})\nexport default class ResultHeaderComponent extends Vue {\n @Prop() public viewport: ViewPortDimensions;\n\n public isFavorite = false;\n public favorites: { [path: string]: string } = {};\n public ELECTION_NAMES = ELECTION_NAMES;\n\n constructor() {\n super();\n }\n\n public created() {\n this.checkFavorite();\n }\n\n @Watch('$route')\n public onPropertyChanged(newRoute: any, oldRoute: any) {\n this.checkFavorite();\n }\n\n get naam(): string {\n return this.$store.getters['current/naam'];\n }\n\n get nis(): string {\n return this.$route.params['nis'] || ''; // returns undefined as ''\n }\n\n get electionTypeName(): string {\n return this.$route.params['electionTypeName'];\n }\n\n get isParlement(): boolean {\n const current = this.$store.getters['current/query'];\n return current.electionType === ELECTION_TYPES.PARLEMENT;\n }\n\n get isDistrict(): boolean {\n return this.nis.indexOf('D') > -1;\n }\n\n get mobileView() {\n return this.$store.getters['current/useMobileView'];\n }\n\n // allows subpaths (eg statistieken) to be recognized as part of the favorite\n get currentBasePath(): string {\n return `/${this.electionTypeName}/${this.nis}`;\n }\n\n // noinspection JSMethodCanBeStatic\n // noinspection JSUnusedGlobalSymbols\n public printResults() {\n Utils.printResults();\n }\n\n public gotoResultPage() {\n if (!this.mobileView) {\n return;\n }\n\n this.$router.push({\n name: 'resultpage',\n params: {\n electionTypeName: this.electionTypeName,\n nis: this.nis,\n },\n });\n }\n\n public electionName() {\n let name = ELECTION_TYPE_TO_MAP_NAME[ELECTION_NAME_TO_TYPE[this.electionTypeName]];\n return name;\n }\n\n public toggleFavorite() {\n console.log('Favorite');\n if (this.isFavorite) {\n delete this.favorites[this.currentBasePath];\n } else {\n this.favorites[this.currentBasePath] = `${this.naam} - ${this.electionName()}`;\n }\n this.$store.dispatch('current/setFavorites', this.favorites);\n localStorage.setItem('favorites', JSON.stringify(this.favorites));\n this.isFavorite = !this.isFavorite;\n }\n\n private checkFavorite() {\n this.favorites = JSON.parse(localStorage.getItem('favorites') || '{}');\n this.isFavorite = this.favorites[this.currentBasePath] !== undefined;\n }\n\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resultheader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resultheader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./resultheader.html?vue&type=template&id=5bbdfc22&scoped=true&\"\nimport script from \"./resultheader.vue?vue&type=script&lang=ts&\"\nexport * from \"./resultheader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./resultheader.scss?vue&type=style&index=0&id=5bbdfc22&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bbdfc22\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/library/fn/json/stringify\");","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"close-button\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.$emit('close')},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.$emit('close')}}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n \"),_c('svg',[_c('use',{attrs:{\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"xlink:href\":\"#icon-cross\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from 'vue-property-decorator';\n\n@Component\nexport default class CloseButtonComponent extends Vue {\n @Prop() public label: string;\n\n public DEFAULT_TEXT: string = 'Aan het laden'; // anySurfer text\n public DELAY: number = 50; // ms to wait before showing\n\n private isHidden: boolean = true;\n\n constructor() {\n super();\n }\n\n created() {\n setTimeout(() => {\n this.isHidden = false;\n }, this.DELAY);\n }\n\n get invisibleText(): string {\n return this.label || this.DEFAULT_TEXT;\n }\n\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./closebutton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./closebutton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./closebutton.vue?vue&type=template&id=368c1770&scoped=true&\"\nimport script from \"./closebutton.vue?vue&type=script&lang=ts&\"\nexport * from \"./closebutton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./closebutton.vue?vue&type=style&index=0&id=368c1770&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"368c1770\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopViewport.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopViewport.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}