{"version":3,"sources":["webpack:///./src/common/useFetchData.js","webpack:///./node_modules/chalk/node_modules/color-convert/conversions.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/chalk/node_modules/color-convert/index.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/chalk/node_modules/supports-color/browser.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./src/common/useBoundingClientRect.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/split-on-first/index.js","webpack:///./src/common/ChartData.jsx","webpack:///./node_modules/slugify/slugify.js","webpack:///./node_modules/chalk/node_modules/color-convert/route.js","webpack:///./node_modules/chalk/source/index.js","webpack:///./src/components/DepartmentListing/DepartmentListing.jsx","webpack:///./src/components/Svg/Svg.jsx","webpack:///(webpack)/buildin/module.js","webpack:///./src/components/Select/SubGroupSelect.jsx","webpack:///./src/common/helpers.js","webpack:///./src/components/Icon/Icon.jsx","webpack:///./src/components/MultiSelect/MultiSelect.jsx","webpack:///./src/components/Dropdown/Dropdown.jsx","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/delaunator/index.js","webpack:///./node_modules/d3-delaunay/src/path.js","webpack:///./node_modules/d3-delaunay/src/polygon.js","webpack:///./node_modules/d3-delaunay/src/voronoi.js","webpack:///./node_modules/d3-delaunay/src/delaunay.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/duration.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/src/ticks.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-transition/src/active.js","webpack:///./src/components/Chart/YAxis.jsx","webpack:///./node_modules/date-fns/esm/fp/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./src/components/Chart/XAxisTrend.jsx","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./src/components/LineChart/LineChart.jsx","webpack:///./node_modules/d3-force/src/lcg.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./src/components/Table/Table.jsx","webpack:///./src/components/LineChart/TrendsTable.jsx","webpack:///./src/components/Indicators/Indicators.jsx","webpack:///./src/components/Footnotes/Footnotes.jsx","webpack:///./src/components/ChartContent/ChartContent.jsx","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/chalk/node_modules/color-name/index.js","webpack:///./node_modules/chalk/source/templates.js","webpack:///./node_modules/chalk/source/util.js","webpack:///./node_modules/chalk/node_modules/ansi-styles/index.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/quad.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-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.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:///./src/common/chart.js"],"names":["sessionStorage","clear","console","warn","blankState","isLoading","error","undefined","data","dataFetchReducer","state","action","type","Error","useCreateDataArray","arr","options","dataCache","setDataCache","useState","fetchOptions","useDeepCompareMemoize","dispatch","useReducer","useEffect","fetchData","async","url","fetch","then","response","headers","get","includes","json","text","setItem","JSON","stringify","e","catch","Promise","all","R","getData","useFetchJson","initalState","cancelled","message","value","ref","useRef","current","cssKeywords","reverseKeywords","key","Object","keys","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","module","exports","model","length","defineProperty","r","g","b","min","Math","max","delta","h","s","l","rdif","gdif","bdif","v","diff","diffc","c","w","k","reversed","currentClosestKeyword","currentClosestDistance","Infinity","distance","y","x","z","t2","t3","val","t1","i","smin","lmin","hi","floor","f","p","q","t","vmin","sl","wh","bl","ratio","n","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","args","saturation","round","ansi","color","mult","rem","string","toString","toUpperCase","substring","match","colorString","split","map","char","join","integer","parseInt","chroma","grayscale","hue","pure","mg","initRange","domain","range","arguments","this","conversions","route","forEach","fromModel","routes","toModel","fn","wrappedFn","arg0","result","len","conversion","wrapRounded","raw","wrapRaw","implicit","Symbol","ordinal","index","Map","unknown","scale","d","set","push","_","slice","has","Array","from","copy","apply","stdout","stderr","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","prototype","constructor","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","arcTo","x0","y0","x21","y21","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","useBoundingClientRect","refProp","dimensions","setDimensions","fallbackRef","measure","useCallback","getBoundingClientRect","timeoutId","setTimeout","clearTimeout","measureDebounce","debounce","window","addEventListener","cancel","removeEventListener","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","concat","call","decode","input","tokens","encodedURI","TypeError","replace","replaceMap","exec","entries","customDecodeURIComponent","separator","separatorIndex","indexOf","ChartDataContext","createContext","useChartData","useContext","reducer","prevState","updatedProperty","filterState","initState","locationid","timeframeid","indicator","subdistributionclass","subdistributionid","subdistributionReadableName","ChartDataProvider","props","children","otherProps","chartData","setChartData","filterData","setFilterData","apiUrl","process","useFetchData","method","Provider","factory","charMap","parse","locales","locale","replacement","slug","normalize","reduce","ch","remove","strict","trim","lower","toLowerCase","extend","customMap","assign","deriveBFS","graph","models","parent","buildGraph","queue","pop","adjacents","adjacent","node","unshift","link","to","wrapConversion","cur","ansiStyles","stdoutColor","stderrColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","isArray","levelMapping","styles","create","ChalkClass","chalkFactory","chalk","object","level","Number","isInteger","colorLevel","applyOptions","template","arguments_","chalkTag","setPrototypeOf","Chalk","Instance","styleName","style","builder","createBuilder","createStyler","open","close","_styler","_isEmpty","visible","usedModels","styler","bgColor","proto","defineProperties","enumerable","_generator","openAll","closeAll","self","applyStyle","lfIndex","strings","firstString","parts","String","supportsColor","propTypes","deptList","array","deptListText","DepartmentListing","deptArray","depts","sortedDeptArray","AOS","init","offset","duration","once","className","item","department","name","id","Svg","width","height","xmlns","role","focusable","aria-hidden","fill","fillRule","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","points","webpackPolyfill","deprecate","paths","selected","disabled","bool","itemToId","func","label","onChange","placeholder","activeSubdistributionClass","any","renderItem","icon","selectProps","shape","items","arrayOf","isRequired","itemToString","selectedItem","SubGroupSelect","isOpen","setOpen","groupMenu","dropdown","useClickAway","getToggleButtonProps","getLabelProps","getMenuProps","useSelect","hasSelection","buttonText","querySelectorAll","focus","cx","htmlFor","onClick","onKeyDown","nativeEvent","preventDownshiftDefault","title","onBlur","contains","document","activeElement","section","sectionIndex","filterId","filterDefaultValue","uniqSlug","slugify","Select","change","subdistributionClass","isSubGroup","hideClear","updateBtnText","shouldOpen","defaultProps","lookupValueById","prop","iconName","Icon","tabIndex","xlinkHref","assetsFolder","activeItems","handleSubmit","facetTitle","selectRange","MultiSelect","isInputLock","selectedItems","setSelectedItems","currentFacets","setCurrentFacets","facetMenu","getDropdownProps","useMultipleSelection","initialSelectedItems","selectState","stateReducer","actionAndChanges","changes","stateChangeTypes","MenuKeyDownArrowDown","highlightedIndex","keyDown","MenuKeyDownArrowUp","keyUp","MenuKeyDownEscape","MenuKeyDownHome","MenuKeyDownEnd","MenuKeyDownEnter","MenuKeyDownSpaceButton","ItemClick","MenuBlur","closeMenu","FunctionCloseMenu","defaultHighlightedIndex","getA11ySelectionMessage","onIsOpenChange","event","lookup","onSelectedItemChange","selectedArray","getItemProps","visibility","hidden","position","preventKeyAction","button","Dropdown","dropdownRef","o","aria-labelledby","aria-controls","valueof","values","EPSILON","pow","EDGE_STACK","Uint32Array","Delaunator","getX","defaultGetX","getY","defaultGetY","coords","Float64Array","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","ceil","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","update","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","cy","i0","i1","i2","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","j","d0","subarray","triangles","halfedges","center","ax","ay","bx","by","ex","ey","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","start","_legalize","pseudoAngle","ar","b0","al","p0","pr","pl","p1","inCircle","hbl","_link","br","orientIfSure","px","py","rx","ry","qx","qy","fx","fy","bp","cp","ids","dists","temp","tempDist","swap","tmp","Polygon","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","ab","context","buffer","inedges","ti","tj","xi","yi","xj","yj","_renderSegment","h0","h1","_project","_clip","cell","cellPolygon","polygon","renderCell","S","c0","_regioncode","c1","_clipSegment","_step","ci","neighbors","cj","loop","ai","li","aj","lj","e0","_cell","V","_clipInfinite","_clipFinite","e1","P","sx0","sy0","sx1","sy1","_edgecode","_edge","vx0","vy0","vxn","vyn","splice","vx","vy","pointX","pointY","jitter","that","flatArray","flatIterable","_delaunator","_hullIndex","collinear","sort","bounds","hypot","hullIndex","dc","dt","renderHull","t0","trianglePolygon","renderTriangle","noop","test","Dispatch","parseTypenames","typenames","types","hasOwnProperty","callback","on","typename","T","taskHead","taskTail","timeout","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","bind","clearNow","Timer","_call","_time","_next","timer","delay","time","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","stop","initialAngle","random","Linear","_context","areaStart","_line","areaEnd","NaN","lineStart","_point","lineEnd","point","compare","lo","mid","ascending","ascendingComparator","e10","e5","e2","tickIncrement","count","step","power","log","LN10","tickStep","step0","step1","newInterval","floori","offseti","field","interval","date","d1","previous","filter","setTime","end","every","isFinite","millisecond","getMilliseconds","getUTCSeconds","getSeconds","durationSecond","getMinutes","durationMinute","getHours","setHours","setDate","getDate","getTimezoneOffset","durationHour","weekday","getDay","durationDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","setMonth","getMonth","getFullYear","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","target","bisector","reverse","ticks","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","sign","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","u","parseWeekNumberSunday","U","parseWeekNumberISO","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newFormat","specifier","format","charCodeAt","charAt","newParse","X","utcFormat","utcParse","formatLocale","ascendingBisect","bisectRight","bisect","definition","Color","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","rgb_formatRgb","isNaN","Hsl","hslConvert","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","define","displayable","formatHsl","brighter","darker","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","reA","reB","source","am","bm","bs","bi","lastIndex","one","zero","numberArray","valueOf","unit","identity","bimap","interpolate","r0","r1","polymap","clamp","transformer","transform","untransform","piecewise","output","rescale","invert","rangeRound","continuous","calendar","second","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickFormat","nice","precision","formatSpecifier","exponent","precisionPrefix","precisionRound","precisionFixed","linearish","prestep","maxIter","translateX","translateY","bandwidth","entering","__axis","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","axis","spacing","range0","range1","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","merge","insert","transition","getAttribute","parentNode","each","tickSize","none","selector","querySelector","matches","childMatcher","find","childFirst","firstElementChild","EnterNode","datum","ownerDocument","namespaceURI","_parent","__data__","appendChild","child","insertBefore","next","bindIndex","group","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","delete","xhtml","svg","xlink","xml","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","listener","onAdd","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","exitGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","size","empty","getAttributeNS","property","classed","html","creator","before","deep","iterator","elapsed","emptyOn","emptyTween","schedules","__transition","tween","ease","timing","schedule","svgNode","degrees","rotate","skewX","scaleX","scaleY","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","inherit","id0","id1","styleNull","listener0","styleMaybeRemove","easeVarying","resolve","reject","interrupt","defaultTiming","active","dataType","oneOf","DATA_TYPES","number","margin","top","transitionDuration","gridLines","YAxis","yAxisRef","yAxis","axisLeft","dataTypeFormatter","convertToFP","dirtyDateLeft","dirtyDateRight","requiredArgs","dateLeft","toDate","dateRight","XAxisTrend","xAxisRef","dirtyDate","getYear","years","differenceInCalendarYears","canFit","xAxis","axisBottom","timeYear","lines","displayName","dataPoints","timeFrame","LineChart","svgWidth","svgHeight","svgRef","popupInfo","setPopupInfo","voronoiOverlay","setVoronoiOverlay","bottom","shouldShowLabels","xScale","useMemo","xDomain","parseISO","extent","scaleTime","yScale","yDomain","scaleLinear","lineGenerator","defined","curve","defined0","colorScale","scaleOrdinal","COLORS","getColor","findDataAtPoint","Delaunay","labelPositions","positions","targetY","simulation","alpha","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg","iterations","force","initializeNodes","radius","angle","initializeForce","initialize","randomSource","d2","closest","forceSimulation","radii","strength","tree","ri","ri2","quadtree","visitAfter","prepare","visit","quad","rj","jiggle","constant","_nodes","_random","forceCollide","LABEL_HEIGHT","strengths","yz","forceY","physicalOrder","orderedLabelPositions","renderLabel","labelPosition","fontSize","pointerEvents","Popup","isHidden","triangleSide","triangleAlignment","flipToContain","nudgeToContain","NUMBER","hoveredPoint","lineIsHovered","lineIsDim","pointId","getPointId","render","onMouseMove","clientX","clientY","toFixed","onMouseLeave","colgroup","columns","header","useTh","initialSort","sortValueFn","perPage","renderRow","tfoot","rowData","Table","updateSort","columnId","isAscending","columnHasInitialSort","columnIsSortable","setSort","column","oldSort","useSort","page","setPage","sortFn","processedData","directionFn","pair","notNils","nils","someRowsHidden","tds","breakdownLabel","getChange","firstValue","TrendsTable","backgroundColor","formatPercentageNice","upArrow","downArrow","noArrow","handleClick","Indicators","maxWidth","footnotes","Footnotes","footnote","chartProps","lastAnalyzed","lineChartTitle","datasetInfo","defaultInitialIndicator","indicatorItems","trendsTableTitle","defaultIndicator","locationId","formattedFootnotes","defaultBreakdownLabel","ChartContent","trendTableTitle","setLines","setSelectedItem","filters","fullIndicator","queryObj","querystring","queryString","arrayFormat","isloading","readableState","filterOpts","filterItems","lineChartWidth","lineChartContainerRef","findSelectedItem","Container100","Fragment","readableName","facetIds","isTimeframe","filterDefaultId","vals","content","Section","aos","modifier","containerModifier","theme","str","encodeURIComponent","obj","predicate","ret","isArr","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","encode","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","query","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","parserForArrayFormat","param","Boolean","keysSorter","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","parseUrl","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","getHash","pick","exclude","exclusionFilter","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","unescape","bracket","fromCharCode","fromCodePoint","parseArguments","results","chunks","chunk","escape","character","parseStyle","buildStyle","enabled","layer","inverse","temporary","escapeCharacter","errMessage","replacer","substringLength","endIndex","returnValue","substr","postfix","gotCR","wrapAnsi16","wrapAnsi256","code","wrapAnsi16m","ansi2ansi","rgb2rgb","setLazyProperty","configurable","colorConvert","makeDynamicStyles","wrap","targetSpace","isBackground","sourceSpace","suite","codes","reset","bold","dim","italic","underline","strikethrough","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","bgGray","bgGrey","groupName","xm","ym","_root","leaf","_x","_y","defaultX","defaultY","Quadtree","addAll","leaf_copy","treeProto","cover","xz","quads","retainer","removeAll"],"mappings":"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","file":"f3a2679f2bd96d4859b5ebdaacf9657013a96dd0-79e79e519576537a0d43.js","sourcesContent":["// import useDeepCompareMemoize from \"./useDeepCompareMemoize.js\";\r\nimport * as R from \"ramda\";\r\nimport { useEffect, useReducer, useRef, useState } from \"react\";\r\nimport { bool, shape, string } from \"prop-types\";\r\n\r\nconst CACHE_ENABLED = false;\r\n\r\n// typeof sessionStorage !== \"undefined\" used all around for server rendering\r\n// (when sessionStorage doesn't exist)\r\n\r\nif (!CACHE_ENABLED && typeof sessionStorage !== \"undefined\") {\r\n sessionStorage.clear();\r\n console.warn(\"clear sessionStorage!\");\r\n}\r\n\r\nexport const remoteDataShape = (dataShape) =>\r\n shape({\r\n isLoading: bool,\r\n error: string,\r\n data: dataShape,\r\n });\r\n\r\nconst blankState = {\r\n isLoading: false,\r\n error: undefined,\r\n data: undefined,\r\n};\r\n\r\nconst dataFetchReducer = (state, action) => {\r\n switch (action.type) {\r\n case \"FETCH_RESET\":\r\n return blankState;\r\n case \"FETCH_INIT\":\r\n return {\r\n ...state,\r\n isLoading: true,\r\n error: undefined,\r\n };\r\n case \"FETCH_SUCCESS\":\r\n return {\r\n ...state,\r\n isLoading: false,\r\n error: undefined,\r\n data: action.data,\r\n };\r\n case \"FETCH_FAILURE\":\r\n return {\r\n ...state,\r\n isLoading: false,\r\n error: action.error,\r\n };\r\n default:\r\n throw new Error();\r\n }\r\n};\r\n\r\n/**\r\n * useFetchJson\r\n * usage: const dataResponse = useFetchJson(\"/api?arg=1\", { method: \"GET\" });\r\n *\r\n * @param {[type]} args args to be pased to fetch, fetch(url, options)\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax\r\n * @return {Object} fetch state: { isLoading, error, data }\r\n *\r\n * NOTE options will change every render in the useage example above, so we need\r\n * to use useDeepCompareMemoize to make sure we don't unnecessarily fetch again\r\n * see https://github.com/kentcdodds/use-deep-compare-effect\r\n */\r\n\r\nexport function useCreateDataArray(arr, options) {\r\n const shouldCache =\r\n CACHE_ENABLED &&\r\n R.compose(R.equals(\"GET\"), R.propOr(\"GET\", \"method\"))(options || {});\r\n\r\n const [dataCache, setDataCache] = useState([]);\r\n // const dataCache = [];\r\n const fetchOptions = useDeepCompareMemoize(options);\r\n const [state, dispatch] = useReducer(dataFetchReducer, {});\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n if (!arr) return;\r\n\r\n const fetchData = async (url) => {\r\n // if there is no url, reset\r\n if (!url) {\r\n return;\r\n }\r\n const shouldCache =\r\n CACHE_ENABLED &&\r\n R.compose(R.equals(\"GET\"), R.propOr(\"GET\", \"method\"))(options || {});\r\n\r\n const cachedData =\r\n shouldCache &&\r\n typeof sessionStorage !== \"undefined\" &&\r\n JSON.parse(sessionStorage.getItem(url));\r\n\r\n // only fetch if we haven't fetched and cached already\r\n if (!cachedData) {\r\n dispatch({\r\n type: \"FETCH_INIT\",\r\n });\r\n return fetch(url, fetchOptions)\r\n .then((response) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n return contentType.includes(\"application/json\")\r\n ? response.json()\r\n : response.text();\r\n })\r\n .then((data) => {\r\n if (!cancelled) {\r\n if (typeof sessionStorage !== \"undefined\") {\r\n // don't crash if sessionStorage fails (eg. if the sessionStorage has exceeded the quota)\r\n try {\r\n sessionStorage.setItem(url, JSON.stringify(data));\r\n return data;\r\n } catch (e) {\r\n console.warn(e);\r\n return e;\r\n }\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n if (!cancelled) {\r\n dispatch({\r\n type: \"FETCH_FAILURE\",\r\n error,\r\n });\r\n }\r\n });\r\n } else {\r\n return cachedData;\r\n }\r\n };\r\n\r\n const getData = async () => {\r\n return Promise.all(R.map(fetchData)(arr));\r\n };\r\n\r\n getData(arr).then((data) => {\r\n dispatch({\r\n type: \"FETCH_SUCCESS\",\r\n data,\r\n });\r\n });\r\n }, [fetchOptions, shouldCache]);\r\n\r\n return state;\r\n}\r\n\r\nexport default function useFetchJson(url, options) {\r\n // we can only cache if this is GET request (maybe in the future we can cache\r\n // for POST too, but we'll have to use the body as a cache key, etc)\r\n const shouldCache =\r\n CACHE_ENABLED &&\r\n R.compose(R.equals(\"GET\"), R.propOr(\"GET\", \"method\"))(options || {});\r\n\r\n const cachedData =\r\n shouldCache &&\r\n typeof sessionStorage !== \"undefined\" &&\r\n JSON.parse(sessionStorage.getItem(url));\r\n\r\n const initalState = shouldCache\r\n ? { ...blankState, data: cachedData }\r\n : blankState;\r\n\r\n const [state, dispatch] = useReducer(dataFetchReducer, initalState);\r\n\r\n // will only update if the options _value_ changes (not reference)\r\n const fetchOptions = useDeepCompareMemoize(options);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n const cachedData =\r\n shouldCache &&\r\n typeof sessionStorage !== \"undefined\" &&\r\n JSON.parse(sessionStorage.getItem(url));\r\n\r\n // only fetch if we haven't fetched and cached already\r\n if (cachedData) {\r\n // don't do anything! we already have the data, and dispatching will trigger\r\n // a rerender\r\n // dispatch({\r\n // type: \"FETCH_SUCCESS\",\r\n // data: cachedData,\r\n // });\r\n } else {\r\n dispatch({\r\n type: \"FETCH_INIT\",\r\n });\r\n\r\n fetch(url, fetchOptions)\r\n .then((response) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n return contentType.includes(\"application/json\")\r\n ? response.json()\r\n : response.text();\r\n })\r\n .then((data) => {\r\n if (!cancelled) {\r\n if (typeof sessionStorage !== \"undefined\") {\r\n // don't crash if sessionStorage fails (eg. if the sessionStorage has exceeded the quota)\r\n try {\r\n sessionStorage.setItem(url, JSON.stringify(data));\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n\r\n dispatch({\r\n type: \"FETCH_SUCCESS\",\r\n data,\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n if (!cancelled) {\r\n dispatch({\r\n type: \"FETCH_FAILURE\",\r\n error: error.message,\r\n });\r\n }\r\n });\r\n\r\n return () => {\r\n cancelled = true;\r\n };\r\n }\r\n }, [fetchOptions, shouldCache, url]);\r\n\r\n return state;\r\n}\r\n\r\n// will only update if the value has changed with a deep compare (instead of by reference equality)\r\n// https://github.com/kentcdodds/use-deep-compare-effect/blob/master/src/index.js#L21-L29\r\nfunction useDeepCompareMemoize(value) {\r\n const ref = useRef();\r\n\r\n if (!R.equals(value, ref.current)) {\r\n ref.current = value;\r\n }\r\n\r\n return ref.current;\r\n}\r\n","/* MIT license */\n\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name'); // NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\n\nconst reverseKeywords = {};\n\nfor (const key of Object.keys(cssKeywords)) {\n reverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n rgb: {\n channels: 3,\n labels: 'rgb'\n },\n hsl: {\n channels: 3,\n labels: 'hsl'\n },\n hsv: {\n channels: 3,\n labels: 'hsv'\n },\n hwb: {\n channels: 3,\n labels: 'hwb'\n },\n cmyk: {\n channels: 4,\n labels: 'cmyk'\n },\n xyz: {\n channels: 3,\n labels: 'xyz'\n },\n lab: {\n channels: 3,\n labels: 'lab'\n },\n lch: {\n channels: 3,\n labels: 'lch'\n },\n hex: {\n channels: 1,\n labels: ['hex']\n },\n keyword: {\n channels: 1,\n labels: ['keyword']\n },\n ansi16: {\n channels: 1,\n labels: ['ansi16']\n },\n ansi256: {\n channels: 1,\n labels: ['ansi256']\n },\n hcg: {\n channels: 3,\n labels: ['h', 'c', 'g']\n },\n apple: {\n channels: 3,\n labels: ['r16', 'g16', 'b16']\n },\n gray: {\n channels: 1,\n labels: ['gray']\n }\n};\nmodule.exports = convert; // Hide .channels and .labels properties\n\nfor (const model of Object.keys(convert)) {\n if (!('channels' in convert[model])) {\n throw new Error('missing channels property: ' + model);\n }\n\n if (!('labels' in convert[model])) {\n throw new Error('missing channel labels property: ' + model);\n }\n\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error('channel and label counts mismatch: ' + model);\n }\n\n const {\n channels,\n labels\n } = convert[model];\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], 'channels', {\n value: channels\n });\n Object.defineProperty(convert[model], 'labels', {\n value: labels\n });\n}\n\nconvert.rgb.hsl = function (rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n let h;\n let s;\n\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n\n h = Math.min(h * 60, 360);\n\n if (h < 0) {\n h += 360;\n }\n\n const l = (min + max) / 2;\n\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n\n return [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n let rdif;\n let gdif;\n let bdif;\n let h;\n let s;\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n\n const diffc = function (c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n\n if (diff === 0) {\n h = 0;\n s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n\n return [h * 360, s * 100, v * 100];\n};\n\nconvert.rgb.hwb = function (rgb) {\n const r = rgb[0];\n const g = rgb[1];\n let b = rgb[2];\n const h = convert.rgb.hsl(rgb)[0];\n const w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const k = Math.min(1 - r, 1 - g, 1 - b);\n const c = (1 - r - k) / (1 - k) || 0;\n const m = (1 - g - k) / (1 - k) || 0;\n const y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n /*\n \tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n */\n return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;\n}\n\nconvert.rgb.keyword = function (rgb) {\n const reversed = reverseKeywords[rgb];\n\n if (reversed) {\n return reversed;\n }\n\n let currentClosestDistance = Infinity;\n let currentClosestKeyword;\n\n for (const keyword of Object.keys(cssKeywords)) {\n const value = cssKeywords[keyword]; // Compute comparative distance\n\n const distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest\n\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n\n return currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n return cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255; // Assume sRGB\n\n r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;\n g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;\n b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;\n const x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n const y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n const z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n const xyz = convert.rgb.xyz(rgb);\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n const h = hsl[0] / 360;\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n let t2;\n let t3;\n let val;\n\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n\n for (let i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n\n if (t3 < 0) {\n t3++;\n }\n\n if (t3 > 1) {\n t3--;\n }\n\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n const h = hsl[0];\n let s = hsl[1] / 100;\n let l = hsl[2] / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (l + s) / 2;\n const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n const h = hsv[0] / 60;\n const s = hsv[1] / 100;\n let v = hsv[2] / 100;\n const hi = Math.floor(h) % 6;\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - s * f);\n const t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n\n switch (hi) {\n case 0:\n return [v, t, p];\n\n case 1:\n return [q, v, p];\n\n case 2:\n return [p, v, t];\n\n case 3:\n return [p, q, v];\n\n case 4:\n return [t, p, v];\n\n case 5:\n return [v, p, q];\n }\n};\n\nconvert.hsv.hsl = function (hsv) {\n const h = hsv[0];\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const vmin = Math.max(v, 0.01);\n let sl;\n let l;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n\n\nconvert.hwb.rgb = function (hwb) {\n const h = hwb[0] / 360;\n let wh = hwb[1] / 100;\n let bl = hwb[2] / 100;\n const ratio = wh + bl;\n let f; // Wh + bl cant be > 1\n\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n const i = Math.floor(6 * h);\n const v = 1 - bl;\n f = 6 * h - i;\n\n if ((i & 0x01) !== 0) {\n f = 1 - f;\n }\n\n const n = wh + f * (v - wh); // Linear interpolation\n\n let r;\n let g;\n let b;\n /* eslint-disable max-statements-per-line,no-multi-spaces */\n\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n /* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\n return [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n const c = cmyk[0] / 100;\n const m = cmyk[1] / 100;\n const y = cmyk[2] / 100;\n const k = cmyk[3] / 100;\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n const x = xyz[0] / 100;\n const y = xyz[1] / 100;\n const z = xyz[2] / 100;\n let r;\n let g;\n let b;\n r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n b = x * 0.0557 + y * -0.2040 + z * 1.0570; // Assume sRGB\n\n r = r > 0.0031308 ? 1.055 * r ** (1.0 / 2.4) - 0.055 : r * 12.92;\n g = g > 0.0031308 ? 1.055 * g ** (1.0 / 2.4) - 0.055 : g * 12.92;\n b = b > 0.0031308 ? 1.055 * b ** (1.0 / 2.4) - 0.055 : b * 12.92;\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n return [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 0.008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let x;\n let y;\n let z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n const y2 = y ** 3;\n const x2 = x ** 3;\n const z2 = z ** 3;\n y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let h;\n const hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n\n if (h < 0) {\n h += 360;\n }\n\n const c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n const l = lch[0];\n const c = lch[1];\n const h = lch[2];\n const hr = h / 360 * 2 * Math.PI;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n return [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n const [r, g, b] = args;\n let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n value = Math.round(value / 50);\n\n if (value === 0) {\n return 30;\n }\n\n let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n\n if (value === 2) {\n ansi += 60;\n }\n\n return ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n // Optimization here; we already know the value and don't need to get\n // it converted for us.\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n const r = args[0];\n const g = args[1];\n const b = args[2]; // We use the extended greyscale palette here, with the exception of\n // black and white. normal palette only has 4 greyscale shades.\n\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n\n if (r > 248) {\n return 231;\n }\n\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n\n const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n let color = args % 10; // Handle greyscale\n\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n\n const mult = (~~(args > 50) + 1) * 0.5;\n const r = (color & 1) * mult * 255;\n const g = (color >> 1 & 1) * mult * 255;\n const b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n // Handle greyscale\n if (args >= 232) {\n const c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n\n args -= 16;\n let rem;\n const r = Math.floor(args / 36) / 5 * 255;\n const g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n const b = rem % 6 / 5 * 255;\n return [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n const integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);\n const string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\n if (!match) {\n return [0, 0, 0];\n }\n\n let colorString = match[0];\n\n if (match[0].length === 3) {\n colorString = colorString.split('').map(char => {\n return char + char;\n }).join('');\n }\n\n const integer = parseInt(colorString, 16);\n const r = integer >> 16 & 0xFF;\n const g = integer >> 8 & 0xFF;\n const b = integer & 0xFF;\n return [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(Math.max(r, g), b);\n const min = Math.min(Math.min(r, g), b);\n const chroma = max - min;\n let grayscale;\n let hue;\n\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma;\n }\n\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n const c = l < 0.5 ? 2.0 * s * l : 2.0 * s * (1.0 - l);\n let f = 0;\n\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n\n return [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const c = s * v;\n let f = 0;\n\n if (c < 1.0) {\n f = (v - c) / (1 - c);\n }\n\n return [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n const h = hcg[0] / 360;\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n\n if (c === 0.0) {\n return [g * 255, g * 255, g * 255];\n }\n\n const pure = [0, 0, 0];\n const hi = h % 1 * 6;\n const v = hi % 1;\n const w = 1 - v;\n let mg = 0;\n /* eslint-disable max-statements-per-line */\n\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n /* eslint-enable max-statements-per-line */\n\n\n mg = (1.0 - c) * g;\n return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];\n};\n\nconvert.hcg.hsv = function (hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1.0 - c);\n let f = 0;\n\n if (v > 0.0) {\n f = c / v;\n }\n\n return [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const l = g * (1.0 - c) + 0.5 * c;\n let s = 0;\n\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n\n return [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1.0 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n const w = hwb[1] / 100;\n const b = hwb[2] / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n\n return [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n return [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n return [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n return [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n return [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n const val = Math.round(gray[0] / 100 * 255) & 0xFF;\n const integer = (val << 16) + (val << 8) + val;\n const string = integer.toString(16).toUpperCase();\n return '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n const val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n};","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0:\n break;\n\n case 1:\n this.range(domain);\n break;\n\n default:\n this.range(range).domain(domain);\n break;\n }\n\n return this;\n}\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0:\n break;\n\n case 1:\n {\n if (typeof domain === \"function\") this.interpolator(domain);else this.range(domain);\n break;\n }\n\n default:\n {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);else this.range(interpolator);\n break;\n }\n }\n\n return this;\n}","export default function (x) {\n return function constant() {\n return x;\n };\n}","const conversions = require('./conversions');\n\nconst route = require('./route');\n\nconst convert = {};\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n const wrappedFn = function (...args) {\n const arg0 = args[0];\n\n if (arg0 === undefined || arg0 === null) {\n return arg0;\n }\n\n if (arg0.length > 1) {\n args = arg0;\n }\n\n return fn(args);\n }; // Preserve .conversion property if there is one\n\n\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n\n return wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n const wrappedFn = function (...args) {\n const arg0 = args[0];\n\n if (arg0 === undefined || arg0 === null) {\n return arg0;\n }\n\n if (arg0.length > 1) {\n args = arg0;\n }\n\n const result = fn(args); // We're assuming the result is an array here.\n // see notice in conversions.js; don't use box types\n // in conversion functions.\n\n if (typeof result === 'object') {\n for (let len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n\n return result;\n }; // Preserve .conversion property if there is one\n\n\n if ('conversion' in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n\n return wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], 'channels', {\n value: conversions[fromModel].channels\n });\n Object.defineProperty(convert[fromModel], 'labels', {\n value: conversions[fromModel].labels\n });\n const routes = route(fromModel);\n const routeModels = Object.keys(routes);\n routeModels.forEach(toModel => {\n const fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n});\nmodule.exports = convert;","import { initRange } from \"./init.js\";\nexport const implicit = Symbol(\"implicit\");\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\",\n i = index.get(key);\n\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n\n return scale;\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n return scale;\n}","'use strict';\n\nmodule.exports = {\n stdout: false,\n stderr: false\n};","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n\n this._ = \"\";\n}\n\nfunction path() {\n return new Path();\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function (x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function () {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function (x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function (x1, y1, x, y) {\n this._ += \"Q\" + +x1 + \",\" + +y1 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function (x1, y1, x2, y2, x, y) {\n this._ += \"C\" + +x1 + \",\" + +y1 + \",\" + +x2 + \",\" + +y2 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function (x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01; // Is the radius negative? Error.\n\n if (r < 0) throw new Error(\"negative radius: \" + r); // Is this path empty? Move to (x1,y1).\n\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n } // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) ; // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n } // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21; // If the start tangent is not coincident with (x0,y0), line to.\n\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + +(y01 * x20 > x01 * y20) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function (x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0; // Is the radius negative? Error.\n\n if (r < 0) throw new Error(\"negative radius: \" + r); // Is this path empty? Move to (x0,y0).\n\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n } // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n } // Is this arc empty? We’re done.\n\n\n if (!r) return; // Does the angle go the wrong way? Flip the direction.\n\n if (da < 0) da = da % tau + tau; // Is this a complete circle? Draw two arcs to complete the circle.\n\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n } // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + +(da >= pi) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function (x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + +w + \"v\" + +h + \"h\" + -w + \"Z\";\n },\n toString: function () {\n return this._;\n }\n};\nexport default path;","import { useEffect, useState, useCallback, useRef } from \"react\";\r\nimport debounce from \"lodash.debounce\";\r\n\r\n/**\r\n * useBoundingClientRect, react hook\r\n * given an element, return the dimensions.\r\n * see https://developer.mozilla.org/en-US/docs/Web/API/DOMRect\r\n * @param {Object} refProp optional, a ref provided by the consumer. If this isn't\r\n * provided, a fallbackRef will be used instead\r\n * @return {Tuple} [dimensions, ref]\r\n * @type dimensions is { width, height, top, right, bottom, left } of the element\r\n */\r\nexport default function useBoundingClientRect(refProp) {\r\n const [dimensions, setDimensions] = useState({});\r\n const fallbackRef = useRef();\r\n const ref = refProp || fallbackRef;\r\n\r\n const measure = useCallback(() => {\r\n if (ref.current) {\r\n // NOTE IE does not support toJSON\r\n // setDimensions(ref.current.getBoundingClientRect().toJSON());\r\n setDimensions(ref.current.getBoundingClientRect());\r\n } else {\r\n setDimensions({});\r\n }\r\n }, [ref]);\r\n\r\n useEffect(() => {\r\n // HACK to let the layout settle first\r\n const timeoutId = setTimeout(measure, 500);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [measure]);\r\n\r\n useEffect(() => {\r\n const measureDebounce = debounce(measure, 100);\r\n\r\n // we need to remeasure on scroll too, because top will change\r\n window.addEventListener(\"scroll\", measureDebounce);\r\n window.addEventListener(\"resize\", measureDebounce);\r\n\r\n return () => {\r\n measureDebounce.cancel();\r\n window.removeEventListener(\"scroll\", measureDebounce);\r\n window.removeEventListener(\"resize\", measureDebounce);\r\n };\r\n }, [measure]);\r\n\r\n return [dimensions, ref];\r\n}\r\n","'use strict';\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': '\\uFFFD\\uFFFD',\n '%FF%FE': '\\uFFFD\\uFFFD'\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = '\\uFFFD';\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};","'use strict';\n\nmodule.exports = (string, separator) => {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n\n if (separator === '') {\n return [string];\n }\n\n const separatorIndex = string.indexOf(separator);\n\n if (separatorIndex === -1) {\n return [string];\n }\n\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};","import { useContext, useReducer, useEffect, createContext } from \"react\";\r\nimport useFetchData from \"./useFetchData.js\";\r\nexport const ChartDataContext = createContext();\r\nimport * as R from \"ramda\";\r\n\r\nexport const useChartData = () => useContext(ChartDataContext);\r\n\r\nconst reducer = (prevState, updatedProperty) => ({\r\n ...prevState,\r\n ...updatedProperty,\r\n});\r\n\r\nconst filterState = { data: [] };\r\n\r\nconst initState = {\r\n locationid: [\"BAL\", \"CIN\", \"DAL\", \"IND\", \"MNP\"],\r\n timeframeid: [1, 2, 3],\r\n indicator: 0,\r\n subdistributionclass: 0,\r\n subdistributionid: null,\r\n subdistributionReadableName: null,\r\n};\r\n\r\nexport const ChartDataProvider = (props) => {\r\n const { children, ...otherProps } = props;\r\n const [chartData, setChartData] = useReducer(reducer, initState);\r\n const [filterData, setFilterData] = useReducer(reducer, filterState);\r\n const apiUrl = process.env.GATSBY_DATA_API_URL;\r\n const { data } = useFetchData(\r\n //TODO swap with dotenv var\r\n `${apiUrl}/filters`,\r\n { method: \"GET\" },\r\n );\r\n\r\n useEffect(() => {\r\n if (data) {\r\n setFilterData({ data: [...Array.from(R.values(data))] });\r\n }\r\n }, [data]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n",";\n\n(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n module.exports['default'] = factory();\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n root[name] = factory();\n }\n})('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\"}');\n var locales = JSON.parse('{\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"}}');\n\n function replace(string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected');\n }\n\n options = typeof options === 'string' ? {\n replacement: options\n } : options || {};\n var locale = locales[options.locale] || {};\n var replacement = options.replacement === undefined ? '-' : options.replacement;\n var slug = string.normalize().split('') // replace characters based on charMap\n .reduce(function (result, ch) {\n return result + (locale[ch] || charMap[ch] || (ch === replacement ? ' ' : ch)). // remove not allowed characters\n replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '');\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n } // Remove leading/trailing spaces, then replace all other spaces with\n // replacement character, treating multiple consecutive spaces as a single\n // space.\n\n\n slug = slug.trim().replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase();\n }\n\n return slug;\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap);\n };\n\n return replace;\n});","const conversions = require('./conversions');\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\n\nfunction buildGraph() {\n const graph = {}; // https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\n const models = Object.keys(conversions);\n\n for (let len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n\n return graph;\n} // https://en.wikipedia.org/wiki/Breadth-first_search\n\n\nfunction deriveBFS(fromModel) {\n const graph = buildGraph();\n const queue = [fromModel]; // Unshift -> queue -> pop\n\n graph[fromModel].distance = 0;\n\n while (queue.length) {\n const current = queue.pop();\n const adjacents = Object.keys(conversions[current]);\n\n for (let len = adjacents.length, i = 0; i < len; i++) {\n const adjacent = adjacents[i];\n const node = graph[adjacent];\n\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n\n return graph;\n}\n\nfunction link(from, to) {\n return function (args) {\n return to(from(args));\n };\n}\n\nfunction wrapConversion(toModel, graph) {\n const path = [graph[toModel].parent, toModel];\n let fn = conversions[graph[toModel].parent][toModel];\n let cur = graph[toModel].parent;\n\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n\n fn.conversion = path;\n return fn;\n}\n\nmodule.exports = function (fromModel) {\n const graph = deriveBFS(fromModel);\n const conversion = {};\n const models = Object.keys(graph);\n\n for (let len = models.length, i = 0; i < len; i++) {\n const toModel = models[i];\n const node = graph[toModel];\n\n if (node.parent === null) {\n // No possible conversion, or this node is the source model.\n continue;\n }\n\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n\n return conversion;\n};","'use strict';\n\nconst ansiStyles = require('ansi-styles');\n\nconst {\n stdout: stdoutColor,\n stderr: stderrColor\n} = require('supports-color');\n\nconst {\n stringReplaceAll,\n stringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {\n isArray\n} = Array; // `supportsColor.level` → `ansiStyles.color[name]` mapping\n\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n throw new Error('The `level` option should be an integer from 0 to 3');\n } // Detect level if not set manually\n\n\n const colorLevel = stdoutColor ? stdoutColor.level : 0;\n object.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n constructor(options) {\n // eslint-disable-next-line no-constructor-return\n return chalkFactory(options);\n }\n\n}\n\nconst chalkFactory = options => {\n const chalk = {};\n applyOptions(chalk, options);\n\n chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n Object.setPrototypeOf(chalk, Chalk.prototype);\n Object.setPrototypeOf(chalk.template, chalk);\n\n chalk.template.constructor = () => {\n throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n };\n\n chalk.template.Instance = ChalkClass;\n return chalk.template;\n};\n\nfunction Chalk(options) {\n return chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n styles[styleName] = {\n get() {\n const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n Object.defineProperty(this, styleName, {\n value: builder\n });\n return builder;\n }\n\n };\n}\n\nstyles.visible = {\n get() {\n const builder = createBuilder(this, this._styler, true);\n Object.defineProperty(this, 'visible', {\n value: builder\n });\n return builder;\n }\n\n};\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n styles[model] = {\n get() {\n const {\n level\n } = this;\n return function (...arguments_) {\n const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n\n };\n}\n\nfor (const model of usedModels) {\n const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n styles[bgModel] = {\n get() {\n const {\n level\n } = this;\n return function (...arguments_) {\n const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n\n };\n}\n\nconst proto = Object.defineProperties(() => {}, { ...styles,\n level: {\n enumerable: true,\n\n get() {\n return this._generator.level;\n },\n\n set(level) {\n this._generator.level = level;\n }\n\n }\n});\n\nconst createStyler = (open, close, parent) => {\n let openAll;\n let closeAll;\n\n if (parent === undefined) {\n openAll = open;\n closeAll = close;\n } else {\n openAll = parent.openAll + open;\n closeAll = close + parent.closeAll;\n }\n\n return {\n open,\n close,\n openAll,\n closeAll,\n parent\n };\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n const builder = (...arguments_) => {\n if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n // Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n return applyStyle(builder, chalkTag(builder, ...arguments_));\n } // Single argument is hot path, implicit coercion is faster than anything\n // eslint-disable-next-line no-implicit-coercion\n\n\n return applyStyle(builder, arguments_.length === 1 ? '' + arguments_[0] : arguments_.join(' '));\n }; // We alter the prototype because we must return a function, but there is\n // no way to create a function with a different prototype\n\n\n Object.setPrototypeOf(builder, proto);\n builder._generator = self;\n builder._styler = _styler;\n builder._isEmpty = _isEmpty;\n return builder;\n};\n\nconst applyStyle = (self, string) => {\n if (self.level <= 0 || !string) {\n return self._isEmpty ? '' : string;\n }\n\n let styler = self._styler;\n\n if (styler === undefined) {\n return string;\n }\n\n const {\n openAll,\n closeAll\n } = styler;\n\n if (string.indexOf('\\u001B') !== -1) {\n while (styler !== undefined) {\n // Replace any instances already present with a re-opening code\n // otherwise only the part of the string until said closing code\n // will be colored, and the rest will simply be 'plain'.\n string = stringReplaceAll(string, styler.close, styler.open);\n styler = styler.parent;\n }\n } // We can move both next actions out of loop, because remaining actions in loop won't have\n // any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n // after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\n\n const lfIndex = string.indexOf('\\n');\n\n if (lfIndex !== -1) {\n string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n }\n\n return openAll + string + closeAll;\n};\n\nlet template;\n\nconst chalkTag = (chalk, ...strings) => {\n const [firstString] = strings;\n\n if (!isArray(firstString) || !isArray(firstString.raw)) {\n // If chalk() was called by itself or with a string,\n // return the string itself as a string.\n return strings.join(' ');\n }\n\n const arguments_ = strings.slice(1);\n const parts = [firstString.raw[0]];\n\n for (let i = 1; i < firstString.length; i++) {\n parts.push(String(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'), String(firstString.raw[i]));\n }\n\n if (template === undefined) {\n template = require('./templates');\n }\n\n return template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\nconst chalk = Chalk(); // eslint-disable-line new-cap\n\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({\n level: stderrColor ? stderrColor.level : 0\n}); // eslint-disable-line new-cap\n\nchalk.stderr.supportsColor = stderrColor;\nmodule.exports = chalk;","import { useEffect } from \"react\";\r\nimport { array, object, node, string } from \"prop-types\";\r\nimport Container100 from \"../Container/Container100.jsx\";\r\nimport * as R from \"ramda\";\r\nimport \"./department-listing.scss\";\r\nimport ContentfulLink from \"../ContentfulLink/ContentfulLink.jsx\";\r\nimport \"aos/dist/aos.css\";\r\nimport AOS from \"aos\";\r\n\r\nconst propTypes = {\r\n deptList: array,\r\n deptListText: node,\r\n};\r\n\r\nconst DepartmentListing = (props) => {\r\n const { deptList, deptListText } = props;\r\n const deptArray = R.compose(\r\n R.map((i) => R.merge({ state: i[0] }, { depts: i[1] })),\r\n R.toPairs,\r\n R.groupBy(R.path([\"department\", \"state\"])),\r\n R.filter(R.hasPath([\"department\", \"state\"])),\r\n )(deptList);\r\n\r\n const sortedDeptArray = R.sortBy(R.prop(\"state\"), deptArray);\r\n\r\n useEffect(() => {\r\n AOS.init({\r\n offset: 100,\r\n duration: 1000,\r\n once: true,\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
{deptListText}
\r\n {deptList.length > 0 && (\r\n
    \r\n {sortedDeptArray.map((item, k) => (\r\n
  • \r\n

    {item.state}

    \r\n
      \r\n {/* want individual departments in alphabetical order */}\r\n {R.sortBy(R.prop(\"url\"), item.depts).map((d, k) => {\r\n return d?.department?.name ? (\r\n
    • \r\n \r\n {d?.department?.name}\r\n \r\n
    • \r\n ) : (\r\n false\r\n );\r\n })}\r\n
    \r\n
  • \r\n ))}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nDepartmentListing.propTypes = propTypes;\r\nexport default DepartmentListing;\r\n","import React from \"react\";\r\nimport { string } from \"prop-types\";\r\n\r\nconst propTypes = { id: string };\r\n\r\nexport const Svg = (props) => {\r\n const { id } = props;\r\n switch (id) {\r\n case \"timeframeid\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"locationid\":\r\n return (\r\n \r\n \r\n \r\n );\r\n case \"chev-down\":\r\n return (\r\n \r\n \r\n \r\n );\r\n default:\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nSvg.propTypes = propTypes;\r\nexport default Svg;\r\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { useState, useRef, useEffect } from \"react\";\r\nimport { any, arrayOf, bool, func, node, shape, string } from \"prop-types\";\r\nimport { useSelect } from \"downshift\";\r\nimport useClickAway from \"../../common/useClickAway.js\";\r\nimport cx from \"classnames\";\r\nimport \"./select.scss\";\r\nimport \"./select-custom.scss\";\r\nimport Select from \"./Select.jsx\";\r\n\r\nimport { object } from \"prop-types\";\r\nimport slugify from \"slugify\";\r\nimport * as R from \"ramda\";\r\n\r\nconst propTypes = {\r\n className: string,\r\n selected: object,\r\n disabled: bool,\r\n itemToId: func, // can use this instead of itemToString to identify an item\r\n label: node,\r\n // onChange shortcut for selectProps.onSelectedItemChange(item.selectedItem)\r\n // if this is used, you don't need to provide selectProps.onSelectedItemChange\r\n onChange: func,\r\n placeholder: node,\r\n activeSubdistributionClass: any,\r\n renderItem: func, // (item, isSelected) => node\r\n icon: node,\r\n selectProps: shape({\r\n items: arrayOf(any).isRequired,\r\n itemToString: func.isRequired,\r\n // anything else to go in to useSelect, like onSelectedItemChange or selectedItem\r\n // see https://github.com/downshift-js/downshift/tree/master/src/hooks/useSelect\r\n selectedItem: object,\r\n }).isRequired, // useSelect props\r\n};\r\n\r\nconst defaultProps = {\r\n disabled: false,\r\n};\r\nconst SubGroupSelect = (props) => {\r\n const {\r\n className,\r\n label,\r\n onChange,\r\n itemToId,\r\n placeholder,\r\n icon,\r\n selectProps,\r\n activeSubdistributionClass,\r\n ...otherProps\r\n } = props;\r\n\r\n const { items, itemToString, selectedItem } = selectProps;\r\n const [isOpen, setOpen] = useState(false);\r\n const groupMenu = useRef();\r\n const dropdown = useRef();\r\n useClickAway({ isOpen, setOpen, groupMenu });\r\n\r\n // const closeMenu = () => setOpen(false);\r\n // const flatItems = R.compose(R.flatten, R.map(R.prop(\"options\")))(items);\r\n // flatItems;\r\n // console.log(flatItems);\r\n // const closeMenu = () => {\r\n // setIsMainOpen(false);\r\n // };\r\n\r\n //main select\r\n const { getToggleButtonProps, getLabelProps, getMenuProps } = useSelect({\r\n items,\r\n });\r\n\r\n const renderItem =\r\n props.renderItem ||\r\n ((item) => (\r\n <>\r\n {itemToString(item)}\r\n \r\n \r\n ));\r\n\r\n const hasSelection = selectedItem !== undefined && selectedItem !== null;\r\n\r\n const buttonText = placeholder;\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n groupMenu.current.querySelectorAll(\".select__button\")[0].focus();\r\n }\r\n }, [isOpen]);\r\n\r\n return (\r\n \r\n {label && (\r\n \r\n )}\r\n\r\n
\r\n
\r\n setOpen(!isOpen),\r\n onKeyDown: (e) => {\r\n if (e.key === \"Enter\" || e.key === \"Space\") {\r\n // setOpen(!isOpen);\r\n // e.nativeEvent.preventDownshiftDefault = true;\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n e.nativeEvent.preventDownshiftDefault = true;\r\n }\r\n },\r\n })}\r\n >\r\n
\r\n {icon && {icon}}\r\n {buttonText}\r\n
\r\n \r\n
\r\n {items && (\r\n {\r\n setTimeout(() => {\r\n if (!dropdown?.current?.contains(document.activeElement)) {\r\n setOpen(false);\r\n }\r\n }, 150);\r\n },\r\n onKeyDown: (e) => {\r\n if (e.key === \"Enter\" || e.key === \"Space\") {\r\n setOpen(true);\r\n e.nativeEvent.preventDownshiftDefault = true;\r\n return false;\r\n } else if (e.key === \"Escape\") {\r\n setOpen(false);\r\n e.nativeEvent.preventDownshiftDefault = true;\r\n return false;\r\n }\r\n },\r\n })}\r\n >\r\n {items.map((section, sectionIndex) => {\r\n const { filterId, filterDefaultValue } = section;\r\n const uniqSlug = `${filterId}-${slugify(filterDefaultValue)}`;\r\n\r\n return (\r\n
  • \r\n {\r\n onChange(change, section.subdistributionClass);\r\n }}\r\n isSubGroup={true}\r\n hideClear={true}\r\n updateBtnText={false}\r\n activeSubdistributionClass={activeSubdistributionClass}\r\n selectProps={{\r\n shouldOpen:\r\n R.includes(selectedItem, section.options) && isOpen,\r\n items: section.options,\r\n itemToString: R.prop(\"value\"),\r\n selectedItem: R.includes(selectedItem, section.options)\r\n ? selectedItem\r\n : null,\r\n }}\r\n />\r\n
  • \r\n );\r\n })}\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nSubGroupSelect.propTypes = propTypes;\r\nSubGroupSelect.defaultProps = defaultProps;\r\nexport default SubGroupSelect;\r\n","import * as R from \"ramda\";\r\n\r\nexport const lookupValueById = (prop, selected, items) => {\r\n //return the first matching item\r\n return R.filter(R.propEq(prop, String(selected)), items)[0]\r\n ? R.filter(R.propEq(prop, String(selected)), items)[0]\r\n : {};\r\n};\r\n\r\nexport const eqValues = R.compose(R.isEmpty, R.symmetricDifference);\r\n","import React from \"react\";\r\nimport { string } from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\nconst propTypes = {\r\n iconName: string,\r\n className: string,\r\n title: string,\r\n};\r\n\r\nconst Icon = (props) => {\r\n const { iconName, className, title, ...otherProps } = props;\r\n\r\n return (\r\n \r\n {title && {title}}\r\n \r\n \r\n );\r\n};\r\n\r\nIcon.propTypes = propTypes;\r\nexport default Icon;\r\n","import { useState, useEffect, useRef } from \"react\";\r\nimport { useSelect, useMultipleSelection } from \"downshift\";\r\nimport { lookupValueById } from \"../../common/helpers.js\";\r\nimport useClickAway from \"../../common/useClickAway.js\";\r\n\r\nimport {\r\n array,\r\n func,\r\n string,\r\n object,\r\n shape,\r\n arrayOf,\r\n node,\r\n bool,\r\n any,\r\n} from \"prop-types\";\r\nimport cx from \"classnames\";\r\nimport * as R from \"ramda\";\r\nimport Icon from \"../Icon/Icon.jsx\";\r\nimport \"./multi-select.scss\";\r\nimport { hidden } from \"chalk\";\r\n\r\nconst propTypes = {\r\n activeItems: array,\r\n placeholder: string.isRequired,\r\n // onChange shortcut for selectProps.onSelectedItemChange(item.selectedItem)\r\n // if this is used, you don't need to provide selectProps.onSelectedItemChange\r\n selectProps: shape({\r\n items: arrayOf(any).isRequired,\r\n itemToString: func.isRequired,\r\n // anything else to go in to useSelect, like onSelectedItemChange or selectedItem\r\n // see https://github.com/downshift-js/downshift/tree/master/src/hooks/useSelect\r\n selectedItem: object,\r\n }).isRequired, // useSelect props\r\n filterId: string,\r\n onChange: func,\r\n className: string,\r\n selected: object,\r\n disabled: bool,\r\n itemToId: func, // can use this instead of itemToString to identify an item\r\n label: node,\r\n // placeholder: node,\r\n renderItem: func, // (item, isSelected) => node\r\n icon: node,\r\n handleSubmit: func,\r\n facetTitle: string,\r\n selectRange: bool,\r\n};\r\n\r\nconst MultiSelect = (props) => {\r\n const {\r\n selectProps,\r\n onChange,\r\n className,\r\n placeholder,\r\n label,\r\n icon,\r\n selectRange,\r\n filterId,\r\n ...otherProps\r\n } = props;\r\n\r\n const isInputLock = (item, selected) => {\r\n if (\r\n R.indexOf(item, selectedItems) !== 0 &&\r\n R.indexOf(item, selectedItems) !== selectedItems.length - 1 &&\r\n selectRange\r\n ) {\r\n return true;\r\n } // if less than 2 but more than 0 are selected\r\n else if (selectedItems.length <= 2 && selectedItems.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const { items, itemToString, activeItems, selectedItem } = selectProps;\r\n\r\n const itemToId = props.itemToId || itemToString;\r\n\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n const [currentFacets, setCurrentFacets] = useState([]);\r\n const facetMenu = useRef();\r\n\r\n const stateReducer = (state, actionAndChanges) => {\r\n const { changes, type } = actionAndChanges;\r\n //\r\n function keyDown(changes, state) {\r\n if (state.highlightedIndex < items.length - 1) {\r\n return {\r\n ...changes,\r\n isOpen: true,\r\n highlightedIndex: state.highlightedIndex + 1,\r\n };\r\n } else {\r\n return {\r\n ...changes,\r\n };\r\n }\r\n }\r\n\r\n function keyUp(changes, state) {\r\n if (state.highlightedIndex >= 1) {\r\n return {\r\n ...changes,\r\n isOpen: true,\r\n highlightedIndex: state.highlightedIndex - 1,\r\n };\r\n } else {\r\n return {\r\n ...changes,\r\n };\r\n }\r\n }\r\n\r\n switch (\r\n type //TODO keyup and key down can be combined if we track old and new index and get difference to tell direction\r\n ) {\r\n case useSelect.stateChangeTypes.MenuKeyDownArrowDown:\r\n return keyDown(changes, state);\r\n case useSelect.stateChangeTypes.MenuKeyDownArrowUp:\r\n return keyUp(changes, state);\r\n case useSelect.stateChangeTypes.MenuKeyDownEscape:\r\n return { ...changes, isOpen: false };\r\n case useSelect.stateChangeTypes.MenuKeyDownHome:\r\n return { ...changes, highlightedIndex: 0 };\r\n case useSelect.stateChangeTypes.MenuKeyDownEnd:\r\n return {\r\n ...changes,\r\n highlightedIndex: items.length - 1,\r\n };\r\n\r\n case useSelect.stateChangeTypes.MenuKeyDownEnter:\r\n case useSelect.stateChangeTypes.MenuKeyDownSpaceButton:\r\n case useSelect.stateChangeTypes.ItemClick:\r\n // console.log(changes, type, state);\r\n // if (\r\n // isInputLock(item, selectedItems) ||\r\n // (selectedItems.length > 4 &&\r\n // filterId === \"locationid\" &&\r\n // !selectedItems.includes(item))\r\n // ) {\r\n // return false;\r\n // }\r\n return {\r\n ...changes,\r\n isOpen: true, // keep menu open after selection.\r\n highlightedIndex: state.highlightedIndex,\r\n };\r\n case useSelect.stateChangeTypes.MenuBlur:\r\n //need a timeout because the body is focused before next el\r\n setTimeout(() => {\r\n if (facetMenu && facetMenu.current !== null) {\r\n if (!facetMenu.current.contains(document.activeElement)) {\r\n closeMenu();\r\n }\r\n }\r\n }, 100);\r\n return {\r\n ...changes,\r\n isOpen: true, // keep menu open after selection.\r\n };\r\n case useSelect.stateChangeTypes.FunctionCloseMenu:\r\n if (isOpen) {\r\n closeMenu();\r\n }\r\n return {\r\n ...changes,\r\n isOpen: false, // keep menu open after selection.\r\n highlightedIndex: -1,\r\n };\r\n default:\r\n return changes;\r\n }\r\n };\r\n\r\n const { getDropdownProps } = useMultipleSelection({\r\n initialSelectedItems: currentFacets,\r\n });\r\n\r\n const selectState = useSelect({\r\n ...selectProps,\r\n stateReducer,\r\n selectedItem: currentFacets,\r\n defaultHighlightedIndex: 0,\r\n getA11ySelectionMessage: () => {\r\n return `${currentFacets.length} item${\r\n currentFacets.length === 1 ? \"s\" : \"\"\r\n } selected`;\r\n },\r\n\r\n itemToString: R.prop(\"value\"),\r\n onIsOpenChange: (event) => {\r\n const lookup = R.map((item) => lookupValueById(\"id\", item, items))(\r\n activeItems,\r\n );\r\n setSelectedItems(lookup);\r\n setCurrentFacets(lookup);\r\n },\r\n onSelectedItemChange: ({ selectedItem }) => {\r\n if (!selectedItem) {\r\n return;\r\n }\r\n const index = selectedItems.indexOf(selectedItem);\r\n let selectedArray = [];\r\n if (index > 0) {\r\n selectedArray = [\r\n ...selectedItems.slice(0, index),\r\n ...selectedItems.slice(index + 1),\r\n ];\r\n } else if (index === 0) {\r\n selectedArray = [...selectedItems.slice(1)];\r\n } else {\r\n selectedArray = [...selectedItems, selectedItem];\r\n }\r\n\r\n setSelectedItems(selectedArray);\r\n selectProps.onSelectedItemChange &&\r\n selectProps.onSelectedItemChange(selectedArray);\r\n\r\n onChange && onChange(selectedArray);\r\n },\r\n });\r\n\r\n const {\r\n isOpen,\r\n getToggleButtonProps,\r\n getLabelProps,\r\n getMenuProps,\r\n highlightedIndex,\r\n getItemProps,\r\n closeMenu,\r\n } = selectState;\r\n const renderItem =\r\n props.renderItem ||\r\n ((item) => (\r\n <>\r\n {itemToString(item)}\r\n \r\n \r\n ));\r\n\r\n let buttonText = `${placeholder} (${selectedItems.length})`;\r\n\r\n // if (selectedItems.length > 2) {\r\n // buttonText = `${selectedItems[0].value}, ${selectedItems[1].value} and others selected`;\r\n // } //\r\n // else if (selectedItems.length > 1) {\r\n // buttonText = `${selectedItems[0].value} and ${selectedItems[1].value} selected`;\r\n // } //\r\n // else if (selectedItems.length === 1) {\r\n // buttonText = `${selectedItems[0].value} selected`;\r\n // }\r\n\r\n useClickAway({ isOpen, setOpen: () => closeMenu(), ref: facetMenu });\r\n\r\n useEffect(() => {\r\n //run everytime active items change\r\n const lookup = R.map((item) => lookupValueById(\"id\", item, items))(\r\n activeItems,\r\n );\r\n\r\n setSelectedItems(lookup);\r\n setCurrentFacets(lookup);\r\n }, [activeItems, items]);\r\n\r\n return (\r\n \r\n \r\n {/* {label ? label : `Select one or more ${facetTitle}`} */}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {icon && {icon}}\r\n {buttonText}\r\n
    \r\n \r\n
    \r\n \r\n {isOpen &&\r\n items.map((item, index) => {\r\n return (\r\n 4 &&\r\n filterId === \"locationid\" &&\r\n !selectedItems.includes(item))\r\n ? \"disabled\"\r\n : \"\"\r\n }\r\n className={cx(\"select__menu-item\", {\r\n \"select__menu-item--selected\": selectedItems.includes(item),\r\n \"select__menu-item--highlighted\":\r\n highlightedIndex === index,\r\n \"select__menu-item--disable\":\r\n selectedItems.length > 4 &&\r\n filterId === \"locationid\" &&\r\n !selectedItems.includes(item),\r\n \"select__menu-item--force-select\": isInputLock(\r\n item,\r\n selectedItems,\r\n ),\r\n })}\r\n // onKeyDown={(e) => {\r\n // console.log(e);\r\n // if (e.target.disabled === true) {\r\n // return false;\r\n // }\r\n // }}\r\n key={`${item}${index}`}\r\n {...getItemProps({\r\n item,\r\n index,\r\n })}\r\n >\r\n {renderItem(item, itemToId(selectedItem) === itemToId(item))}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n );\r\n};\r\nMultiSelect.propTypes = propTypes;\r\nexport default MultiSelect;\r\n","import { useRef, useState } from \"react\";\r\nimport cx from \"classnames\";\r\n// import useClickAway from \"../../common/useClickAway.js\";\r\nimport \"./dropdown.scss\";\r\n\r\nimport { node } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n button: node.isRequired,\r\n children: node.isRequired,\r\n};\r\n\r\nconst Dropdown = (props) => {\r\n const { button, children } = props;\r\n\r\n const [isOpen, setOpen] = useState(false);\r\n\r\n const dropdownRef = useRef();\r\n\r\n // useClickAway({ isOpen, setOpen, ref: dropdownRef });\r\n\r\n // const focusTrapRef = useFocusTrap({\r\n // active: isOpen,\r\n // });\r\n\r\n // useEffect(() => {\r\n // if (isOpen) {\r\n // dropdownRef.current.querySelector(\"#dropdown\").focus();\r\n // }\r\n // }, [isOpen]);\r\n\r\n return (\r\n \r\n setOpen((o) => !o)}\r\n aria-labelledby=\"dropdown-button-label\"\r\n aria-controls=\"dropdown\"\r\n id=\"dropdown-button\"\r\n >\r\n {button}\r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nDropdown.propTypes = propTypes;\r\nexport default Dropdown;\r\n","export default function (values, valueof) {\n let min;\n let max;\n\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n\n return [min, max];\n}","import \"core-js/modules/es.typed-array.sort.js\";\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\nexport default class Delaunator {\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n this.coords = coords; // arrays that will store the triangulation graph\n\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3); // temporary arrays for tracking the edges of the advancing convex hull\n\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n\n this._hullNext = new Uint32Array(n); // edge to next edge\n\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n // temporary arrays for sorting points\n\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n this.update();\n }\n\n update() {\n const {\n coords,\n _hullPrev: hullPrev,\n _hullNext: hullNext,\n _hullTri: hullTri,\n _hullHash: hullHash\n } = this;\n const n = coords.length >> 1; // populate an array of point indices; calculate input data bbox\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n let minDist = Infinity;\n let i0, i1, i2; // pick a seed point close to the center\n\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n minDist = Infinity; // find the point closest to the seed\n\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n let minRadius = Infinity; // find the third point which forms the smallest circumcircle with the first two\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = coords[2 * i] - coords[0] || coords[2 * i + 1] - coords[1];\n }\n\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n } // swap the order of the seed points for counter-clockwise orientation\n\n\n if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n } // sort the points by distance from the seed triangle circumcenter\n\n\n quicksort(this._ids, this._dists, 0, n - 1); // set up the seed triangle as the starting hull\n\n this._hullStart = i0;\n let hullSize = 3;\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n this.trianglesLen = 0;\n\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1]; // skip near-duplicate points\n\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y; // skip seed triangle points\n\n if (i === i0 || i === i1 || i === i2) continue; // find a visible edge on the convex hull using edge hash\n\n let start = 0;\n\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start,\n q;\n\n while (q = hullNext[e], !orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n e = q;\n\n if (e === start) {\n e = -1;\n break;\n }\n }\n\n if (e === -1) continue; // likely a near-duplicate point; skip it\n // add the first triangle from the point\n\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]); // recursively flip triangles from the point until they satisfy the Delaunay condition\n\n\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n\n hullSize++; // walk forward through the hull, adding more triangles and flipping recursively\n\n let n = hullNext[e];\n\n while (q = hullNext[n], orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1])) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n\n hullSize--;\n n = q;\n } // walk backward from the other side, adding more triangles and flipping\n\n\n if (e === start) {\n while (q = hullPrev[e], orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n\n this._legalize(t + 2);\n\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n\n hullSize--;\n e = q;\n }\n } // update the hull indices\n\n\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n; // save the two new edges in the hash table\n\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n } // trim typed triangle mesh arrays\n\n\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {\n _triangles: triangles,\n _halfedges: halfedges,\n coords\n } = this;\n let i = 0;\n let ar = 0; // recursion eliminated with a fixed-size stack\n\n while (true) {\n const b = halfedges[a];\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) {\n // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n const illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n const hbl = halfedges[bl]; // edge swapped on the other side of the hull (rare); fix the halfedge reference\n\n if (hbl === -1) {\n let e = this._hullStart;\n\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n\n this._link(a, hbl);\n\n this._link(b, halfedges[ar]);\n\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3; // don't worry about hitting the cap: it can only happen on extremely degenerate input\n\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n } // add a new triangle given vertex indices and adjacent half-edge ids\n\n\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n\n this._link(t + 1, b);\n\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n return t;\n }\n\n} // monotonically increases with real angle, but doesn't need expensive trigonometry\n\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n} // return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\n\n\nfunction orientIfSure(px, py, rx, ry, qx, qy) {\n const l = (ry - py) * (qx - px);\n const r = (rx - px) * (qy - py);\n return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n} // a more robust orientation test that's stable in a given triangle (to fix robustness issues)\n\n\nfunction orient(rx, ry, qx, qy, px, py) {\n const sign = orientIfSure(px, py, rx, ry, qx, qy) || orientIfSure(rx, ry, qx, qy, px, py) || orientIfSure(qx, qy, px, py, rx, ry);\n return sign < 0;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n return {\n x,\n y\n };\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n\n ids[j + 1] = temp;\n }\n } else {\n const median = left + right >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n const temp = ids[i];\n const tempDist = dists[temp];\n\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n\n do j--; while (dists[ids[j]] > tempDist);\n\n if (j < i) break;\n swap(ids, i, j);\n }\n\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\n\nfunction defaultGetY(p) {\n return p[1];\n}","const epsilon = 1e-6;\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n\n this._ = \"\";\n }\n\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n\n value() {\n return this._ || null;\n }\n\n}","export default class Polygon {\n constructor() {\n this._ = [];\n }\n\n moveTo(x, y) {\n this._.push([x, y]);\n }\n\n closePath() {\n this._.push(this._[0].slice());\n }\n\n lineTo(x, y) {\n this._.push([x, y]);\n }\n\n value() {\n return this._.length ? this._ : null;\n }\n\n}","import \"core-js/modules/es.typed-array.sort.js\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n\n this._init();\n }\n\n update() {\n this.delaunay.update();\n\n this._init();\n\n return this;\n }\n\n _init() {\n const {\n delaunay: {\n points,\n hull,\n triangles\n },\n vectors\n } = this; // Compute circumcenters.\n\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (!ab) {\n // degenerate case (collinear diagram)\n x = (x1 + x3) / 2 - 1e8 * ey;\n y = (y1 + y3) / 2 + 1e8 * ex;\n } else if (Math.abs(ab) < 1e-8) {\n // almost equal points (degenerate triangle)\n x = (x1 + x3) / 2;\n y = (y1 + y3) / 2;\n } else {\n const d = 1 / ab;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n } // Compute exterior cell rays.\n\n\n let h = hull[hull.length - 1];\n let p0,\n p1 = h * 4;\n let x0,\n x1 = points[2 * h];\n let y0,\n y1 = points[2 * h + 1];\n vectors.fill(0);\n\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n\n render(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n delaunay: {\n halfedges,\n inedges,\n hull\n },\n circumcenters,\n vectors\n } = this;\n if (hull.length <= 1) return null;\n\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n\n this._renderSegment(xi, yi, xj, yj, context);\n }\n\n let h0,\n h1 = hull[hull.length - 1];\n\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n\n return buffer && buffer.value();\n }\n\n renderBounds(context) {\n const buffer = context == null ? context = new Path() : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n\n renderCell(i, context) {\n const buffer = context == null ? context = new Path() : undefined;\n\n const points = this._clip(i);\n\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n\n while (points[0] === points[n - 2] && points[1] === points[n - 1] && n > 1) n -= 2;\n\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i - 2] || points[i + 1] !== points[i - 1]) context.lineTo(points[i], points[i + 1]);\n }\n\n context.closePath();\n return buffer && buffer.value();\n }\n\n *cellPolygons() {\n const {\n delaunay: {\n points\n }\n } = this;\n\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n\n cellPolygon(i) {\n const polygon = new Polygon();\n this.renderCell(i, polygon);\n return polygon.value();\n }\n\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n\n const c0 = this._regioncode(x0, y0);\n\n const c1 = this._regioncode(x1, y1);\n\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n\n *neighbors(i) {\n const ci = this._clip(i);\n\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j); // find the common edge\n\n\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] == cj[aj] && ci[ai + 1] == cj[aj + 1] && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj] && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n\n _cell(i) {\n const {\n circumcenters,\n delaunay: {\n inedges,\n halfedges,\n triangles\n }\n } = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n\n const points = [];\n let e = e0;\n\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n\n return points;\n }\n\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n\n const points = this._cell(i);\n\n if (points === null) return null;\n const {\n vectors: V\n } = this;\n const v = i * 4;\n return V[v] || V[v + 1] ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) : this._clipFinite(i, points);\n }\n\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0,\n y0,\n x1 = points[n - 2],\n y1 = points[n - 1];\n\n let c0,\n c1 = this._regioncode(x1, y1);\n\n let e0, e1;\n\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);else P = [sx0, sy0];\n }\n\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);else P = [sx1, sy1];\n }\n }\n\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n\n return P;\n }\n\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n while (true) {\n if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x,\n y,\n c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points),\n p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n\n return P;\n }\n\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n\n switch (e0) {\n case 0b0101:\n e0 = 0b0100;\n continue;\n // top-left\n\n case 0b0100:\n e0 = 0b0110, x = this.xmax, y = this.ymin;\n break;\n // top\n\n case 0b0110:\n e0 = 0b0010;\n continue;\n // top-right\n\n case 0b0010:\n e0 = 0b1010, x = this.xmax, y = this.ymax;\n break;\n // right\n\n case 0b1010:\n e0 = 0b1000;\n continue;\n // bottom-right\n\n case 0b1000:\n e0 = 0b1001, x = this.xmin, y = this.ymax;\n break;\n // bottom\n\n case 0b1001:\n e0 = 0b0001;\n continue;\n // bottom-left\n\n case 0b0001:\n e0 = 0b0101, x = this.xmin, y = this.ymin;\n break;\n // left\n }\n\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n\n if (P.length > 4) {\n for (let i = 0; i < P.length; i += 2) {\n const j = (i + 2) % P.length,\n k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) P.splice(j, 2), i -= 2;\n }\n }\n\n return j;\n }\n\n _project(x0, y0, vx, vy) {\n let t = Infinity,\n c,\n x,\n y;\n\n if (vy < 0) {\n // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) {\n // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n\n if (vx > 0) {\n // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) {\n // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n\n return [x, y];\n }\n\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001 : x === this.xmax ? 0b0010 : 0b0000) | (y === this.ymin ? 0b0100 : y === this.ymax ? 0b1000 : 0b0000);\n }\n\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001 : x > this.xmax ? 0b0010 : 0b0000) | (y < this.ymin ? 0b0100 : y > this.ymax ? 0b1000 : 0b0000);\n }\n\n}","import \"core-js/modules/es.typed-array.sort.js\";\nimport Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\nconst tau = 2 * Math.PI,\n pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n} // A triangulation is collinear if all its triangles have a non-null area\n\n\nfunction collinear(d) {\n const {\n triangles,\n coords\n } = d;\n\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points ? flatArray(points, fx, fy, that) : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n\n this._init();\n }\n\n update() {\n this._delaunator.update();\n\n this._init();\n\n return this;\n }\n\n _init() {\n const d = this._delaunator,\n points = this.points; // check for collinear\n\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({\n length: points.length / 2\n }, (_, i) => i).sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n\n const e = this.collinear[0],\n f = this.collinear[this.collinear.length - 1],\n bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n\n const hullIndex = this._hullIndex.fill(-1); // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n\n\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n } // degenerate case: 1 or 2 (distinct) points\n\n\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n inedges[hull[0]] = 1;\n if (hull.length === 2) inedges[hull[1]] = 0;\n }\n }\n\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n\n *neighbors(i) {\n const {\n inedges,\n hull,\n _hullIndex,\n halfedges,\n triangles,\n collinear\n } = this; // degenerate case with several collinear points\n\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n\n let e = e0,\n p0 = -1;\n\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n\n e = halfedges[e];\n\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n\n return c;\n }\n\n _step(i, x, y) {\n const {\n inedges,\n hull,\n _hullIndex,\n halfedges,\n triangles,\n points\n } = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n\n e = halfedges[e];\n\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n\n break;\n }\n } while (e !== e0);\n\n return c;\n }\n\n render(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points,\n halfedges,\n triangles\n } = this;\n\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n\n this.renderHull(context);\n return buffer && buffer.value();\n }\n\n renderPoints(context, r = 2) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points\n } = this;\n\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i],\n y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n\n return buffer && buffer.value();\n }\n\n renderHull(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n hull,\n points\n } = this;\n const h = hull[0] * 2,\n n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n\n context.closePath();\n return buffer && buffer.value();\n }\n\n hullPolygon() {\n const polygon = new Polygon();\n this.renderHull(polygon);\n return polygon.value();\n }\n\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points,\n triangles\n } = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n\n *trianglePolygons() {\n const {\n triangles\n } = this;\n\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n\n trianglePolygon(i) {\n const polygon = new Polygon();\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}","var noop = {\n value: () => {}\n};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {\n type: t,\n name: name\n };\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function (typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length; // If no callback was specified, return the callback of the given type and name.\n\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n\n return;\n } // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n\n\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function () {\n var copy = {},\n _ = this._;\n\n for (var t in _) copy[t] = _[t].slice();\n\n return new Dispatch(copy);\n },\n call: function (type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function (type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n\n if (callback != null) type.push({\n name: name,\n value: callback\n });\n return type;\n}\n\nexport default dispatch;","var frame = 0,\n // is an animation frame pending?\ntimeout = 0,\n // is a timeout pending?\ninterval = 0,\n // are any timers active?\npokeDelay = 1000,\n // how frequently we check for clock skew\ntaskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n};\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function (callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function () {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nexport function timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n\n var t = taskHead,\n e;\n\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}","import { dispatch } from \"d3-dispatch\";\nimport { timer } from \"d3-timer\";\nimport lcg from \"./lcg.js\";\nexport function x(d) {\n return d.x;\n}\nexport function y(d) {\n return d.y;\n}\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\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 = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i,\n n = nodes.length,\n node;\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n forces.forEach(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;else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\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 (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i),\n angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\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, random);\n return force;\n }\n\n initializeNodes();\n return simulation = {\n tick: tick,\n restart: function () {\n return stepper.restart(step), simulation;\n },\n stop: function () {\n return stepper.stop(), simulation;\n },\n nodes: function (_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n alpha: function (_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n alphaMin: function (_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n alphaDecay: function (_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n alphaTarget: function (_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n velocityDecay: function (_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n randomSource: function (_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n force: function (name, _) {\n return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name);\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 if (radius == null) radius = Infinity;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 on: function (name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}","export default function (x) {\n return function () {\n return x;\n };\n}","export default function (random) {\n return (random() - 0.5) * 1e-6;\n}","import { quadtree } from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function (radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i,\n n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data,\n rj = quad.r,\n r = ri + rj;\n\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n\n return;\n }\n\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n radii = new Array(n);\n\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n // proceed\n\n default:\n this._context.lineTo(x, y);\n\n break;\n }\n }\n};\nexport default function (context) {\n return new Linear(context);\n}","export function x(p) {\n return p[0];\n}\nexport function y(p) {\n return p[1];\n}","import { path } from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n x = typeof x === \"function\" ? x : x === undefined ? pointX : constant(x);\n y = typeof y === \"function\" ? y : y === undefined ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}","export default function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","import ascending from \"./ascending.js\";\nexport default function (f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n\n while (lo < hi) {\n const mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n }\n\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n\n while (lo < hi) {\n const mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;else lo = mid + 1;\n }\n\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {\n left,\n center,\n right\n };\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\nexport default function (start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step),\n r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step),\n r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n return ticks;\n}\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;else if (error >= e5) step1 *= 5;else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}","var t0 = new Date(),\n t1 = new Date();\nexport default function newInterval(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;\n }\n\n interval.floor = function (date) {\n return floori(date = new Date(+date)), date;\n };\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 = [],\n 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\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);\n\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\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n\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 : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n\n return interval;\n}","import interval from \"./interval.js\";\nvar millisecond = interval(function () {// noop\n}, function (date, step) {\n date.setTime(+date + step);\n}, function (start, end) {\n return end - start;\n}); // An optimized implementation for this simple case.\n\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;","import interval from \"./interval.js\";\nimport { durationSecond } from \"./duration.js\";\nvar second = interval(function (date) {\n date.setTime(date - date.getMilliseconds());\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});\nexport default second;\nexport var seconds = second.range;","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;","import interval from \"./interval.js\";\nimport { durationMinute, durationSecond } from \"./duration.js\";\nvar minute = interval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\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});\nexport default minute;\nexport var minutes = minute.range;","import interval from \"./interval.js\";\nimport { durationHour, durationMinute, durationSecond } from \"./duration.js\";\nvar hour = interval(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\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});\nexport default hour;\nexport var hours = hour.range;","import interval from \"./interval.js\";\nimport { durationDay, durationMinute } from \"./duration.js\";\nvar day = interval(date => date.setHours(0, 0, 0, 0), (date, step) => date.setDate(date.getDate() + step), (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay, date => date.getDate() - 1);\nexport default day;\nexport var days = day.range;","import interval from \"./interval.js\";\nimport { durationMinute, durationWeek } from \"./duration.js\";\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);\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;","import interval from \"./interval.js\";\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});\nexport default month;\nexport var months = month.range;","import interval from \"./interval.js\";\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}); // An optimized implementation for this simple case.\n\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;","import interval from \"./interval.js\";\nimport { durationMinute } from \"./duration.js\";\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});\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;","import interval from \"./interval.js\";\nimport { durationHour } from \"./duration.js\";\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});\nexport default utcHour;\nexport var utcHours = utcHour.range;","import interval from \"./interval.js\";\nimport { durationDay } from \"./duration.js\";\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});\nexport default utcDay;\nexport var utcDays = utcDay.range;","import interval from \"./interval.js\";\nimport { durationWeek } from \"./duration.js\";\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);\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;","import interval from \"./interval.js\";\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});\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;","import interval from \"./interval.js\";\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}); // An optimized implementation for this simple case.\n\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;","import { bisector, tickStep } from \"d3-array\";\nimport { durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear } from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport { sunday as week } from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport { utcSunday as utcWeek } from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n const tickIntervals = [[second, 1, durationSecond], [second, 5, 5 * durationSecond], [second, 15, 15 * durationSecond], [second, 30, 30 * durationSecond], [minute, 1, durationMinute], [minute, 5, 5 * durationMinute], [minute, 15, 15 * durationMinute], [minute, 30, 30 * durationMinute], [hour, 1, durationHour], [hour, 3, 3 * durationHour], [hour, 6, 6 * durationHour], [hour, 12, 12 * durationHour], [day, 1, durationDay], [day, 2, 2 * durationDay], [week, 1, durationWeek], [month, 1, durationMonth], [month, 3, 3 * durationMonth], [year, 1, durationYear]];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\nexport { utcTicks, utcTickInterval, timeTicks, timeTickInterval };","import { timeDay, timeSunday, timeMonday, timeThursday, timeYear, utcDay, utcSunday, utcMonday, utcThursday, utcYear } 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\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\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\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 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 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 \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\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 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 \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\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 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 \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\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 }; // These recursive directive definitions must be deferred.\n\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 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);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, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null; // If a UNIX timestamp is specified, return it.\n\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0)); // If this is utcParse, never use the local timezone.\n\n if (Z && !(\"Z\" in d)) d.Z = 0; // The am-pm flag is 0 for AM, and 1 for PM.\n\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12; // If the month was not specified, inherit from the quarter.\n\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0; // Convert day-of-week and week-of-year to day-of-year.\n\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), 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 = localDate(newDate(d.y, 0, 1)), 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(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).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 } // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n\n\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n } // Otherwise, all fields are in local time.\n\n\n return localDate(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\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.get(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.get(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.get(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.get(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.get(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 formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\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 function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function (specifier) {\n var f = newFormat(specifier += \"\", formats);\n\n f.toString = function () {\n return specifier;\n };\n\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier += \"\", false);\n\n p.toString = function () {\n return specifier;\n };\n\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n\n f.toString = function () {\n return specifier;\n };\n\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier += \"\", true);\n\n p.toString = function () {\n return specifier;\n };\n\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n},\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\npercentRe = /^%/,\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 return new Map(names.map((name, i) => [name.toLowerCase(), i]));\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 parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, 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.s = +n[0], 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) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(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) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\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 formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + 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) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(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) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\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 formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\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}","import formatLocale from \"./locale.js\";\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\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});\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}","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;","export default function (x) {\n return x === null ? NaN : +x;\n}\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}","export default function (constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n\n for (var key in definition) prototype[key] = definition[key];\n\n return prototype;\n}","import define, { extend } from \"./define.js\";\nexport function Color() {}\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\ndefine(Color, color, {\n copy: function (channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable: function () {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter: function (k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function (k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function () {\n return this;\n },\n displayable: function () {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity;\n a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n\n return new Hsl(h, s, l, o.opacity);\n}\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function (k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function (k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function () {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n displayable: function () {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n formatHsl: function () {\n var a = this.opacity;\n a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\") + (this.h || 0) + \", \" + (this.s || 0) * 100 + \"%, \" + (this.l || 0) * 100 + \"%\" + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n/* From FvD 13.37, CSS Color Module Level 3 */\n\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\nexport default function (values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","export default (x => () => x);","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}","import { rgb as colorRgb } from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, { gamma } from \"./color.js\";\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color;\n\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);","import { basis } from \"./basis.js\";\nexport default function (values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","export default function (a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function (t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n\n return c;\n };\n}\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}","import value from \"./value.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n\n for (; i < nb; ++i) c[i] = b[i];\n\n return function (t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n\n return c;\n };\n}","export default function (a, b) {\n var d = new Date();\n return a = +a, b = +b, function (t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}","import value from \"./value.js\";\nexport default function (a, b) {\n var i = {},\n c = {},\n k;\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) c[k] = i[k](t);\n\n return c;\n };\n}","import number from \"./number.js\";\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function () {\n return b;\n };\n}\n\nfunction one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\n\nexport default function (a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n // Coerce inputs to strings.\n\n a = a + \"\", b = b + \"\"; // Interpolate pairs of numbers in a & b.\n\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: number(am, bm)\n });\n }\n\n bi = reB.lastIndex;\n } // Add remains of b.\n\n\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n } // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n\n\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n });\n}","import { color } from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport { genericArray } from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, { isNumberArray } from \"./numberArray.js\";\nexport default function (a, b) {\n var t = typeof b,\n c;\n return b == null || t === \"boolean\" ? constant(b) : (t === \"number\" ? number : t === \"string\" ? (c = color(b)) ? (b = c, rgb) : string : b instanceof color ? rgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : number)(a, b);\n}","export default function (a, b) {\n return a = +a, b = +b, function (t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}","export default function number(x) {\n return +x;\n}","import { bisect } from \"d3-array\";\nimport { interpolate as interpolateValue, interpolateNumber, interpolateRound } from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\nvar unit = [0, 1];\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n} // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\n\n\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range[0],\n r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1; // Reverse descending domains.\n\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function (x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());\n}\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function (y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function (_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function (t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\nexport default function continuous() {\n return transformer()(identity, identity);\n}","export default function constants(x) {\n return function () {\n return x;\n };\n}","import { timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval } from \"d3-time\";\nimport { timeFormat } from \"d3-time-format\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport nice from \"./nice.js\";\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(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\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 function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n\n scale.domain = function (_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function (interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function (interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function () {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}","export default function nice(domain, interval) {\n domain = domain.slice();\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}","import { tickStep } from \"d3-array\";\nimport { format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound } from \"d3-format\";\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n\n return format(specifier);\n}","import exponent from \"./exponent.js\";\nexport default function (step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}","import exponent from \"./exponent.js\";\nexport default function (step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}","import exponent from \"./exponent.js\";\nexport default function (step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}","import { ticks, tickIncrement } from \"d3-array\";\nimport continuous, { copy } from \"./continuous.js\";\nimport { initRange } from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function (count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function (count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function (count) {\n if (count == null) count = 10;\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n\n if (step === prestep) {\n d[i0] = start;\n d[i1] = stop;\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function () {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n return linearish(scale);\n}","export var slice = Array.prototype.slice;","export default function (x) {\n return x;\n}","import { slice } from \"./array.js\";\nimport identity from \"./identity.js\";\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain() : tickValues,\n format = tickFormat == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n path = path.merge(path.enter().insert(\"path\", \".tick\").attr(\"class\", \"domain\").attr(\"stroke\", \"currentColor\"));\n tick = tick.merge(tickEnter);\n line = line.merge(tickEnter.append(\"line\").attr(\"stroke\", \"currentColor\").attr(x + \"2\", k * tickSizeInner));\n text = text.merge(tickEnter.append(\"text\").attr(\"fill\", \"currentColor\").attr(x, k * spacing).attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n tickExit = tickExit.transition(context).attr(\"opacity\", epsilon).attr(\"transform\", function (d) {\n return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\");\n });\n tickEnter.attr(\"opacity\", epsilon).attr(\"transform\", function (d) {\n var p = this.parentNode.__axis;\n return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset);\n });\n }\n\n tickExit.remove();\n path.attr(\"d\", orient === left || orient === right ? tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1 : tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1);\n tick.attr(\"opacity\", 1).attr(\"transform\", function (d) {\n return transform(position(d) + offset);\n });\n line.attr(x + \"2\", k * tickSizeInner);\n text.attr(x, k * spacing).text(format);\n selection.filter(entering).attr(\"fill\", \"none\").attr(\"font-size\", 10).attr(\"font-family\", \"sans-serif\").attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n selection.each(function () {\n this.__axis = position;\n });\n }\n\n axis.scale = function (_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function () {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function (_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function (_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function (_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function (_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function (_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function (_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function (_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function (_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\nexport function axisRight(scale) {\n return axis(right, scale);\n}\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\nexport function axisLeft(scale) {\n return axis(left, scale);\n}","function none() {}\n\nexport default function (selector) {\n return selector == null ? none : function () {\n return this.querySelector(selector);\n };\n}","export default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","function empty() {\n return [];\n}\n\nexport default function (selector) {\n return selector == null ? empty : function () {\n return this.querySelectorAll(selector);\n };\n}","import { Selection } from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function () {\n var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\n };\n}\n\nexport default function (select) {\n if (typeof select === \"function\") select = arrayAll(select);else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}","export default function (selector) {\n return function () {\n return this.matches(selector);\n };\n}\nexport function childMatcher(selector) {\n return function (node) {\n return node.matches(selector);\n };\n}","import { childMatcher } from \"../matcher.js\";\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function () {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function (match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}","import { childMatcher } from \"../matcher.js\";\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return this.children;\n}\n\nfunction childrenFilter(match) {\n return function () {\n return filter.call(this.children, match);\n };\n}\n\nexport default function (match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}","export default function (update) {\n return new Array(update.length);\n}","import sparse from \"./sparse.js\";\nimport { Selection } from \"./index.js\";\nexport default function () {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function (child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function (child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function (selector) {\n return this._parent.querySelector(selector);\n },\n querySelectorAll: function (selector) {\n return this._parent.querySelectorAll(selector);\n }\n};","export default function (x) {\n return function () {\n return x;\n };\n}","import { Selection } from \"./index.js\";\nimport { EnterNode } from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length; // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n } // Put any non-null nodes that don’t fit into exit.\n\n\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map(),\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue; // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n } // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n\n\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n } // Add any remaining nodes that were not bound to data to exit.\n\n\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function (value, key) {\n if (!arguments.length) return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = array(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}","import { Selection } from \"./index.js\";\nexport default function (compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","export default function () {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}","export var xhtml = \"http://www.w3.org/1999/xhtml\";\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};","import namespaces from \"./namespaces.js\";\nexport default function (name) {\n var prefix = name += \"\",\n i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {\n space: namespaces[prefix],\n local: name\n } : name; // eslint-disable-line no-prototype-builtins\n}","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function () {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function () {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function () {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function () {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function (name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n\n return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === \"function\" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value));\n}","export default function (node) {\n return node.ownerDocument && node.ownerDocument.defaultView || // node is a Node\n node.document && node // node is a Window\n || node.defaultView; // node is a Document\n}","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function () {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function () {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function (name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === \"function\" ? styleFunction : styleConstant)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}","function propertyRemove(name) {\n return function () {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function () {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];else this[name] = v;\n };\n}\n\nexport default function (name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function (name) {\n var i = this._names.indexOf(name);\n\n if (i < 0) {\n this._names.push(name);\n\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function (name) {\n var i = this._names.indexOf(name);\n\n if (i >= 0) {\n this._names.splice(i, 1);\n\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function (name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node),\n i = -1,\n n = names.length;\n\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node),\n i = -1,\n n = names.length;\n\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function () {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function () {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function () {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function (name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()),\n i = -1,\n n = names.length;\n\n while (++i < n) if (!list.contains(names[i])) return false;\n\n return true;\n }\n\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function () {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function () {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function (value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction : textConstant)(value)) : this.node().textContent;\n}","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function () {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function () {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function (value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function () {\n return this.each(raise);\n}","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function () {\n return this.each(lower);\n}","import namespace from \"./namespace.js\";\nimport { xhtml } from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function () {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml ? document.createElement(name) : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function () {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function (name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function (name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function () {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function () {\n return this.each(remove);\n}","function selection_cloneShallow() {\n var clone = this.cloneNode(false),\n parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true),\n parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function (deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}","function contextListener(listener) {\n return function (event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {\n type: t,\n name: name\n };\n });\n}\n\nfunction onRemove(typename) {\n return function () {\n var on = this.__on;\n if (!on) return;\n\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n\n if (++i) on.length = i;else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function () {\n var on = this.__on,\n o,\n listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {\n type: typename.type,\n name: typename.name,\n value: value,\n listener: listener,\n options: options\n };\n if (!on) this.__on = [o];else on.push(o);\n };\n}\n\nexport default function (typename, value, options) {\n var typenames = parseTypenames(typename + \"\"),\n i,\n n = typenames.length,\n t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n\n return this;\n}","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function () {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function () {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function (type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\nexport var root = [null];\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\nexport default selection;","import { Selection } from \"./index.js\";\nimport selector from \"../selector.js\";\nexport default function (select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}","import { Selection } from \"./index.js\";\nimport matcher from \"../matcher.js\";\nexport default function (match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}","import sparse from \"./sparse.js\";\nimport { Selection } from \"./index.js\";\nexport default function () {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}","export default function (onenter, onupdate, onexit) {\n var enter = this.enter(),\n update = this,\n exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove();else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}","import { Selection } from \"./index.js\";\nexport default function (selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}","export default function () {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}","export default function () {\n return Array.from(this);\n}","export default function () {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}","export default function () {\n let size = 0;\n\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n\n\n return size;\n}","export default function () {\n return !this.node();\n}","export default function (callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}","import creator from \"../creator.js\";\nexport default function (name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function () {\n return this.appendChild(create.apply(this, arguments));\n });\n}","export default function (value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}","export default function* () {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}","import { Selection, root } from \"./selection/index.js\";\nexport default function (selector) {\n return typeof selector === \"string\" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root);\n}","import { Timer } from \"./timer.js\";\nexport default function (callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}","import { dispatch } from \"d3-dispatch\";\nimport { timer, timeout } from \"d3-timer\";\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\nexport default function (node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index,\n // For context during callback.\n group: group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween; // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time); // If the elapsed delay is less than our first sleep, start immediately.\n\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o; // If the state is not SCHEDULED, then we previously errored on start.\n\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue; // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n\n if (o.state === STARTED) return timeout(start); // Interrupt the active transition, if any.\n\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n } // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n\n\n timeout(function () {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n }); // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n\n self.state = STARTED; // Initialize the tween, deleting null tween.\n\n tween = new Array(n = self.tween.length);\n\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n } // Dispatch the end event.\n\n\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n\n\n delete node.__transition;\n }\n}","import { STARTING, ENDING, ENDED } from \"./transition/schedule.js\";\nexport default function (node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n if (!schedules) return;\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) {\n empty = false;\n continue;\n }\n\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}","import decompose, { identity } from \"./decompose.js\";\nvar svgNode;\n/* eslint-disable no-undef */\n\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}","var degrees = 180 / Math.PI;\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nexport default function (a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}","import number from \"../number.js\";\nimport { parseCss, parseSvg } from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: number(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: number(xa, xb)\n }, {\n i: i - 2,\n x: number(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");","import { get, set } from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function () {\n var schedule = set(this, id),\n tween = schedule.tween; // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error();\n return function () {\n var schedule = set(this, id),\n tween = schedule.tween; // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n\n for (var t = {\n name: name,\n value: value\n }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function (name, value) {\n var id = this._id;\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n transition.each(function () {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n return function (node) {\n return get(node, id).value[name];\n };\n}","import { color } from \"d3-color\";\nimport { interpolateNumber, interpolateRgb, interpolateString } from \"d3-interpolate\";\nexport default function (a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}","import { interpolateTransformSvg as interpolateTransform } from \"d3-interpolate\";\nimport { namespace } from \"d3-selection\";\nimport { tweenValue } from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function () {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function () {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0,\n value1 = value(this),\n string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0,\n value1 = value(this),\n string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function (name, value) {\n var fullname = namespace(name),\n i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}","import { namespace } from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function (t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function (t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nexport default function (name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}","import { get, init } from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function () {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function () {\n init(this, id).delay = value;\n };\n}\n\nexport default function (value) {\n var id = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id, value)) : get(this.node(), id).delay;\n}","import { get, set } from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function () {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function () {\n set(this, id).duration = value;\n };\n}\n\nexport default function (value) {\n var id = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id, value)) : get(this.node(), id).duration;\n}","import { get, set } from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error();\n return function () {\n set(this, id).ease = value;\n };\n}\n\nexport default function (value) {\n var id = this._id;\n return arguments.length ? this.each(easeConstant(id, value)) : get(this.node(), id).ease;\n}","import { get, set, init } from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function (t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0,\n on1,\n sit = start(name) ? init : set;\n return function () {\n var schedule = sit(this, id),\n on = schedule.on; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n schedule.on = on1;\n };\n}\n\nexport default function (name, listener) {\n var id = this._id;\n return arguments.length < 2 ? get(this.node(), id).on.on(name) : this.each(onFunction(id, name, listener));\n}","function removeFunction(id) {\n return function () {\n var parent = this.parentNode;\n\n for (var i in this.__transition) if (+i !== id) return;\n\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function () {\n return this.on(\"end.remove\", removeFunction(this._id));\n}","import { selection } from \"d3-selection\";\nvar Selection = selection.prototype.constructor;\nexport default function () {\n return new Selection(this._groups, this._parents);\n}","import { interpolateTransformCss as interpolateTransform } from \"d3-interpolate\";\nimport { style } from \"d3-selection\";\nimport { set } from \"./schedule.js\";\nimport { tweenValue } from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00, string10, interpolate0;\n return function () {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function () {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = style(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0,\n on1,\n listener0,\n key = \"style.\" + name,\n event = \"end.\" + key,\n remove;\n return function () {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule.on = on1;\n };\n}\n\nexport default function (name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant(name, i, value), priority).on(\"end.style.\" + name, null);\n}","function styleInterpolate(name, i, priority) {\n return function (t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n\n tween._value = value;\n return tween;\n}\n\nexport default function (name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}","function textInterpolate(i) {\n return function (t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nexport default function (value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n return this.tween(key, textTween(value));\n}","import { selection } from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\nvar id = 0;\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\nexport default function transition(name) {\n return selection().transition(name);\n}\nexport function newId() {\n return ++id;\n}\nvar selection_prototype = selection.prototype;\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};","import { selector } from \"d3-selection\";\nimport { Transition } from \"./index.js\";\nimport schedule, { get } from \"./schedule.js\";\nexport default function (select) {\n var name = this._name,\n id = this._id;\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}","import { selectorAll } from \"d3-selection\";\nimport { Transition } from \"./index.js\";\nimport schedule, { get } from \"./schedule.js\";\nexport default function (select) {\n var name = this._name,\n id = this._id;\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}","import { matcher } from \"d3-selection\";\nimport { Transition } from \"./index.js\";\nexport default function (match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}","import { Transition } from \"./index.js\";\nexport default function (transition) {\n if (transition._id !== this._id) throw new Error();\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}","import { Transition, newId } from \"./index.js\";\nimport schedule, { get } from \"./schedule.js\";\nexport default function () {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}","import { tweenValue } from \"./tween.js\";\n\nfunction textConstant(value) {\n return function () {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function () {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function (value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction(tweenValue(this, \"text\", value)) : textConstant(value == null ? \"\" : value + \"\"));\n}","import { set } from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error();\n set(this, id).ease = v;\n };\n}\n\nexport default function (value) {\n if (typeof value !== \"function\") throw new Error();\n return this.each(easeVarying(this._id, value));\n}","import { set } from \"./schedule.js\";\nexport default function () {\n var on0,\n on1,\n that = this,\n id = that._id,\n size = that.size();\n return new Promise(function (resolve, reject) {\n var cancel = {\n value: reject\n },\n end = {\n value: function () {\n if (--size === 0) resolve();\n }\n };\n that.each(function () {\n var schedule = set(this, id),\n on = schedule.on; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0) {\n on1 = (on0 = on).copy();\n\n on1._.cancel.push(cancel);\n\n on1._.interrupt.push(cancel);\n\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n }); // The selection was empty, resolve end immediately\n\n if (size === 0) resolve();\n });\n}","import { Transition, newId } from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport { easeCubicInOut } from \"d3-ease\";\nimport { now } from \"d3-timer\";\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n\n return timing;\n}\n\nexport default function (name) {\n var id, timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}","export function cubicIn(t) {\n return t * t * t;\n}\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}","import { selection } from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;","import interrupt from \"../interrupt.js\";\nexport default function (name) {\n return this.each(function () {\n interrupt(this, name);\n });\n}","import { Transition } from \"./transition/index.js\";\nimport { SCHEDULED } from \"./transition/schedule.js\";\nvar root = [null];\nexport default function (node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}","import { useEffect, useRef } from \"react\";\r\nimport cx from \"classnames\";\r\nimport { axisLeft } from \"d3-axis\";\r\nimport { select } from \"d3-selection\";\r\nimport \"d3-transition\"; // will attach itself to `select`\r\n\r\nimport \"./y-axis.scss\";\r\n\r\nimport { dataTypeFormatter, DATA_TYPES } from \"../../common/format.js\";\r\n\r\nimport { bool, func, number, oneOf, shape, string } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n className: string,\r\n dataType: oneOf(DATA_TYPES),\r\n scale: func.isRequired,\r\n width: number.isRequired,\r\n height: number.isRequired,\r\n margin: shape({\r\n left: number,\r\n top: number,\r\n }),\r\n tickSize: number,\r\n tickPadding: number,\r\n transitionDuration: number,\r\n gridLines: bool,\r\n};\r\n\r\nconst defaultProps = {\r\n margin: {},\r\n transitionDuration: 250,\r\n gridLines: false,\r\n tickPadding: 10, // default for EGH\r\n tickSize: 6, // d3 default https://github.com/d3/d3-axis#axis_tickSize\r\n};\r\n\r\nfunction YAxis(props) {\r\n const {\r\n className,\r\n dataType,\r\n scale,\r\n width,\r\n margin,\r\n height,\r\n tickPadding,\r\n tickSize,\r\n transitionDuration,\r\n gridLines,\r\n ...otherProps\r\n } = props;\r\n\r\n const yAxisRef = useRef();\r\n\r\n useEffect(() => {\r\n const yAxis = axisLeft(scale)\r\n .tickSize(gridLines ? width * -1 : tickSize)\r\n .ticks(Math.round(height / 125)) // one tick every 125px\r\n .tickPadding(tickPadding)\r\n .tickFormat(dataTypeFormatter(dataType));\r\n\r\n select(yAxisRef.current)\r\n .transition()\r\n .duration(transitionDuration)\r\n .call(yAxis);\r\n\r\n const ticks = select(yAxisRef.current).selectAll(\"g.tick\");\r\n\r\n // adjust the tick text\r\n ticks.selectAll(\"text\").attr(\"dx\", \"-0.75em\"); // add padding between the text and the chart\r\n\r\n // hide the y-axis line\r\n select(yAxisRef.current).select(\"path\").style(\"display\", \"none\");\r\n }, [\r\n dataType,\r\n gridLines,\r\n height,\r\n scale,\r\n tickPadding,\r\n tickSize,\r\n transitionDuration,\r\n width,\r\n ]);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nYAxis.propTypes = propTypes;\r\nYAxis.defaultProps = defaultProps;\r\nexport default YAxis;\r\n","// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.\nimport fn from \"../../differenceInCalendarYears/index.js\";\nimport convertToFP from \"../_lib/convertToFP/index.js\";\nvar differenceInCalendarYears = convertToFP(fn, 2);\nexport default differenceInCalendarYears;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import { useEffect, useRef } from \"react\";\r\nimport * as R from \"ramda\";\r\nimport cx from \"classnames\";\r\n\r\nimport \"./x-axis.scss\";\r\n\r\nimport { axisBottom } from \"d3-axis\";\r\nimport { select } from \"d3-selection\";\r\nimport { timeYear } from \"d3-time\";\r\nimport getYear from \"date-fns/getYear\";\r\nimport differenceInCalendarYears from \"date-fns/fp/differenceInCalendarYears\";\r\n\r\nimport { func, number, shape, string } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n scale: func.isRequired, // scaleTime\r\n height: number.isRequired,\r\n margin: shape({\r\n left: number,\r\n top: number,\r\n }),\r\n className: string,\r\n tickSizeOuter: number,\r\n transitionDuration: number,\r\n};\r\n\r\nconst defaultProps = {\r\n margin: {},\r\n transitionDuration: 250,\r\n tickSizeOuter: 6, // d3 default\r\n};\r\n\r\nconst XAxisTrend = (props) => {\r\n const xAxisRef = useRef();\r\n const {\r\n scale,\r\n height,\r\n margin,\r\n className,\r\n tickSizeOuter,\r\n transitionDuration,\r\n ...otherProps\r\n } = props;\r\n\r\n useEffect(() => {\r\n const tickFormat = (date) => {\r\n const year = getYear(date);\r\n const width = R.last(scale.range());\r\n const years = differenceInCalendarYears(...scale.domain());\r\n\r\n // the space we want to 1 year label, the text is about 30px\r\n const yearWidth = 80;\r\n const canFit = width / yearWidth;\r\n const willFit = (every) => canFit > years / every;\r\n\r\n // every x years, hopefully we don't show more than 4000 years of data...\r\n const breakPoints = [1, 2, 5, 10, 15, 20, 30, 40, 50, 75, 100, 200, 400];\r\n const every = R.find(willFit, breakPoints);\r\n\r\n return year % every === 0 ? year : \"\";\r\n };\r\n\r\n const xAxis = axisBottom(scale)\r\n .tickPadding(15)\r\n .ticks(timeYear.every(1))\r\n .tickSizeOuter(tickSizeOuter)\r\n .tickFormat(tickFormat);\r\n\r\n select(xAxisRef.current)\r\n .transition()\r\n .duration(transitionDuration)\r\n .call(xAxis);\r\n\r\n // if the tick format is defined (ie, there is a label), make the tick line longer\r\n select(xAxisRef.current)\r\n .selectAll(\"g.tick line\")\r\n // dumb, we need to disable the transition for the tick lines or else the\r\n // user can see it grow/shrink because this component is rerendered when the\r\n // parent change, eg, when the year hover line moves\r\n .transition()\r\n .duration(0)\r\n .attr(\"y2\", (year) => xAxis.tickSizeInner() * (tickFormat(year) ? 2 : 1));\r\n }, [scale, tickSizeOuter, transitionDuration]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nXAxisTrend.propTypes = propTypes;\r\nXAxisTrend.defaultProps = defaultProps;\r\nexport default XAxisTrend;\r\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year;\n}","import * as R from \"ramda\";\r\nimport { useCallback, useMemo, useRef, useState } from \"react\";\r\n\r\nimport { extent } from \"d3-array\";\r\nimport { Delaunay } from \"d3-delaunay\";\r\nimport { forceSimulation, forceCollide, forceY } from \"d3-force\";\r\nimport { line } from \"d3-shape\";\r\nimport { scaleLinear, scaleOrdinal, scaleTime } from \"d3-scale\";\r\nimport parseISO from \"date-fns/fp/parseISO\";\r\nimport { COLORS } from \"../../common/chart.js\";\r\n\r\nimport Popup from \"../Popup/Popup.jsx\";\r\nimport YAxis from \"../Chart/YAxis.jsx\";\r\nimport XAxisTrend from \"../Chart/XAxisTrend.jsx\";\r\n\r\nimport \"./line-chart.scss\";\r\n\r\nimport { NUMBER } from \"../../common/format.js\";\r\n\r\nimport { arrayOf, number, shape, string } from \"prop-types\";\r\n\r\nconst LABEL_WIDTH = 150;\r\nconst LABEL_HEIGHT = 14;\r\n\r\nconst propTypes = {\r\n width: number.isRequired,\r\n height: number,\r\n lines: arrayOf(\r\n shape({\r\n id: string.isRequired,\r\n displayName: string.isRequired,\r\n color: string, // optional, will fallback to using COLORS\r\n dataPoints: arrayOf(\r\n shape({\r\n timeFrame: string.isRequired,\r\n value: number.isRequired,\r\n })\r\n ).isRequired,\r\n })\r\n ),\r\n};\r\n\r\nconst defaultProps = {\r\n height: 400,\r\n width: 600,\r\n lines: [],\r\n};\r\n\r\nconst SHOW_VORONOI_OVERLAY = false;\r\n\r\nconst LineChart = (props) => {\r\n const svgWidth = props.width;\r\n const svgHeight = props.height;\r\n const { lines } = props;\r\n\r\n const svgRef = useRef();\r\n\r\n const [popupInfo, setPopupInfo] = useState();\r\n const [voronoiOverlay, setVoronoiOverlay] = useState();\r\n\r\n // space for axis, etc\r\n const margin = { top: 10, right: 10, bottom: 40, left: 60 };\r\n\r\n const hasLabels = lines.filter((line) => line.displayName).length > 0;\r\n\r\n // const shouldShowLabels = window.innerWidth > 1300 && hasLabels;\r\n const shouldShowLabels = hasLabels;\r\n\r\n const subtractLabelValue = shouldShowLabels ? LABEL_WIDTH : 10;\r\n\r\n const width = svgWidth - margin.left - margin.right - subtractLabelValue;\r\n const height = svgHeight - margin.top - margin.bottom;\r\n\r\n const xScale = useMemo(() => {\r\n // eg [Date, Date]\r\n const xDomain = R.compose(\r\n R.map(parseISO),\r\n extent,\r\n R.pluck(\"timeFrame\"),\r\n R.unnest,\r\n R.pluck(\"dataPoints\")\r\n )(lines);\r\n\r\n return scaleTime().range([0, width]).domain(xDomain);\r\n }, [lines, width]);\r\n\r\n const yScale = useMemo(() => {\r\n const yDomain = R.compose(extent, R.pluck(\"value\"), R.unnest, R.pluck(\"dataPoints\"))(lines);\r\n return scaleLinear().range([height, 0]).domain([0, yDomain[1]]).nice();\r\n }, [height, lines]);\r\n const lineGenerator = line()\r\n // .curve(curveBumpX)\r\n .x((d) => xScale(parseISO(d.timeFrame)))\r\n .y((d) => yScale(d.value));\r\n\r\n const colorScale = useMemo(\r\n () => scaleOrdinal().domain(R.pluck(\"id\", lines)).range(COLORS),\r\n [lines]\r\n );\r\n\r\n const getColor = useCallback(\r\n (line) => {\r\n return line.color || colorScale(line.id) || \"black\";\r\n },\r\n [colorScale]\r\n );\r\n\r\n const findDataAtPoint = useMemo(() => {\r\n const points = R.chain((line) => {\r\n return line.dataPoints.map((point) => {\r\n return {\r\n ...point,\r\n line,\r\n x: xScale(parseISO(point.timeFrame)),\r\n y: yScale(point.value),\r\n };\r\n });\r\n })(lines);\r\n\r\n // d3-voronoi is deprected in favor of d3-delaunay\r\n const delaunay = Delaunay.from(\r\n points,\r\n (d) => d.x,\r\n (d) => d.y\r\n );\r\n\r\n if (SHOW_VORONOI_OVERLAY) {\r\n const voronoi = delaunay.voronoi([0, 0, width, height]);\r\n setVoronoiOverlay(voronoi);\r\n }\r\n\r\n return (x, y) => {\r\n const index = delaunay.find(x, y);\r\n const point = points[index];\r\n\r\n // Pythagorean theorem\r\n // using prop because point might be undefined\r\n const distance = Math.sqrt((R.prop(\"x\", point) - x) ** 2 + (R.prop(\"y\", point) - y) ** 2);\r\n\r\n // only return the point if the mouse is close enough\r\n return distance < 120 ? point : null;\r\n };\r\n }, [lines, height, yScale, width, xScale]);\r\n\r\n // TODO throttle\r\n const handleMouseMove = (event) => {\r\n // https://stackoverflow.com/a/42111623/5321793\r\n const rect = event.target.getBoundingClientRect();\r\n const x = event.clientX - rect.left;\r\n const y = event.clientY - rect.top;\r\n\r\n const data = findDataAtPoint(x, y);\r\n\r\n if (data) {\r\n setPopupInfo({\r\n top: data.y,\r\n left: data.x,\r\n data,\r\n children: (\r\n <>\r\n
    \r\n {data.line.displayName} {data.timeFrame && `(${data.timeFrame})`}\r\n
    \r\n
    {data.value.toFixed(1)}
    \r\n \r\n ),\r\n });\r\n } else {\r\n setPopupInfo(null);\r\n }\r\n };\r\n\r\n const labelPositions = useMemo(() => {\r\n // fx used by force layout\r\n // targetY used below in forceY\r\n const positions = R.compose(\r\n R.reject((d) => R.isNil(d.targetY)),\r\n R.map((line) => {\r\n return {\r\n id: line.id,\r\n name: line.displayName, // just for debuging\r\n fx: 0, // all should have a fixed x-position\r\n targetY: R.compose(yScale, R.prop(\"value\"), R.last)(line.dataPoints),\r\n };\r\n })\r\n )(lines);\r\n\r\n // forceSimulation will add \"y\" property\r\n // https://www.placeiq.com/2017/08/pointsofinterestd3forcelayout/\r\n // https://github.com/d3/d3-force\r\n forceSimulation()\r\n .nodes(positions)\r\n .force(\"collide\", forceCollide(LABEL_HEIGHT / 2))\r\n .force(\"y\", forceY((d) => d.targetY).strength(1))\r\n .stop()\r\n .tick(300);\r\n\r\n // sometimes a label can \"jump\" over another, so assign the y positions\r\n // based on the which ever node is in the right index for the label\r\n // (see link above)\r\n const physicalOrder = R.sortBy(R.prop(\"y\"), positions);\r\n const targetOrder = R.sortBy(R.prop(\"targetY\"), positions);\r\n const orderedLabelPositions = targetOrder.map((position, i) => {\r\n return {\r\n ...position,\r\n y: physicalOrder[i].y,\r\n };\r\n });\r\n\r\n return R.indexBy(R.prop(\"id\"), orderedLabelPositions);\r\n }, [lines, yScale]);\r\n\r\n const renderLabel = useCallback(\r\n (labelPosition, line) => {\r\n if (!labelPosition) {\r\n return null;\r\n }\r\n\r\n const x = xScale(xScale.domain()[1]);\r\n\r\n return (\r\n line.displayName &&\r\n shouldShowLabels && (\r\n \r\n \r\n\r\n \r\n {line.displayName}\r\n \r\n \r\n )\r\n );\r\n },\r\n [xScale, yScale]\r\n );\r\n\r\n return (\r\n
    \r\n \r\n {/* TODO don't show the transition when the popup is unhidden */}\r\n \r\n
    \r\n \r\n \r\n\r\n {/* X-axis above y-axis for bottom line */}\r\n \r\n\r\n \r\n {popupInfo && (\r\n \r\n )}\r\n \r\n {lines.map((line) => {\r\n const labelPosition = labelPositions[line.id];\r\n\r\n const getPointId = (point) => `${line.id}-${point.timeFrame}`;\r\n\r\n // this format should match getPointId above\r\n const hoveredPoint =\r\n popupInfo && `${popupInfo.data.line.id}-${popupInfo.data.timeFrame}`;\r\n const lineIsHovered = R.path([\"data\", \"line\", \"id\"], popupInfo) === line.id;\r\n\r\n const lineIsDim = !R.isNil(popupInfo) && !lineIsHovered;\r\n\r\n return (\r\n \r\n {renderLabel(labelPosition, line)}\r\n\r\n \r\n\r\n \r\n {line.dataPoints.map((point) => {\r\n const pointId = getPointId(point);\r\n\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n {voronoiOverlay && (\r\n \r\n )}\r\n setPopupInfo(null)}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLineChart.defaultProps = defaultProps;\r\nLineChart.propTypes = propTypes;\r\nexport default LineChart;\r\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function () {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}","import constant from \"./constant.js\";\nexport default function (y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}","import { useMemo, useState } from \"react\";\r\nimport * as R from \"ramda\";\r\nimport cx from \"classnames\";\r\n\r\nimport \"./table.scss\";\r\n\r\nimport {\r\n any,\r\n arrayOf,\r\n bool,\r\n func,\r\n node,\r\n number,\r\n oneOf,\r\n shape,\r\n string,\r\n} from \"prop-types\";\r\n\r\nconst propTypes = {\r\n className: string,\r\n colgroup: node, // if needed\r\n columns: arrayOf(\r\n shape({\r\n id: any.isRequired, // something comparable, string, number\r\n header: node,\r\n render: func.isRequired,\r\n useTh: bool, // use a instead of \r\n initialSort: oneOf([\"asc\", \"desc\"]), // only one column should have this!\r\n sortValueFn: func, // passes an item from data, should always return a comparable value! (not null/undefined)\r\n }),\r\n ).isRequired,\r\n data: arrayOf(\r\n shape({\r\n // id is used as key for each row, needed for sorting data\r\n // see https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318\r\n id: any.isRequired,\r\n }),\r\n ).isRequired,\r\n perPage: number,\r\n // renderRow provides the ability to render the row with classes/click handlers,\r\n // or maybe add another expanding row, etc\r\n // passed the tds and the row data (see default below)\r\n renderRow: func,\r\n tfoot: node,\r\n};\r\n\r\nconst defaultProps = {\r\n renderRow: (columns, rowData) => {columns},\r\n};\r\n\r\nconst Table = (props) => {\r\n const { className, colgroup, columns, data, perPage, renderRow, tfoot } =\r\n props;\r\n\r\n const [sort, updateSort] = useSort(columns);\r\n const [page, setPage] = useState(1);\r\n\r\n const sortFn = useMemo(() => {\r\n return R.compose(\r\n R.prop(\"sortValueFn\"),\r\n R.find(R.propEq(\"id\", sort.columnId)),\r\n )(columns);\r\n }, [columns, sort.columnId]);\r\n\r\n const processedData = useMemo(() => {\r\n return R.compose(\r\n R.when(() => !R.isNil(perPage), R.take(perPage * page)),\r\n R.when(\r\n () => sort.columnId && R.type(sortFn) === \"Function\",\r\n (data) => {\r\n const directionFn = sort.isAscending ? R.ascend : R.descend;\r\n\r\n // javascript footgun ho!\r\n // sort will not be correct if there are undefineds or nulls\r\n // so only sort the non-nil values and stick the nils at the end\r\n return R.compose(\r\n (pair) => [...(pair.notNils || []), ...(pair.nils || [])],\r\n R.over(\r\n R.lensProp(\"notNils\"),\r\n R.compose(R.sort(directionFn(sortFn)), R.defaultTo([])),\r\n ),\r\n R.groupBy((item) => (R.isNil(sortFn(item)) ? \"nils\" : \"notNils\")),\r\n )(data);\r\n },\r\n ),\r\n R.defaultTo([]),\r\n )(data);\r\n }, [data, page, perPage, sort.columnId, sort.isAscending, sortFn]);\r\n\r\n const someRowsHidden = processedData.length !== data.length;\r\n\r\n return (\r\n
    \r\n \r\n {colgroup}\r\n \r\n \r\n {columns.map((column, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {processedData.map((rowData, i) => {\r\n const tds = columns.map((column, j) => {\r\n return column.useTh ? (\r\n \r\n ) : (\r\n \r\n );\r\n });\r\n\r\n return renderRow(tds, rowData);\r\n })}\r\n \r\n {tfoot}\r\n
    \r\n {columnIsSortable(column) ? (\r\n updateSort(column)}\r\n className={cx(\"table__column\", {\r\n \"table__column--sortable\": columnIsSortable(column),\r\n \"table__column--is-sorted-asc\":\r\n sort.columnId === column.id && sort.isAscending,\r\n \"table__column--is-sorted-desc\":\r\n sort.columnId === column.id && !sort.isAscending,\r\n })}\r\n >\r\n {column.header}\r\n \r\n ) : (\r\n
    {column.header}
    \r\n )}\r\n
    {column.render(rowData)}{column.render(rowData)}
    \r\n\r\n {perPage && someRowsHidden && (\r\n setPage((p) => p + 1)}\r\n >\r\n \r\n \r\n \r\n Show more\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nTable.propTypes = propTypes;\r\nTable.defaultProps = defaultProps;\r\nexport default Table;\r\n\r\nconst columnIsSortable = (column) =>\r\n R.type(R.prop(\"sortValueFn\", column)) === \"Function\";\r\n\r\nconst columnHasInitialSort = (column) =>\r\n R.compose(\r\n R.either(R.equals(\"asc\"), R.equals(\"desc\")),\r\n R.prop(\"initialSort\"),\r\n )(column);\r\n\r\n/**\r\n * state {columnId, isAscending}\r\n */\r\nfunction useSort(columns) {\r\n const initialSort = R.compose(\r\n R.applySpec({\r\n columnId: R.propOr(null, \"id\"),\r\n isAscending: R.propEq(\"initialSort\", \"asc\"),\r\n }),\r\n R.defaultTo({}),\r\n R.find(R.both(columnHasInitialSort, columnIsSortable)),\r\n )(columns);\r\n\r\n const [sort, setSort] = useState(initialSort);\r\n\r\n const updateSort = (column) => {\r\n if (columnIsSortable(column)) {\r\n setSort((oldSort) => ({\r\n columnId: column.id,\r\n isAscending:\r\n oldSort.columnId === column.id ? !oldSort.isAscending : true,\r\n }));\r\n }\r\n };\r\n\r\n return [sort, updateSort];\r\n}\r\n","import * as R from \"ramda\";\r\nimport { useMemo } from \"react\";\r\nimport {} from \"prop-types\";\r\n\r\nimport \"./trends-table.scss\";\r\n\r\nimport { formatPercentageNice } from \"../../common/format.js\";\r\n\r\nimport Table from \"../Table/Table.jsx\";\r\n\r\nimport { arrayOf, number, node, shape, string } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n breakdownLabel: node.isRequired,\r\n indicator: shape({\r\n id: string.isRequired,\r\n name: string.isRequired,\r\n // description: null,\r\n // dataType: null,\r\n // subdistribution: { id: null, value: null },\r\n }).isRequired,\r\n lines: arrayOf(\r\n shape({\r\n id: string.isRequired,\r\n displayName: string.isRequired,\r\n color: string, // optional, will fallback to using COLORS\r\n dataPoints: arrayOf(\r\n shape({\r\n timeFrame: string.isRequired,\r\n value: number.isRequired,\r\n }),\r\n ).isRequired,\r\n }),\r\n ).isRequired,\r\n};\r\n\r\nconst defaultProps = {\r\n lines: [],\r\n};\r\n\r\nconst getChange = (dataPoints) => {\r\n const firstValue = R.compose(R.prop(\"value\"), R.head)(dataPoints);\r\n const lastValue = R.compose(R.prop(\"value\"), R.last)(dataPoints);\r\n\r\n return (lastValue - firstValue) / firstValue;\r\n};\r\n\r\nconst TrendsTable = (props) => {\r\n const { breakdownLabel, indicator, lines } = props;\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n {\r\n id: \"breakdown\",\r\n header: breakdownLabel,\r\n useTh: true,\r\n render: (line) => {\r\n return (\r\n
    \r\n {line.color ? (\r\n
    \r\n ) : null}{\" \"}\r\n {line.displayName}\r\n \r\n );\r\n },\r\n sortValueFn: R.prop(\"displayName\"),\r\n },\r\n {\r\n id: \"change\",\r\n header: indicator?.name,\r\n render: (line) => {\r\n const change = getChange(line.dataPoints);\r\n\r\n return (\r\n
    \r\n {formatPercentageNice(change)}{\" \"}\r\n {change > 0 ? upArrow : change < 0 ? downArrow : noArrow}\r\n {/* show icon only if greater than or less than 0. if 0, no icon */}\r\n
    \r\n );\r\n },\r\n sortValueFn: (line) => getChange(line.dataPoints),\r\n },\r\n ];\r\n }, [breakdownLabel, indicator?.name]);\r\n\r\n return (\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nTrendsTable.defaultProps = defaultProps;\r\nTrendsTable.propTypes = propTypes;\r\nexport default TrendsTable;\r\n\r\nconst upArrow = (\r\n \r\n Trend positive\r\n \r\n \r\n \r\n);\r\n\r\nconst downArrow = (\r\n \r\n Trend negative\r\n \r\n \r\n \r\n);\r\n\r\nconst noArrow = (\r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\nimport cx from \"classnames\";\r\nimport { number, array, func, string } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n active: number,\r\n items: array,\r\n handleClick: func,\r\n page: string,\r\n};\r\n\r\nconst Indicators = (props) => {\r\n const { active, items, handleClick, page } = props;\r\n\r\n return items ? (\r\n \r\n {items.map((item) => {\r\n return (\r\n handleClick(item.id)}\r\n >\r\n {item.value}\r\n \r\n );\r\n })}\r\n \r\n ) : (\r\n false\r\n );\r\n};\r\n\r\nIndicators.propTypes = propTypes;\r\nexport default Indicators;\r\n","import React from \"react\";\r\nimport { array } from \"prop-types\";\r\nimport \"./footnotes.scss\";\r\n\r\nconst propTypes = {\r\n footnotes: array,\r\n};\r\n\r\nconst Footnotes = (props) => {\r\n const footnotes = props.footnotes;\r\n return (\r\n
    \r\n {footnotes.map((footnote, i) => {\r\n return (\r\n
    \r\n {footnote}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nFootnotes.propTypes = propTypes;\r\nexport default Footnotes;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as R from \"ramda\";\r\nimport { string, object, shape, array, node, number, bool } from \"prop-types\";\r\nimport SubGroupSelect from \"../Select/SubGroupSelect.jsx\";\r\nimport Select from \"../Select/Select.jsx\";\r\nimport cx from \"classnames\";\r\nimport MultiSelect from \"../MultiSelect/MultiSelect.jsx\";\r\nimport Dropdown from \"../Dropdown/Dropdown.jsx\";\r\nimport LineChart from \"../LineChart/LineChart.jsx\";\r\nimport TrendsTable from \"../LineChart/TrendsTable.jsx\";\r\nimport Indicators from \"../Indicators/Indicators.jsx\";\r\nimport { lookupValueById } from \"../../common/helpers.js\";\r\nimport { useChartData } from \"../../common/ChartData.jsx\";\r\nimport { scaleOrdinal } from \"d3-scale\";\r\nimport queryString from \"query-string\";\r\nimport useBoundingClientRect from \"../../common/useBoundingClientRect.js\";\r\nimport { COLORS } from \"../../common/chart.js\";\r\nimport useFetchData from \"../../common/useFetchData.js\";\r\nimport Container100 from \"../Container/Container100.jsx\";\r\nimport Svg from \"../Svg/Svg.jsx\";\r\nimport Section from \"../Section/Section.jsx\";\r\nimport Footnotes from \"../Footnotes/Footnotes.jsx\";\r\n\r\nimport \"../LineChart/line-chart-section.scss\";\r\nimport \"../DataExplorerTable/data-explorer-table.scss\";\r\nimport \"./chart-content.scss\";\r\n\r\nconst propTypes = {\r\n chartProps: shape({\r\n page: string,\r\n lastAnalyzed: string,\r\n lineChartTitle: node,\r\n datasetInfo: object,\r\n lines: object,\r\n defaultInitialIndicator: bool,\r\n indicatorItems: array,\r\n trendsTableTitle: array,\r\n defaultIndicator: number,\r\n locationId: string,\r\n formattedFootnotes: array,\r\n }),\r\n defaultBreakdownLabel: string,\r\n};\r\n\r\nconst ChartContent = (props) => {\r\n const {\r\n lastAnalyzed,\r\n lineChartTitle,\r\n trendTableTitle,\r\n datasetInfo,\r\n page,\r\n indicatorItems,\r\n trendsTableTitle,\r\n defaultIndicator,\r\n locationId,\r\n formattedFootnotes,\r\n } = props.chartProps;\r\n\r\n const { defaultBreakdownLabel } = props;\r\n\r\n const { chartData, setChartData, filterData, apiUrl } = useChartData();\r\n\r\n if (chartData.indicator === 0) {\r\n setChartData({ indicator: defaultIndicator });\r\n }\r\n const [lines, setLines] = useState([]);\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n const filters = R.when(\r\n (page) => R.equals(page, \"department\"),\r\n R.compose(\r\n R.values,\r\n R.filter((i) => {\r\n return i.filterId !== \"location\";\r\n }),\r\n ),\r\n )(filterData.data);\r\n\r\n const fullIndicator = R.add(\r\n R.prop(\"indicator\")(chartData),\r\n R.prop(\"subdistributionclass\")(chartData),\r\n );\r\n\r\n const queryObj = {\r\n ...chartData,\r\n indicator: fullIndicator,\r\n locationid: locationId || chartData?.locationid,\r\n };\r\n\r\n const querystring = queryString.stringify(queryObj, { arrayFormat: \"comma\" });\r\n\r\n const { data, isloading, error } = useFetchData(\r\n `${apiUrl}/line-chart/${\r\n page === \"data-explorer\"\r\n ? parseInt(chartData.subdistributionclass)\r\n ? \"locationsubdistribution\"\r\n : \"locations\"\r\n : \"subdistribution\"\r\n }/?${querystring}`,\r\n {\r\n method: \"GET\",\r\n },\r\n );\r\n\r\n // console.log(\r\n // `${apiUrl}/line-chart/${\r\n // page === \"data-explorer\"\r\n // ? parseInt(chartData.subdistributionclass)\r\n // ? \"locationsubdistribution\"\r\n // : \"locations\"\r\n // : \"subdistribution\"\r\n // }/?${querystring}`,\r\n // );\r\n\r\n //filter the filters to retrieve current values\r\n const getValues = (v, k) => {\r\n const filterOpts =\r\n k === \"subdistributionid\"\r\n ? R.compose(R.unnest, R.pluck(\"options\"))(R.pathOr([], [2], filters))\r\n : R.compose(\r\n R.unnest,\r\n R.pluck(\"options\"),\r\n R.filter(R.prop(\"filterId\")),\r\n )(filters);\r\n return R.compose(\r\n R.pluck(\"value\"),\r\n R.unnest,\r\n R.map((i) => R.filter((x) => String(x.id) === String(i))(filterOpts)),\r\n )(R.flatten([v]));\r\n };\r\n\r\n const readableState = `'${R.compose(\r\n R.join(\", \"),\r\n R.flatten,\r\n R.values,\r\n R.mapObjIndexed(getValues),\r\n R.reject(R.isNil),\r\n R.pickAll([\"locationid\", \"timeframeid\", \"subdistributionid\"]),\r\n )(chartData)}${\r\n chartData.subdistributionReadableName && page === \"department\"\r\n ? `, ${chartData.subdistributionReadableName}`\r\n : \"\"\r\n }'`;\r\n\r\n const filterItems = (items, indicator) => {\r\n return indicator === 300\r\n ? R.filter((x) => x.filterId !== \"0\" && x.filterId !== \"2\")(items)\r\n : R.filter((x) => x.filterId !== \"1\" && x.filterId !== \"3\")(items);\r\n };\r\n\r\n const [{ width: lineChartWidth }, lineChartContainerRef] =\r\n useBoundingClientRect();\r\n\r\n useEffect(() => {\r\n if (!data?.lines) {\r\n return [];\r\n }\r\n setLines(() => {\r\n if (!data?.lines) {\r\n return [];\r\n }\r\n const colorScale = scaleOrdinal()\r\n .domain(R.pluck(\"id\", data.lines))\r\n .range(COLORS);\r\n\r\n return data.lines.map((line) => ({\r\n ...line,\r\n color: colorScale(line.id),\r\n }));\r\n });\r\n }, [data, chartData]);\r\n\r\n const findSelectedItem = (item, array) => {\r\n R.find(R.propEq(\"subdistributionClass\", item), array);\r\n return R.find(R.propEq(\"subdistributionClass\", item), array) || null;\r\n };\r\n\r\n return chartData ? (\r\n \r\n

    \r\n Last updated: {lastAnalyzed}\r\n

    \r\n
    \r\n
    \r\n {filters &&\r\n filters.length > 0 &&\r\n filters.map((item) => {\r\n //we want to skip the location option on dept page\r\n if (item.filterId === \"location\" && page === \"department\")\r\n return false;\r\n\r\n if (R.type(item) === \"Array\") {\r\n //Grouped Dropdown\r\n\r\n return (\r\n \r\n {page === \"data-explorer\" ? (\r\n {\r\n const readableName = R.filter(\r\n R.propEq(\r\n \"subdistributionClass\",\r\n subdistributionclass,\r\n ),\r\n\r\n filters[2],\r\n )[0].filterDefaultValue;\r\n setChartData({\r\n subdistributionid: change?.id,\r\n subdistributionclass: subdistributionclass,\r\n subdistributionReadableName: readableName,\r\n });\r\n setSelectedItem(change);\r\n }}\r\n activeSubdistributionClass={\r\n chartData.subdistributionclass\r\n }\r\n selectProps={{\r\n items: filterItems(item, chartData.indicator),\r\n itemToString: R.prop(\"value\"),\r\n selectedItem: selectedItem,\r\n }}\r\n />\r\n ) : (\r\n {\r\n setChartData({\r\n subdistributionReadableName:\r\n change.filterDefaultValue,\r\n subdistributionclass: change.subdistributionClass,\r\n });\r\n setSelectedItem(\r\n findSelectedItem(\r\n change.subdistributionclass,\r\n filterItems(item, chartData.indicator),\r\n ),\r\n );\r\n }}\r\n activeSubdistributionClass={\r\n chartData.subdistributionclass\r\n }\r\n selectProps={{\r\n selectedItem: findSelectedItem(\r\n chartData.subdistributionclass,\r\n filterItems(item, chartData.indicator),\r\n ),\r\n items: [...filterItems(item, chartData.indicator)],\r\n itemToString: R.prop(\"filterDefaultValue\"),\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n } else {\r\n if (!item?.options?.length) return false;\r\n\r\n //location ansetd timeframe filters\r\n const items = item.options;\r\n const filterId = String(`${item.filterId}id`).toLowerCase();\r\n const facetIds = `${R.pluck(\"id\", item.options || [])}`;\r\n const isTimeframe = filterId === \"timeframeid\";\r\n return (\r\n }\r\n // key={JSON.stringify(item)}\r\n placeholder={item.filterDefaultValue}\r\n selectRange={isTimeframe}\r\n filterId={filterId}\r\n selectProps={{\r\n items: items,\r\n itemToString: R.prop(\"value\"),\r\n activeItems: chartData[filterId] || [],\r\n }}\r\n onChange={(change) => {\r\n const selectedItems = R.compose(\r\n R.concat(R.pluck(\"id\", change)),\r\n R.reject((id) => facetIds.includes(id)),\r\n )(chartData[item.filterDefaultId] || []);\r\n\r\n if (isTimeframe) {\r\n const lookup = R.map((item) =>\r\n lookupValueById(\"id\", item, items),\r\n )(selectedItems);\r\n const vals = R.map(R.prop(\"value\"))(lookup);\r\n const max = Math.max(...vals);\r\n const min = Math.min(...vals);\r\n const range = R.filter(\r\n (i) =>\r\n Number(R.prop(\"value\")(i)) >= min &&\r\n Number(R.prop(\"value\")(i)) <= max,\r\n )(items);\r\n setChartData({\r\n [filterId]: R.map(R.prop(\"id\"))(range),\r\n });\r\n } //\r\n else {\r\n setChartData({\r\n [filterId]: selectedItems,\r\n });\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n })}\r\n
    \r\n {readableState !== \"''\" && (\r\n
    \r\n

    Displaying

    \r\n

    {readableState}

    \r\n
    \r\n )}\r\n
    \r\n {lineChartTitle}\r\n

    {data?.indicator?.name}

    \r\n
    \r\n {\r\n setChartData({\r\n indicator: parseInt(change),\r\n subdistributionclass: 0, //reset subdistributionclass on indicator change\r\n subdistributionid: null, //reset subdistributionid on indicator change\r\n subdistributionReadableName: null,\r\n });\r\n setSelectedItem(null);\r\n }}\r\n />\r\n
    \r\n \r\n \r\n {isloading ? (\r\n
    Loading...
    \r\n ) : error ? (\r\n
    {error}
    \r\n ) : null}\r\n {lines ? (\r\n <>\r\n \r\n {lineChartWidth && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n {datasetInfo.content &&\r\n datasetInfo.content.map((text, i) => (\r\n
    {text}
    \r\n ))}\r\n
    \r\n
    \r\n {/* {trendTableTitle && (\r\n \r\n )} */}\r\n \r\n ) : null}\r\n \r\n
    \r\n {lines && data?.indicator && (\r\n \r\n \r\n {formattedFootnotes && }\r\n \r\n )}\r\n
    \r\n ) : (\r\n false\r\n );\r\n};\r\n\r\nChartContent.propTypes = propTypes;\r\nexport default ChartContent;\r\n","'use strict';\n\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);","'use strict';\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n\n return ret;\n};","'use strict';\n\nconst strictUriEncode = require('strict-uri-encode');\n\nconst decodeComponent = require('decode-uri-component');\n\nconst splitOnFirst = require('split-on-first');\n\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return key => (result, value) => {\n const index = result.length;\n\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [...result, [encode(key, options), '[', index, ']'].join('')];\n }\n\n return [...result, [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')];\n };\n\n case 'bracket':\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [...result, [encode(key, options), '[]'].join('')];\n }\n\n return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n };\n\n case 'comma':\n case 'separator':\n return key => (result, value) => {\n if (value === null || value === undefined || value.length === 0) {\n return result;\n }\n\n if (result.length === 0) {\n return [[encode(key, options), '=', encode(value, options)].join('')];\n }\n\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n\n default:\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [...result, encode(key, options)];\n }\n\n return [...result, [encode(key, options), '=', encode(value, options)].join('')];\n };\n }\n}\n\nfunction parserForArrayFormat(options) {\n let result;\n\n switch (options.arrayFormat) {\n case 'index':\n return (key, value, accumulator) => {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return (key, value, accumulator) => {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n case 'comma':\n case 'separator':\n return (key, value, accumulator) => {\n const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n const isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n\n default:\n return (key, value, accumulator) => {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\n\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map(key => input[key]);\n }\n\n return input;\n}\n\nfunction removeHash(input) {\n const hashStart = input.indexOf('#');\n\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n\n return input;\n}\n\nfunction getHash(url) {\n let hash = '';\n const hashStart = url.indexOf('#');\n\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n\n return hash;\n}\n\nfunction extract(input) {\n input = removeHash(input);\n const queryStart = input.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n\n return value;\n}\n\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n const formatter = parserForArrayFormat(options); // Create an object with no prototype\n\n const ret = Object.create(null);\n\n if (typeof query !== 'string') {\n return ret;\n }\n\n query = query.trim().replace(/^[?#&]/, '');\n\n if (!query) {\n return ret;\n }\n\n for (const param of query.split('&')) {\n if (param === '') {\n continue;\n }\n\n let [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '='); // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n formatter(decode(key, options), value, ret);\n }\n\n for (const key of Object.keys(ret)) {\n const value = ret[key];\n\n if (typeof value === 'object' && value !== null) {\n for (const k of Object.keys(value)) {\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n\n if (options.sort === false) {\n return ret;\n }\n\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n const value = ret[key];\n\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n if (!object) {\n return '';\n }\n\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n\n const shouldFilter = key => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n\n const formatter = encoderForArrayFormat(options);\n const objectCopy = {};\n\n for (const key of Object.keys(object)) {\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n\n const keys = Object.keys(objectCopy);\n\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n\n return keys.map(key => {\n const value = object[key];\n\n if (value === undefined) {\n return '';\n }\n\n if (value === null) {\n return encode(key, options);\n }\n\n if (Array.isArray(value)) {\n return value.reduce(formatter(key), []).join('&');\n }\n\n return encode(key, options) + '=' + encode(value, options);\n }).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n options = Object.assign({\n decode: true\n }, options);\n const [url_, hash] = splitOnFirst(url, '#');\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\n\nexports.stringifyUrl = (object, options) => {\n options = Object.assign({\n encode: true,\n strict: true\n }, options);\n const url = removeHash(object.url).split('?')[0] || '';\n const queryFromUrl = exports.extract(object.url);\n const parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n const query = Object.assign(parsedQueryFromUrl, object.query);\n let queryString = exports.stringify(query, options);\n\n if (queryString) {\n queryString = `?${queryString}`;\n }\n\n let hash = getHash(object.url);\n\n if (object.fragmentIdentifier) {\n hash = `#${encode(object.fragmentIdentifier, options)}`;\n }\n\n return `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n options = Object.assign({\n parseFragmentIdentifier: true\n }, options);\n const {\n url,\n query,\n fragmentIdentifier\n } = exports.parseUrl(input, options);\n return exports.stringifyUrl({\n url,\n query: filterObject(query, filter),\n fragmentIdentifier\n }, options);\n};\n\nexports.exclude = (input, filter, options) => {\n const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n return exports.pick(input, exclusionFilter, options);\n};","export var slice = Array.prototype.slice;\nexport default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","'use strict';\n\nmodule.exports = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n};","'use strict';\n\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\nconst ESCAPES = new Map([['n', '\\n'], ['r', '\\r'], ['t', '\\t'], ['b', '\\b'], ['f', '\\f'], ['v', '\\v'], ['0', '\\0'], ['\\\\', '\\\\'], ['e', '\\u001B'], ['a', '\\u0007']]);\n\nfunction unescape(c) {\n const u = c[0] === 'u';\n const bracket = c[1] === '{';\n\n if (u && !bracket && c.length === 5 || c[0] === 'x' && c.length === 3) {\n return String.fromCharCode(parseInt(c.slice(1), 16));\n }\n\n if (u && bracket) {\n return String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n }\n\n return ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n const results = [];\n const chunks = arguments_.trim().split(/\\s*,\\s*/g);\n let matches;\n\n for (const chunk of chunks) {\n const number = Number(chunk);\n\n if (!Number.isNaN(number)) {\n results.push(number);\n } else if (matches = chunk.match(STRING_REGEX)) {\n results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n } else {\n throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n }\n }\n\n return results;\n}\n\nfunction parseStyle(style) {\n STYLE_REGEX.lastIndex = 0;\n const results = [];\n let matches;\n\n while ((matches = STYLE_REGEX.exec(style)) !== null) {\n const name = matches[1];\n\n if (matches[2]) {\n const args = parseArguments(name, matches[2]);\n results.push([name].concat(args));\n } else {\n results.push([name]);\n }\n }\n\n return results;\n}\n\nfunction buildStyle(chalk, styles) {\n const enabled = {};\n\n for (const layer of styles) {\n for (const style of layer.styles) {\n enabled[style[0]] = layer.inverse ? null : style.slice(1);\n }\n }\n\n let current = chalk;\n\n for (const [styleName, styles] of Object.entries(enabled)) {\n if (!Array.isArray(styles)) {\n continue;\n }\n\n if (!(styleName in current)) {\n throw new Error(`Unknown Chalk style: ${styleName}`);\n }\n\n current = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n }\n\n return current;\n}\n\nmodule.exports = (chalk, temporary) => {\n const styles = [];\n const chunks = [];\n let chunk = []; // eslint-disable-next-line max-params\n\n temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n if (escapeCharacter) {\n chunk.push(unescape(escapeCharacter));\n } else if (style) {\n const string = chunk.join('');\n chunk = [];\n chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n styles.push({\n inverse,\n styles: parseStyle(style)\n });\n } else if (close) {\n if (styles.length === 0) {\n throw new Error('Found extraneous } in Chalk template literal');\n }\n\n chunks.push(buildStyle(chalk, styles)(chunk.join('')));\n chunk = [];\n styles.pop();\n } else {\n chunk.push(character);\n }\n });\n chunks.push(chunk.join(''));\n\n if (styles.length > 0) {\n const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n throw new Error(errMessage);\n }\n\n return chunks.join('');\n};","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n let index = string.indexOf(substring);\n\n if (index === -1) {\n return string;\n }\n\n const substringLength = substring.length;\n let endIndex = 0;\n let returnValue = '';\n\n do {\n returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n endIndex = index + substringLength;\n index = string.indexOf(substring, endIndex);\n } while (index !== -1);\n\n returnValue += string.substr(endIndex);\n return returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n let endIndex = 0;\n let returnValue = '';\n\n do {\n const gotCR = string[index - 1] === '\\r';\n returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n endIndex = index + 1;\n index = string.indexOf('\\n', endIndex);\n } while (index !== -1);\n\n returnValue += string.substr(endIndex);\n return returnValue;\n};\n\nmodule.exports = {\n stringReplaceAll,\n stringEncaseCRLFWithFirstIndex\n};","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n const rgb = fn(...args);\n return `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\n\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n Object.defineProperty(object, property, {\n get: () => {\n const value = get();\n Object.defineProperty(object, property, {\n value,\n enumerable: true,\n configurable: true\n });\n return value;\n },\n enumerable: true,\n configurable: true\n });\n};\n/** @type {typeof import('color-convert')} */\n\n\nlet colorConvert;\n\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n if (colorConvert === undefined) {\n colorConvert = require('color-convert');\n }\n\n const offset = isBackground ? 10 : 0;\n const styles = {};\n\n for (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\n if (sourceSpace === targetSpace) {\n styles[name] = wrap(identity, offset);\n } else if (typeof suite === 'object') {\n styles[name] = wrap(suite[targetSpace], offset);\n }\n }\n\n return styles;\n};\n\nfunction assembleStyles() {\n const codes = new Map();\n const styles = {\n modifier: {\n reset: [0, 0],\n // 21 isn't widely supported and 22 does the same thing\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29]\n },\n color: {\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n // Bright color\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39]\n },\n bgColor: {\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n // Bright color\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n }\n }; // Alias bright black as gray (and grey)\n\n styles.color.gray = styles.color.blackBright;\n styles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n styles.color.grey = styles.color.blackBright;\n styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n for (const [groupName, group] of Object.entries(styles)) {\n for (const [styleName, style] of Object.entries(group)) {\n styles[styleName] = {\n open: `\\u001B[${style[0]}m`,\n close: `\\u001B[${style[1]}m`\n };\n group[styleName] = styles[styleName];\n codes.set(style[0], style[1]);\n }\n\n Object.defineProperty(styles, groupName, {\n value: group,\n enumerable: false\n });\n }\n\n Object.defineProperty(styles, 'codes', {\n value: codes,\n enumerable: false\n });\n styles.color.close = '\\u001B[39m';\n styles.bgColor.close = '\\u001B[49m';\n setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n return styles;\n} // Make the export immutable\n\n\nObject.defineProperty(module, 'exports', {\n enumerable: true,\n get: assembleStyles\n});","export default function (d) {\n const 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 = {\n data: d\n },\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; // If the tree is empty, initialize the root as a leaf.\n\n if (!node) return tree._root = leaf, tree; // Find the existing leaf for the new point, or add it.\n\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 } // Is the new point is exactly coincident with the existing point?\n\n\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; // Otherwise, split the leaf node until the old and new point are separated.\n\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\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d,\n i,\n 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; // Compute the points and their extent.\n\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 } // If there were no (valid) points, abort.\n\n\n if (x0 > x1 || y0 > y1) return this; // Expand the tree to cover the new points.\n\n this.cover(x0, y0).cover(x1, y1); // Add the new points.\n\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\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; // 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\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n } // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | x < x0;\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n\n switch (i) {\n case 0:\n x1 = x0 + z, y1 = y0 + z;\n break;\n\n case 1:\n x0 = x1 - z, y1 = y0 + z;\n break;\n\n case 2:\n x1 = x0 + z, y0 = y1 - z;\n break;\n\n case 3:\n x0 = x1 - z, y0 = y1 - z;\n break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\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}","export function defaultX(d) {\n return d[0];\n}\nexport default function (_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}","export function defaultY(d) {\n return d[1];\n}\nexport default function (_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}","import tree_add, { addAll as tree_addAll } from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, { removeAll as tree_removeAll } from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, { defaultX } from \"./x.js\";\nimport tree_y, { defaultY } from \"./y.js\";\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 = {\n data: leaf.data\n },\n next = copy;\n\n while (leaf = leaf.next) next = next.next = {\n data: leaf.data\n };\n\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 if (!node) return copy;\n if (!node.length) return copy._root = leaf_copy(node), copy;\n nodes = [{\n source: node,\n target: copy._root = new Array(4)\n }];\n\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({\n source: child,\n 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;","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}","export default function (_) {\n return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}","import Quad from \"./quad.js\";\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 if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;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 // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue; // Bisect the current quadrant.\n\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n quads.push(new Quad(node[3], xm, ym, x2, y2), new Quad(node[2], x1, ym, xm, y2), new Quad(node[1], xm, y1, x2, ym), new Quad(node[0], x1, y1, xm, ym)); // Visit the closest quadrant first.\n\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 } // 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\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}","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; // If the tree is empty, initialize the root as a leaf.\n\n if (!node) return this; // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n\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 } // Find the point to remove.\n\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n\n if (next = node.next) delete node.next; // If there are multiple coincident points, remove just the point.\n\n if (previous) return next ? previous.next = next : delete previous.next, this; // If this is the root point, remove it.\n\n if (!parent) return this._root = next, this; // Remove this leaf.\n\n next ? parent[i] = next : delete parent[i]; // If the parent now contains exactly one leaf, collapse superfluous parents.\n\n if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) {\n if (retainer) retainer[j] = node;else this._root = node;\n }\n\n return this;\n}\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n\n return this;\n}","export default function () {\n return this._root;\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}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n q,\n node = this._root,\n child,\n x0,\n y0,\n x1,\n y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n\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,\n 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\n return this;\n}","import Quad from \"./quad.js\";\nexport default function (callback) {\n var quads = [],\n next = [],\n q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n\n while (q = quads.pop()) {\n var node = q.node;\n\n if (node.length) {\n var child,\n x0 = q.x0,\n y0 = q.y0,\n x1 = q.x1,\n y1 = q.y1,\n xm = (x0 + x1) / 2,\n 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\n next.push(q);\n }\n\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n\n return this;\n}","export const COLORS = [\r\n \"#101C27\",\r\n \"#6200EE\",\r\n \"#EE5E0A\",\r\n \"#0A6919\",\r\n \"#0B84A4\",\r\n \"#F6C85F\",\r\n \"#6F4E7C\",\r\n \"#9CD867\",\r\n \"#D45087\",\r\n \"#8DDDD0\",\r\n \"#B80C09\",\r\n \"#6B2B06\",\r\n];\r\n"],"sourceRoot":""}