@hpcc-js/common 2.73.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/index.js +294 -15311
  2. package/dist/index.js.map +7 -1
  3. package/package.json +31 -36
  4. package/src/CanvasWidget.ts +1 -1
  5. package/src/Class.ts +5 -0
  6. package/src/Database.ts +10 -6
  7. package/src/Entity.ts +5 -5
  8. package/src/EntityCard.ts +1 -1
  9. package/src/EntityPin.ts +1 -1
  10. package/src/EntityRect.ts +54 -36
  11. package/src/EntityVertex.ts +2 -2
  12. package/src/FAChar.ts +14 -7
  13. package/src/HTMLWidget.ts +1 -1
  14. package/src/Icon.ts +27 -15
  15. package/src/Image.ts +16 -7
  16. package/src/List.ts +8 -5
  17. package/src/Menu.ts +11 -6
  18. package/src/Palette.ts +6 -6
  19. package/src/ProgressBar.ts +28 -18
  20. package/src/PropertyExt.ts +7 -30
  21. package/src/ResizeSurface.ts +6 -2
  22. package/src/SVGWidget.ts +6 -8
  23. package/src/SVGZoomWidget.ts +4 -3
  24. package/src/Shape.ts +1 -1
  25. package/src/Surface.ts +32 -17
  26. package/src/Text.ts +1 -1
  27. package/src/TextBox.ts +34 -19
  28. package/src/TitleBar.ts +3 -3
  29. package/src/Transition.ts +3 -3
  30. package/src/Utility.ts +3 -3
  31. package/src/Widget.ts +11 -10
  32. package/src/WidgetArray.ts +7 -5
  33. package/src/__package__.ts +2 -2
  34. package/src/index.ts +32 -32
  35. package/types/CanvasWidget.d.ts +1 -2
  36. package/types/Class.d.ts +2 -1
  37. package/types/Database.d.ts +9 -18
  38. package/types/Entity.d.ts +5 -6
  39. package/types/EntityCard.d.ts +1 -2
  40. package/types/EntityPin.d.ts +1 -2
  41. package/types/EntityRect.d.ts +35 -20
  42. package/types/EntityVertex.d.ts +2 -3
  43. package/types/FAChar.d.ts +11 -18
  44. package/types/HTMLWidget.d.ts +1 -2
  45. package/types/IList.d.ts +0 -1
  46. package/types/IMenu.d.ts +0 -1
  47. package/types/Icon.d.ts +23 -40
  48. package/types/Image.d.ts +15 -26
  49. package/types/List.d.ts +6 -7
  50. package/types/Menu.d.ts +10 -13
  51. package/types/Palette.d.ts +0 -1
  52. package/types/Platform.d.ts +0 -1
  53. package/types/ProgressBar.d.ts +19 -10
  54. package/types/PropertyExt.d.ts +1 -13
  55. package/types/ResizeSurface.d.ts +5 -6
  56. package/types/SVGWidget.d.ts +2 -4
  57. package/types/SVGZoomWidget.d.ts +2 -3
  58. package/types/Shape.d.ts +1 -2
  59. package/types/Surface.d.ts +27 -50
  60. package/types/Text.d.ts +1 -2
  61. package/types/TextBox.d.ts +32 -57
  62. package/types/TitleBar.d.ts +2 -3
  63. package/types/Transition.d.ts +3 -4
  64. package/types/Utility.d.ts +3 -4
  65. package/types/Widget.d.ts +6 -6
  66. package/types/WidgetArray.d.ts +5 -4
  67. package/types/__package__.d.ts +2 -3
  68. package/types/index.d.ts +32 -33
  69. package/dist/index.es6.js +0 -15067
  70. package/dist/index.es6.js.map +0 -1
  71. package/dist/index.min.js +0 -2
  72. package/dist/index.min.js.map +0 -1
  73. package/font-awesome/css/font-awesome.css +0 -2337
  74. package/font-awesome/css/font-awesome.css.map +0 -7
  75. package/font-awesome/css/font-awesome.min.css +0 -4
  76. package/types/CanvasWidget.d.ts.map +0 -1
  77. package/types/Class.d.ts.map +0 -1
  78. package/types/Database.d.ts.map +0 -1
  79. package/types/Entity.d.ts.map +0 -1
  80. package/types/EntityCard.d.ts.map +0 -1
  81. package/types/EntityPin.d.ts.map +0 -1
  82. package/types/EntityRect.d.ts.map +0 -1
  83. package/types/EntityVertex.d.ts.map +0 -1
  84. package/types/FAChar.d.ts.map +0 -1
  85. package/types/HTMLWidget.d.ts.map +0 -1
  86. package/types/IList.d.ts.map +0 -1
  87. package/types/IMenu.d.ts.map +0 -1
  88. package/types/Icon.d.ts.map +0 -1
  89. package/types/Image.d.ts.map +0 -1
  90. package/types/List.d.ts.map +0 -1
  91. package/types/Menu.d.ts.map +0 -1
  92. package/types/Palette.d.ts.map +0 -1
  93. package/types/Platform.d.ts.map +0 -1
  94. package/types/ProgressBar.d.ts.map +0 -1
  95. package/types/PropertyExt.d.ts.map +0 -1
  96. package/types/ResizeSurface.d.ts.map +0 -1
  97. package/types/SVGWidget.d.ts.map +0 -1
  98. package/types/SVGZoomWidget.d.ts.map +0 -1
  99. package/types/Shape.d.ts.map +0 -1
  100. package/types/Surface.d.ts.map +0 -1
  101. package/types/Text.d.ts.map +0 -1
  102. package/types/TextBox.d.ts.map +0 -1
  103. package/types/TitleBar.d.ts.map +0 -1
  104. package/types/Transition.d.ts.map +0 -1
  105. package/types/Utility.d.ts.map +0 -1
  106. package/types/Widget.d.ts.map +0 -1
  107. package/types/WidgetArray.d.ts.map +0 -1
  108. package/types/__package__.d.ts.map +0 -1
  109. package/types/index.d.ts.map +0 -1
  110. package/types-3.4/CanvasWidget.d.ts +0 -9
  111. package/types-3.4/Class.d.ts +0 -13
  112. package/types-3.4/Database.d.ts +0 -137
  113. package/types-3.4/Entity.d.ts +0 -89
  114. package/types-3.4/EntityCard.d.ts +0 -14
  115. package/types-3.4/EntityPin.d.ts +0 -23
  116. package/types-3.4/EntityRect.d.ts +0 -46
  117. package/types-3.4/EntityVertex.d.ts +0 -31
  118. package/types-3.4/FAChar.d.ts +0 -30
  119. package/types-3.4/HTMLWidget.d.ts +0 -28
  120. package/types-3.4/IList.d.ts +0 -5
  121. package/types-3.4/IMenu.d.ts +0 -6
  122. package/types-3.4/Icon.d.ts +0 -63
  123. package/types-3.4/Image.d.ts +0 -34
  124. package/types-3.4/List.d.ts +0 -16
  125. package/types-3.4/Menu.d.ts +0 -29
  126. package/types-3.4/Palette.d.ts +0 -20
  127. package/types-3.4/Platform.d.ts +0 -6
  128. package/types-3.4/ProgressBar.d.ts +0 -22
  129. package/types-3.4/PropertyExt.d.ts +0 -115
  130. package/types-3.4/ResizeSurface.d.ts +0 -24
  131. package/types-3.4/SVGWidget.d.ts +0 -78
  132. package/types-3.4/SVGZoomWidget.d.ts +0 -74
  133. package/types-3.4/Shape.d.ts +0 -35
  134. package/types-3.4/Surface.d.ts +0 -70
  135. package/types-3.4/Text.d.ts +0 -38
  136. package/types-3.4/TextBox.d.ts +0 -77
  137. package/types-3.4/TitleBar.d.ts +0 -118
  138. package/types-3.4/Transition.d.ts +0 -12
  139. package/types-3.4/Utility.d.ts +0 -103
  140. package/types-3.4/Widget.d.ts +0 -154
  141. package/types-3.4/WidgetArray.d.ts +0 -7
  142. package/types-3.4/__package__.d.ts +0 -4
  143. package/types-3.4/index.d.ts +0 -53
@@ -1 +0,0 @@
1
- {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","name","prefix","indexOf","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","appendChild","child","insertBefore","next","bindIndex","group","enter","exit","data","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","a","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","value","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","push","join","splice","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","typename","on","__on","o","j","m","type","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","that","args","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","selection","select","subgroups","subnode","subgroup","selectAll","filter","match","size","each","x","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","Math","min","merges","group0","group1","sort","compare","compareNode","sortgroups","sortgroup","callback","nodes","attr","getAttributeNS","property","classed","text","html","insert","before","deep","typenames","parseTypenames","dispatch","nextId","Local","_","toString","source","current","point$1","ownerSVGElement","createSVGPoint","point","clientX","y","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","mouse","changedTouches","touch","touches","identifier","get","id","set","noop","test","Error","Dispatch","types","T","copy","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","emptyOn","emptyTween","schedule","timing","schedules","__transition","self","tween","state","start","tick","duration","ease","init","interrupt","active","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","max","round","h","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","m2","channels","displayable","formatHex8","formatHsl","k","pow","clamp","radians","PI","degrees","Xn","Zn","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","sqrt","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelix","Cubehelix","bl","cubehelixConvert","basis","v0","v1","v2","v3","basis$1","values","floor","basisClosed","constant$5","linear","hue","constant","gamma","nogamma","exponential","cosh","sinh","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date$1","setTime","reinterpolate$1","object","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","q","number","one","zero","interpolate$1","date","isArray","valueOf","interpolateRound","cssNode","cssRoot","cssView","svgNode","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","transform","interpolateTransformSvg","baseVal","consolidate","matrix","rho","SQRT2","exp","interpolateZoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","log","d1","b0","b1","r0","r1","coshr0","u","colorHsl","hsl$1","hslLong","colorLab","colorHcl","hcl$1","hclLong","cubehelixGamma","colorCubehelix","cubehelix$2","cubehelixLong","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","interpolateNumber","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","quadInOut","cubicInOut","children","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","undefined","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinInOut","tpmt","expInOut","circleInOut","b2","b3","b5","b6","b8","bounceOut","overshoot","backIn","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","bisector","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pair","d3Descending","number$2","d3Variance","valueof","delta","mean","sum","d3Deviation","array","variance","extent","constant$4","identity$3","sequence","step","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","power","LN10","error","tickStep","step0","abs","step1","sturges","LN2","threshold$1","value0","d3Max","d3Mean","d3Median","numbers","quantile","d3Min","d3Sum","transpose","row","Map","d3Nest","sortValues","rollup","nest","keys","sortKeys","depth","createResult","setResult","valuesByKey","result","entries","sortKey","createObject","setObject","createMap","setMap","Set","has","clear","proto","d3Values","EOL","EOF","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","forEach","column","pad","width","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","dsv","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","N","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","getHours","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","X","toUpperCase","identity$2","locale","prefixes","formatLocale$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","formatPrefix","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","newInterval","floori","offseti","field","d0","offset","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","minute","getSeconds","getMinutes","hour","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","setMonth","getMonth","getFullYear","setFullYear","utcMinute","setUTCSeconds","utcHour","setUTCMinutes","utcDay","setUTCHours","setUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","utcYear","setUTCFullYear","localDate","H","M","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","w","formatWeekdayNumberSunday","W","formatWeekNumberMonday","Y","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","charAt","newParse","week","timeMonday","timeDay","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","timeYear","timeSunday","dISO","timeThursday","dow","UTCdISO","timeFormat","timeParse","isoSpecifier","formatIso","toISOString","parseIso","Class","class","_class","classID","classMeta","classID2Meta","implements","derivedCtor","baseCtor","getOwnPropertyNames","descriptor","mixin","mixinClass","overrideMethod","methodID","newMethod","origMethod","cssTag","deepEqual","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","__meta_","__private_","__prop_","__prop_data_","__default_","isMeta","Meta","defaultValue","description","ext","origDefaultValue","optional","checkedAssign","__hpcc_debug","options","console","Boolean","some","publishedProperties","MetaProxy","proxy","method","propExtID","PropertyExt","_super","_this","_publishedProperties","calcPublishedProperties","_watchArrIdx","_watchArr","meta","includePrivate","expandProxies","protoStack","getPrototypeOf","unshift","_i","protoStack_1","resolvePublishedProxy","item","publishedProperty","obj","isMetaProxy","selfProp","widgetWalker","visitor","publishItem","widget","widgets","propertyWalker","context","serialize","retVal","__class","_a","prop","val","serialization","valid","deserialize","props","autoExpand","this_1","currVal","warn","publishedModified","publishReset","privateArr","exceptionsArr","isPrivateItem","isException","publish","override","internal","broadcast","configurable","noDeserialize","owner","disable","hidden","validate","publishWidget","WidgetType","publishProxy","monitorProperty","propID","func","_key","newVal","oldVal","idx_1","propertyID","context_1","monitor","idx","monitor2","applyTheme","theme","clsArr","paramName","param","tags","copyPropsTo","other","ignore","metaHash","hashSum","propertyHash","properties","more","eventID","stopPropagation","origFunc","d3Event","retVal2","prevClassID","reset","SelectionBase","__widget","svgGlowID","__svgGlowID","SelectionBag","click","evt","ctrlKey","items","element","isEmpty","isSelected","itemArray","SimpleSelection","widgetElement","skipBringToTop","_widgetElement","_skipBringToTop","elements","selected","_initialSelection","d3Select","mouseOver","mouseOut","domNode","wasSelected","selection2","retVal_1","safeRaise","SimpleSelectionMixin","_selection","serializeState","deserializeState","perf","mozNow","msNow","oNow","webkitNow","faCharMap","faClassMap","faKeys","fa5Class","faChar","defChar","removeHTMLFromString","str","div","innerText","nargs","nargs2","g_fontSizeContext","downloadBlob","blob","filename","navigator","href","URL","createObjectURL","body","timestamp","currentdate","d3TimeFormat","downloadString","mimeType","Blob","checksum","chk","_mixin","dest","debounce","threshold","execAsap","__hpcc_debounce_timeout","g_fontCanvas","g_fontSizeContextCache","textSize","_text","fontName","fontSize","bold","globalCanvasContext","hash","height","font","line","textMeasurement","measureText","fontBoundingBoxDescent","fontBoundingBoxAscent","g_fontRectContextCache","textRect","globalCanvasElement","canvas","fillStyle","textAlign","textBaseline","fillText","top_1","bottom","getImageData","getElementById","getContext","_tagName","_ns","tagName","selectors","referenceNode","refIdx","searchStr","pos","subjectString","scope","propParts","testScope","cache","_sources","sortBy","lVal","rVal","d3Ascending","sortCaseSensitive","oFxNcL","oFyNcL","sre","dre","ore","xN","yN","xD","yD","cLoc","numS","parseFloat","_naturalSort","parts","classParts","package","path","widgetID","memberWidgetID","versionString","_sp","major","minor","patch","tpl","_args","matches_1","tplField","url","location","paramParts","decodeURIComponent","d3Aggr","median","deviation","lastFoundFormat","Field","_children","_owner","label","Utility.checksum","mask","typeTransformer","maskTransformer","formatter","formatTransformer","cloneProp","d3Format","asDefault","fieldsArr","label_default","Grid","dataChecksum","_data","_dataChecksums","_dataChecksum","_dataVersion","fields","resetColumns","legacyColumns","legacyData","_clone","schema","fieldByLabel","ignoreCase","_dataCalcChecksum","parsedData","cell","formattedData","fieldsChecksum","fieldsArr_1","_row","col","_idx","columnData","_col","grid","hipieMappings","missingDataString","mappedColumns","hasRollup","mapping","mappedColumn","groupby","hasFunction","function","leaves","param1","param2","legacyView","LegacyView","nestView","columnIndicies","RollupView","rollupView","rollupFunc","aggregateView","aggrType","aggrColumn","aggrDeltaColumn","aggregate","colIdx_1","deltaIdx_1","_nest","_rollup","pivot","filterIdx","analyse","isBoolean","typeTest","isNumber","isString","isUSState","isDateTime","isDateTimeFormat","isDate","isDateFormat","isTime","isTimeFormat","jsonObj","colIdx","json","temp_1","d3CsvFormatRows","Utility.removeHTMLFromString","d3CsvParse","d3TsvParse","d3TsvFormatRows","fieldsOrig","_grid","rawData","_formattedDataChecksum","_formattedData","_parsedDataChecksum","_parsedData","_whichData","opts","parsed","formatted","_columnIndicies","_nestChecksum","nest_1","d3Map","_walkData","prevRow","entry","cells","dateTimeFormats","dateFormats","timeFormats","formatPicker","d3TimeParse","styleInject","css","ref","insertAt","head","getElementsByTagName","styleSheet","cssText","createTextNode","Widget","_isRootNode","_db","_dataMeta","_appData","_prevNow","_lazyRender","debouncedCallback","render","_idSeed","_pos","_size","_widgetScale","_visible","_target","_placeholderElement","_parentWidget","_element","_renderCount","g_all","__hpcc_theme","columnChecksum","importJSON","importCSV","importTSV","export","leakCheck","newNode","watchArray","destructObserver","MutationObserver","mutations","leaks","mutation","removedNodes","disconnect","pNode","observe","childList","renderCount","columnIdx","cellIdxFunc","defValue","cellFunc","cloneData","flattenData","rowIdx","newItem","rowToObj","__lparam","_overlayElement","resize","visible","display","_display","dataMeta","appData","calcSnap","snapSize","snap","gridSize","gridSize2","toWidget","parentOverlay","locateParentWidget","locateSVGNode","locateOverlayNode","locateAncestor","locateClosestAncestor","classIDArr","getAbsolutePos","ctm","getCTM","hasOverlay","syncOverlay","newPos","_prevPos","xScale","yScale","getBBox","refresh","HTMLElement","SVGElement","isDOMHidden","offsetParent","hasSize","publishedWidgets","_tag","context2","preUpdate","postUpdate","renderCount_1","renderPromise","lazyRender","animationFrameRender","_domNode","origClassed","str_obj","HTMLWidget","_drawStartPos","_boundingBox","calcFrameWidth","calcWidth","calcFrameHeight","calcHeight","hasHScroll","hasVScroll","clientWidth","clientHeight","firstElementChild","Element","reposition","overlay","observer","_mutation","attributes","bbox","CanvasWidget","resetContext","_ctx","tem","ua","ieVersion","userAgent","isIE","svgMarkerGlitch","_scrollBarWidth","WebKitMutationObserver","MozMutationObserver","listeners","MutationListener","callback2","handleEvent","addedNodes","attributeName","attributeNamespace","oldValue","config","characterData","outer","visibility","msOverflowStyle","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","_widget","_duration","_delay","_ease","d3CubicInOut","lerp","intersectLineLine","a1","a2","points","uaT","ubT","uB","ub","SVGGlowFilter","feOffset","feColorMatrix","rgb2ColorMatrix","feGaussianBlur","feBlend","d3Rgb","SVGWidget","_enableOverflow","_enableOverflowScroll","_popMarkersDebounced","_popMarkers","move","transitionDuration","enableOverflow","enableOverflowScroll","_parentRelativeDiv","_parentOverlay","svgDefs","_svgSelectionFilter","selectionGlowColor","transX","transY","getOffsetPos","containsRect","containsCircle","radius","center","distance","intersection","pointA","pointB","intersectRect","TL","TR","BR","BL","intersectRectRect","rect1","rect2","intersectCircle","deter","u1","u2","intersectCircleLine","serializeSVG","extraStyles","fontAwsesomeStyle","origSvg","cloneSVG","origNodes","compStyles","i_1","styleName","stylePriority","getPropertyPriority","defs","extraStyle","XMLSerializer","serializeToString","toBlob","rasterize","extraWidgets","sizes","reduce","prev","curr","ctx","fillRect","xPos","all","image","Image","onerror","onload","drawImage","src","then","downloadSVG","downloadPNG","_pushMarkers","_fixIEMarkers","Text","textParts","lineHeight","widths","fontFamily","anchor","_prevHash","_textElement","dblclick","bbox_1","rotation","width_1","textLine","_d","colorFill","colorStroke","clipPos","substr","FAChar","calcChar","Utility.faChar","char","text_fontFamily","Utility.faKeys","schemeGroups","sequential","singlehue","diverging","qualitative","YlGn","YlGnBu","GnBu","BuGn","PuBuGn","PuBu","BuPu","RdPu","PuRd","OrRd","YlOrRd","YlOrBr","Purples","Blues","Greens","Oranges","Reds","Greys","PuOr","BrBG","PRGn","PiYG","RdBu","RdGy","RdYlBu","Spectral","RdYlGn","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","implicit","ordinal","domain","unknown","band","bandwidth","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","constant$3","number$1","unit","deinterpolateLinear","bimap","deinterpolate","reinterpolate","polymap","bisect","continuous","piecewise","output","input","interpolateValue","deinterpolateClamp","invert","reinterpolateClamp","linearish","tickFormat","nice","x0","x1","pow10","powp","base","logp","log10","log2","reflect","quantize","invertExtent","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","tickInterval","d3SchemeCategory10","d3SchemeCategory20b","d3SchemeCategory20c","d3SchemeCategory20","interpolateCubehelixLong","warm","cool","rainbow","ramp","d3InterpolateViridis","magma","inferno","plasma","interpolator","d3Schemes","category10","category20","category20b","category20c","m_colorbrewer","_colorbrewer.default","_colorbrewer","m_d3","Viridis","Magma","d3InterpolateMagma","Inferno","d3InterpolateInferno","Plasma","d3InterpolatePlasma","d3Ordinal","brewerOrdinal","hpccOrdinal","flatuiSchemes","FlatUI_default","FlatUI_American","FlatUI_Aussie","FlatUI_British","FlatUI_Canadian","FlatUI_Chinese","FlatUI_Dutch","FlatUI_French","FlatUI_German","FlatUI_Indian","FlatUI_Russian","FlatUI_Spanish","FlatUI_Swedish","FlatUI_Turkish","flatuiOrdinal","ordinalCache","fetchOrdinalItem","palette_ordinal","d3ScaleOrdinal","newColors","_item","largestPalette","newID","cloneNotExists","switch","_colors","rainbowCache","fetchRainbowItem","steps","palette_rainbow","_steps","_custom","subPaletteSize","prevColor","scale_1","d3ScaleLinear","d3InterpolateLab","d3ScaleQuantize","d3ScaleSequential","low","high","RdWhGr","textColor","backgroundColor","d3RGB","ordinalDivID","brewerDivID","customDivID","customArr","info","palette","Shape","shape","getShapeElementTag","element2","_tooltipElement","tooltip","cornerRadius","pinPath","_shape","arrow_h","arrowHeight","arrow_w","arrowWidth","arrow_b","_origRadius","Icon","_shapeWidget","_faChar","diameter","_defs","_root","el","paddingPercent","imageUrl","shape_colorFill_exists","image_colorFill_exists","image_colorFill","shape_colorFill","Entity","_annotationLocal","d3Local","_background_widget","_icon_widget","_title_widget","_desc_widget","_annotation_widgets","getAnnotationsBBox","_element_background","_element_icon","_element_title","_element_desc","_element_anno","shape_colorStroke","descriptionFontSize","annoXPos","annotations","annotationIcons","anno","annotationDiameter","annotationPaddingPercent","annoDiam","annotationSpacing","moveAnnotations","x_offset","y_offset","EntityCard","icon_bbox","title_bbox","desc_bbox","anno_w","anno_h","anno_gap","_background_h","fixedHeight","_background_w","fixedWidth","EntityPin","is_hovering","titleOnlyShowOnHover","iconOnlyShowOnHover","descriptionOnlyShowOnHover","_anno_h","annotationOnlyShowOnHover","background_bbox","calcBackgroundBBox","icon_y","title_y","desc_y","anno_y","remove_padding","EntityRect","icon","annotations_bbox","iconWidth","titleX","titleW","EntityRectList","_enityRectLocal","Utility.SimpleSelectionMixin","entityRectData","idxColumns","idxs","idxColumn","origRow","margin","titleColumn","entityRect","borderColor","backgroundShape","backgroundColorFill","backgroundColorStroke","iconColor","iconDiameter","iconPaddingPercent","title","titleFontSize","titleColor","descriptionColor","__inputs","inputType","TextBox","paddingLeft","paddingRight","paddingTop","paddingBottom","getTextX","textBBox","fixedSize","colorFill_default","colorFill_exists","EntityVertex","_textbox_widget","_element_textbox","iconColorFill","iconColorStroke","text_bbox","_icon_x","_icon_y","iconAnchor","img","_imgElement","styleImageElement","sizing","lockAspectRatio","customWidth","customHeight","alignment","List","_listWidgets","lineEnter","newTextBox","listHeight","listWidth","yPos","Menu","_icon","_list","hideMenu","_open","toggleMenu","showMenu","preShowMenu","menuBBox","postHideMenu","ProgressBar","_running","calcCSS","halflife","perc","bar_size","bar_color","blur_opacity","blurOpacity","blur_opacity_hex","blur_color","blurColor","blur_size","blurSize","blur_fx","blurBar","_elementID","updateProgress","halfLife","finish","_style","decay","_remaining","nopropagation","stopImmediatePropagation","noevent$2","preventDefault","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","constant$2","DragEvent","subject","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","maxTouchPoints","d3Drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","Surface","_iconWidget","_containerWidget","_titleRectWidget","_textWidget","_menuWidget","content","_surfaceButtons","_clipRect","showTitle","showIcon","buttonContainer","icon_shape","surfaceButtons","buttonAnnotations","buttonClientHeight","offsetHeight","iconClientSize","textClientSize","menuClientSize","_titleRegionHeight","titleRegionHeight","yTitle","titleTextHeight","titleTextWidth","topMargin","leftMargin","menuPadding","buttonGutter","showContent","xOffset_1","yOffset_1","hits","i2","i3","nearest","_origMenuParam","menu","_origShowContent","ResizeSurface","handleWidth","handles","loc","d3Dispatch","allowResize","_dragHandlePos","_dragStartPos","_dragStartSize","_prevPosSize","_textPosSize","_iconPosSize","_dx","_dy","posSize","updateHandles","sizeHandles","sizeHandlesEnter","constant$1","ZoomEvent","Transform","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","noevent$1","defaultExtent","hasAttribute","viewBox","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","d3Zoom","touchstarting","constrain","wheelDelta","scaleExtent","zoom","wheeled","dblclicked","centroid","clean","__zooming","Gesture","taps","wheel","moved","y0","dragEnable","k1","shiftKey","started","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo","emit","Button","_enabled","mouseMove","enabled","StickyButton","ToggleButton","Spacer","vline","SelectDropDown","optionUpdate","IconBar","_buttons","_divIconBar","buttons","hiddenButtons","icons","SelectionButton","sb","SelectionBar","TitleBar","_divTitle","_divTitleIcon","titleIconFont","titleIconFontSize","_divTitleText","titleFont","_divDescriptionText","descriptionFont","titleIcon","description_exists","SVGZoomWidget","_zoomScale","_zoomTranslate","_autoSelectionMode","_toggleMarqueeSelection","mouseMode","updateIconBar","_toggleZoom","_iconBar","zoomToFit","zoomPlus","zoomMinus","_currZoom","onZoomed","getScreenBBox","targetel","tbbox","nw","ne","se","sw","zoomScale","zoomTranslate","zoomExtent","zoomTo","zoomDuration","_zoomRoot","d3ZoomIdentity","centerOnBBox","getRenderElementBBox","_renderElement","calcZoomToBBox","widthOnly","newScale","zoomToFitLimit_exists","zoomToFitLimit","zoomToBBox","zoomToScale","zoomToWidth","zoomed","_zoomG","mousedownMarqueeSelection","d3Mouse","_marqueeSelectionRoot","_marqueeSelection","startMarqueeSelection","mousemoveMarqueeSelection","updateMarqueeSelection","mouseupMarqueeSelection","endMarqueeSelection","_zoomGrab","_prevZoomable","zoomable","showToolbar","_origMouseMode","WidgetArray","BrushEvent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","xy","XY","cursors","flipX","flipY","signsX","signsY","__brush","brush","dim","handleSize","initialize","handle","redraw","emitter","Emitter","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","mode","metaKey","altKey","signX","signY","shifting","pointer","point0","ended","keyCode","point1","selection0","selection1","starting","keyModifiers","values0","values1","_d3Event","histogram","xz","tz","shift","bin","bins","thresholds","ts","arrays","merged","pairs","indexes","permutes","samples","logs","pows","quantiles","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcWeek","utcSecond","utcMillisecond","xi","xj","random"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/local.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/point.js","../../../node_modules/d3-selection/src/mouse.js","../../../node_modules/d3-selection/src/touch.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-color/src/math.js","../../../node_modules/d3-color/src/lab.js","../../../node_modules/d3-color/src/cubehelix.js","../../../node_modules/d3-interpolate/src/basis.js","../../../node_modules/d3-interpolate/src/basisClosed.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-interpolate/src/hsl.js","../../../node_modules/d3-interpolate/src/lab.js","../../../node_modules/d3-interpolate/src/hcl.js","../../../node_modules/d3-interpolate/src/cubehelix.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-ease/src/quad.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-ease/src/poly.js","../../../node_modules/d3-ease/src/sin.js","../../../node_modules/d3-ease/src/math.js","../../../node_modules/d3-ease/src/exp.js","../../../node_modules/d3-ease/src/circle.js","../../../node_modules/d3-ease/src/bounce.js","../../../node_modules/d3-ease/src/back.js","../../../node_modules/d3-ease/src/elastic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/active.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/pairs.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/variance.js","../../../node_modules/d3-array/src/deviation.js","../../../node_modules/d3-array/src/extent.js","../../../node_modules/d3-array/src/array.js","../../../node_modules/d3-array/src/constant.js","../../../node_modules/d3-array/src/identity.js","../../../node_modules/d3-array/src/range.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/threshold/sturges.js","../../../node_modules/d3-array/src/quantile.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/mean.js","../../../node_modules/d3-array/src/median.js","../../../node_modules/d3-array/src/min.js","../../../node_modules/d3-array/src/sum.js","../../../node_modules/d3-array/src/transpose.js","../../../node_modules/d3-collection/src/map.js","../../../node_modules/d3-collection/src/nest.js","../../../node_modules/d3-collection/src/set.js","../../../node_modules/d3-collection/src/values.js","../../../node_modules/d3-dsv/src/dsv.js","../../../node_modules/d3-dsv/src/csv.js","../../../node_modules/d3-dsv/src/tsv.js","../../../node_modules/d3-dsv/src/autoType.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/millisecond.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/second.js","../../../node_modules/d3-time/src/minute.js","../../../node_modules/d3-time/src/hour.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../../../node_modules/d3-time/src/utcMinute.js","../../../node_modules/d3-time/src/utcHour.js","../../../node_modules/d3-time/src/utcDay.js","../../../node_modules/d3-time/src/utcWeek.js","../../../node_modules/d3-time/src/utcMonth.js","../../../node_modules/d3-time/src/utcYear.js","../../../node_modules/d3-time-format/src/locale.js","../../../node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/d3-time-format/src/isoFormat.js","../../../node_modules/d3-time-format/src/isoParse.js","../src/Class.ts","../src/PropertyExt.ts","../src/Utility.ts","../src/Database.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/Widget.ts","../src/HTMLWidget.ts","../src/CanvasWidget.ts","../src/Platform.ts","../src/Transition.ts","../src/SVGWidget.ts","../src/Text.ts","../src/FAChar.ts","../../../node_modules/colorbrewer/index.es.js","../../../node_modules/d3-scale/src/array.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/band.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/nice.js","../../../node_modules/d3-scale/src/log.js","../../../node_modules/d3-scale/src/pow.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/d3-scale/src/time.js","../../../node_modules/d3-scale/src/colors.js","../../../node_modules/d3-scale/src/category10.js","../../../node_modules/d3-scale/src/category20b.js","../../../node_modules/d3-scale/src/category20c.js","../../../node_modules/d3-scale/src/category20.js","../../../node_modules/d3-scale/src/cubehelix.js","../../../node_modules/d3-scale/src/rainbow.js","../../../node_modules/d3-scale/src/viridis.js","../../../node_modules/d3-scale/src/sequential.js","../src/Palette.ts","../src/Shape.ts","../src/Icon.ts","../src/Entity.ts","../src/EntityCard.ts","../src/EntityPin.ts","../src/EntityRect.ts","../src/TextBox.ts","../src/EntityVertex.ts","../src/Image.ts","../src/List.ts","../src/Menu.ts","../src/ProgressBar.ts","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../src/Surface.ts","../src/ResizeSurface.ts","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/TitleBar.ts","../src/SVGZoomWidget.ts","../src/WidgetArray.ts","../../../node_modules/d3-brush/src/constant.js","../../../node_modules/d3-brush/src/event.js","../../../node_modules/d3-brush/src/noevent.js","../../../node_modules/d3-brush/src/brush.js","../../../node_modules/d3-selection/src/create.js","../../../node_modules/d3-array/src/cross.js","../src/index.ts","../../../node_modules/d3-ease/src/linear.js","../../../node_modules/d3-collection/src/entries.js","../../../node_modules/d3-array/src/histogram.js","../../../node_modules/d3-interpolate/src/discrete.js","../../../node_modules/d3-interpolate/src/hue.js","../../../node_modules/d3-collection/src/keys.js","../../../node_modules/d3-array/src/merge.js","../../../node_modules/d3-array/src/permute.js","../../../node_modules/d3-interpolate/src/piecewise.js","../../../node_modules/d3-interpolate/src/quantize.js","../../../node_modules/d3-scale/src/identity.js","../../../node_modules/d3-scale/src/quantile.js","../../../node_modules/d3-scale/src/threshold.js","../../../node_modules/d3-scale/src/utcTime.js","../../../node_modules/d3-array/src/scan.js","../../../node_modules/d3-selection/src/selectAll.js","../../../node_modules/d3-array/src/shuffle.js","../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../../node_modules/d3-array/src/threshold/scott.js","../../../node_modules/d3-selection/src/touches.js","../../../node_modules/d3-array/src/zip.js"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/common\";\nexport const PKG_VERSION = \"2.73.0\";\nexport const BUILD_VERSION = \"2.107.0\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\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.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\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 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};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\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 subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n 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}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\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_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(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(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() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\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_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(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(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() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n 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 return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\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 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 return c;\n };\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}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\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 return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","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\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\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}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","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_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n 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 end: transition_end\n};\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\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 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}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\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 start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\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\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\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;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\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}\n","import exponent from \"./exponent.js\";\n\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}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = 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 = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\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});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\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});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\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});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.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);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.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);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"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\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\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 };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(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 }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return 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 if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function 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 f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction 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, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 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}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import { classID2Meta, ClassMeta } from \"@hpcc-js/util\";\n\nfunction applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor).forEach(name => {\n if (name !== \"constructor\") {\n const descriptor = Object.getOwnPropertyDescriptor(baseCtor, name);\n Object.defineProperty(derivedCtor, name, descriptor);\n }\n });\n });\n}\n\nexport class Class {\n _class: string;\n\n class(): string;\n class(_: string): this;\n class(_?: string): string | this {\n if (!arguments.length) return this._class;\n this._class = _;\n return this;\n }\n\n classID() {\n return this._class.split(\" \").pop();\n }\n\n classMeta(): ClassMeta {\n return classID2Meta(this.classID());\n }\n\n implements(source) {\n applyMixins(this, [source]);\n }\n\n mixin(mixinClass) {\n this.implements(mixinClass.prototype);\n // Special case mixins ---\n if (mixinClass.prototype.hasOwnProperty(\"_class\")) {\n this._class += \" \" + mixinClass.prototype._class.split(\" \").pop();\n }\n }\n\n overrideMethod<M extends keyof this>(methodID: M, newMethod: this[M]): this {\n if (this[methodID] === undefined) {\n throw new Error(`Method: ${methodID.toString()} does not exist.`);\n }\n const origMethod = this[methodID];\n this[methodID] = function () {\n arguments[arguments.length] = origMethod;\n arguments.length++;\n return (newMethod as any).apply(this, arguments);\n } as any;\n return this;\n }\n\n cssTag(id: string): string {\n return (\"\" + id).replace(/[^a-z0-9]/g, (s) => {\n const c = s.charCodeAt(0);\n if (c === 32) return \"-\";\n if (c >= 65 && c <= 90) return \"_\" + s.toLowerCase();\n return \"_0x\" + c.toString(16);\n });\n }\n}\nClass.prototype._class = \"common_Class\";\n","import { hashSum } from \"@hpcc-js/util\";\nimport { event as d3Event } from \"d3-selection\";\nimport { Class } from \"./Class\";\n\nconst GEN_PUB_STUBS: boolean = false;\n\nfunction deepEqual(a, b) {\n if (a === b) return true;\n\n const arrA = Array.isArray(a);\n const arrB = Array.isArray(b);\n let i;\n\n if (arrA && arrB) {\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!deepEqual(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n const dateA = a instanceof Date;\n const dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() === b.getTime();\n if (dateA != dateB) return false;\n\n const regexpA = a instanceof RegExp;\n const regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() === b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!deepEqual(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n}\n\nconst __meta_ = \"__meta_\";\nconst __private_ = \"__private_\";\nconst __prop_ = \"_\";\nconst __prop_data_ = \"__prop_\";\nconst __default_ = \"__default_\";\n\nfunction isMeta(key) {\n return key.indexOf(__meta_) === 0;\n}\n\nfunction isPrivate(obj, key) {\n return obj[__private_ + key] || obj[__private_ + __meta_ + key];\n}\n\nexport interface IAutoExpand extends PropertyExt {\n // AutoExpand items may have \"incomplete\" instances while the user is editing them in the PropertyEditor\n owner(): PropertyExt;\n owner(_: PropertyExt): this;\n valid(): boolean;\n}\n\nexport type TagTypes = \"Private\" | \"Shared\" | \"Basic\" | \"Intermediate\" | \"Advanced\" | \"Theme\" | \"Serial\";\nexport type PublishTypes = \"any\" | \"number\" | \"boolean\" | \"string\" | \"set\" | \"array\" | \"object\" | \"widget\" | \"widgetArray\" | \"propertyArray\" | \"html-color\" | \"proxy\";\nexport interface IPublishExt {\n override?: boolean;\n disable?: (w) => boolean;\n validate?: (w) => boolean;\n hidden?: (w) => boolean;\n optional?: boolean;\n tags?: TagTypes[];\n autoExpand?: new () => IAutoExpand;\n noDeserialize?: boolean;\n render?: boolean;\n icons?: string[];\n editor_input?: (context, widget, cell, param) => void;\n saveButton?: string;\n saveButtonID?: string;\n number?: any;\n reset?: boolean;\n // Amcharts - really needed?\n min?: number;\n max?: number;\n step?: number;\n inputType?: string;\n internal?: boolean;\n range?: { min: number, max: number, step: number };\n multiline?: boolean;\n}\n\nexport class Meta {\n id;\n type: PublishTypes;\n origDefaultValue;\n defaultValue;\n description;\n set;\n ext: IPublishExt;\n checkedAssign;\n\n constructor(id, defaultValue, type, description, set, ext?: IPublishExt) {\n ext = ext || {};\n this.id = id;\n this.type = type;\n this.origDefaultValue = defaultValue;\n this.defaultValue = ext.optional && defaultValue === null ? undefined : defaultValue;\n this.description = description;\n this.set = set;\n this.ext = ext;\n\n switch (type) {\n case \"any\":\n this.checkedAssign = _ => _;\n break;\n case \"set\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n const options = typeof set === \"function\" ? set.call(this) : set;\n if (options && options.length && options.indexOf(_) < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + JSON.stringify(options));\n }\n }\n return _;\n };\n break;\n case \"html-color\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug && _ && _ !== \"red\") {\n const litmus = \"red\";\n const d = document.createElement(\"div\");\n d.style.color = litmus;\n d.style.color = _;\n // Element's style.color will be reverted to litmus or set to \"\" if an invalid color is given\n if (d.style.color === litmus || d.style.color === \"\") {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n }\n return _;\n };\n break;\n case \"boolean\":\n this.checkedAssign = function (_) {\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n };\n break;\n case \"number\":\n this.checkedAssign = function (_) {\n return Number(_);\n };\n break;\n case \"string\":\n this.checkedAssign = function (_) {\n return String(_);\n };\n break;\n case \"array\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Array)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"object\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Object)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widget\":\n this.checkedAssign = function (_) {\n if (!_._class || _._class.indexOf(\"common_PropertyExt\") < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widgetArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return (!row._class || row._class.indexOf(\"common_Widget\") < 0); })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"propertyArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return !row.publishedProperties; })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n default:\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n console.error(\"Unchecked property type for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n }\n }\n}\n\nclass MetaProxy {\n id: string;\n type;\n proxy;\n method;\n defaultValue;\n ext: IPublishExt;\n\n constructor(id: string, proxy, method, defaultValue, ext?: IPublishExt) {\n this.id = id;\n this.type = \"proxy\";\n this.proxy = proxy;\n this.method = method;\n this.defaultValue = defaultValue;\n this.ext = ext || {};\n }\n}\n\nfunction isMetaProxy(meta: Meta | MetaProxy): meta is MetaProxy {\n return meta.type === \"proxy\";\n}\n\nexport interface IMonitorHandle {\n remove(): void;\n}\n\nlet propExtID = 0;\nexport class PropertyExt extends Class {\n protected _id: string;\n private _watchArrIdx: number;\n private _watchArr: any;\n private _publishedProperties: Meta[] = [];\n\n constructor() {\n super();\n this.calcPublishedProperties();\n\n this._id = \"_pe\" + (++propExtID);\n this._watchArrIdx = 0;\n this._watchArr = {};\n\n this.publishedProperties(true).forEach(function (meta) {\n switch (meta.type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[meta.id + \"_reset\"]();\n break;\n }\n }, this);\n }\n\n id(): string;\n id(_: string): this;\n id(_?): string | this {\n if (!arguments.length) return this._id;\n this._id = _;\n return this;\n }\n\n // Publish Properties ---\n calcPublishedProperties(includePrivate = false, expandProxies = false): void {\n this._publishedProperties = [];\n const protoStack = [];\n let __proto__ = Object.getPrototypeOf(this);\n while (__proto__) {\n if (__proto__ === PropertyExt.prototype) {\n break;\n }\n protoStack.unshift(__proto__);\n __proto__ = Object.getPrototypeOf(__proto__);\n }\n for (__proto__ of protoStack) {\n for (const key in __proto__) {\n if (__proto__.hasOwnProperty(key)) {\n if (isMeta(key)) {\n this._publishedProperties.push(this[key]);\n }\n }\n }\n }\n }\n\n resolvePublishedProxy(meta: Meta | MetaProxy) {\n let item = this;\n while (meta instanceof MetaProxy) {\n item = item[meta.proxy];\n meta = item.publishedProperty(meta.method);\n }\n return meta;\n }\n\n publishedProperties(includePrivate = false, expandProxies = false): Meta[] {\n return this._publishedProperties.filter(meta => includePrivate || !isPrivate(this, meta.id)).map(meta => {\n if (expandProxies && isMetaProxy(meta)) {\n const selfProp = meta;\n let item = this;\n while (meta.type === \"proxy\") {\n item = item[(meta as any).proxy];\n meta = item.publishedProperty((meta as any).method);\n }\n if (meta.id !== selfProp.id) {\n meta = JSON.parse(JSON.stringify(meta)); // Clone meta so we can safely replace the id.\n meta.id = selfProp.id;\n }\n }\n return meta;\n });\n }\n\n widgetWalker(visitor: (item: PropertyExt) => void) {\n visitor(this);\n this.publishedProperties(false, true).forEach(publishItem => {\n switch (publishItem.type) {\n case \"widget\":\n const widget: PropertyExt = this[publishItem.id]();\n if (widget) {\n widget.widgetWalker(visitor);\n }\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgets: PropertyExt[] = this[publishItem.id]();\n if (widgets) {\n widgets.forEach((widget) => {\n widget.widgetWalker(visitor);\n });\n }\n break;\n }\n });\n }\n\n propertyWalker(visitor: (context: this, publishItem: Meta) => void, filter?: (context: this, publishItem: Meta) => boolean) {\n const context = this;\n this.publishedProperties(false, true).forEach(function (publishItem) {\n if (typeof (filter) !== \"function\" || filter(context, publishItem)) {\n visitor(context, publishItem);\n }\n });\n }\n\n serialize(): { __class, [id: string]: any } {\n const retVal = {\n __class: this.classID()\n };\n for (const prop of this.publishedProperties()) {\n if (prop.id === \"fields\") continue;\n const val = (this as any)[prop.id]();\n switch (prop.type) {\n case \"propertyArray\":\n if ((this as any)[`${prop.id}_modified`]()) {\n }\n const serialization = val.filter(item => item.valid()).map(item => item.serialize()).filter(item => item !== undefined);\n if (serialization) {\n retVal[prop.id] = serialization;\n }\n break;\n case \"widget\":\n retVal[prop.id] = val?.serialize();\n break;\n default:\n if ((this as any)[`${prop.id}_modified`]()) {\n if (!(val instanceof Object)) {\n retVal[prop.id] = val;\n }\n }\n }\n }\n return retVal;\n }\n\n deserialize(props?: { __class, [id: string]: any }): this {\n if (!props) return this;\n for (const prop of this.publishedProperties()) {\n const val = props[prop.id];\n if (val !== undefined) {\n switch (prop.type) {\n case \"propertyArray\":\n if (prop.ext && prop.ext.autoExpand) {\n this[`${prop.id}`](val.map(item => new prop.ext.autoExpand().deserialize(item)));\n }\n break;\n case \"widget\":\n const currVal = this[`${prop.id}`]();\n if (currVal.classID() === val.__class) {\n currVal.deserialize(val);\n } else {\n console.warn(\"Dynamic class initialization not supported.\");\n }\n break;\n default:\n this[`${prop.id}`](val);\n }\n }\n }\n return this;\n }\n\n publishedProperty(id) {\n return this[__meta_ + id];\n }\n\n publishedModified() {\n return this.publishedProperties().some(function (prop) {\n return this[prop.id + \"_modified\"]();\n }, this);\n }\n\n publishReset(privateArr?, exceptionsArr?) {\n privateArr = (privateArr || []).map(function (id) { return __meta_ + id; });\n exceptionsArr = (exceptionsArr || []).map(function (id) { return __meta_ + id; });\n for (const key in this) {\n if (isMeta(key)) {\n const isPrivateItem = !privateArr.length || (privateArr.length && privateArr.indexOf(key) >= 0);\n const isException = exceptionsArr.indexOf(key) >= 0;\n if (isPrivateItem && !isException) {\n this[__private_ + key] = true;\n }\n }\n }\n }\n static prevClassID: string = \"\";\n publish(id: string, defaultValue, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string, text: string }>) | IPublishExt, ext: IPublishExt = {}): void {\n if (GEN_PUB_STUBS) {\n if (PropertyExt.prevClassID !== (this as any).constructor.name) {\n PropertyExt.prevClassID = (this as any).constructor.name;\n console.info(`// ${PropertyExt.prevClassID} ---`);\n }\n let jsType: string = type;\n switch (type) {\n case \"set\":\n case \"html-color\":\n jsType = \"string\";\n break;\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n jsType = \"any[]\";\n break;\n }\n console.info(` ${id}(): ${jsType};\n ${id}(_: ${jsType}): this;\n ${id}_exists(): boolean;`);\n }\n if (id.indexOf(\"_\") === 0) {\n id = id.slice(1);\n }\n if (this[__meta_ + id] !== undefined && !ext.override) {\n throw new Error(id + \" is already published.\");\n }\n const meta = this[__meta_ + id] = new Meta(id, defaultValue, type, description, set, ext);\n if (meta.ext.internal) {\n this[__private_ + id] = true;\n }\n Object.defineProperty(this, __prop_ + id, {\n set(_) {\n if (_ === undefined) {\n _ = null;\n } else if (_ === \"\" && meta.ext.optional) {\n _ = null;\n } else if (_ !== null) {\n _ = meta.checkedAssign.call(this, _);\n }\n this.broadcast(id, _, this[__prop_data_ + id]);\n if (_ === null) {\n delete this[__prop_data_ + id];\n } else {\n this[__prop_data_ + id] = _;\n }\n },\n\n get() {\n if (this[id + \"_disabled\"]()) return this[id + \"_default\"]();\n return this[__prop_data_ + id] !== undefined ? this[__prop_data_ + id] : this[id + \"_default\"]();\n },\n configurable: true\n });\n if (this[id]) {\n } else {\n if (type === \"propertyArray\") {\n this[id] = function (_) {\n if (!arguments.length) return this[__prop_ + id];\n this[__prop_ + id] = _.map(item => {\n if (!meta.ext.noDeserialize && meta.ext.autoExpand && !(item instanceof meta.ext.autoExpand)) {\n item = new meta.ext.autoExpand().deserialize(item);\n }\n item.owner(this);\n return item;\n });\n return this;\n };\n } else {\n this[id] = function (_) {\n if (!arguments.length) return this[__prop_ + id];\n this[__prop_ + id] = _;\n return this;\n };\n }\n }\n this[id + \"_disabled\"] = function () {\n return ext && ext.disable ? !!ext.disable(this) : false;\n };\n this[id + \"_hidden\"] = function () {\n return ext && ext.hidden ? !!ext.hidden(this) : false;\n };\n this[id + \"_valid\"] = function () {\n return ext && ext.validate ? this[id + \"_disabled\"]() || (ext.optional && !this[id + \"_exists\"]()) || (ext.autoExpand && !this.valid()) || !!ext.validate(this) : true;\n };\n this[id + \"_modified\"] = function () {\n if (type === \"propertyArray\") {\n return this[__prop_data_ + id] && (this[__prop_data_ + id].some(item => item.valid()));\n }\n return this[__prop_data_ + id] !== undefined;\n };\n this[id + \"_exists\"] = function () {\n if (this[__prop_data_ + id] != null && !(this[__prop_data_ + id] === \"\" && ext.optional === true)) return true;\n if (this[id + \"_default\"]() != null && !(this[id + \"_default\"]() === \"\" && ext.optional === true)) return true;\n return false;\n };\n this[id + \"_default\"] = function (_) {\n if (!arguments.length) return this[__default_ + id] !== undefined ? this[__default_ + id] : meta.defaultValue;\n if (_ === \"\") {\n _ = null;\n }\n if (_ === null) {\n delete this[__default_ + id];\n } else {\n this[__default_ + id] = _;\n }\n return this;\n };\n this[id + \"_reset\"] = function () {\n switch (type) {\n case \"widget\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].target(null);\n }\n break;\n case \"widgetArray\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].forEach(function (widget) {\n widget.target(null);\n });\n }\n break;\n }\n\n switch (type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[__default_ + id] = this[id + \"_default\"]().map(function (row) { return row; });\n break;\n }\n delete this[__prop_data_ + id];\n return this;\n };\n this[id + \"_options\"] = function () {\n if (typeof set === \"function\") {\n const retVal = meta.ext.optional ? [null] : [];\n return retVal.concat(set.apply(this, arguments));\n }\n return set;\n };\n }\n\n publishWidget(prefix, WidgetType, id) {\n for (const key in WidgetType.prototype) {\n if (key.indexOf(\"__meta\") === 0) {\n const publishItem = WidgetType.prototype[key];\n this.publishProxy(prefix + __prop_data_ + publishItem.id, id, publishItem.method || publishItem.id);\n }\n }\n }\n\n publishProxy(id: string, proxy, method?, defaultValue?) {\n method = method || id;\n if (this[__meta_ + id] !== undefined) {\n throw new Error(id + \" is already published.\");\n }\n this[__meta_ + id] = new MetaProxy(id, proxy, method, defaultValue);\n this[id] = function (_) {\n if (!arguments.length) return defaultValue === undefined || this[id + \"_modified\"]() ? this[proxy][method]() : defaultValue;\n if (defaultValue !== undefined && _ === defaultValue) {\n this[proxy][method + \"_reset\"]();\n } else {\n this[proxy][method](_);\n }\n return this;\n };\n this[id + \"_disabled\"] = function () {\n return this[proxy][method + \"_disabled\"]();\n };\n this[id + \"_modified\"] = function () {\n return this[proxy][method + \"_modified\"]() && (defaultValue === undefined || this[proxy][method]() !== defaultValue);\n };\n this[id + \"_exists\"] = function () {\n return this[proxy][method + \"_exists\"]();\n };\n this[id + \"_default\"] = function (_) {\n if (!arguments.length) return this[proxy][method + \"_default\"]();\n this[proxy][method + \"_default\"](_);\n return this;\n };\n this[id + \"_reset\"] = function () {\n this[proxy][method + \"_reset\"]();\n return this;\n };\n this[id + \"_options\"] = function () {\n return this[proxy][method + \"_options\"]();\n };\n }\n\n monitorProperty(propID: string, func: (id: string, newVal: any, oldVal: any) => void): IMonitorHandle {\n const meta = this.publishedProperty(propID);\n switch (meta.type) {\n case \"proxy\":\n if (this[meta.proxy]) {\n return this[meta.proxy].monitorProperty(meta.method, function (_key, newVal, oldVal) {\n func(meta.id, newVal, oldVal);\n });\n } else {\n return {\n remove: () => { }\n };\n }\n default:\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: propID, callback: func };\n const context = this;\n return {\n remove: () => {\n delete context._watchArr[idx];\n }\n };\n }\n }\n\n monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void } {\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: undefined, callback: func };\n return {\n remove: () => {\n delete this._watchArr[idx];\n }\n };\n }\n\n broadcast(key, newVal, oldVal, source?) {\n source = source || this;\n if (!deepEqual(newVal, oldVal)) {\n for (const idx in this._watchArr) {\n const monitor = this._watchArr[idx];\n if ((monitor.propertyID === undefined || monitor.propertyID === key) && monitor.callback) {\n // console.log(`${this.classID()}->broadcast(${key}, ${newVal}, ${oldVal})`);\n setTimeout(function (monitor2) {\n monitor2.callback(key, newVal, oldVal, source);\n }, 0, monitor);\n }\n }\n }\n }\n\n applyTheme(theme) {\n if (!theme) {\n return;\n }\n const clsArr = this._class.split(\" \");\n for (const i in clsArr) {\n if (theme[clsArr[i]]) {\n for (const paramName in theme[clsArr[i]]) {\n if (paramName === \"overrideTags\" && theme[clsArr[i]][paramName] instanceof Object) {\n for (const param in theme[clsArr[i]][paramName]) {\n if (this.publishedProperty(paramName).ext) {\n this.publishedProperty(paramName).ext.tags = theme[clsArr[i]][paramName][param];\n }\n }\n continue;\n }\n if (this.publishedProperty(paramName)) {\n this.publishedProperty(paramName).defaultValue = theme[clsArr[i]][paramName];\n }\n }\n }\n }\n }\n\n copyPropsTo(other: PropertyExt, ignore: string[] = []): this {\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n if (this[meta.id + \"_exists\"]()) {\n other[meta.id](this[meta.id]());\n } else {\n other[meta.id + \"_reset\"]();\n }\n });\n return this;\n }\n\n private metaHash(meta): string {\n if (this[meta.id + \"_exists\"]()) {\n let value = this[meta.id]();\n const proxyMeta = this.resolvePublishedProxy(meta);\n switch (proxyMeta.type) {\n case \"widget\":\n value = value.hashSum();\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n value = hashSum(value.map(v => v.hashSum()));\n break;\n default:\n }\n return value;\n }\n return \"\";\n }\n\n propertyHash(properties: string[] = [], more = {}): string {\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => properties.length === 0 || properties.indexOf(meta.id) >= 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n hashSum(ignore: string[] = [], more = {}): string {\n ignore = [...ignore, \"classed\"];\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n // Events ---\n on(eventID, func, stopPropagation = false): this {\n const context = this;\n this.overrideMethod(eventID, function (...args: any[]) {\n const origFunc = args[args.length - 1];\n let retVal;\n if (stopPropagation) {\n if (d3Event && d3Event.stopPropagation) {\n d3Event.stopPropagation();\n }\n [].push.call(args, origFunc);\n } else {\n retVal = origFunc.apply(context, args);\n }\n const retVal2 = func.apply(context, args);\n return retVal2 !== undefined ? retVal2 : retVal;\n });\n return this;\n }\n}\nPropertyExt.prototype._class += \" common_PropertyExt\";\n\nexport function publish(defaultValue, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string, text: string }>) | IPublishExt, ext: IPublishExt = {}) {\n return function (target: any, key: string) {\n if (!key) throw new Error(\"???\");\n if (ext.reset) {\n target.publishReset();\n }\n target.publish(key, defaultValue, type, description, set, ext);\n };\n}\nexport type publish<T, U> = {\n (_: U): T;\n (): U;\n};\n\nexport function publishProxy(proxy: string, method?: string, defaultValue?, ext: { reset?: boolean } = {}) {\n return function (target: any, key: string) {\n if (ext.reset) {\n target.publishReset();\n }\n target.publishProxy(key, proxy, method, defaultValue);\n };\n}\n","import { isArray } from \"@hpcc-js/util\";\nimport { ascending as d3Ascending, descending as d3Descending } from \"d3-array\";\nimport { select as d3Select, Selection as d3SelectionT } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat } from \"d3-time-format\";\n\nfunction _naturalSort(a, b, order, idx, sortCaseSensitive) {\n const re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi;\n const sre = /(^[ ]*|[ ]*$)/g;\n const dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/;\n const ore = /^0/;\n const i = function (s) { return !sortCaseSensitive && (\"\" + s).toLowerCase() || \"\" + s; };\n // convert all to strings strip whitespace\n const x = i(idx ? a[idx] : a).replace(sre, \"\") || \"\";\n const y = i(idx ? b[idx] : b).replace(sre, \"\") || \"\";\n // chunk/tokenize\n const xN = x.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n const yN = y.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n // numeric or date detection\n const xD = (xN.length !== 1 && x.match(dre) && Date.parse(x));\n const yD = xD && y.match(dre) && Date.parse(y) || null;\n let oFxNcL;\n let oFyNcL;\n // first try and sort Hex codes or Dates\n if (yD) {\n if (xD < yD) {\n return order === \"ascending\" ? -1 : 1;\n } else if (xD > yD) {\n return order === \"ascending\" ? 1 : -1;\n }\n }\n // natural sorting through split numeric strings and default strings\n for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\n // find floats not starting with \"0\", string or 0 if not defined (Clint Priest)\n oFxNcL = !(xN[cLoc] || \"\").match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\n oFyNcL = !(yN[cLoc] || \"\").match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\n // handle numeric vs string comparison - number < string - (Kyle Adams)\n if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {\n return (isNaN(oFxNcL)) ? 1 : -1;\n } else if (typeof oFxNcL !== typeof oFyNcL) {\n // rely on string comparison if different types - i.e. \"02\" < 2 != \"02\" < \"2\"\n oFxNcL += \"\";\n oFyNcL += \"\";\n }\n if (oFxNcL < oFyNcL) { return order === \"ascending\" ? -1 : 1; }\n if (oFxNcL > oFyNcL) { return order === \"ascending\" ? 1 : -1; }\n }\n return 0;\n}\n\n// Selection Bag(s) ---\nexport class SelectionBase {\n protected __widget;\n private __svgGlowID: string;\n\n constructor(widget) {\n // Can't import Widget or SVGWidget as it breaks AMD loading...\n this.__widget = widget;\n }\n\n svgGlowID(): string {\n if (this.__svgGlowID === undefined) {\n this.__svgGlowID = this.__widget.svgGlowID && this.__widget.svgGlowID() || \"\";\n }\n return this.__svgGlowID;\n }\n}\n\nexport interface ISelectionItem {\n _id: string;\n element(): d3SelectionT<Element, any, Element, any>;\n}\n\nexport class SelectionBag extends SelectionBase {\n items: { [key: string]: ISelectionItem };\n constructor(widget) {\n super(widget);\n this.items = {};\n }\n\n clear() {\n for (const key in this.items) {\n this.items[key].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n }\n this.items = {};\n }\n\n isEmpty() {\n for (const _key in this.items) { // jshint ignore:line\n return false;\n }\n return true;\n }\n\n append(item: ISelectionItem) {\n this.items[item._id] = item;\n item.element()\n .classed(\"selected\", true)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n\n remove(item: ISelectionItem) {\n this.items[item._id].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n delete this.items[item._id];\n }\n\n isSelected(item: ISelectionItem) {\n return this.items[item._id] !== undefined;\n }\n\n get() {\n const retVal = [];\n for (const key in this.items) {\n retVal.push(this.items[key]);\n }\n return retVal;\n }\n\n set(itemArray: ISelectionItem[]) {\n this.clear();\n itemArray.forEach(function (item) {\n this.append(item);\n }, this);\n }\n\n click = function (item: ISelectionItem, evt) {\n if (evt.ctrlKey) {\n if (this.items[item._id]) {\n this.remove(item);\n } else {\n this.append(item);\n }\n } else {\n this.clear();\n this.append(item);\n }\n };\n}\n\nexport class SimpleSelection extends SelectionBase {\n constructor(widget, widgetElement, skipBringToTop?) {\n super(widget);\n this.widgetElement(widgetElement);\n this.skipBringToTop(skipBringToTop);\n }\n\n _widgetElement;\n widgetElement(_?) {\n if (!arguments.length) return this._widgetElement;\n this._widgetElement = _;\n return this;\n }\n\n _skipBringToTop;\n skipBringToTop(_) {\n if (!arguments.length) return this._skipBringToTop;\n this._skipBringToTop = _;\n return this;\n }\n\n _initialSelection: (d) => boolean;\n enter(elements) {\n const context = this;\n elements\n .each(function (d) {\n const selected: boolean = context._initialSelection ? context._initialSelection(d.data) : false;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context.svgGlowID() && selected ? `url(#${context.svgGlowID()})` : null)\n ;\n })\n .on(\"click.SimpleSelection\", function () {\n context.click(this);\n })\n .on(\"mouseover.SimpleSelection\", function () {\n context.mouseOver(this);\n })\n .on(\"mouseout.SimpleSelection\", function () {\n context.mouseOut(this);\n })\n ;\n }\n click(domNode): boolean {\n if (!this._skipBringToTop) {\n domNode.parentNode.appendChild(domNode);\n }\n const element = d3Select(domNode);\n const wasSelected = element.classed(\"selected\");\n this._widgetElement.selectAll(\".selected\")\n .classed(\"selected\", false)\n .classed(\"deselected\", true)\n .attr(\"filter\", null)\n ;\n if (!wasSelected) {\n element\n .classed(\"selected\", true)\n .classed(\"deselected\", false)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n return !wasSelected;\n }\n mouseOver(domNode) {\n d3Select(domNode)\n .classed(\"over\", true)\n ;\n }\n mouseOut(domNode) {\n d3Select(domNode)\n .classed(\"over\", null)\n ;\n }\n selected(domNode) {\n return d3Select(domNode).classed(\"selected\");\n }\n selection(_) {\n if (!arguments.length) {\n return this.selection2().map(row => JSON.stringify(row));\n }\n this.selection2(d => _.indexOf(JSON.stringify(d)) >= 0);\n return this;\n }\n selection2(): any[];\n selection2(isSelected: (d) => boolean): this;\n selection2(isSelected?: (d) => boolean): any[] | this {\n if (!arguments.length) {\n const retVal: any[] = [];\n if (this._widgetElement) {\n this._widgetElement.selectAll(\".selected\")\n .each(d => retVal.push(d))\n ;\n }\n return retVal;\n }\n if (this._widgetElement) {\n const context = this;\n this._widgetElement.selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = isSelected(d);\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", (selected && context.svgGlowID()) ? `url(#${context.svgGlowID()})` : null)\n ;\n if (selected && !context._skipBringToTop) {\n safeRaise(this);\n }\n })\n ;\n } else {\n this._initialSelection = isSelected;\n }\n return this;\n }\n}\n\nexport function SimpleSelectionMixin(skipBringToTop) {\n this._selection = new SimpleSelection(this, null, skipBringToTop);\n}\n\nSimpleSelectionMixin.prototype.serializeState = function () {\n return {\n selection: this._selection.selection(),\n data: this.data()\n };\n};\n\nSimpleSelectionMixin.prototype.deserializeState = function (state) {\n if (state) {\n this._selection.selection(state.selection);\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n};\n\nconst perf: any = window.performance;\nconst now = perf && (perf.now || perf.mozNow || perf.msNow || perf.oNow || perf.webkitNow);\n\nconst faCharMap = { \"fa-500px\": \"\", \"fa-address-book\": \"\", \"fa-address-book-o\": \"\", \"fa-address-card\": \"\", \"fa-address-card-o\": \"\", \"fa-adjust\": \"\", \"fa-adn\": \"\", \"fa-align-center\": \"\", \"fa-align-justify\": \"\", \"fa-align-left\": \"\", \"fa-align-right\": \"\", \"fa-amazon\": \"\", \"fa-ambulance\": \"\", \"fa-american-sign-language-interpreting\": \"\", \"fa-anchor\": \"\", \"fa-android\": \"\", \"fa-angellist\": \"\", \"fa-angle-double-down\": \"\", \"fa-angle-double-left\": \"\", \"fa-angle-double-right\": \"\", \"fa-angle-double-up\": \"\", \"fa-angle-down\": \"\", \"fa-angle-left\": \"\", \"fa-angle-right\": \"\", \"fa-angle-up\": \"\", \"fa-apple\": \"\", \"fa-archive\": \"\", \"fa-area-chart\": \"\", \"fa-arrow-circle-down\": \"\", \"fa-arrow-circle-left\": \"\", \"fa-arrow-circle-o-down\": \"\", \"fa-arrow-circle-o-left\": \"\", \"fa-arrow-circle-o-right\": \"\", \"fa-arrow-circle-o-up\": \"\", \"fa-arrow-circle-right\": \"\", \"fa-arrow-circle-up\": \"\", \"fa-arrow-down\": \"\", \"fa-arrow-left\": \"\", \"fa-arrow-right\": \"\", \"fa-arrow-up\": \"\", \"fa-arrows\": \"\", \"fa-arrows-alt\": \"\", \"fa-arrows-h\": \"\", \"fa-arrows-v\": \"\", \"fa-asl-interpreting\": \"\", \"fa-assistive-listening-systems\": \"\", \"fa-asterisk\": \"\", \"fa-at\": \"\", \"fa-audio-description\": \"\", \"fa-automobile\": \"\", \"fa-backward\": \"\", \"fa-balance-scale\": \"\", \"fa-ban\": \"\", \"fa-bandcamp\": \"\", \"fa-bank\": \"\", \"fa-bar-chart\": \"\", \"fa-bar-chart-o\": \"\", \"fa-barcode\": \"\", \"fa-bars\": \"\", \"fa-bath\": \"\", \"fa-bathtub\": \"\", \"fa-battery\": \"\", \"fa-battery-0\": \"\", \"fa-battery-1\": \"\", \"fa-battery-2\": \"\", \"fa-battery-3\": \"\", \"fa-battery-4\": \"\", \"fa-battery-empty\": \"\", \"fa-battery-full\": \"\", \"fa-battery-half\": \"\", \"fa-battery-quarter\": \"\", \"fa-battery-three-quarters\": \"\", \"fa-bed\": \"\", \"fa-beer\": \"\", \"fa-behance\": \"\", \"fa-behance-square\": \"\", \"fa-bell\": \"\", \"fa-bell-o\": \"\", \"fa-bell-slash\": \"\", \"fa-bell-slash-o\": \"\", \"fa-bicycle\": \"\", \"fa-binoculars\": \"\", \"fa-birthday-cake\": \"\", \"fa-bitbucket\": \"\", \"fa-bitbucket-square\": \"\", \"fa-bitcoin\": \"\", \"fa-black-tie\": \"\", \"fa-blind\": \"\", \"fa-bluetooth\": \"\", \"fa-bluetooth-b\": \"\", \"fa-bold\": \"\", \"fa-bolt\": \"\", \"fa-bomb\": \"\", \"fa-book\": \"\", \"fa-bookmark\": \"\", \"fa-bookmark-o\": \"\", \"fa-braille\": \"\", \"fa-briefcase\": \"\", \"fa-btc\": \"\", \"fa-bug\": \"\", \"fa-building\": \"\", \"fa-building-o\": \"\", \"fa-bullhorn\": \"\", \"fa-bullseye\": \"\", \"fa-bus\": \"\", \"fa-buysellads\": \"\", \"fa-cab\": \"\", \"fa-calculator\": \"\", \"fa-calendar\": \"\", \"fa-calendar-check-o\": \"\", \"fa-calendar-minus-o\": \"\", \"fa-calendar-o\": \"\", \"fa-calendar-plus-o\": \"\", \"fa-calendar-times-o\": \"\", \"fa-camera\": \"\", \"fa-camera-retro\": \"\", \"fa-car\": \"\", \"fa-caret-down\": \"\", \"fa-caret-left\": \"\", \"fa-caret-right\": \"\", \"fa-caret-square-o-down\": \"\", \"fa-caret-square-o-left\": \"\", \"fa-caret-square-o-right\": \"\", \"fa-caret-square-o-up\": \"\", \"fa-caret-up\": \"\", \"fa-cart-arrow-down\": \"\", \"fa-cart-plus\": \"\", \"fa-cc\": \"\", \"fa-cc-amex\": \"\", \"fa-cc-diners-club\": \"\", \"fa-cc-discover\": \"\", \"fa-cc-jcb\": \"\", \"fa-cc-mastercard\": \"\", \"fa-cc-paypal\": \"\", \"fa-cc-stripe\": \"\", \"fa-cc-visa\": \"\", \"fa-certificate\": \"\", \"fa-chain\": \"\", \"fa-chain-broken\": \"\", \"fa-check\": \"\", \"fa-check-circle\": \"\", \"fa-check-circle-o\": \"\", \"fa-check-square\": \"\", \"fa-check-square-o\": \"\", \"fa-chevron-circle-down\": \"\", \"fa-chevron-circle-left\": \"\", \"fa-chevron-circle-right\": \"\", \"fa-chevron-circle-up\": \"\", \"fa-chevron-down\": \"\", \"fa-chevron-left\": \"\", \"fa-chevron-right\": \"\", \"fa-chevron-up\": \"\", \"fa-child\": \"\", \"fa-chrome\": \"\", \"fa-circle\": \"\", \"fa-circle-o\": \"\", \"fa-circle-o-notch\": \"\", \"fa-circle-thin\": \"\", \"fa-clipboard\": \"\", \"fa-clock-o\": \"\", \"fa-clone\": \"\", \"fa-close\": \"\", \"fa-cloud\": \"\", \"fa-cloud-download\": \"\", \"fa-cloud-upload\": \"\", \"fa-cny\": \"\", \"fa-code\": \"\", \"fa-code-fork\": \"\", \"fa-codepen\": \"\", \"fa-codiepie\": \"\", \"fa-coffee\": \"\", \"fa-cog\": \"\", \"fa-cogs\": \"\", \"fa-columns\": \"\", \"fa-comment\": \"\", \"fa-comment-o\": \"\", \"fa-commenting\": \"\", \"fa-commenting-o\": \"\", \"fa-comments\": \"\", \"fa-comments-o\": \"\", \"fa-compass\": \"\", \"fa-compress\": \"\", \"fa-connectdevelop\": \"\", \"fa-contao\": \"\", \"fa-copy\": \"\", \"fa-copyright\": \"\", \"fa-creative-commons\": \"\", \"fa-credit-card\": \"\", \"fa-credit-card-alt\": \"\", \"fa-crop\": \"\", \"fa-crosshairs\": \"\", \"fa-css3\": \"\", \"fa-cube\": \"\", \"fa-cubes\": \"\", \"fa-cut\": \"\", \"fa-cutlery\": \"\", \"fa-dashboard\": \"\", \"fa-dashcube\": \"\", \"fa-database\": \"\", \"fa-deaf\": \"\", \"fa-deafness\": \"\", \"fa-dedent\": \"\", \"fa-delicious\": \"\", \"fa-desktop\": \"\", \"fa-deviantart\": \"\", \"fa-diamond\": \"\", \"fa-digg\": \"\", \"fa-dollar\": \"\", \"fa-dot-circle-o\": \"\", \"fa-download\": \"\", \"fa-dribbble\": \"\", \"fa-drivers-license\": \"\", \"fa-drivers-license-o\": \"\", \"fa-dropbox\": \"\", \"fa-drupal\": \"\", \"fa-edge\": \"\", \"fa-edit\": \"\", \"fa-eercast\": \"\", \"fa-eject\": \"\", \"fa-ellipsis-h\": \"\", \"fa-ellipsis-v\": \"\", \"fa-empire\": \"\", \"fa-envelope\": \"\", \"fa-envelope-o\": \"\", \"fa-envelope-open\": \"\", \"fa-envelope-open-o\": \"\", \"fa-envelope-square\": \"\", \"fa-envira\": \"\", \"fa-eraser\": \"\", \"fa-etsy\": \"\", \"fa-eur\": \"\", \"fa-euro\": \"\", \"fa-exchange\": \"\", \"fa-exclamation\": \"\", \"fa-exclamation-circle\": \"\", \"fa-exclamation-triangle\": \"\", \"fa-expand\": \"\", \"fa-expeditedssl\": \"\", \"fa-external-link\": \"\", \"fa-external-link-square\": \"\", \"fa-eye\": \"\", \"fa-eye-slash\": \"\", \"fa-eyedropper\": \"\", \"fa-fa\": \"\", \"fa-facebook\": \"\", \"fa-facebook-f\": \"\", \"fa-facebook-official\": \"\", \"fa-facebook-square\": \"\", \"fa-fast-backward\": \"\", \"fa-fast-forward\": \"\", \"fa-fax\": \"\", \"fa-feed\": \"\", \"fa-female\": \"\", \"fa-fighter-jet\": \"\", \"fa-file\": \"\", \"fa-file-archive-o\": \"\", \"fa-file-audio-o\": \"\", \"fa-file-code-o\": \"\", \"fa-file-excel-o\": \"\", \"fa-file-image-o\": \"\", \"fa-file-movie-o\": \"\", \"fa-file-o\": \"\", \"fa-file-pdf-o\": \"\", \"fa-file-photo-o\": \"\", \"fa-file-picture-o\": \"\", \"fa-file-powerpoint-o\": \"\", \"fa-file-sound-o\": \"\", \"fa-file-text\": \"\", \"fa-file-text-o\": \"\", \"fa-file-video-o\": \"\", \"fa-file-word-o\": \"\", \"fa-file-zip-o\": \"\", \"fa-files-o\": \"\", \"fa-film\": \"\", \"fa-filter\": \"\", \"fa-fire\": \"\", \"fa-fire-extinguisher\": \"\", \"fa-firefox\": \"\", \"fa-first-order\": \"\", \"fa-flag\": \"\", \"fa-flag-checkered\": \"\", \"fa-flag-o\": \"\", \"fa-flash\": \"\", \"fa-flask\": \"\", \"fa-flickr\": \"\", \"fa-floppy-o\": \"\", \"fa-folder\": \"\", \"fa-folder-o\": \"\", \"fa-folder-open\": \"\", \"fa-folder-open-o\": \"\", \"fa-font\": \"\", \"fa-font-awesome\": \"\", \"fa-fonticons\": \"\", \"fa-fort-awesome\": \"\", \"fa-forumbee\": \"\", \"fa-forward\": \"\", \"fa-foursquare\": \"\", \"fa-free-code-camp\": \"\", \"fa-frown-o\": \"\", \"fa-futbol-o\": \"\", \"fa-gamepad\": \"\", \"fa-gavel\": \"\", \"fa-gbp\": \"\", \"fa-ge\": \"\", \"fa-gear\": \"\", \"fa-gears\": \"\", \"fa-genderless\": \"\", \"fa-get-pocket\": \"\", \"fa-gg\": \"\", \"fa-gg-circle\": \"\", \"fa-gift\": \"\", \"fa-git\": \"\", \"fa-git-square\": \"\", \"fa-github\": \"\", \"fa-github-alt\": \"\", \"fa-github-square\": \"\", \"fa-gitlab\": \"\", \"fa-gittip\": \"\", \"fa-glass\": \"\", \"fa-glide\": \"\", \"fa-glide-g\": \"\", \"fa-globe\": \"\", \"fa-google\": \"\", \"fa-google-plus\": \"\", \"fa-google-plus-circle\": \"\", \"fa-google-plus-official\": \"\", \"fa-google-plus-square\": \"\", \"fa-google-wallet\": \"\", \"fa-graduation-cap\": \"\", \"fa-gratipay\": \"\", \"fa-grav\": \"\", \"fa-group\": \"\", \"fa-h-square\": \"\", \"fa-hacker-news\": \"\", \"fa-hand-grab-o\": \"\", \"fa-hand-lizard-o\": \"\", \"fa-hand-o-down\": \"\", \"fa-hand-o-left\": \"\", \"fa-hand-o-right\": \"\", \"fa-hand-o-up\": \"\", \"fa-hand-paper-o\": \"\", \"fa-hand-peace-o\": \"\", \"fa-hand-pointer-o\": \"\", \"fa-hand-rock-o\": \"\", \"fa-hand-scissors-o\": \"\", \"fa-hand-spock-o\": \"\", \"fa-hand-stop-o\": \"\", \"fa-handshake-o\": \"\", \"fa-hard-of-hearing\": \"\", \"fa-hashtag\": \"\", \"fa-hdd-o\": \"\", \"fa-header\": \"\", \"fa-headphones\": \"\", \"fa-heart\": \"\", \"fa-heart-o\": \"\", \"fa-heartbeat\": \"\", \"fa-history\": \"\", \"fa-home\": \"\", \"fa-hospital-o\": \"\", \"fa-hotel\": \"\", \"fa-hourglass\": \"\", \"fa-hourglass-1\": \"\", \"fa-hourglass-2\": \"\", \"fa-hourglass-3\": \"\", \"fa-hourglass-end\": \"\", \"fa-hourglass-half\": \"\", \"fa-hourglass-o\": \"\", \"fa-hourglass-start\": \"\", \"fa-houzz\": \"\", \"fa-html5\": \"\", \"fa-i-cursor\": \"\", \"fa-id-badge\": \"\", \"fa-id-card\": \"\", \"fa-id-card-o\": \"\", \"fa-ils\": \"\", \"fa-image\": \"\", \"fa-imdb\": \"\", \"fa-inbox\": \"\", \"fa-indent\": \"\", \"fa-industry\": \"\", \"fa-info\": \"\", \"fa-info-circle\": \"\", \"fa-inr\": \"\", \"fa-instagram\": \"\", \"fa-institution\": \"\", \"fa-internet-explorer\": \"\", \"fa-intersex\": \"\", \"fa-ioxhost\": \"\", \"fa-italic\": \"\", \"fa-joomla\": \"\", \"fa-jpy\": \"\", \"fa-jsfiddle\": \"\", \"fa-key\": \"\", \"fa-keyboard-o\": \"\", \"fa-krw\": \"\", \"fa-language\": \"\", \"fa-laptop\": \"\", \"fa-lastfm\": \"\", \"fa-lastfm-square\": \"\", \"fa-leaf\": \"\", \"fa-leanpub\": \"\", \"fa-legal\": \"\", \"fa-lemon-o\": \"\", \"fa-level-down\": \"\", \"fa-level-up\": \"\", \"fa-life-bouy\": \"\", \"fa-life-buoy\": \"\", \"fa-life-ring\": \"\", \"fa-life-saver\": \"\", \"fa-lightbulb-o\": \"\", \"fa-line-chart\": \"\", \"fa-link\": \"\", \"fa-linkedin\": \"\", \"fa-linkedin-square\": \"\", \"fa-linode\": \"\", \"fa-linux\": \"\", \"fa-list\": \"\", \"fa-list-alt\": \"\", \"fa-list-ol\": \"\", \"fa-list-ul\": \"\", \"fa-location-arrow\": \"\", \"fa-lock\": \"\", \"fa-long-arrow-down\": \"\", \"fa-long-arrow-left\": \"\", \"fa-long-arrow-right\": \"\", \"fa-long-arrow-up\": \"\", \"fa-low-vision\": \"\", \"fa-magic\": \"\", \"fa-magnet\": \"\", \"fa-mail-forward\": \"\", \"fa-mail-reply\": \"\", \"fa-mail-reply-all\": \"\", \"fa-male\": \"\", \"fa-map\": \"\", \"fa-map-marker\": \"\", \"fa-map-o\": \"\", \"fa-map-pin\": \"\", \"fa-map-signs\": \"\", \"fa-mars\": \"\", \"fa-mars-double\": \"\", \"fa-mars-stroke\": \"\", \"fa-mars-stroke-h\": \"\", \"fa-mars-stroke-v\": \"\", \"fa-maxcdn\": \"\", \"fa-meanpath\": \"\", \"fa-medium\": \"\", \"fa-medkit\": \"\", \"fa-meetup\": \"\", \"fa-meh-o\": \"\", \"fa-mercury\": \"\", \"fa-microchip\": \"\", \"fa-microphone\": \"\", \"fa-microphone-slash\": \"\", \"fa-minus\": \"\", \"fa-minus-circle\": \"\", \"fa-minus-square\": \"\", \"fa-minus-square-o\": \"\", \"fa-mixcloud\": \"\", \"fa-mobile\": \"\", \"fa-mobile-phone\": \"\", \"fa-modx\": \"\", \"fa-money\": \"\", \"fa-moon-o\": \"\", \"fa-mortar-board\": \"\", \"fa-motorcycle\": \"\", \"fa-mouse-pointer\": \"\", \"fa-music\": \"\", \"fa-navicon\": \"\", \"fa-neuter\": \"\", \"fa-newspaper-o\": \"\", \"fa-object-group\": \"\", \"fa-object-ungroup\": \"\", \"fa-odnoklassniki\": \"\", \"fa-odnoklassniki-square\": \"\", \"fa-opencart\": \"\", \"fa-openid\": \"\", \"fa-opera\": \"\", \"fa-optin-monster\": \"\", \"fa-outdent\": \"\", \"fa-pagelines\": \"\", \"fa-paint-brush\": \"\", \"fa-paper-plane\": \"\", \"fa-paper-plane-o\": \"\", \"fa-paperclip\": \"\", \"fa-paragraph\": \"\", \"fa-paste\": \"\", \"fa-pause\": \"\", \"fa-pause-circle\": \"\", \"fa-pause-circle-o\": \"\", \"fa-paw\": \"\", \"fa-paypal\": \"\", \"fa-pencil\": \"\", \"fa-pencil-square\": \"\", \"fa-pencil-square-o\": \"\", \"fa-percent\": \"\", \"fa-phone\": \"\", \"fa-phone-square\": \"\", \"fa-photo\": \"\", \"fa-picture-o\": \"\", \"fa-pie-chart\": \"\", \"fa-pied-piper\": \"\", \"fa-pied-piper-alt\": \"\", \"fa-pied-piper-pp\": \"\", \"fa-pinterest\": \"\", \"fa-pinterest-p\": \"\", \"fa-pinterest-square\": \"\", \"fa-plane\": \"\", \"fa-play\": \"\", \"fa-play-circle\": \"\", \"fa-play-circle-o\": \"\", \"fa-plug\": \"\", \"fa-plus\": \"\", \"fa-plus-circle\": \"\", \"fa-plus-square\": \"\", \"fa-plus-square-o\": \"\", \"fa-podcast\": \"\", \"fa-power-off\": \"\", \"fa-print\": \"\", \"fa-product-hunt\": \"\", \"fa-puzzle-piece\": \"\", \"fa-qq\": \"\", \"fa-qrcode\": \"\", \"fa-question\": \"\", \"fa-question-circle\": \"\", \"fa-question-circle-o\": \"\", \"fa-quora\": \"\", \"fa-quote-left\": \"\", \"fa-quote-right\": \"\", \"fa-ra\": \"\", \"fa-random\": \"\", \"fa-ravelry\": \"\", \"fa-rebel\": \"\", \"fa-recycle\": \"\", \"fa-reddit\": \"\", \"fa-reddit-alien\": \"\", \"fa-reddit-square\": \"\", \"fa-refresh\": \"\", \"fa-registered\": \"\", \"fa-remove\": \"\", \"fa-renren\": \"\", \"fa-reorder\": \"\", \"fa-repeat\": \"\", \"fa-reply\": \"\", \"fa-reply-all\": \"\", \"fa-resistance\": \"\", \"fa-retweet\": \"\", \"fa-rmb\": \"\", \"fa-road\": \"\", \"fa-rocket\": \"\", \"fa-rotate-left\": \"\", \"fa-rotate-right\": \"\", \"fa-rouble\": \"\", \"fa-rss\": \"\", \"fa-rss-square\": \"\", \"fa-rub\": \"\", \"fa-ruble\": \"\", \"fa-rupee\": \"\", \"fa-s15\": \"\", \"fa-safari\": \"\", \"fa-save\": \"\", \"fa-scissors\": \"\", \"fa-scribd\": \"\", \"fa-search\": \"\", \"fa-search-minus\": \"\", \"fa-search-plus\": \"\", \"fa-sellsy\": \"\", \"fa-send\": \"\", \"fa-send-o\": \"\", \"fa-server\": \"\", \"fa-share\": \"\", \"fa-share-alt\": \"\", \"fa-share-alt-square\": \"\", \"fa-share-square\": \"\", \"fa-share-square-o\": \"\", \"fa-shekel\": \"\", \"fa-sheqel\": \"\", \"fa-shield\": \"\", \"fa-ship\": \"\", \"fa-shirtsinbulk\": \"\", \"fa-shopping-bag\": \"\", \"fa-shopping-basket\": \"\", \"fa-shopping-cart\": \"\", \"fa-shower\": \"\", \"fa-sign-in\": \"\", \"fa-sign-language\": \"\", \"fa-sign-out\": \"\", \"fa-signal\": \"\", \"fa-signing\": \"\", \"fa-simplybuilt\": \"\", \"fa-sitemap\": \"\", \"fa-skyatlas\": \"\", \"fa-skype\": \"\", \"fa-slack\": \"\", \"fa-sliders\": \"\", \"fa-slideshare\": \"\", \"fa-smile-o\": \"\", \"fa-snapchat\": \"\", \"fa-snapchat-ghost\": \"\", \"fa-snapchat-square\": \"\", \"fa-snowflake-o\": \"\", \"fa-soccer-ball-o\": \"\", \"fa-sort\": \"\", \"fa-sort-alpha-asc\": \"\", \"fa-sort-alpha-desc\": \"\", \"fa-sort-amount-asc\": \"\", \"fa-sort-amount-desc\": \"\", \"fa-sort-asc\": \"\", \"fa-sort-desc\": \"\", \"fa-sort-down\": \"\", \"fa-sort-numeric-asc\": \"\", \"fa-sort-numeric-desc\": \"\", \"fa-sort-up\": \"\", \"fa-soundcloud\": \"\", \"fa-space-shuttle\": \"\", \"fa-spinner\": \"\", \"fa-spoon\": \"\", \"fa-spotify\": \"\", \"fa-square\": \"\", \"fa-square-o\": \"\", \"fa-stack-exchange\": \"\", \"fa-stack-overflow\": \"\", \"fa-star\": \"\", \"fa-star-half\": \"\", \"fa-star-half-empty\": \"\", \"fa-star-half-full\": \"\", \"fa-star-half-o\": \"\", \"fa-star-o\": \"\", \"fa-steam\": \"\", \"fa-steam-square\": \"\", \"fa-step-backward\": \"\", \"fa-step-forward\": \"\", \"fa-stethoscope\": \"\", \"fa-sticky-note\": \"\", \"fa-sticky-note-o\": \"\", \"fa-stop\": \"\", \"fa-stop-circle\": \"\", \"fa-stop-circle-o\": \"\", \"fa-street-view\": \"\", \"fa-strikethrough\": \"\", \"fa-stumbleupon\": \"\", \"fa-stumbleupon-circle\": \"\", \"fa-subscript\": \"\", \"fa-subway\": \"\", \"fa-suitcase\": \"\", \"fa-sun-o\": \"\", \"fa-superpowers\": \"\", \"fa-superscript\": \"\", \"fa-support\": \"\", \"fa-table\": \"\", \"fa-tablet\": \"\", \"fa-tachometer\": \"\", \"fa-tag\": \"\", \"fa-tags\": \"\", \"fa-tasks\": \"\", \"fa-taxi\": \"\", \"fa-telegram\": \"\", \"fa-television\": \"\", \"fa-tencent-weibo\": \"\", \"fa-terminal\": \"\", \"fa-text-height\": \"\", \"fa-text-width\": \"\", \"fa-th\": \"\", \"fa-th-large\": \"\", \"fa-th-list\": \"\", \"fa-themeisle\": \"\", \"fa-thermometer\": \"\", \"fa-thermometer-0\": \"\", \"fa-thermometer-1\": \"\", \"fa-thermometer-2\": \"\", \"fa-thermometer-3\": \"\", \"fa-thermometer-4\": \"\", \"fa-thermometer-empty\": \"\", \"fa-thermometer-full\": \"\", \"fa-thermometer-half\": \"\", \"fa-thermometer-quarter\": \"\", \"fa-thermometer-three-quarters\": \"\", \"fa-thumb-tack\": \"\", \"fa-thumbs-down\": \"\", \"fa-thumbs-o-down\": \"\", \"fa-thumbs-o-up\": \"\", \"fa-thumbs-up\": \"\", \"fa-ticket\": \"\", \"fa-times\": \"\", \"fa-times-circle\": \"\", \"fa-times-circle-o\": \"\", \"fa-times-rectangle\": \"\", \"fa-times-rectangle-o\": \"\", \"fa-tint\": \"\", \"fa-toggle-down\": \"\", \"fa-toggle-left\": \"\", \"fa-toggle-off\": \"\", \"fa-toggle-on\": \"\", \"fa-toggle-right\": \"\", \"fa-toggle-up\": \"\", \"fa-trademark\": \"\", \"fa-train\": \"\", \"fa-transgender\": \"\", \"fa-transgender-alt\": \"\", \"fa-trash\": \"\", \"fa-trash-o\": \"\", \"fa-tree\": \"\", \"fa-trello\": \"\", \"fa-tripadvisor\": \"\", \"fa-trophy\": \"\", \"fa-truck\": \"\", \"fa-try\": \"\", \"fa-tty\": \"\", \"fa-tumblr\": \"\", \"fa-tumblr-square\": \"\", \"fa-turkish-lira\": \"\", \"fa-tv\": \"\", \"fa-twitch\": \"\", \"fa-twitter\": \"\", \"fa-twitter-square\": \"\", \"fa-umbrella\": \"\", \"fa-underline\": \"\", \"fa-undo\": \"\", \"fa-universal-access\": \"\", \"fa-university\": \"\", \"fa-unlink\": \"\", \"fa-unlock\": \"\", \"fa-unlock-alt\": \"\", \"fa-unsorted\": \"\", \"fa-upload\": \"\", \"fa-usb\": \"\", \"fa-usd\": \"\", \"fa-user\": \"\", \"fa-user-circle\": \"\", \"fa-user-circle-o\": \"\", \"fa-user-md\": \"\", \"fa-user-o\": \"\", \"fa-user-plus\": \"\", \"fa-user-secret\": \"\", \"fa-user-times\": \"\", \"fa-users\": \"\", \"fa-vcard\": \"\", \"fa-vcard-o\": \"\", \"fa-venus\": \"\", \"fa-venus-double\": \"\", \"fa-venus-mars\": \"\", \"fa-viacoin\": \"\", \"fa-viadeo\": \"\", \"fa-viadeo-square\": \"\", \"fa-video-camera\": \"\", \"fa-vimeo\": \"\", \"fa-vimeo-square\": \"\", \"fa-vine\": \"\", \"fa-vk\": \"\", \"fa-volume-control-phone\": \"\", \"fa-volume-down\": \"\", \"fa-volume-off\": \"\", \"fa-volume-up\": \"\", \"fa-warning\": \"\", \"fa-wechat\": \"\", \"fa-weibo\": \"\", \"fa-weixin\": \"\", \"fa-whatsapp\": \"\", \"fa-wheelchair\": \"\", \"fa-wheelchair-alt\": \"\", \"fa-wifi\": \"\", \"fa-wikipedia-w\": \"\", \"fa-window-close\": \"\", \"fa-window-close-o\": \"\", \"fa-window-maximize\": \"\", \"fa-window-minimize\": \"\", \"fa-window-restore\": \"\", \"fa-windows\": \"\", \"fa-won\": \"\", \"fa-wordpress\": \"\", \"fa-wpbeginner\": \"\", \"fa-wpexplorer\": \"\", \"fa-wpforms\": \"\", \"fa-wrench\": \"\", \"fa-xing\": \"\", \"fa-xing-square\": \"\", \"fa-y-combinator\": \"\", \"fa-y-combinator-square\": \"\", \"fa-yahoo\": \"\", \"fa-yc\": \"\", \"fa-yc-square\": \"\", \"fa-yelp\": \"\", \"fa-yen\": \"\", \"fa-yoast\": \"\", \"fa-youtube\": \"\", \"fa-youtube-play\": \"\", \"fa-youtube-square\": \"\" };\nconst faClassMap = {\n \"fa-arrows\": \"fas fa-arrows-alt\",\n \"fa-address-book-o\": \"fa fa-address-book\",\n \"fa-address-card-o\": \"fa fa-address-card\",\n \"fa-arrow-circle-o-down\": \"fa fa-arrow-alt-circle-down\",\n \"fa-arrow-circle-o-left\": \"fa fa-arrow-alt-circle-left\",\n \"fa-arrow-circle-o-right\": \"fa fa-arrow-alt-circle-right\",\n \"fa-arrow-circle-o-up\": \"fa fa-arrow-alt-circle-up\",\n \"fa-arrows-h\": \"fas fa-arrows-alt-h\",\n \"fa-arrows-v\": \"fas fa-arrows-alt-v\",\n \"fa-bell-o\": \"fa fa-bell\",\n \"fa-bell-slash-o\": \"fa fa-bell-slash\",\n \"fa-bitbucket-square\": \"fab fa-bitbucket\",\n \"fa-bookmark-o\": \"fa fa-bookmark\",\n \"fa-building-o\": \"fa fa-building\",\n \"fa-check-circle-o\": \"fa fa-check-circle\",\n \"fa-check-square-o\": \"fa fa-check-square\",\n \"fa-circle-o\": \"fa fa-circle\",\n \"fa-circle-thin\": \"fa fa-circle\",\n \"fa-cloud-download\": \"fas fa-cloud-download-alt\",\n \"fa-cloud-upload\": \"fas fa-cloud-upload-alt\",\n \"fa-comment-o\": \"fa fa-comment\",\n \"fa-commenting-o\": \"fa fa-comment-dots\",\n \"fa-comments-o\": \"fa fa-comments\",\n \"fa-credit-card-alt\": \"fas fa-credit-card\",\n \"fa-cutlery\": \"fas fa-utensils\",\n \"fa-dashboard\": \"fas fa-tachometer-alt\",\n \"fa-diamond\": \"fa fa-gem\",\n \"fa-drivers-license-o\": \"fa fa-address-card\",\n \"fa-envelope-o\": \"fa fa-envelope\",\n \"fa-envelope-open-o\": \"fa fa-envelope-open\",\n \"fa-exchange\": \"fas fa-exchange-alt\",\n \"fa-external-link\": \"fas fa-external-link-alt\",\n \"fa-external-link-square\": \"fas fa-external-link-square-alt\",\n \"fa-facebook-official\": \"fab fa-facebook-square\",\n \"fa-file-o\": \"fa fa-file\",\n \"fa-file-text-o\": \"fa fa-file-alt\",\n \"fa-flag-o\": \"fa fa-flag\",\n \"fa-folder-o\": \"fa fa-folder\",\n \"fa-folder-open-o\": \"fa fa-folder-open\",\n \"fa-heart-o\": \"fa fa-heart\",\n \"fa-hourglass-o\": \"fa fa-hourglass\",\n \"fa-id-card-o\": \"fa fa-id-card\",\n \"fa-level-down\": \"fas fa-level-down-alt\",\n \"fa-level-up\": \"fas fa-level-up-alt\",\n \"fa-long-arrow-down\": \"fas fa-long-arrow-alt-down\",\n \"fa-long-arrow-left\": \"fas fa-long-arrow-alt-left\",\n \"fa-long-arrow-right\": \"fas fa-long-arrow-alt-right\",\n \"fa-long-arrow-up\": \"fas fa-long-arrow-alt-up\",\n \"fa-mail-reply\": \"fas fa-reply\",\n \"fa-map-o\": \"fa fa-map\",\n \"fa-meanpath\": \"fas fa-square\",\n \"fa-minus-square-o\": \"fa fa-minus-square\",\n \"fa-paper-plane-o\": \"fa fa-paper-plane\",\n \"fa-pause-circle-o\": \"fa fa-pause-circle\",\n \"fa-pencil\": \"fas fa-pencil-alt\",\n \"fa-play-circle-o\": \"fa fa-play-circle\",\n \"fa-plus-square-o\": \"fa fa-plus-square\",\n \"fa-question-circle-o\": \"fa fa-question-circle\",\n \"fa-reply\": \"fas fa-reply\",\n \"fa-send-o\": \"fa fa-paper-plane\",\n \"fa-share-square-o\": \"fa fa-share-square\",\n \"fa-shield\": \"fas fa-shield-alt\",\n \"fa-sign-in\": \"fas fa-sign-in-alt\",\n \"fa-sign-out\": \"fas fa-sign-out-alt\",\n \"fa-spoon\": \"fas fa-utensil-spoon\",\n \"fa-square-o\": \"fa fa-square\",\n \"fa-star-half-empty\": \"fa fa-star-half\",\n \"fa-star-half-full\": \"fas fa-star-half-alt\",\n \"fa-star-half-o\": \"fa fa-star-half\",\n \"fa-star-o\": \"fa fa-star\",\n \"fa-sticky-note-o\": \"fa fa-sticky-note\",\n \"fa-stop-circle-o\": \"fa fa-stop-circle\",\n \"fa-tachometer\": \"fas fa-tachometer-alt\",\n \"fa-thumbs-o-down\": \"fa fa-thumbs-down\",\n \"fa-thumbs-o-up\": \"fa fa-thumbs-up\",\n \"fa-ticket\": \"fas fa-ticket-alt\",\n \"fa-times-circle-o\": \"fa fa-times-circle\",\n \"fa-times-rectangle\": \"fas fa-window-close\",\n \"fa-times-rectangle-o\": \"fa fa-window-close\",\n \"fa-trash-o\": \"fa fa-trash-alt\",\n \"fa-user-circle-o\": \"fa fa-user-circle\",\n \"fa-user-o\": \"fa fa-user\",\n \"fa-vcard-o\": \"fa fa-address-card\",\n \"fa-wheelchair-alt\": \"fas fa-wheelchair\",\n \"fa-window-close\": \"fas fa-window-close\",\n \"fa-window-close-o\": \"fa fa-window-close\",\n \"fa-youtube-play\": \"fab fa-youtube\",\n \"fa-youtube-square\": \"fab fa-youtube-square\"\n};\nexport function faKeys(): string[] {\n return Object.keys(faCharMap);\n}\n\nexport function fa5Class(key: string): string {\n return faClassMap[key] ? faClassMap[key] : key;\n}\n\nexport function faChar(key: string, defChar: string = \"fa-question\"): string {\n if (key.indexOf(\"fa-\") === 0) {\n return faCharMap[key] || faCharMap[defChar];\n }\n return key;\n}\n\nexport function faCode(key: string): number {\n return faChar(key).charCodeAt(0);\n}\n\nexport function removeHTMLFromString(str: string, div?: HTMLDivElement) {\n div = div ? div : document.createElement(\"div\");\n div.innerHTML = str;\n return div.textContent || div.innerText || \"\";\n}\n\n// Template ---\n// https://github.com/Matt-Esch/string-template (MIT)\nconst nargs = /\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}/g;\nconst nargs2 = /\\{\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}\\}/g;\n\nexport function templateFields(tpl: string): string[] {\n if (!tpl) return [];\n const retVal: string[] = [];\n const matches = tpl.match(nargs);\n if (matches && matches.length) {\n for (const tplField of matches) {\n retVal.push(tplField.substring(1, tplField.length - 1));\n }\n }\n return retVal;\n}\n\nexport function template(tpl: string, _args) {\n if (!tpl) return \"\";\n let args;\n\n if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n args = arguments[1];\n } else {\n args = new Array(arguments.length - 1);\n for (let i = 1; i < arguments.length; ++i) {\n args[i - 1] = arguments[i];\n }\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n\n // Array handling\n for (const key in args) {\n if (isArray(args[key])) {\n args[key].forEach(function (row, idx) {\n args[key + \"[\" + idx + \"]\"] = row;\n });\n }\n }\n\n return tpl\n .replace(nargs2, function replaceArg(match, i) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return match;\n }\n return removeHTMLFromString(result);\n })\n .replace(nargs, function replaceArg(match, i, index) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return \"\";\n }\n return result;\n })\n ;\n}\n\nexport function naturalSort(data, order, idx, sortCaseSensitive) {\n return data.slice(0).sort(function (a, b) {\n return _naturalSort(a, b, order, idx, sortCaseSensitive);\n });\n}\n\nexport function multiSort(data, sortBy) {\n if (sortBy && sortBy.length) {\n data.sort(function (l, r) {\n for (let i = 0; i < sortBy.length; ++i) {\n const lVal = l[sortBy[i].idx];\n const rVal = r[sortBy[i].idx];\n if (lVal !== rVal) {\n return sortBy[i].reverse ? d3Descending(lVal, rVal) : d3Ascending(lVal, rVal);\n }\n }\n return 0;\n });\n }\n return data;\n}\n\nexport const Selection = SelectionBag;\n\nexport function urlParams() {\n const retVal = {};\n const url = window.location.href;\n const idx = url.indexOf(\"?\");\n if (idx >= 0) {\n url.substring(idx + 1).split(\"&\").forEach(function (param) {\n const paramParts = param.split(\"=\");\n switch (paramParts.length) {\n case 1:\n retVal[decodeURIComponent(paramParts[0])] = undefined;\n break;\n case 2:\n retVal[decodeURIComponent(paramParts[0])] = decodeURIComponent(paramParts[1]);\n break;\n default:\n throw new Error(\"Invalid URL Param: \" + param);\n }\n });\n }\n return retVal;\n}\n\nexport function endsWith(str: string, searchStr: string, pos?: number) {\n const subjectString = str.toString();\n if (typeof pos !== \"number\" || !isFinite(pos) || Math.floor(pos) !== pos || pos > subjectString.length) {\n pos = subjectString.length;\n }\n pos -= searchStr.length;\n const lastIndex = subjectString.indexOf(searchStr, pos);\n return lastIndex !== -1 && lastIndex === pos;\n}\n\nexport function d3ArrayAdapter(array) {\n return {\n ownerDocument: {\n createElement(_tagName) {\n return {\n get __data__() { return this.row; },\n set __data__(_) { this.row = array[this.index] = _; }\n };\n },\n\n createElementNS(_ns, tagName) {\n return this.createElement(tagName);\n }\n },\n\n querySelectorAll(selectors) {\n if (selectors) throw new Error(\"unsupported\");\n const context = this;\n return array.map(function (row, idx) {\n return {\n ownerDocument: context.ownerDocument,\n parentNode: context,\n get __data__() { return row; },\n set __data__(_) { array[idx] = _; }\n };\n });\n },\n\n appendChild(node) {\n node.parentNode = this;\n node.index = array.length;\n array.push(null);\n return node;\n },\n\n insertBefore(node, referenceNode) {\n const idx = array.indexOf(node.__data__);\n const refIdx = array.indexOf(referenceNode.__data__);\n if (idx > refIdx) {\n array.splice(refIdx, 0, array.splice(idx, 1)[0]);\n } else if (idx < refIdx - 1) {\n array.splice(refIdx - 1, 0, array.splice(idx, 1)[0]);\n }\n return node;\n },\n\n removeChild(node) {\n array.splice(array.indexOf(node.__data__), 1);\n return node;\n }\n };\n}\n\nexport function downloadBlob(blob: Blob, filename: string) {\n let a = document.createElement(\"a\");\n if (navigator[\"msSaveBlob\"]) { // IE10+\n a = null;\n return navigator[\"msSaveBlob\"](blob, filename);\n } else if (\"download\" in a) { // html 5\n a.href = URL.createObjectURL(blob);\n a.setAttribute(\"download\", filename);\n document.body.appendChild(a);\n setTimeout(function () {\n a.click();\n document.body.removeChild(a);\n }, 10);\n return true;\n }\n}\n\nexport function timestamp() {\n const currentdate = new Date();\n const timeFormat = d3TimeFormat(\"%Y-%m-%dT%H_%M_%S\");\n return timeFormat(currentdate);\n}\n\nexport function downloadString(format: \"CSV\" | \"TSV\" | \"JSON\" | \"TEXT\" | \"SVG\", blob: string, id?: string) {\n const filename = id || (\"data_\" + timestamp()) + \".\" + format.toLowerCase();\n\n let mimeType = \"\";\n switch (format) {\n case \"TSV\":\n mimeType = \"text/tab-seperated-values\";\n break;\n case \"JSON\":\n mimeType = \"application/json\";\n break;\n case \"SVG\":\n mimeType = \"image/svg+xml\";\n break;\n case \"CSV\":\n case \"TEXT\":\n default:\n mimeType = \"text/csv\";\n }\n downloadBlob(new Blob([blob], { type: mimeType }), filename);\n}\n\nexport function widgetPath(classID) {\n return \"../\" + classID.split(\"_\").join(\"/\");\n}\n\nexport function parseClassID(classID, prefix = \"..\") {\n const parts = classID.split(\".\");\n const classParts = parts[0].split(\"_\");\n return {\n package: `@hpcc-js/${classParts[0]}`,\n path: prefix + \"/\" + parts[0].split(\"_\").join(\"/\"),\n widgetID: classParts.length > 1 ? classParts[1] : null,\n memberWidgetID: parts.length > 1 ? parts[1] : null\n };\n}\n\nexport function checksum(s) {\n if (s instanceof Array) {\n s = s.join(\"\") + s.length;\n }\n switch (typeof s) {\n case \"string\":\n break;\n default:\n s = \"\" + s;\n }\n let chk = 0x12345678;\n for (let i = 0, l = s.length; i < l; ++i) {\n chk += (s.charCodeAt(i) * (i + 1));\n }\n return (chk & 0xffffffff).toString(16);\n}\nexport function getTime() {\n return (now && now.call(perf)) || (new Date().getTime());\n}\nexport function mixin(dest, _sources) {\n dest = dest || {};\n for (let i = 1, l = arguments.length; i < l; i++) {\n _mixin(dest, arguments[i]);\n }\n return dest;\n}\n\nfunction _mixin(dest, source) {\n let s;\n const empty = {};\n for (const key in source) {\n s = source[key];\n if (!(key in dest) || (dest[key] !== s && (!(key in empty) || empty[key] !== s))) {\n dest[key] = s;\n }\n }\n return dest;\n}\n\nexport function exists(prop, scope) {\n if (!prop || !scope) {\n return false;\n }\n const propParts = prop.split(\".\");\n let testScope = scope;\n for (let i = 0; i < propParts.length; ++i) {\n const item = propParts[i];\n if (testScope[item] === undefined) {\n return false;\n }\n testScope = testScope[item];\n }\n return true;\n}\n\nexport function logStringify(obj) {\n const cache = [];\n return JSON.stringify(obj, function (_key, value) {\n if (typeof value === \"object\" && value !== null) {\n if (cache.indexOf(value) !== -1) {\n return;\n }\n\n cache.push(value);\n }\n return value;\n });\n}\n\nexport function debounce(func, threshold = 100, execAsap = false) {\n return function debounced(..._dummyArgs) {\n const obj = this || {};\n const args = arguments;\n function delayed() {\n if (!execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = null;\n }\n if (obj.__hpcc_debounce_timeout)\n clearTimeout(obj.__hpcc_debounce_timeout);\n else if (execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = setTimeout(delayed, threshold);\n };\n}\n\nexport function parseVersionString(versionString) {\n const _sp = versionString.split(\".\");\n return {\n major: parseInt(_sp[0].replace(\"v\", \"\")),\n minor: parseInt(_sp[1]),\n patch: parseInt(_sp[2].split(\"-\")[0])\n };\n}\n\nexport type TextSize = { width: number; height: number; };\nlet g_fontSizeContext: CanvasRenderingContext2D;\nconst g_fontSizeContextCache: { [key: string]: TextSize } = {};\n\nexport function textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n g_fontSizeContext = globalCanvasContext();\n const text = _text instanceof Array ? _text : [_text];\n const hash = `${bold}::${fontSize}::${fontName}::${text.join(\"::\")}`;\n let retVal = g_fontSizeContextCache[hash];\n if (!retVal) {\n retVal = { width: 0, height: 0 };\n g_fontSizeContext.font = `${bold ? \"bold \" : \"\"}${fontSize}px ${fontName}`;\n text.forEach(line => {\n const textMeasurement = g_fontSizeContext.measureText(\"\" + line);\n const width = textMeasurement.width;\n const height = (textMeasurement.fontBoundingBoxDescent + textMeasurement.fontBoundingBoxAscent) * text.length;\n g_fontSizeContextCache[hash] = retVal = {\n width: width > retVal.width ? width : retVal.width,\n height: height > retVal.height ? height : retVal.height\n };\n });\n }\n return retVal;\n}\n\nexport type TextRect = { width: number; height: number; top: number; right: number; bottom: number; left: number; };\nlet g_fontCanvas;\nconst g_fontRectContextCache: { [key: string]: TextRect } = {};\nexport function textRect(text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n // This function is relatively expensive and should be used conservatively\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = globalCanvasContext();\n const hash = `${bold}::${fontSize}::${fontName}::${text}`;\n let retVal = g_fontRectContextCache[hash];\n if (!retVal) {\n const font = `${bold ? \"bold \" : \"\"}${fontSize}px '${fontName}'`;\n g_fontSizeContext.font = font;\n const m = g_fontSizeContext.measureText(text);\n const w = g_fontCanvas.width = Math.ceil(m.width);\n const h = g_fontCanvas.height = fontSize * 1.5;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n g_fontSizeContext.font = font;\n g_fontSizeContext.fillStyle = \"black\";\n g_fontSizeContext.textAlign = \"start\";\n g_fontSizeContext.textBaseline = \"top\";\n g_fontSizeContext.fillText(text, 0, 0);\n\n let top, right, bottom, left = 0;\n if (w > 0) {\n const data = g_fontSizeContext.getImageData(0, 0, w, h).data;\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const i = (x + y * w) * 4;\n if (data[i + 3] !== 0) {\n if (top === undefined) {\n top = y;\n }\n if (left === undefined || left > x) {\n left = x;\n }\n if (right === undefined || right < x) {\n right = x;\n }\n bottom = y;\n }\n }\n }\n }\n retVal = {\n width: right - left + 1,\n height: bottom - top + 1,\n top,\n right,\n bottom,\n left\n };\n g_fontRectContextCache[hash] = retVal;\n }\n return retVal;\n}\n\nfunction globalCanvasElement() {\n if (!g_fontCanvas) {\n g_fontCanvas = document.getElementById(\"hpcc_js_font_size\");\n if (!g_fontCanvas) {\n g_fontCanvas = document.createElement(\"canvas\");\n g_fontCanvas.id = \"hpcc_js_font_size\";\n document.body.appendChild(g_fontCanvas);\n }\n }\n return g_fontCanvas;\n}\n\nfunction globalCanvasContext() {\n if (!g_fontSizeContext) {\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = (g_fontCanvas as HTMLCanvasElement).getContext(\"2d\");\n }\n return g_fontSizeContext;\n}\n\nexport function safeRaise(domNode: Element) {\n const target = domNode;\n let nextSibling = target.nextSibling;\n while (nextSibling) {\n target.parentNode.insertBefore(nextSibling, target);\n nextSibling = target.nextSibling;\n }\n}\n","import { deviation as d3Deviation, max as d3Max, mean as d3Mean, median as d3Median, min as d3Min, sum as d3Sum, variance as d3Variance } from \"d3-array\";\nimport { map as d3Map, nest as d3Nest } from \"d3-collection\";\nimport { csvFormatRows as d3CsvFormatRows, csvParse as d3CsvParse, tsvFormatRows as d3TsvFormatRows, tsvParse as d3TsvParse } from \"d3-dsv\";\nimport { format as d3Format } from \"d3-format\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { PropertyExt } from \"./PropertyExt\";\nimport * as Utility from \"./Utility\";\n\nconst d3Aggr = {\n min: d3Min,\n max: d3Max,\n mean: d3Mean,\n median: d3Median,\n variance: d3Variance,\n deviation: d3Deviation,\n sum: d3Sum\n};\n\nlet lastFoundFormat = null;\n\nexport interface INestedColumn {\n label: string;\n columns: Array<string | INestedColumn>;\n}\n\n// Field ---\nexport type FieldType = \"string\" | \"number\" | \"boolean\" | \"date\" | \"time\" | \"hidden\" | \"nested\";\n\nexport class Field extends PropertyExt {\n private _owner: Grid;\n idx: number;\n protected _children: Field[] = [];\n\n constructor(id?) {\n super();\n\n this._id = id || this._id;\n }\n\n owner(): Grid;\n owner(_: Grid): this;\n owner(_?: Grid): Grid | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n checksum(): string {\n return Utility.checksum(this.label() + this.type() + this.mask() + this.format());\n }\n\n typeTransformer(_: any) {\n switch (this.type()) {\n case \"number\":\n return Number(_);\n case \"string\":\n return String(_);\n case \"boolean\":\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n case \"time\":\n case \"date\":\n return this.maskTransformer(_);\n }\n return _;\n }\n\n maskTransformer(_) {\n return this.formatter(this.mask()).parse(String(_));\n }\n\n formatTransformer(_) {\n return this.formatter(this.format())(_);\n }\n\n parse(_) {\n if (!_) {\n return _;\n }\n try {\n return this.typeTransformer(_);\n } catch (e) {\n console.warn(\"Unable to parse: \" + _);\n return null;\n }\n }\n\n transform(_) {\n if (!_) {\n return _;\n }\n try {\n return this.formatTransformer(this.typeTransformer(_));\n } catch (e) {\n console.warn(\"Unable to transform: \" + _);\n return null;\n }\n }\n\n clone() {\n const context = this;\n const retVal = new Field(this._id);\n cloneProp(retVal, \"label\");\n cloneProp(retVal, \"type\");\n cloneProp(retVal, \"mask\");\n cloneProp(retVal, \"format\");\n\n function cloneProp(dest, key) {\n dest[key + \"_default\"](context[key + \"_default\"]());\n if (context[key + \"_exists\"]()) {\n dest[key](context[key]());\n }\n }\n return retVal;\n }\n\n formatter(format) {\n let retVal;\n if (!format) {\n retVal = function (_) {\n return _;\n };\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n switch (this.type()) {\n case \"time\":\n case \"date\":\n return d3TimeFormat(format);\n }\n retVal = d3Format(format);\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n\n children(): Field[];\n children(_: Array<string | INestedColumn | Field>, asDefault?: boolean): this;\n children(_?: Array<string | INestedColumn | Field>, asDefault?: boolean): Field[] | this {\n if (_ === void 0) return this._children;\n this.type(\"nested\");\n const fieldsArr = this._children;\n this._children = _.map((field: string | INestedColumn | Field, idx): Field => {\n if (field instanceof Field) {\n fieldsArr[idx] = field;\n return field;\n } else if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns) as Field\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns) as Field\n ;\n }\n }\n }, this);\n return this;\n }\n\n label_default: { (): string; (x: string): Field; };\n label: { (): string; (x: string): Field; };\n mask: { (): string; (x: string): Field; };\n format: { (): string; (x: string): Field; };\n}\nField.prototype._class += \" common_Database.Field\";\n\nexport interface Field {\n type(): FieldType;\n type(_: FieldType): this;\n}\n\nField.prototype.publish(\"label\", \"\", \"string\", \"Label\", null, { optional: true });\nField.prototype.publish(\"type\", \"\", \"set\", \"Type\", [\"\", \"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\"], { optional: true });\nField.prototype.publish(\"mask\", \"\", \"string\", \"Time Mask\", null, { disable: (w: any) => w.type() !== \"time\", optional: true });\nField.prototype.publish(\"format\", \"\", \"string\", \"Format\", null, { optional: true });\n\n// Grid ---\nexport class Grid extends PropertyExt {\n _dataChecksum: boolean;\n _dataVersion: number;\n\n private _data = [];\n private _dataChecksums = [];\n\n constructor(dataChecksum?) {\n super();\n dataChecksum = dataChecksum || false;\n this._dataChecksum = dataChecksum;\n this._dataVersion = 0;\n this.clear();\n }\n\n clear() {\n this.fields([]);\n this._data = [];\n this._dataChecksums = [];\n ++this._dataVersion;\n return this;\n }\n\n // Backward compatability ---\n resetColumns() {\n const fields = this.fields() as Field[];\n this.legacyColumns([]);\n this.legacyColumns(fields.map(function (field) {\n return field.label();\n }));\n }\n\n legacyColumns(_?, asDefault?): any | Grid {\n if (!arguments.length) return this.row(0);\n this.row(0, _, asDefault);\n return this;\n }\n\n legacyData(_?, _clone?) {\n return Grid.prototype.data.apply(this, arguments);\n }\n\n // Meta ---\n schema() {\n }\n\n field(idx) {\n return this.fields()[idx];\n }\n\n fieldByLabel(_, ignoreCase?) {\n return this.fields().filter(function (field: Field, idx) {\n field.idx = idx;\n return ignoreCase ? field.label().toLowerCase() === _.toLowerCase() : field.label() === _;\n })[0];\n }\n\n data(_?, clone?): any | Grid {\n if (!arguments.length) return this._data;\n this._data = clone ? _.map(function (d) { return d.map(function (d2) { return d2; }); }) : _;\n this._dataCalcChecksum();\n return this;\n }\n\n parsedData() {\n const context = this;\n return this._data.map(function (row) {\n return row.map(function (cell, idx) {\n return context.fields()[idx].parse(cell);\n });\n });\n }\n\n formattedData() {\n return this._data.map(row => {\n return this.fields().map((field, idx) => {\n return field.transform(row[idx]);\n });\n });\n }\n\n fieldsChecksum() {\n return Utility.checksum(this.fields().map(function (field) { return field.checksum(); }));\n }\n\n dataChecksum() {\n return Utility.checksum(this._dataChecksum ? this._dataChecksums : this._dataVersion);\n }\n\n checksum() {\n return Utility.checksum([this.dataChecksum(), this.fieldsChecksum()]);\n }\n\n // Row Access ---\n private _dataCalcChecksum(idx?) {\n ++this._dataVersion;\n if (this._dataChecksum) {\n if (arguments.length) {\n this._dataChecksums[idx] = Utility.checksum(this._data[idx]);\n } else {\n this._dataChecksums = this._data.map(function (row) { return Utility.checksum(row); });\n }\n }\n return this;\n }\n\n row(row?, _?, asDefault?): any | Grid {\n if (arguments.length < 2) return row === 0 ? this.fields().map(function (d) { return d.label(); }) : this._data[row - 1];\n if (row === 0) {\n const fieldsArr = this.fields();\n this.fields(_.map(function (field: string | INestedColumn, idx) {\n if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns)\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns)\n ;\n }\n }\n }, this));\n } else {\n this._data[row - 1] = _;\n this._dataCalcChecksum(row - 1);\n }\n return this;\n }\n\n rows(_?): any | Grid {\n if (!arguments.length) return [this.row(0)].concat(this._data);\n this.row(0, _[0]);\n this._data = _.filter(function (_row, idx) { return idx > 0; });\n this._dataCalcChecksum();\n return this;\n }\n\n // Column Access ---\n column(col, _?): any | Grid {\n if (arguments.length < 2) return [this.fields()[col].label()].concat(this._data.map(function (row, _idx) { return row[col]; }));\n _.forEach(function (d, idx) {\n if (idx === 0) {\n this.fields()[col] = new Field().label(_[0]);\n } else {\n this._data[idx - 1][col] = d;\n this._dataCalcChecksum(idx - 1);\n }\n }, this);\n return this;\n }\n\n columnData(col, _): any | Grid {\n if (arguments.length < 2) return this._data.map(function (row, _idx) { return row[col]; });\n _.forEach(function (d, idx) {\n this._data[idx][col] = d;\n this._dataCalcChecksum(idx);\n }, this);\n return this;\n }\n\n columns(_?): any | Grid {\n if (!arguments.length) return this.fields().map(function (_col, idx) {\n return this.column(idx);\n }, this);\n _.forEach(function (_col, idx) {\n this.column(idx, _[idx]);\n }, this);\n return this;\n }\n\n // Cell Access ---\n cell(row, col, _) {\n if (arguments.length < 3) return this.row(row)[col];\n if (row === 0) {\n this.fields()[col] = new Field().label(_);\n } else {\n this._data[row][col] = _;\n this._dataCalcChecksum(row);\n }\n return this;\n }\n\n // Grid Access ---\n grid(_?) {\n return Grid.prototype.rows.apply(this, arguments);\n }\n\n // Hipie Helpers ---\n\n hipieMappings(columns, missingDataString) {\n missingDataString = missingDataString || \"\";\n if (!this.fields().length || !this._data.length) {\n return [];\n }\n const mappedColumns = [];\n let hasRollup = false;\n columns.forEach(function (mapping, idx) {\n const mappedColumn = {\n groupby: false,\n func: \"\",\n params: []\n };\n if (mapping.hasFunction()) {\n mappedColumn.func = mapping.function();\n if (mappedColumn.func === \"SCALE\") {\n mappedColumn.groupby = true;\n } else {\n hasRollup = true;\n }\n\n mapping.params().forEach(function (param) {\n const field = this.fieldByLabel(param, true);\n mappedColumn.params.push(field ? field.idx : -1);\n }, this);\n } else {\n mappedColumn.groupby = true;\n const field = this.fieldByLabel(mapping.id(), true);\n mappedColumn.params.push(field ? field.idx : -1);\n }\n mappedColumns.push(mappedColumn);\n }, this);\n\n if (hasRollup) {\n const retVal = [];\n this.rollup(mappedColumns.filter(function (mappedColumn) {\n return mappedColumn.groupby === true;\n }).map(function (d) {\n return d.params[0];\n }), function (leaves) {\n const row = mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SUM\":\n return d3Sum(leaves, function (d) { return d[param1]; });\n case \"AVE\":\n return d3Mean(leaves, function (d) { return d[param1] / d[param2]; });\n case \"MIN\":\n return d3Min(leaves, function (d) { return d[param1]; });\n case \"MAX\":\n return d3Max(leaves, function (d) { return d[param1]; });\n case \"SCALE\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n // All leaves should have the same values, use mean just in case they don't?\n return d3Mean(leaves, function (d) { return d[param1] / +param2; });\n }\n // All leaves should have the same value.\n return leaves[0][param1];\n });\n retVal.push(row);\n return row;\n });\n return retVal;\n } else {\n return this._data.map(function (row) {\n return mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SCALE\":\n return row[param1] / +param2;\n case \"SUM\":\n case \"AVE\":\n case \"MIN\":\n case \"MAX\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n }\n return row[param1];\n });\n });\n }\n }\n\n legacyView() {\n return new LegacyView(this);\n }\n\n nestView(columnIndicies) {\n return new RollupView(this, columnIndicies);\n }\n\n rollupView(columnIndicies, rollupFunc?) {\n return new RollupView(this, columnIndicies, rollupFunc);\n }\n\n aggregateView(columnIndicies, aggrType, aggrColumn, aggrDeltaColumn = \"\") {\n const context = this;\n return new RollupView(this, columnIndicies, function (values) {\n switch (aggrType) {\n case null:\n case undefined:\n case \"\":\n values.aggregate = values.length;\n return values;\n default:\n const columns = context.legacyColumns();\n const colIdx = columns.indexOf(aggrColumn);\n const deltaIdx = columns.indexOf(aggrDeltaColumn);\n values.aggregate = d3Aggr[aggrType](values, function (value) {\n return (+value[colIdx] - (deltaIdx >= 0 ? +value[deltaIdx] : 0)) / (deltaIdx >= 0 ? +value[deltaIdx] : 1);\n });\n return values;\n }\n });\n }\n\n // Nesting ---\n private _nest(columnIndicies, _rollup?) {\n if (!(columnIndicies instanceof Array)) {\n columnIndicies = [columnIndicies];\n }\n const nest = d3Nest();\n columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n return nest;\n }\n\n nest(columnIndicies) {\n return this._nest(columnIndicies)\n .entries(this._data)\n ;\n }\n\n rollup(columnIndicies, rollup) {\n return this._nest(columnIndicies)\n .rollup(rollup)\n .entries(this._data)\n ;\n }\n\n // Util ---\n length() {\n return this._data.length + 1;\n }\n\n width() {\n return this.fields().length;\n }\n\n pivot() {\n this.resetColumns();\n this.rows(this.columns());\n return this;\n }\n\n clone(deep) {\n return new Grid()\n .fields(this.fields(), deep)\n .data(this.data(), deep)\n ;\n }\n\n filter(filter) {\n const filterIdx = {};\n this.row(0).forEach(function (col, idx) {\n filterIdx[col] = idx;\n });\n return new Grid()\n .fields(this.fields(), true)\n .data(this.data().filter(function (row) {\n for (const key in filter) {\n if (filter[key] !== row[filterIdx[key]]) {\n return false;\n }\n }\n return true;\n }))\n ;\n }\n\n analyse(columns) {\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n const retVal = [];\n columns.forEach(function (col) {\n const rollup = this.rollup(col, function (leaves) {\n return leaves.length;\n });\n retVal.push(rollup);\n const keys = rollup.map(function (d) { return d.key; });\n this.fields()[col].isBoolean = typeTest(keys, isBoolean);\n this.fields()[col].isNumber = typeTest(keys, isNumber);\n this.fields()[col].isString = !this.fields()[col].isNumber && typeTest(keys, isString);\n this.fields()[col].isUSState = this.fields()[col].isString && typeTest(keys, isUSState);\n this.fields()[col].isDateTime = this.fields()[col].isString && typeTest(keys, isDateTime);\n this.fields()[col].isDateTimeFormat = lastFoundFormat;\n this.fields()[col].isDate = !this.fields()[col].isDateTime && typeTest(keys, isDate);\n this.fields()[col].isDateFormat = lastFoundFormat;\n this.fields()[col].isTime = this.fields()[col].isString && !this.fields()[col].isDateTime && !this.fields()[col].isDate && typeTest(keys, isTime);\n this.fields()[col].isTimeFormat = lastFoundFormat;\n }, this);\n return retVal;\n }\n\n // Import/Export ---\n jsonObj(_?): any | Grid {\n if (!arguments.length) return this._data.map(function (row) {\n const retVal = {};\n this.row(0).forEach(function (col, idx) {\n retVal[col] = row[idx];\n });\n return retVal;\n }, this);\n this.clear();\n this.data(_.map(function (row) {\n const retVal = [];\n for (const key in row) {\n let colIdx = this.row(0).indexOf(key);\n if (colIdx < 0) {\n colIdx = this.fields().length;\n this.fields().push(new Field().label(key));\n }\n retVal[colIdx] = row[key];\n }\n return retVal;\n }, this));\n return this;\n }\n\n json(_: string | object): this;\n json(): string;\n json(_?: string | object): string | this {\n if (!arguments.length) return JSON.stringify(this.jsonObj(), null, \" \");\n if (typeof (_) === \"string\") {\n _ = JSON.parse(_);\n }\n this.jsonObj(_);\n return this;\n }\n\n csv(_: string): this;\n csv(): string;\n csv(_?: string): string | this {\n if (!arguments.length) {\n const temp = document.createElement(\"div\");\n return d3CsvFormatRows(this.grid().map(row => {\n return row.map(cell => {\n return Utility.removeHTMLFromString(cell, temp);\n });\n }));\n }\n this.jsonObj(d3CsvParse(_));\n return this;\n }\n\n tsv(_: string): this;\n tsv(): string;\n tsv(_?: string): string | this {\n if (!arguments.length) return d3TsvFormatRows(this.grid());\n this.jsonObj(d3TsvParse(_));\n return this;\n }\n}\nGrid.prototype._class += \" common_Database.Grid\";\nexport interface Grid {\n fields(): Field[];\n fields(_: Field[], clone?: boolean): this;\n}\n\nGrid.prototype.publish(\"fields\", [], \"propertyArray\", \"Fields\");\nconst fieldsOrig = Grid.prototype.fields;\nGrid.prototype.fields = function (_?, clone?) {\n if (!arguments.length) return fieldsOrig.apply(this, arguments);\n return fieldsOrig.call(this, clone ? _.map(function (d) { return d.clone(); }) : _);\n};\n\n// Views ---\nexport class LegacyView {\n _grid;\n _parsedData;\n _parsedDataChecksum;\n _formattedData;\n _formattedDataChecksum;\n\n constructor(grid) {\n this._grid = grid;\n }\n\n checksum() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n fields() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n grid() {\n return this._grid;\n }\n columns(_?) {\n if (!arguments.length) return this._grid.legacyColumns();\n this._grid.legacyColumns(_);\n return this;\n }\n rawData(_?) {\n if (!arguments.length) return this._grid.legacyData();\n this._grid.legacyData(_);\n return this;\n }\n formattedData() {\n if (this._formattedDataChecksum !== this._grid.checksum()) {\n this._formattedDataChecksum = this._grid.checksum();\n this._formattedData = this._grid.formattedData();\n }\n return this._formattedData;\n }\n parsedData() {\n if (this._parsedDataChecksum !== this._grid.checksum()) {\n this._parsedDataChecksum = this._grid.checksum();\n this._parsedData = this._grid.parsedData();\n }\n return this._parsedData;\n }\n protected _whichData(opts?) {\n if (opts) {\n if (opts.parsed) {\n return this.formattedData();\n } else if (opts.formatted) {\n return this.formattedData();\n }\n }\n return this.rawData();\n }\n data(_) {\n return LegacyView.prototype.rawData.apply(this, arguments);\n }\n}\n\nexport class RollupView extends LegacyView {\n _columnIndicies;\n _rollup;\n _nestChecksum;\n _nest;\n\n constructor(grid, columns, rollup?) {\n super(grid);\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n this._columnIndicies = columns.filter(function (column) { return column; }).map(function (column) {\n switch (typeof column) {\n case \"string\":\n return this._grid.fieldByLabel(column).idx;\n }\n return column;\n }, this);\n\n rollup = rollup || function (d) { return d; };\n this._rollup = rollup;\n }\n\n nest() {\n if (this._nestChecksum !== this._grid.checksum()) {\n this._nestChecksum = this._grid.checksum();\n\n const nest = d3Nest();\n this._columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n this._nest = nest\n .rollup(this._rollup)\n ;\n }\n return this._nest;\n }\n entries(opts?) {\n return this.nest().entries(this._whichData(opts));\n }\n map(opts) {\n return this.nest().map(this._whichData(opts));\n }\n d3Map(opts) {\n return this.nest().map(this._whichData(opts), d3Map);\n }\n _walkData(entries, prevRow = []) {\n let retVal = [];\n entries.forEach(function (entry) {\n if (entry instanceof Array) {\n retVal.push(prevRow.concat([entry]));\n } else if (entry.values instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.values, prevRow.concat([entry.key])));\n } else if (entry.value instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.value, prevRow.concat([entry.key])));\n }\n }, this);\n return retVal;\n }\n data(opts) {\n return this._walkData(this.entries(opts));\n }\n}\n\n// --- --- ---\nfunction typeTest(cells, test) {\n if (!(cells instanceof Array)) {\n cells = [cells];\n }\n return cells.filter(function (d) { return d !== \"\"; }).every(test);\n}\nfunction isBoolean(cell) {\n return typeof cell === \"boolean\";\n}\nfunction isNumber(cell) {\n return typeof cell === \"number\" || !isNaN(cell);\n}\nfunction isString(cell) {\n return typeof cell === \"string\";\n}\nconst dateTimeFormats = [\n];\nconst dateFormats = [\n \"%Y-%m-%d\",\n \"%Y%m%d\"\n];\nconst timeFormats = [\n \"%H:%M:%S.%LZ\",\n \"%H:%M:%SZ\",\n \"%H:%M:%S\"\n];\ndateFormats.forEach(function (d) {\n timeFormats.forEach(function (t) {\n dateTimeFormats.push(d + \"T\" + t);\n });\n});\nfunction formatPicker(formats, cell) {\n for (let i = 0; i < formats.length; ++i) {\n const date = d3TimeParse(formats[i])(cell);\n if (date) {\n lastFoundFormat = formats[i];\n return formats[i];\n }\n }\n return null;\n}\nfunction isDateTime(cell) {\n return formatPicker(dateTimeFormats, cell);\n}\nfunction isDate(cell) {\n return formatPicker(dateFormats, cell);\n}\nfunction isTime(cell) {\n return formatPicker(timeFormats, cell);\n}\nfunction isUSState(cell) {\n return [\"AL\", \"AK\", \"AZ\", \"AR\", \"CA\", \"CO\", \"CT\", \"DE\", \"FL\", \"GA\", \"HI\", \"ID\", \"IL\", \"IN\", \"IA\", \"KS\", \"KY\", \"LA\", \"ME\", \"MD\", \"MA\", \"MI\", \"MN\", \"MS\", \"MO\", \"MT\", \"NE\", \"NV\", \"NH\", \"NJ\", \"NM\", \"NY\", \"NC\", \"ND\", \"OH\", \"OK\", \"OR\", \"PA\", \"RI\", \"SC\", \"SD\", \"TN\", \"TX\", \"UT\", \"VT\", \"VA\", \"WA\", \"WV\", \"WI\", \"WY\", \"AS\", \"DC\", \"FM\", \"GU\", \"MH\", \"MP\", \"PW\", \"PR\", \"VI\"].indexOf(String(cell).toUpperCase()) >= 0;\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Field, Grid } from \"./Database\";\nimport { } from \"./Platform\";\nimport { PropertyExt } from \"./PropertyExt\";\nimport { debounce, textRect, TextRect, textSize, TextSize } from \"./Utility\";\n\nimport \"../src/Widget.css\";\n\nexport type IPrimative = boolean | number | string | object;\nexport type IFieldType = \"boolean\" | \"number\" | \"string\" | \"dataset\" | \"object\" | \"any\";\nexport interface InputField {\n id: string;\n type: IFieldType;\n multi?: boolean;\n default?: IPrimative | InputField[];\n children?: InputField[];\n}\n\nexport interface IPos {\n x: number;\n y: number;\n}\n\nexport interface ISize {\n width: number;\n height: number;\n}\n\nexport interface BBox {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface DataMetaT {\n min?: number;\n max?: number;\n mean?: number;\n stdDev?: number;\n sum?: number;\n}\n\nlet widgetID = 0;\nexport abstract class Widget extends PropertyExt {\n _idSeed: string;\n\n protected _tag: string;\n protected _isRootNode: boolean = true;\n\n protected _db = new Grid();\n protected _pos;\n protected _prevPos;\n protected _size;\n protected _widgetScale;\n protected _visible;\n protected _display;\n protected _dataMeta: DataMetaT = {};\n\n protected _target: null | HTMLElement | SVGElement;\n protected _placeholderElement;\n protected _parentWidget;\n\n protected _element;\n\n protected _renderCount;\n\n protected _overlayElement;\n\n constructor() {\n super();\n this._class = Object.getPrototypeOf(this)._class;\n this._id = this._idSeed + widgetID++;\n\n this._db = new Grid();\n this._pos = { x: 0, y: 0 };\n this._size = { width: 0, height: 0 };\n this._widgetScale = 1;\n this._visible = true;\n\n this._target = null;\n this._placeholderElement = null;\n this._parentWidget = null;\n\n this._element = d3Select(null);\n\n this._renderCount = 0;\n\n if ((window as any).__hpcc_debug) {\n if ((window as any).g_all === undefined) {\n (window as any).g_all = {};\n }\n (window as any).g_all[this._id] = this;\n }\n if ((window as any).__hpcc_theme) {\n this.applyTheme((window as any).__hpcc_theme);\n }\n }\n\n columnChecksum() {\n return this._db.fieldsChecksum();\n }\n\n dataChecksum() {\n return this._db.dataChecksum();\n }\n\n importJSON(_: string | object): this {\n this._db.json(_);\n return this;\n }\n\n importCSV(_: string): this {\n this._db.csv(_);\n return this;\n }\n\n importTSV(_: string): this {\n this._db.tsv(_);\n return this;\n }\n\n export(_: \"JSON\" | \"CSV\" | \"TSV\" = \"JSON\") {\n switch (_) {\n case \"CSV\":\n return this._db.csv();\n case \"TSV\":\n return this._db.tsv();\n case \"JSON\":\n default:\n return this._db.json();\n }\n }\n\n leakCheck(newNode) {\n const context = this;\n const watchArray = [newNode];\n const destructObserver = new MutationObserver(function (mutations) {\n let leaks = false;\n mutations.forEach(function (mutation) {\n for (let i = 0; i < mutation.removedNodes.length; ++i) {\n const node = mutation.removedNodes.item(i);\n if (watchArray.indexOf(node) >= 0 && context._target) {\n leaks = true;\n destructObserver.disconnect();\n }\n }\n });\n if (leaks) {\n console.error(\"leak: \" + context.id() + \" - \" + context.classID() + \"\\t\\twidget.target(null); was not called for this widget before it was removed from the page.\");\n }\n });\n let pNode = newNode.parentNode;\n while (pNode) {\n destructObserver.observe(pNode, { childList: true });\n watchArray.push(pNode);\n pNode = pNode.parentNode;\n }\n }\n\n renderCount(): number {\n return this._renderCount;\n }\n\n // Implementation ---\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._db.legacyColumns();\n this._db.legacyColumns(_, asDefault);\n return this;\n }\n\n protected columnIdx(column: string): number {\n return this.columns().indexOf(column);\n }\n\n protected cellIdxFunc<T>(colIdx: number, defValue?: T): (row: any) => T {\n return colIdx < 0 ? () => defValue : row => row[colIdx];\n }\n\n protected cellFunc<T>(column: string, defValue?: T): (row: any) => T {\n return this.cellIdxFunc<T>(this.columnIdx(column), defValue);\n }\n\n parsedData() {\n return this._db.parsedData();\n }\n\n formattedData() {\n return this._db.formattedData();\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return this._db.legacyData();\n this._db.legacyData(_);\n return this;\n }\n\n cloneData() {\n return this.data().map(function (row) { return row.slice(0); });\n }\n\n flattenData(columns: string[] = this.columns(), data: any = this.data()) {\n const retVal = [];\n data.forEach(function (row, rowIdx) {\n columns.filter(function (_col, idx) { return idx > 0; }).forEach(function (_col, idx) {\n const val = row[idx + 1];\n if (typeof val !== \"undefined\") {\n const newItem = {\n rowIdx,\n colIdx: idx + 1,\n label: row[0],\n value: val\n };\n retVal.push(newItem);\n }\n }, this);\n }, this);\n return retVal;\n }\n\n rowToObj(row: any[]): object {\n if (!row) return {};\n const retVal: any = {};\n this.fields().forEach(function (field, idx) {\n retVal[field.label_default() || field.label()] = row[idx];\n });\n if (row.length === this.columns().length + 1) {\n retVal.__lparam = row[this.columns().length];\n }\n return retVal;\n }\n\n pos(): IPos;\n pos(_: IPos): this;\n pos(_?: IPos): IPos | this {\n if (!arguments.length) return this._pos;\n this._pos = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n x(): number;\n x(_): this;\n x(_?): number | this {\n if (!arguments.length) return this._pos.x;\n this.pos({ x: _, y: this._pos.y });\n return this;\n }\n\n y(): number;\n y(_): this;\n y(_?): number | this {\n if (!arguments.length) return this._pos.y;\n this.pos({ x: this._pos.x, y: _ });\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n if (!arguments.length) return this._size;\n this._size = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"width\", _.width)\n .attr(\"height\", _.height)\n ;\n }\n return this;\n }\n\n width(): number;\n width(_): this;\n width(_?): number | this {\n if (!arguments.length) return this._size.width;\n this.size({ width: _, height: this._size.height });\n return this;\n }\n\n height(): number;\n height(_): this;\n height(_?): number | this {\n if (!arguments.length) return this._size.height;\n this.size({ width: this._size.width, height: _ });\n return this;\n }\n\n resize(size?: ISize, delta: ISize = { width: 0, height: 0 }) {\n let width;\n let height;\n if (size && size.width && size.height) {\n width = size.width;\n height = size.height;\n } else {\n const style = window.getComputedStyle(this._target, null);\n width = parseFloat(style.getPropertyValue(\"width\")) - delta.width;\n height = parseFloat(style.getPropertyValue(\"height\")) - delta.height;\n }\n this.size({\n width,\n height\n });\n return this;\n }\n\n scale(): number;\n scale(_): Widget;\n scale(_?): number | Widget {\n if (!arguments.length) return this._widgetScale;\n this._widgetScale = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n visible(): boolean;\n visible(_): this;\n visible(_?): boolean | this {\n if (!arguments.length) return this._visible;\n this._visible = _;\n if (this._element) {\n this._element\n .style(\"visibility\", this._visible ? null : \"hidden\")\n .style(\"opacity\", this._visible ? null : 0)\n ;\n }\n return this;\n }\n\n display(): boolean;\n display(_): this;\n display(_?): boolean | this {\n if (!arguments.length) return this._display;\n this._display = _;\n if (this._element) {\n this._element.style(\"display\", this._display ? null : \"none\");\n }\n return this;\n }\n\n dataMeta(): DataMetaT;\n dataMeta(_): this;\n dataMeta(_?): DataMetaT | this {\n if (!arguments.length) return this._dataMeta;\n this._dataMeta = _;\n return this;\n }\n\n private _appData = new Object({});\n appData(key: string): any;\n appData(key: string, value: any): this;\n appData(key: string, value?: any): any | this {\n if (arguments.length < 2) return this._appData[key];\n this._appData[key] = value;\n return this;\n }\n\n calcSnap(snapSize) {\n function snap(x, gridSize) {\n function snapDelta(x2, gridSize2) {\n let dx = x2 % gridSize2;\n if (Math.abs(dx) > gridSize2 - Math.abs(dx)) {\n dx = (gridSize2 - Math.abs(dx)) * (dx < 0 ? 1 : -1);\n }\n return dx;\n }\n return x - snapDelta(x, gridSize);\n }\n const l = snap(this._pos.x - this._size.width / 2, snapSize);\n const t = snap(this._pos.y - this._size.height / 2, snapSize);\n const r = snap(this._pos.x + this._size.width / 2, snapSize);\n const b = snap(this._pos.y + this._size.height / 2, snapSize);\n const w = r - l;\n const h = b - t;\n return [{ x: l + w / 2, y: t + h / 2 }, { width: w, height: h }];\n }\n\n // DOM/SVG Node Helpers ---\n toWidget(domNode): Widget | null {\n if (!domNode) {\n return null;\n }\n const element = d3Select(domNode);\n if (element) {\n const widget = element.datum();\n if (widget && widget instanceof Widget) {\n return widget;\n }\n }\n return null;\n }\n\n parentOverlay() {\n return null;\n }\n\n locateParentWidget(domNode?): Widget | null {\n domNode = domNode || (this._target ? this._target.parentNode : null);\n if (domNode) {\n const widget = this.toWidget(domNode);\n if (widget) {\n return widget;\n } else if (domNode.parentNode) {\n return this.locateParentWidget(domNode.parentNode);\n }\n }\n return null;\n }\n\n locateSVGNode(domNode): SVGSVGElement | null {\n if (!domNode) {\n return null;\n }\n if (domNode.tagName === \"svg\") {\n return domNode;\n }\n return this.locateSVGNode(domNode.parentNode);\n }\n\n locateOverlayNode() {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n const retVal = widget.parentOverlay();\n if (retVal) {\n return retVal;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n locateAncestor(classID): Widget | null {\n return this.locateClosestAncestor([classID]);\n }\n\n locateClosestAncestor(classIDArr): Widget | null {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n if (classIDArr.indexOf(widget.classID()) !== -1) {\n return widget;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n getAbsolutePos(domNode, w, h) {\n const root = this.locateSVGNode(domNode);\n if (!root) {\n return null;\n }\n let pos = root.createSVGPoint();\n const ctm = domNode.getCTM();\n pos = pos.matrixTransform(ctm);\n const retVal: any = {\n x: pos.x,\n y: pos.y\n };\n if (w !== undefined && h !== undefined) {\n let size = root.createSVGPoint();\n size.x = w;\n size.y = h;\n size = size.matrixTransform(ctm);\n retVal.width = size.x - pos.x;\n retVal.height = size.y - pos.y;\n }\n return retVal;\n }\n\n hasOverlay() {\n return this._overlayElement;\n }\n\n syncOverlay() {\n if (this._size.width && this._size.height) {\n const newPos = this.getAbsolutePos(this._overlayElement.node(), this._size.width, this._size.height);\n if (newPos && (!this._prevPos || newPos.x !== this._prevPos.x || newPos.y !== this._prevPos.y || newPos.width !== this._prevPos.width || newPos.height !== this._prevPos.height)) {\n const xScale = newPos.width / this._size.width;\n const yScale = newPos.height / this._size.height;\n this._placeholderElement\n .style(\"left\", newPos.x - (newPos.width / xScale) / 2 + \"px\")\n .style(\"top\", newPos.y - (newPos.height / yScale) / 2 + \"px\")\n .style(\"width\", newPos.width / xScale + \"px\")\n .style(\"height\", newPos.height / yScale + \"px\")\n ;\n const transform = \"scale(\" + xScale + \",\" + yScale + \")\";\n this._placeholderElement\n .style(\"transform\", transform)\n .style(\"-moz-transform\", transform)\n .style(\"-ms-transform\", transform)\n .style(\"-webkit-transform\", transform)\n .style(\"-o-transform\", transform)\n ;\n }\n this._prevPos = newPos;\n }\n }\n\n getBBox(refresh = false, round = false): BBox {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n return textSize(_text, fontName, fontSize, bold);\n }\n\n textRect(_text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n return textRect(_text, fontName, fontSize, bold);\n }\n\n element() {\n return this._element;\n }\n\n node() {\n return this._element.node();\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n if (!arguments.length) return this._target;\n if (this._target && _) {\n throw new Error(\"Target can only be assigned once.\");\n }\n if (_ === null) {\n this._target = null;\n if (this.renderCount()) {\n this.exit();\n }\n } else if (typeof _ === \"string\") {\n this._target = document.getElementById(_);\n } else if (_ instanceof HTMLElement || _ instanceof SVGElement) {\n this._target = _;\n }\n return this;\n }\n\n isDOMHidden(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n // Note: Will return false for visible===hidden (which is ok as it still takes up space on the page)\n return this._isRootNode && this._placeholderElement.node().offsetParent === null;\n }\n\n hasSize() {\n return !isNaN(this.width()) && !isNaN(this.height());\n }\n\n protected publishedWidgets(): Widget[] {\n let widgets = [];\n this.publishedProperties(true).forEach(function (meta) {\n if (!meta.ext || meta.ext.render !== false) {\n switch (meta.type) {\n case \"widget\":\n const widget = this[meta.id]();\n if (widget) {\n widgets.push(widget);\n }\n break;\n case \"widgetArray\":\n widgets = widgets.concat(this[meta.id]());\n break;\n }\n }\n }, this);\n return widgets;\n }\n\n // Render ---\n private _prevNow = 0;\n render(callback?: (w: Widget) => void) {\n if ((window as any).__hpcc_debug) {\n const now = Date.now();\n if (now - this._prevNow < 500) {\n console.error(\"Double Render: \" + (now - this._prevNow) + \" - \" + this.id() + \" - \" + this.classID());\n }\n this._prevNow = now;\n }\n\n callback = callback || function () { };\n if (!this._placeholderElement || !this.visible() || this.isDOMHidden() || !this.hasSize()) {\n callback(this);\n return this;\n }\n if (this._placeholderElement) {\n if (!this._tag)\n throw new Error(\"No DOM tag specified\");\n\n const elements = this._placeholderElement.selectAll(\"#\" + this._id).data([this], function (d) { return d._id; });\n elements.enter().append(this._tag)\n .classed(this._class, true)\n .attr(\"id\", this._id)\n // .attr(\"opacity\", 0.50) // Uncomment to debug position offsets ---\n .each(function (context2) {\n context2._element = d3Select(this);\n context2.enter(this, context2._element);\n if ((window as any).__hpcc_debug) {\n context2.leakCheck(this);\n }\n })\n .merge(elements)\n .each(function (context2) {\n const element = d3Select(this);\n const classed = context2.classed();\n for (const key in classed) {\n element.classed(key, classed[key]);\n }\n context2.preUpdate(this, context2._element);\n context2.update(this, context2._element);\n context2.postUpdate(this, context2._element);\n })\n ;\n elements.exit()\n .each(function (context2) {\n d3Select(this).datum(null);\n context2.exit(this, context2._element);\n })\n .remove()\n ;\n this._renderCount++;\n }\n\n // ASync Render Contained Widgets ---\n const widgets = this.publishedWidgets();\n\n const context = this;\n switch (widgets.length) {\n case 0:\n callback(this);\n break;\n case 1:\n widgets[0].render(function () {\n callback(context);\n });\n break;\n default:\n let renderCount = widgets.length;\n widgets.forEach(function (widget, _idx) {\n setTimeout(function () {\n widget.render(function () {\n if (--renderCount === 0) {\n callback(context);\n }\n });\n }, 0);\n });\n break;\n }\n return this;\n }\n\n renderPromise(): Promise<Widget> {\n return new Promise((resolve, reject) => {\n this.render((w: Widget) => {\n resolve(w);\n });\n });\n }\n\n private _lazyRender = debounce(function (debouncedCallback?: (w: Widget) => void) {\n this.render(debouncedCallback);\n }, 100);\n\n lazyRender(callback?: (w: Widget) => void): this {\n this._lazyRender(callback);\n return this;\n }\n\n animationFrameRender(): this {\n if (requestAnimationFrame) {\n requestAnimationFrame(() => {\n this.render();\n });\n } else {\n // Not a real replacement for requestAnimationFrame ---\n this.renderPromise();\n }\n return this;\n }\n\n enter(_domNode: HTMLElement, _element) { }\n preUpdate(_domNode: HTMLElement, _element) { }\n update(_domNode: HTMLElement, _element) { }\n postUpdate(_domNode: HTMLElement, _element) { }\n exit(_domNode?: HTMLElement, _element?) {\n this.publishedWidgets().forEach(w => w.target(null));\n }\n}\nWidget.prototype._class += \" common_Widget\";\n\nexport interface Widget {\n fields(): Field[];\n fields(_: Field[]): this;\n classed(classID: string): boolean;\n classed(classID: string, _: boolean): this;\n classed(): { [classID: string]: boolean };\n classed(_: { [classID: string]: boolean }): this;\n}\n\nWidget.prototype._idSeed = \"_w\";\n\nWidget.prototype.publishProxy(\"fields\", \"_db\", \"fields\");\nWidget.prototype.publish(\"classed\", {}, \"object\", \"HTML Classes\", null, { tags: [\"Private\"] });\nconst origClassed = Widget.prototype.classed;\nWidget.prototype.classed = function (this: Widget, str_obj?: string | { [classID: string]: boolean }, _?: boolean) {\n if (typeof str_obj === \"string\") {\n if (arguments.length === 1) return origClassed.call(this)[str_obj];\n const classed = origClassed.call(this);\n origClassed.call(this, { ...classed, [str_obj]: _ });\n return this;\n }\n return origClassed.apply(this, arguments);\n};\n","import { select as d3Select } from \"d3-selection\";\nimport { Widget } from \"./Widget\";\n\nexport class HTMLWidget extends Widget {\n\n private observer;\n protected _drawStartPos: \"origin\" | \"center\";\n protected _boundingBox;\n\n constructor() {\n super();\n\n this._drawStartPos = \"origin\";\n this._tag = \"div\";\n this._boundingBox = null;\n }\n\n calcFrameWidth(element) {\n const retVal = parseFloat(element.style(\"padding-left\")) +\n parseFloat(element.style(\"padding-right\")) +\n parseFloat(element.style(\"margin-left\")) +\n parseFloat(element.style(\"margin-right\")) +\n parseFloat(element.style(\"border-left-width\")) +\n parseFloat(element.style(\"border-right-width\"))\n ;\n return retVal;\n }\n\n calcWidth(element) {\n return parseFloat(element.style(\"width\")) - this.calcFrameWidth(element);\n }\n\n calcFrameHeight(element) {\n const retVal = parseFloat(element.style(\"padding-top\")) +\n parseFloat(element.style(\"padding-bottom\")) +\n parseFloat(element.style(\"margin-top\")) +\n parseFloat(element.style(\"margin-bottom\")) +\n parseFloat(element.style(\"border-top-width\")) +\n parseFloat(element.style(\"border-bottom-width\"))\n ;\n return retVal;\n }\n\n calcHeight(element) {\n return parseFloat(element.style(\"height\")) + this.calcFrameHeight(element);\n }\n\n hasHScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollWidth\") > element.property(\"clientWidth\");\n }\n\n hasVScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollHeight\") > element.property(\"clientHeight\");\n }\n\n clientWidth() {\n return this._size.width - this.calcFrameWidth(this._element);\n }\n\n clientHeight() {\n return this._size.height - this.calcFrameHeight(this._element);\n }\n\n getBBox(refresh = false, round = false) {\n if (refresh || this._boundingBox === null) {\n const domNode = this._element.node() ? this._element.node().firstElementChild : null; // Needs to be first child, as element has its width/height forced onto it.\n if (domNode instanceof Element) {\n const rect = domNode.getBoundingClientRect();\n this._boundingBox = {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n reposition(pos?) {\n // const retVal = super.reposition(pos);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"left\", pos.x + \"px\")\n .style(\"top\", pos.y + \"px\")\n ;\n }\n return this;\n }\n\n resize(size?) {\n const retVal = super.resize(size);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n return retVal;\n }\n\n // Properties ---\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n // Target is a SVG Node, so create an item in the Overlay and force it \"over\" the overlay element (cough) ---\n this._isRootNode = false;\n const overlay = this.locateOverlayNode();\n this._placeholderElement = overlay.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n .style(\"overflow\", \"hidden\")\n ;\n this._overlayElement = d3Select(this._target);\n\n this._prevPos = null;\n this.observer = new MutationObserver(_mutation => {\n this.syncOverlay();\n });\n\n let domNode = this._overlayElement.node();\n while (domNode) {\n this.observer.observe(domNode, { attributes: true });\n domNode = domNode.parentNode;\n }\n } else if (this._target) { // HTMLElement\n this._placeholderElement = d3Select(this._target);\n if (!this._size.width && !this._size.height) {\n const width = parseFloat(this._placeholderElement.style(\"width\"));\n const height = parseFloat(this._placeholderElement.style(\"height\"));\n this.size({\n width,\n height\n });\n }\n this._placeholderElement = d3Select(this._target).append(\"div\");\n }\n }\n return retVal;\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._drawStartPos === \"origin\") {\n this._element\n .style(\"position\", \"relative\")\n .style(\"left\", this._pos.x + \"px\")\n .style(\"top\", this._pos.y + \"px\")\n ;\n } else {\n const bbox = this.getBBox(true);\n this._element\n .style(\"position\", \"relative\")\n .style(\"float\", \"left\")\n .style(\"left\", this._pos.x + (this._size.width - bbox.width) / 2 + \"px\")\n .style(\"top\", this._pos.y + (this._size.height - bbox.height) / 2 + \"px\")\n ;\n }\n }\n\n exit(domNode?, element?) {\n if (this.observer) {\n this.observer.disconnect();\n }\n this._prevPos = null;\n if (this._placeholderElement) {\n this._placeholderElement.remove();\n }\n super.exit(domNode, element);\n }\n}\nHTMLWidget.prototype._class += \" common_HTMLWidget\";\n","import { HTMLWidget } from \"./HTMLWidget\";\n\nexport class CanvasWidget extends HTMLWidget {\n\n _ctx: CanvasRenderingContext2D;\n constructor() {\n super();\n this._tag = \"canvas\";\n }\n\n resize(size) {\n const retVal = super.resize(size);\n try {\n this._element.attr(\"width\", this._size.width);\n this._element.attr(\"height\", this._size.height);\n this.resetContext();\n } catch (e) {\n console.error(e);\n }\n return retVal;\n }\n\n resetContext() {\n this._ctx = this._element.node().getContext(\"2d\");\n }\n\n click(d, c) {\n // console.log(d);\n }\n}\nCanvasWidget.prototype._class += \" common_CanvasWidget\";\n","const _version = \"1.14.2-dev\";\nexport function version() {\n return _version;\n}\n\nexport const ieVersion = (function () {\n const ua = navigator.userAgent;\n let tem;\n const M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return parseFloat(tem[1]);\n }\n if (/msie/i.test(M[1])) {\n return parseFloat(M[2]);\n }\n return null;\n})();\n\nexport const isIE = ieVersion !== null;\nexport const svgMarkerGlitch = isIE && ieVersion <= 12;\n\nlet _scrollBarWidth = null;\nexport function getScrollbarWidth() {\n if (_scrollBarWidth === null) {\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n // @ts-ignore\n outer.style.msOverflowStyle = \"scrollbar\";\n\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = \"scroll\";\n\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode.removeChild(outer);\n\n _scrollBarWidth = widthNoScroll - widthWithScroll;\n }\n return _scrollBarWidth;\n}\n\n// Polyfills ---\n(window as any).MutationObserver = (window as any).MutationObserver || (window as any).WebKitMutationObserver || (window as any).MozMutationObserver || function (callback) {\n // Just enough for HTMLOverlay and C3 ---\n this.callback = callback;\n this.listeners = [];\n\n const MutationListener = function (callback2, domNode, type) {\n this.callback = callback2;\n this.domNode = domNode;\n this.type = type;\n };\n MutationListener.prototype = {\n handleEvent(evt) {\n const mutation = {\n type: this.type,\n target: this.domNode,\n addedNodes: [],\n removedNodes: [],\n previousSibling: evt.target.previousSibling,\n nextSibling: evt.target.nextSibling,\n attributeName: null,\n attributeNamespace: null,\n oldValue: null\n };\n this.callback([mutation]);\n }\n };\n\n this.observe = function (domNode, config) {\n let listener = null;\n if (config.attributes) {\n listener = new MutationListener(this.callback, domNode, \"attributes\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMAttrModified\", listener, true);\n }\n\n if (config.characterData) {\n listener = new MutationListener(this.callback, domNode, \"characterData\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMCharacterDataModified\", listener, true);\n }\n\n if (config.childList) {\n listener = new MutationListener(this.callback, domNode, \"childList\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMNodeInserted\", listener, true);\n domNode.addEventListener(\"DOMNodeRemoved\", listener, true);\n }\n };\n\n this.disconnect = function () {\n this.listeners.forEach(function (item) {\n switch (item.type) {\n case \"attributes\":\n item.domNode.removeEventListener(\"DOMAttrModified\", item, true);\n break;\n case \"characterData\":\n item.domNode.removeEventListener(\"DOMCharacterDataModified\", item, true);\n break;\n case \"childList\":\n item.domNode.removeEventListener(\"DOMNodeRemoved\", item, true);\n item.domNode.removeEventListener(\"DOMNodeInserted\", item, true);\n break;\n }\n });\n this.listeners = [];\n };\n};\n\n(Math as any).sign = (Math as any).sign || function (x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n","import { easeCubicInOut as d3CubicInOut } from \"d3-ease\";\n\nexport class Transition {\n\n protected _widget;\n protected _duration;\n protected _delay;\n protected _ease;\n\n constructor(widget) {\n this._widget = widget;\n this._duration = 250;\n this._delay = 0;\n this._ease = d3CubicInOut;\n }\n\n duration(_) {\n if (!arguments.length) return this._duration;\n this._duration = _;\n return this._widget;\n }\n\n delay(_) {\n if (!arguments.length) return this._delay;\n this._delay = _;\n return this._widget;\n }\n\n ease(_) {\n if (!arguments.length) return this._ease;\n this._ease = _;\n return this._widget;\n }\n\n apply(selection) {\n if (this._duration || this._delay) {\n return selection.transition()\n .duration(this._duration)\n .delay(this._delay)\n .ease(this._ease)\n ;\n }\n return selection;\n }\n}\n","import { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\nimport { fontAwsesomeStyle } from \"./FAChar\";\nimport { svgMarkerGlitch } from \"./Platform\";\nimport { Transition } from \"./Transition\";\nimport { debounce, downloadBlob, downloadString, timestamp } from \"./Utility\";\nimport { ISize, Widget } from \"./Widget\";\n\ntype Point = { x: number, y: number };\ntype Rect = { x: number, y: number, width: number, height: number };\n\nconst lerp = function (point: Point, that: Point, t: number): Point {\n // From https://github.com/thelonious/js-intersections\n return {\n x: point.x + (that.x - point.x) * t,\n y: point.y + (that.y - point.y) * t\n };\n};\n\ntype LineIntersection = { type: \"Intersection\" | \"No Intersection\" | \"Coincident\" | \"Parallel\", points: Point[] };\nconst intersectLineLine = function (a1: Point, a2: Point, b1: Point, b2: Point): LineIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: LineIntersection = { type: \"Parallel\", points: [] };\n const uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x);\n const uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n if (uB !== 0) {\n const ua = uaT / uB;\n const ub = ubT / uB;\n\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result.type = \"Intersection\";\n result.points.push({\n x: a1.x + ua * (a2.x - a1.x),\n y: a1.y + ua * (a2.y - a1.y)\n });\n } else {\n result.type = \"No Intersection\";\n }\n } else {\n if (uaT === 0 || ubT === 0) {\n result.type = \"Coincident\";\n } else {\n result.type = \"Parallel\";\n }\n }\n\n return result;\n};\n\ntype CircleIntersection = { type: \"Outside\" | \"Tangent\" | \"Inside\" | \"Intersection\", points: Point[] };\nconst intersectCircleLine = function (c: Point, r: number, a1: Point, a2: Point): CircleIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: CircleIntersection = { type: \"Intersection\", points: [] };\n const a = (a2.x - a1.x) * (a2.x - a1.x) +\n (a2.y - a1.y) * (a2.y - a1.y);\n const b = 2 * ((a2.x - a1.x) * (a1.x - c.x) +\n (a2.y - a1.y) * (a1.y - c.y));\n const cc = c.x * c.x + c.y * c.y + a1.x * a1.x + a1.y * a1.y -\n 2 * (c.x * a1.x + c.y * a1.y) - r * r;\n const deter = b * b - 4 * a * cc;\n\n if (deter < 0) {\n result.type = \"Outside\";\n } else if (deter === 0) {\n result.type = \"Tangent\";\n // NOTE: should calculate this point\n } else {\n const e = Math.sqrt(deter);\n const u1 = (-b + e) / (2 * a);\n const u2 = (-b - e) / (2 * a);\n\n if ((u1 < 0 || u1 > 1) && (u2 < 0 || u2 > 1)) {\n if ((u1 < 0 && u2 < 0) || (u1 > 1 && u2 > 1)) {\n result.type = \"Outside\";\n } else {\n result.type = \"Inside\";\n }\n } else {\n result.type = \"Intersection\";\n\n if (0 <= u1 && u1 <= 1)\n result.points.push(lerp(a1, a2, u1));\n\n if (0 <= u2 && u2 <= 1)\n result.points.push(lerp(a1, a2, u2));\n }\n }\n\n return result;\n};\n\nexport class SVGGlowFilter {\n protected filter;\n protected feOffset;\n protected feColorMatrix;\n protected feGaussianBlur;\n protected feBlend;\n\n constructor(target, id: string) {\n this.filter = target.append(\"filter\")\n .attr(\"id\", id)\n .attr(\"width\", \"130%\")\n .attr(\"height\", \"130%\");\n this.feOffset = this.filter.append(\"feOffset\")\n .attr(\"result\", \"offOut\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"dx\", \"0\")\n .attr(\"dy\", \"0\");\n this.feColorMatrix = this.filter.append(\"feColorMatrix\")\n .attr(\"result\", \"matrixOut\")\n .attr(\"in\", \"offOut\")\n .attr(\"type\", \"matrix\")\n .attr(\"values\", this.rgb2ColorMatrix(\"red\"))\n ;\n this.feGaussianBlur = this.filter.append(\"feGaussianBlur\")\n .attr(\"result\", \"blurOut\")\n .attr(\"in\", \"matrixOut\")\n .attr(\"stdDeviation\", \"3\")\n ;\n this.feBlend = this.filter.append(\"feBlend\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"in2\", \"blurOut\")\n .attr(\"mode\", \"normal\")\n ;\n }\n\n rgb2ColorMatrix(color: string): string {\n const rgb = d3Rgb(color);\n return [\n rgb.r / 255, 0, 0, 0, rgb.r ? 1 : 0,\n 0, rgb.g / 255, 0, 0, rgb.g ? 1 : 0,\n 0, 0, rgb.b / 255, 0, rgb.b ? 1 : 0,\n 0, 0, 0, 1, 0\n ].join(\" \");\n }\n\n update(color: string) {\n this.feColorMatrix.attr(\"values\", this.rgb2ColorMatrix(color));\n }\n}\n\nexport class SVGWidget extends Widget {\n static _class = \"common_SVGWidget\";\n\n _tag;\n\n protected _boundingBox;\n protected transition;\n protected _drawStartPos: \"center\" | \"origin\";\n protected _svgSelectionFilter;\n protected _parentRelativeDiv;\n protected _parentOverlay;\n\n constructor() {\n super();\n\n this._tag = \"g\";\n\n this._boundingBox = null;\n\n this.transition = new Transition(this);\n\n this._drawStartPos = \"center\";\n }\n\n // Properties ---\n move(_, transitionDuration?) {\n const retVal = this.pos(_);\n if (arguments.length) {\n (transitionDuration ? this._element.transition().duration(transitionDuration) : this._element)\n .attr(\"transform\", `translate(${_.x} ${_.y})scale(${this._widgetScale})`)\n ;\n }\n return retVal;\n }\n\n _enableOverflow = false;\n enableOverflow(): boolean;\n enableOverflow(_: boolean): this;\n enableOverflow(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflow;\n this._enableOverflow = _;\n return this;\n }\n\n _enableOverflowScroll = true;\n enableOverflowScroll(): boolean;\n enableOverflowScroll(_: boolean): this;\n enableOverflowScroll(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflowScroll;\n this._enableOverflowScroll = _;\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n this._boundingBox = null;\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n if (this._parentRelativeDiv) {\n this._parentRelativeDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n switch (this._drawStartPos) {\n case \"origin\":\n this.pos({\n x: 0,\n y: 0\n });\n break;\n case \"center\":\n /* falls through */\n default:\n this.pos({\n x: this._size.width / 2,\n y: this._size.height / 2\n });\n break;\n }\n }\n if (!isNaN(this._size.width)) this._placeholderElement.attr(\"width\", this._size.width);\n if (!isNaN(this._size.height)) this._placeholderElement.attr(\"height\", this._size.height);\n return retVal;\n }\n // Glow Highlighting ---\n svgGlowID(): string {\n return `sel${this.id()}_glow`;\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n this._isRootNode = false;\n this._placeholderElement = d3Select(this._target);\n this._parentWidget = this._placeholderElement.datum();\n if (!this._parentWidget || this._parentWidget._id === this._id) {\n this._parentWidget = this.locateParentWidget(this._target.parentNode);\n }\n this._parentOverlay = this.locateOverlayNode();\n const svg = this.locateSVGNode(this._target);\n const svgDefs = d3Select(svg).select<SVGDefsElement>(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n } else if (this._target) {\n // Target is a DOM Node, so create a SVG Element ---\n this._parentRelativeDiv = d3Select(this._target).append(\"div\")\n .style(\"position\", \"relative\")\n ;\n this._placeholderElement = this._parentRelativeDiv.append(\"svg\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n const svgDefs = this._placeholderElement.append(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n this._parentOverlay = this._parentRelativeDiv.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n if (this._size.width && this._size.height) {\n this.resize(this._size);\n } else {\n this.resize({ width: 0, height: 0 });\n }\n }\n }\n return retVal;\n }\n\n parentOverlay() {\n return this._parentOverlay;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._svgSelectionFilter) {\n this._svgSelectionFilter.update(this.selectionGlowColor());\n }\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let transX;\n let transY;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n transX = (this._pos.x - this._size.width / 2);\n transY = (this._pos.y - this._size.height / 2);\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n } else {\n transX = this._pos.x;\n transY = this._pos.y;\n if (this._enableOverflow) {\n // Individual Widgets will need to size and position themselves corrrectly (and have calculated a BBox) ---\n if ((transX < 0 || transY < 0) && this._boundingBox) {\n transX = transX < 0 ? 0 : transX;\n transY = transY < 0 ? 0 : transY;\n if (this._enableOverflowScroll) {\n this._parentRelativeDiv.style(\"overflow\", \"scroll\");\n }\n this._placeholderElement.attr(\"width\", this._boundingBox.width);\n this._placeholderElement.attr(\"height\", this._boundingBox.height);\n } else {\n this._parentRelativeDiv.style(\"overflow\", null);\n }\n }\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n }\n }\n\n exit(domNode?, element?) {\n if (this._parentRelativeDiv) {\n this._parentOverlay.remove();\n this._placeholderElement.remove();\n this._parentRelativeDiv.remove();\n }\n super.exit(domNode, element);\n }\n\n getOffsetPos(): Point {\n let retVal = { x: 0, y: 0 };\n if (this._parentWidget) {\n retVal = this._parentWidget.getOffsetPos();\n retVal.x += this._pos.x;\n retVal.y += this._pos.y;\n return retVal;\n }\n return retVal;\n }\n\n getBBox(refresh = false, round = false): Rect {\n if (refresh || this._boundingBox === null) {\n const svgNode: SVGElement = this._element.node();\n if (svgNode instanceof SVGElement) {\n this._boundingBox = (svgNode as any).getBBox();\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n // Intersections ---\n contains(point: Point): boolean {\n return this.containsRect(point);\n }\n\n containsRect(point: Point): boolean {\n const size = this.getBBox();\n return point.x >= size.x && point.x <= size.x + size.width && point.y >= size.y && point.y <= size.y + size.height;\n }\n\n containsCircle(radius: number, point: Point) {\n const center = this.getOffsetPos();\n return this.distance(center, point) <= radius;\n }\n\n intersection(pointA: Point, pointB: Point): Point | null {\n return this.intersectRect(pointA, pointB);\n }\n\n intersectRect(pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const size = this.getBBox();\n if (pointA.x === pointB.x && pointA.y === pointB.y) {\n return pointA;\n }\n const TL = { x: center.x - size.width / 2, y: center.y - size.height / 2 };\n const TR = { x: center.x + size.width / 2, y: center.y - size.height / 2 };\n const BR = { x: center.x + size.width / 2, y: center.y + size.height / 2 };\n const BL = { x: center.x - size.width / 2, y: center.y + size.height / 2 };\n let intersection = intersectLineLine(TL, TR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(TR, BR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BR, BL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BL, TL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n intersectRectRect(rect1: Rect, rect2: Rect): Rect {\n const x = Math.max(rect1.x, rect2.x);\n const y = Math.max(rect1.y, rect2.y);\n const xLimit = (rect1.x < rect2.x) ? Math.min(rect1.x + rect1.width, rect2.x + rect2.width) : Math.min(rect2.x + rect2.width, rect1.x + rect1.width);\n const yLimit = (rect1.y < rect2.y) ? Math.min(rect1.y + rect1.height, rect2.y + rect2.height) : Math.min(rect2.y + rect2.height, rect1.y + rect1.height);\n return {\n x,\n y,\n width: xLimit - x,\n height: yLimit - y\n };\n }\n\n intersectCircle(radius: number, pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const intersection = intersectCircleLine(center, radius, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n distance(pointA: Point, pointB: Point): number {\n return Math.sqrt((pointA.x - pointB.x) * (pointA.x - pointB.x) + (pointA.y - pointB.y) * (pointA.y - pointB.y));\n }\n\n // Download ---\n serializeSVG(extraStyles: string = fontAwsesomeStyle): string {\n const origSvg = this.locateSVGNode(this._element.node());\n const cloneSVG = origSvg.cloneNode(true) as SVGSVGElement;\n const origNodes = d3Select(origSvg).selectAll(\"*\").nodes();\n d3Select(cloneSVG).selectAll(\"*\").each(function (this: SVGElement, d, i) {\n const compStyles = window.getComputedStyle(origNodes[i] as SVGElement);\n for (let i = 0; i < compStyles.length; ++i) {\n const styleName = compStyles.item(i);\n const styleValue = compStyles.getPropertyValue(styleName);\n const stylePriority = compStyles.getPropertyPriority(styleName);\n this.style.setProperty(styleName, styleValue, stylePriority);\n }\n });\n\n if (extraStyles) {\n const defs = cloneSVG.getElementsByTagName(\"defs\");\n if (defs.length) {\n const extraStyle = document.createElement(\"style\");\n extraStyle.setAttribute(\"type\", \"text/css\");\n extraStyle.innerText = extraStyles;\n defs[0].appendChild(extraStyle);\n }\n }\n\n const serializer = new XMLSerializer();\n return serializer.serializeToString(cloneSVG);\n }\n\n toBlob(extraStyles: string = fontAwsesomeStyle): Blob {\n return new Blob([this.serializeSVG(extraStyles)], { type: \"image/svg+xml\" });\n }\n\n rasterize(extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]): Promise<Blob> {\n const widgets = [this, ...extraWidgets];\n const sizes = widgets.map(widget => widget.locateSVGNode(widget.element().node()).getBoundingClientRect());\n const width = sizes.reduce((prev, curr) => prev + curr.width, 0);\n const height = Math.max(...sizes.map(s => s.height));\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = width + \"px\";\n const ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = \"transparent\";\n return new Promise((resolve, reject) => {\n let xPos = 0;\n Promise.all(widgets.map((widget, i) => {\n const x = xPos;\n const y = (height - sizes[i].height) / 2;\n xPos += sizes[i].width;\n return new Promise<void>((resolve, reject) => {\n const image = new Image();\n image.onerror = reject;\n image.onload = () => {\n ctx.drawImage(image, 0, 0, sizes[i].width, sizes[i].height, x, y, sizes[i].width, sizes[i].height);\n resolve();\n };\n image.src = URL.createObjectURL(widget.toBlob(extraStyles));\n });\n })).then(() => {\n ctx.canvas.toBlob(resolve); // Not supported by Edge browser\n });\n });\n }\n\n downloadSVG(extraStyles: string = fontAwsesomeStyle) {\n downloadString(\"SVG\", this.serializeSVG(extraStyles));\n }\n\n downloadPNG(filename: string = `image_${timestamp()}`, extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]) {\n this.rasterize(extraStyles, ...extraWidgets).then(blob => downloadBlob(blob, `${filename}.png`));\n }\n\n // IE Fixers ---\n _pushMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[marker-start],path[marker-end]\")\n .attr(\"fixme-start\", function () { return this.getAttribute(\"marker-start\"); })\n .attr(\"fixme-end\", function () { return this.getAttribute(\"marker-end\"); })\n .attr(\"marker-start\", null)\n .attr(\"marker-end\", null)\n ;\n }\n }\n\n _popMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[fixme-start],path[fixme-end]\")\n .attr(\"marker-start\", function () {\n return this.getAttribute(\"fixme-start\");\n })\n .attr(\"marker-end\", function () { return this.getAttribute(\"fixme-end\"); })\n .attr(\"fixme-start\", null)\n .attr(\"fixme-end\", null)\n ;\n }\n }\n\n _popMarkersDebounced = debounce(function (element) {\n if (svgMarkerGlitch) {\n this._popMarkers(element);\n }\n }, 250);\n\n _fixIEMarkers(element?) {\n if (svgMarkerGlitch) {\n this._pushMarkers(element);\n this._popMarkersDebounced(element);\n }\n }\n}\nSVGWidget.prototype._class += \" common_SVGWidget\";\n\nexport interface SVGWidget {\n selectionGlowColor(): string;\n selectionGlowColor(_: string): this;\n}\n\nSVGWidget.prototype.publish(\"selectionGlowColor\", \"red\", \"html-color\", \"Selection Glow Color\");\n","import { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Text.css\";\n\nexport class Text extends SVGWidget {\n\n private _textElement;\n\n constructor() {\n super();\n }\n\n getBBox(refresh = false, round = false) {\n const textParts = this.text().split(\"\\n\");\n const lineHeight = this.fontSize() || 12;\n const height = lineHeight * textParts.length;\n const widths: number[] = textParts.map(line => {\n return this.textSize(line, this.fontFamily() || \"Verdana\", lineHeight).width;\n });\n const width = Math.max(...widths);\n const retVal = {\n x: - width / 2,\n y: - height / 2 - lineHeight / (this.fontFamily() === \"FontAwesome\" ? 4 : 6), // baseLine offset\n width,\n height\n };\n switch (this.anchor()) {\n case \"start\":\n retVal.x = 0;\n break;\n case \"end\":\n retVal.x = -width;\n break;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._textElement = element.append(\"text\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum([], { width: this.width() });\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const bbox = this.getBBox();\n\n this._textElement\n .style(\"font-size\", this.fontSize())\n .style(\"text-anchor\", this.anchor())\n .attr(\"transform\", d => `rotate(${this.rotation()}) translate(0,${bbox.y})`)\n ;\n\n const width = this.width();\n const context = this;\n const textParts = this.text().split(\"\\n\");\n const textLine = this._textElement.selectAll(\"tspan\").data(textParts);\n textLine.enter().append(\"tspan\")\n .attr(\"class\", function (_d, i) { return \"tspan_\" + i; })\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"0\")\n .merge(textLine)\n .style(\"font-family\", this.fontFamily())\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .text((d: string) => {\n if (!width) return d;\n let retVal = d;\n const lineHeight = context.fontSize() || 12;\n let clipPos = retVal.length - 1;\n while (clipPos > -3 && this.textSize(retVal, this.fontFamily() || \"Verdana\", lineHeight).width > width) {\n retVal = retVal.substr(0, --clipPos) + \"...\".substr(0, clipPos + 3);\n }\n return retVal;\n })\n ;\n textLine.exit()\n .remove()\n ;\n\n }\n }\n\n click() {\n }\n\n dblclick() {\n }\n}\nText.prototype._class += \" common_Text\";\n\nexport interface Text {\n text(): string;\n text(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n anchor(): \"start\" | \"middle\" | \"end\";\n anchor(_: \"start\" | \"middle\" | \"end\"): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_default(): string;\n colorFill_default(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_default(): string;\n colorStroke_default(_: string): this;\n rotation(): number;\n rotation(_: number): Text;\n}\n\nText.prototype.publish(\"text\", \"\", \"string\", \"Display Text\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"fontFamily\", null, \"string\", \"Font Family\", null, { tags: [\"Intermediate\"], optional: true });\nText.prototype.publish(\"fontSize\", null, \"number\", \"Font Size (pixels)\", null, { tags: [\"Intermediate\"] });\nText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Anchor Position\", [\"start\", \"middle\", \"end\"], { tags: [\"Intermediate\"] });\nText.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"colorStroke\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"rotation\", 0, \"number\", \"Degrees of rotation\", null, { tags: [\"Basic\"] });\n","import { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport * as Utility from \"./Utility\";\n\nimport \"../src/FAChar.css\";\n\nexport class FAChar extends SVGWidget {\n\n protected _text;\n\n constructor() {\n super();\n\n this._text = new Text()\n .fontFamily(\"FontAwesome\")\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._text\n .target(domNode)\n ;\n element\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n calcChar(): string {\n return Utility.faChar(this.char());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._text\n .text(this.calcChar())\n .fontFamily(this.text_fontFamily())\n .scale((this.fontSize() || 14) / 14) // Scale rather than fontSize to prevent Chrome glitch ---\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._text\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n click() {\n // console.log(\"Click:\", this);\n }\n\n dblclick() {\n // console.log(\"Double click:\", this);\n }\n\n char: { (): string; (_: string): FAChar; };\n fontSize: { (): number; (_: number): FAChar; };\n text_colorFill: { (): string; (_: string): FAChar; };\n text_fontFamily: { (): string; (_: string): FAChar; };\n}\nFAChar.prototype._class += \" common_FAChar\";\n\nFAChar.prototype.publish(\"char\", \"\", \"set\", \"Font Awesome Item\", Utility.faKeys(), { tags: [\"Private\"] });\nFAChar.prototype.publish(\"fontSize\", null, \"number\", \"Font Size\", null, { tags: [\"Private\"] });\nFAChar.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nFAChar.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\", \"FontAwesome\");\n\n// openssl base64 -A -in fontawesome-webfont.ttf -out tmp.txt\nconst fontAwesomeOpenType = \"AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk=\";\nexport const fontAwsesomeStyle = `\\\n@font-face {\\\n font-family: \"FontAwesome\";\\\n src: url(\"data:font/opentype;base64,${fontAwesomeOpenType}\") format(\"opentype\");\\\n}`;\n","var index = {\n schemeGroups: {\n sequential: [\"BuGn\", \"BuPu\", \"GnBu\", \"OrRd\", \"PuBu\", \"PuBuGn\", \"PuRd\", \"RdPu\", \"YlGn\", \"YlGnBu\", \"YlOrBr\", \"YlOrRd\"],\n singlehue: [\"Blues\", \"Greens\", \"Greys\", \"Oranges\", \"Purples\", \"Reds\"],\n diverging: [\"BrBG\", \"PiYG\", \"PRGn\", \"PuOr\", \"RdBu\", \"RdGy\", \"RdYlBu\", \"RdYlGn\", \"Spectral\"],\n qualitative: [\"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"]\n }, YlGn: {\n 3: [\"#f7fcb9\", \"#addd8e\", \"#31a354\"],\n 4: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#238443\"],\n 5: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#31a354\", \"#006837\"],\n 6: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#31a354\", \"#006837\"],\n 7: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 8: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 9: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#006837\", \"#004529\"]\n }, YlGnBu: {\n 3: [\"#edf8b1\", \"#7fcdbb\", \"#2c7fb8\"],\n 4: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#225ea8\"],\n 5: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 6: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 7: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 8: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 9: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#253494\", \"#081d58\"]\n }, GnBu: {\n 3: [\"#e0f3db\", \"#a8ddb5\", \"#43a2ca\"],\n 4: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#2b8cbe\"],\n 5: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 6: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 7: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 8: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 9: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#0868ac\", \"#084081\"]\n }, BuGn: {\n 3: [\"#e5f5f9\", \"#99d8c9\", \"#2ca25f\"],\n 4: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#238b45\"],\n 5: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 6: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 7: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 8: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 9: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, PuBuGn: {\n 3: [\"#ece2f0\", \"#a6bddb\", \"#1c9099\"],\n 4: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#02818a\"],\n 5: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 6: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 7: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 8: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 9: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016c59\", \"#014636\"]\n }, PuBu: {\n 3: [\"#ece7f2\", \"#a6bddb\", \"#2b8cbe\"],\n 4: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#0570b0\"],\n 5: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 6: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 7: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 8: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 9: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#045a8d\", \"#023858\"]\n }, BuPu: {\n 3: [\"#e0ecf4\", \"#9ebcda\", \"#8856a7\"],\n 4: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#88419d\"],\n 5: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 6: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 7: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 8: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 9: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#810f7c\", \"#4d004b\"]\n }, RdPu: {\n 3: [\"#fde0dd\", \"#fa9fb5\", \"#c51b8a\"],\n 4: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#ae017e\"],\n 5: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 6: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 7: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 8: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 9: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\", \"#49006a\"]\n }, PuRd: {\n 3: [\"#e7e1ef\", \"#c994c7\", \"#dd1c77\"],\n 4: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#ce1256\"],\n 5: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 6: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 7: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 8: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 9: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#980043\", \"#67001f\"]\n }, OrRd: {\n 3: [\"#fee8c8\", \"#fdbb84\", \"#e34a33\"],\n 4: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#d7301f\"],\n 5: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 6: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 7: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 8: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 9: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#b30000\", \"#7f0000\"]\n }, YlOrRd: {\n 3: [\"#ffeda0\", \"#feb24c\", \"#f03b20\"],\n 4: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#e31a1c\"],\n 5: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 6: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 7: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 8: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 9: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#bd0026\", \"#800026\"]\n }, YlOrBr: {\n 3: [\"#fff7bc\", \"#fec44f\", \"#d95f0e\"],\n 4: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#cc4c02\"],\n 5: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 6: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 7: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 8: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 9: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#993404\", \"#662506\"]\n }, Purples: {\n 3: [\"#efedf5\", \"#bcbddc\", \"#756bb1\"],\n 4: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#6a51a3\"],\n 5: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 6: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 7: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 8: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 9: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#54278f\", \"#3f007d\"]\n }, Blues: {\n 3: [\"#deebf7\", \"#9ecae1\", \"#3182bd\"],\n 4: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#2171b5\"],\n 5: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 6: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 7: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 8: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 9: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#08519c\", \"#08306b\"]\n }, Greens: {\n 3: [\"#e5f5e0\", \"#a1d99b\", \"#31a354\"],\n 4: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#238b45\"],\n 5: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 6: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 7: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 8: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 9: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, Oranges: {\n 3: [\"#fee6ce\", \"#fdae6b\", \"#e6550d\"],\n 4: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#d94701\"],\n 5: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 6: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 7: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 8: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 9: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#a63603\", \"#7f2704\"]\n }, Reds: {\n 3: [\"#fee0d2\", \"#fc9272\", \"#de2d26\"],\n 4: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#cb181d\"],\n 5: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 6: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 7: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 8: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 9: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#a50f15\", \"#67000d\"]\n }, Greys: {\n 3: [\"#f0f0f0\", \"#bdbdbd\", \"#636363\"],\n 4: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#525252\"],\n 5: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n 6: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#636363\", \"#252525\"],\n 7: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 8: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 9: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\", \"#000000\"]\n }, PuOr: {\n 3: [\"#f1a340\", \"#f7f7f7\", \"#998ec3\"],\n 4: [\"#e66101\", \"#fdb863\", \"#b2abd2\", \"#5e3c99\"],\n 5: [\"#e66101\", \"#fdb863\", \"#f7f7f7\", \"#b2abd2\", \"#5e3c99\"],\n 6: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 7: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 8: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 9: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 10: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"],\n 11: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"]\n }, BrBG: {\n 3: [\"#d8b365\", \"#f5f5f5\", \"#5ab4ac\"],\n 4: [\"#a6611a\", \"#dfc27d\", \"#80cdc1\", \"#018571\"],\n 5: [\"#a6611a\", \"#dfc27d\", \"#f5f5f5\", \"#80cdc1\", \"#018571\"],\n 6: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 7: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 8: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 9: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 10: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"],\n 11: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"]\n }, PRGn: {\n 3: [\"#af8dc3\", \"#f7f7f7\", \"#7fbf7b\"],\n 4: [\"#7b3294\", \"#c2a5cf\", \"#a6dba0\", \"#008837\"],\n 5: [\"#7b3294\", \"#c2a5cf\", \"#f7f7f7\", \"#a6dba0\", \"#008837\"],\n 6: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 7: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 8: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 9: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 10: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"],\n 11: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"]\n }, PiYG: {\n 3: [\"#e9a3c9\", \"#f7f7f7\", \"#a1d76a\"],\n 4: [\"#d01c8b\", \"#f1b6da\", \"#b8e186\", \"#4dac26\"],\n 5: [\"#d01c8b\", \"#f1b6da\", \"#f7f7f7\", \"#b8e186\", \"#4dac26\"],\n 6: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 7: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 8: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 9: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 10: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"],\n 11: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"]\n }, RdBu: {\n 3: [\"#ef8a62\", \"#f7f7f7\", \"#67a9cf\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#92c5de\", \"#0571b0\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#f7f7f7\", \"#92c5de\", \"#0571b0\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"]\n }, RdGy: {\n 3: [\"#ef8a62\", \"#ffffff\", \"#999999\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#bababa\", \"#404040\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#ffffff\", \"#bababa\", \"#404040\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"]\n }, RdYlBu: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91bfdb\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abd9e9\", \"#2c7bb6\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"]\n }, Spectral: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#99d594\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abdda4\", \"#2b83ba\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abdda4\", \"#2b83ba\"],\n 6: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 7: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 8: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 9: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 10: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"],\n 11: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"]\n }, RdYlGn: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91cf60\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#a6d96a\", \"#1a9641\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#a6d96a\", \"#1a9641\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"]\n }, Accent: {\n 3: [\"#7fc97f\", \"#beaed4\", \"#fdc086\"],\n 4: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\"],\n 5: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\"],\n 6: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\"],\n 7: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\"],\n 8: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\", \"#666666\"]\n }, Dark2: {\n 3: [\"#1b9e77\", \"#d95f02\", \"#7570b3\"],\n 4: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\"],\n 5: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\"],\n 6: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\"],\n 7: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\"],\n 8: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\", \"#666666\"]\n }, Paired: {\n 3: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\"],\n 4: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\"],\n 5: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\"],\n 6: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\"],\n 7: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\"],\n 8: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\"],\n 9: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\"],\n 10: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\"],\n 11: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\"],\n 12: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\", \"#b15928\"]\n }, Pastel1: {\n 3: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\"],\n 4: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\"],\n 5: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\"],\n 6: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\"],\n 7: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\"],\n 8: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\"],\n 9: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\", \"#f2f2f2\"]\n }, Pastel2: {\n 3: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\"],\n 4: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\"],\n 5: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\"],\n 6: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\"],\n 7: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\"],\n 8: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\", \"#cccccc\"]\n }, Set1: {\n 3: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\"],\n 4: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\"],\n 5: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\"],\n 6: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\"],\n 7: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\"],\n 8: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\"],\n 9: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\", \"#999999\"]\n }, Set2: {\n 3: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\"],\n 4: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\"],\n 5: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\"],\n 6: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\"],\n 7: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\"],\n 8: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\", \"#b3b3b3\"]\n }, Set3: {\n 3: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\"],\n 4: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\"],\n 5: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\"],\n 6: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\"],\n 7: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\"],\n 8: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\"],\n 9: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\"],\n 10: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\"],\n 11: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\"],\n 12: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\", \"#ffed6f\"]\n }\n};\n\nexport default index;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal(range) {\n var index = map(),\n domain = [],\n unknown = implicit;\n\n range = range == null ? [] : slice.call(range);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), 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()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\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] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(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\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nexport default function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n return rescale();\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport tickFormat from \"./tickFormat\";\n\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 return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(deinterpolate, reinterpolate);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\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 case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\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 case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\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}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport constant from \"./constant\";\nimport nice from \"./nice\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport default function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n","import constant from \"./constant\";\nimport {linearish} from \"./linear\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nexport default function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nexport function sqrt() {\n return pow().exponent(0.5);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1];\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range);\n };\n\n return linearish(scale);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {linearish} from \"./linear\";\n\nexport default function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n","import * as _colorbrewer from \"colorbrewer\";\nimport { values as d3Values } from \"d3-collection\";\nimport { rgb as d3RGB } from \"d3-color\";\nimport { interpolateLab as d3InterpolateLab } from \"d3-interpolate\";\nimport { interpolateInferno as d3InterpolateInferno, interpolateMagma as d3InterpolateMagma, interpolatePlasma as d3InterpolatePlasma, interpolateViridis as d3InterpolateViridis, scaleLinear as d3ScaleLinear, scaleOrdinal as d3ScaleOrdinal, scaleQuantize as d3ScaleQuantize, scaleSequential as d3ScaleSequential, schemeCategory10 as d3SchemeCategory10, schemeCategory20 as d3SchemeCategory20, schemeCategory20b as d3SchemeCategory20b, schemeCategory20c as d3SchemeCategory20c } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\n\nconst d3Schemes = {\n category10: d3SchemeCategory10,\n category20: d3SchemeCategory20,\n category20b: d3SchemeCategory20b,\n category20c: d3SchemeCategory20c\n};\n\nconst m_colorbrewer = _colorbrewer.default || _colorbrewer;\n\nconst m_d3 = {\n Viridis: d3InterpolateViridis,\n Magma: d3InterpolateMagma,\n Inferno: d3InterpolateInferno,\n Plasma: d3InterpolatePlasma\n};\n\nconst d3Ordinal = [\n \"category10\", \"category20\", \"category20b\", \"category20c\"\n];\n\nconst brewerOrdinal = [\n \"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"\n];\n\nconst hpccOrdinal = [\n \"hpcc10\", \"hpcc20\"\n];\n\n// These color schemes are from www.flatuicolors.com\nconst flatuiSchemes = {\n FlatUI_default: [\"rgb(26, 188, 156)\", \"rgb(46, 204, 113)\", \"rgb(52, 152, 219)\", \"rgb(155, 89, 182)\", \"rgb(52, 73, 94)\", \"rgb(22, 160, 133)\", \"rgb(39, 174, 96)\", \"rgb(41, 128, 185)\", \"rgb(142, 68, 173)\", \"rgb(44, 62, 80)\", \"rgb(241, 196, 15)\", \"rgb(230, 126, 34)\", \"rgb(231, 76, 60)\", \"rgb(236, 240, 241)\", \"rgb(149, 165, 166)\", \"rgb(243, 156, 18)\", \"rgb(211, 84, 0)\", \"rgb(192, 57, 43)\", \"rgb(189, 195, 199)\", \"rgb(127, 140, 141)\"],\n FlatUI_American: [\"rgb(85, 239, 196)\", \"rgb(129, 236, 236)\", \"rgb(116, 185, 255)\", \"rgb(162, 155, 254)\", \"rgb(223, 230, 233)\", \"rgb(0, 184, 148)\", \"rgb(0, 206, 201)\", \"rgb(9, 132, 227)\", \"rgb(108, 92, 231)\", \"rgb(178, 190, 195)\", \"rgb(255, 234, 167)\", \"rgb(250, 177, 160)\", \"rgb(255, 118, 117)\", \"rgb(253, 121, 168)\", \"rgb(99, 110, 114)\", \"rgb(253, 203, 110)\", \"rgb(225, 112, 85)\", \"rgb(214, 48, 49)\", \"rgb(232, 67, 147)\", \"rgb(45, 52, 54)\"],\n FlatUI_Aussie: [\"rgb(246, 229, 141)\", \"rgb(255, 190, 118)\", \"rgb(255, 121, 121)\", \"rgb(186, 220, 88)\", \"rgb(223, 249, 251)\", \"rgb(249, 202, 36)\", \"rgb(240, 147, 43)\", \"rgb(235, 77, 75)\", \"rgb(106, 176, 76)\", \"rgb(199, 236, 238)\", \"rgb(126, 214, 223)\", \"rgb(224, 86, 253)\", \"rgb(104, 109, 224)\", \"rgb(48, 51, 107)\", \"rgb(149, 175, 192)\", \"rgb(34, 166, 179)\", \"rgb(190, 46, 221)\", \"rgb(72, 52, 212)\", \"rgb(19, 15, 64)\", \"rgb(83, 92, 104)\"],\n FlatUI_British: [\"rgb(0, 168, 255)\", \"rgb(156, 136, 255)\", \"rgb(251, 197, 49)\", \"rgb(76, 209, 55)\", \"rgb(72, 126, 176)\", \"rgb(0, 151, 230)\", \"rgb(140, 122, 230)\", \"rgb(225, 177, 44)\", \"rgb(68, 189, 50)\", \"rgb(64, 115, 158)\", \"rgb(232, 65, 24)\", \"rgb(245, 246, 250)\", \"rgb(127, 143, 166)\", \"rgb(39, 60, 117)\", \"rgb(53, 59, 72)\", \"rgb(194, 54, 22)\", \"rgb(220, 221, 225)\", \"rgb(113, 128, 147)\", \"rgb(25, 42, 86)\", \"rgb(47, 54, 64)\"],\n FlatUI_Canadian: [\"rgb(255, 159, 243)\", \"rgb(254, 202, 87)\", \"rgb(255, 107, 107)\", \"rgb(72, 219, 251)\", \"rgb(29, 209, 161)\", \"rgb(243, 104, 224)\", \"rgb(255, 159, 67)\", \"rgb(238, 82, 83)\", \"rgb(10, 189, 227)\", \"rgb(16, 172, 132)\", \"rgb(0, 210, 211)\", \"rgb(84, 160, 255)\", \"rgb(95, 39, 205)\", \"rgb(200, 214, 229)\", \"rgb(87, 101, 116)\", \"rgb(1, 163, 164)\", \"rgb(46, 134, 222)\", \"rgb(52, 31, 151)\", \"rgb(131, 149, 167)\", \"rgb(34, 47, 62)\"],\n FlatUI_Chinese: [\"rgb(236, 204, 104)\", \"rgb(255, 127, 80)\", \"rgb(255, 107, 129)\", \"rgb(164, 176, 190)\", \"rgb(87, 96, 111)\", \"rgb(255, 165, 2)\", \"rgb(255, 99, 72)\", \"rgb(255, 71, 87)\", \"rgb(116, 125, 140)\", \"rgb(47, 53, 66)\", \"rgb(123, 237, 159)\", \"rgb(112, 161, 255)\", \"rgb(83, 82, 237)\", \"rgb(255, 255, 255)\", \"rgb(223, 228, 234)\", \"rgb(46, 213, 115)\", \"rgb(30, 144, 255)\", \"rgb(55, 66, 250)\", \"rgb(241, 242, 246)\", \"rgb(206, 214, 224)\"],\n FlatUI_Dutch: [\"rgb(255, 195, 18)\", \"rgb(196, 229, 56)\", \"rgb(18, 203, 196)\", \"rgb(253, 167, 223)\", \"rgb(237, 76, 103)\", \"rgb(247, 159, 31)\", \"rgb(163, 203, 56)\", \"rgb(18, 137, 167)\", \"rgb(217, 128, 250)\", \"rgb(181, 52, 113)\", \"rgb(238, 90, 36)\", \"rgb(0, 148, 50)\", \"rgb(6, 82, 221)\", \"rgb(153, 128, 250)\", \"rgb(131, 52, 113)\", \"rgb(234, 32, 39)\", \"rgb(0, 98, 102)\", \"rgb(27, 20, 100)\", \"rgb(87, 88, 187)\", \"rgb(111, 30, 81)\"],\n FlatUI_French: [\"rgb(250, 211, 144)\", \"rgb(248, 194, 145)\", \"rgb(106, 137, 204)\", \"rgb(130, 204, 221)\", \"rgb(184, 233, 148)\", \"rgb(246, 185, 59)\", \"rgb(229, 80, 57)\", \"rgb(74, 105, 189)\", \"rgb(96, 163, 188)\", \"rgb(120, 224, 143)\", \"rgb(250, 152, 58)\", \"rgb(235, 47, 6)\", \"rgb(30, 55, 153)\", \"rgb(60, 99, 130)\", \"rgb(56, 173, 169)\", \"rgb(229, 142, 38)\", \"rgb(183, 21, 64)\", \"rgb(12, 36, 97)\", \"rgb(10, 61, 98)\", \"rgb(7, 153, 146)\"],\n FlatUI_German: [\"rgb(252, 92, 101)\", \"rgb(253, 150, 68)\", \"rgb(254, 211, 48)\", \"rgb(38, 222, 129)\", \"rgb(43, 203, 186)\", \"rgb(235, 59, 90)\", \"rgb(250, 130, 49)\", \"rgb(247, 183, 49)\", \"rgb(32, 191, 107)\", \"rgb(15, 185, 177)\", \"rgb(69, 170, 242)\", \"rgb(75, 123, 236)\", \"rgb(165, 94, 234)\", \"rgb(209, 216, 224)\", \"rgb(119, 140, 163)\", \"rgb(45, 152, 218)\", \"rgb(56, 103, 214)\", \"rgb(136, 84, 208)\", \"rgb(165, 177, 194)\", \"rgb(75, 101, 132)\"],\n FlatUI_Indian: [\"rgb(254, 164, 127)\", \"rgb(37, 204, 247)\", \"rgb(234, 181, 67)\", \"rgb(85, 230, 193)\", \"rgb(202, 211, 200)\", \"rgb(249, 127, 81)\", \"rgb(27, 156, 252)\", \"rgb(248, 239, 186)\", \"rgb(88, 177, 159)\", \"rgb(44, 58, 71)\", \"rgb(179, 55, 113)\", \"rgb(59, 59, 152)\", \"rgb(253, 114, 114)\", \"rgb(154, 236, 219)\", \"rgb(214, 162, 232)\", \"rgb(109, 33, 79)\", \"rgb(24, 44, 97)\", \"rgb(252, 66, 123)\", \"rgb(189, 197, 129)\", \"rgb(130, 88, 159)\"],\n FlatUI_Russian: [\"rgb(243, 166, 131)\", \"rgb(247, 215, 148)\", \"rgb(119, 139, 235)\", \"rgb(231, 127, 103)\", \"rgb(207, 106, 135)\", \"rgb(241, 144, 102)\", \"rgb(245, 205, 121)\", \"rgb(84, 109, 229)\", \"rgb(225, 95, 65)\", \"rgb(196, 69, 105)\", \"rgb(120, 111, 166)\", \"rgb(248, 165, 194)\", \"rgb(99, 205, 218)\", \"rgb(234, 134, 133)\", \"rgb(89, 98, 117)\", \"rgb(87, 75, 144)\", \"rgb(247, 143, 179)\", \"rgb(61, 193, 211)\", \"rgb(230, 103, 103)\", \"rgb(48, 57, 82)\"],\n FlatUI_Spanish: [\"rgb(64, 64, 122)\", \"rgb(112, 111, 211)\", \"rgb(247, 241, 227)\", \"rgb(52, 172, 224)\", \"rgb(51, 217, 178)\", \"rgb(44, 44, 84)\", \"rgb(71, 71, 135)\", \"rgb(170, 166, 157)\", \"rgb(34, 112, 147)\", \"rgb(33, 140, 116)\", \"rgb(255, 82, 82)\", \"rgb(255, 121, 63)\", \"rgb(209, 204, 192)\", \"rgb(255, 177, 66)\", \"rgb(255, 218, 121)\", \"rgb(179, 57, 57)\", \"rgb(205, 97, 51)\", \"rgb(132, 129, 122)\", \"rgb(204, 142, 53)\", \"rgb(204, 174, 98)\"],\n FlatUI_Swedish: [\"rgb(239, 87, 119)\", \"rgb(87, 95, 207)\", \"rgb(75, 207, 250)\", \"rgb(52, 231, 228)\", \"rgb(11, 232, 129)\", \"rgb(245, 59, 87)\", \"rgb(60, 64, 198)\", \"rgb(15, 188, 249)\", \"rgb(0, 216, 214)\", \"rgb(5, 196, 107)\", \"rgb(255, 192, 72)\", \"rgb(255, 221, 89)\", \"rgb(255, 94, 87)\", \"rgb(210, 218, 226)\", \"rgb(72, 84, 96)\", \"rgb(255, 168, 1)\", \"rgb(255, 211, 42)\", \"rgb(255, 63, 52)\", \"rgb(128, 142, 155)\", \"rgb(30, 39, 46)\"],\n FlatUI_Turkish: [\"rgb(205, 132, 241)\", \"rgb(255, 204, 204)\", \"rgb(255, 77, 77)\", \"rgb(255, 175, 64)\", \"rgb(255, 250, 101)\", \"rgb(197, 108, 240)\", \"rgb(255, 184, 184)\", \"rgb(255, 56, 56)\", \"rgb(255, 159, 26)\", \"rgb(255, 242, 0)\", \"rgb(50, 255, 126)\", \"rgb(126, 255, 245)\", \"rgb(24, 220, 255)\", \"rgb(125, 95, 255)\", \"rgb(75, 75, 75)\", \"rgb(58, 227, 116)\", \"rgb(103, 230, 220)\", \"rgb(23, 192, 235)\", \"rgb(113, 88, 226)\", \"rgb(61, 61, 61)\"]\n};\nconst flatuiOrdinal = Object.keys(flatuiSchemes);\n\nconst ordinalCache = {};\n\nexport interface PaletteFunc {\n switch(id?: string, colors?: string[]);\n type(): \"ordinal\" | \"rainbow\";\n}\n\nexport interface OrdinalPaletteFunc extends PaletteFunc {\n (label: string): string;\n}\nexport function fetchOrdinalItem(): string[];\nexport function fetchOrdinalItem(id: string, colors?: string[]): OrdinalPaletteFunc;\nexport function fetchOrdinalItem(id?: string, colors?: string[]): string[] | OrdinalPaletteFunc {\n if (!id) return palette_ordinal();\n let retVal = ordinalCache[id];\n if (!retVal) {\n retVal = palette_ordinal(id, colors);\n ordinalCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_ordinal(id?, colors?): any {\n if (!id) return [\"default\"].concat(d3Ordinal.concat(brewerOrdinal).concat(hpccOrdinal).concat(flatuiOrdinal));\n let scale = null;\n\n if (colors) {\n scale = d3ScaleOrdinal().range(colors);\n } else {\n if (d3Ordinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal(d3Schemes[id]);\n } else if (flatuiOrdinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal().range(flatuiSchemes[id]);\n } else if (hpccOrdinal.indexOf(id) >= 0) {\n let newColors = [];\n switch (id) {\n case \"hpcc10\":\n const defColors = palette_ordinal(\"default\").colors();\n newColors = defColors.filter(function (_item, idx) {\n if (idx % 2) {\n return true;\n }\n return false;\n });\n break;\n case \"hpcc20\":\n newColors = palette_ordinal(\"category10\").colors().concat(palette_ordinal(\"hpcc10\").colors());\n break;\n }\n scale = d3ScaleOrdinal().range(newColors);\n } else if (brewerOrdinal.indexOf(id) >= 0) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = d3ScaleOrdinal().range(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (!scale) {\n // Default to Category20 ---\n scale = d3ScaleOrdinal(d3SchemeCategory20);\n }\n colors = scale.range();\n }\n const ordinal: any = function (_) {\n return scale(_);\n };\n ordinal.type = function () {\n return \"ordinal\";\n };\n ordinal.id = function (_) {\n if (!arguments.length) return id;\n id = _;\n return ordinal;\n };\n ordinal.colors = function (_) {\n if (!arguments.length) return colors;\n colors = _;\n return ordinal;\n };\n ordinal.clone = function (newID) {\n ordinalCache[newID] = palette_ordinal(newID, this.colors());\n return ordinalCache[newID];\n\n };\n ordinal.cloneNotExists = function (newID) {\n if (ordinalCache[newID]) {\n return ordinalCache[newID];\n }\n return this.clone(newID);\n };\n ordinal.switch = function (_id, _colors) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchOrdinalItem(_id, _colors) : fetchOrdinalItem();\n };\n\n return ordinal;\n}\n\nconst rainbowCache = {};\nexport interface RainbowPaletteFunc extends PaletteFunc {\n (value: number, domainLow: number, domainHigh: number): string;\n}\nexport function fetchRainbowItem(): string[];\nexport function fetchRainbowItem(id: string): RainbowPaletteFunc;\nexport function fetchRainbowItem(id: string, colors: string[], steps?: number): RainbowPaletteFunc;\nexport function fetchRainbowItem(id?: string, colors?: string[], steps?: number): string[] | RainbowPaletteFunc {\n if (!id) return palette_rainbow();\n let retVal = rainbowCache[id];\n if (!retVal) {\n retVal = palette_rainbow(id, colors, steps);\n rainbowCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_rainbow(id?, _colors?, _steps?) {\n if (!arguments.length) {\n const retVal = [\"default\"];\n for (const key in m_colorbrewer) {\n if (brewerOrdinal.indexOf(key) === -1) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n\n let scale = null;\n let colors = _colors;\n\n const _custom = function (colors, steps?) {\n steps = steps || 32;\n const subPaletteSize = Math.ceil(steps / (colors.length - 1));\n const range = [];\n let prevColor = null;\n colors.forEach(function (color) {\n if (prevColor) {\n const scale = d3ScaleLinear()\n .domain([0, subPaletteSize])\n .range([prevColor, color])\n .interpolate(d3InterpolateLab as any)\n ;\n for (let i = 0; i < subPaletteSize; ++i) {\n range.push(scale(i));\n }\n }\n prevColor = color;\n });\n scale = d3ScaleQuantize().domain([0, 100]).range(range);\n return scale;\n };\n\n if (_colors) {\n scale = _custom(_colors, _steps);\n } else {\n if (m_colorbrewer[id]) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = _custom(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (m_d3[id]) {\n scale = d3ScaleSequential(m_d3[id]).domain([0, 100]);\n }\n if (!scale) {\n scale = _custom(m_colorbrewer.RdYlGn[11]);\n }\n colors = scale.range ? scale.range() : scale;\n\n }\n const rainbow: any = function (x, low, high) {\n if (low === high) {\n return scale.domain([low - 1, high + 1])(x);\n }\n return scale.domain([low, high])(x);\n };\n rainbow.type = function () {\n return \"rainbow\";\n };\n rainbow.id = function (_) {\n if (!arguments.length) return id;\n id = _;\n return rainbow;\n };\n rainbow.colors = function (_) {\n if (!arguments.length) return colors;\n colors = _;\n return rainbow;\n };\n rainbow.clone = function (newID) {\n rainbowCache[newID] = palette_rainbow(newID, this.colors());\n return rainbowCache[newID];\n };\n rainbow.cloneNotExists = function (newID) {\n if (rainbowCache[newID]) {\n return rainbowCache[newID];\n }\n return this.clone(newID);\n };\n rainbow.switch = function (_id, _colors) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchRainbowItem(_id, _colors) : fetchRainbowItem();\n };\n\n return rainbow;\n}\n\nexport function test(ordinalDivID, brewerDivID, customDivID, customArr, steps) {\n d3Select(ordinalDivID)\n .selectAll(\".palette\")\n .data(palette_ordinal(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch\").data(function (d) { return palette_ordinal(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch\")\n .style(\"background-color\", function (d: any) { return d; });\n\n d3Select(brewerDivID)\n .selectAll(\".palette\")\n .data(palette_rainbow(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function (d) { return palette_rainbow(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"height\", (256 / 32) + \"px\")\n .style(\"background-color\", function (d: any) { return d; });\n\n const palette = { id: customArr.join(\"_\") + steps, scale: palette_rainbow(\"custom\", customArr, steps) };\n d3Select(customDivID)\n .selectAll(\".palette\")\n .data([palette], function (d: any) { return d.id; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function () { return \"aaa\"; /*d.from + \"->\" + d.to;*/ })\n .on(\"click\", function (d) {\n console.info(d3Values(d.id).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function () {\n const retVal = [];\n for (let i = 0; i <= 255; ++i) {\n retVal.push(palette.scale(i, 0, 255));\n }\n return retVal;\n })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"background-color\", function (d) { return d; });\n}\n\nm_colorbrewer.RdWhGr = {\n 3: [\"red\", \"white\", \"green\"]\n};\n\nexport const ordinal = fetchOrdinalItem;\nexport const rainbow = fetchRainbowItem;\nexport function textColor(backgroundColor: string): string {\n let rgb;\n switch (backgroundColor) {\n case \"\":\n case \"transparent\":\n rgb = d3RGB(\"white\");\n break;\n default:\n rgb = d3RGB(backgroundColor);\n }\n return ((rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114) > 149) ? \"black\" : \"white\";\n}\n","import { select as d3Select } from \"d3-selection\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Shape.css\";\n\nexport class Shape extends SVGWidget {\n protected _tooltipElement;\n\n constructor() {\n super();\n }\n\n contains(point) {\n switch (this.shape()) {\n case \"circle\":\n return this.containsCircle(this.radius(), point);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n intersection(pointA, pointB) {\n switch (this.shape()) {\n case \"circle\":\n return this.intersectCircle(this.radius(), pointA, pointB);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n }\n\n _prevHash;\n update(_domNode, element) {\n const shape = element.selectAll(\"rect,circle,ellipse,path\").data([this.shape()], function (d) { return d; });\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const context = this;\n shape.enter().append(this.getShapeElementTag(this.shape()))\n .attr(\"class\", \"common_Shape\")\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement = element2.append(\"title\");\n })\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n .merge(shape)\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement.text(context.tooltip());\n switch (context.shape()) {\n case \"circle\":\n const radius = context.radius();\n element2\n .attr(\"r\", radius)\n ;\n break;\n case \"square\":\n const width = Math.max(context.width(), context.height());\n element2\n .attr(\"x\", -width / 2)\n .attr(\"y\", -width / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", width)\n .attr(\"height\", width)\n ;\n break;\n case \"rect\":\n element2\n .attr(\"x\", -context.width() / 2)\n .attr(\"y\", -context.height() / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", context.width())\n .attr(\"height\", context.height())\n ;\n break;\n case \"ellipse\":\n element2\n .attr(\"rx\", context.width() / 2)\n .attr(\"ry\", context.height() / 2)\n ;\n break;\n case \"pin\":\n element2\n .attr(\"d\", context.pinPath())\n ;\n break;\n }\n })\n ;\n shape.exit().remove();\n }\n }\n getShapeElementTag(_shape) {\n switch (_shape) {\n case \"square\":\n return \"rect\";\n case \"pin\":\n return \"path\";\n }\n return _shape;\n }\n pinPath() {\n const radius = this.cornerRadius();\n const arrow_h = this.arrowHeight();\n const arrow_w = this.arrowWidth();\n const width = this.width();\n const height = this.height() - arrow_h;\n const x = 0 - width / 2;\n const y = 0 - height;\n const arrow_b = (width - radius * 2 - arrow_w) / 2;\n return \"M\" + x + \",\" + y +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + radius + \",\" + -radius +\n \"h\" + (width + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + radius +\n \"v\" + (height + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + -radius + \",\" + radius +\n \"h\" + -arrow_b +\n \"l\" + -arrow_w / 2 + \",\" + arrow_h +\n \"l\" + -arrow_w / 2 + \",\" + -arrow_h +\n \"h\" + -arrow_b +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + -radius + \",\" + -radius +\n \"z\";\n }\n\n click() {\n }\n\n dblclick() {\n }\n\n}\nShape.prototype._class += \" common_Shape\";\n\nexport interface Shape {\n shape(): string;\n shape(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n radius(): number;\n radius(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\n\nShape.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\", \"rect\", \"ellipse\", \"pin\"], { tags: [\"Private\"] });\nShape.prototype.publish(\"width\", 24, \"number\", \"Width\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"height\", 24, \"number\", \"Height\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"colorStroke\", null, \"html-color\", \"Stroke Color\", null, { optional: true });\nShape.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { optional: true });\nShape.prototype.publish(\"radius\", null, \"number\", \"Radius\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"cornerRadius\", 3, \"number\", \"cornerRadius\");\nShape.prototype.publish(\"arrowHeight\", 5, \"number\", \"arrowHeight\");\nShape.prototype.publish(\"arrowWidth\", 10, \"number\", \"arrowWidth\");\nShape.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n\nconst _origRadius = Shape.prototype.radius;\nShape.prototype.radius = function (_?) {\n const retVal = _origRadius.apply(this, arguments);\n if (arguments.length) {\n this.width(_);\n this.height(_);\n return retVal;\n }\n return Math.max(this.width(), this.height()) / 2;\n};\n","import { FAChar } from \"./FAChar\";\nimport { textColor } from \"./Palette\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Icon.css\";\n\nexport class Icon extends SVGWidget {\n\n protected _shapeWidget;\n protected _faChar;\n protected _defs;\n protected _root;\n protected _tooltipElement;\n\n constructor() {\n super();\n\n this._shapeWidget = new Shape();\n this._faChar = new FAChar();\n }\n\n getBBox(refresh = false, round = false) {\n const diameter = this.diameter();\n return {\n x: - diameter / 2,\n y: - diameter / 2,\n width: diameter,\n height: diameter\n };\n }\n\n contains(point) {\n return this._shapeWidget.contains(point);\n }\n\n intersection(pointA, pointB) {\n return this._shapeWidget.intersection(pointA, pointB);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._defs = element.append(\"defs\");\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_circle\")\n .append(\"circle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_square\")\n .append(\"rect\")\n ;\n this._root = element.append(\"g\");\n this._shapeWidget\n .target(this._root.node())\n ;\n this._faChar\n .target(element.node())\n ;\n this._tooltipElement = element.append(\"title\");\n const context = this;\n element\n .on(\"click\", function (el) {\n context.click(el);\n })\n .on(\"dblclick\", function (el) {\n context.dblclick(el);\n })\n ;\n }\n\n click(_domNode) {\n // console.log(\"Clicked the icon\");\n }\n\n dblclick(_domNode) {\n // console.log(\"Double clicked the icon\");\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const diameter = this.diameter();\n const radius = diameter / 2;\n this._defs.select(\"circle\")\n .attr(\"r\", radius)\n ;\n this._defs.select(\"rect\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n this._faChar\n .fontSize(diameter * (100 - this.paddingPercent()) / 100)\n .render()\n ;\n this._shapeWidget\n .shape(this.shape())\n .width(diameter)\n .height(diameter)\n .render()\n ;\n const image = this._root.selectAll(\"image\").data(this.imageUrl() ? [this.imageUrl()] : [], function (d) { return d; });\n image.enter()\n .append(\"image\")\n .attr(\"xlink:href\", this.imageUrl())\n .merge(image)\n .attr(\"clip-path\", \"url(#clip_\" + this.id() + \"_\" + this.shape() + \")\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n if (this.shape_colorFill_exists() && !this.image_colorFill_exists()) {\n this.image_colorFill(textColor(this.shape_colorFill()));\n }\n image.exit()\n .remove()\n ;\n this._tooltipElement.text(this.tooltip());\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this._shapeWidget\n .target(null)\n ;\n this._faChar\n .target(null)\n ;\n }\n\n shape: { (): string; (_: string): Icon; };\n faChar: { (): string; (_: string): Icon; };\n imageUrl: { (): string; (_: string): Icon; };\n image_colorFill: { (): string; (_: string): Icon; };\n image_colorFill_exists: () => boolean;\n tooltip: { (): string; (_: string): Icon; };\n diameter: { (): number; (_: number): Icon; };\n paddingPercent: { (): number; (_: number): Icon; };\n shape_colorFill: { (): string; (_: string): Icon; };\n shape_colorFill_exists: () => boolean;\n shape_colorStroke: { (): string; (_: string): Icon; };\n}\nIcon.prototype._class += \" common_Icon\";\n\nIcon.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\"], { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"faChar\", \"_faChar\", \"char\");\nIcon.prototype.publishProxy(\"fontFamily\", \"_faChar\", \"text_fontFamily\");\nIcon.prototype.publish(\"imageUrl\", null, \"string\", \"Image URL\", null, { optional: true });\nIcon.prototype.publishProxy(\"image_colorFill\", \"_faChar\", \"text_colorFill\");\nIcon.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"diameter\", 24, \"number\", \"Diameter\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"paddingPercent\", 45, \"number\", \"Padding Percent\", null, { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"shape_colorFill\", \"_shapeWidget\", \"colorFill\");\nIcon.prototype.publishProxy(\"shape_colorStroke\", \"_shapeWidget\", \"colorStroke\");\n","import { local as d3Local } from \"d3-selection\";\nimport { Icon } from \"./Icon\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport { BBox, Widget } from \"./Widget\";\n\nexport interface IAnnotation {\n faChar: string;\n tooltip?: string;\n shape_colorFill?: string;\n shape_colorStroke?: string;\n image_colorFill?: string;\n shape?: string;\n}\n\nexport class Entity extends SVGWidget {\n protected _icon_widget: Icon;\n protected _background_widget: Shape;\n protected _title_widget: Text;\n protected _desc_widget: Text;\n protected _annotation_widgets: { [idx: number]: { widget: SVGWidget, bbox: BBox } };\n protected _element_anno;\n protected _element_background;\n protected _element_desc;\n protected _element_icon;\n protected _element_title;\n\n private _annotationLocal = d3Local<Icon>();\n\n constructor() {\n super();\n\n this._background_widget = new Shape();\n this._icon_widget = new Icon();\n this._title_widget = new Text();\n this._desc_widget = new Text();\n this._annotation_widgets = {};\n }\n getAnnotationsBBox(): BBox {\n let retVal: BBox;\n for (const key in this._annotation_widgets) {\n const bbox = this._annotation_widgets[key].bbox;\n if (!retVal) {\n retVal = bbox;\n } else {\n retVal.x = Math.min(retVal.x, bbox.x);\n retVal.y = Math.min(retVal.y, bbox.y);\n retVal.width = Math.max(retVal.width, bbox.width);\n retVal.height = Math.max(retVal.height, bbox.height);\n }\n }\n return retVal || { x: 0, y: 0, width: 0, height: 0 };\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .on(\"mouseover\", () => {\n element.classed(\"hovering\", true);\n this.render();\n })\n .on(\"mouseout\", () => {\n element.classed(\"hovering\", false);\n this.render();\n })\n ;\n\n this._element_background = element.append(\"g\").attr(\"class\", \"entity_shape\");\n this._element_icon = element.append(\"g\").attr(\"class\", \"entity_icon\");\n this._element_title = element.append(\"g\").attr(\"class\", \"entity_title\");\n this._element_desc = element.append(\"g\").attr(\"class\", \"entity_desc\");\n this._element_anno = element.append(\"g\").attr(\"class\", \"entity_anno\");\n\n this._background_widget\n .target(this._element_background.node());\n this._icon_widget\n .shape_colorFill(\"none\")\n .shape_colorStroke(\"none\")\n .target(this._element_icon.node());\n this._title_widget\n .target(this._element_title.node());\n this._desc_widget\n .target(this._element_desc.node());\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._desc_widget\n .fontSize(this.descriptionFontSize());\n const context = this;\n this._annotation_widgets = {};\n let annoXPos = 0;\n const annotations = this._element_anno.selectAll(\".annotation\").data([...this.annotationIcons()].reverse());\n annotations.enter().append(\"g\")\n .attr(\"class\", \"annotation\")\n .each(function (this: SVGGElement, d, idx) {\n const anno = new Icon()\n .diameter(context.annotationDiameter())\n .paddingPercent(context.annotationPaddingPercent())\n .target(this)\n .shape(\"square\")\n ;\n context._annotationLocal.set(this, anno);\n })\n .merge(annotations)\n .each(function (this: SVGGElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n if (typeof d.faChar !== \"undefined\") anno.faChar(d.faChar);\n if (typeof d.shape !== \"undefined\") anno.shape(d.shape);\n if (typeof d.image_colorFill !== \"undefined\") anno.image_colorFill(d.image_colorFill);\n if (typeof d.shape_colorFill !== \"undefined\") anno.shape_colorFill(d.shape_colorFill);\n if (typeof d.shape_colorStroke !== \"undefined\") anno.shape_colorStroke(d.shape_colorStroke);\n const annoDiam = anno.diameter();\n anno\n .x(annoXPos - annoDiam)\n .y(annoDiam / 2)\n .render()\n ;\n annoXPos -= annoDiam + context.annotationSpacing();\n context._annotation_widgets[idx] = {\n widget: anno,\n bbox: anno.getBBox(true)\n };\n });\n annotations.exit()\n .each(function (this: HTMLElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n anno.target(null);\n })\n .remove();\n }\n exit(domNode, element) {\n this._desc_widget.target(null);\n this._title_widget.target(null);\n this._icon_widget.target(null);\n this._background_widget.target(null);\n super.exit(domNode, element);\n }\n moveAnnotations(x_offset: number, y_offset: number) {\n this._element_anno.attr(\"transform\", `translate(${x_offset}, ${y_offset})`);\n }\n render(callback?: (w: Widget) => void) {\n return super.render(w => {\n this._background_widget.render();\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntity.prototype._class += \" common_Entity\";\n\nexport interface Entity {\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n padding(): number;\n padding(_: number): this;\n paddingPercent(): number;\n paddingPercent(_: number): this;\n\n annotationIcons(): IAnnotation[];\n annotationIcons(_: IAnnotation[]): this;\n annotationDiameter(): number;\n annotationDiameter(_: number): this;\n annotationSpacing(): number;\n annotationSpacing(_: number): this;\n annotationPaddingPercent(): number;\n annotationPaddingPercent(_: number): this;\n icon(): string;\n icon(_: string): this;\n iconColor(): string;\n iconColor(_: string): this;\n iconDiameter(): number;\n iconDiameter(_: number): this;\n iconPaddingPercent(): number;\n iconPaddingPercent(_: number): this;\n description(): string;\n description(_: string): this;\n descriptionColor(): string;\n descriptionColor(_: string): this;\n descriptionFontFamily(): string;\n descriptionFontFamily(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n title(): string;\n title(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleFontFamily(): string;\n titleFontFamily(_: string): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n backgroundShape(): string;\n backgroundShape(_: string): this;\n backgroundColorFill(): string;\n backgroundColorFill(_: string): this;\n backgroundColorStroke(): string;\n backgroundColorStroke(_: string): this;\n}\n\nEntity.prototype.publish(\"padding\", 8, \"number\", \"padding\");\n\nEntity.prototype.publish(\"annotationPaddingPercent\", 38, \"number\", \"annotationPaddingPercent\");\nEntity.prototype.publish(\"annotationDiameter\", 14, \"number\", \"Annotation Diameter\");\nEntity.prototype.publish(\"annotationIcons\", [], \"array\", \"annotationIcons\"); // TODO: is this really used?\nEntity.prototype.publish(\"annotationSpacing\", 3, \"number\", \"annotationSpacing\");\n\nEntity.prototype.publishProxy(\"icon\", \"_icon_widget\", \"faChar\");\nEntity.prototype.publishProxy(\"iconColor\", \"_icon_widget\", \"image_colorFill\");\nEntity.prototype.publishProxy(\"iconDiameter\", \"_icon_widget\", \"diameter\");\nEntity.prototype.publishProxy(\"iconPaddingPercent\", \"_icon_widget\", \"paddingPercent\");\n\nEntity.prototype.publishProxy(\"title\", \"_title_widget\", \"text\");\nEntity.prototype.publishProxy(\"titleColor\", \"_title_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"titleFontFamily\", \"_title_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"titleFontSize\", \"_title_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"description\", \"_desc_widget\", \"text\");\nEntity.prototype.publishProxy(\"descriptionColor\", \"_desc_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"descriptionFontFamily\", \"_desc_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"descriptionFontSize\", \"_desc_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"backgroundShape\", \"_background_widget\", \"shape\");\nEntity.prototype.publishProxy(\"backgroundColorFill\", \"_background_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"backgroundColorStroke\", \"_background_widget\", \"colorStroke\");\n\nEntity.prototype.publishProxy(\"cornerRadius\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowHeight\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowWidth\", \"_background_widget\");\n","import { Entity } from \"./Entity\";\n\nexport class EntityCard extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update() {\n super.update.apply(this, arguments);\n\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const desc_bbox = this._desc_widget.getBBox(true);\n\n let anno_w = 0;\n let anno_h = 0;\n const anno_gap = this.annotationSpacing();\n for (const i of Object.keys(this._annotation_widgets)) {\n anno_w += this._annotation_widgets[i].bbox.width + anno_gap;\n anno_h = anno_h > this._annotation_widgets[i].bbox.height ? anno_h : this._annotation_widgets[i].bbox.height;\n }\n\n const _background_h = this.fixedHeight() !== null ? this.fixedHeight() : Math.max(\n title_bbox.height + desc_bbox.height + (this.padding() * 3),\n anno_h + icon_bbox.height + (this.padding() * 3)\n );\n const _background_w = this.fixedWidth() !== null ? this.fixedWidth() : Math.max(\n title_bbox.width + icon_bbox.width + (this.padding() * 3),\n anno_w + desc_bbox.width + (this.padding() * 3)\n );\n this._background_widget\n .height(_background_h)\n .width(_background_w);\n\n this._title_widget.move({\n x: -(_background_w / 2) + (title_bbox.width / 2) + this.padding(),\n y: -(_background_h / 2) + (title_bbox.height / 2) + this.padding()\n });\n this._icon_widget.move({\n x: (_background_w / 2) - (icon_bbox.width / 2) - this.padding(),\n y: -(_background_h / 2) + (icon_bbox.height / 2) + this.padding()\n });\n this._desc_widget.move({\n x: -(_background_w / 2) + (desc_bbox.width / 2) + this.padding(),\n y: (_background_h / 2) - (desc_bbox.height / 2) - this.padding()\n });\n this.moveAnnotations((_background_w / 2), (_background_h / 2) - anno_h - this.padding());\n }\n}\nEntityCard.prototype._class += \" common_EntityCard\";\n\nexport interface EntityCard {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityCard.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityCard.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n","import { Entity } from \"./Entity\";\n\nexport class EntityPin extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n super.update.apply(this, arguments);\n\n const is_hovering = element.classed(\"hovering\");\n\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n this._title_widget.display(!this.titleOnlyShowOnHover() || is_hovering);\n this._icon_widget.display(!this.iconOnlyShowOnHover() || is_hovering);\n this._desc_widget.display(!this.descriptionOnlyShowOnHover() || is_hovering);\n\n this._background_widget\n .height(background_bbox.height)\n .width(background_bbox.width);\n const icon_y = -background_bbox.height + icon_bbox.height + (this.padding() / 2);\n const title_y = icon_y + (icon_bbox.height / 2) + (title_bbox.height / 2) + this.padding();\n const desc_y = title_y + (title_bbox.height / 2) + (desc_bbox.height / 2) + this.padding();\n const anno_y = desc_y + (desc_bbox.height / 2) + this.padding();\n this._title_widget.move({\n x: 0,\n y: title_y\n });\n this._desc_widget.move({\n x: 0,\n y: desc_y\n });\n this._icon_widget.move({\n x: 0,\n y: icon_y\n });\n this.moveAnnotations(background_bbox.width / 2, anno_y);\n\n }\n calcHeight() {\n const is_hovering = true;\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n return background_bbox.height;\n }\n calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h) {\n const content_width = Math.max(title_bbox.width, icon_bbox.width, desc_bbox.width);\n const background_bbox = {\n width: content_width + (this.padding() * 2),\n height: icon_bbox.height + title_bbox.height + _anno_h + this.arrowHeight() + desc_bbox.height + (this.padding() * 5)\n };\n let remove_padding = 0;\n if (this.titleOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.iconOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.descriptionOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.annotationIcons().length === 0 || this.annotationOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n background_bbox.height -= remove_padding;\n return background_bbox;\n }\n}\nEntityPin.prototype._class += \" common_EntityPin\";\n\nexport interface EntityPin {\n titleOnlyShowOnHover(): boolean;\n titleOnlyShowOnHover(_: boolean): this;\n iconOnlyShowOnHover(): boolean;\n iconOnlyShowOnHover(_: boolean): this;\n descriptionOnlyShowOnHover(): boolean;\n descriptionOnlyShowOnHover(_: boolean): this;\n annotationOnlyShowOnHover(): boolean;\n annotationOnlyShowOnHover(_: boolean): this;\n}\n\nEntityPin.prototype.publish(\"titleOnlyShowOnHover\", false, \"boolean\", \"titleOnlyShowOnHover\");\nEntityPin.prototype.publish(\"iconOnlyShowOnHover\", false, \"boolean\", \"iconOnlyShowOnHover\");\nEntityPin.prototype.publish(\"descriptionOnlyShowOnHover\", false, \"boolean\", \"descriptionOnlyShowOnHover\");\nEntityPin.prototype.publish(\"annotationOnlyShowOnHover\", false, \"boolean\", \"annotationOnlyShowOnHover\");\n","import { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { Entity } from \"./Entity\";\nimport { HTMLWidget } from \"./HTMLWidget\";\nimport { publish } from \"./PropertyExt\";\nimport * as Utility from \"./Utility\";\nimport { InputField } from \"./Widget\";\n\nimport \"../src/EntityRect.css\";\n\nexport class EntityRect extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n this._desc_widget.text(\"\");\n super.update(domNode, element);\n }\n render(callback?: (w: EntityRect) => void) {\n return super.render((w: EntityRect) => {\n const icon_bbox = w.icon() === \"\" ? { width: 0, height: 0 } : this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const annotations_bbox = this.getAnnotationsBBox();\n\n let width = this.fixedWidth();\n if (!width) {\n width = icon_bbox.width + title_bbox.width + annotations_bbox.width + this.padding() * 4;\n }\n\n let height = this.fixedHeight();\n if (!height) {\n height = Math.max(icon_bbox.height, title_bbox.height, annotations_bbox.height) + this.padding() * 2;\n }\n\n this._background_widget\n .width(width)\n .height(height)\n .render()\n ;\n\n this._icon_widget.move({\n x: -(width / 2) + (icon_bbox.width),\n y: 0\n });\n\n this.moveAnnotations(width / 2, -annotations_bbox.height / 2);\n const iconWidth = icon_bbox.width > 0 ? icon_bbox.width + this.padding() : 0;\n const titleX = -(width / 2) + iconWidth + this.padding();\n const annoWidth = this.padding() / 2 + annotations_bbox.width + this.padding();\n const titleW = width - iconWidth - annoWidth;\n\n this._title_widget\n .move({\n x: titleX,\n y: 0\n })\n .anchor(\"start\")\n .width(titleW)\n .render()\n ;\n\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntityRect.prototype._class += \" common_EntityRect\";\n\nexport interface EntityRect {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityRect.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityRect.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n\nexport class EntityRectList extends HTMLWidget {\n static __inputs: InputField[] = [{\n id: \"borderColor\",\n type: \"string\"\n }, {\n id: \"icon\",\n type: \"string\"\n }, {\n id: \"iconColor\",\n type: \"string\"\n }, {\n id: \"title\",\n type: \"string\"\n }];\n\n @publish(64, \"number\", \"fixedHeight\")\n fixedHeight: publish<this, number>;\n @publish(\"#f8f8f8\", \"string\", \"Default Background Color\", null, { inputType: \"html-color\" })\n backgroundColor: publish<this, string>;\n @publish(null, \"set\", \"Background Color Column\", function () { return this.columns(); }, { optional: true })\n backgroundColorColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Border Color\", null, { inputType: \"html-color\" })\n borderColor: publish<this, string>;\n @publish(null, \"set\", \"Border Color Column\", function () { return this.columns(); }, { optional: true })\n borderColorColumn: publish<this, string>;\n @publish(\"\", \"string\", \"Icon\")\n icon: publish<this, string>;\n @publish(null, \"set\", \"Icon Column\", function () { return this.columns(); }, { optional: true })\n iconColumn: publish<this, string>;\n @publish(\"red\", \"string\", \"Default Icon Color\", null, { inputType: \"html-color\" })\n iconColor: publish<this, string>;\n @publish(null, \"set\", \"Icon Color Column \", function () { return this.columns(); }, { optional: true })\n iconColorColumn: publish<this, string>;\n @publish(null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true })\n titleColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Title Color\", null, { inputType: \"html-color\" })\n titleColor: publish<this, string>;\n @publish(null, \"set\", \"Title Color Column \", function () { return this.columns(); }, { optional: true })\n titleColorColumn: publish<this, string>;\n @publish(null, \"set\", \"Description Column\", function () { return this.columns(); }, { optional: true })\n descriptionColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Description Color\", null, { inputType: \"html-color\" })\n descriptionColor: publish<this, string>;\n @publish(null, \"set\", \"Description Color Column \", function () { return this.columns(); }, { optional: true })\n descriptionColorColumn: publish<this, string>;\n\n private _enityRectLocal = d3Local<EntityRect>();\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n entityRectData() {\n const columns = this.columns();\n const idxColumns = [\n \"backgroundColor\",\n \"borderColor\",\n \"icon\",\n \"iconColor\",\n \"title\",\n \"titleColor\",\n \"description\",\n \"descriptionColor\"\n ];\n const idxs = idxColumns.map(idxColumn => columns.indexOf(this[`${idxColumn}Column`]()));\n return this.data().map(row => {\n const retVal = {\n origRow: row\n };\n for (let i = 0; i < idxColumns.length; ++i) {\n retVal[idxColumns[i]] = idxs[i] >= 0 ? row[idxs[i]] : typeof this[`${idxColumns[i]}`] === \"function\" ? this[`${idxColumns[i]}`]() : \"\";\n }\n return retVal;\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-x\", \"hidden\")\n .style(\"overflow-y\", \"scroll\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const margin = { left: 8, top: 8, right: 8, bottom: 8 };\n const width = this.width() - margin.left - margin.right - 20; // -20 for VScroll (could do better)\n const height = this.fixedHeight() - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.entityRectData());\n svg.enter().append(\"svg\")\n .attr(\"class\", \"entityRectItem\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const entityRect = new EntityRect()\n .target(this)\n ;\n context._enityRectLocal.set(this, entityRect);\n })\n .merge(svg)\n .style(\"border-color\", d => d.borderColor)\n .each(function (d) {\n context._enityRectLocal.get(this)\n .pos({ x: width / 2, y: height / 2 })\n .resize({ width, height })\n .fixedWidth(width)\n .fixedHeight(height)\n .backgroundShape(\"rect\")\n .backgroundColorFill(d.backgroundColor)\n .backgroundColorStroke(\"none\")\n .icon(d.icon)\n .iconColor(d.iconColor)\n .iconDiameter(height / 2.6666)\n .iconPaddingPercent(0)\n .title(d.title)\n .titleFontSize(height / 2.6666)\n .titleColor(d.titleColor)\n .description(d.description)\n .descriptionColor(d.descriptionColor)\n .render()\n ;\n })\n ;\n svg.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nEntityRectList.prototype._class += \" common_EntityRectList\";\n","import { textColor } from \"./Palette\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport { ISize } from \"./Widget\";\n\nimport \"../src/TextBox.css\";\n\nexport class TextBox extends SVGWidget {\n\n protected _shape: Shape;\n protected _text: Text;\n\n constructor() {\n super();\n\n this._shape = new Shape()\n .shape(\"rect\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n this._text = new Text()\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n padding(_) {\n this.paddingLeft(_);\n this.paddingRight(_);\n this.paddingTop(_);\n this.paddingBottom(_);\n return this;\n }\n\n getTextX(width) {\n switch (this.anchor()) {\n case \"start\":\n return -width / 2;\n case \"end\":\n return width / 2;\n }\n return 0;\n }\n\n getBBox(refresh = false, round = false) {\n const textBBox = this._text.getBBox(true);\n const width = this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight();\n const height = this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom();\n return {\n x: -width - 2,\n y: -height - 2,\n width,\n height\n };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._shape\n .target(domNode)\n .tooltip(this.tooltip())\n ;\n this._text\n .target(domNode)\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const textBBox = this._text.getBBox(true);\n const size = {\n width: this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight(),\n height: this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom()\n };\n\n this._shape\n .width(size.width)\n .height(size.height)\n .render()\n ;\n\n this._text\n .x(this.getTextX(textBBox.width))\n .colorFill_default(this._shape.colorFill_exists() ? textColor(this._shape.colorFill()) : undefined)\n .render()\n ;\n\n if (this.fixedSize()) {\n switch (this.anchor()) {\n case \"start\":\n this._text\n .x(-this.fixedSize().width / 2 + textBBox.width / 2 + (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n case \"end\":\n this._text\n .x(this.fixedSize().width / 2 - textBBox.width / 2 - (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n }\n }\n this._text.visible(textBBox.width <= size.width && textBBox.height <= size.height);\n }\n }\n\n exit(domNode, element) {\n this._shape\n .target(null)\n ;\n this._text\n .target(null)\n ;\n super.exit(domNode, element);\n }\n\n click() {\n }\n\n dblclick() {\n }\n\n text: { (): string; (_: string): TextBox; };\n fontSize: { (): number; (_: number): TextBox; };\n shape_colorFill: { (): string; (_: string): TextBox; };\n shape_colorStroke: { (): string; (_: string): TextBox; };\n text_colorFill: { (): string; (_: string): TextBox; };\n text_fontFamily: { (): string; (_: string): TextBox; };\n paddingLeft: { (): number; (_: number): TextBox; };\n paddingRight: { (): number; (_: number): TextBox; };\n paddingTop: { (): number; (_: number): TextBox; };\n paddingBottom: { (): number; (_: number): TextBox; };\n anchor: { (): \"start\" | \"middle\" | \"end\"; (_: \"start\" | \"middle\" | \"end\"): TextBox; };\n fixedSize: { (): ISize; (_: ISize): TextBox; };\n tooltip: { (): string; (_: string): TextBox; };\n}\nTextBox.prototype._class += \" common_TextBox\";\n\nTextBox.prototype.publishProxy(\"text\", \"_text\");\nTextBox.prototype.publishProxy(\"fontSize\", \"_text\", \"fontSize\");\nTextBox.prototype.publishProxy(\"shape_colorStroke\", \"_shape\", \"colorStroke\");\nTextBox.prototype.publishProxy(\"shape_colorFill\", \"_shape\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\");\nTextBox.prototype.publish(\"paddingLeft\", 4, \"number\", \"Left padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingRight\", 4, \"number\", \"Right padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingTop\", 4, \"number\", \"Top padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingBottom\", 4, \"number\", \"Bottom padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publishProxy(\"anchor\", \"_text\");\nTextBox.prototype.publish(\"fixedSize\", null);\n\nTextBox.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n","import { Entity } from \"./Entity\";\nimport { TextBox } from \"./TextBox\";\n\nexport class EntityVertex extends Entity {\n protected _textbox_widget: TextBox;\n protected _element_textbox;\n constructor() {\n super();\n this._textbox_widget = new TextBox();\n }\n enter(domNode, element) {\n this._element_textbox = element.append(\"g\").attr(\"class\", \"entity_textbox\");\n super.enter(domNode, element);\n this._textbox_widget.target(this._element_textbox.node());\n }\n update() {\n super.update.apply(this, arguments);\n this._textbox_widget\n .text(this._title_widget.text());\n this._icon_widget\n .shape_colorFill(this.iconColorFill())\n .shape_colorStroke(this.iconColorStroke());\n this._background_widget\n .colorFill(\"none\")\n .colorStroke(\"none\");\n\n this._icon_widget.render();\n this._textbox_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const text_bbox = this._textbox_widget.getBBox(true);\n let _icon_x = 0;\n let _icon_y = -(text_bbox.height / 2) - (icon_bbox.height / 3);\n switch (this.iconAnchor()) {\n case \"start\":\n _icon_x = -(text_bbox.width / 2) + (icon_bbox.width / 3);\n break;\n case \"end\":\n _icon_x = (text_bbox.width / 2) - (icon_bbox.width / 3);\n break;\n case \"left\":\n _icon_x = -(text_bbox.width / 2) - (icon_bbox.width / 2);\n _icon_y = 0;\n break;\n }\n this._icon_widget.move({\n x: _icon_x,\n y: _icon_y\n });\n this.moveAnnotations(text_bbox.width / 2, text_bbox.height / 2);\n }\n exit(domNode, element) {\n this._textbox_widget.target(null);\n super.exit(domNode, element);\n }\n}\nEntityVertex.prototype._class += \" common_EntityVertex\";\n\nexport interface EntityVertex {\n iconAnchor(): string;\n iconAnchor(_: string): this;\n iconColorFill(): string;\n iconColorFill(_: string): this;\n iconColorStroke(): string;\n iconColorStroke(_: string): this;\n shape_colorStroke(): string;\n shape_colorStroke(_: string): this;\n shape_colorFill(): string;\n shape_colorFill(_: string): this;\n text_colorFill(): string;\n text_colorFill(_: string): this;\n\n textboxColorStroke(): string;\n textboxColorStroke(_: string): this;\n textboxColorFill(): string;\n textboxColorFill(_: string): this;\n textboxFontColor(): string;\n textboxFontColor(_: string): this;\n}\n\nEntityVertex.prototype.publish(\"iconAnchor\", \"start\", \"set\", \"Horizontal anchor position of icon\", [\"\", \"start\", \"middle\", \"end\", \"left\"]);\nEntityVertex.prototype.publish(\"iconColorFill\", null, \"html-color\", \"iconColorFill\");\nEntityVertex.prototype.publish(\"iconColorStroke\", null, \"html-color\", \"iconColorStroke\");\n\nEntityVertex.prototype.publishProxy(\"textboxColorStroke\", \"_textbox_widget\", \"shape_colorStroke\");\nEntityVertex.prototype.publishProxy(\"textboxColorFill\", \"_textbox_widget\", \"shape_colorFill\");\nEntityVertex.prototype.publishProxy(\"textboxFontColor\", \"_textbox_widget\", \"text_colorFill\");\n","import { select as d3Select } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget\";\n\nexport class Image extends HTMLWidget {\n private _imgElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const img = element.selectAll(\"img\").data(this.source() ? [this.source()] : [], function (d) { return d; });\n img.enter()\n .append(\"img\")\n .attr(\"src\", this.source())\n .style(\"opacity\", 0)\n .on(\"load\", function () {\n context._imgElement = d3Select(this);\n context.styleImageElement();\n context._imgElement.style(\"opacity\", 1);\n })\n ;\n this.styleImageElement();\n img.exit()\n .remove()\n ;\n }\n\n styleImageElement() {\n if (!this._imgElement) return;\n switch (this.sizing()) {\n case \"actual\":\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n break;\n case \"fit\":\n if (this.lockAspectRatio()) {\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n const bbox = this._imgElement.node().getBoundingClientRect();\n const xScale = bbox.width / this.width();\n const yScale = bbox.height / this.height();\n if (xScale > yScale) {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", (bbox.height / xScale) + \"px\");\n } else {\n this._imgElement.style(\"width\", (bbox.width / yScale) + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n } else {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n break;\n case \"custom\":\n this._imgElement.style(\"width\", this.customWidth());\n this._imgElement.style(\"height\", this.customHeight());\n break;\n }\n switch (this.alignment()) {\n case \"origin\":\n break;\n case \"center\":\n const bbox = this._imgElement.node().getBoundingClientRect();\n this._imgElement.style(\"margin-left\", `${(this.width() - bbox.width) / 2}px`);\n this._imgElement.style(\"margin-top\", `${(this.height() - bbox.height) / 2}px`);\n break;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n source: { (): string; (_: string): Image; };\n sizing: { (): string; (_: string): Image; };\n customWidth: { (): string; (_: string): Image; };\n customHeight: { (): string; (_: string): Image; };\n lockAspectRatio: { (): boolean; (_: boolean): Image; };\n alignment: { (): string; (_: string): Image; };\n}\nImage.prototype._class += \" common_Image\";\n\nImage.prototype.publish(\"source\", null, \"string\", \"Image Source\", null, { tags: [\"Basic\"] });\nImage.prototype.publish(\"sizing\", \"actual\", \"set\", \"Controls sizing mode\", [\"actual\", \"fit\", \"custom\"], { tags: [\"Basic\"] });\nImage.prototype.publish(\"customWidth\", \"50%\", \"string\", \"Applies this width to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"customHeight\", \"20%\", \"string\", \"Applies this height to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"lockAspectRatio\", true, \"boolean\", \"Locks the aspect ratio when scaling/stretching\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"fit\" });\nImage.prototype.publish(\"alignment\", \"center\", \"set\", \"Image Alignment\", [\"center\", \"origin\"], { tags: [\"Basic\"] });\n","import { IList } from \"./IList\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { TextBox } from \"./TextBox\";\n\nimport \"../src/List.css\";\n\nexport class List extends SVGWidget implements IList {\n\n protected _listWidgets;\n\n constructor() {\n super();\n\n this._listWidgets = {};\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const line = element.selectAll(\".line\").data(this.data(), function (d) { return d; });\n const lineEnter = line.enter().append(\"g\")\n .attr(\"class\", \"line\")\n .each(function (d) {\n const newTextBox = new TextBox()\n .target(this)\n .paddingTop(0)\n .paddingBottom(0)\n .paddingLeft(8)\n .paddingRight(8)\n .text(d)\n .render()\n ;\n newTextBox.element()\n .on(\"click\", function (d2) {\n context.click(d2.text());\n })\n .on(\"dblclick\", function (d2) {\n context.dblclick(d2.text());\n })\n ;\n context._listWidgets[d] = newTextBox;\n })\n ;\n\n let listHeight = 0;\n let listWidth = 0;\n for (const key in this._listWidgets) {\n if (!this._listWidgets.hasOwnProperty(key)) continue;\n const bbox = this._listWidgets[key].getBBox();\n listHeight += bbox.height;\n if (listWidth < bbox.width)\n listWidth = bbox.width;\n }\n\n let yPos = -listHeight / 2; // + lineHeight / 2;\n lineEnter.merge(line).each(function (d) {\n const widget = context._listWidgets[d];\n const bbox = widget.getBBox();\n widget\n .pos({ x: 0, y: yPos + bbox.height / 2 })\n .anchor(context.anchor())\n .fixedSize({ width: listWidth, height: bbox.height })\n .render()\n ;\n yPos += bbox.height;\n });\n line.exit()\n .remove()\n .each(function (d) {\n context._listWidgets[d].target(null);\n delete context._listWidgets[d];\n })\n ;\n }\n\n exit(domNode, element) {\n for (const key in this._listWidgets) {\n if (this._listWidgets.hasOwnProperty(key)) {\n this._listWidgets[key].target(null);\n }\n }\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n // console.log(\"Click: \" + d);\n }\n\n dblclick(d) {\n // console.log(\"Double click: \" + d);\n }\n\n anchor: { (): string; (_: string): List; };\n}\nList.prototype._class += \" common_List\";\n\nList.prototype.publish(\"anchor\", \"start\", \"set\", \"Anchor Position\", [\"\", \"start\", \"middle\", \"end\"], { tags: [\"Private\"] });\n","import { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Icon } from \"./Icon\";\nimport { IMenu } from \"./IMenu\";\nimport { List } from \"./List\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Menu.css\";\n\nexport class Menu extends SVGWidget implements IMenu {\n protected _icon = new Icon().shape(\"square\").diameter(14).paddingPercent(0);\n protected _list = new List();\n protected _open;\n\n constructor() {\n super();\n\n const context = this;\n this._list.click = function (d) {\n d3Event.stopPropagation();\n context.hideMenu();\n context.click(d);\n };\n this._open = false;\n }\n\n toggleMenu() {\n if (!this._open) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n\n showMenu() {\n this.preShowMenu();\n this._open = true;\n this._list\n .data(this.data())\n .render()\n ;\n\n const bbox = this._icon.getBBox(true);\n const menuBBox = this._list.getBBox(true);\n const pos = {\n x: bbox.width / 2 - menuBBox.width / 2,\n y: bbox.height / 2 + menuBBox.height / 2\n };\n this._list\n .move(pos)\n ;\n const context = this;\n d3Select(\"body\")\n .on(\"click.\" + this._id, function () {\n if (context._open) {\n context.hideMenu();\n }\n })\n ;\n }\n\n hideMenu() {\n d3Select(\"body\")\n .on(\"click.\" + this._id, null)\n ;\n this._open = false;\n this._list\n .data([])\n .render()\n ;\n this.postHideMenu();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._icon\n .target(domNode)\n .render()\n ;\n\n this._list\n .target(domNode)\n .render()\n ;\n\n const context = this;\n this._icon.element()\n .on(\"click\", function () {\n d3Event.stopPropagation();\n context.toggleMenu();\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", this.data().length === 0)\n ;\n\n this._icon\n .faChar(this.faChar())\n .paddingPercent(this.paddingPercent())\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._icon\n .target(null)\n ;\n\n this._list\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n }\n preShowMenu() {\n }\n postHideMenu() {\n }\n\n faChar: { (): string; (_: string): Menu; };\n paddingPercent: { (): number; (_: number): Menu; };\n}\nMenu.prototype._class += \" common_Menu\";\n\nMenu.prototype.publishProxy(\"faChar\", \"_icon\", null, \"\\uf0c9\");\nMenu.prototype.publishProxy(\"paddingPercent\", \"_icon\", null, 10);\n","import { PropertyExt, publish } from \"./PropertyExt\";\n\nexport class ProgressBar extends PropertyExt {\n\n @publish(5000, \"number\", \"Half Life\")\n halfLife: publish<this, number>;\n @publish(1.2, \"number\", \"Decay\")\n decay: publish<this, number>;\n @publish(2, \"number\", \"Size\")\n size: publish<this, number>;\n @publish(\"#2ed573\", \"string\", \"Color\")\n color: publish<this, string>;\n @publish(true, \"boolean\", \"Bar Blur\")\n blurBar: publish<this, boolean>;\n @publish(50, \"number\", \"Blur Size\")\n blurSize: publish<this, number>;\n @publish(\"#7bed9f\", \"string\", \"Blur Color (hex)\", null, { optional: true })\n blurColor: publish<this, string>;\n @publish(0.35, \"number\", \"Blur Opacity\")\n blurOpacity: publish<this, number>;\n\n protected _elementID: string;\n protected _running: boolean = false;\n protected _style;\n\n constructor() {\n super();\n }\n\n calcCSS(halflife: number, perc: number) {\n const bar_size = this.size();\n const bar_color = this.color();\n const blur_opacity = this.blurOpacity();\n const blur_opacity_hex = blur_opacity * 255 >= 16 ? Math.floor(blur_opacity * 255).toString(16).slice(-2) : \"00\";\n const blur_color = this.blurColor() || bar_color;\n const blur_size = this.blurSize();\n const blur_fx = this.blurBar() ? `background: radial-gradient(ellipse at 50% 50%, ${blur_color}${blur_opacity_hex}, ${blur_color}00, #00000000 ${blur_size}px);` : \"\";\n return `\n #${this._elementID}::before{\n content:\" \";display:block;position:absolute;\n height:${bar_size}px;width:${perc}%;\n left:0;top:0;\n background-color: ${bar_color};\n transition: width ${(halflife / 1000)}s;\n }\n #${this._elementID}::after{\n content:\" \";display:block;position:absolute;\n height:${blur_size}px;width:${blur_size * 2}px;\n left:calc(${perc}% - ${blur_size}px);\n top:${-((blur_size / 2) - (bar_size / 2))}px;\n background-color: ${bar_color};\n transition: left ${(halflife / 1000)}s;\n transform: rotate(1deg) translate(-${blur_size / 2.5}px,0px) scale(1.5,0.5);\n ${blur_fx}\n }\n `;\n }\n\n start() {\n this._running = true;\n this.updateProgress(this.halfLife(), 10);\n }\n\n finish() {\n this.updateProgress(100, 100);\n }\n\n enter(domNode, element) {\n this._elementID = element.attr(\"id\");\n if (!this._elementID) throw new Error(\"Target element requires an id attribute.\");\n this._style = element.insert(\"style\");\n }\n\n exit(_domNode, _element) {\n this._running = false;\n if (this._style)\n this._style.remove();\n delete this._style;\n }\n\n protected updateProgress(halflife: number, perc: number) {\n if (!this._running) return;\n if (this._style) {\n this._style.html(this.calcCSS(halflife, perc));\n }\n\n const percLimit = 95;\n halflife *= this.decay();\n perc = perc ? perc : 10;\n if (perc < percLimit) {\n setTimeout(() => {\n const _remaining = 100 - perc;\n this.updateProgress(halflife, perc + (_remaining / 2));\n }, perc === 10 ? 100 : halflife);\n } else if (perc === 100) {\n setTimeout(() => {\n this._running = false;\n if (this._style) {\n this._style.html(\"\");\n }\n }, halflife);\n }\n }\n}\nProgressBar.prototype._class += \" common_ProgressBar\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Icon } from \"./Icon\";\nimport { Menu } from \"./Menu\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\n\nimport \"../src/Surface.css\";\n\nexport class Surface extends SVGWidget {\n _origMenuParam;\n _origShowContent;\n\n protected _iconWidget;\n protected _containerWidget;\n protected _titleRectWidget;\n protected _textWidget;\n _menuWidget;\n protected _surfaceButtons;\n\n protected _clipRect;\n protected buttonContainer;\n\n constructor() {\n super();\n\n this._iconWidget = new Icon()\n .faChar(\"\\uf07b\")\n .paddingPercent(50)\n ;\n this._containerWidget = new Shape()\n .class(\"container\")\n .shape(\"rect\")\n ;\n this._titleRectWidget = new Shape()\n .class(\"title\")\n .shape(\"rect\")\n ;\n this._textWidget = new Text()\n .class(\"title\")\n ;\n this._menuWidget = new Menu()\n .paddingPercent(0)\n ;\n const context = this;\n this._menuWidget.preShowMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(false);\n }\n };\n this._menuWidget.postHideMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(true);\n }\n };\n\n this._surfaceButtons = [];\n }\n\n enter(_domNode, _element) {\n super.enter(_domNode, _element);\n const element = _element.append(\"g\").attr(\"class\", \"frame\");\n const domNode = element.node();\n this._clipRect = element.append(\"defs\").append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clip\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", this._size.width)\n .attr(\"height\", this._size.height)\n ;\n this._titleRectWidget\n .target(domNode)\n .render()\n .display(this.showTitle() && this.showIcon())\n ;\n this._iconWidget\n .target(domNode)\n .render()\n ;\n this._menuWidget\n .target(_domNode)\n ;\n this._textWidget\n .target(domNode)\n ;\n this._containerWidget\n .target(domNode)\n ;\n this.buttonContainer = d3Select(this._target).append(\"div\").attr(\"class\", \"svg-button-container\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n let width = this.width() - 1;\n const height = this.height() - 1;\n\n this._iconWidget\n .display(this.showTitle() && this.showIcon())\n .shape(this.icon_shape())\n .render()\n ;\n this._menuWidget\n .render()\n ;\n this._textWidget\n .text(this.title())\n .display(this.showTitle())\n .render()\n ;\n\n const surfaceButtons = this.buttonContainer.selectAll(\".surface-button\").data(this.buttonAnnotations());\n surfaceButtons.enter().append(\"button\").attr(\"class\", \"surface-button\")\n .each(function (button, idx) {\n const el = context._surfaceButtons[idx] = d3Select(this)\n .attr(\"class\", \"surface-button \" + (button.class ? button.class : \"\"))\n .attr(\"id\", button.id)\n .style(\"padding\", button.padding)\n .style(\"width\", button.width)\n .style(\"height\", button.height)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", function (d) { context.click(d); });\n if (button.font === \"FontAwesome\") {\n el\n .append(\"i\")\n .attr(\"class\", \"fa\")\n .text(function () { return button.label; });\n } else {\n el\n .text(function () { return button.label; });\n }\n })\n ;\n surfaceButtons.exit()\n .each(function (_d, idx) {\n const element2 = d3Select(this);\n delete context._surfaceButtons[idx];\n element2.remove();\n })\n ;\n\n const buttonClientHeight = this.showTitle() ? Math.max.apply(null, this._surfaceButtons.map(function (d) { return d.node().offsetHeight; })) : 0;\n const iconClientSize = this.showTitle() && this.showIcon() ? this._iconWidget.getBBox(true) : { width: 0, height: 0 };\n const textClientSize = this._textWidget.getBBox(true);\n const menuClientSize = this._menuWidget.getBBox(true);\n const _titleRegionHeight = Math.max(iconClientSize.height, textClientSize.height, menuClientSize.height, buttonClientHeight);\n const titleRegionHeight = this.showTitle() ? _titleRegionHeight : 0;\n const yTitle = (-height + _titleRegionHeight) / 2;\n\n const titleTextHeight = this.showTitle() ? Math.max(textClientSize.height, menuClientSize.height, buttonClientHeight) : 0;\n const titleTextWidth = this.showTitle() ? textClientSize.width + menuClientSize.width : 0;\n if (titleTextWidth > width) {\n width = titleTextWidth;\n }\n\n const topMargin = titleRegionHeight <= titleTextHeight ? 0 : (titleRegionHeight - titleTextHeight) / 2;\n const leftMargin = topMargin;\n\n this._titleRectWidget\n .pos({ x: leftMargin, y: yTitle })\n .width(width - leftMargin * 2)\n .height(titleTextHeight)\n .display(this.showTitle())\n .render()\n ;\n this._iconWidget\n .move({ x: -width / 2 + iconClientSize.width / 2, y: yTitle })\n ;\n this._menuWidget\n .move({ x: width / 2 - menuClientSize.width / 2 - this.menuPadding(), y: yTitle })\n ;\n this._textWidget\n .move({ x: (iconClientSize.width / 2 - menuClientSize.width / 2) / 2, y: yTitle })\n ;\n\n const xPos = context._titleRectWidget.node().getBoundingClientRect().left + (context._size.width - leftMargin * 2) - context.buttonGutter() - this.buttonContainer.node().offsetWidth;\n const yPos = context._titleRectWidget.node().getBoundingClientRect().top + ((titleTextHeight - this.buttonContainer.node().offsetHeight) / 2);\n if (!isNaN(xPos)) {\n this.buttonContainer.style(\"left\", xPos + \"px\");\n }\n if (!isNaN(yPos)) {\n this.buttonContainer.style(\"top\", yPos + \"px\");\n }\n\n if (this.showTitle()) {\n this._containerWidget\n .pos({ x: leftMargin / 2, y: titleRegionHeight / 2 - topMargin / 2 })\n .width(width - leftMargin)\n .height(height - titleRegionHeight + topMargin)\n .render()\n ;\n } else {\n this._containerWidget\n .pos({ x: 0, y: 0 })\n .width(width)\n .height(height)\n .render()\n ;\n }\n\n if (this.showContent()) {\n const xOffset = leftMargin;\n const yOffset = titleRegionHeight - topMargin;\n\n const content = element.selectAll(\".content\").data(this.content() ? [this.content()] : [], function (d) { return d._id; });\n content.enter().append(\"g\")\n .attr(\"class\", \"content\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clip)\")\n .each(function (d) {\n d.target(this);\n })\n .merge(content)\n .attr(\"transform\", \"translate(\" + (leftMargin / 2) + \", \" + (titleRegionHeight / 2 - topMargin / 2) + \")\")\n .each(function (d) {\n const padding = {\n left: 0,\n top: 0,\n right: 1,\n bottom: 1\n };\n d\n .resize({\n width: width - xOffset - (padding.left + padding.right),\n height: height - yOffset - (padding.top + padding.bottom)\n })\n ;\n })\n ;\n if (this.content()) {\n this._clipRect\n .attr(\"x\", -(width - xOffset) / 2)\n .attr(\"y\", -(height - yOffset) / 2)\n .attr(\"width\", width - xOffset)\n .attr(\"height\", height - yOffset)\n ;\n }\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n if (this._menuWidget.element() && this._menuWidget.element().node() && this._menuWidget.element().node().parentNode) {\n this._menuWidget.element().node().parentNode.appendChild(this._menuWidget.element().node()); // Make sure menu is on top (Z-Order POV)\n }\n }\n\n exit(domNode, element) {\n this._titleRectWidget\n .target(null)\n ;\n this._iconWidget\n .target(null)\n ;\n this._menuWidget\n .target(null)\n ;\n this._textWidget\n .target(null)\n ;\n this._containerWidget\n .target(null)\n ;\n if (this.content()) {\n this.content().target(null);\n }\n super.exit(domNode, element);\n }\n\n intersection(pointA, pointB) {\n const hits = [];\n const i1 = this._iconWidget.intersection(pointA, pointB, this._pos);\n if (i1) {\n hits.push({ i: i1, d: this.distance(i1, pointB) });\n }\n const i2 = this._titleRectWidget.intersection(pointA, pointB);\n if (i2) {\n hits.push({ i: i2, d: this.distance(i2, pointB) });\n }\n const i3 = this._containerWidget.intersection(pointA, pointB);\n if (i3) {\n hits.push({ i: i3, d: this.distance(i3, pointB) });\n }\n let nearest = null;\n hits.forEach(function (item) {\n if (nearest === null || nearest.d > item.d) {\n nearest = item;\n }\n });\n return nearest && nearest.i ? nearest.i : null;\n }\n\n click(d) {\n }\n\n showTitle: { (): boolean; (_: boolean): Surface; };\n title: { (): string; (_: string): Surface; };\n titleFontSize: { (): string; (_: string): Surface; };\n showIcon: { (): boolean; (_: boolean): Surface; };\n icon_faChar: { (): string; (_: string): Surface; };\n icon_shape: { (): string; (_: string): Surface; };\n content: { (): any; (_: any): Surface; };\n buttonAnnotations: { (): any[]; (_: any[]): Surface; };\n buttonGutter: { (): number; (_: number): Surface; };\n showContent: { (): boolean; (_: boolean): Surface; };\n menu: { (): any[]; (_: any[]): Surface; };\n menuPadding: { (): number; (_: number): Surface; };\n}\nSurface.prototype._class += \" common_Surface\";\n\nSurface.prototype.publish(\"showTitle\", true, \"boolean\", \"Show Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publishProxy(\"titleFontSize\", \"_textWidget\", \"fontSize\");\nSurface.prototype.publish(\"showIcon\", true, \"boolean\", \"Show Title\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publishProxy(\"icon_faChar\", \"_iconWidget\", \"faChar\");\nSurface.prototype.publishProxy(\"icon_shape\", \"_iconWidget\", \"shape\");\n\nSurface.prototype.publish(\"content\", null, \"widget\", \"Content\", null, { tags: [\"Private\"] });\n\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"buttonGutter\", 25, \"number\", \"Space Between Menu and Buttons\", null, { tags: [\"Intermediate\"] });\n\nSurface.prototype.publish(\"showContent\", true, \"boolean\", \"Show Content\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menu\", [], \"array\", \"Menu List Data\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menuPadding\", 2, \"number\", \"Menu Padding\", null, { tags: [\"Advanced\"] });\n\nSurface.prototype._origMenuParam = Surface.prototype.menu;\nSurface.prototype.menu = function (this: Surface, _?) {\n Surface.prototype._origMenuParam.apply(this, arguments);\n if (arguments.length) {\n this._menuWidget.data(_);\n return this;\n }\n return this._menuWidget.data();\n};\n\nSurface.prototype._origShowContent = Surface.prototype.showContent;\nSurface.prototype.showContent = function (_?) {\n const retVal = Surface.prototype._origShowContent.apply(this, arguments);\n if (arguments.length) {\n if (this.content()) {\n this.content().visible(this.showContent());\n }\n }\n return retVal;\n};\n","import { dispatch as d3Dispatch } from \"d3-dispatch\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/ResizeSurface.css\";\n\nexport class ResizeSurface extends Surface {\n\n protected handleWidth;\n protected handles;\n protected dispatch;\n protected drag;\n protected _domNode;\n protected _dragHandlePos;\n protected _dragStartPos;\n protected _dragStartSize;\n protected _prevPosSize;\n protected _textPosSize;\n protected _iconPosSize;\n\n constructor() {\n super();\n\n this.handleWidth = 8;\n this.handles = [{ loc: \"NW\" }, { loc: \"N\" }, { loc: \"NE\" }, { loc: \"E\" }, { loc: \"SE\" }, { loc: \"S\" }, { loc: \"SW\" }, { loc: \"W\" }];\n\n const context = this;\n this.dispatch = d3Dispatch(\"sizestart\", \"size\", \"sizeend\");\n this.drag = d3Drag()\n .subject(function (d) { return d; })\n ;\n this.drag\n .on(\"start\", function (d) {\n context.dispatch.call(\"sizestart\", context, d.loc);\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context._dragHandlePos = { x: d.x, y: d.y };\n context._dragStartPos = context.pos();\n context._dragStartSize = context.size();\n context._prevPosSize = {\n x: context._dragStartPos.x,\n y: context._dragStartPos.y,\n width: context._dragStartSize.width,\n height: context._dragStartSize.height\n };\n context._textPosSize = context._textWidget.getBBox(true);\n context._iconPosSize = context._iconWidget.getBBox(true);\n context.showContent(false);\n }\n })\n .on(\"drag\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n const _dx = d3Event.x - context._dragHandlePos.x;\n const _dy = d3Event.y - context._dragHandlePos.y;\n const delta = { x: 0, y: 0, w: 0, h: 0 };\n switch (d.loc) {\n case \"NW\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n /* falls through */\n case \"N\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n break;\n case \"NE\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n /* falls through */\n case \"E\":\n delta.x = _dx / 2;\n delta.w = _dx;\n break;\n case \"SE\":\n delta.x = _dx / 2;\n delta.w = _dx;\n /* falls through */\n case \"S\":\n delta.y = _dy / 2;\n delta.h = _dy;\n break;\n case \"SW\":\n delta.y = _dy / 2;\n delta.h = _dy;\n /* falls through */\n case \"W\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n break;\n }\n const posSize = {\n x: context._dragStartPos.x + delta.x,\n y: context._dragStartPos.y + delta.y,\n width: context._dragStartSize.width + delta.w,\n height: context._dragStartSize.height + delta.h\n };\n if (posSize.width < context._iconPosSize.width * 2 + context._textPosSize.width) {\n posSize.x = context._prevPosSize.x;\n posSize.width = context._prevPosSize.width;\n }\n if (posSize.height < context._textPosSize.height + 48) {\n posSize.y = context._prevPosSize.y;\n posSize.height = context._prevPosSize.height;\n }\n context\n .pos({ x: posSize.x, y: posSize.y })\n .size({ width: posSize.width, height: posSize.height })\n .render()\n .getBBox(true)\n ;\n context.dispatch.call(\"size\", context, d.loc);\n context._prevPosSize = posSize;\n }\n })\n .on(\"end\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context\n .showContent(true)\n .render()\n ;\n context._containerWidget.getBBox(true);\n context._titleRectWidget.getBBox(true);\n context.dispatch.call(\"sizeend\", context, d.loc);\n }\n })\n ;\n }\n\n move(_) {\n const retVal = super.move.apply(this, arguments);\n this.updateHandles(this._domNode, this._element);\n return retVal;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this.updateHandles(domNode, element);\n }\n\n updateHandles(_domNode, _element) {\n const sizeHandles = this._placeholderElement.selectAll(\"rect\").data(this.handles, function (d) { return d.loc; });\n const sizeHandlesEnter = sizeHandles.enter().append(\"rect\")\n .attr(\"class\", function (d) { return \"resize\" + d.loc; })\n .call(this.drag)\n ;\n\n const l = this._pos.x + this._containerWidget._pos.x - this._containerWidget.width() / 2;\n const t = this._pos.y + this._titleRectWidget._pos.y - this._titleRectWidget.height() / 2;\n const r = this._pos.x + this._containerWidget._pos.x + this._containerWidget.width() / 2;\n const b = this._pos.y + this._containerWidget._pos.y + this._containerWidget.height() / 2;\n const w = r - l;\n const h = b - t;\n const context = this;\n sizeHandlesEnter.merge(sizeHandles)\n .each(function (d) {\n switch (d.loc) {\n case \"NW\":\n d.x = l - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"N\":\n d.x = l + context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"NE\":\n d.x = r - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"E\":\n d.x = r - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n case \"SE\":\n d.x = r - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"S\":\n d.x = l + context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"SW\":\n d.x = l - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"W\":\n d.x = l - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n }\n d3Select(this)\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n })\n ;\n }\n allowResize: { (): boolean; (_: boolean): ResizeSurface; };\n}\nResizeSurface.prototype._class += \" common_ResizeSurface\";\n\nResizeSurface.prototype.publish(\"allowResize\", true, \"boolean\", \"Sets if surface can be resized\", null, { tags: [\"Private\", \"Shared\"] });\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","import { event as d3Event } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget\";\nimport { fa5Class } from \"./Utility\";\nimport { Widget } from \"./Widget\";\n\nimport \"../src/TitleBar.css\";\n\n// Lite button for titlebar ---\nexport class Button extends HTMLWidget {\n private _enabled = true;\n private _i;\n\n constructor() {\n super();\n this._tag = \"a\";\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n const context = this;\n this._i = this._element\n .attr(\"href\", \"#\")\n .on(\"click\", function () {\n context.click();\n d3Event.preventDefault();\n })\n .on(\"mousemove\", this.mouseMove)\n .on(\"mouseout\", this.mouseOut)\n .append(\"i\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n this._i.attr(\"class\", `fa ${fa5Class(this.faChar())} fa-lg fa-fw`);\n }\n\n // Events ---\n click() {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n}\nButton.prototype._class += \" common_Button\";\nexport interface Button {\n faChar(): string;\n faChar(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nButton.prototype.publish(\"faChar\", \"\", \"string\", \"FontAwesome class\");\nButton.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// Sticky button ---\nexport class StickyButton extends Button {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element.classed(\"selected\", this.selected());\n }\n}\nStickyButton.prototype._class += \" common_StickyButton\";\nexport interface StickyButton {\n selected(): boolean;\n selected(_: boolean): this;\n}\nStickyButton.prototype.publish(\"selected\", false, \"boolean\");\n\n// Toggle button ---\nexport class ToggleButton extends StickyButton {\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this\n .selected(!this.selected())\n .render()\n ;\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n}\nToggleButton.prototype._class += \" common_ToggleButton\";\n\n// Spacer ---\nexport class Spacer extends HTMLWidget {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n element\n .attr(\"class\", this.vline() ? \"spacer vline\" : \"spacer\")\n .attr(\"href\", \"#\")\n .append(\"i\")\n ;\n }\n}\nSpacer.prototype._class += \" common_Spacer\";\n\nexport interface Spacer {\n vline(): boolean;\n vline(_: boolean): this;\n}\nSpacer.prototype.publish(\"vline\", true, \"boolean\");\n\nexport class SelectDropDown extends HTMLWidget {\n private _enabled = true;\n\n constructor() {\n super();\n this._tag = \"select\";\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n\n enter(domNode: HTMLSelectElement, element) {\n super.enter(domNode, element);\n const context = this;\n element.on(\"change\", function (d) {\n const values = context.values();\n for (const key in context.values()) {\n if (this.value === values[key]) {\n context.selected(key);\n break;\n }\n }\n context.click(this.value);\n });\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n\n const values = this.values();\n\n const options = element.selectAll(\".icon-bar-select-option\").data(Object.keys(values));\n const optionUpdate = options.enter().append(\"option\")\n .attr(\"class\", \"icon-bar-select-option\")\n .merge(options)\n .attr(\"value\", r => values[r])\n .attr(\"selected\", r => r === this.selected() ? \"selected\" : null)\n .text(r => r)\n ;\n options.exit().remove();\n optionUpdate.order();\n }\n\n // Events ---\n click(value) {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n}\nSelectDropDown.prototype._class += \" common_SelectDropDown\";\nexport interface SelectDropDown {\n values(): { [key: string]: string };\n values(_: { [key: string]: string }): this;\n selected(): string;\n selected(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nSelectDropDown.prototype.publish(\"values\", {}, \"object\", \"Label, Values\");\nSelectDropDown.prototype.publish(\"selected\", \"\", \"string\", \"Selected Item\");\nSelectDropDown.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// IconBar ---\nexport class IconBar extends HTMLWidget {\n _divIconBar;\n _buttons: Widget[] = [];\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._divIconBar = element.append(\"div\")\n .attr(\"class\", \"icon-bar\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n let buttons = this.buttons().filter(button => this.hiddenButtons().indexOf(button) < 0);\n buttons = buttons.reduce((prev, item, idx) => {\n if (item instanceof Spacer) {\n if ((prev.length === 0 || idx === buttons.length - 1)) {\n return prev;\n } else if (buttons[idx + 1] instanceof Spacer) {\n return prev;\n }\n }\n prev.push(item);\n return prev;\n }, []);\n const icons = this._divIconBar.selectAll(\".icon-bar-item\").data(buttons, (d: Widget) => d.id());\n icons.enter().append(\"div\")\n .attr(\"class\", \"icon-bar-item\")\n .each(function (this: HTMLElement, d: Widget) {\n d.target(this);\n })\n .merge(icons)\n .each(function (d: Widget) {\n d.render();\n })\n ;\n icons.exit()\n .each(function (d: Widget) {\n d.target(null);\n })\n .remove()\n ;\n icons.order();\n }\n\n exit(domNode, element) {\n this.buttons().forEach(b => b.target(null));\n super.exit(domNode, element);\n }\n}\nIconBar.prototype._class += \" common_IconBar\";\n\nexport interface IconBar {\n buttons(): Widget[];\n buttons(_: Widget[]): this;\n hiddenButtons(): Widget[];\n hiddenButtons(_: Widget[]): this;\n}\nIconBar.prototype.publish(\"buttons\", [], \"widgetArray\", null, { internal: true });\nIconBar.prototype.publish(\"hiddenButtons\", [], \"widgetArray\", null, { internal: true });\n\n// SelectionBar ---\nexport class SelectionButton extends StickyButton {\n _owner: SelectionBar;\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this.selected(true).render();\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n\n selected(): boolean;\n selected(_: boolean): this;\n selected(_?: boolean): boolean | this {\n const retVal = super.selected.apply(this, arguments);\n if (_ && this._owner) {\n this._owner.buttons().filter(sb => sb !== this && sb instanceof SelectionButton).forEach((sb: SelectionButton) => sb.selected(false).render());\n this._owner.selected(this);\n }\n return retVal;\n }\n}\nSelectionButton.prototype._class += \" common_SelectionButton\";\n\nexport class SelectionBar extends IconBar {\n\n buttons(): Array<SelectionButton | Spacer>;\n buttons(_: Array<SelectionButton | Spacer>): this;\n buttons(_?: Array<SelectionButton | Spacer>): Array<SelectionButton | Spacer> | this {\n const retVal = super.buttons.apply(this, arguments);\n if (arguments.length) {\n _.filter(b => b instanceof SelectionButton).forEach((sb: SelectionButton) => {\n sb._owner = this;\n });\n }\n return retVal;\n }\n\n // Events ---\n selected(row: SelectionButton) {\n }\n}\nSelectionBar.prototype._class += \" common_SelectionBar\";\n\n// Titlebar ---\nexport class TitleBar extends IconBar {\n\n _divTitle;\n _divTitleIcon;\n _divTitleText;\n _divDescriptionText;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n this._divTitle = element.append(\"div\")\n .attr(\"class\", \"title-title\")\n .style(\"min-width\", \"0px\")\n ;\n this._divTitleIcon = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-icon\")\n .style(\"font-family\", this.titleIconFont())\n .style(\"font-size\", `${this.titleIconFontSize()}px`)\n .style(\"width\", `${this.titleIconFontSize()}px`)\n ;\n this._divTitle.append(\"div\")\n .attr(\"class\", \"data-count\")\n ;\n this._divTitleText = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-text\")\n .style(\"font-family\", this.titleFont())\n .style(\"font-size\", `${this.titleFontSize()}px`)\n ;\n this._divDescriptionText = this._divTitle.append(\"div\")\n .attr(\"class\", \"description-text\")\n .style(\"font-family\", this.descriptionFont())\n ;\n\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n this._divTitleIcon\n .text(this.titleIcon())\n .style(\"display\", this.titleIcon() !== \"\" ? \"inline-block\" : \"none\")\n ;\n this._divTitleText\n .text(this.title())\n .attr(\"title\", this.title())\n ;\n this._divDescriptionText\n .style(\"display\", this.description_exists() ? \"block\" : \"none\")\n .style(\"font-size\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .style(\"line-height\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .text(this.description())\n ;\n\n super.update(domNode, element);\n }\n}\nTitleBar.prototype._class += \" common_TitleBar\";\n\nexport interface TitleBar {\n title(): string;\n title(_: string): this;\n titleIcon(): string;\n titleIcon(_: string): this;\n titleIconFont(): string;\n titleIconFont(_: string): this;\n titleFont(): string;\n titleFont(_: string): this;\n titleIconFontSize(): number;\n titleIconFontSize(_: number): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n description(): string;\n description(_: string): this;\n description_exists(): boolean;\n descriptionFont(): string;\n descriptionFont(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n}\nTitleBar.prototype.publish(\"titleIcon\", \"\", \"string\", \"Icon text\");\nTitleBar.prototype.publish(\"titleIconFont\", \"\", \"string\", \"Icon font-family\");\nTitleBar.prototype.publish(\"titleIconFontSize\", 28, \"number\", \"Icon font-size (pixels)\");\nTitleBar.prototype.publish(\"title\", \"\", \"string\", \"Title text\");\nTitleBar.prototype.publish(\"titleFont\", \"\", \"string\", \"Title font-family\");\nTitleBar.prototype.publish(\"titleFontSize\", 20, \"number\", \"Title font-size (pixels)\");\nTitleBar.prototype.publish(\"description\", null, \"string\", \"Description text\", null, { optional: true });\nTitleBar.prototype.publish(\"descriptionFont\", \"\", \"string\", \"Description font-family\");\nTitleBar.prototype.publish(\"descriptionFontSize\", 10, \"number\", \"Description font-size (pixels)\");\n","import { event as d3Event, mouse as d3Mouse } from \"d3-selection\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { safeRaise } from \"./Utility\";\nimport { Button, IconBar, Spacer, ToggleButton } from \"./TitleBar\";\n\nimport \"../src/SVGZoomWidget.css\";\n\nexport type MouseMode = \"zoom\" | \"marqueeSelection\";\n\nexport class SVGZoomWidget extends SVGWidget {\n\n protected _renderElement;\n\n private _currZoom;\n protected _zoomScale = 1;\n protected _zoomTranslate = [0, 0];\n protected _zoomRoot;\n protected _zoomGrab;\n protected _zoomG;\n private _prevZoomable;\n\n protected _marqueeSelectionRoot;\n protected _marqueeSelection;\n\n protected _autoSelectionMode = false;\n\n protected _toggleMarqueeSelection = new ToggleButton().faChar(\"fa-square-o\").tooltip(\"Marquee Selection\")\n .on(\"click\", () => {\n if (this._toggleMarqueeSelection.selected()) {\n this.mouseMode(\"marqueeSelection\");\n }\n this.updateIconBar();\n })\n ;\n\n protected _toggleZoom = new ToggleButton().faChar(\"fa-mouse-pointer\").tooltip(\"Zoom\")\n .on(\"click\", () => {\n if (this._toggleZoom.selected()) {\n this.mouseMode(\"zoom\");\n }\n this.updateIconBar();\n })\n ;\n\n _iconBar = new IconBar()\n .buttons([\n this._toggleMarqueeSelection,\n this._toggleZoom,\n new Spacer().vline(false),\n new Button().faChar(\"fa-arrows-alt\").tooltip(\"Zoom to fit\")\n .on(\"click\", () => {\n this.zoomToFit();\n }),\n new Spacer().vline(false),\n new Button().faChar(\"fa-plus\").tooltip(\"Zoom in\")\n .on(\"click\", () => {\n this.zoomPlus();\n }),\n new Button().faChar(\"fa-minus\").tooltip(\"Zoom out\")\n .on(\"click\", () => {\n this.zoomMinus();\n })\n ])\n ;\n\n constructor() {\n super();\n\n this._currZoom = d3Zoom()\n .scaleExtent([0.05, 20])\n .on(\"zoom end\", (evt) => {\n this.onZoomed();\n })\n ;\n }\n\n getScreenBBox(target: any) {\n let targetel = target;\n\n while (targetel.getScreenCTM == null && targetel.parentNode == null) {\n targetel = targetel.parentNode;\n }\n\n const bbox: any = {};\n const matrix = targetel.getScreenCTM();\n const tbbox = targetel.getBBox();\n const width = tbbox.width;\n const height = tbbox.height;\n const x = tbbox.x;\n const y = tbbox.y;\n const point = this._placeholderElement.node().createSVGPoint();\n point.x = x;\n point.y = y;\n\n bbox.nw = point.matrixTransform(matrix);\n point.x += width;\n bbox.ne = point.matrixTransform(matrix);\n point.y += height;\n bbox.se = point.matrixTransform(matrix);\n point.x -= width;\n bbox.sw = point.matrixTransform(matrix);\n point.y -= height / 2;\n bbox.w = point.matrixTransform(matrix);\n point.x += width;\n bbox.e = point.matrixTransform(matrix);\n point.x -= width / 2;\n point.y -= height / 2;\n bbox.n = point.matrixTransform(matrix);\n point.y += height;\n bbox.s = point.matrixTransform(matrix);\n\n return {\n x: bbox.nw.x,\n y: bbox.nw.y,\n width: bbox.se.x - bbox.nw.x,\n height: bbox.se.y - bbox.nw.y\n };\n }\n\n zoomScale(): number {\n return this._zoomScale;\n }\n\n zoomTranslate(): number[] {\n return this._zoomTranslate;\n }\n\n zoomExtent(range): void {\n this._currZoom.scaleExtent(range);\n }\n\n zoomTo(translate?, scale?, transitionDuration = 250) {\n translate = translate || this._zoomTranslate;\n scale = scale || this._zoomScale;\n transitionDuration = transitionDuration === undefined ? this.zoomDuration() : transitionDuration;\n\n this._zoomRoot.transition().duration(transitionDuration)\n .call(this._currZoom.transform, d3ZoomIdentity.translate(translate[0], translate[1]).scale(scale))\n ;\n }\n\n zoomPlus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1.33)\n ;\n }\n\n zoomMinus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1 / 1.33)\n ;\n }\n\n centerOnBBox(bbox, transitionDuration?) {\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const width = this.width();\n const height = this.height();\n\n const scale = this.zoomScale();\n const translate = [width / 2 - scale * x, height / 2 - scale * y];\n this.zoomTo(translate, scale, transitionDuration);\n }\n }\n\n getRenderElementBBox() {\n return this._renderElement.node().getBBox();\n }\n\n calcZoomToBBox(bbox, widthOnly: boolean = false, scale?: number) {\n const width = this.width();\n const height = this.height();\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const dx = bbox.width;\n const dy = bbox.height;\n\n let newScale = scale || 1 / (widthOnly ? dx / width : Math.max(dx / width, dy / height));\n if (this.zoomToFitLimit_exists() && newScale > this.zoomToFitLimit()) {\n newScale = this.zoomToFitLimit();\n }\n const translate = [width / 2 - newScale * x, height / 2 - newScale * y];\n return { translate, newScale };\n }\n return { translate: [width / 2, height / 2], newScale: scale };\n }\n\n zoomToBBox(bbox, transitionDuration?, widthOnly: boolean = false, scale?: number) {\n const { translate, newScale } = this.calcZoomToBBox(bbox, widthOnly, scale);\n this.zoomTo(translate, newScale, transitionDuration);\n }\n\n zoomToScale(scale, transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, undefined, scale);\n }\n }\n\n zoomToWidth(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, true);\n }\n }\n\n zoomToFit(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration);\n }\n }\n\n onZoomed() {\n if (d3Event && d3Event.transform && this.mouseMode() === \"zoom\") {\n this.zoomed(d3Event.transform);\n }\n }\n\n zoomed(transform) {\n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, transform.y];\n this._zoomG.attr(\"transform\", transform);\n }\n\n updateIconBar() {\n this._toggleMarqueeSelection.selected(this.mouseMode() === \"marqueeSelection\").render();\n this._toggleZoom.selected(this.mouseMode() === \"zoom\").render();\n }\n\n mousedownMarqueeSelection() {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n this._marqueeSelection = this.element().append(\"rect\")\n .attr(\"class\", \"marqueeSelection\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6)\n .attr(\"x\", p[0])\n .attr(\"y\", p[1])\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n ;\n this.startMarqueeSelection();\n }\n\n mousemoveMarqueeSelection() {\n if (this._marqueeSelection) {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n const d = {\n x: parseInt(this._marqueeSelection.attr(\"x\"), 10),\n y: parseInt(this._marqueeSelection.attr(\"y\"), 10),\n width: parseInt(this._marqueeSelection.attr(\"width\"), 10),\n height: parseInt(this._marqueeSelection.attr(\"height\"), 10)\n };\n const move = {\n x: p[0] - d.x,\n y: p[1] - d.y\n };\n\n if (move.x < 1 || (move.x * 2 < d.width)) {\n d.x = p[0];\n d.width -= move.x;\n } else {\n d.width = move.x;\n }\n\n if (move.y < 1 || (move.y * 2 < d.height)) {\n d.y = p[1];\n d.height -= move.y;\n } else {\n d.height = move.y;\n }\n\n this._marqueeSelection\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n\n this.updateMarqueeSelection({\n x: (d.x - this._zoomTranslate[0]) / this._zoomScale,\n y: (d.y - this._zoomTranslate[1]) / this._zoomScale,\n width: d.width / this._zoomScale,\n height: d.height / this._zoomScale\n });\n }\n }\n\n mouseupMarqueeSelection() {\n if (this._marqueeSelection) {\n this._marqueeSelection.remove();\n delete this._marqueeSelection;\n if (this._autoSelectionMode) {\n this._autoSelectionMode = false;\n this.mouseMode(\"zoom\");\n this.updateIconBar();\n }\n this.endMarqueeSelection();\n }\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n _element.style(\"user-select\", \"none\");\n\n this._marqueeSelectionRoot = _element.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .style(\"fill\", \"transparent\")\n .style(\"cursor\", \"crosshair\")\n .on(\"mousedown\", () => {\n this.mousedownMarqueeSelection();\n })\n .on(\"mousemove\", () => {\n this.mousemoveMarqueeSelection();\n })\n .on(\"mouseup mouseout\", () => {\n this.mouseupMarqueeSelection();\n })\n ;\n\n this._zoomRoot = _element.append(\"g\");\n\n this._zoomGrab = this._zoomRoot.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .on(\"mousedown\", () => {\n if (d3Event.shiftKey && this.mouseMode() === \"zoom\") {\n d3Event.stopPropagation();\n this.mouseMode(\"marqueeSelection\");\n this._autoSelectionMode = true;\n this.mousedownMarqueeSelection();\n }\n })\n ;\n this._zoomG = this._zoomRoot.append(\"g\");\n this._renderElement = this._zoomG.append(\"g\");\n\n if (this._prevZoomable !== this.zoomable()) {\n if (this.zoomable()) {\n this._zoomRoot.call(this._currZoom);\n } else {\n this._zoomRoot.on(\".zoom\", null);\n }\n this._prevZoomable = this.zoomable();\n }\n\n this._iconBar.target(this._zoomRoot.node());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._zoomGrab\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._marqueeSelectionRoot\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._iconBar\n .visible(this.zoomable() && this.showToolbar())\n .render((w: IconBar) => {\n const bbox = w.getBBox();\n w.reposition({ x: this.width() - bbox.width - 4, y: -4 });\n })\n ;\n }\n\n exit(domNode, element) {\n this._iconBar.target(null);\n super.exit(domNode, element);\n }\n\n // Events\n startMarqueeSelection() {\n }\n\n updateMarqueeSelection(rect: { x: number, y: number, width: number, height: number }) {\n }\n\n endMarqueeSelection() {\n }\n}\nSVGZoomWidget.prototype._class += \" common_SVGZoomWidget\";\n\nexport interface SVGZoomWidget {\n showToolbar(): boolean;\n showToolbar(_: boolean): this;\n zoomable(): boolean;\n zoomable(_: boolean): this;\n zoomDuration(): number;\n zoomDuration(_: number): this;\n zoomToFitLimit(): number;\n zoomToFitLimit(_: number): this;\n zoomToFitLimit_exists(): boolean;\n mouseMode(_: MouseMode): this;\n mouseMode(): MouseMode;\n}\nSVGZoomWidget.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nSVGZoomWidget.prototype.publish(\"zoomable\", true, \"boolean\", \"Enable/Disable Zooming\");\nSVGZoomWidget.prototype.publish(\"zoomDuration\", 250, \"number\", \"Transition Duration\");\nSVGZoomWidget.prototype.publish(\"zoomToFitLimit\", undefined, \"number\", \"Zoom to fit limit\", undefined, { optional: true });\nSVGZoomWidget.prototype.publish(\"mouseMode\", \"zoom\", \"set\", \"Mouse Mode (zoom | marqueeSelection)\", [\"zoom\", \"marqueeSelection\"]);\n\nconst _origMouseMode = SVGZoomWidget.prototype.mouseMode;\nSVGZoomWidget.prototype.mouseMode = function (_?, transitionDuration?) {\n const retVal = _origMouseMode.apply(this, arguments);\n if (arguments.length) {\n if (_ === \"zoom\") {\n safeRaise(this._zoomRoot.node());\n } else {\n safeRaise(this._marqueeSelectionRoot.node());\n }\n this.updateIconBar();\n }\n return retVal;\n};\n","import { publish } from \"./PropertyExt\";\nimport { Widget } from \"./Widget\";\n\nexport class WidgetArray extends Widget {\n\n @publish([], \"widgetArray\", \"Widget Array\")\n content: publish<this, Widget[]>;\n\n constructor() {\n super();\n }\n}\nWidgetArray.prototype._class += \" common_WidgetArray\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export * from \"./__package__\";\nexport * from \"./CanvasWidget\";\nexport * from \"./Class\";\nimport * as Database from \"./Database\";\nexport { Database };\nexport * from \"./Entity\";\nexport * from \"./EntityCard\";\nexport * from \"./EntityPin\";\nexport * from \"./EntityRect\";\nexport * from \"./EntityVertex\";\nexport * from \"./FAChar\";\nexport * from \"./HTMLWidget\";\nexport * from \"./Icon\";\nexport * from \"./IList\";\nexport * from \"./Image\";\nexport * from \"./IMenu\";\nexport * from \"./List\";\nexport * from \"./Menu\";\nimport * as Palette from \"./Palette\";\nexport { Palette };\nimport * as Platform from \"./Platform\";\nexport { Platform };\nexport * from \"./ProgressBar\";\nexport * from \"./PropertyExt\";\nexport * from \"./ResizeSurface\";\nexport * from \"./Shape\";\nexport * from \"./Surface\";\nexport * from \"./SVGWidget\";\nexport * from \"./SVGZoomWidget\";\nexport * from \"./Text\";\nexport * from \"./TextBox\";\nexport * from \"./TitleBar\";\nimport * as Utility from \"./Utility\";\nexport { Utility };\nexport * from \"./Widget\";\nexport * from \"./WidgetArray\";\n\nexport * from \"d3-array\";\nexport * from \"d3-brush\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-format\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-scale\";\nexport * from \"d3-selection\";\nexport * from \"d3-time-format\";\nexport * from \"d3-transition\";\nexport * from \"d3-zoom\";\n\nimport { event as _d3Event } from \"d3-selection\";\nexport const d3Event = () => _d3Event;\n","export function linear(t) {\n return +t;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\n\nexport default function() {\n return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n"],"mappings":"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","ignoreList":[]}