@hpcc-js/chart 2.81.10 → 2.83.1

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.
@@ -1 +1 @@
1
- {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","pi","Math","PI","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","_","path","constant$3","x","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","t","intersect","ax","ay","bx","by","kc","lc","centroid","a","Linear","_context","d3CurveLinear","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","n","defined0","lineStart","lineEnd","point","descending","NaN","identity$2","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","areaStart","_line","areaEnd","_point","_x","_y","j","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","CatmullRom","alpha","_alpha","_l01_a","_l12_a","_l23_a","_l01_2a","_l12_2a","_l23_2a","x23","y23","pow","m","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","px","py","i0","i1","identity$1","top","right","bottom","left","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","values","ticks","domain","format","identity","spacing","range","range0","range1","position","copy","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","select","text","merge","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Axis","_super","drawStartPosition","_this","_drawStartPos","updateScale","_type","timePattern","_timePattern","lowValue","parse","low","highValue","high","forceNumeric","map","parser","parseInvert","parserInvert","formatter","parseFormat","scalePos","retVal","d3Scale","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","_guideElement","d3Select","_class","domNode","element","svg","svgAxis","svgGuides","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings_1","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","d3TimeFormat","_prevOrientation","d3Axis","d3AxisLeft","d3Guides","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","length_1","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","value","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg_1","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr_1","getBoundingClientRect","calcOverflow","ignoreText","hidden","depth","tmpSvg","classID","tmpSvgG","shrinkToFit","_text","bandSize","re","words","split","reverse","lineNumber","fs","parseFloat","maxLinesPerBand","floor","minWordsPerLine","ceil","tspan","wordsOnLine","word","pop","join","getComputedTextLength","update","overlap","lowerPos","upperPos","doPosition","svgLineBBox","svgText","title","svgTitleTransition","title_exists","classed","rerender","postUpdate","_element","publish","disable","SVGWidget","optional","XYAxis","_skipSelection","Utility","SimpleSelectionMixin","domainAxis","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","valueAxis","xyBrush","d3Brush","on","brushMoved","brushMoved2","xBrush","d3BrushX","yBrush","d3BrushY","resetSelection","_prevBrush","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","id","_selection","widgetElement","svgFocus","svgBrush","chartsEnter","resizeBrushHandle","e","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","xAxis","yAxis","calcMargin","_domNode","margin","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","xAxisTitle_exists","xAxisTitle","xAxisType","colLen_1","ordinalMappings_1","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","undefined","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","_prevXAxisType","tmp","ratio","move","focusChart","syncAxis","layers","copyPropsTo","layerIdx","_i","_a","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices_1","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","mixin","publishProxy","tags","yAxisType","Scatter","INDChart","ITooltip","xAxisGuideLines_default","yAxisGuideLines_default","xPos","yPos","interpolate","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","getScale","pointSizeScale","d3ScaleSqrt","pointColor","pointDarken","strokeColor","fillColor","lineColor","interpolateFill","interpolateDarken","areaColor","tooltipHTML","tooltipStyle","tooltipFormat","arr","color","rowIdx","series","pointSizeColumnIdx","switch","paletteID","useClonedPalette","cloneNotExists","_prevPointShape","pointShape","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","shape","mapShape","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","d3Area","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","showValue","__inputs","multi","implements","step","Area","interpolate_default","interpolateFill_default","Column","textLocal","d3Local","skipBringToTop","_linearGap","adjustedData","retVal2","dataLen","direction","columnScale","xAxisSeriesPaddingInner","rowData","domainSums","seriesSums","columnLength","showValueAsPercent","forEach","reduce","sum","hostData","axisSize","dataRow","dataRowIdx","columnGRect","columnGEnter","tooltipInnerTextEllipsedOnly","innerTextObj","isTruncated","domainLength","domainPos","upperValue","valueText","dm","dataMeta","seriesSum","showValueAsPercentFormat","domainSum","showValueFormat","upperValuePos","lowerValuePos","valueLength","innerTextHeight","innerTextFontSize","innerTextPadding","innerTextPadding_exists","dataRect","intersectRectRect","_rects","_texts","innerTextFontFamily_exists","innerTextFontFamily","padding","textHeightOffset","showInnerText","innerText","clippedValueLength","calcInnerText","dataText","set","Text","colorStroke_default","noRoomInside","isOutside","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","padding_1","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","innerText_1","letter","Bar","count","children","hierarchy","child","childs","root","Node","valued","nodes","defaultChildren","parent","eachBefore","computeHeight","copyData","eachAfter","callback","current","next","sort","compare","end","start","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","splice","descendants","leaves","links","source","enclose","circles","array","random","shuffle","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","f","required","constantZero","defaultRadius","radiusLeaf","radius","packChildren","aa","ca","sj","sk","packEnclose","translateChild","Bubble","I2DChart","labelWidgets","d3Pack","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","BubbleXY","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","t2","time","Infinity","sleep","nap","poke","delay","clearTimeout","clearInterval","setInterval","bulvarRanges","ranges","bulvarMarkers","markers","bulvarMeasures","measures","bulvarWidth","restart","stop","Bullet","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","vertical","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","w1","i2","measure","marker","d3TimerFlush","d3Bullet","keys","HTMLWidget","ascending","constant$1","contains","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","q","collinear","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","index","endIndex","unshift","isorings","polygon","coordinates","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","adder","Adder","reset","add","temp","bv","av","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","polygonStart","polygonEnd","geoStream","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","result","areaPointFirst","areaPoint","pathArea","boundsStream","bounds","boundsStream$1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","pathMeasure","PathString","_string","_circle","Contour","xAxisType_default","contourData","weight","o","density","values0","Float32Array","values1","wi","shift","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","d3ContourDensity","contourBandwidth","_vals","minValue","maxValue","_dataMinWeight","_dataMaxWeight","projection","projectionStream","contextStream","pathBounds","geoPath","showContourFill","contourStrokeColor","contourStrokeWidth","I1DChart","Gantt","yAxisType_default","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","Annotation","_ref","_ref$x","_ref$y","nx","ny","_ref$dy","_ref$dx","_ref$color","subject","connector","note","className","_dx","_dy","_color","_className","setPosition","redrawSubject","clearComponents","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","_ref2","_ref3","json","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","setPositionWithAccessors","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorCurve","connectorData","createPoints","handles","cHandles","pointHandle","_ref$cx","_ref$cy","updatePoint","event","mapHandles","drag","components","anchors","diff","subjectCircle","_ref2$cx","_ref2$cy","circleHandles","updateRadius","_extends","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","_ref5","group","_ref5$r","container","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","rHandles","subjectRect","subjectThreshold","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","ytopcorner","xleft","ytop","circlebg","fill","pointer","notCornerPointerXY","v","bHandles","subjectBadge","_subject$components","_subject$handles","stroke","dragSubject","connectorParams","diffY","diffX","xe","ye","opposite","connectorElbow","connectorLine","_connector$components","_connector$handles","endType","_ref$scale","angleOffset","atan","connectorArrow","endScale","connectorDot","dot","line$$1","_this3","noteData","noteParams","lineType","noteVertical","noteHorizontal","_note$components","_note$handles","_this4","dragNote","dragging","dragstarted","dragended","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","settings","_this6","babelHelpers.get","getPrototypeOf","babelHelpers.extends","d3NoteText","_Type","params","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","_typeof","d3Callout","d3CalloutElbow","ThresholdMap","newWithClass","lineHeight","selector","yOffset","value2Angle","pointOnArc","indicatorTween","newAngle","inner","d3Interpolate","rotation","indicatorTranslate","arcTween","startInterpolate","endInterpolate","Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","tip","_tooltipG","interrupt","_centerText","datum","xOffset","annotationtip","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","_usageArc","valueDescription","_freeArc","_meanArc","tickValueDescription","_mainTooltip","appendIndicator","_indInner","_indOuter","_bottomText","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","point2","Pie","_minLabelTop","_maxLabelBottom","d3Pie","sortValues","pie","arcs","pa","d3LabelArc","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","_smallValueLabelHeight","minOuterRadius","_labelWidthLimit","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","truncate","len","labelWidth","showSeriesValue","_seriesValueFormatter","showSeriesPercentage","_totalValue","perc","_seriesPercentageFormatter","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","_quadIdxArr","_labelPositions","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","HalfPie","_pos","_target","SVGElement","_widgetScale","Heat","radiusX","radiusY","_domForeignObject","_domCanvas","_heat","simpleheat","maxWeight","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","canvas","_canvas","getElementById","_ctx","getContext","_width","_height","_max","_data","Palette","rainbow","rX","rY","ellipse","_ellipse","_createCanvas","ctx","rX2","_r","rY2","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","clearRect","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","thirdPi","angles","HexBin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","_hexbin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","d3HexBin","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","Line","QuarterPie","QuartileCandlestick","_g","_leftLine","_rightLine","_midLine","_midOuterRect","_midInnerRect1","_midInnerRect2","_q0text","_q1text","_q2text","_q3text","_q4text","_q0val","_q1val","_q2val","_q3val","_q4val","valueSize","lineWidth","domainSize","edgePadding","candleWidth","candleWidth_exists","roundedCorners","q0x","q1x","q2x","q3x","dataTop","dataBottom","upperTextRotation","lowerTextRotation","textPadding","labelFontSize","sz","q4x","transX","transY","rotate","textScale","labelAnchor","innerRectColor","showValues","Radar","setPointAttributes","half_size_1","half_h","half_w","domain_points","degrees2radians","max_label_h","max_label_w","isize","labels","max_val","xy","polar2cartesian","labelPaddingRatio","text_anchor","domains","value_guides","valueGuideRatios","mult","poly_points","domain_point","row_idx","value_guide_text","series_polygons","fillOpacity","col_idx","val_mult","point_elm","data_row","row_obj","pointElement","theta","cartesian2polar","radians2degrees","point_in_polygon","vs","inside","RadialBar","_domainScale","_valueScale","_radialAxis","_axialAxis","_arcs","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","palette","ordinal","StatChart","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","_tickFormatter","quartile","formatQ","mode","_mean","_standardDeviation","quartiles","_quartiles","_selectMode","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","num","strVal","TEXT","HTML","Summary","_playIntervalIdx","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","moreIconIdx","moreTextIdx","iconFieldIdx","valueFieldIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","_mainDiv","_headerDiv","_textDiv","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","context_1","_renderCount","SummaryC","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","iconOpacity","iconBaseline","fontSizeMult","getTextOffsetY","drawIcon","faChar","iconAnchor","valueOpacity","labelOpacity","CanvasWidget","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","board","tag","dxdy","startX","startY","maxDelta","dt","cloudCollide","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","strokeStyle","textAlign","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","archimedean","rectangular","WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","_root","_d3Zoom","d3Zoom","scaleExtent","evt","zoomed","_d3Cloud","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","trim","toLowerCase"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-shape/src/curve/natural.js","../../../node_modules/d3-shape/src/curve/step.js","../../../node_modules/d3-axis/src/array.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../../../node_modules/d3-shape/src/area.js","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../../../node_modules/d3-hierarchy/src/hierarchy/count.js","../../../node_modules/d3-hierarchy/src/hierarchy/index.js","../../../node_modules/d3-hierarchy/src/hierarchy/each.js","../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../node_modules/d3-hierarchy/src/hierarchy/path.js","../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../node_modules/d3-hierarchy/src/hierarchy/links.js","../../../node_modules/d3-hierarchy/src/array.js","../../../node_modules/d3-hierarchy/src/pack/enclose.js","../../../node_modules/d3-hierarchy/src/pack/siblings.js","../../../node_modules/d3-hierarchy/src/accessors.js","../../../node_modules/d3-hierarchy/src/constant.js","../../../node_modules/d3-hierarchy/src/pack/index.js","../src/Bubble.ts","../src/BubbleXY.ts","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3v4-bullet/src/bullet.js","../src/Bullet.ts","../../../node_modules/d3-contour/src/array.js","../../../node_modules/d3-contour/src/ascending.js","../../../node_modules/d3-contour/src/constant.js","../../../node_modules/d3-contour/src/contains.js","../../../node_modules/d3-contour/src/noop.js","../../../node_modules/d3-contour/src/contours.js","../../../node_modules/d3-contour/src/area.js","../../../node_modules/d3-contour/src/blur.js","../../../node_modules/d3-contour/src/density.js","../../../node_modules/d3-geo/src/adder.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/identity.js","../../../node_modules/d3-geo/src/path/area.js","../../../node_modules/d3-geo/src/path/bounds.js","../../../node_modules/d3-geo/src/path/centroid.js","../../../node_modules/d3-geo/src/path/context.js","../../../node_modules/d3-geo/src/path/measure.js","../../../node_modules/d3-geo/src/path/string.js","../src/Contour.ts","../../../node_modules/d3-geo/src/path/index.js","../src/Gantt.ts","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/constant.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/math.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/arc.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/point.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/noop.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-svg-annotation/src/Annotation.js","../../../node_modules/d3-svg-annotation/src/AnnotationCollection.js","../../../node_modules/d3-svg-annotation/src/Note/alignment.js","../../../node_modules/d3-svg-annotation/src/Builder.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/line.js","../../../node_modules/d3-svg-annotation/src/Connector/type-line.js","../../../node_modules/d3-svg-annotation/src/Connector/type-curve.js","../../../node_modules/d3-svg-annotation/src/Handles.js","../../../node_modules/d3-svg-annotation/src/Subject/circle.js","../../../node_modules/d3-svg-annotation/src/Types-d3.js","../../../node_modules/d3-svg-annotation/src/Subject/rect.js","../../../node_modules/d3-svg-annotation/src/Subject/threshold.js","../../../node_modules/d3-svg-annotation/src/Subject/badge.js","../../../node_modules/d3-svg-annotation/src/Connector/type-elbow.js","../../../node_modules/d3-svg-annotation/src/Connector/end-arrow.js","../../../node_modules/d3-svg-annotation/src/Connector/end-dot.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-vertical.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-horizontal.js","../src/Gauge.ts","../../../node_modules/d3-svg-annotation/src/Adapter-d3.js","../src/Pie.ts","../../../node_modules/d3-shape/src/pie.js","../src/HalfPie.ts","../src/Heat.ts","../../../node_modules/d3-hexbin/src/hexbin.js","../src/HexBin.ts","../src/Line.ts","../src/QuarterPie.ts","../src/QuartileCandlestick.ts","../src/Radar.ts","../src/RadialBar.ts","../src/StatChart.ts","../src/Step.ts","../src/Summary.ts","../src/SummaryC.ts","../src/D3Cloud.ts","../src/WordCloud.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/chart\";\nexport const PKG_VERSION = \"2.81.10\";\nexport const BUILD_VERSION = \"2.104.37\";\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 */\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\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","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\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 { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, axisRight as d3AxisRight, axisTop as d3AxisTop } from \"d3-axis\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleTime as d3ScaleTime } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Axis.css\";\n\nexport interface IOverflow {\n left: number;\n top: number;\n right: number;\n bottom: number;\n depth: number;\n tickOverlapModulus: number;\n}\n\nexport class Axis extends SVGWidget {\n protected parser;\n protected parserInvert;\n protected formatter: (date: Date) => string;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n\n @publish(\"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"])\n _type: string;\n type(): string;\n type(_: string): this;\n type(_?: string): string | this {\n if (!arguments.length) return this._type;\n this._type = _;\n this.updateScale();\n return this;\n }\n\n @publish(\"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" })\n _timePattern: string;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern(_?: string): string | this {\n if (!arguments.length) return this._timePattern;\n this._timePattern = _;\n this.updateScale();\n return this;\n }\n timePattern_exists: () => boolean;\n\n @publish(false, \"boolean\", \"Reverse\")\n reverse: publish<this, boolean>;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right : 0;\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n\n title: { (): string; (_: string): Axis; };\n orientation: { (): string; (_: string): Axis; };\n orientation_default: { (): string; (_: string): Axis; };\n powExponent: { (): number; (_: number): Axis; };\n logBase: { (): number; (_: number): Axis; };\n ordinals: { (): string[]; (_: string[]): Axis; };\n ordinals_exists: () => boolean;\n fontSize: { (): number; (_: number): Axis; };\n fontSize_exists: () => boolean;\n fontFamily: { (): string; (_: string): Axis; };\n tickCount: { (): number; (_: number): Axis; };\n tickFormat: { (): string; (_: string): Axis; };\n tickFormat_exists: () => boolean;\n tickLength: { (): number; (_: number): Axis; };\n tickLength_exists: () => boolean;\n ticks: { (): Array<{ value: string, label: string }>; (_: Array<{ value: string, label: string }>): Axis; };\n xAxisDomainLow: { (): string; (_: string): Axis; };\n xAxisDomainHigh: { (): string; (_: string): Axis; };\n low: { (): any; (_: any): Axis; };\n low_exists: () => boolean;\n high: { (): any; (_: any): Axis; };\n high_exists: () => boolean;\n overlapMode: { (): string; (_: string): Axis; };\n overlapMode_default: { (): string; (_: string): Axis; };\n labelRotation: { (): number; (_: number): Axis; };\n shrinkToFit: { (): string; (_: string): Axis; };\n shrinkToFit_default: { (): string; (_: string): Axis; };\n extend: { (): number; (_: number): Axis; };\n extend_default: { (): number; (_: number): Axis; };\n hidden: { (): boolean; (_: boolean): Axis; };\n}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n title_exists(): boolean;\n ordinalPaddingInner(): number;\n ordinalPaddingInner(_: number): this;\n ordinalPaddingOuter(): number;\n ordinalPaddingOuter(_: number): this;\n ordinalMappings(_: { [key: string]: string }): this;\n ordinalMappings(): { [key: string]: string };\n ordinalMappings_exists(): boolean;\n}\n\nAxis.prototype.publish(\"title\", null, \"string\", \"Title\");\nAxis.prototype.publish(\"orientation\", \"bottom\", \"set\", \"Placement/orientation of the axis\", [\"left\", \"top\", \"right\", \"bottom\"]);\nAxis.prototype.publish(\"powExponent\", 2, \"number\", \"Power exponent (disabled when type is not 'pow')\", null, { disable: (w: any) => w.type() !== \"pow\" });\nAxis.prototype.publish(\"logBase\", 10, \"number\", \"Logarithmic base (disabled when type is not 'log')\", null, { disable: (w: any) => w.type() !== \"log\" });\nAxis.prototype.publish(\"ordinals\", [], \"array\", \"Array of ordinal values to display (disabled when type is not 'ordinal')\", null, { disable: (w: any) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"fontSize\", null, \"number\", \"Size of tick label font (pixels)\", null, { optional: true });\nAxis.prototype.publish(\"fontFamily\", null, \"string\", \"Font family of tick labels\", null, { optional: true });\nAxis.prototype.publish(\"tickCount\", null, \"number\", \"Number of ticks to display (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickFormat\", null, \"string\", \"Format rules for tick text (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickLength\", null, \"number\", \"Height (or width for left/right orientations) of the axis ticks (in pixels)\", null, { optional: true });\nAxis.prototype.publish(\"ticks\", [], \"array\", \"Custom tick labels\", null, { optional: true }); // TODO: What does this control?\nAxis.prototype.publish(\"low\", null, \"any\", \"Minimum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"high\", null, \"any\", \"Maximum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"overlapMode\", \"none\", \"set\", \"Specifies the behavior when tick labels overlap\", [\"none\", \"stagger\", \"hide\", \"rotate\", \"linebreak\", \"wrap\"]);\nAxis.prototype.publish(\"labelRotation\", 33, \"number\", \"Angle of rotation for tick labels (disabled when overlapMode is not 'rotate')\", null, { optional: true, disable: (w: any) => w.overlapMode() !== \"rotate\" });\nAxis.prototype.publish(\"shrinkToFit\", \"both\", \"set\", \"shrinkToFit\", [\"none\", \"low\", \"high\", \"both\"]); // TODO: What does this control?\nAxis.prototype.publish(\"extend\", 5, \"number\", \"Extend the axis range by this % beyond what is needed to display the data (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"hidden\", false, \"boolean\", \"Hides axis when 'true'\");\nAxis.prototype.publish(\"ordinalPaddingInner\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalPaddingOuter\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space before the first band and after the last band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalMappings\", null, \"object\", \"Alternative label mappings (icons)\", null, { optional: true });\n","import { d3Event, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { max as d3Max, min as d3Min } from \"d3-array\";\nimport { brush as d3Brush, brushSelection as d3BrushSelection, brushX as d3BrushX, brushY as d3BrushY } from \"d3-brush\";\nimport { hsl as d3Hsl } from \"d3-color\";\nimport { Axis } from \"./Axis\";\n\nimport \"../src/XYAxis.css\";\n\nexport class XYAxis extends SVGWidget {\n protected domainAxis: Axis;\n protected valueAxis: Axis;\n protected xAxis: Axis;\n protected yAxis: Axis;\n protected xyBrush;\n protected xBrush;\n protected yBrush;\n protected margin;\n protected focusChart: XYAxis;\n _palette;\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.domainAxis = new Axis()\n .classed({ domain: true })\n .orientation_default(\"bottom\")\n .type(\"ordinal\")\n .overlapMode_default(\"stagger\")\n .shrinkToFit_default(\"high\")\n .extend_default(0)\n ;\n this.valueAxis = new Axis()\n .classed({ value: true })\n .orientation_default(\"left\")\n .type(\"linear\")\n .shrinkToFit_default(\"high\")\n ;\n\n this.xyBrush = d3Brush()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.xBrush = d3BrushX()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.yBrush = d3BrushY()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n }\n\n protected _prevBrush;\n resetSelection() {\n this._prevBrush = null;\n return this;\n }\n\n parseData(d) {\n return this.domainAxis.parse(d);\n }\n\n parseValue(d) {\n return this.valueAxis.parse(d, true);\n }\n\n formatData(d) {\n return this.domainAxis.format(d);\n }\n\n formatValue(d) {\n return this.valueAxis.format(d);\n }\n\n parsedData() {\n const retVal = this.data().map(function (row) {\n let prevValue = 0;\n return row.map(function (cell, idx) {\n if (idx === 0) {\n return this.parseData(cell);\n }\n if (idx >= this.columns().length) {\n return cell;\n }\n const _retVal = this.yAxisStacked() ? [prevValue, prevValue + this.parseValue(cell)] : this.parseValue(cell);\n prevValue += this.parseValue(cell);\n return _retVal;\n }, this);\n }, this);\n return retVal;\n }\n\n bandwidth() {\n return this.domainAxis.bandwidth();\n }\n\n protected svg;\n protected svgRegions;\n protected svgDomainGuide;\n protected svgValueGuide;\n protected svgData;\n protected svgDataClipRect;\n protected svgFocus;\n protected svgBrush;\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgRegions = element.append(\"g\");\n this.svgDomainGuide = this.svg.append(\"g\");\n this.svgValueGuide = this.svg.append(\"g\");\n this.svgData = this.svg.append(\"g\");\n\n this.svgDataClipRect = this.svg.append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clippath\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this.svgData = this.svg.append(\"g\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clippath)\")\n ;\n this._selection.widgetElement(this.svgData);\n\n this.svgFocus = element.append(\"g\");\n\n this.domainAxis\n .target(this.svg.node())\n .guideTarget(this.svgDomainGuide.node())\n ;\n\n this.valueAxis\n .target(this.svg.node())\n .guideTarget(this.svgValueGuide.node())\n ;\n\n this.svgBrush = element.append(\"g\")\n .attr(\"class\", \"brush\")\n ;\n this.chartsEnter(this, this.svgData, 250);\n }\n\n resizeBrushHandle(d, width, height) {\n let e;\n let x;\n let y;\n if (d.type === \"e\" || d.type === \"w\") {\n e = +(d.type === \"e\");\n x = e ? 1 : -1;\n y = height / 3;\n return \"M\" + (0.5 * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (0.5 * x) + \",\" + (2 * y) +\n \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8);\n } else {\n e = +(d.type === \"s\");\n y = e ? 1 : -1;\n x = width / 3;\n return \"M\" + x + \", \" + (0.5 * y) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (x + 6) + \",\" + (6.5 * y) +\n \"H\" + (2 * x - 6) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (2 * x) + \",\" + (0.5 * y) +\n \"Z\" +\n \"M\" + (x + 8) + \",\" + (2.5 * y) +\n \"H\" + (2 * x - 8) +\n \"M\" + (x + 8) + \",\" + (4.5 * y) +\n \"H\" + (2 * x - 8);\n }\n }\n\n private _skipSelection = false;\n skipSelection(): boolean;\n skipSelection(_: boolean): this;\n skipSelection(_?: boolean): boolean | this {\n if (!arguments.length) return this._skipSelection;\n this._skipSelection = _;\n return this;\n }\n\n brushMoved() {\n if (this._skipSelection) return;\n let selected = [];\n const context = this;\n const currSel: any = d3BrushSelection(this.svgBrush.node());\n if (currSel) {\n selected = this.data().filter(function (d) {\n const pos = context.dataPos(d[0]);\n if (context.use2dSelection()) {\n const pos2 = context.valuePos(d[1]) + context.valueAxis.bandwidth() / 2;\n return pos >= currSel[0][0] && pos <= currSel[1][0] && pos2 >= currSel[0][1] && pos2 <= currSel[1][1];\n } else {\n return pos >= currSel[0] && pos <= currSel[1];\n }\n });\n }\n this.selection(selected);\n }\n\n brushMoved2() {\n const isHorizontal = this.orientation() === \"horizontal\";\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n const s = d3Event().selection;\n if (s == null) {\n handlePath.attr(\"display\", \"none\");\n } else if (isHorizontal) {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + s[i] + \",\" + 0 + \")\");\n } else {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + 0 + \", \" + s[i] + \")\");\n }\n }\n\n dataPos(d) {\n return this.domainAxis.scalePos(d);\n }\n\n valuePos(d) {\n return this.valueAxis.scalePos(d);\n }\n\n getAxisSize(host: XYAxis): { width: number, height: number } {\n return {\n width: !this.xAxis ? host.xAxis.width() : this.xAxis.width(),\n height: !this.yAxis ? host.yAxis.width() : this.yAxis.height()\n };\n }\n\n calcMargin(_domNode, element, isHorizontal) {\n const margin = {\n top: !isHorizontal && this.selectionMode() ? 10 : 2,\n right: isHorizontal && (this.selectionMode() || this.xAxisFocus()) ? 10 : 2,\n bottom: (this.xAxisFocus() ? this.xAxisFocusHeight() : 0) + 2,\n left: 2\n };\n const width = this.width() - margin.left - margin.right;\n const height = this.height() - margin.top - margin.bottom;\n\n let xRight = 0;\n let xHeight = 30;\n let yTop = 0;\n let yWidth = 30;\n for (let i = 0; i < 10; ++i) {\n this.xAxis.width(width - yWidth).height(0);\n const xAxisOverlap = this.xAxis.calcOverflow(element);\n const newXHeight = xAxisOverlap.depth;\n\n this.yAxis.width(0).height(height - xHeight);\n const yAxisOverlap = this.yAxis.calcOverflow(element);\n const newYWidth = yAxisOverlap.depth;\n\n xRight = xAxisOverlap.right;\n yTop = yAxisOverlap.top;\n\n if (newXHeight === xHeight && newYWidth === yWidth) {\n break;\n }\n xHeight = newXHeight;\n yWidth = newYWidth;\n }\n this.xAxis\n .x(width / 2 + yWidth / 2 + margin.left)\n .y(height + margin.top)\n .width(width - yWidth)\n ;\n this.yAxis\n .x(margin.left)\n .y(height / 2 - xHeight / 2 + margin.top)\n .height(height - xHeight)\n ;\n margin.left += yWidth;\n margin.top += yTop;\n margin.right += xRight;\n margin.bottom += xHeight;\n return margin;\n }\n\n updateRegions(_domNode, _element, isHorizontal) {\n const context = this;\n\n const regions = this.svgRegions.selectAll(\".region\").data(this.regions());\n regions.enter().append(\"rect\")\n .attr(\"class\", \"region\")\n ;\n if (isHorizontal) {\n regions\n .attr(\"x\", function (d) { return context.dataPos(d.x0); })\n .attr(\"y\", 0)\n .attr(\"width\", function (d) { return context.dataPos(d.x1) - context.dataPos(d.x0); })\n .attr(\"height\", this.height())\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n } else {\n regions\n .attr(\"x\", 0)\n .attr(\"y\", function (d) { return context.dataPos(d.x0); })\n .attr(\"width\", this.width())\n .attr(\"height\", function (d) { return context.dataPos(d.x0) - context.dataPos(d.x1); })\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n }\n regions.exit().remove();\n }\n\n protected _prevXAxisType;\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const isHorizontal = this.orientation() === \"horizontal\";\n this.updateRegions(domNode, element, isHorizontal);\n\n this.domainAxis\n .orientation(isHorizontal ? \"bottom\" : \"left\")\n .title(this.xAxisTitle_exists() ? this.xAxisTitle() : this.columns()[0])\n ;\n this.valueAxis\n .orientation(isHorizontal ? \"left\" : \"bottom\")\n ;\n this.xAxis = isHorizontal ? this.domainAxis : this.valueAxis;\n this.yAxis = isHorizontal ? this.valueAxis : this.domainAxis;\n\n // Update Domain ---\n switch (this.xAxisType()) {\n case \"ordinal\":\n const colLen = this.columns().length;\n const ordinalMappings = {};\n this.domainAxis\n .ordinals(this.data().map(function (d) {\n ordinalMappings[d[0]] = context.xAxisOrdinalMapping(d, d[colLen]);\n return d[0];\n }))\n .ordinalMappings(ordinalMappings)\n ;\n\n break;\n default:\n const domainMin = this.xAxisDomainLow() ? this.xAxisDomainLow() : this.domainAxis.parseInvert(d3Min(this.parsedData(), function (data) {\n return data[0];\n }));\n const domainMax = this.xAxisDomainHigh() ? this.xAxisDomainHigh() : this.domainAxis.parseInvert(d3Max(this.parsedData(), function (data) {\n return data[0];\n }));\n if (domainMin !== undefined && domainMax !== undefined) {\n this.domainAxis\n .low(domainMin)\n .high(domainMax)\n ;\n }\n break;\n }\n\n const min = this.yAxisDomainLow() ? this.yAxisDomainLow() : this.valueAxis.parseInvert(d3Min(this.parsedData(), function (data: any[]) {\n return d3Min(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[0] : d; });\n }));\n const max = this.yAxisDomainHigh() ? this.yAxisDomainHigh() : this.valueAxis.parseInvert(d3Max(this.parsedData(), function (data: any[]) {\n return d3Max(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[1] : d; });\n }));\n this.valueAxis\n .low(min)\n .high(max)\n ;\n\n // Calculate Margins ---\n this.margin = this.calcMargin(domNode, element, isHorizontal);\n\n // Update Range ---\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n const maxCurrExtent = isHorizontal ? width : height;\n const maxOtherExtent = isHorizontal ? height : width;\n\n // Render ---\n this.domainAxis\n .tickLength(this.xAxisGuideLines() ? maxOtherExtent : 0)\n .render()\n ;\n this.valueAxis\n .tickLength(this.yAxisGuideLines() ? maxCurrExtent : 0)\n .render()\n ;\n\n this.svgDataClipRect\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this.svgData.transition()\n .attr(\"transform\", \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\")\n ;\n\n this.updateBrush(width, height, maxCurrExtent, isHorizontal);\n this.updateFocusChart(domNode, element, this.margin, width, height, isHorizontal);\n this.chartsUpdate(width, height, 250);\n if (this.selectionMode()) {\n return this.brushMoved();\n }\n }\n\n updateBrush(width, height, maxCurrExtent, isHorizontal) {\n const currBrush = this.use2dSelection() ? this.xyBrush : isHorizontal ? this.xBrush : this.yBrush;\n const prevBrushSel: any = d3BrushSelection(this.svgBrush.node());\n currBrush.extent([[0, 0], [width, height]]);\n this.svgBrush\n .attr(\"transform\", \"translate(\" + this.margin.left + \", \" + this.margin.top + \")\")\n .style(\"display\", this.selectionMode() ? null : \"none\")\n .call(currBrush)\n ;\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n handlePath.enter().append(\"path\")\n .attr(\"class\", \"handle--custom\")\n .merge(handlePath)\n .attr(\"cursor\", isHorizontal ? \"ew-resize\" : \"ns-resize\")\n .attr(\"d\", (d) => this.resizeBrushHandle(d, width, height))\n ;\n\n if (this.selectionMode()) {\n if (this._prevXAxisType !== this.xAxisType()) {\n this._prevXAxisType = this.xAxisType();\n this._prevBrush = null;\n }\n if (this._prevBrush) {\n if (prevBrushSel) {\n if (this._prevBrush.orientation !== this.orientation()) {\n const tmp = prevBrushSel[0];\n prevBrushSel[0] = this._prevBrush.maxCurrExtent - prevBrushSel[1];\n prevBrushSel[1] = this._prevBrush.maxCurrExtent - tmp;\n }\n const ratio = maxCurrExtent / this._prevBrush.maxCurrExtent;\n if (ratio !== 1) {\n this.svgBrush.transition()\n .on(\"start\", function () {\n currBrush.on(\"end\", null);\n })\n .call(currBrush.move, [prevBrushSel[0] * ratio, prevBrushSel[1] * ratio])\n .on(\"end\", () => {\n currBrush.on(\"end\", () => {\n return this.brushMoved();\n });\n })\n ;\n }\n }\n } else {\n this.svgBrush\n .call(currBrush.move, [0, maxCurrExtent])\n ;\n }\n this._prevBrush = {\n orientation: this.orientation(),\n maxCurrExtent\n };\n }\n }\n\n updateFocusChart(domNode, element, margin, width, height, isHorizontal) {\n const context: XYAxis = this;\n const focusChart = this.svgFocus.selectAll(\"#\" + this.id() + \"_focusChart\").data(this.xAxisFocus() ? [true] : []);\n focusChart.enter().append(\"g\")\n .attr(\"id\", this.id() + \"_focusChart\")\n .attr(\"class\", \"focus\")\n .each(function () {\n context.focusChart = new (context.constructor as any)()\n .target(this)\n ;\n context.focusChart.xBrush\n .on(\"brush.focus\", function () {\n context.syncAxis(width);\n context.chartsUpdate(width, height, 0);\n })\n ;\n context.focusChart\n .layers(context.layers().map((w: any) => new w.constructor()))\n ;\n })\n .merge(focusChart)\n .each(function (this: SVGElement) {\n context.copyPropsTo(context.focusChart, [\"layers\"]);\n let layerIdx = 0;\n for (const layer of context.layers()) {\n layer.copyPropsTo(context.focusChart.layers()[layerIdx]);\n layerIdx++;\n }\n context.focusChart\n .xAxisFocus(false)\n .selectionMode(true)\n .skipSelection(true)\n .orientation(\"horizontal\")\n .xAxisGuideLines(false)\n .xAxisDomainLow(null)\n .xAxisDomainHigh(null)\n .yAxisGuideLines(false)\n .x(context.width() / 2)\n .y(context.height() - context.xAxisFocusHeight() / 2)\n .width(context.width())\n .height(context.xAxisFocusHeight())\n .columns(context.columns())\n .data(context.data())\n .render()\n ;\n context.syncAxis(width);\n })\n ;\n focusChart.exit()\n .each(function () {\n if (context.focusChart) {\n context.focusChart\n .target(null)\n ;\n delete context.focusChart;\n }\n })\n .remove()\n ;\n }\n\n syncAxis(width: number) {\n const currSel = d3BrushSelection(this.focusChart.svgBrush.node()) as [number, number];\n if (currSel) {\n if (this.focusChart.xAxisType() !== \"ordinal\") {\n this.xAxis.domain([this.focusChart.xAxis.invert(currSel[0]), this.focusChart.xAxis.invert(currSel[1])]);\n } else {\n const brushWidth = currSel[1] - currSel[0];\n const scale = brushWidth / width;\n this.xAxis.range([-currSel[0] / scale, (width - currSel[0]) / scale]);\n }\n this.xAxis.rerender();\n }\n }\n\n // Layers ---\n layerColumns(host: XYAxis): string[] {\n const masterColumns = host.columns();\n const retVal = super.columns().filter(col => col !== masterColumns[0]);\n if (!retVal.length) {\n return masterColumns;\n }\n return [masterColumns[0], ...retVal];\n }\n\n layerColumnIndices(host: XYAxis): number[] {\n const masterColumns = host.columns();\n const layerColumns = this.layerColumns(host);\n return layerColumns.map(col => masterColumns.indexOf(col));\n }\n\n layerColumnIndex(host: XYAxis, column: string): number {\n const masterColumns = host.columns();\n return masterColumns.indexOf(column);\n }\n\n layerData(host: XYAxis): any[][] {\n if (arguments.length === 1) {\n const indices = this.layerColumnIndices(host);\n return host.data().map(row => {\n const retVal = indices.map(idx => row[idx]);\n (retVal as any).__hpcc_origRow = row;\n return retVal;\n });\n }\n throw new Error(\"Setting data on XYAxisLayer is not supported.\");\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n }\n\n layerExit(host: XYAxis, element, duration: number = 250) {\n }\n\n chartsEnter(host: XYAxis, element, duration: number = 250) {\n this.layerEnter(this, element, duration);\n for (const w of this.layers()) {\n w[\"__xyAxisElement\"] = element.append(\"g\")\n .attr(\"class\", w.class())\n ;\n w\n .target(w[\"__xyAxisElement\"].node() as SVGElement)\n .layerEnter(this, element, duration)\n ;\n }\n }\n\n chartsUpdate(width, height, duration): void {\n this.layerUpdate(this, this.svgData, duration);\n for (const w of this.layers()) {\n w\n .resize({ width, height })\n .layerUpdate(this, w[\"__xyAxisElement\"], duration)\n ;\n }\n }\n\n exit(domNode, element) {\n this.valueAxis.target(null);\n this.domainAxis.target(null);\n super.exit(domNode, element);\n }\n\n selection(_selected) {\n const context = this;\n this._selection.widgetElement().selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = _selected.indexOf(d.origRow) >= 0;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context._selection.svgGlowID() && selected ? `url(#${context._selection.svgGlowID()})` : null)\n ;\n })\n ;\n\n const selRows = _selected.map(d => {\n return this.rowToObj(d);\n });\n setTimeout(() => {\n this.click(selRows, \"\", true);\n }, 0);\n }\n\n // XYAxis ---\n xAxisOrdinalMapping(origRow, lparam) {\n return origRow[0];\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // Selection ---\n _selection: Utility.SimpleSelection;\n}\nXYAxis.prototype._class += \" chart_XYAxis\";\nXYAxis.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface XYAxis {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n orientation_default(_: string);\n pointSizeColumn(): string;\n pointSizeColumn(_: string): this;\n pointSizeColumn_exists(): boolean;\n minPointSize(): number;\n minPointSize(_: number): this;\n maxPointSize(): number;\n maxPointSize(_: number): this;\n use2dSelection(): boolean;\n use2dSelection(_: boolean): this;\n selectionMode(): boolean;\n selectionMode(_: boolean): this;\n xAxisTitle(): string;\n xAxisTitle(_: string): this;\n xAxisTitle_exists(): boolean;\n xAxisTickCount(): number;\n xAxisTickCount(_: number): this;\n xAxisTickFormat(): string;\n xAxisTickFormat(_: string): this;\n xAxisTicks(): Array<{ value: string, label: string }>;\n xAxisTicks(_: Array<{ value: string, label: string }>): this;\n xAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n xAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n xAxisType_default(_: string);\n xAxisTypeTimePattern(): string;\n xAxisTypeTimePattern(_: string): this;\n xAxisDomainLow(): number | string;\n xAxisDomainLow(_: number | string): this;\n xAxisDomainHigh(): number | string;\n xAxisDomainHigh(_: number | string): this;\n xAxisFontSize(): number | string;\n xAxisFontSize(_: number | string): this;\n xAxisFontFamily(): string;\n xAxisFontFamily(_: string): this;\n xAxisOrdinalPaddingInner(): number;\n xAxisOrdinalPaddingInner(_: number): this;\n xAxisOrdinalPaddingOuter(): number;\n xAxisOrdinalPaddingOuter(_: number): this;\n xAxisOverlapMode(): \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\";\n xAxisOverlapMode(_: \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\"): this;\n xAxisLabelRotation(): number;\n xAxisLabelRotation(_: number): this;\n xAxisDomainPadding(): number;\n xAxisDomainPadding(_: number): this;\n xAxisGuideLines(): boolean;\n xAxisGuideLines(_: boolean): this;\n xAxisGuideLines_default(_: boolean);\n xAxisFocus(): boolean;\n xAxisFocus(_: boolean): this;\n xAxisFocusHeight(): number;\n xAxisFocusHeight(_: number): this;\n xAxisHidden(): boolean;\n xAxisHidden(_: boolean): this;\n xAxisHidden_default(_: boolean);\n yAxisTitle(): string;\n yAxisTitle(_: string): this;\n yAxisTickCount(): number;\n yAxisTickCount(_: number): this;\n yAxisTickFormat(): string;\n yAxisTickFormat(_: string): this;\n yAxisTicks(): Array<{ value: string, label: string }>;\n yAxisTicks(_: Array<{ value: string, label: string }>): this;\n yAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n yAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n yAxisType_default(_: string);\n yAxisTypeTimePattern(): string;\n yAxisTypeTimePattern(_: string): this;\n yAxisTypePowExponent(): number;\n yAxisTypePowExponent(_: number): this;\n yAxisTypeLogBase(): number;\n yAxisTypeLogBase(_: number): this;\n yAxisStacked(): boolean;\n yAxisStacked(_: boolean): this;\n yAxisDomainLow(): number | string;\n yAxisDomainLow(_: number | string): this;\n yAxisDomainHigh(): number | string;\n yAxisDomainHigh(_: number | string): this;\n yAxisDomainPadding(): number;\n yAxisDomainPadding(_: number): this;\n yAxisGuideLines(): boolean;\n yAxisGuideLines(_: boolean): this;\n yAxisGuideLines_default(_: boolean);\n yAxisHidden(): boolean;\n yAxisHidden(_: boolean): this;\n yAxisHidden_default(_: boolean);\n regions(): object[];\n regions(_: object[]): this;\n layers(): XYAxis[];\n layers(_: XYAxis[]): this;\n}\n\nXYAxis.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Selects orientation for the axis\", [\"horizontal\", \"vertical\"]);\nXYAxis.prototype.publish(\"pointSizeColumn\", null, \"string\", \"pointSizeColumn\", null, { optional: true });\nXYAxis.prototype.publish(\"minPointSize\", 6, \"number\", \"minPointSize\");\nXYAxis.prototype.publish(\"maxPointSize\", 26, \"number\", \"maxPointSize\");\nXYAxis.prototype.publish(\"use2dSelection\", false, \"boolean\", \"2D Range Selector\");\nXYAxis.prototype.publish(\"selectionMode\", false, \"boolean\", \"Range Selector\");\nXYAxis.prototype.publishProxy(\"xAxisTitle\", \"domainAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"xAxisTickCount\", \"domainAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"xAxisTickFormat\", \"domainAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"xAxisTicks\", \"domainAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"xAxisType\", \"domainAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"xAxisTypeTimePattern\", \"domainAxis\", \"timePattern\");\nXYAxis.prototype.publish(\"xAxisDomainLow\", null, \"string\", \"X-Axis Low\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"xAxisDomainHigh\", null, \"string\", \"X-Axis High\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"xAxisFontSize\", \"domainAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"xAxisFontFamily\", \"domainAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingInner\", \"domainAxis\", \"ordinalPaddingInner\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingOuter\", \"domainAxis\", \"ordinalPaddingOuter\");\nXYAxis.prototype.publishProxy(\"xAxisOverlapMode\", \"domainAxis\", \"overlapMode\");\nXYAxis.prototype.publishProxy(\"xAxisLabelRotation\", \"domainAxis\", \"labelRotation\");\nXYAxis.prototype.publishProxy(\"xAxisDomainPadding\", \"domainAxis\", \"extend\");\nXYAxis.prototype.publish(\"xAxisGuideLines\", false, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publish(\"xAxisFocus\", false, \"boolean\", \"X-Axis Focus\", null, { disable: (w: any) => w.orientation() !== \"horizontal\" });\nXYAxis.prototype.publish(\"xAxisFocusHeight\", 80, \"number\", \"X-Axis Focus Height\", null, { disable: (w: any) => !w.xAxisFocus() });\nXYAxis.prototype.publishProxy(\"xAxisHidden\", \"domainAxis\", \"hidden\");\nXYAxis.prototype.publishProxy(\"yAxisFontSize\", \"valueAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"yAxisFontFamily\", \"valueAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"yAxisTitle\", \"valueAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"yAxisTickCount\", \"valueAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"yAxisTickFormat\", \"valueAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"yAxisTicks\", \"valueAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"yAxisType\", \"valueAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"yAxisTypeTimePattern\", \"valueAxis\", \"timePattern\");\nXYAxis.prototype.publishProxy(\"yAxisTypePowExponent\", \"valueAxis\", \"powExponent\");\nXYAxis.prototype.publishProxy(\"yAxisTypeLogBase\", \"valueAxis\", \"logBase\");\nXYAxis.prototype.publish(\"yAxisStacked\", false, \"boolean\", \"Stacked Chart\", null, { tags: [\"Basic\"], disable: (w: any) => w.xAxisType() !== \"ordinal\" || w._class.indexOf(\"chart_Column\") < 0 });\nXYAxis.prototype.publish(\"yAxisDomainLow\", null, \"string\", \"Y-Axis Low\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"yAxisDomainHigh\", null, \"string\", \"Y-Axis High\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"yAxisDomainPadding\", \"valueAxis\", \"extend\");\nXYAxis.prototype.publish(\"yAxisGuideLines\", true, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publishProxy(\"yAxisHidden\", \"valueAxis\", \"hidden\");\nXYAxis.prototype.publish(\"regions\", [], \"array\", \"Regions\");\nXYAxis.prototype.publish(\"layers\", [], \"widgetArray\", \"Layers\", null, { render: false });\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport {\n area as d3Area,\n curveBasis as d3CurveBasis, curveBundle as d3CurveBundle, curveCardinal as d3CurveCardinal, curveCatmullRom as d3curveCatmullRom, curveLinear as d3CurveLinear,\n curveMonotoneX as d3CurveMonotoneX, curveNatural as d3CurveNatural, curveStep as d3CurveStep, curveStepAfter as d3CurveStepAfter, curveStepBefore as d3CurveStepBefore,\n line as d3Line\n} from \"d3-shape\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Scatter.css\";\n\nexport class Scatter extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n private curve(): any {\n switch (this.interpolate()) {\n case \"linear\":\n return d3CurveLinear;\n case \"step\":\n return d3CurveStep;\n case \"step-before\":\n return d3CurveStepBefore;\n case \"step-after\":\n return d3CurveStepAfter;\n case \"basis\":\n return d3CurveBasis;\n case \"bundle\":\n return d3CurveBundle;\n case \"cardinal\":\n return d3CurveCardinal;\n case \"catmullRom\":\n return d3curveCatmullRom;\n case \"natural\":\n return d3CurveNatural;\n case \"monotone\":\n default:\n return d3CurveMonotoneX;\n }\n }\n\n private getScale() {\n switch (this.pointSizeScale()) {\n case \"linear\":\n return d3ScaleLinear();\n case \"pow\":\n return d3ScalePow().exponent(2);\n case \"log\":\n return d3ScaleLog();\n case \"sqrt\":\n return d3ScaleSqrt();\n }\n }\n\n protected pointColor(row, col, value, origRow) {\n if (this.interpolate() && this.pointDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected lineColor(row, col, value, origRow) {\n if (this.interpolateFill() && this.interpolateDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected areaColor(row, col, value, origRow) {\n return this.fillColor(row, col, value, origRow);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.label,\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: context.data()[d.rowIdx][i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n }\n })\n ;\n }\n\n protected _prevPointShape;\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n const isHorizontal = host.orientation() === \"horizontal\";\n const height = isHorizontal ? this.height() : this.width();\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this._prevPointShape !== this.pointShape()) {\n element.selectAll(\".data\").remove();\n this._prevPointShape = this.pointShape();\n }\n\n function mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n const usePointSizeColumn = this.pointSizeColumn_exists();\n let pointSizeColumnIdx;\n let extent;\n let scale;\n if (usePointSizeColumn) {\n pointSizeColumnIdx = this.columns().indexOf(this.pointSizeColumn());\n extent = d3Extent(this.data(), d => d[pointSizeColumnIdx]);\n scale = this.getScale().domain(extent);\n }\n const layerColumns = this.layerColumns(host);\n const layerData = this.layerData(host);\n const flatData = this.flattenData(layerColumns, layerData).map(function (d) {\n d.shape = mapShape(context.pointShape());\n d.column = layerColumns[d.colIdx];\n d.row = layerData[d.rowIdx];\n d.origRow = (layerData[d.rowIdx] as any).__hpcc_origRow;\n if (extent) {\n d.size = scale(d.row[pointSizeColumnIdx]) * (context.maxPointSize() - context.minPointSize()) + context.minPointSize();\n return d.column === context.pointSizeColumn() ? false : d;\n } else {\n d.size = context.pointSize();\n return d;\n }\n\n }).filter(d => d);\n\n const areas = element.selectAll(\".area\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && context.interpolateFill() && idx > 0; }));\n const areasEnter = areas.enter().append(\"path\");\n const area = d3Area()\n .curve(this.curve())\n ;\n if (isHorizontal) {\n area\n .x(function (d) { return context.xPos(host, d); })\n .y0(Math.min(height, this.yPos(host, { value: 0 })))\n .y1(function (d) { return context.yPos(host, d); })\n ;\n } else {\n area\n .y(function (d) { return context.yPos(host, d); })\n .x0(Math.max(0, this.xPos(host, { value: 0 })))\n .x1(function (d) { return context.xPos(host, d); })\n ;\n }\n areasEnter.merge(areas)\n .attr(\"class\", d => \"area series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n element\n .attr(\"d\", area(flatData.filter(function (d2) { return d2.colIdx === idx + 1; })))\n .style(\"opacity\", context.interpolateFillOpacity())\n .style(\"stroke\", \"none\")\n .style(\"fill\", context.areaColor([], _d, undefined, []))\n ;\n });\n areas.exit().remove();\n\n const lines = element.selectAll(\".line\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && idx > 0; }));\n const linesEnter = lines.enter().append(\"path\");\n const line = d3Line()\n .x(function (d) { return context.xPos(host, d); })\n .y(function (d) { return context.yPos(host, d); })\n .curve(this.curve())\n ;\n linesEnter.merge(lines)\n .attr(\"class\", d => \"line series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n const data2 = flatData.filter(function (d2) { return d2.colIdx === idx + 1; });\n element\n .attr(\"d\", line(data2))\n .style(\"stroke\", context.lineColor([], _d, undefined, []))\n .style(\"fill\", \"none\")\n ;\n });\n lines.exit().remove();\n\n const points = element.selectAll(\".point\").data(flatData, function (d, idx) { return d.shape + \"_\" + idx; });\n points.enter().append(\"g\")\n .each(function (this: SVGElement, d2) {\n const element = d3Select(this);\n element\n .append(d2.shape)\n .attr(\"class\", \"pointShape\")\n ;\n element\n .append(\"text\")\n .attr(\"class\", \"pointValue\")\n .style(\"display\", \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .attr(\"fill\", function (d: any, _idx) {\n const useTextColor = context.valueBaseline() === \"middle\" || context.valueBaseline() === \"central\";\n return useTextColor ? context.textColor(d.row, d.column, d.value, d.origRow) : null;\n })\n ;\n element\n .append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any, _idx) {\n context.click(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n ;\n })\n .merge(points)\n .attr(\"class\", d => \"point series series-\" + this.cssTag(d.column))\n .each(function (this: SVGElement, d2) {\n const textSelection = d3Select(this).select(\".pointValue\");\n textSelection\n .attr(\"x\", function (d) { return context.xPos(host, d); })\n .attr(\"y\", function (d) { return context.yPos(host, d); })\n .style(\"display\", context.showValue() ? \"block\" : \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .text(function (d) {\n return d[\"value\"];\n })\n ;\n const elementSelection = d3Select(this).select(\".pointSelection\");\n elementSelection\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size)\n ;\n\n const element = d3Select(this).select(\".pointShape\");\n switch (d2.shape) {\n case \"rect\":\n element\n .attr(\"x\", function (d) { return context.xPos(host, d) - d2.size / 2; })\n .attr(\"y\", function (d) { return context.yPos(host, d) - d2.size / 2; })\n .attr(\"width\", d2.size)\n .attr(\"height\", d2.size)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"circle\":\n element\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size * 0.9)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"path\":\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2);\n })\n .style(\"stroke\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n default:\n }\n })\n ;\n points.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n paletteID: { (): string; (_: string): Scatter; };\n useClonedPalette: { (): boolean; (_: boolean): Scatter; };\n pointSizeScale: { (): string; (_: string): Scatter; };\n pointShape: { (): string; (_: string): Scatter; };\n pointSize: { (): number; (_: number): Scatter; };\n interpolate: { (): string; (_: string): Scatter; };\n interpolate_default: { (): string; (_: string): Scatter; };\n interpolateFill: { (): boolean; (_: boolean): Scatter; };\n interpolateFill_default: { (): boolean; (_: boolean): Scatter; };\n interpolateFillOpacity: { (): number; (_: number): Scatter; };\n\n // INDChart\n _palette;\n fillColor: (row, column, value, origRow) => string;\n strokeColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\nexport interface Scatter {\n valueAnchor(): string;\n valueAnchor(_: string): this;\n valueBaseline(): string;\n valueBaseline(_: string): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n pointDarken(): boolean;\n pointDarken(_: boolean): this;\n interpolateDarken(): boolean;\n interpolateDarken(_: boolean): this;\n}\nScatter.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Scatter.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nScatter.prototype.publish(\"pointSizeScale\", \"linear\", \"set\", \"pointSizeScale\", [\"linear\", \"pow\", \"log\", \"sqrt\"]);\nScatter.prototype.publish(\"pointShape\", \"cross\", \"set\", \"Shape of the data points\", [\"circle\", \"rectangle\", \"cross\"]);\nScatter.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nScatter.prototype.publish(\"interpolate\", \"\", \"set\", \"Interpolate Data\", [\"\", \"linear\", \"step\", \"step-before\", \"step-after\", \"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"natural\", \"monotone\"]);\nScatter.prototype.publish(\"pointDarken\", true, \"boolean\", \"If true, and interpolate is set, then points will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolate() });\nScatter.prototype.publish(\"interpolateDarken\", true, \"boolean\", \"If true, and interpolateFill is true, then lines will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolateFill() });\nScatter.prototype.publish(\"interpolateFill\", false, \"boolean\", \"If true, the area between the line and zero will be filled\");\nScatter.prototype.publish(\"interpolateFillOpacity\", 0.66, \"number\", \"Fill interpolation Opacity\", null, { range: { min: 0, step: 0.01, max: 1 } });\nScatter.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nScatter.prototype.publish(\"showValue\", false, \"boolean\");\nScatter.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nScatter.prototype.publish(\"valueBaseline\", \"ideographic\", \"set\", \"alignment-baseline for shown value text\", [\"auto\", \"baseline\", \"before-edge\", \"text-before-edge\", \"middle\", \"central\", \"after-edge\", \"text-after-edge\", \"ideographic\", \"alphabetic\", \"hanging\", \"mathematical\", \"inherit\"]);\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import { Scatter } from \"./Scatter\";\n\nexport class Area extends Scatter {\n constructor() {\n super();\n this\n .interpolate_default(\"linear\")\n .interpolateFill_default(true)\n ;\n }\n}\nArea.prototype._class += \" chart_Area\";\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, Text } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Column.css\";\n\nexport class Column extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n protected _linearGap: number;\n private textLocal = d3Local<Text>();\n private isHorizontal: boolean;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n\n this._selection.skipBringToTop(true);\n\n this._linearGap = 25.0;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.row[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: d.row[i + 1]\n };\n })\n });\n default:\n let value = d.row[d.idx];\n if (value instanceof Array) {\n value = value[1] - value[0];\n }\n return context.tooltipFormat({ label: d.row[0], series: context.layerColumns(host)[d.idx], value });\n }\n })\n ;\n }\n\n adjustedData(host: XYAxis) {\n const retVal = this.layerData(host).map(row => {\n let prevValue = 0;\n return row.map((cell, idx) => {\n if (idx === 0) {\n return cell;\n }\n if (idx >= this.layerColumns(host).length) {\n return cell;\n }\n const retVal2 = host.yAxisStacked() ? [prevValue, prevValue + cell] : cell;\n prevValue += cell;\n return retVal2;\n }, this);\n }, this);\n return retVal;\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const isHorizontal = host.orientation() === \"horizontal\";\n this.isHorizontal = isHorizontal;\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n let dataLen = 10;\n let offset = 0;\n switch (host.xAxisType()) {\n case \"ordinal\":\n dataLen = host.bandwidth();\n offset = -dataLen / 2;\n break;\n case \"linear\":\n case \"time\":\n dataLen = Math.max(Math.abs(host.dataPos(2) - host.dataPos(1)) * (100 - this._linearGap) / 100, dataLen);\n offset = -dataLen / 2;\n break;\n default:\n }\n\n this.tooltip.direction(isHorizontal ? \"n\" : \"e\");\n\n const columnScale = d3ScaleBand()\n .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; }))\n .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0])\n .paddingInner(this.xAxisSeriesPaddingInner())\n .paddingOuter(0)\n ;\n const rowData = this.adjustedData(host);\n let domainSums = [];\n const seriesSums = [];\n const columnLength = this.columns().length;\n if (this.showValue()) {\n switch (this.showValueAsPercent()) {\n case \"series\":\n rowData.forEach((row) => {\n row.filter((_, idx) => idx > 0 && idx < columnLength).forEach((col, idx) => {\n if (seriesSums[idx + 1] === undefined) {\n seriesSums[idx + 1] = 0;\n }\n seriesSums[idx + 1] += col;\n });\n\n });\n break;\n case \"domain\":\n domainSums = rowData.map(row => {\n return row.filter((cell, idx) => idx > 0 && idx < columnLength).reduce((sum, cell) => {\n return sum + cell;\n }, 0);\n });\n break;\n case null:\n default:\n }\n }\n const column = element.selectAll(\".dataRow\")\n .data(this.adjustedData(host))\n ;\n const hostData = host.data();\n const axisSize = this.getAxisSize(host);\n column.enter().append(\"g\")\n .attr(\"class\", \"dataRow\")\n .merge(column)\n .each(function (dataRow, dataRowIdx) {\n const element = d3Select(this);\n\n const columnGRect = element.selectAll(\".dataCell\").data(dataRow.filter(function (_d, i) { return i < context.layerColumns(host).length; }).map(function (d, i) {\n return {\n column: context.layerColumns(host)[i],\n row: dataRow,\n origRow: hostData[dataRowIdx],\n value: d,\n idx: i\n };\n }).filter(function (d) { return d.value !== null && d.idx > 0; }), (d: any) => d.column);\n\n const columnGEnter = columnGRect\n .enter().append(\"g\")\n .attr(\"class\", \"dataCell\")\n .on(\"mouseout.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.hide.apply(context, arguments);\n }\n })\n .on(\"mousemove.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.show.apply(context, arguments);\n }\n })\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n context.click(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n context.dblclick(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .style(\"opacity\", 0)\n .each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"class\", \"columnRect series series-\" + context.cssTag(d.column))\n ;\n element.append(\"text\")\n .attr(\"class\", \"columnRectText\")\n .style(\"stroke\", \"transparent\")\n ;\n })\n ;\n columnGEnter.transition().duration(duration)\n .style(\"opacity\", 1)\n ;\n const domainLength = host.yAxisStacked() ? dataLen : columnScale.bandwidth();\n columnGEnter.merge(columnGRect as any).each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n const domainPos = host.dataPos(dataRow[0]) + (host.yAxisStacked() ? 0 : columnScale(d.column)) + offset;\n const upperValue = d.value instanceof Array ? d.value[1] : d.value;\n let valueText = d.origRow[d.idx];\n if (context.showValue()) {\n const dm = context.dataMeta();\n switch (context.showValueAsPercent()) {\n case \"series\":\n const seriesSum = typeof dm.sum !== \"undefined\" ? dm.sum : seriesSums[d.idx];\n valueText = d3Format(context.showValueAsPercentFormat())(valueText / seriesSum);\n break;\n case \"domain\":\n const domainSum = typeof dm.sum !== \"undefined\" ? dm.sum : domainSums[d.idx];\n valueText = d3Format(context.showValueAsPercentFormat())(valueText / domainSum);\n break;\n case null:\n default:\n valueText = d3Format(context.showValueFormat())(valueText);\n break;\n }\n }\n const upperValuePos = host.valuePos(upperValue);\n const lowerValuePos = host.valuePos(d.value instanceof Array ? d.value[0] : 0);\n const valuePos = Math.min(lowerValuePos, upperValuePos);\n const valueLength = Math.abs(upperValuePos - lowerValuePos);\n\n const innerTextHeight = context.innerTextFontSize();\n const innerTextPadding = context.innerTextPadding_exists() ? context.innerTextPadding() : innerTextHeight / 2.5;\n\n const dataRect = context.intersectRectRect(\n {\n x: isHorizontal ? domainPos : valuePos,\n y: isHorizontal ? valuePos : domainPos,\n width: isHorizontal ? domainLength : valueLength,\n height: isHorizontal ? valueLength : domainLength\n },\n {\n x: 0,\n y: 0,\n width: axisSize.width,\n height: axisSize.height\n }\n );\n\n const _rects = element.select(\"rect\").transition().duration(duration)\n .style(\"fill\", (d: any) => context.fillColor(d.row, d.column, d.value, d.origRow))\n ;\n\n if (isHorizontal) {\n _rects\n .attr(\"x\", domainPos)\n .attr(\"y\", valuePos)\n .attr(\"width\", domainLength)\n .attr(\"height\", valueLength)\n ;\n } else {\n _rects\n .attr(\"y\", domainPos)\n .attr(\"x\", valuePos)\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n }\n const _texts = element.select(\"text\").transition().duration(duration)\n .style(\"font-size\", innerTextHeight + \"px\")\n .style(\"fill\", (d: any) => context.textColor(d.row, d.column, d.value, d.origRow))\n ;\n\n _texts.style(\"font-family\", context.innerTextFontFamily_exists() ? context.innerTextFontFamily() : null);\n\n const padding = context.innerTextPadding_exists() ? context.innerTextPadding() : 8;\n\n const textHeightOffset = innerTextHeight / 2.7;\n\n if (isHorizontal) { // Column\n const y = dataRect.y + dataRect.height - innerTextPadding;\n _texts\n .attr(\"x\", domainPos + (domainLength / 2))\n .attr(\"y\", y + textHeightOffset)\n .attr(\"transform\", `rotate(-90, ${domainPos + (domainLength / 2)}, ${y})`)\n ;\n } else { // Bar\n _texts\n .attr(\"x\", dataRect.x + padding)\n .attr(\"y\", domainPos + (domainLength / 2) + textHeightOffset)\n ;\n }\n _texts\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n if (context.showInnerText()) {\n _texts\n .text((d: any) => {\n const innerText = context.innerText(d.origRow, d.origRow[columnLength], d.idx);\n if (innerText) {\n const clippedValueLength = isHorizontal ? dataRect.height : dataRect.width;\n const innerTextObj = context.calcInnerText(clippedValueLength, innerText, valueText);\n d.innerTextObj = innerTextObj;\n\n return innerTextObj.text;\n }\n return \"\";\n })\n ;\n }\n const dataText = element.selectAll(\".dataText\").data(context.showValue() ? [`${upperValue}`] : []);\n const dataTextEnter = dataText.enter().append(\"g\")\n .attr(\"class\", \"dataText\")\n .each(function (this: SVGElement, d) {\n context.textLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n dataTextEnter.merge(dataText as any)\n .each(function (this: SVGElement) {\n const pos = { x: 0, y: 0 };\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(valueText, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(valueText) >= 0;\n\n let valueAnchor = context.valueAnchor() ? context.valueAnchor() : isHorizontal ? \"middle\" : \"start\";\n\n const leftSpace = dataRect.x;\n const rightSpace = axisSize.width - (dataRect.x + dataRect.width);\n const topSpace = dataRect.y;\n const bottomSpace = axisSize.height - (dataRect.y + dataRect.height);\n\n let noRoomInside;\n let isOutside;\n let noRoomOnExpectedSide;\n\n if (d.innerTextObj) {\n const { padding, valueTextWidth } = d.innerTextObj;\n isOutside = false;\n if (isHorizontal) { // Column\n valueAnchor = \"middle\";\n pos.x = domainPos + (domainLength / 2);\n\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.y = valuePos - padding - (valueFontSize / 2);\n } else {\n pos.y = valuePos + padding + (valueFontSize / 2);\n }\n } else { // Bar\n valueAnchor = \"start\";\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.x = (valueLength + valuePos) + padding;\n } else {\n pos.x = (valueLength + valuePos) - valueTextWidth - padding;\n }\n pos.y = domainPos + (domainLength / 2);\n }\n } else {\n /*\n IF this.valueCentered() and NO ROOM INSIDE\n ...then ASSUME THERES ROOM OUTSIDE\n IF NO ROOM OUTSIDE ON EXPECTED SIDE\n ...then ASSUME THERES ROOM ON THE OPPOSITE SIDE\n */\n if (isHorizontal) { // Column\n noRoomInside = dataRect.height < textSize.height;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.x = dataRect.x + (dataRect.width / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = topSpace < textSize.height + padding;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y + dataRect.height + textSize.height;\n }\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n noRoomOnExpectedSide = bottomSpace < textSize.height;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n pos.y = dataRect.y + textSize.height + padding;\n }\n }\n } else {\n pos.y = dataRect.y + (dataRect.height / 2);\n }\n } else { // Bar\n\n noRoomInside = dataRect.width < textSize.width;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.y = dataRect.y + (dataRect.height / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = rightSpace < textSize.width + padding;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width / 2) + padding;\n }\n } else {\n noRoomOnExpectedSide = leftSpace < textSize.width;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n }\n } else {\n pos.x = dataRect.x + (dataRect.width / 2);\n }\n }\n }\n const textColor = isOutside ? null : context.textColor(d.row, d.column, d.value, d.origRow);\n\n // Prevent overlapping labels on stacked columns\n const columns = context.columns();\n const hideValue = isOutside && context.yAxisStacked() && columns.indexOf(d.column) !== columns.length - 1;\n context.textLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(`${valueText}`)\n .colorFill(textColor)\n .visible(context.showValue() && !hideValue)\n .render()\n ;\n\n });\n dataText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n columnGRect.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove()\n ;\n });\n column.exit().transition().duration(duration)\n .remove()\n ;\n }\n\n calcInnerText(offset, innerText, valueText) {\n\n const fontFamily = this.innerTextFontFamily_exists() ? this.innerTextFontFamily() : \"Verdana\";\n const fontSize = this.innerTextFontSize();\n const valueFontFamily = this.valueFontFamily_exists() ? this.valueFontFamily() : \"Verdana\";\n const valueFontSize = this.valueFontSize();\n const padding = this.innerTextPadding_exists() ? this.innerTextPadding() : fontSize / 2.5;\n const valueTextWidth = this.isHorizontal ? valueFontSize : this.textSize(valueText, valueFontFamily, valueFontSize).width;\n const ellipsisWidth = this.textSize(\"...\", fontFamily, fontSize).width;\n const innerTextWidth = this.textSize(innerText, fontFamily, fontSize).width;\n const origInnerText = innerText;\n\n const fullWidth = (padding * 3) + innerTextWidth + valueTextWidth;\n const fullWidth2 = (padding * 3) + ellipsisWidth + valueTextWidth;\n const fullWidth3 = (padding * 1) + valueTextWidth;\n /*\n Categories:\n 1) room to display inner text (with padding) AND value text (with padding)\n 2) room to display ellipsis (with padding) AND value text (with padding)\n 3) room to display value text only (with padding)\n 4) no room to display any text except value on the outside\n */\n let category = 4;\n if (fullWidth < offset) {\n category = 1;\n } else if (fullWidth2 < offset) {\n const excessWidth = offset - fullWidth2;\n let _text = \"\";\n for (const letter of innerText) {\n if (this.textSize(_text + letter, fontFamily, fontSize).width > excessWidth) {\n innerText = _text + \"...\";\n break;\n } else {\n _text += letter;\n }\n }\n category = 2;\n } else if (fullWidth3 < offset) {\n innerText = \"\";\n category = 3;\n } else {\n innerText = \"\";\n }\n\n return {\n text: innerText,\n isTruncated: origInnerText !== innerText,\n padding,\n category,\n valueTextWidth\n };\n }\n\n innerText(origRow, lparam, idx): string {\n return origRow[0];\n }\n\n // INDChart ---\n _palette;\n fillColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nColumn.prototype._class += \" chart_Column\";\nColumn.prototype.implements(INDChart.prototype);\nColumn.prototype.implements(ITooltip.prototype);\n\nexport interface Column {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n showInnerText(): boolean;\n showInnerText(_: boolean): this;\n showValueFormat(): string;\n showValueFormat(_: string): this;\n showValueAsPercent(): null | \"series\" | \"domain\";\n showValueAsPercent(_: null | \"series\" | \"domain\"): this;\n showValueAsPercentFormat(): string;\n showValueAsPercentFormat(_: string): this;\n valueCentered(): boolean;\n valueCentered(_: boolean): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueFontFamily(): string;\n valueFontFamily(_: string): this;\n valueFontFamily_exists(): boolean;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n xAxisSeriesPaddingInner(): number;\n xAxisSeriesPaddingInner(_: number): this;\n innerTextFontFamily(): string;\n innerTextFontFamily(_: string): this;\n innerTextFontFamily_exists(): boolean;\n innerTextFontSize(): number;\n innerTextFontSize(_: number): this;\n innerTextPadding(): number;\n innerTextPadding(_: number): this;\n innerTextPadding_exists(): boolean;\n tooltipInnerTextEllipsedOnly(): boolean;\n tooltipInnerTextEllipsedOnly(_: boolean): this;\n}\n\nColumn.prototype.publish(\"valueFontFamily\", null, \"string\", \"Font family of value text\", null, { optional: true });\nColumn.prototype.publish(\"valueFontSize\", 12, \"number\", \"Height of value text (pixels)\");\nColumn.prototype.publish(\"innerTextFontFamily\", null, \"string\", \"Font family of inner text\", null, { optional: true });\nColumn.prototype.publish(\"innerTextPadding\", 8, \"number\", \"Offset of inner text (pixels)\", null, { optional: true });\nColumn.prototype.publish(\"innerTextFontSize\", 12, \"number\", \"Height of inner text (pixels)\");\nColumn.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", () => Column.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nColumn.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nColumn.prototype.publish(\"showValue\", false, \"boolean\", \"Show Value in column\");\nColumn.prototype.publish(\"showInnerText\", false, \"boolean\", \"Show Label in column\");\nColumn.prototype.publish(\"showValueFormat\", \",\", \"string\", \"D3 Format for Value\", null, { disable: (w: Column) => !w.showValue() || !!w.showValueAsPercent() });\nColumn.prototype.publish(\"showValueAsPercent\", null, \"set\", \"If showValue is true, optionally show value as a percentage by Series or Domain\", [null, \"series\", \"domain\"], { disable: w => !w.showValue(), optional: true });\nColumn.prototype.publish(\"showValueAsPercentFormat\", \".0%\", \"string\", \"D3 Format for %\", null, { disable: (w: Column) => !w.showValue() || !w.showValueAsPercent() });\nColumn.prototype.publish(\"valueCentered\", false, \"boolean\", \"Show Value in center of column\");\nColumn.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nColumn.prototype.publish(\"xAxisSeriesPaddingInner\", 0, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\");\nColumn.prototype.publish(\"tooltipInnerTextEllipsedOnly\", false, \"boolean\", \"Show tooltip only when inner text is truncated with an ellipsis\");\n\n/*\nconst origUseClonedPalette = Column.prototype.useClonedPalette;\nColumn.prototype.useClonedPalette = function (this: Column, _?) {\n const retVal = origUseClonedPalette.apply(this, arguments);\n if (arguments.length) {\n this._useClonedPalette = _;\n }\n return retVal;;\n}\n*/\n","import { Column } from \"./Column\";\n\nexport class Bar extends Column {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n }\n}\nBar.prototype._class += \" chart_Bar\";\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { FAChar, InputField, ISize, SVGWidget, Text, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Bubble.css\";\n\nexport class Bubble extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n labelWidgets;\n d3Pack;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.labelWidgets = {};\n\n this.d3Pack = d3Pack()\n .size([this.width(), this.height()])\n .padding(1.5)\n ;\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.d3Pack\n .size([this.width(), this.height()])\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d[0]),\n value: d[1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n const root = d3Hierarchy({ children: this.cloneData() })\n .sum(function (d) { return d[1]; })\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n ;\n this.d3Pack(root);\n\n const node = element.selectAll(\".node\").data(root.children || [], d => d.data[0]);\n\n // Enter ---\n node.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"node series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.append(\"circle\")\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .attr(\"r\", 0)\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]] = new FAChar()\n .char(d.__viz_faChar)\n .target(this)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]] = new Text()\n .text(d.data[0])\n .target(this)\n .render()\n ;\n }\n })\n .merge(node).transition()\n .attr(\"opacity\", 1)\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.select(\"circle\").transition()\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n .attr(\"r\", d.r)\n .select(\"title\")\n .text(d.data[0] + \" (\" + d.data[1] + \")\")\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .colorFill_default(context.textColor(d.data, context.columns()[1], d.data[1]))\n .width(d.r * 2)\n .text(d.data[0])\n .render()\n ;\n }\n })\n ;\n\n // Exit ---\n node.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n paletteID: { (): string; (_: string): Bubble; };\n useClonedPalette: { (): boolean; (_: boolean): Bubble; };\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n\n // SimpleSelectionMixin\n _selection;\n}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nBubble.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Bubble.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nBubble.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { Scatter } from \"./Scatter\";\n\nexport class BubbleXY extends Scatter {\n constructor() {\n super();\n }\n enter(domNode, element) {\n if (!this.pointSizeColumn_exists()) {\n this.pointSizeColumn(this.columns()[this.columns().length - 1]);\n }\n super.enter(domNode, element);\n }\n}\nBubbleXY.prototype._class += \" chart_BubbleXY\";\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 { descending as d3Descending } from \"d3-array\";\r\nimport { axisLeft as d3AxisLeft } from \"d3-axis\";\r\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { timerFlush as d3TimerFlush } from \"d3-timer\";\r\nimport \"d3-transition\";\r\n\r\nexport default function () {\r\n var orient = \"left\",\r\n reverse = false,\r\n vertical = false,\r\n ranges = bulvarRanges,\r\n markers = bulvarMarkers,\r\n measures = bulvarMeasures,\r\n width = 380,\r\n height = 30,\r\n xAxis = d3AxisLeft();\r\n\r\n // For each small multiple…\r\n function bulvar(g) {\r\n g.each(function (d, i) {\r\n var rangez = ranges.call(this, d, i).slice().sort(d3Descending),\r\n markerz = markers.call(this, d, i).slice().sort(d3Descending),\r\n measurez = measures.call(this, d, i).slice().sort(d3Descending),\r\n g2 = d3Select(this),\r\n extentX,\r\n extentY;\r\n\r\n var wrap = g2.select(\"g.wrap\");\r\n if (wrap.empty()) wrap = g2.append(\"g\").attr(\"class\", \"wrap\");\r\n\r\n if (vertical) {\r\n extentX = height, extentY = width;\r\n wrap.attr(\"transform\", \"rotate(90)translate(0,\" + -width + \")\");\r\n } else {\r\n extentX = width, extentY = height;\r\n wrap.attr(\"transform\", null);\r\n }\r\n\r\n // Compute the new x-scale.\r\n var x1 = d3ScaleLinear()\r\n .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])\r\n .range(reverse ? [extentX, 0] : [0, extentX]);\r\n\r\n // Retrieve the old x-scale, if this is an update.\r\n var x0 = this.__chart__ || d3ScaleLinear()\r\n .domain([0, Infinity])\r\n .range(x1.range());\r\n\r\n // Stash the new scale.\r\n this.__chart__ = x1;\r\n\r\n // Derive width-scales from the x-scales.\r\n var w0 = bulvarWidth(x0),\r\n w1 = bulvarWidth(x1);\r\n\r\n // Update the range rects.\r\n var range = wrap.selectAll(\"rect.range\")\r\n .data(rangez);\r\n\r\n range.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"range s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .merge(range)\r\n .transition(range)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY);\r\n\r\n // Update the measure rects.\r\n var measure = wrap.selectAll(\"rect.measure\")\r\n .data(measurez);\r\n\r\n measure.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"measure s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .attr(\"y\", extentY / 3)\r\n .merge(measure)\r\n .transition(measure)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"y\", extentY / 3);\r\n\r\n // Update the marker lines.\r\n var marker = wrap.selectAll(\"line.marker\")\r\n .data(markerz);\r\n\r\n marker.enter().append(\"line\")\r\n .attr(\"class\", \"marker\")\r\n .attr(\"x1\", x0)\r\n .attr(\"x2\", x0)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6)\r\n .merge(marker)\r\n .transition(marker)\r\n .attr(\"x1\", x1)\r\n .attr(\"x2\", x1)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6);\r\n\r\n var axis = g2.selectAll(\"g.axis\").data([0]);\r\n axis.enter().append(\"g\").attr(\"class\", \"axis\");\r\n axis.attr(\"transform\", vertical ? null : \"translate(0,\" + extentY + \")\")\r\n .call(xAxis.scale(x1));\r\n });\r\n d3TimerFlush();\r\n }\r\n\r\n // left, right, top, bottom\r\n bulvar.orient = function (_) {\r\n if (!arguments.length) return orient;\r\n orient = _ + \"\";\r\n reverse = orient === \"right\" || orient === \"bottom\";\r\n xAxis.orient((vertical = orient === \"top\" || orient === \"bottom\") ? \"left\" : \"bottom\"); // eslint-disable-line\r\n return bulvar;\r\n };\r\n\r\n // ranges (bad, satisfactory, good)\r\n bulvar.ranges = function (_) {\r\n if (!arguments.length) return ranges;\r\n ranges = _;\r\n return bulvar;\r\n };\r\n\r\n // markers (previous, goal)\r\n bulvar.markers = function (_) {\r\n if (!arguments.length) return markers;\r\n markers = _;\r\n return bulvar;\r\n };\r\n\r\n // measures (actual, forecast)\r\n bulvar.measures = function (_) {\r\n if (!arguments.length) return measures;\r\n measures = _;\r\n return bulvar;\r\n };\r\n\r\n bulvar.width = function (_) {\r\n if (!arguments.length) return width;\r\n width = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.height = function (_) {\r\n if (!arguments.length) return height;\r\n height = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.tickFormat = function (_) {\r\n if (!arguments.length) return xAxis.tickFormat();\r\n xAxis.tickFormat(_);\r\n return bulvar;\r\n };\r\n\r\n return bulvar;\r\n}\r\n\r\nfunction bulvarRanges(d) {\r\n return d.ranges;\r\n}\r\n\r\nfunction bulvarMarkers(d) {\r\n return d.markers;\r\n}\r\n\r\nfunction bulvarMeasures(d) {\r\n return d.measures;\r\n}\r\n\r\nfunction bulvarWidth(x) {\r\n var x0 = x(0);\r\n return function (d) {\r\n return Math.abs(x(d) - x0);\r\n };\r\n}\r\n","import { HTMLWidget, publish, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { bullet as d3Bullet } from \"d3v4-bullet\";\n\nimport \"../src/Bullet.css\";\n\nexport class Bullet extends HTMLWidget {\n @publish(null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true })\n titleColumn: publish<this, string>;\n @publish(null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true })\n subtitleColumn: publish<this, string>;\n @publish(null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true })\n rangesColumn: publish<this, string>;\n @publish(null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true })\n measuresColumn: publish<this, string>;\n @publish(null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true })\n markersColumn: publish<this, string>;\n\n private _hiddenColumns = {};\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n bulletData() {\n const context = this;\n this._hiddenColumns = {};\n const columns = this.columns();\n return this.data().map(function (row) {\n return {\n title: valueOf(row, this.titleColumn()),\n subtitle: valueOf(row, this.subtitleColumn()),\n ranges: valueOf(row, this.rangesColumn(), \"range\"),\n measures: valueOf(row, this.measuresColumn(), \"measure\"),\n markers: valueOf(row, this.markersColumn(), \"marker\"),\n origRow: row\n };\n }, this);\n\n function valueOf(row, column, columnType?) {\n const colIdx = columns.indexOf(column);\n if (colIdx >= 0) {\n if (row[colIdx] instanceof Array) {\n return row[colIdx];\n }\n return [row[colIdx]];\n }\n if (columnType) {\n context._hiddenColumns[columnType] = true;\n }\n return [0];\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow\", \"auto\");\n this._selection.widgetElement(element);\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n\n element.selectAll(\".axis\")\n .style(\"display\", \"none\")\n ;\n element.selectAll(\".range,.measure,.marker\")\n .style(\"display\", null)\n ;\n\n const margin = { left: 2, top: 8, right: 2, bottom: 8 };\n const width = this.width() - margin.left - margin.right;\n const height = 40 - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.bulletData());\n const svgUpdate = svg.enter().append(\"svg\")\n .attr(\"class\", \"bullet\")\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 element2 = d3Select(this);\n const bulletBar = element2.append(\"g\")\n .attr(\"class\", (d, i) => \"bulletBar series series-\" + context.cssTag(context.titleColumn()))\n ;\n const bulletTitle = bulletBar.append(\"g\")\n .attr(\"class\", \"bulletTitle\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"title\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"subtitle\")\n .attr(\"dy\", \"1em\")\n ;\n })\n .merge(svg)\n ;\n\n // Title ---\n const title = svgUpdate.select(\".bulletTitle\")\n .style(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(-6,\" + height / 2 + \")\")\n ;\n title.select(\".title\")\n .text(function (d) { return d.title; })\n ;\n title.select(\".subtitle\")\n .text(function (d) { return d.subtitle; })\n ;\n\n let titleWidth = 0;\n title.each(function () {\n const bbox = this.getBBox();\n if (bbox.width > titleWidth) {\n titleWidth = bbox.width;\n }\n });\n titleWidth; // Gap between title and bullet bar.\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\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}\nBullet.prototype._class += \" chart_Bullet\";\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import { I1DChart } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { contourDensity as d3ContourDensity } from \"d3-contour\";\nimport { geoPath } from \"d3-geo\";\nimport { XYAxis } from \"./XYAxis\";\n\nexport class Contour extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n\n this._palette = this._palette.switch(this.paletteID());\n\n const data = this.flattenData(this.layerColumns(host), this.layerData(host));\n const contourData = d3ContourDensity()\n .x(d => this.xPos(host, d))\n .y(d => this.yPos(host, d))\n .size([this.width(), this.height()])\n .bandwidth(this.contourBandwidth())(data)\n ;\n const _vals = contourData.map(d => d.value);\n const minValue = Math.min.apply(this, _vals);\n const maxValue = Math.max.apply(this, _vals);\n this._dataMinWeight = minValue;\n this._dataMaxWeight = maxValue;\n const lines = element.selectAll(\"path\").data(contourData);\n lines.enter().append(\"path\")\n .merge(lines)\n .attr(\"d\", geoPath())\n .attr(\"fill\", d => this.showContourFill() ? this._palette(d.value, minValue, maxValue) : \"none\")\n .attr(\"stroke\", this.contourStrokeColor())\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-width\", this.contourStrokeWidth())\n ;\n lines.exit().remove();\n }\n\n exit(_domNode, _element) {\n super.exit(_domNode, _element);\n }\n}\nContour.prototype._class += \" chart_Contour\";\nContour.prototype.implements(I1DChart.prototype);\n\nexport interface Contour {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showContourFill(): boolean;\n showContourFill(_: boolean): this;\n showContour(): boolean;\n showContour(_: boolean): this;\n contourBandwidth(): number;\n contourBandwidth(_: number): this;\n contourStrokeColor(): string;\n contourStrokeColor(_: string): this;\n contourStrokeWidth(): number;\n contourStrokeWidth(_: number): this;\n}\nContour.prototype.publish(\"paletteID\", \"YlGnBu\", \"string\", \"Color palette for this widget\");\nContour.prototype.publish(\"useClonedPalette\", true, \"boolean\", \"Enable or disable using a cloned palette\");\nContour.prototype.publish(\"showContourFill\", true, \"boolean\", \"Show/hide the contour background colors\");\nContour.prototype.publish(\"showContour\", true, \"boolean\", \"Show/hide the contour border lines\");\nContour.prototype.publish(\"contourBandwidth\", 40, \"number\", \"Controls the sensitivity of the contour grouping algorithm\");\nContour.prototype.publish(\"contourStrokeColor\", \"#2C3A47\", \"html-color\", \"Color of the contour border lines\");\nContour.prototype.publish(\"contourStrokeWidth\", 1, \"number\", \"Width of the contour border lines\");\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import { Bar } from \"./Bar\";\n\nexport class Gantt extends Bar {\n constructor() {\n super();\n\n this\n .orientation_default(\"vertical\")\n .xAxisType_default(\"ordinal\")\n .yAxisType_default(\"time\")\n ;\n }\n}\nGantt.prototype._class += \" chart_Gantt\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {epsilon, pi, halfPi, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = Math.abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * Math.cos(a0), r1 * Math.sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * Math.cos(a1), r0 * Math.sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : Math.sqrt(r0 * r0 + r1 * r1)),\n rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * Math.sin(ap)),\n p1 = asin(rp / r1 * Math.sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * Math.cos(a01),\n y01 = r1 * Math.sin(a01),\n x10 = r0 * Math.cos(a10),\n y10 = r0 * Math.sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * Math.cos(a11),\n y11 = r1 * Math.sin(a11),\n x00 = r0 * Math.cos(a00),\n y00 = r0 * Math.sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","export default class Annotation {\n constructor({\n x = 0,\n y = 0,\n nx,\n ny,\n dy = 0,\n dx = 0,\n color = \"grey\",\n data,\n type,\n subject,\n connector,\n note,\n disable,\n id,\n className\n }) {\n this._dx = nx !== undefined ? nx - x : dx\n this._dy = ny !== undefined ? ny - y : dy\n this._x = x\n this._y = y\n this._color = color\n this.id = id\n this._className = className || \"\"\n\n this._type = type || \"\"\n this.data = data\n\n this.note = note || {}\n this.connector = connector || {}\n this.subject = subject || {}\n\n this.disable = disable || []\n }\n\n updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition()\n if (\n this.type.subject &&\n this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0\n ) {\n this.type.redrawSubject()\n }\n }\n }\n\n clearComponents() {\n this.type.clearComponents && this.type.clearComponents()\n }\n\n get className() {\n return this._className\n }\n\n set className(className) {\n this._className = className\n if (this.type.setClassName) this.type.setClassName()\n }\n\n updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset()\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector()\n }\n\n this.type.redrawNote()\n }\n }\n\n get type() {\n return this._type\n }\n\n set type(type) {\n this._type = type\n this.clearComponents()\n }\n\n get x() {\n return this._x\n }\n set x(x) {\n this._x = x\n this.updatePosition()\n }\n\n get y() {\n return this._y\n }\n set y(y) {\n this._y = y\n this.updatePosition()\n }\n\n get color() {\n return this._color\n }\n set color(color) {\n this._color = color\n this.updatePosition()\n }\n\n get dx() {\n return this._dx\n }\n set dx(dx) {\n this._dx = dx\n this.updateOffset()\n }\n\n get dy() {\n return this._dy\n }\n set dy(dy) {\n this._dy = dy\n this.updateOffset()\n }\n\n set nx(nx) {\n this._dx = nx - this._x\n this.updateOffset()\n }\n\n set ny(ny) {\n this._dy = ny - this._y\n this.updateOffset()\n }\n\n get offset() {\n return { x: this._dx, y: this._dy }\n }\n\n set offset({ x, y }) {\n this._dx = x\n this._dy = y\n this.updateOffset()\n }\n\n get position() {\n return { x: this._x, y: this._y }\n }\n\n set position({ x, y }) {\n this._x = x\n this._y = y\n this.updatePosition()\n }\n\n get translation() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n }\n }\n\n get json() {\n const json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n }\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data\n if (this.type) json.type = this.type\n if (this._className) json.className = this._className\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector\n if (Object.keys(this.subject).length > 0) json.subject = this.subject\n if (Object.keys(this.note).length > 0) json.note = this.note\n\n return json\n }\n}\n","export default class AnnotationCollection {\n\n constructor ({ annotations, accessors, accessorsInverse }) {\n this.accessors = accessors\n this.accessorsInverse = accessorsInverse\n this.annotations = annotations\n }\n\n clearTypes (newSettings) {\n this.annotations.forEach(d => {\n d.type = undefined\n d.subject = newSettings && newSettings.subject || d.subject\n d.connector = newSettings && newSettings.connector || d.connector\n d.note = newSettings && newSettings.note || d.note\n })\n }\n\n setPositionWithAccessors () {\n this.annotations.forEach(d => {\n d.type.setPositionWithAccessors(this.accessors)\n })\n }\n\n editMode (editMode) { this.annotations.forEach(a => {\n if (a.type) {\n a.type.editMode = editMode\n a.type.updateEditMode()\n }\n })\n }\n\n updateDisable (disable) {\n this.annotations.forEach(a => {\n a.disable = disable\n if (a.type) {\n disable.forEach(d => {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove()\n a.type[d] = undefined\n }\n })\n }\n })\n }\n\n updateTextWrap (textWrap) {\n this.annotations.forEach(a => {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap)\n }\n })\n }\n\n updateText () {\n this.annotations.forEach(a => {\n if (a.type && a.type.drawText) {\n a.type.drawText()\n }\n })\n }\n\n updateNotePadding (notePadding) {\n this.annotations.forEach(a => {\n if (a.type) {\n a.type.notePadding = notePadding\n }\n })\n }\n\n get json () { \n return this.annotations.map(a => { \n const json = a.json\n if (this.accessorsInverse && a.data) {\n json.data = {}\n Object.keys(this.accessorsInverse).forEach(k => {\n json.data[k] = this.accessorsInverse[k]({ x: a.x, y: a.y})\n\n //TODO make this feasible to map back to data for other types of subjects\n })\n }\n return json\n })\n }\n\n get noteNodes () {\n return this.annotations.map(a => ({ ...a.type.getNoteBBoxOffset(), positionX: a.x, positionY: a.y }))\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n}\n","\nexport const leftRightDynamic = (align, y) => {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) { align = \"top\" }\n else { align = \"bottom\" } \n }\n return align\n}\n\nexport const topBottomDynamic = (align, x) => {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) { align = \"right\" }\n else { align = \"left\" } \n }\n return align\n}\n\nconst orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"]\nconst orientationLeftRight = [\"leftRight\", \"left\", \"right\"]\n\nexport default ({ padding=0, bbox={x:0, y:0, width:0, height:0}, align, orientation, offset={x:0, y:0} }) => {\n let x = -bbox.x \n let y = 0//-bbox.y\n if ( orientationTopBottom.indexOf(orientation) !== -1 ) {\n align = topBottomDynamic(align, offset.x)\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") { \n y -= bbox.height + padding\n } else {\n y += padding\n }\n\n if ( align === \"middle\" ) {\n x -= bbox.width/2\n } else if (align === \"right\" ) {\n x -= bbox.width\n } \n\n } else if ( orientationLeftRight.indexOf(orientation) !== -1 ) {\n align = leftRightDynamic(align, offset.y)\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") { \n x -= bbox.width + padding\n } else {\n x += padding\n }\n\n if ( align === \"middle\" ) {\n y -= bbox.height/2\n } else if (align === \"top\" ) {\n y -= bbox.height\n }\n } \n\n return { x, y }\n}","import { line, arc, curveLinear } from \"d3-shape\"\n\nexport const lineBuilder = ({ data, curve=curveLinear, canvasContext, className, classID }) => { \n const lineGen = line()\n .curve(curve)\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n if (canvasContext) {\n lineGen.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n builder.attrs = {\n d: lineGen(data)\n }\n }\n\n return builder\n}\n\nexport const arcBuilder = ({ data, canvasContext, className, classID }) => {\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n const arcShape = arc()\n .innerRadius(data.innerRadius || 0)\n .outerRadius(data.outerRadius || data.radius || 2)\n .startAngle(data.startAngle || 0)\n .endAngle(data.endAngle || 2*Math.PI)\n\n if (canvasContext) {\n arcShape.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n \n builder.attrs = {\n d: arcShape()\n }\n }\n\n return builder\n}","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import { lineBuilder } from '../Builder'\n\nexport const lineSetup = ({ type, subjectType }) => {\n let annotation = type.annotation\n let offset = annotation.position\n \n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n\n const subjectData = annotation.subject\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const h = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))\n const angle = Math.asin(-y2/h)\n const r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0)\n\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n\n }\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n\n return [[x1, y1], [x2, y2]]\n}\n\nexport default (connectorData) => {\n const data = lineSetup(connectorData)\n return { components: [lineBuilder({ data, className : \"connector\" })]} \n}","import { lineBuilder } from '../Builder'\nimport { event } from 'd3-selection'\nimport { lineSetup } from './type-line'\nimport { curveCatmullRom } from 'd3-shape'\nimport { pointHandle } from '../Handles'\n\nexport default ({ type, connectorData, subjectType }) => {\n\n if (!connectorData) { connectorData = {} }\n if (!connectorData.points || typeof connectorData.points === \"number\") { \n connectorData.points = createPoints(type.annotation.offset, connectorData.points) \n }\n if (!connectorData.curve) { connectorData.curve = curveCatmullRom }\n\n let handles = []\n\n if (type.editMode) {\n const cHandles = connectorData.points\n .map((c,i) => ({...pointHandle({cx: c[0], cy: c[1]}), index: i}))\n\n const updatePoint = (index) => { \n connectorData.points[index][0] += event.dx\n connectorData.points[index][1] += event.dy\n type.redrawConnector()\n }\n \n handles = type.mapHandles(cHandles\n .map(h => ({ ...h.move, drag: updatePoint.bind(type, h.index)})))\n\n }\n\n let data = lineSetup({ type, subjectType })\n data = [data[0], ...connectorData.points, data[1]]\n const components = [lineBuilder({ data, curve: connectorData.curve, className: \"connector\" })]\n\n return { components , handles }\n}\n\nconst createPoints = function ( offset, anchors=2) {\n const diff = { x: offset.x/(anchors + 1), y: offset.y/(anchors + 1) }\n const p = []\n\n let i = 1 \n for (; i <= anchors; i++) {\n p.push([diff.x*i + i%2*20, diff.y*i - i%2*20])\n }\n return p\n}","import { select } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\n\nexport const pointHandle = ({ cx = 0, cy = 0 }) => {\n return { move: { x: cx, y: cy } }\n}\n\nexport const circleHandles = ({ cx = 0, cy = 0, r1, r2, padding }) => {\n const h = { move: { x: cx, y: cy } }\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) }\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) }\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy }\n }\n\n return h\n}\n\nexport const rectHandles = ({\n x1 = 0,\n y1 = 0,\n x2 = x1,\n y2 = y1,\n width,\n height\n}) => {\n const w = width || Math.abs(x2 - x1)\n const h = height || Math.abs(y2 - y1)\n\n return {\n move: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.min(y1, y2) - 10\n },\n width: {\n x: Math.max(x1, x2),\n y: Math.min(y1, y2) + h / 2\n },\n height: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.max(y1, y2)\n }\n }\n}\n\nexport const lineHandles = ({ x1, y1, x2, y2, x, y }) => {\n const minY = Math.min(y1, y2)\n const minX = Math.min(x1, x2)\n\n const height = Math.abs(y2 - y1)\n const width = Math.abs(x2 - x1)\n\n return {\n move: {\n x: x || minX + width / 2,\n y: y || minY + height / 2\n }\n }\n}\n\n//arc handles\nexport const addHandles = ({ group, handles, r = 10 }) => {\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n const h = group.selectAll(\"circle.handle\").data(handles)\n\n h\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"handle\")\n .attr(\"fill\", \"grey\")\n .attr(\"fill-opacity\", 0.1)\n .attr(\"cursor\", \"move\")\n .attr(\"stroke-dasharray\", 5)\n .attr(\"stroke\", \"grey\")\n .call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => d.start && d.start(d))\n .on(\"drag\", d => d.drag && d.drag(d))\n .on(\"end\", d => d.end && d.end(d))\n )\n\n group\n .selectAll(\"circle.handle\")\n .attr(\"cx\", d => d.x)\n .attr(\"cy\", d => d.y)\n .attr(\"r\", d => d.r || r)\n .attr(\"class\", d => `handle ${d.className || \"\"}`)\n\n h.exit().remove()\n}\n","import { circleHandles } from \"../Handles\"\nimport { arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20\n }\n\n let handles = []\n const c = arcBuilder({ data: subjectData, className: \"subject\" })\n if (type.editMode) {\n const h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n })\n\n const updateRadius = attr => {\n const r = subjectData[attr] + event.dx * Math.sqrt(2)\n subjectData[attr] = r\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const cHandles = [\n {\n ...h.r1,\n drag: updateRadius.bind(\n type,\n subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\"\n )\n }\n ]\n\n if (subjectData.innerRadius) {\n cHandles.push({ ...h.r2, drag: updateRadius.bind(type, \"innerRadius\") })\n }\n handles = type.mapHandles(cHandles)\n }\n\n c.attrs[\"fill-opacity\"] = 0\n\n return { components: [c], handles }\n}\n","import { select, event } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\nimport { addHandles } from \"./Handles\"\n\n//Note options\nimport noteAlignment from \"./Note/alignment\"\nimport noteVertical from \"./Note/lineType-vertical\"\nimport noteHorizontal from \"./Note/lineType-horizontal\"\n\n//Connector options\nimport connectorLine from \"./Connector/type-line\"\nimport connectorElbow from \"./Connector/type-elbow\"\nimport connectorCurve from \"./Connector/type-curve\"\nimport connectorArrow from \"./Connector/end-arrow\"\nimport connectorDot from \"./Connector/end-dot\"\n\n//Subject options\nimport subjectCircle from \"./Subject/circle\"\nimport subjectRect from \"./Subject/rect\"\nimport subjectThreshold from \"./Subject/threshold\"\nimport subjectBadge from \"./Subject/badge\"\n\nexport class Type {\n constructor({ a, annotation, editMode, dispatcher, notePadding, accessors }) {\n this.a = a\n\n this.note =\n annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\")\n this.noteContent = this.note && a.select(\"g.annotation-note-content\")\n this.connector =\n annotation.disable.indexOf(\"connector\") === -1 &&\n a.select(\"g.annotation-connector\")\n this.subject =\n annotation.disable.indexOf(\"subject\") === -1 &&\n a.select(\"g.annotation-subject\")\n this.dispatcher = dispatcher\n\n if (dispatcher) {\n const handler = addHandlers.bind(null, dispatcher, annotation)\n handler({ component: this.note, name: \"note\" })\n handler({ component: this.connector, name: \"connector\" })\n handler({ component: this.subject, name: \"subject\" })\n }\n\n this.annotation = annotation\n this.editMode = annotation.editMode || editMode\n this.notePadding = notePadding !== undefined ? notePadding : 3\n this.offsetCornerX = 0\n this.offsetCornerY = 0\n\n if (accessors && annotation.data) {\n this.init(accessors)\n }\n }\n\n init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors)\n }\n if (!this.annotation.y) {\n this.mapY(accessors)\n }\n }\n\n mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data)\n }\n }\n\n mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data)\n }\n }\n\n updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove()\n }\n\n drawOnSVG(component, builders) {\n if (!Array.isArray(builders)) {\n builders = [builders]\n }\n\n builders\n .filter(b => b)\n .forEach(({ type, className, attrs, handles, classID }) => {\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles })\n } else {\n newWithClass(component, [this.annotation], type, className, classID)\n const el = component.select(`${type}.${classID || className}`)\n const addAttrs = Object.keys(attrs)\n const removeAttrs = []\n\n const currentAttrs = el.node().attributes\n for (let i = currentAttrs.length - 1; i >= 0; i--) {\n const name = currentAttrs[i].name\n if (addAttrs.indexOf(name) === -1 && name !== \"class\")\n removeAttrs.push(name)\n }\n\n addAttrs.forEach(attr => {\n if (attr === \"text\") {\n el.text(attrs[attr])\n } else {\n el.attr(attr, attrs[attr])\n }\n })\n\n removeAttrs.forEach(attr => el.attr(attr, null))\n }\n })\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\")\n }\n getNoteBBoxOffset() {\n const bbox = bboxWithoutHandles(this.note, \".annotation-note-content\")\n const transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g)\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy\n bbox.offsetX = this.annotation.dx\n bbox.offsetY = this.annotation.dy\n return bbox\n }\n\n drawSubject(context = {}) {\n const subjectData = this.annotation.subject\n const type = context.type\n const subjectParams = { type: this, subjectData }\n\n let subject = {}\n if (type === \"circle\") subject = subjectCircle(subjectParams)\n else if (type === \"rect\") subject = subjectRect(subjectParams)\n else if (type === \"threshold\") subject = subjectThreshold(subjectParams)\n else if (type === \"badge\")\n subject = subjectBadge(subjectParams, this.annotation)\n\n let { components = [], handles = [] } = subject\n components.forEach(c => {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = this.annotation.color\n }\n })\n\n if (this.editMode) {\n handles = handles.concat(\n this.mapHandles([{ drag: this.dragSubject.bind(this) }])\n )\n components.push({ type: \"handle\", handles })\n }\n\n return components\n }\n\n drawConnector(context = {}) {\n const connectorData = this.annotation.connector\n const type = connectorData.type || context.type\n const connectorParams = { type: this, connectorData }\n connectorParams.subjectType =\n this.typeSettings &&\n this.typeSettings.subject &&\n this.typeSettings.subject.type\n\n let connector = {}\n if (type === \"curve\") connector = connectorCurve(connectorParams)\n else if (type === \"elbow\") connector = connectorElbow(connectorParams)\n else connector = connectorLine(connectorParams)\n let { components = [], handles = [] } = connector\n const line = components[0]\n //TODO: genericize this into fill t/f stroke t/f\n if (line) {\n line.attrs.stroke = this.annotation.color\n line.attrs.fill = \"none\"\n }\n const endType = connectorData.end || context.end\n let end = {}\n if (endType === \"arrow\") {\n let s = line.data[1]\n const e = line.data[0]\n const distance = Math.sqrt(\n Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2)\n )\n if (distance < 5 && line.data[2]) {\n s = line.data[2]\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n })\n } else if (endType === \"dot\") {\n end = connectorDot({ line, scale: connectorData.endScale })\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove()\n }\n\n if (end.components) {\n end.components.forEach(c => {\n c.attrs.fill = this.annotation.color\n c.attrs.stroke = this.annotation.color\n })\n components = components.concat(end.components)\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles })\n }\n return components\n }\n\n drawNote(context = {}) {\n const noteData = this.annotation.note\n const align = noteData.align || context.align || \"dynamic\"\n const noteParams = {\n bbox: context.bbox,\n align,\n offset: this.annotation.offset\n }\n const lineType = noteData.lineType || context.lineType\n let note = {}\n if (lineType === \"vertical\") note = noteVertical(noteParams)\n else if (lineType === \"horizontal\") note = noteHorizontal(noteParams)\n\n let { components = [], handles = [] } = note\n components.forEach(c => {\n c.attrs.stroke = this.annotation.color\n })\n\n if (this.editMode) {\n handles = this.mapHandles([\n { x: 0, y: 0, drag: this.dragNote.bind(this) }\n ])\n components.push({ type: \"handle\", handles })\n\n const dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this)\n this.note.call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => start(d))\n .on(\"drag\", d => dragging(d))\n .on(\"end\", d => end(d))\n )\n } else {\n this.note.on(\"mousedown.drag\", null)\n }\n return components\n }\n\n drawNoteContent(context) {\n const noteData = this.annotation.note\n const padding =\n noteData.padding !== undefined ? noteData.padding : this.notePadding\n let orientation = noteData.orientation || context.orientation || \"topBottom\"\n const lineType = noteData.lineType || context.lineType\n const align = noteData.align || context.align || \"dynamic\"\n\n if (lineType === \"vertical\") orientation = \"leftRight\"\n else if (lineType === \"horizontal\") orientation = \"topBottom\"\n\n const noteParams = {\n padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation,\n align\n }\n const { x, y } = noteAlignment(noteParams)\n this.offsetCornerX = x + this.annotation.dx\n this.offsetCornerY = y + this.annotation.dy\n this.note && this.noteContent.attr(\"transform\", `translate(${x}, ${y})`)\n\n return []\n }\n\n drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction)\n }\n\n redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject())\n }\n\n redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector())\n }\n\n redrawNote(bbox = this.getNoteBBox()) {\n this.noteContent &&\n this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox }))\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox }))\n }\n\n setPosition() {\n const position = this.annotation.position\n this.a.attr(\"transform\", `translate(${position.x}, ${position.y})`)\n }\n\n clearComponents() {\n this.subject && this.subject.select(\"*\").remove()\n this.connector && this.connector.select(\"*\").remove()\n // this.note && this.note.select(\"*\").remove()\n }\n\n setOffset() {\n if (this.note) {\n const offset = this.annotation.offset\n this.note.attr(\"transform\", `translate(${offset.x}, ${offset.y})`)\n }\n }\n\n setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors)\n this.mapY(accessors)\n }\n this.setPosition()\n }\n\n setClassName() {\n this.a.attr(\n \"class\",\n `annotation ${this.className && this.className()} ${\n this.editMode ? \"editable\" : \"\"\n } ${this.annotation.className || \"\"}`\n )\n }\n\n draw() {\n this.setClassName()\n this.setPosition()\n this.setOffset()\n this.redrawSubject()\n this.redrawConnector()\n this.redrawNote()\n }\n\n dragstarted() {\n event.sourceEvent.stopPropagation()\n this.dispatcher &&\n this.dispatcher.call(\"dragstart\", this.a, this.annotation)\n this.a.classed(\"dragging\", true)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\")\n }\n dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation)\n this.a.classed(\"dragging\", false)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\")\n }\n\n dragSubject() {\n const position = this.annotation.position\n position.x += event.dx\n position.y += event.dy\n this.annotation.position = position\n }\n\n dragNote() {\n const offset = this.annotation.offset\n offset.x += event.dx\n offset.y += event.dy\n this.annotation.offset = offset\n }\n\n mapHandles(handles) {\n return handles.map(h => ({\n ...h,\n start: this.dragstarted.bind(this),\n end: this.dragended.bind(this)\n }))\n }\n}\n\nexport const customType = (initialType, typeSettings, init) => {\n return class customType extends initialType {\n constructor(settings) {\n super(settings)\n this.typeSettings = typeSettings\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(d => {\n this[d] && this[d].remove()\n\n this[d] = undefined\n if (d === \"note\") {\n this.noteContent = undefined\n }\n })\n }\n }\n\n static init(annotation, accessors) {\n super.init(annotation, accessors)\n if (init) {\n annotation = init(annotation, accessors)\n }\n return annotation\n }\n\n className() {\n return `${typeSettings.className ||\n super.className && super.className() ||\n \"\"}`\n }\n\n drawSubject(context) {\n this.typeSettings.subject = Object.assign(\n {},\n typeSettings.subject,\n this.typeSettings.subject\n )\n return super.drawSubject({ ...context, ...this.typeSettings.subject })\n }\n\n drawConnector(context) {\n this.typeSettings.connector = Object.assign(\n {},\n typeSettings.connector,\n this.typeSettings.connector\n )\n return super.drawConnector({\n ...context,\n ...typeSettings.connector,\n ...this.typeSettings.connector\n })\n }\n\n drawNote(context) {\n this.typeSettings.note = Object.assign(\n {},\n typeSettings.note,\n this.typeSettings.note\n )\n return super.drawNote({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n\n drawNoteContent(context) {\n return super.drawNoteContent({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n }\n}\n\nexport class d3NoteText extends Type {\n constructor(params) {\n super(params)\n this.textWrap = params.textWrap || 120\n this.drawText()\n }\n\n updateTextWrap(textWrap) {\n this.textWrap = textWrap\n this.drawText()\n }\n\n //TODO: add update text functionality\n\n drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\")\n\n const noteContent = this.note.select(\"g.annotation-note-content\")\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\")\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-label\"\n )\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-title\"\n )\n\n let titleBBox = { height: 0 }\n const label = this.a.select(\"text.annotation-note-label\")\n const wrapLength =\n this.annotation.note && this.annotation.note.wrap ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrap ||\n this.textWrap\n\n const wrapSplitter =\n this.annotation.note && this.annotation.note.wrapSplitter ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrapSplitter\n\n let bgPadding =\n this.annotation.note && this.annotation.note.bgPadding ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.bgPadding\n\n let bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 }\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n }\n } else if (bgPadding && typeof bgPadding === \"object\") {\n bgPaddingFinal = Object.assign(bgPaddingFinal, bgPadding)\n }\n\n if (this.annotation.note.title) {\n const title = this.a.select(\"text.annotation-note-title\")\n title.text(this.annotation.note.title)\n title.attr(\"fill\", this.annotation.color)\n title.attr(\"font-weight\", \"bold\")\n title.call(wrap, wrapLength, wrapSplitter)\n titleBBox = title.node().getBBox()\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\")\n label.call(wrap, wrapLength, wrapSplitter)\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0)\n label.attr(\"fill\", this.annotation.color)\n\n const bbox = this.getNoteBBox()\n\n this.a\n .select(\"rect.annotation-note-bg\")\n .attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right)\n .attr(\n \"height\",\n bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom\n )\n .attr(\"x\", bbox.x - bgPaddingFinal.left)\n .attr(\"y\", -bgPaddingFinal.top)\n .attr(\"fill\", \"white\")\n .attr(\"fill-opacity\", 0)\n }\n }\n}\n\nexport const d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n})\n\nexport const d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n})\n\nexport const d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n})\n\nexport const d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n})\n\nexport const d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nclass ThresholdMap extends d3Callout {\n mapY(accessors) {\n super.mapY(accessors)\n const a = this.annotation\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data)\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2\n }\n }\n\n mapX(accessors) {\n super.mapX(accessors)\n const a = this.annotation\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data)\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2\n }\n }\n}\n\nexport const d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n})\n\nexport const newWithClass = (a, d, type, className, classID) => {\n const group = a.selectAll(`${type}.${classID || className}`).data(d)\n group\n .enter()\n .append(type)\n .merge(group)\n .attr(\"class\", className)\n\n group.exit().remove()\n return a\n}\n\nconst addHandlers = (dispatcher, annotation, { component, name }) => {\n if (component) {\n component\n .on(\"mouseover.annotations\", () => {\n dispatcher.call(`${name}over`, component, annotation)\n })\n .on(\"mouseout.annotations\", () =>\n dispatcher.call(`${name}out`, component, annotation)\n )\n .on(\"click.annotations\", () =>\n dispatcher.call(`${name}click`, component, annotation)\n )\n }\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst wrap = (text, width, wrapSplitter, lineHeight = 1.2) => {\n text.each(function() {\n const text = select(this),\n words = text\n .text()\n .split(wrapSplitter || /[ \\t\\r\\n]+/)\n .reverse()\n .filter(w => w !== \"\")\n let word,\n line = [],\n tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", 0.8 + \"em\")\n\n while (word = words.pop()) {\n line.push(word)\n tspan.text(line.join(\" \"))\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst bboxWithoutHandles = (selection, selector = \":not(.handle)\") => {\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 }\n }\n\n return selection\n .selectAll(selector)\n .nodes()\n .reduce(\n (p, c) => {\n const bbox = c.getBBox()\n p.x = Math.min(p.x, bbox.x)\n p.y = Math.min(p.y, bbox.y)\n p.width = Math.max(p.width, bbox.width)\n\n const yOffset = c && c.attributes && c.attributes.y\n p.height = Math.max(\n p.height,\n (yOffset && parseFloat(yOffset.value) || 0) + bbox.height\n )\n return p\n },\n { x: 0, y: 0, width: 0, height: 0 }\n )\n}\n\nexport default {\n Type,\n d3Label,\n d3Callout,\n d3CalloutElbow,\n d3CalloutCurve,\n d3CalloutCircle,\n d3CalloutRect,\n d3XYThreshold,\n d3Badge,\n customType\n}\n","import { lineBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.width) {\n subjectData.width = 100\n }\n if (!subjectData.height) {\n subjectData.height = 100\n }\n\n let handles = []\n let { width, height } = subjectData\n\n const data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]]\n let rect = lineBuilder({ data, className: \"subject\" })\n\n if (type.editMode) {\n const updateWidth = () => {\n subjectData.width = event.x\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const updateHeight = () => {\n subjectData.height = event.y\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const rHandles = [\n { x: width, y: height / 2, drag: updateWidth.bind(type) },\n { x: width / 2, y: height, drag: updateHeight.bind(type) }\n ]\n\n handles = type.mapHandles(rHandles)\n }\n rect.attrs[\"fill-opacity\"] = 0.1\n return { components: [rect], handles }\n}\n","import { lineBuilder } from '../Builder'\n\n\nexport default ({ subjectData, type }) => {\n const offset = type.annotation.position\n\n let x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y\n\n const data = [[x1, y1], [x2, y2]]\n return { components: [lineBuilder({ data, className : 'subject'})]}\n}","import { lineBuilder, arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData = {}, type = {} }, annotation = {}) => {\n const typeSettings = type.typeSettings && type.typeSettings.subject\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius\n } else {\n subjectData.radius = 14\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y\n }\n }\n\n let handles = []\n const components = []\n const radius = subjectData.radius\n const innerRadius = radius * 0.7\n let x = 0\n let y = 0\n\n const notCornerOffset = Math.sqrt(2) * radius\n const placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n }\n\n if (subjectData.x && !subjectData.y) {\n x = placement[`x${subjectData.x}`]\n } else if (subjectData.y && !subjectData.x) {\n y = placement[`y${subjectData.y}`]\n } else if (subjectData.x && subjectData.y) {\n x = placement[`x${subjectData.x}corner`]\n y = placement[`y${subjectData.y}corner`]\n }\n\n const transform = `translate(${x}, ${y})`\n const circlebg = arcBuilder({ className: \"subject\", data: { radius } })\n circlebg.attrs.transform = transform\n circlebg.attrs.fill = annotation.color\n circlebg.attrs[\"stroke-linecap\"] = \"round\"\n circlebg.attrs[\"stroke-width\"] = \"3px\"\n\n const circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius }\n })\n\n circle.attrs.transform = transform\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\"\n circle.attrs.fill = \"white\"\n\n let pointer\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n })\n } else if (x || y) {\n const notCornerPointerXY = (v, sign = 1) =>\n v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2)\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [\n [0, 0],\n [notCornerPointerXY(x), notCornerPointerXY(y)],\n [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)],\n [0, 0]\n ]\n })\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color\n pointer.attrs[\"stroke-linecap\"] = \"round\"\n pointer.attrs[\"stroke-width\"] = \"3px\"\n components.push(pointer)\n }\n\n if (type.editMode) {\n const dragBadge = () => {\n subjectData.x =\n event.x < -radius * 2\n ? \"left\"\n : event.x > radius * 2 ? \"right\" : undefined\n subjectData.y =\n event.y < -radius * 2\n ? \"top\"\n : event.y > radius * 2 ? \"bottom\" : undefined\n\n type.redrawSubject()\n }\n\n const bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) }\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius\n }\n\n handles = type.mapHandles([bHandles])\n }\n\n let text\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x,\n y\n }\n }\n }\n\n components.push(circlebg)\n components.push(circle)\n components.push(text)\n\n return { components, handles }\n}\n","import { lineBuilder } from '../Builder'\n\nexport default ({ type, subjectType }) => {\n\n const annotation = type.annotation\n const offset = annotation.position\n\n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n const subjectData = annotation.subject\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n let data = [[x1, y1], [x2, y2]]\n\n let diffY = y2 - y1\n let diffX = x2 - x1\n let xe = x2 \n let ye = y2\n let opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2\n ye = y1 + diffX*opposite\n } else {\n ye = y2\n xe = x1 + diffY*opposite\n }\n \n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0)\n const length = r/Math.sqrt(2)\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length*(x2 < 0 ? -1 : 1)\n y1 = length*(y2 < 0 ? -1 : 1)\n data = [[x1, y1], [xe , ye ], [x2, y2]]\n\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n const angle = Math.asin(-y2/r)\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n data = [[ x1, y2], [x2, y2]]\n } else {\n const angle = Math.acos(x2/r)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n data = [[ x2, y1], [x2, y2]]\n }\n } else {\n data = [[x1, y1], [xe , ye], [x2, y2]]\n }\n\n return { components: [lineBuilder({ data, className: \"connector\"})]}\n}\n","import { lineBuilder } from \"../Builder\"\n\nexport default ({ annotation, start, end, scale = 1 }) => {\n const offset = annotation.position\n if (!start) {\n start = [annotation.dx, annotation.dy]\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]]\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y]\n }\n\n let x1 = end[0],\n y1 = end[1]\n\n let dx = start[0]\n let dy = start[1]\n\n let size = 10 * scale\n let angleOffset = 16 / 180 * Math.PI\n let angle = Math.atan(dy / dx)\n\n if (dx < 0) {\n angle += Math.PI\n }\n\n const data = [\n [x1, y1],\n [\n Math.cos(angle + angleOffset) * size + x1,\n Math.sin(angle + angleOffset) * size + y1\n ],\n [\n Math.cos(angle - angleOffset) * size + x1,\n Math.sin(angle - angleOffset) * size + y1\n ],\n [x1, y1]\n ]\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [\n lineBuilder({\n data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })\n ]\n }\n}\n","import { arcBuilder } from \"../Builder\"\n\nexport default ({ line, scale = 1 }) => {\n let dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n })\n dot.attrs.transform = `translate(${line.data[0][0]}, ${line.data[0][1]})`\n\n return { components: [dot] }\n}\n","import { lineBuilder } from '../Builder'\nimport { leftRightDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, bbox, offset }) => {\n align = leftRightDynamic(align, offset.y)\n\n if (align === \"top\") { y -= bbox.height } \n else if (align === \"middle\") { y -= bbox.height/2 }\n\n const data = [[x, y], [x, y + bbox.height]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\nimport { topBottomDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, offset, bbox }) => {\n align = topBottomDynamic(align, offset.x)\n\n if (align === \"right\") { x -= bbox.width }\n else if (align === \"middle\") { x -= bbox.width/2 }\n\n const data = [[x, y], [x + bbox.width, y]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate, interpolateHcl as d3InterpolateHcl } from \"d3-interpolate\";\nimport { scaleLinear } from \"d3-scale\";\nimport { Arc, arc as d3Arc, DefaultArcObject } from \"d3-shape\";\nimport { annotation as d3Annotation, annotationCalloutElbow } from \"d3-svg-annotation\";\n\nfunction value2Angle(value: number): number {\n return (value - 0.5) * .65 * 2 * Math.PI;\n}\n\nfunction pointOnArc(angle: number, radius: number): { x: number, y: number } {\n return {\n x: Math.cos(angle - Math.PI / 2) * radius,\n y: Math.sin(angle - Math.PI / 2) * radius\n };\n}\n\nfunction indicatorTranslate(angle: number, radius: number, inner: boolean = false) {\n const point = pointOnArc(angle, radius);\n const rotation = angle * 180 / Math.PI + (inner === true ? 180 : 0);\n return `translate(${point.x}, ${point.y}) rotate(${rotation})`;\n}\n\ntype IndicatorDatum = { angle: number };\nfunction indicatorTween(newAngle: number, radius: number, inner: boolean = false) {\n return function (d: IndicatorDatum) {\n const interpolate = d3Interpolate(d.angle, newAngle);\n d.angle = newAngle;\n return function (t: number) {\n return indicatorTranslate(interpolate(t), radius, inner);\n };\n };\n}\n\nfunction arcTween(startAngle: number, endAngle: number, arc: Arc<any, DefaultArcObject>) {\n return function (d: DefaultArcObject) {\n const startInterpolate = d3Interpolate(d.startAngle, startAngle);\n const endInterpolate = d3Interpolate(d.endAngle, endAngle);\n return function (t: number): string {\n d.startAngle = startInterpolate(t);\n d.endAngle = endInterpolate(t);\n return arc(d)!;\n };\n };\n}\n\nexport class Gauge extends SVGWidget {\n\n private _d3Arc: Arc<any, DefaultArcObject> = d3Arc()\n .innerRadius(85)\n .outerRadius(100)\n ;\n private _colorScale = scaleLinear<string, string>()\n .interpolate(d3InterpolateHcl)\n ;\n\n protected _usageArc: any;\n protected _meanArc: any;\n protected _freeArc: any;\n protected _indInner: any;\n protected _indOuter: any;\n protected _centerTextG: any;\n protected _centerText: any;\n protected _bottomText: any;\n protected _tooltipG: any;\n protected _mainTooltip: any;\n\n @publish(\"\", \"string\")\n title: publish<this, string>;\n\n @publish(\"\", \"string\")\n titleDescription: publish<this, string>;\n\n @publish(128, \"number\")\n maxDiameter: publish<this, number>;\n\n @publish(0, \"number\")\n value: publish<this, number>;\n\n @publish(\"\", \"string\")\n valueDescription: publish<this, string>;\n\n @publish(false, \"boolean\")\n showTick: publish<this, boolean>;\n\n @publish(0, \"number\")\n tickValue: publish<this, number>;\n\n @publish(\"\", \"string\")\n tickValueDescription: publish<this, string>;\n\n @publish(\"\", \"string\")\n tooltip: publish<this, string>;\n\n constructor() {\n super();\n }\n\n protected tip(d: any) {\n if (d === null || d.label === \"\") {\n this._tooltipG\n .transition()\n .style(\"opacity\", 0)\n .on(\"interrupt end\", () => {\n this._tooltipG\n .selectAll(\"g\")\n .remove()\n ;\n })\n ;\n } else {\n this._tooltipG\n .interrupt()\n .style(\"opacity\", 1)\n ;\n d.w = (this._centerText.datum() as any).w + 10;\n let lineType = \"horizontal\";\n let xOffset = 0;\n let yOffset = 5;\n let padding: number | undefined = 5;\n if (d.y >= 5 && d.y <= 25) {\n xOffset = d.x < 0 ? -d.w / 2 : d.w / 2;\n yOffset = 12.5;\n padding = undefined;\n lineType = \"vertical\";\n } else if (d.y > 25) {\n yOffset = 25;\n padding = 0;\n }\n const annotationtip = d3Annotation()\n .type(annotationCalloutElbow)\n .annotations([{\n data: d,\n dx: -d.x + xOffset,\n dy: -d.y + yOffset,\n color: \"black\",\n note: {\n label: d.label,\n lineType,\n padding,\n align: \"middle\"\n }\n }])\n .accessors({ x: (d2: any) => d2.x, y: (d2: any) => d2.y });\n this._tooltipG.call(annotationtip as any);\n }\n }\n\n protected calcSize(textElement, width: number, height: number): { width: number, height: number, scale: number } {\n const bb = (textElement.node() as any).getBBox();\n const widthTransform = width / bb.width;\n const heightTransform = height / bb.height;\n const scale = widthTransform < heightTransform ? widthTransform : heightTransform;\n return {\n width: bb.width,\n height: bb.height,\n scale\n };\n }\n\n protected updateText(textElement, x: number, y: number, w: number, h: number) {\n textElement\n .datum({ x, y, w, h })\n .attr(\"transform\", null)\n ;\n const size = this.calcSize(textElement, w, h);\n const x2 = x + w / 2 - size.width / 2 * size.scale;\n const y2 = y + h / 2 - size.height / 2 * size.scale;\n textElement.attr(\"transform\", `translate(${x2}, ${y2}) scale(${size.scale})`);\n }\n\n calcWidth(): number {\n return Math.min(this.width(), this.height(), this.maxDiameter());\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n\n element.on(\"click\", (d: Gauge) => {\n this.click(d);\n });\n\n this._usageArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._freeArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(1) })\n .style(\"fill\", \"lightGrey\")\n ;\n this._meanArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._mainTooltip = element.append(\"title\");\n\n const context = this;\n function appendIndicator() {\n return element.append(\"path\").datum({ angle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .style(\"stroke\", \"black\")\n .attr(\"d\", \"M 0 0 l -3 -3 l 6 0 z\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = context._d3Arc.centroid(context._meanArc.datum() as any);\n context.tip({ x, y, label: context.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n context.tip(null);\n })\n ;\n }\n this._indInner = appendIndicator();\n this._indOuter = appendIndicator();\n this._centerText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: 0, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._bottomText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: d.y, label: this.titleDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._tooltipG = element.append(\"g\")\n .attr(\"class\", \"annotation-tip\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n\n this._colorScale\n .domain(this.colorDomain())\n .range(this.colorRange())\n ;\n element\n .attr(\"title\", this.tooltip())\n .style(\"cursor\", this.click !== Gauge.prototype.click ? \"pointer\" : null)\n ;\n\n const innerRadius = this.calcWidth() / 3;\n const outerRadius = this.calcWidth() / 2 - 5;\n this._d3Arc\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n ;\n\n const val = this.value();\n const tickVal = this.tickValue();\n\n this._usageArc\n .style(\"fill\", this._colorScale(val))\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(0), value2Angle(val), this._d3Arc))\n ;\n\n this._freeArc\n .style(\"fill\", this.emptyColor())\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(val), value2Angle(1), this._d3Arc))\n ;\n\n this._meanArc\n .style(\"fill\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(tickVal - 0.001), value2Angle(tickVal + 0.001), this._d3Arc))\n ;\n\n this._indInner\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), innerRadius, true))\n ;\n\n this._indOuter\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), outerRadius))\n ;\n\n this._centerText\n .style(\"fill\", this._colorScale(val))\n .text(d3Format(\".0%\")(val))\n ;\n\n this._bottomText\n .style(\"fill\", this.click !== Gauge.prototype.click ? \"blue\" : \"black\")\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n tickColor(): string;\n tickColor(_: string): this;\n emptyColor(): string;\n emptyColor(_: string): this;\n colorDomain(): number[];\n colorDomain(_: number[]): this;\n colorRange(): string[];\n colorRange(_: string[]): this;\n}\n\nGauge.prototype.publish(\"colorRange\", [\"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"orange\", \"red\", \"red\"], \"array\", \"Array of colors for the filled gauge portion. The fill color will be relative to the gauge value.\");\nGauge.prototype.publish(\"colorDomain\", [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], \"array\", \"This array augments the mapping of the value to the fill colorRange.\");\nGauge.prototype.publish(\"emptyColor\", \"lightgrey\", \"html-color\", \"Color of the empty portion of the gauge\");\nGauge.prototype.publish(\"tickColor\", \"black\", \"html-color\", \"Color of the tick\");\n","import Annotation from \"./Annotation\"\nimport AnnotationCollection from \"./AnnotationCollection\"\nimport { newWithClass, d3Callout } from \"./Types-d3\"\nimport { select } from \"d3-selection\"\nimport { dispatch } from \"d3-dispatch\"\n\nexport default function annotation() {\n let annotations = [],\n collection,\n context, //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids,\n type = d3Callout,\n textWrap,\n notePadding,\n annotationDispatcher = dispatch(\n \"subjectover\",\n \"subjectout\",\n \"subjectclick\",\n \"connectorover\",\n \"connectorout\",\n \"connectorclick\",\n \"noteover\",\n \"noteout\",\n \"noteclick\",\n \"dragend\",\n \"dragstart\"\n ),\n sel\n\n const annotation = function(selection) {\n sel = selection\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove()\n }\n\n const translatedAnnotations = annotations.map(a => {\n if (!a.type) {\n a.type = type\n }\n if (!a.disable) {\n a.disable = disable\n }\n return new Annotation(a)\n })\n\n collection =\n collection ||\n new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors,\n accessorsInverse,\n ids\n })\n\n const annotationG = selection.selectAll(\"g\").data([collection])\n annotationG.enter().append(\"g\").attr(\"class\", `annotations`)\n\n const group = selection.select(\"g.annotations\")\n newWithClass(group, collection.annotations, \"g\", \"annotation\")\n\n const annotation = group.selectAll(\"g.annotation\")\n\n annotation.each(function(d) {\n const a = select(this)\n\n a.attr(\"class\", \"annotation\")\n\n newWithClass(a, [d], \"g\", \"annotation-connector\")\n newWithClass(a, [d], \"g\", \"annotation-subject\")\n newWithClass(a, [d], \"g\", \"annotation-note\")\n newWithClass(\n a.select(\"g.annotation-note\"),\n [d],\n \"g\",\n \"annotation-note-content\"\n )\n d.type =\n d.type.toString() === \"[object Object]\"\n ? d.type\n : new d.type({\n a,\n annotation: d,\n textWrap,\n notePadding,\n editMode,\n dispatcher: annotationDispatcher,\n accessors\n })\n d.type.draw()\n d.type.drawText && d.type.drawText()\n })\n }\n\n annotation.json = function() {\n /* eslint-disable no-console */\n console.log(\n \"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\",\n collection.json\n )\n /* eslint-enable no-console */\n window.copy(\n JSON.stringify(\n collection.json.map(a => {\n delete a.type\n return a\n })\n )\n )\n return annotation\n }\n\n annotation.update = function() {\n if (annotations && collection) {\n annotations = collection.annotations.map(a => {\n a.type.draw()\n return a\n })\n }\n return annotation\n }\n\n annotation.updateText = function() {\n if (collection) {\n collection.updateText(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.updatedAccessors = function() {\n collection.setPositionWithAccessors()\n annotations = collection.annotations\n return annotation\n }\n\n annotation.disable = function(_) {\n if (!arguments.length) return disable\n disable = _\n if (collection) {\n collection.updateDisable(disable)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n if (collection) {\n collection.updateTextWrap(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.notePadding = function(_) {\n if (!arguments.length) return notePadding\n notePadding = _\n if (collection) {\n collection.updateNotePadding(notePadding)\n annotations = collection.annotations\n }\n return annotation\n }\n //todo think of how to handle when undefined is sent\n annotation.type = function(_, settings) {\n if (!arguments.length) return type\n type = _\n if (collection) {\n collection.annotations.map(a => {\n a.type.note &&\n a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove()\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove()\n a.type.subject && a.type.subject.selectAll(\"*\").remove()\n a.type.connector && a.type.connector.selectAll(\"*\").remove()\n a.type.typeSettings = {}\n a.type = type\n\n a.subject = settings && settings.subject || a.subject\n a.connector = settings && settings.connector || a.connector\n a.note = settings && settings.note || a.note\n })\n\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.annotations = function(_) {\n if (!arguments.length)\n return collection && collection.annotations || annotations\n annotations = _\n\n if (collection && collection.annotations) {\n const rerun = annotations.some(\n d => !d.type || d.type.toString() !== \"[object Object]\"\n )\n\n if (rerun) {\n collection = null\n annotation(sel)\n } else {\n collection.annotations = annotations\n }\n }\n return annotation\n }\n\n annotation.context = function(_) {\n if (!arguments.length) return context\n context = _\n return annotation\n }\n\n annotation.accessors = function(_) {\n if (!arguments.length) return accessors\n accessors = _\n return annotation\n }\n\n annotation.accessorsInverse = function(_) {\n if (!arguments.length) return accessorsInverse\n accessorsInverse = _\n return annotation\n }\n\n annotation.ids = function(_) {\n if (!arguments.length) return ids\n ids = _\n return annotation\n }\n\n annotation.editMode = function(_) {\n if (!arguments.length) return editMode\n editMode = _\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode)\n }\n\n if (collection) {\n collection.editMode(editMode)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.collection = function(_) {\n if (!arguments.length) return collection\n collection = _\n return annotation\n }\n\n annotation.on = function() {\n const value = annotationDispatcher.on.apply(annotationDispatcher, arguments)\n return value === annotationDispatcher ? annotation : value\n }\n\n return annotation\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { degreesToRadians, normalizeRadians } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { select as d3Select } from \"d3-selection\";\nimport { arc as d3Arc, pie as d3Pie } from \"d3-shape\";\n\nimport \"../src/Pie.css\";\n\nexport class Pie extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n protected _totalValue: number;\n\n d3Pie;\n d3Arc;\n d3LabelArc;\n private _labelPositions;\n private _smallValueLabelHeight;\n private _labelWidthLimit: number;\n private _quadIdxArr;\n private _minLabelTop = 0;\n private _maxLabelBottom = 0;\n private _seriesValueFormatter;\n private _seriesPercentageFormatter;\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this.d3Pie = d3Pie();\n\n this.d3Arc = d3Arc();\n this.d3LabelArc = d3Arc();\n this\n .tooltipTick_default(false)\n .tooltipOffset_default(0)\n ;\n }\n\n intersection(pointA, pointB) {\n return this.intersectCircle(this.calcOuterRadius(), pointA, pointB);\n }\n\n calcInnerRadius() {\n return this.innerRadius_exists() ? this.calcOuterRadius() * (this.innerRadius() as number) / 100 : 0;\n }\n\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d }, false)), \"Verdana\", 12).width;\n const horizontalLimit = this._size.width - (this.showLabels() ? maxTextWidth * 2 : 0) - 20;\n const verticalLimit = this._size.height - 12 * 3 - (this.showLabels() ? this._smallValueLabelHeight : 0);\n const outerRadius = Math.min(horizontalLimit, verticalLimit) / 2 - 2;\n if ((horizontalLimit / 2) - 2 < this.minOuterRadius()) {\n this._labelWidthLimit = maxTextWidth - (this.minOuterRadius() - ((horizontalLimit / 2) - 2));\n } else {\n this._labelWidthLimit = maxTextWidth;\n }\n if (outerRadius < this.minOuterRadius()) {\n return this.minOuterRadius();\n }\n return outerRadius;\n }\n\n calcSmallValueLabelHeight() {\n const smallDef = 0.1;\n const totalVal = this.data().reduce((acc, n) => acc + n[1], 0);\n let smallCount = 0;\n this.data().forEach(row => {\n if (row[1] / totalVal < smallDef) {\n smallCount++;\n }\n });\n return this.labelHeight() * smallCount;\n }\n\n calcTotalValue(): number {\n return this.data().reduce((acc, d) => {\n return acc + d[1];\n }, 0);\n }\n\n getLabelText(d, truncate?) {\n let len;\n let label = d.data[0];\n if (typeof this._labelWidthLimit !== \"undefined\" && truncate) {\n const labelWidth = this.textSize(label, \"Verdana\", this.labelHeight()).width;\n if (this._labelWidthLimit < labelWidth) {\n len = label.length * (this._labelWidthLimit / labelWidth) - 3;\n label = len < label.length ? label.slice(0, len) + \"...\" : label;\n }\n }\n if (this.showSeriesValue()) {\n label += ` : ${this._seriesValueFormatter(d.data[1])}`;\n }\n if (this.showSeriesPercentage()) {\n let sum = this._totalValue;\n const dm = this.dataMeta();\n if (typeof dm.sum !== \"undefined\") {\n sum = dm.sum;\n }\n const perc = (d.data[1] / sum) * 100;\n label += ` : ${this._seriesPercentageFormatter(perc)}%`;\n }\n return label;\n }\n\n selection(): any[]; // any[] === single row\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n try {\n return this._selection.selection2()[0]?.data;\n } catch (e) {\n return undefined;\n }\n }\n // Stringify to enable a deep equal\n const strRow = JSON.stringify(_);\n this._selection.selection2(d => strRow === JSON.stringify(d.data));\n }\n\n selectByLabel(_: string) {\n const row = this.data().filter(row => row[0] === _)[0];\n if (row) {\n this.selection(row);\n }\n }\n\n _slices;\n _labels;\n enter(_domNode, element) {\n super.enter(_domNode, element);\n this._selection.widgetElement(element);\n this._slices = element.append(\"g\");\n this._labels = element.append(\"g\");\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.data[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d.data[0]),\n value: d.data[i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n this.updateD3Pie();\n this._palette = this._palette.switch(this.paletteID());\n this._seriesValueFormatter = d3Format(this.seriesValueFormat() as string);\n this._seriesPercentageFormatter = d3Format(this.seriesPercentageFormat() as string);\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n this._smallValueLabelHeight = this.calcSmallValueLabelHeight();\n this._totalValue = this.calcTotalValue();\n const innerRadius = this.calcInnerRadius();\n const outerRadius = this.calcOuterRadius();\n const labelRadius = outerRadius + 12;\n this.d3Arc\n .innerRadius(innerRadius)\n .padRadius(outerRadius)\n .outerRadius(outerRadius)\n ;\n\n this._quadIdxArr = [[], [], [], []];\n const data = [...this.data()].sort((a, b) => {\n return a[1] - b[1] > 0 ? -1 : 1;\n });\n const arc = this._slices.selectAll(\".arc\").data(this.d3Pie(data), d => d.data[0]);\n\n this._labelPositions = [];\n\n // Enter ---\n arc.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"arc series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d, i) {\n d3Select(this).append(\"path\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"mouseover\", arcTween(0, 0))\n .on(\"mouseout\", arcTween(-5, 150))\n ;\n })\n .merge(arc).transition()\n .attr(\"opacity\", 1)\n .each(function (d, i) {\n const quad = context.getQuadrant(midAngle(d));\n context._quadIdxArr[quad].push(i);\n d.outerRadius = outerRadius - 5;\n const element2 = d3Select(this);\n element2.select(\"path\").transition()\n .attr(\"d\", context.d3Arc)\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n ;\n })\n ;\n\n // Exit ---\n arc.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n // Labels ---\n this.d3LabelArc\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n ;\n const text = this._labels.selectAll(\"text\").data(this.showLabels() ? this.d3Pie(data) : [], d => d.data[0]);\n\n const mergedText = text.enter().append(\"text\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"dy\", \".5em\")\n .on(\"click\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context._selection.click(this);\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .on(\"dblclick\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .merge(text)\n .text(d => this.getLabelText(d, true))\n .each(function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const mid_angle = midAngle(d);\n pos[0] = labelRadius * (context.isLeftSide(mid_angle) ? 1 : -1);\n context._labelPositions.push({\n top: pos[1],\n bottom: pos[1] + context.labelHeight()\n });\n });\n if (this.showLabels()) {\n this.adjustForOverlap();\n mergedText.transition()\n .style(\"font-size\", this.labelHeight() + \"px\")\n .attr(\"transform\", (d, i) => {\n const pos = context.d3LabelArc.centroid(d);\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return \"translate(\" + pos + \")\";\n })\n .style(\"text-anchor\", d => this.isLeftSide(midAngle(d)) ? \"start\" : \"end\");\n }\n\n text.exit()\n .remove();\n\n const polyline = this._labels.selectAll(\"polyline\").data(this.showLabels() ? this.d3Pie(data) : [], d => this.getLabelText(d, true));\n\n polyline.enter()\n .append(\"polyline\")\n .merge(polyline).transition()\n .attr(\"points\", function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const pos1 = context.d3Arc.centroid(d);\n const pos2 = [...pos];\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return [pos1, pos2, pos];\n });\n\n polyline.exit()\n .remove();\n\n if (this.showLabels()) {\n this.centerOnLabels();\n }\n function midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n\n function arcTween(outerRadiusDelta, delay) {\n return function () {\n d3Select(this).transition().delay(delay).attrTween(\"d\", function (d: any) {\n const i = d3Interpolate(d.outerRadius, outerRadius + outerRadiusDelta);\n return function (t) { d.outerRadius = i(t); return context.d3Arc(d); };\n });\n };\n }\n }\n\n isLeftSide(midAngle) {\n midAngle = normalizeRadians(midAngle);\n const isLeft = midAngle > Math.PI * 2 ? midAngle : midAngle < Math.PI && midAngle > 0;\n return isLeft;\n }\n\n getQuadrant(radians) {\n let quad = 0;\n const rad = normalizeRadians(radians);\n quad = rad <= Math.PI * 1.0 && rad >= Math.PI * 0.5 ? 3 : quad;\n quad = rad <= Math.PI * 0.5 && rad >= Math.PI * 0.0 ? 2 : quad;\n quad = rad <= Math.PI * 0.0 && rad >= Math.PI * -0.5 ? 1 : quad;\n return quad;\n }\n\n centerOnLabels() {\n const gY = this.pos().y;\n const gY2 = gY * 2;\n const radius = this.calcOuterRadius();\n const top = Math.min(this._minLabelTop, -radius);\n const bottom = Math.max(this._maxLabelBottom, radius);\n const h = bottom - top;\n const heightDiff = gY2 - h;\n const absTop = Math.abs(this._minLabelTop);\n let yShift = 0;\n if (bottom > gY) {\n yShift = gY - bottom + (this.labelHeight() / 2);\n yShift -= heightDiff / 2;\n } else if (top < 0 && absTop > gY) {\n yShift = absTop - gY + (this.labelHeight() / 2);\n yShift += heightDiff / 2;\n }\n const pos = this.pos();\n this.pos({\n y: pos.y + yShift,\n x: pos.x\n });\n }\n\n adjustForOverlap() {\n const labelHeight = this.labelHeight();\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].sort((a, b) => {\n if (quad === 1 || quad === 2) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? -1 : 1;\n } else if (quad === 0 || quad === 3) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? 1 : -1;\n }\n });\n let prevTop;\n this._quadIdxArr[quad].forEach((n, i) => {\n if (i > 0) {\n if (quad === 1 || quad === 2) {\n if (prevTop < this._labelPositions[n].bottom) {\n const overlap = this._labelPositions[n].bottom - prevTop;\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n } else if (quad === 0 || quad === 3) {\n if (prevTop + labelHeight > this._labelPositions[n].top) {\n const overlap = Math.abs(this._labelPositions[n].top) - Math.abs(prevTop + labelHeight);\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n }\n }\n prevTop = this._labelPositions[n].top;\n });\n });\n this._minLabelTop = 0;\n this._maxLabelBottom = 0;\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].forEach((n, i) => {\n if (this._minLabelTop > this._labelPositions[n].top) {\n this._minLabelTop = this._labelPositions[n].top;\n }\n if (this._maxLabelBottom < this._labelPositions[n].bottom) {\n this._maxLabelBottom = this._labelPositions[n].bottom;\n }\n });\n });\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n updateD3Pie() {\n const startAngle = normalizeRadians(degreesToRadians(this.startAngle()));\n this.d3Pie\n .padAngle(0.0025)\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n .value(function (d) {\n return d[1];\n })\n ;\n }\n\n paletteID: (_?: string) => string | Pie;\n useClonedPalette: (_?: boolean) => boolean | Pie;\n outerText: (_?: boolean) => boolean | Pie;\n innerRadius: { (): number; (_: number): Pie; };\n innerRadius_exists: () => boolean;\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n tooltipTick: { (): boolean; (_: boolean): Pie; };\n tooltipTick_default: { (): boolean; (_: boolean): Pie; };\n tooltipOffset: { (): number; (_: number): Pie; };\n tooltipOffset_default: { (): number; (_: number): Pie; };\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\n\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface Pie {\n showSeriesValue(): boolean;\n showSeriesValue(_: boolean): this;\n seriesValueFormat(): string;\n seriesValueFormat(_: string): this;\n showSeriesPercentage(): boolean;\n showSeriesPercentage(_: boolean): this;\n minOuterRadius(): number;\n minOuterRadius(_: number): this;\n startAngle(): number;\n startAngle(_: number): this;\n labelHeight(): number;\n labelHeight(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n}\nPie.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, wedge labels will display\");\nPie.prototype.publish(\"showSeriesValue\", false, \"boolean\", \"Append data series value next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesValueFormat\", \",.0f\", \"string\", \"Number format used for formatting series values\", null, { disable: w => !w.showSeriesValue() });\nPie.prototype.publish(\"showSeriesPercentage\", false, \"boolean\", \"Append data series percentage next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesPercentageFormat\", \",.0f\", \"string\", \"Number format used for formatting series percentages\", null, { disable: w => !w.showSeriesPercentage() });\nPie.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Pie.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nPie.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nPie.prototype.publish(\"innerRadius\", 0, \"number\", \"Sets inner pie hole radius as a percentage of the radius of the pie chart\", null, { tags: [\"Basic\"], range: { min: 0, step: 1, max: 100 } });\nPie.prototype.publish(\"minOuterRadius\", 20, \"number\", \"Minimum outer radius (pixels)\");\nPie.prototype.publish(\"startAngle\", 0, \"number\", \"Starting angle of the first (and largest) wedge (degrees)\");\nPie.prototype.publish(\"labelHeight\", 12, \"number\", \"Font size of labels (pixels)\", null, { disable: w => !w.showLabels() });\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import { Pie } from \"./Pie\";\n\nexport class HalfPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this._pos.x;\n let y = this._pos.y;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n y += (this._size.height / 4);\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(-Math.PI / 2)\n .endAngle(Math.PI / 2)\n ;\n }\n}\nHalfPie.prototype._class += \" chart_HalfPie\";\n","import { max, Palette } from \"@hpcc-js/common\";\nimport { XYAxis } from \"./XYAxis\";\n\nexport class Heat extends XYAxis {\n\n protected _domForeignObject;\n protected _domCanvas;\n protected _heat;\n\n constructor() {\n super();\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n radius(r: number): this {\n this.radiusX(r);\n this.radiusY(r);\n return this;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n this._domForeignObject = this.svg.insert(\"foreignObject\", `#${this.id() + \"_clippath\"}`);\n this._domCanvas = this._domForeignObject.append(\"xhtml:body\")\n .style(\"margin\", \"0px\")\n .style(\"padding\", \"0px\")\n .style(\"background-color\", \"transparent\")\n .append(\"canvas\")\n ;\n this._heat = simpleheat(this._domCanvas.node());\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n\n this._domForeignObject\n .attr(\"x\", this.margin.left)\n .attr(\"y\", this.margin.top)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this._domCanvas\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const data = host.orientation() === \"horizontal\" ?\n this.data().map(r => [host.dataPos(r[0]), host.valuePos(r[1]), r[2]]) :\n this.data().map(r => [host.valuePos(r[1]), host.dataPos(r[0]), r[2]])\n ;\n\n const maxWeight = max(data, r => r[2]);\n\n if (this.paletteID() !== \"default\") {\n const gradient = {};\n const count = 8;\n const reverse = this.reversePalette();\n for (let i = 0; i < count; ++i) {\n gradient[i / count] = this._palette((reverse ? count - i : i) / count, 0, 1);\n }\n this._heat.gradient(gradient);\n } else {\n this._heat.gradient(this._heat.defaultGradient);\n }\n\n this._heat.resize();\n\n const radiusX = this.radiusAsPercent() ? this.radiusX() * width / 100 : this.radiusX();\n const radiusY = this.radiusAsPercent() ? this.radiusY() * height / 100 : this.radiusY();\n\n this._heat\n .clear()\n .radius(radiusX, radiusY, this.blur())\n .max(maxWeight)\n .data(data)\n .draw(this.minOpacity())\n ;\n }\n}\n\nHeat.prototype._class += \" chart_Heat\";\nHeat.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface Heat {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n reversePalette(): boolean;\n reversePalette(_: boolean): this;\n\n radiusX(): number;\n radiusX(_: number): this;\n radiusY(): number;\n radiusY(_: number): this;\n radiusAsPercent(): boolean;\n radiusAsPercent(_: boolean): this;\n blur(): number;\n blur(_: number): this;\n\n minOpacity(): number;\n minOpacity(_: number): this;\n}\n\nHeat.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Heat.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeat.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHeat.prototype.publish(\"reversePalette\", false, \"boolean\", \"Reverse Palette Colors\", null, { disable: w => w.paletteID() === \"default\" });\n\nHeat.prototype.publish(\"radiusX\", 25, \"number\", \"Point X radius (25 by default)\");\nHeat.prototype.publish(\"radiusY\", 25, \"number\", \"Point Y radius (25 by default)\");\nHeat.prototype.publish(\"radiusAsPercent\", false, \"boolean\", \"Calculate RadiusX + RadiusY as % of size\");\nHeat.prototype.publish(\"blur\", 15, \"number\", \"Point blur radius (15 by default)\");\n\nHeat.prototype.publish(\"minOpacity\", 0.05, \"number\", \"Minimum point opacity (0.05 by default)\");\n\n// The following code is a modified version of \n// - https://github.com/mourner/simpleheat\n// - Licensed under BSD-2-Clause - https://github.com/mourner/simpleheat/blob/gh-pages/LICENSE\n// Changes:\n// * Fixed TS syntax issues\n// * Added support for eliptical shapes instead of circles\n\nfunction simpleheat(canvas): void {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === \"string\" ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext(\"2d\");\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: \"blue\",\n 0.6: \"cyan\",\n 0.7: \"lime\",\n 0.8: \"yellow\",\n 1.0: \"red\"\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (rX, rY, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred ellipse image that we'll use for drawing points\n const ellipse = this._ellipse = this._createCanvas();\n const ctx = ellipse.getContext(\"2d\");\n const rX2 = this._r = rX + blur;\n const rY2 = this._r = rY + blur;\n\n ellipse.width = rX2 * 2;\n ellipse.height = rY2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = rX2 * 2;\n ctx.shadowOffsetY = ctx.shadowOffsetY = rY2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = \"black\";\n\n ctx.beginPath();\n ctx.ellipse(-rX2, -rY2, rX, rY, 0, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n const canvas = this._createCanvas(),\n ctx = canvas.getContext(\"2d\"),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (const i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._ellipse) this.radius(this.defaultRadius, this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n const ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred ellipse at each data point\n for (let i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._ellipse, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n const colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (let i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== \"undefined\") {\n return document.createElement(\"canvas\");\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","var thirdPi = Math.PI / 3,\n angles = [0, thirdPi, 2 * thirdPi, 3 * thirdPi, 4 * thirdPi, 5 * thirdPi];\n\nfunction pointX(d) {\n return d[0];\n}\n\nfunction pointY(d) {\n return d[1];\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1,\n x = pointX,\n y = pointY,\n r,\n dx,\n dy;\n\n function hexbin(points) {\n var binsById = {}, bins = [], i, n = points.length;\n\n for (i = 0; i < n; ++i) {\n if (isNaN(px = +x.call(null, point = points[i], i, points))\n || isNaN(py = +y.call(null, point, i, points))) continue;\n\n var point,\n px,\n py,\n pj = Math.round(py = py / dy),\n pi = Math.round(px = px / dx - (pj & 1) / 2),\n py1 = py - pj;\n\n if (Math.abs(py1) * 3 > 1) {\n var px1 = px - pi,\n pi2 = pi + (px < pi ? -1 : 1) / 2,\n pj2 = pj + (py < pj ? -1 : 1),\n px2 = px - pi2,\n py2 = py - pj2;\n if (px1 * px1 + py1 * py1 > px2 * px2 + py2 * py2) pi = pi2 + (pj & 1 ? 1 : -1) / 2, pj = pj2;\n }\n\n var id = pi + \"-\" + pj, bin = binsById[id];\n if (bin) bin.push(point);\n else {\n bins.push(bin = binsById[id] = [point]);\n bin.x = (pi + (pj & 1) / 2) * dx;\n bin.y = pj * dy;\n }\n }\n\n return bins;\n }\n\n function hexagon(radius) {\n var x0 = 0, y0 = 0;\n return angles.map(function(angle) {\n var x1 = Math.sin(angle) * radius,\n y1 = -Math.cos(angle) * radius,\n dx = x1 - x0,\n dy = y1 - y0;\n x0 = x1, y0 = y1;\n return [dx, dy];\n });\n }\n\n hexbin.hexagon = function(radius) {\n return \"m\" + hexagon(radius == null ? r : +radius).join(\"l\") + \"z\";\n };\n\n hexbin.centers = function() {\n var centers = [],\n j = Math.round(y0 / dy),\n i = Math.round(x0 / dx);\n for (var y = j * dy; y < y1 + r; y += dy, ++j) {\n for (var x = i * dx + (j & 1) * dx / 2; x < x1 + dx / 2; x += dx) {\n centers.push([x, y]);\n }\n }\n return centers;\n };\n\n hexbin.mesh = function() {\n var fragment = hexagon(r).slice(0, 4).join(\"l\");\n return hexbin.centers().map(function(p) { return \"M\" + p + \"m\" + fragment; }).join(\"\");\n };\n\n hexbin.x = function(_) {\n return arguments.length ? (x = _, hexbin) : x;\n };\n\n hexbin.y = function(_) {\n return arguments.length ? (y = _, hexbin) : y;\n };\n\n hexbin.radius = function(_) {\n return arguments.length ? (r = +_, dx = r * 2 * Math.sin(thirdPi), dy = r * 1.5, hexbin) : r;\n };\n\n hexbin.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], hexbin) : [x1 - x0, y1 - y0];\n };\n\n hexbin.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], hexbin) : [[x0, y0], [x1, y1]];\n };\n\n return hexbin.radius(1);\n}\n","import { I2DAggrChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent, max as d3Max, min as d3Min } from \"d3-array\";\nimport { hexbin as d3HexBin } from \"d3-hexbin\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/HexBin.css\";\n\nexport class HexBin extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _hexbin;\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n I2DAggrChart.call(this);\n this.tooltipValueFormat_default(\",.0f\");\n ITooltip.call(this);\n this.tooltipHTML(d => {\n const seriesExtent = d3Extent<{ label: any, value: any }>(d, d => d.label);\n const labelExtent = d3Extent<{ label: any, value: any }>(d, d => d.value);\n return this.tooltipFormat({\n series: seriesExtent[0] === seriesExtent[1] ? seriesExtent[0] : `${seriesExtent[0]} -> ${seriesExtent[1]}`,\n label: labelExtent[0] === labelExtent[1] ? labelExtent[0] : `${labelExtent[0]} -> ${labelExtent[1]}`,\n value: d.length\n });\n });\n this._hexbin = d3HexBin()\n .x(d => d.x)\n .y(d => d.y)\n ;\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._hexbin\n .extent([0, 0], [this.width(), this.height()])\n .radius(this.binSize())\n ;\n\n const flatData = this.flattenData();\n const dataPoints = flatData.map(d => {\n return {\n x: context.xPos(host, d),\n y: context.yPos(host, d),\n label: host.parseData(d.label),\n value: host.parseValue(d.value),\n origRow: d\n };\n });\n const hexBinPoints = this._hexbin(dataPoints);\n const minBinPoints = d3Min(hexBinPoints, function (d: any) { return d.length; });\n const maxBinPoints = d3Max(hexBinPoints, function (d: any) { return d.length; });\n this._dataMinWeight = minBinPoints;\n this._dataMaxWeight = maxBinPoints;\n\n const points = element.selectAll(\".hexagon\").data(hexBinPoints, function (d) { return d.i + \"_\" + d.j; });\n points.enter().append(\"path\")\n .attr(\"class\", \"hexagon\")\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n const data = context.data();\n context.click(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n const data = context.data();\n context.dblclick(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .merge(points).transition().duration(duration)\n .attr(\"d\", this._hexbin.hexagon())\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(1)\"; })\n .style(\"fill\", function (d) { return context._palette(d.length, minBinPoints, maxBinPoints); })\n ;\n points.exit().transition().duration(duration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n dblclick(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipValueFormat: (_) => string;\n tooltipValueFormat_default: (_) => string;\n\n paletteID: { (): string; (_: string): HexBin; };\n useClonedPalette: { (): boolean; (_: boolean): HexBin; };\n binSize: { (): number; (_: number): HexBin; };\n}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nHexBin.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for this widget\", HexBin.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nHexBin.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHexBin.prototype.publish(\"binSize\", 20, \"number\", \"Bin radius\", null, { range: { min: 1, max: 300, step: 1 } });\n","import { Scatter } from \"./Scatter\";\n\nimport \"../src/Line.css\";\n\nexport class Line extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"linear\")\n ;\n }\n}\nLine.prototype._class += \" chart_Line\";\n","import { Pie } from \"./Pie\";\n\nexport class QuarterPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this.orientation() === \"left\" ? 0 : this._size.width;\n let y = this._size.height;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(this.orientation() === \"left\" ? 0 : -Math.PI / 2)\n .endAngle(this.orientation() === \"left\" ? Math.PI / 2 : 0)\n ;\n }\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d })), \"Verdana\", 12).width;\n return Math.min(this._size.width - maxTextWidth - 10, this._size.height - 12 * 3) - 2;\n }\n}\nQuarterPie.prototype._class += \" chart_QuarterPie\";\n\nexport interface QuarterPie {\n orientation(): string;\n orientation(_: string): this;\n}\nQuarterPie.prototype.publish(\"orientation\", \"left\", \"set\", \"Determines the placement and start/end angle.\", [\"left\", \"right\"]);\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\n\nexport class QuartileCandlestick extends SVGWidget {\n protected _g;\n protected _leftLine;\n protected _rightLine;\n protected _midLine;\n protected _midOuterRect;\n protected _midInnerRect1;\n protected _midInnerRect2;\n protected _q0text;\n protected _q1text;\n protected _q2text;\n protected _q3text;\n protected _q4text;\n protected _q0val;\n protected _q1val;\n protected _q2val;\n protected _q3val;\n protected _q4val;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\");\n this._leftLine = this._g.append(\"rect\");\n this._rightLine = this._g.append(\"rect\");\n this._midLine = this._g.append(\"rect\");\n this._midOuterRect = this._g.append(\"rect\");\n this._midInnerRect1 = this._g.append(\"rect\");\n this._midInnerRect2 = this._g.append(\"rect\");\n this._q0text = this._g.append(\"text\");\n this._q1text = this._g.append(\"text\");\n this._q2text = this._g.append(\"text\");\n this._q3text = this._g.append(\"text\");\n this._q4text = this._g.append(\"text\");\n this._q0val = this._g.append(\"text\");\n this._q1val = this._g.append(\"text\");\n this._q2val = this._g.append(\"text\");\n this._q3val = this._g.append(\"text\");\n this._q4val = this._g.append(\"text\");\n }\n update(domNode, element) {\n super.update(domNode, element);\n const valueSize = (this.orientation() === \"horizontal\" ? this.width() : this.height()) - this.lineWidth();\n const domainSize = this.orientation() === \"horizontal\" ? this.height() : this.width();\n const scale = d3ScaleLinear()\n .domain([\n this.data()[0],\n this.data()[4]\n ])\n .range([\n this.edgePadding(),\n valueSize - this.edgePadding()\n ])\n ;\n const candleWidth = this.candleWidth_exists() ? this.candleWidth() : domainSize;\n const lineWidth = this.lineWidth();\n const lineColor = this.lineColor();\n const roundedCorners = this.roundedCorners();\n const q0x = this.edgePadding();\n let q1x = scale(this.data()[1]);\n let q2x = scale(this.data()[2]);\n let q3x = scale(this.data()[3]);\n const dataTop = -candleWidth / 2;\n const dataBottom = candleWidth / 2;\n const upperTextRotation = this.upperTextRotation();\n const lowerTextRotation = this.lowerTextRotation();\n const padding = this.textPadding();\n const labelFontSize = this.labelFontSize();\n const valueFontSize = this.valueFontSize();\n const sz = Math.max(labelFontSize, valueFontSize);\n const q4x = valueSize - q0x;\n if (sz > 0) {\n while (q1x - q0x < sz) {\n q1x += sz;\n }\n while (q2x - q1x < sz) {\n q2x += sz;\n }\n while (q3x - q2x < sz) {\n q3x += sz;\n }\n while (q4x - q3x < sz) {\n q3x -= sz;\n }\n while (q3x - q2x < sz) {\n q2x -= sz;\n }\n while (q2x - q1x < sz) {\n q1x -= sz;\n }\n }\n let transX = (-valueSize / 2) - (this.lineWidth() / 2);\n let transY = 0;\n let rotate = 0;\n const s = 1;\n let textScale = 1;\n let labelAnchor = \"start\";\n let valueAnchor = \"end\";\n if (this.orientation() === \"vertical\") {\n transX = 0;\n transY = valueSize / 2 + (this.lineWidth() / 2);\n rotate = -90;\n labelAnchor = \"end\";\n valueAnchor = \"start\";\n textScale = -1;\n }\n this._g\n .style(\"shape-rendering\", \"crispEdges\")\n .attr(\"transform\", `translate(${transX},${transY})rotate(${rotate})scale(${s})`)\n ;\n this._leftLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q0x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._rightLine\n .attr(\"class\", \"right-line\")\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q4x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", lineWidth)\n .attr(\"width\", q4x - q0x)\n .attr(\"x\", q0x)\n .attr(\"y\", -lineWidth / 2)\n ;\n this._midOuterRect\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"x\", q1x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midInnerRect1\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q2x - (q1x + (lineWidth * 2)))\n .attr(\"x\", q1x + lineWidth)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._midInnerRect2\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q3x - q2x - lineWidth)\n .attr(\"x\", q2x)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._q0text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.columns()[0])\n ;\n this._q1text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[1])\n ;\n this._q2text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[2])\n ;\n this._q3text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[3])\n ;\n this._q4text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.columns()[4])\n ;\n this._q0val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.data()[0])\n ;\n this._q1val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[1])\n ;\n this._q2val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[2])\n ;\n this._q3val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[3])\n ;\n this._q4val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.data()[4])\n ;\n }\n}\nQuartileCandlestick.prototype._class += \" chart_QuartileCandlestick\";\n\nexport interface QuartileCandlestick {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n textPadding(): number;\n textPadding(_: number): this;\n edgePadding(): number;\n edgePadding(_: number): this;\n candleWidth(): number;\n candleWidth(_: number): this;\n candleWidth_exists(): boolean;\n lineWidth(): number;\n lineWidth(_: number): this;\n lineColor(): string;\n lineColor(_: string): this;\n innerRectColor(): string;\n innerRectColor(_: string): this;\n lowerTextRotation(): number;\n lowerTextRotation(_: number): this;\n upperTextRotation(): number;\n upperTextRotation(_: number): this;\n roundedCorners(): number;\n roundedCorners(_: number): this;\n labelFontSize(): number;\n labelFontSize(_: number): this;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n textColor(): string;\n textColor(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n showValues(): boolean;\n showValues(_: boolean): this;\n}\nQuartileCandlestick.prototype.publish(\"textColor\", \"black\", \"html-color\", \"Color of label and value text\");\nQuartileCandlestick.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, labels will be shown\");\nQuartileCandlestick.prototype.publish(\"showValues\", true, \"boolean\", \"If true, values will be shown\");\nQuartileCandlestick.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Determines layout\", [\"horizontal\", \"vertical\"]);\nQuartileCandlestick.prototype.publish(\"valueFontSize\", 12, \"number\", \"Font size of value text (pixels)\");\nQuartileCandlestick.prototype.publish(\"labelFontSize\", 12, \"number\", \"Font size of label text (pixels)\");\nQuartileCandlestick.prototype.publish(\"roundedCorners\", 8, \"number\", \"Radius of rounded rect corners (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineWidth\", 4, \"number\", \"Width of lines (pixels)\");\nQuartileCandlestick.prototype.publish(\"candleWidth\", null, \"number\", \"Height of outer rect (pixels)\", null, {optional: true});\nQuartileCandlestick.prototype.publish(\"textPadding\", 8, \"number\", \"Padding between outer rect and text (pixels)\");\nQuartileCandlestick.prototype.publish(\"edgePadding\", 30, \"number\", \"Padding between outer rect and left/right sides (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineColor\", \"#333\", \"html-color\", \"Color of outer rect and lines\");\nQuartileCandlestick.prototype.publish(\"innerRectColor\", \"white\", \"html-color\", \"Color of the inner rects\");\nQuartileCandlestick.prototype.publish(\"upperTextRotation\", -60, \"number\", \"Rotation of label text (degrees)\");\nQuartileCandlestick.prototype.publish(\"lowerTextRotation\", -60, \"number\", \"Rotation of value text (degrees)\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Radar.css\";\nexport class Radar extends SVGWidget {\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n setPointAttributes(element, x, y) {\n const shape = this.mapShape(this.pointShape());\n const context = this;\n switch (shape) {\n case \"rect\":\n element\n .attr(\"width\", context.pointSize())\n .attr(\"height\", context.pointSize())\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"circle\":\n element\n .attr(\"r\", context.pointSize() / 2)\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"path\":\n const half_size = context.pointSize() / 2;\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (x - half_size) + \" \" + (y - half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y + half_size) + \" \" +\n \"M\" + (x - half_size) + \" \" + (y + half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y - half_size);\n })\n .style(\"stroke\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n default:\n }\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this\n .tooltipHTML(d => {\n return this.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n })\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n const context = this;\n const h = this.height();\n const w = this.width();\n const half_h = (h / 2);\n const half_w = (w / 2);\n\n const columns = this.columns();\n const data = this.data();\n const flatData = this.flattenData(columns, data).map((d: any, idx: number) => {\n d.shape = this.mapShape(this.pointShape());\n d.column = columns[d.colIdx];\n d.row = data[idx];\n return d;\n });\n const domain_points = [];\n const arc = this.degrees2radians(360 / this.data().length);\n const max_label_h = this.fontSize();\n let max_label_w = 0;\n flatData.filter(n => n.colIdx === 1).forEach(n => {\n const isize = super.textSize(n.label, `${this.fontFamily()}`, this.fontSize());\n if (max_label_w < isize.width) max_label_w = isize.width;\n });\n const radius = Math.min(half_h - max_label_h, half_w - max_label_w);\n const labels = element\n .selectAll(\".label\")\n .data(flatData.filter(n => n.colIdx === 1))\n ;\n const max_val = Math.max.apply(context, flatData.map(n => n.value));\n labels.enter()\n .append(\"text\")\n .attr(\"class\", \"label\")\n .attr(\"text-anchor\", \"middle\")\n .merge(labels)\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .each(function (this: SVGElement, n, i) {\n const xy = context.polar2cartesian(radius, (i * arc) - (Math.PI / 2));\n domain_points.push(xy.map(n => n * context.labelPaddingRatio()));\n let text_anchor = \"middle\";\n const _x = Math.round(xy[0]);\n text_anchor = _x > 0 ? \"start\" : text_anchor;\n text_anchor = _x < 0 ? \"end\" : text_anchor;\n d3Select(this)\n .attr(\"text-anchor\", text_anchor)\n .attr(\"x\", xy[0])\n .attr(\"y\", xy[1])\n ;\n })\n .text(n => n.label)\n ;\n labels.exit().remove();\n const domains = element\n .selectAll(\".domain\")\n .data(flatData.filter(n => n.colIdx === 1));\n domains.enter()\n .append(\"line\")\n .classed(\"domain\", true)\n .style(\"stroke\", \"#000\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"1px\")\n .merge(domains)\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", (n, i) => domain_points[i][0])\n .attr(\"y2\", (n, i) => domain_points[i][1]);\n domains.exit().remove();\n const value_guides = element\n .selectAll(\".value_guide\")\n .data(this.valueGuideRatios())\n ;\n value_guides.enter()\n .append(\"polygon\")\n .classed(\"value_guide\", true)\n .style(\"stroke\", \"grey\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(value_guides)\n .each(function (mult, i) {\n const poly_points = [];\n domain_points.forEach((domain_point, row_idx) => {\n poly_points.push([\n domain_point[0] * mult,\n domain_point[1] * mult\n ]);\n });\n d3Select(this)\n .attr(\"points\", poly_points.join(\" \"))\n .attr(\"stroke\", \"rgb(0, 0, 0)\")\n .attr(\"stroke-opacity\", 0.75)\n .attr(\"stroke-width\", 0.3)\n .attr(\"fill-opacity\", 0)\n ;\n })\n ;\n value_guides.exit().remove();\n\n const value_guide_text = element\n .selectAll(\".value_guide_text\")\n .data(this.valueGuideRatios())\n ;\n value_guide_text.enter()\n .append(\"text\")\n .attr(\"class\", \"value_guide_text\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .merge(value_guide_text)\n .attr(\"x\", 2)\n .attr(\"y\", mult => domain_points[0][1] * mult)\n .text((mult, i) => Math.round(mult * max_val))\n ;\n value_guides.exit().remove();\n\n // Polygon shapes ---\n const series_polygons = element\n .selectAll(\".area\")\n .data(columns.filter((n, i) => i > 0));\n series_polygons.enter()\n .append(\"polygon\")\n .attr(\"class\", \"area\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(series_polygons)\n .style(\"stroke\", d => this.strokeColor([], d, 0))\n .style(\"fill\", d => this.fillColor([], d, 0))\n .style(\"fill-opacity\", this.fillOpacity())\n .attr(\"points\", (d, col_idx) => {\n return domain_points.map((domain_point, row_idx) => {\n const val = data[row_idx][col_idx + 1];\n const val_mult = val === 0 ? 0 : val / max_val;\n return domain_point[0] * val_mult + \",\" + domain_point[1] * val_mult;\n }).join(\" \");\n });\n series_polygons.exit().remove();\n\n // Points ---\n const point_elm = element\n .selectAll(\".point\")\n .data(flatData);\n point_elm.enter()\n .append(\"g\")\n .attr(\"class\", \"point\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n const data_row = context.data()[d.rowIdx];\n const row_obj = context.rowToObj(data_row);\n const selected = context._selection.selected(this);\n context.click(row_obj, context.columns()[d.colIdx], selected);\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(context.data()[d.rowIdx]), d.column, context._selection.selected(this));\n })\n .each(function (d) {\n const element = d3Select(this);\n element.append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .attr(\"r\", context.pointSize())\n .call(context._selection.enter.bind(context._selection))\n ;\n element.append(context.mapShape(context.pointShape()))\n .attr(\"class\", \"pointShape\")\n ;\n })\n .merge(point_elm)\n .each(function (d) {\n const element = d3Select(this);\n const val_mult = d.value === 0 ? 0 : d.value / max_val;\n const x = domain_points[d.rowIdx][0] * val_mult;\n const y = domain_points[d.rowIdx][1] * val_mult;\n element.select(\".pointSelection\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n ;\n\n const pointElement = element.select(\".pointShape\")\n .style(\"stroke\", context.strokeColor(d.row, d.column, d.value))\n .style(\"fill\", context.fillColor(d.row, d.column, d.value))\n ;\n context.setPointAttributes(pointElement, x, y);\n })\n ;\n point_elm.exit().remove();\n }\n\n polar2cartesian(r, theta) {\n return [r * Math.cos(theta), r * Math.sin(theta)];\n }\n cartesian2polar(x, y) {\n return [Math.atan2(y, x), Math.sqrt(x * x + y * y)];\n }\n degrees2radians(d) {\n return d / 57.295779513;\n }\n radians2degrees(r) {\n return r * 57.295779513;\n }\n point_in_polygon(point, vs) {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n const xi = vs[i][0];\n const yi = vs[i][1];\n const xj = vs[j][0];\n const yj = vs[j][1];\n const intersect = ((yi > y) !== (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n _selection;\n}\nRadar.prototype._class += \" chart_Radar\";\nRadar.prototype.implements(INDChart.prototype);\nRadar.prototype.implements(ITooltip.prototype);\nRadar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Radar {\n labelPaddingRatio(): number;\n labelPaddingRatio(_: number): this;\n fillOpacity(): number;\n fillOpacity(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n valueGuideRatios(): any;\n valueGuideRatios(_: any): this;\n valueGuideFontSize(): number;\n valueGuideFontSize(_: number): this;\n valueGuideFontFamily(): string;\n valueGuideFontFamily(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n}\n\nRadar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Radar.prototype._palette.switch());\nRadar.prototype.publish(\"pointShape\", \"cross\", \"set\", \"pointShape\", [\"circle\", \"rectangle\", \"cross\"]);\nRadar.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nRadar.prototype.publish(\"valueGuideRatios\", [0.2, 0.4, 0.6, 0.8, 1], \"array\", \"Array of values between 0 and 1 that are multiplied by the widget radius to produce guide lines\");\nRadar.prototype.publish(\"fillOpacity\", 0.66, \"number\", \"Opacity of the data polygon(s)\");\nRadar.prototype.publish(\"fontFamily\", \"\", \"string\", \"fontFamily\");\nRadar.prototype.publish(\"fontSize\", 16, \"number\", \"fontSize\");\nRadar.prototype.publish(\"labelPaddingRatio\", 0.9, \"number\", \"labelPaddingRatio\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/RadialBar.css\";\n\nexport class RadialBar extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\"\n }];\n\n private _domainScale = d3ScaleBand();\n private _valueScale = d3ScaleLinear();\n private _d3Arc = d3Arc<[string, number]>()\n .startAngle(0)\n .endAngle((d) => this._valueScale(d[1]))\n ;\n\n protected _arcs;\n protected _axialAxis;\n protected _radialAxis;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n this.tooltipHTML(d => {\n return this.tooltipFormat({ label: d[0], value: d[1] });\n });\n\n this._radialAxis = element.append(\"g\")\n .attr(\"class\", \"r axis\")\n ;\n this._axialAxis = element.append(\"g\")\n .attr(\"class\", \"a axis\")\n ;\n this._arcs = element.append(\"g\")\n .attr(\"class\", \"data\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const maxValue = Math.max(this.valueDomainHigh_exists() ? this.valueDomainHigh() : 0, ...this.data().map(d => d[1]));\n\n this._valueScale\n .domain([0, maxValue])\n .range([0, this.radians(this.valueMaxAngle())])\n ;\n\n const ticks = this._valueScale.ticks(this.tickCount());\n\n const maxTextWidth = this.textSize(ticks.map(d => \"\" + d), \"Verdana\", 12).width;\n const chartRadius = (Math.min(this.width() - (10 + maxTextWidth) * 2, this.height() - (10 + 12) * 2) / 2);\n\n // Domain Axis (x-axis) ---\n const domainData = this.data().map(d => d[0]);\n\n this._domainScale\n .domain(domainData)\n .range([0, chartRadius])\n .padding(this.domainPadding())\n ;\n const domainPadding = this._domainScale.step() * this._domainScale.padding();\n\n const domainCircles = this._radialAxis.selectAll(\"circle\").data(domainData);\n domainCircles.enter().append(\"circle\")\n .attr(\"fill\", \"transparent\")\n .merge(domainCircles)\n .attr(\"r\", d => this._domainScale(d) + this._domainScale.step() - domainPadding / 2)\n ;\n domainCircles.exit().remove();\n\n const domainText = this._radialAxis.selectAll(\".arc-text\").data(domainData);\n domainText.enter().append(\"text\")\n .attr(\"class\", \"arc-text\")\n .attr(\"x\", -4)\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"text-anchor\", \"end\")\n .merge(domainText)\n .attr(\"y\", d => -this._domainScale(d) - this._domainScale.bandwidth() / 2)\n .text(d => d);\n domainText.exit().remove();\n\n // Value Axis (y-axis) ---\n const valueLines = this._axialAxis.selectAll(\"line\").data(ticks);\n valueLines.enter().append(\"line\")\n .merge(valueLines)\n .attr(\"x2\", d => chartRadius * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y2\", d => chartRadius * Math.sin(this._valueScale(d) - this.radians(90)))\n ;\n valueLines.exit().remove();\n\n const valueText = this._axialAxis.selectAll(\"text\").data(ticks);\n valueText.enter().append(\"text\")\n .style(\"dominant-baseline\", \"central\")\n .merge(valueText)\n .attr(\"x\", d => (chartRadius + 10) * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y\", d => (chartRadius + 10) * Math.sin(this._valueScale(d) - this.radians(90)))\n .style(\"text-anchor\", d => {\n const middleZone = 20;\n const angle = this.degrees(this._valueScale(d));\n if (angle >= 0 && angle <= middleZone ||\n angle >= 180 - middleZone && angle <= 180 + middleZone ||\n angle >= 360 - middleZone && angle <= 360\n ) {\n return \"middle\";\n } else if (angle >= 180 && angle <= 360) {\n return \"end\";\n } else {\n return null;\n }\n })\n .text(d => d)\n ;\n valueText.exit().remove();\n\n const valueColumn = this.columns().length > 1 ? this.columns()[1] : \"\";\n // Data (arcs) ---\n this._d3Arc\n .innerRadius(d => this._domainScale(d[0]))\n .outerRadius(d => this._domainScale(d[0]) + this._domainScale.bandwidth())\n ;\n const arcs = this._arcs.selectAll(\"path\").data(this.data(), d => d[0]);\n arcs.enter().append(\"path\")\n .attr(\"class\", \"arc\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n context.click(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .merge(arcs)\n .style(\"fill\", (d, i) => this.fillColor(d, d[0], d[1]))\n .transition()\n .delay((d, i) => i * this.transitionDelay())\n .duration(this.transitionDuration())\n .attrTween(\"d\", (d, indx) => {\n const interpolate = d3Interpolate(d._current || 0, d[1]);\n d._current = d[1];\n return t => this._d3Arc([d[0], interpolate(t)], indx);\n })\n ;\n arcs.exit().remove();\n }\n\n degrees(radians) {\n return radians * 180 / Math.PI;\n }\n\n radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n _selection;\n}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface RadialBar {\n paletteID(): string;\n paletteID(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n valueMaxAngle(): number;\n valueMaxAngle(_: number): this;\n valueDomainHigh(): number;\n valueDomainHigh(_: number): this;\n valueDomainHigh_exists(): boolean;\n transitionDelay(): number;\n transitionDelay(_: number): this;\n transitionDuration(): number;\n transitionDuration(_: number): this;\n}\nRadialBar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", RadialBar.prototype._palette.switch());\nRadialBar.prototype.publish(\"tickCount\", 10, \"number\", \"Number of ticks to display\");\nRadialBar.prototype.publish(\"domainPadding\", 0.25, \"number\", \"Padding between chart edge and container edge (0..1)\");\nRadialBar.prototype.publish(\"valueMaxAngle\", 270, \"number\", \"Maximum angular length of a bar (degrees)\");\nRadialBar.prototype.publish(\"valueDomainHigh\", null, \"number\", \"Value domain high\", undefined, { optional: true });\nRadialBar.prototype.publish(\"transitionDelay\", 100, \"number\", \"Delay between the start of each row animation (ms)\");\nRadialBar.prototype.publish(\"transitionDuration\", 750, \"number\", \"Duration of a row's animation (ms)\");\n","import { format as d3Format, HTMLWidget, Palette } from \"@hpcc-js/common\";\nimport { QuartileCandlestick } from \"./QuartileCandlestick\";\nimport { Scatter } from \"./Scatter\";\n\nconst rainbow = Palette.rainbow(\"Blues\");\nconst palette = Palette.ordinal(\"Quartile\", [rainbow(100, 0, 100), rainbow(50, 0, 100), rainbow(50, 0, 100), rainbow(75, 0, 100)]);\npalette(\"Std. Dev.\");\npalette(\"MinMax\");\npalette(\"25%\");\npalette(\"50%\");\n\ntype Mode = \"min_max\" | \"25_75\" | \"normal\";\ntype Tick = { label: string, value: number };\ntype Ticks = Tick[];\ntype AxisTick = { label: string, value: string };\ntype AxisTicks = AxisTick[];\n\nfunction myFormatter(format: string): (num: number) => string {\n const formatter = d3Format(format);\n return function (num: number) {\n const strVal = (Math.round(num * 100) / 100).toString();\n if (strVal.length <= 4) return strVal;\n return formatter(num);\n };\n}\n\nexport class StatChart extends HTMLWidget {\n\n private _mean: number;\n private _standardDeviation: number;\n private _quartiles: number[];\n private _selectMode: any;\n private _tickFormatter: (_: number) => string;\n\n private _bellCurve: Scatter = new Scatter()\n .columns([\"\", \"Std. Dev.\"])\n .paletteID(\"Quartile\")\n .interpolate_default(\"basis\")\n .pointSize(0)\n .xAxisType(\"linear\")\n .xAxisOverlapMode(\"none\")\n .xAxisTickFormat(\",\")\n .yAxisHidden(true)\n .yAxisDomainLow(0)\n .yAxisDomainHigh(110)\n .yAxisGuideLines(false) as Scatter\n ;\n\n private _candle = new QuartileCandlestick()\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\"])\n .edgePadding(0)\n .roundedCorners(1)\n .lineWidth(1)\n .upperTextRotation(-90)\n .lowerTextRotation(-90)\n .labelFontSize(0)\n .valueFontSize(0)\n .lineColor(rainbow(90, 0, 100))\n .innerRectColor(rainbow(10, 0, 100))\n ;\n\n private stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n private formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n private quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.data()[0][q];\n }\n\n private formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n private domain(mode: Mode): [number, number] {\n switch (mode) {\n case \"25_75\":\n return [this.quartile(1), this.quartile(3)];\n case \"normal\":\n return [this.stdDev(-4), this.stdDev(4)];\n case \"min_max\":\n default:\n return [this.quartile(0), this.quartile(4)];\n }\n }\n\n mean(): number;\n mean(_: number): this;\n mean(_?: number): this | number {\n if (!arguments.length) return this._mean;\n this._mean = _;\n if (this.data()[0]) {\n this.data()[0][5] = _;\n }\n return this;\n }\n\n standardDeviation(): number;\n standardDeviation(_: number): this;\n standardDeviation(_?: number): this | number {\n if (!arguments.length) return this._standardDeviation;\n this._standardDeviation = _;\n if (this.data()[0]) {\n this.data()[0][6] = _;\n }\n return this;\n }\n\n quartiles(): number[];\n quartiles(_: number[]): this;\n quartiles(_?: number[]): this | number[] {\n if (!arguments.length) return this._quartiles;\n this._quartiles = _;\n if (this.data()[0]) {\n this.data()[0] = _.concat(this.data()[0].slice(-2));\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._bellCurve.target(element.append(\"div\").node());\n\n this._candle.target(element.append(\"div\").node());\n\n this._selectMode = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.render();\n })\n ;\n this._selectMode.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectMode.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectMode.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n private bellTicks(mode: Mode): AxisTicks {\n let ticks: Ticks;\n switch (mode) {\n case \"25_75\":\n ticks = [\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) }\n ];\n break;\n case \"normal\":\n ticks = [\n { label: this.formatStdDev(-4), value: this.stdDev(-4) },\n { label: \"-3σ\", value: this.stdDev(-3) },\n { label: \"-2σ\", value: this.stdDev(-2) },\n { label: \"-1σ\", value: this.stdDev(-1) },\n { label: this.formatStdDev(0), value: this.stdDev(0) },\n { label: \"+1σ\", value: this.stdDev(1) },\n { label: \"+2σ\", value: this.stdDev(2) },\n { label: \"+3σ\", value: this.stdDev(3) },\n { label: this.formatStdDev(4), value: this.stdDev(4) }\n ];\n break;\n case \"min_max\":\n default:\n ticks = [\n { label: this.formatQ(0), value: this.quartile(0) },\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) },\n { label: this.formatQ(4), value: this.quartile(4) }\n ];\n }\n\n const [domainLow, domainHigh] = this.domain(this._selectMode.node().value);\n return ticks\n .filter(sd => sd.value >= domainLow && sd.value <= domainHigh)\n .map(sd => ({ label: sd.label, value: sd.value.toString() }))\n ;\n }\n\n updateScatter() {\n const mode = this._selectMode.node().value;\n const [domainLow, domainHigh] = this.domain(mode);\n const padding = (domainHigh - domainLow) * (this.domainPadding() / 100);\n\n this._bellCurve\n .xAxisDomainLow(domainLow - padding)\n .xAxisDomainHigh(domainHigh + padding)\n .xAxisTicks(this.bellTicks(mode))\n .data([\n [this.stdDev(-4), 0],\n [this.stdDev(-3), 0.3],\n [this.stdDev(-2), 5],\n [this.stdDev(-1), 68],\n [this.stdDev(0), 100],\n [this.stdDev(1), 68],\n [this.stdDev(2), 5],\n [this.stdDev(3), 0.3],\n [this.stdDev(4), 0]\n ])\n .resize({ width: this.width(), height: this.height() - this.candleHeight() })\n .render()\n ;\n }\n\n updateCandle() {\n const candleX = this._bellCurve.dataPos(this.quartile(0));\n const candleW = this._bellCurve.dataPos(this.quartile(4)) - candleX;\n this._candle\n .resize({ width: this.width(), height: this.candleHeight() })\n .pos({ x: (candleX + candleW / 2) + 2, y: this.candleHeight() / 2 })\n .width(candleW)\n .candleWidth(this.candleHeight())\n .data(this.quartiles())\n .render()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._tickFormatter = myFormatter(this.tickFormat());\n if (this.data()[0] && this.data()[0].length === 7) {\n this.quartiles(this.data()[0].slice(0, 5));\n this.mean(this.data()[0][5]);\n this.standardDeviation(this.data()[0][6]);\n }\n this.updateScatter();\n this.updateCandle();\n }\n}\nexport interface StatChart {\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n}\nStatChart.prototype.publish(\"tickFormat\", \".2e\", \"string\", \"X-Axis Tick Format\");\nStatChart.prototype.publish(\"candleHeight\", 20, \"number\", \"Height of candle widget (pixels)\");\nStatChart.prototype.publish(\"domainPadding\", 10, \"number\", \"Domain value padding\");\n","import { Scatter } from \"./Scatter\";\n\nexport class Step extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"step\")\n ;\n }\n}\nStep.prototype._class += \" chart_Step\";\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Summary.css\";\n\nconst TEXT = \"text\";\nconst HTML = \"html\";\n\nexport class Summary extends HTMLWidget {\n protected _playIntervalIdx = 0;\n protected _mainDiv;\n protected _headerDiv;\n protected _textDiv;\n\n constructor() {\n super();\n this._tag = \"div\";\n\n this._drawStartPos = \"center\";\n this.playInterval(this.playInterval());\n }\n\n lookupFieldIdx(propID, defaultIdx?: number) {\n let retVal = defaultIdx;\n if (this[propID + \"_exists\"]()) {\n retVal = this.columns().indexOf(this[propID]());\n if (retVal < 0) {\n return undefined;\n }\n }\n return retVal;\n }\n\n lookupFieldText(propID, defaultIdx?: number) {\n if (this[propID + \"_exists\"]()) {\n return this[propID]();\n }\n if (defaultIdx !== undefined) {\n return this.columns()[defaultIdx] || \"\";\n }\n return \"\";\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n summaryData() {\n let labelFieldIdx; // undefined\n if (!this.hideLabel()) {\n labelFieldIdx = this.lookupFieldIdx(\"labelColumn\", 0);\n }\n const iconFieldIdx = this.lookupFieldIdx(\"iconColumn\");\n const valueFieldIdx = this.lookupFieldIdx(\"valueColumn\", 1);\n let moreIconIdx; // undefined\n let moreTextIdx; // undefined\n if (!this.hideMore()) {\n moreIconIdx = this.lookupFieldIdx(\"moreIconColumn\");\n moreTextIdx = this.lookupFieldIdx(\"moreTextColumn\");\n }\n const colorFillIdx = this.lookupFieldIdx(\"colorFillColumn\");\n const colorStrokeIdx = this.lookupFieldIdx(\"colorStrokeColumn\");\n return this.formattedData().map(function (row) {\n return {\n icon: iconFieldIdx === undefined ? this.icon() : row[iconFieldIdx],\n label: labelFieldIdx === undefined ? \"\" : row[labelFieldIdx],\n value: row[valueFieldIdx],\n moreIcon: moreIconIdx === undefined ? (this.hideMore() ? \"\" : this.moreIcon()) : row[moreIconIdx],\n moreText: moreTextIdx === undefined ? (this.hideMore() ? \"\" : this.moreText()) : row[moreTextIdx],\n fill: colorFillIdx === undefined ? this.colorFill() : row[colorFillIdx],\n stroke: colorStrokeIdx === undefined ? this.colorStroke() : row[colorStrokeIdx]\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._mainDiv = element.append(\"div\")\n ;\n const context = this;\n this._headerDiv = this._mainDiv.append(\"h2\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n ;\n this._textDiv = this._mainDiv.append(\"div\")\n .attr(\"class\", \"text\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this.data().length) {\n\n }\n const data = this.summaryData();\n if (this._playIntervalIdx >= data.length) {\n this._playIntervalIdx = 0;\n }\n const row: any = this._playIntervalIdx < data.length ? data[this._playIntervalIdx] : [\"\", \"\"];\n element\n .style(\"width\", this.fixedSize() ? this.minWidth_exists() ? this.minWidth() + \"px\" : null : \"100%\")\n .style(\"height\", this.fixedSize() ? this.minHeight_exists() ? this.minHeight() + \"px\" : null : \"100%\")\n ;\n this._mainDiv\n .attr(\"class\", \"content bgIcon \" + row.icon)\n .transition()\n .style(\"background-color\", row.fill)\n .style(\"color\", row.stroke)\n .style(\"min-width\", this.minWidth_exists() ? this.minWidth() + \"px\" : null)\n .style(\"min-height\", this.minHeight_exists() ? this.minHeight() + \"px\" : null)\n .style(\"font-size\", this.iconFontSize() + \"px\")\n ;\n this._headerDiv\n .transition()\n .style(\"color\", row.stroke)\n .style(\"font-size\", this.headerFontSize() + \"px\")\n [this.valueHTML() ? HTML : TEXT](row.value)\n ;\n this._textDiv\n .style(\"font-size\", this.textFontSize() + \"px\")\n [this.labelHTML() ? HTML : TEXT](row.label)\n ;\n const context = this;\n const moreDivs = this._mainDiv.selectAll(\".more\").data([row]);\n const moreDivsEnter = moreDivs.enter()\n .append(\"div\")\n .attr(\"class\", \"more\")\n .on(\"click\", function (d) {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"moreTextColumn\") || \"more\", true);\n })\n .each(function () {\n const element2 = d3Select(this);\n element2.append(\"i\");\n element2.append(\"span\");\n })\n ;\n const moreDivsUpdate = moreDivsEnter\n .merge(moreDivs)\n .style(\"display\", this.hideMoreWrapper() ? \"none\" : null)\n .style(\"font-size\", this.moreFontSize() + \"px\")\n .style(\"height\", this.moreWrapperHeight_exists() ? this.moreWrapperHeight() + \"px\" : null)\n .transition()\n .style(\"background-color\", d3Rgb(row.fill).darker(0.75).toString())\n ;\n moreDivsUpdate\n .select(\"i\")\n .attr(\"class\", function (d) {\n return \"fa \" + d.moreIcon;\n })\n ;\n if (this.moreTextHTML()) {\n moreDivsUpdate.select(\"span\")\n .each(function (d) {\n this.innerHTML = d.moreText;\n });\n } else {\n moreDivsUpdate.select(\"span\").text(d => d.moreText);\n }\n moreDivs.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nSummary.prototype._class += \" chart_Summary\";\nSummary.prototype.implements(I2DChart.prototype);\n\nexport interface Summary {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n\n headerFontSize(): number;\n headerFontSize(_: number): this;\n textFontSize(): number;\n textFontSize(_: number): this;\n moreFontSize(): number;\n moreFontSize(_: number): this;\n iconFontSize(): number;\n iconFontSize(_: number): this;\n\n hideLabel(): boolean;\n hideLabel(_: boolean): this;\n hideLabel_exists(): boolean;\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelHTML(): boolean;\n labelHTML(_: boolean): this;\n labelHTML_exists(): boolean;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueHTML(): boolean;\n valueHTML(_: boolean): this;\n valueHTML_exists(): boolean;\n\n hideMore(): boolean;\n hideMore(_: boolean): this;\n hideMore_exists(): boolean;\n hideMoreWrapper(): boolean;\n hideMoreWrapper(_: boolean): this;\n moreWrapperHeight(): number;\n moreWrapperHeight(_: number): this;\n moreWrapperHeight_exists(): boolean;\n moreIconColumn(): string;\n moreIconColumn(_: string): this;\n moreIconColumn_exists(): boolean;\n moreIcon(): string;\n moreIcon(_: string): this;\n moreIcon_exists(): boolean;\n moreTextColumn(): string;\n moreTextColumn(_: string): this;\n moreTextColumn_exists(): boolean;\n moreText(): string;\n moreText(_: string): this;\n moreText_exists(): boolean;\n moreTextHTML(): boolean;\n moreTextHTML(_: boolean): this;\n moreTextHTML_exists(): boolean;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n\n // I2DChart ---\n click(row, column, selected);\n dblclick(row, column, selected);\n}\n\nSummary.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummary.prototype.publish(\"headerFontSize\", null, \"number\", \"headerFontSize\");\nSummary.prototype.publish(\"textFontSize\", null, \"number\", \"textFontSize\");\nSummary.prototype.publish(\"moreFontSize\", null, \"number\", \"moreFontSize\");\nSummary.prototype.publish(\"iconFontSize\", null, \"number\", \"iconFontSize\");\n\nSummary.prototype.publish(\"hideLabel\", false, \"boolean\", \"Hide label column\");\nSummary.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideLabel() });\nSummary.prototype.publish(\"labelHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideLabel() });\n\nSummary.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"valueHTML\", false, \"boolean\", \"Allow HTML\");\n\nSummary.prototype.publish(\"hideMore\", false, \"boolean\", \"Hide More Information\");\nSummary.prototype.publish(\"hideMoreWrapper\", false, \"boolean\", \"Hide More Information Wrapper\");\nSummary.prototype.publish(\"moreWrapperHeight\", null, \"number\", \"Height of the 'more' text wrapper (pixels)\");\nSummary.prototype.publish(\"moreIconColumn\", null, \"set\", \"Select More Icon Column\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreIcon\", \"fa-info-circle\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.hideMore() || w.moreIconColumn() });\nSummary.prototype.publish(\"moreTextColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreText\", \"More Info\", \"string\", \"More text\", null, { disable: (w) => w.hideMore() || w.moreTextColumn() });\nSummary.prototype.publish(\"moreTextHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideMore() });\n\nSummary.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorFill\", \"#3498db\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorFillColumn() });\nSummary.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorStroke\", \"#ffffff\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummary.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummary.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummary.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummary.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nconst playInterval = Summary.prototype.playInterval;\nSummary.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { CanvasWidget, Utility } from \"@hpcc-js/common\";\n\nexport class SummaryC extends CanvasWidget {\n protected _playIntervalIdx = 0;\n\n constructor() {\n super();\n I2DChart.call(this);\n this.playInterval(this.playInterval());\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n enter(domNode, element) {\n super.enter.apply(this, arguments);\n const { width, height } = this.size();\n domNode.height = height;\n domNode.width = width;\n }\n\n update(domNode, element) {\n super.update.apply(this, arguments);\n const context = this;\n if (this._playIntervalIdx >= this.data().length) {\n this._playIntervalIdx = 0;\n }\n const size = this.size();\n const minDimension = Math.min(size.width, size.height);\n const sizeRatio = this.fontSizeRatio();\n const labelIdx = this.columns().indexOf(this.labelColumn());\n const valueIdx = this.columns().indexOf(this.valueColumn());\n const bgColorIdx = this.columns().indexOf(this.colorFillColumn());\n const fontColorIdx = this.columns().indexOf(this.colorStrokeColumn());\n const iconIdx = this.columns().indexOf(this.iconColumn());\n const icon = iconIdx !== -1 ? this.currentRow()[iconIdx] : this.icon();\n const label = labelIdx !== -1 ? this.currentRow()[labelIdx] : \"\";\n const value = valueIdx !== -1 ? this.currentRow()[valueIdx] : \"\";\n const bgColor = bgColorIdx !== -1 ? this.currentRow()[bgColorIdx] : this.colorFill();\n const fontColor = fontColorIdx !== -1 ? this.currentRow()[fontColorIdx] : this.colorStroke();\n\n let mainFontSize = size.height * (sizeRatio - this.paddingSizeRatio());\n const subFontSize = size.height * (1 - sizeRatio - this.paddingSizeRatio());\n const iconSize = size.height * (this.iconSizeRatio() - this.paddingSizeRatio());\n const p = minDimension * this.paddingSizeRatio();\n const ctx = domNode.getContext(\"2d\");\n\n ctx.clearRect(0, 0, size.width, size.height);\n\n const fontFamily = context.fontFamily();\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size.width, size.height);\n\n ctx.globalAlpha = this.iconOpacity();\n drawIcon(Utility.faChar(icon), iconSize, context.iconAnchor());\n\n ctx.globalAlpha = this.valueOpacity();\n mainFontSize = drawText(value, p, mainFontSize, context.valueAnchor());\n\n ctx.globalAlpha = this.labelOpacity();\n drawText(label, mainFontSize + p, subFontSize, context.labelAnchor());\n\n function drawText(text, y, fontSize, anchorMode) {\n ctx.textBaseline = \"top\";\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n fontSize = fontSize * fontSizeMult;\n ctx.font = `${fontSize}px ${fontFamily}`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n ctx.fillText(text, x, y);\n return fontSize;\n }\n\n function drawIcon(text, fontSize, anchorMode) {\n if (typeof text === \"undefined\") return;\n ctx.textBaseline = context.iconBaseline();\n ctx.font = `${fontSize}px FontAwesome`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n ctx.font = `${fontSize * fontSizeMult}px FontAwesome`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n const y = getTextOffsetY(context.iconBaseline());\n ctx.fillText(text, x, y);\n }\n\n function getTextOffsetX(width, anchorMode) {\n switch (anchorMode) {\n case \"start\":\n return p;\n case \"middle\":\n return (size.width / 2) - (width / 2);\n case \"end\":\n return size.width - width - p;\n }\n }\n function getTextOffsetY(anchorMode) {\n switch (anchorMode) {\n case \"top\":\n return p;\n case \"middle\":\n return size.height / 2;\n case \"bottom\":\n return size.height - p;\n }\n }\n }\n}\nSummaryC.prototype._class += \" chart_SummaryC\";\nSummaryC.prototype.implements(I2DChart.prototype);\n\nexport interface SummaryC {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n iconOpacity(): number;\n iconOpacity(_: number): this;\n\n fontFamily(): string;\n fontFamily(_: string): this;\n\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelOpacity(): number;\n labelOpacity(_: number): this;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueOpacity(): number;\n valueOpacity(_: number): this;\n\n fontSizeRatio(): number;\n fontSizeRatio(_: number): this;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n paddingSizeRatio(): number;\n paddingSizeRatio(_: number): this;\n iconSizeRatio(): number;\n iconSizeRatio(_: number): this;\n\n iconAnchor(): \"start\" | \"middle\" | \"end\";\n iconAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n labelAnchor(): \"start\" | \"middle\" | \"end\";\n labelAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n\n iconBaseline(): \"top\" | \"middle\" | \"bottom\";\n iconBaseline(_: \"top\" | \"middle\" | \"bottom\"): this;\n}\n\nSummaryC.prototype.publish(\"iconBaseline\", \"bottom\", \"string\", \"Text baseline for the icon\", [\"top\", \"middle\", \"bottom\"]);\nSummaryC.prototype.publish(\"iconAnchor\", \"end\", \"set\", \"Anchors the icon either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"valueAnchor\", \"start\", \"set\", \"Anchors the value either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"labelAnchor\", \"start\", \"set\", \"Anchors the label either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummaryC.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Font Family\");\n\nSummaryC.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\n\nSummaryC.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for background color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorFill\", \"#0097e6\", \"html-color\", \"Background Color\", null, { disable: (w) => w.colorFillColumn() });\nSummaryC.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for font color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorStroke\", \"#2f3640\", \"html-color\", \"Font Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummaryC.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummaryC.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummaryC.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummaryC.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nSummaryC.prototype.publish(\"fontSizeRatio\", 0.618, \"number\", \"Ratio between widget height and value font size\");\nSummaryC.prototype.publish(\"valueOpacity\", 1, \"number\", \"Opacity of value text (0..1)\");\nSummaryC.prototype.publish(\"labelOpacity\", 0.9, \"number\", \"Opacity of label text (0..1)\");\nSummaryC.prototype.publish(\"iconOpacity\", 0.3, \"number\", \"Opacity of icon text (0..1)\");\n\nSummaryC.prototype.publish(\"paddingSizeRatio\", 0.1, \"number\", \"Ratio of the smallest dimension for edge padding (0..1)\");\nSummaryC.prototype.publish(\"iconSizeRatio\", 0.9, \"number\", \"Ratio of the height for icon size (0..1)\");\n\nconst playInterval = SummaryC.prototype.playInterval;\nSummaryC.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, InputField, SVGWidget, Utility, zoom as d3Zoom } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { d3Cloud } from \"./D3Cloud\";\n\nimport \"../src/WordCloud.css\";\n\nexport class WordCloud extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n private _prevOffsetX;\n private _prevOffsetY;\n private _prevZoom;\n private _root;\n private _canvas;\n private _d3Cloud;\n private _d3Zoom;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._prevOffsetX = this.offsetX();\n this._prevOffsetY = this.offsetY();\n this._prevZoom = this.zoom();\n }\n\n calcData() {\n return this.data().map(row => {\n return {\n __viz_label: row[0],\n __viz_weight: row[1],\n __viz_row: row\n };\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this._root = element.append(\"g\");\n this._canvas = document.createElement(\"canvas\");\n\n const context = this;\n this._d3Zoom = d3Zoom()\n .scaleExtent([0.1, 10])\n ;\n this._d3Zoom\n .on(\"zoom\", function (evt) {\n const event = d3Event();\n if (event && event.transform) {\n context.zoomed(context._d3Zoom, [event.transform.x, event.transform.y], event.transform.k);\n }\n })\n ;\n element.call(this._d3Zoom);\n\n this\n .tooltipHTML(function (d) {\n const columns = context.columns();\n const series = columns && columns.length ? columns[0] : \"Word\";\n return context.tooltipFormat({ label: d.__viz_label, series, value: d.__viz_weight });\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._d3Cloud = d3Cloud()\n .canvas(() => this._canvas)\n ;\n\n this.zoomed(this, [this.offsetX(), this.offsetY()], this.zoom());\n\n const data = this.calcData();\n const context = this;\n const extent = d3Extent(data, function (d: any) { return d.__viz_weight; });\n let scaler;\n switch (this.scaleMode()) {\n case \"log\":\n scaler = d3ScaleLog;\n break;\n case \"sqrt\":\n scaler = d3ScaleSqrt;\n break;\n case \"pow\":\n scaler = d3ScalePow;\n break;\n case \"linear\":\n default:\n scaler = d3ScaleLinear;\n break;\n }\n const scale = scaler().domain(extent).range([this.fontSizeFrom(), this.fontSizeTo()]);\n const angleDomain = d3ScaleLinear().domain([0, context.angleCount() - 1]).range([context.angleFrom(), context.angleTo()]);\n\n this._d3Cloud.stop()\n .size([this.width(), this.height()])\n .words(data)\n .font(this.fontFamily())\n .padding(this.padding())\n .spiral(this.spiral())\n .text(function (d) {\n return d.__viz_label.trim();\n })\n .fontSize(function (d) {\n return scale(d.__viz_weight);\n })\n .rotate((d, i) => angleDomain(i % context.angleCount()))\n .on(\"word\", w => {\n })\n .on(\"end\", draw)\n .start()\n ;\n\n function draw(data, bounds) {\n const text = context._root.selectAll(\"text\")\n .data(data, function (d) { return d.__viz_label ? d.__viz_label.toLowerCase() : \"\"; })\n ;\n text.enter().append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .call(context._selection.enter.bind(context._selection))\n .text(function (d) { return d.__viz_label; })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .style(\"opacity\", 1e-6)\n .merge(text)\n .style(\"font-size\", function (d) { return scale(d.__viz_weight) + \"px\"; })\n .style(\"font-family\", context.fontFamily())\n .transition().duration(1000)\n .attr(\"transform\", function (d) { return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\"; })\n .style(\"fill\", function (d) { return context._palette(d.__viz_label ? d.__viz_label.toLowerCase() : \"\"); })\n .style(\"opacity\", 1)\n ;\n text.exit().transition().duration(1000)\n .style(\"opacity\", 1e-4)\n .remove()\n ;\n }\n }\n\n zoomed(source, translate, scale) {\n if (translate[0] !== this._prevOffsetX || translate[1] !== this._prevOffsetY || scale !== this._prevZoom) {\n this._root.attr(\"transform\", translate);\n switch (source) {\n case this:\n /*\n this._d3Zoom\n .scale(scale)\n .translate(translate)\n ;\n */\n break;\n case this._d3Zoom:\n this.offsetX(translate[0]);\n this.offsetY(translate[1]);\n this.zoom(scale);\n break;\n }\n this._prevOffsetX = translate[0];\n this._prevOffsetY = translate[1];\n this._prevZoom = scale;\n }\n }\n\n paletteID: { (): string; (_: string): WordCloud };\n paletteID_exists: () => boolean;\n useClonedPalette: { (): boolean; (_: boolean): WordCloud };\n useClonedPalette_exists: () => boolean;\n fontFamily: { (): string; (_: string): WordCloud };\n fontFamily_exists: () => boolean;\n fontSizeFrom: { (): number; (_: number): WordCloud };\n fontSizeFrom_exists: () => boolean;\n fontSizeTo: { (): number; (_: number): WordCloud };\n fontSizeTo_exists: () => boolean;\n angleFrom: { (): number; (_: number): WordCloud };\n angleFrom_exists: () => boolean;\n angleTo: { (): number; (_: number): WordCloud };\n angleTo_exists: () => boolean;\n angleCount: { (): number; (_: number): WordCloud };\n angleCount_exists: () => boolean;\n padding: { (): number; (_: number): WordCloud };\n padding_exists: () => boolean;\n scaleMode: { (): string; (_: string): WordCloud };\n scaleMode_exists: () => boolean;\n spiral: { (): string; (_: string): WordCloud };\n spiral_exists: () => boolean;\n offsetX: { (): number; (_: number): WordCloud };\n offsetX_exists: () => boolean;\n offsetY: { (): number; (_: number): WordCloud };\n offsetY_exists: () => boolean;\n zoom: { (): number; (_: number): WordCloud };\n zoom_exists: () => boolean;\n\n // I2DChart\n _palette;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_?) => any;\n tooltipFormat: (opts) => any;\n tooltipStyle: { (): string; (_: string): WordCloud };\n tooltipStyle_exists: () => boolean;\n tooltipValueFormat: { (): string; (_: string): WordCloud };\n tooltipValueFormat_exists: () => boolean;\n tooltipSeriesColor: { (): string; (_: string): WordCloud };\n tooltipSeriesColor_exists: () => boolean;\n tooltipLabelColor: { (): string; (_: string): WordCloud };\n tooltipLabelColor_exists: () => boolean;\n tooltipValueColor: { (): string; (_: string): WordCloud };\n tooltipValueColor_exists: () => boolean;\n tooltipTick: { (): boolean; (_: boolean): WordCloud };\n tooltipTick_exists: () => boolean;\n tooltipOffset: { (): number; (_: number): WordCloud };\n tooltipOffset_exists: () => boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nWordCloud.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", WordCloud.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nWordCloud.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nWordCloud.prototype.publish(\"fontFamily\", \"Impact\", \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeFrom\", 6, \"number\", \"Minimum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeTo\", 48, \"number\", \"Maximum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleFrom\", -60, \"number\", \"Minimum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleTo\", 60, \"number\", \"Maximum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleCount\", 5, \"number\", \"Number of different angles\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"padding\", 0, \"number\", \"Padding between words (pixels)\", null, { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"scaleMode\", \"linear\", \"set\", \"Text scaling mode\", [\"linear\", \"log\", \"sqrt\", \"pow\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"spiral\", \"archimedean\", \"set\", \"Text scaling mode\", [\"archimedean\", \"rectangular\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"offsetX\", 0, \"number\", \"X offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"offsetY\", 0, \"number\", \"Y offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"zoom\", 1, \"number\", \"Zoom\", null, { tags: [\"Advanced\"] });\n"],"mappings":"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"}
1
+ {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","pi","Math","PI","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","_","path","constant$3","x","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","t","intersect","ax","ay","bx","by","kc","lc","centroid","a","Linear","_context","d3CurveLinear","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","n","defined0","lineStart","lineEnd","point","descending","NaN","identity$2","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","areaStart","_line","areaEnd","_point","_x","_y","j","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","CatmullRom","alpha","_alpha","_l01_a","_l12_a","_l23_a","_l01_2a","_l12_2a","_l23_2a","x23","y23","pow","m","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","px","py","i0","i1","identity$1","top","right","bottom","left","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","values","ticks","domain","format","identity","spacing","range","range0","range1","position","copy","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","select","text","merge","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Axis","_super","drawStartPosition","_this","_drawStartPos","updateScale","_type","timePattern","_timePattern","lowValue","parse","low","highValue","high","forceNumeric","map","parser","parseInvert","parserInvert","formatter","parseFormat","scalePos","retVal","d3Scale","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","_guideElement","d3Select","_class","domNode","element","svg","svgAxis","svgGuides","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings_1","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","d3TimeFormat","_prevOrientation","d3Axis","d3AxisLeft","d3Guides","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","length_1","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","value","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg_1","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr_1","getBoundingClientRect","calcOverflow","ignoreText","hidden","depth","tmpSvg","classID","tmpSvgG","shrinkToFit","_text","bandSize","re","words","split","reverse","lineNumber","fs","parseFloat","maxLinesPerBand","floor","minWordsPerLine","ceil","tspan","wordsOnLine","word","pop","join","getComputedTextLength","update","overlap","lowerPos","upperPos","padding","doPosition","svgLineBBox","svgText","title","svgTitleTransition","title_exists","classed","rerender","postUpdate","_element","publish","disable","SVGWidget","optional","XYAxis","_skipSelection","Utility","SimpleSelectionMixin","domainAxis","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","valueAxis","xyBrush","d3Brush","on","brushMoved","brushMoved2","xBrush","d3BrushX","yBrush","d3BrushY","resetSelection","_prevBrush","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","id","_selection","widgetElement","svgFocus","svgBrush","chartsEnter","resizeBrushHandle","e","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","xAxis","yAxis","calcMargin","_domNode","margin","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","xAxisTitle_exists","xAxisTitle","xAxisType","colLen_1","ordinalMappings_1","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","undefined","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","_prevXAxisType","tmp","ratio","move","focusChart","syncAxis","layers","copyPropsTo","layerIdx","_i","_a","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices_1","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","mixin","publishProxy","tags","yAxisType","Scatter","INDChart","ITooltip","xAxisGuideLines_default","yAxisGuideLines_default","xPos","yPos","interpolate","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","getScale","pointSizeScale","d3ScaleSqrt","pointColor","pointDarken","strokeColor","fillColor","lineColor","interpolateFill","interpolateDarken","areaColor","tooltipHTML","tooltipStyle","tooltipFormat","arr","color","rowIdx","series","pointSizeColumnIdx","switch","paletteID","useClonedPalette","cloneNotExists","_prevPointShape","pointShape","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","shape","mapShape","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","d3Area","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","showValue","__inputs","multi","implements","step","Area","interpolate_default","interpolateFill_default","Column","textLocal","d3Local","stackedTextLocal","skipBringToTop","_linearGap","adjustedData","retVal2","formatPct","showValueAsPercentFormat","dataLen","direction","columnScale","xAxisSeriesPaddingInner","domainSums","seriesSums","columnLength","rowData","showValueAsPercent","forEach","showDomainTotal","reduce","sum","hostData","axisSize","dataRow","dataRowIdx","columnGRect","columnGEnter","tooltipInnerTextEllipsedOnly","innerTextObj","isTruncated","domainLength","domainPos","upperValue","valueText","dm","dataMeta","seriesSum","domainSum","showValueFormat","upperValuePos","lowerValuePos","valueLength","innerTextHeight","innerTextFontSize","innerTextPadding","innerTextPadding_exists","dataRect","intersectRectRect","_rects","_texts","innerTextFontFamily_exists","innerTextFontFamily","textHeightOffset","showInnerText","innerText","clippedValueLength","calcInnerText","dataText","set","Text","colorStroke_default","noRoomInside","isOutside","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","padding_1","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","value4pos","stackedTotalText","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","innerText_1","letter","Bar","count","children","hierarchy","child","childs","root","Node","valued","nodes","defaultChildren","parent","eachBefore","computeHeight","copyData","eachAfter","callback","current","next","sort","compare","end","start","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","splice","descendants","leaves","links","source","enclose","circles","array","random","shuffle","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","f","required","constantZero","defaultRadius","radiusLeaf","radius","packChildren","aa","ca","sj","sk","packEnclose","translateChild","Bubble","I2DChart","labelWidgets","d3Pack","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","BubbleXY","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","t2","time","Infinity","sleep","nap","poke","delay","clearTimeout","clearInterval","setInterval","bulvarRanges","ranges","bulvarMarkers","markers","bulvarMeasures","measures","bulvarWidth","restart","stop","Bullet","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","vertical","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","w1","i2","measure","marker","d3TimerFlush","d3Bullet","keys","HTMLWidget","ascending","constant$1","contains","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","q","collinear","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","index","endIndex","unshift","isorings","polygon","coordinates","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","adder","Adder","reset","add","temp","bv","av","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","polygonStart","polygonEnd","geoStream","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","result","areaPointFirst","areaPoint","pathArea","boundsStream","bounds","boundsStream$1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","pathMeasure","PathString","_string","_circle","Contour","xAxisType_default","contourData","weight","o","density","values0","Float32Array","values1","wi","shift","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","d3ContourDensity","contourBandwidth","_vals","minValue","maxValue","_dataMinWeight","_dataMaxWeight","projection","projectionStream","contextStream","pathBounds","geoPath","showContourFill","contourStrokeColor","contourStrokeWidth","I1DChart","Gantt","yAxisType_default","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","Annotation","_ref","_ref$x","_ref$y","nx","ny","_ref$dy","_ref$dx","_ref$color","subject","connector","note","className","_dx","_dy","_color","_className","setPosition","redrawSubject","clearComponents","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","_ref2","_ref3","json","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","setPositionWithAccessors","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorCurve","connectorData","createPoints","handles","cHandles","pointHandle","_ref$cx","_ref$cy","updatePoint","event","mapHandles","drag","components","anchors","diff","subjectCircle","_ref2$cx","_ref2$cy","circleHandles","updateRadius","_extends","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","_ref5","group","_ref5$r","container","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","rHandles","subjectRect","subjectThreshold","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","ytopcorner","xleft","ytop","circlebg","fill","pointer","notCornerPointerXY","v","bHandles","subjectBadge","_subject$components","_subject$handles","stroke","dragSubject","connectorParams","diffY","diffX","xe","ye","opposite","connectorElbow","connectorLine","_connector$components","_connector$handles","endType","_ref$scale","angleOffset","atan","connectorArrow","endScale","connectorDot","dot","line$$1","_this3","noteData","noteParams","lineType","noteVertical","noteHorizontal","_note$components","_note$handles","_this4","dragNote","dragging","dragstarted","dragended","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","settings","_this6","babelHelpers.get","getPrototypeOf","babelHelpers.extends","d3NoteText","_Type","params","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","_typeof","d3Callout","d3CalloutElbow","ThresholdMap","newWithClass","lineHeight","selector","yOffset","value2Angle","pointOnArc","indicatorTween","newAngle","inner","d3Interpolate","rotation","indicatorTranslate","arcTween","startInterpolate","endInterpolate","Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","tip","_tooltipG","interrupt","_centerText","datum","xOffset","annotationtip","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","_usageArc","valueDescription","_freeArc","_meanArc","tickValueDescription","_mainTooltip","appendIndicator","_indInner","_indOuter","_bottomText","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","point2","Pie","_minLabelTop","_maxLabelBottom","d3Pie","sortValues","pie","arcs","pa","d3LabelArc","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","_smallValueLabelHeight","minOuterRadius","_labelWidthLimit","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","truncate","len","labelWidth","showSeriesValue","_seriesValueFormatter","showSeriesPercentage","_totalValue","perc","_seriesPercentageFormatter","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","_quadIdxArr","_labelPositions","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","HalfPie","_pos","_target","SVGElement","_widgetScale","Heat","radiusX","radiusY","_domForeignObject","_domCanvas","_heat","simpleheat","maxWeight","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","canvas","_canvas","getElementById","_ctx","getContext","_width","_height","_max","_data","Palette","rainbow","rX","rY","ellipse","_ellipse","_createCanvas","ctx","rX2","_r","rY2","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","clearRect","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","thirdPi","angles","HexBin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","_hexbin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","d3HexBin","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","Line","QuarterPie","QuartileCandlestick","_g","_leftLine","_rightLine","_midLine","_midOuterRect","_midInnerRect1","_midInnerRect2","_q0text","_q1text","_q2text","_q3text","_q4text","_q0val","_q1val","_q2val","_q3val","_q4val","valueSize","lineWidth","domainSize","edgePadding","candleWidth","candleWidth_exists","roundedCorners","q0x","q1x","q2x","q3x","dataTop","dataBottom","upperTextRotation","lowerTextRotation","textPadding","labelFontSize","sz","q4x","transX","transY","rotate","textScale","labelAnchor","innerRectColor","showValues","Radar","setPointAttributes","half_size_1","half_h","half_w","domain_points","degrees2radians","max_label_h","max_label_w","isize","labels","max_val","xy","polar2cartesian","labelPaddingRatio","text_anchor","domains","value_guides","valueGuideRatios","mult","poly_points","domain_point","row_idx","value_guide_text","series_polygons","fillOpacity","col_idx","val_mult","point_elm","data_row","row_obj","pointElement","theta","cartesian2polar","radians2degrees","point_in_polygon","vs","inside","RadialBar","_domainScale","_valueScale","_radialAxis","_axialAxis","_arcs","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","palette","ordinal","StatChart","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","_tickFormatter","quartile","formatQ","mode","_mean","_standardDeviation","quartiles","_quartiles","_selectMode","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","num","strVal","TEXT","HTML","Summary","_playIntervalIdx","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","moreIconIdx","moreTextIdx","iconFieldIdx","valueFieldIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","_mainDiv","_headerDiv","_textDiv","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","context_1","_renderCount","SummaryC","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","iconOpacity","iconBaseline","fontSizeMult","getTextOffsetY","drawIcon","faChar","iconAnchor","valueOpacity","labelOpacity","CanvasWidget","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","board","tag","dxdy","startX","startY","maxDelta","dt","cloudCollide","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","strokeStyle","textAlign","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","archimedean","rectangular","WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","_root","_d3Zoom","d3Zoom","scaleExtent","evt","zoomed","_d3Cloud","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","trim","toLowerCase"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-shape/src/curve/natural.js","../../../node_modules/d3-shape/src/curve/step.js","../../../node_modules/d3-axis/src/array.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../../../node_modules/d3-shape/src/area.js","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../../../node_modules/d3-hierarchy/src/hierarchy/count.js","../../../node_modules/d3-hierarchy/src/hierarchy/index.js","../../../node_modules/d3-hierarchy/src/hierarchy/each.js","../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../node_modules/d3-hierarchy/src/hierarchy/path.js","../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../node_modules/d3-hierarchy/src/hierarchy/links.js","../../../node_modules/d3-hierarchy/src/array.js","../../../node_modules/d3-hierarchy/src/pack/enclose.js","../../../node_modules/d3-hierarchy/src/pack/siblings.js","../../../node_modules/d3-hierarchy/src/accessors.js","../../../node_modules/d3-hierarchy/src/constant.js","../../../node_modules/d3-hierarchy/src/pack/index.js","../src/Bubble.ts","../src/BubbleXY.ts","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3v4-bullet/src/bullet.js","../src/Bullet.ts","../../../node_modules/d3-contour/src/array.js","../../../node_modules/d3-contour/src/ascending.js","../../../node_modules/d3-contour/src/constant.js","../../../node_modules/d3-contour/src/contains.js","../../../node_modules/d3-contour/src/noop.js","../../../node_modules/d3-contour/src/contours.js","../../../node_modules/d3-contour/src/area.js","../../../node_modules/d3-contour/src/blur.js","../../../node_modules/d3-contour/src/density.js","../../../node_modules/d3-geo/src/adder.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/identity.js","../../../node_modules/d3-geo/src/path/area.js","../../../node_modules/d3-geo/src/path/bounds.js","../../../node_modules/d3-geo/src/path/centroid.js","../../../node_modules/d3-geo/src/path/context.js","../../../node_modules/d3-geo/src/path/measure.js","../../../node_modules/d3-geo/src/path/string.js","../src/Contour.ts","../../../node_modules/d3-geo/src/path/index.js","../src/Gantt.ts","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/constant.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/math.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/arc.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/point.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/noop.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/basis.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/bundle.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinal.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/cardinalOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRom.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomClosed.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/catmullRomOpen.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/monotone.js","../../../node_modules/d3-svg-annotation/src/Annotation.js","../../../node_modules/d3-svg-annotation/src/AnnotationCollection.js","../../../node_modules/d3-svg-annotation/src/Note/alignment.js","../../../node_modules/d3-svg-annotation/src/Builder.js","../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/line.js","../../../node_modules/d3-svg-annotation/src/Connector/type-line.js","../../../node_modules/d3-svg-annotation/src/Connector/type-curve.js","../../../node_modules/d3-svg-annotation/src/Handles.js","../../../node_modules/d3-svg-annotation/src/Subject/circle.js","../../../node_modules/d3-svg-annotation/src/Types-d3.js","../../../node_modules/d3-svg-annotation/src/Subject/rect.js","../../../node_modules/d3-svg-annotation/src/Subject/threshold.js","../../../node_modules/d3-svg-annotation/src/Subject/badge.js","../../../node_modules/d3-svg-annotation/src/Connector/type-elbow.js","../../../node_modules/d3-svg-annotation/src/Connector/end-arrow.js","../../../node_modules/d3-svg-annotation/src/Connector/end-dot.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-vertical.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-horizontal.js","../src/Gauge.ts","../../../node_modules/d3-svg-annotation/src/Adapter-d3.js","../src/Pie.ts","../../../node_modules/d3-shape/src/pie.js","../src/HalfPie.ts","../src/Heat.ts","../../../node_modules/d3-hexbin/src/hexbin.js","../src/HexBin.ts","../src/Line.ts","../src/QuarterPie.ts","../src/QuartileCandlestick.ts","../src/Radar.ts","../src/RadialBar.ts","../src/StatChart.ts","../src/Step.ts","../src/Summary.ts","../src/SummaryC.ts","../src/D3Cloud.ts","../src/WordCloud.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/chart\";\nexport const PKG_VERSION = \"2.83.1\";\nexport const BUILD_VERSION = \"2.105.2\";\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 */\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\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","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\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 { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, axisRight as d3AxisRight, axisTop as d3AxisTop } from \"d3-axis\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleTime as d3ScaleTime } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Axis.css\";\n\nexport interface IOverflow {\n left: number;\n top: number;\n right: number;\n bottom: number;\n depth: number;\n tickOverlapModulus: number;\n}\n\nexport class Axis extends SVGWidget {\n protected parser;\n protected parserInvert;\n protected formatter: (date: Date) => string;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n\n @publish(\"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"])\n _type: string;\n type(): string;\n type(_: string): this;\n type(_?: string): string | this {\n if (!arguments.length) return this._type;\n this._type = _;\n this.updateScale();\n return this;\n }\n\n @publish(\"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" })\n _timePattern: string;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern(_?: string): string | this {\n if (!arguments.length) return this._timePattern;\n this._timePattern = _;\n this.updateScale();\n return this;\n }\n timePattern_exists: () => boolean;\n\n @publish(false, \"boolean\", \"Reverse\")\n reverse: publish<this, boolean>;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right - this.padding() : 0 + this.padding();\n\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n\n title: { (): string; (_: string): Axis; };\n orientation: { (): string; (_: string): Axis; };\n orientation_default: { (): string; (_: string): Axis; };\n powExponent: { (): number; (_: number): Axis; };\n logBase: { (): number; (_: number): Axis; };\n ordinals: { (): string[]; (_: string[]): Axis; };\n ordinals_exists: () => boolean;\n fontSize: { (): number; (_: number): Axis; };\n fontSize_exists: () => boolean;\n fontFamily: { (): string; (_: string): Axis; };\n tickCount: { (): number; (_: number): Axis; };\n tickFormat: { (): string; (_: string): Axis; };\n tickFormat_exists: () => boolean;\n tickLength: { (): number; (_: number): Axis; };\n tickLength_exists: () => boolean;\n ticks: { (): Array<{ value: string, label: string }>; (_: Array<{ value: string, label: string }>): Axis; };\n xAxisDomainLow: { (): string; (_: string): Axis; };\n xAxisDomainHigh: { (): string; (_: string): Axis; };\n low: { (): any; (_: any): Axis; };\n low_exists: () => boolean;\n high: { (): any; (_: any): Axis; };\n high_exists: () => boolean;\n overlapMode: { (): string; (_: string): Axis; };\n overlapMode_default: { (): string; (_: string): Axis; };\n labelRotation: { (): number; (_: number): Axis; };\n shrinkToFit: { (): string; (_: string): Axis; };\n shrinkToFit_default: { (): string; (_: string): Axis; };\n extend: { (): number; (_: number): Axis; };\n extend_default: { (): number; (_: number): Axis; };\n hidden: { (): boolean; (_: boolean): Axis; };\n}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n title_exists(): boolean;\n ordinalPaddingInner(): number;\n ordinalPaddingInner(_: number): this;\n ordinalPaddingOuter(): number;\n ordinalPaddingOuter(_: number): this;\n ordinalMappings(_: { [key: string]: string }): this;\n ordinalMappings(): { [key: string]: string };\n ordinalMappings_exists(): boolean;\n padding(): number;\n padding(_: number): this;\n}\n\nAxis.prototype.publish(\"title\", null, \"string\", \"Title\");\nAxis.prototype.publish(\"orientation\", \"bottom\", \"set\", \"Placement/orientation of the axis\", [\"left\", \"top\", \"right\", \"bottom\"]);\nAxis.prototype.publish(\"powExponent\", 2, \"number\", \"Power exponent (disabled when type is not 'pow')\", null, { disable: (w: any) => w.type() !== \"pow\" });\nAxis.prototype.publish(\"logBase\", 10, \"number\", \"Logarithmic base (disabled when type is not 'log')\", null, { disable: (w: any) => w.type() !== \"log\" });\nAxis.prototype.publish(\"ordinals\", [], \"array\", \"Array of ordinal values to display (disabled when type is not 'ordinal')\", null, { disable: (w: any) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"fontSize\", null, \"number\", \"Size of tick label font (pixels)\", null, { optional: true });\nAxis.prototype.publish(\"fontFamily\", null, \"string\", \"Font family of tick labels\", null, { optional: true });\nAxis.prototype.publish(\"tickCount\", null, \"number\", \"Number of ticks to display (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickFormat\", null, \"string\", \"Format rules for tick text (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickLength\", null, \"number\", \"Height (or width for left/right orientations) of the axis ticks (in pixels)\", null, { optional: true });\nAxis.prototype.publish(\"ticks\", [], \"array\", \"Custom tick labels\", null, { optional: true }); // TODO: What does this control?\nAxis.prototype.publish(\"low\", null, \"any\", \"Minimum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"high\", null, \"any\", \"Maximum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"overlapMode\", \"none\", \"set\", \"Specifies the behavior when tick labels overlap\", [\"none\", \"stagger\", \"hide\", \"rotate\", \"linebreak\", \"wrap\"]);\nAxis.prototype.publish(\"labelRotation\", 33, \"number\", \"Angle of rotation for tick labels (disabled when overlapMode is not 'rotate')\", null, { optional: true, disable: (w: any) => w.overlapMode() !== \"rotate\" });\nAxis.prototype.publish(\"shrinkToFit\", \"both\", \"set\", \"shrinkToFit\", [\"none\", \"low\", \"high\", \"both\"]); // TODO: What does this control?\nAxis.prototype.publish(\"extend\", 5, \"number\", \"Extend the axis range by this % beyond what is needed to display the data (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"hidden\", false, \"boolean\", \"Hides axis when 'true'\");\nAxis.prototype.publish(\"ordinalPaddingInner\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalPaddingOuter\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space before the first band and after the last band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalMappings\", null, \"object\", \"Alternative label mappings (icons)\", null, { optional: true });\nAxis.prototype.publish(\"padding\", 0, \"number\", \"Padding space at top of axis (pixels)\", null, { optional: true });\n","import { d3Event, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { max as d3Max, min as d3Min } from \"d3-array\";\nimport { brush as d3Brush, brushSelection as d3BrushSelection, brushX as d3BrushX, brushY as d3BrushY } from \"d3-brush\";\nimport { hsl as d3Hsl } from \"d3-color\";\nimport { Axis } from \"./Axis\";\n\nimport \"../src/XYAxis.css\";\n\nexport class XYAxis extends SVGWidget {\n protected domainAxis: Axis;\n protected valueAxis: Axis;\n protected xAxis: Axis;\n protected yAxis: Axis;\n protected xyBrush;\n protected xBrush;\n protected yBrush;\n protected margin;\n protected focusChart: XYAxis;\n _palette;\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.domainAxis = new Axis()\n .classed({ domain: true })\n .orientation_default(\"bottom\")\n .type(\"ordinal\")\n .overlapMode_default(\"stagger\")\n .shrinkToFit_default(\"high\")\n .extend_default(0)\n ;\n this.valueAxis = new Axis()\n .classed({ value: true })\n .orientation_default(\"left\")\n .type(\"linear\")\n .shrinkToFit_default(\"high\")\n ;\n\n this.xyBrush = d3Brush()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.xBrush = d3BrushX()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.yBrush = d3BrushY()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n }\n\n protected _prevBrush;\n resetSelection() {\n this._prevBrush = null;\n return this;\n }\n\n parseData(d) {\n return this.domainAxis.parse(d);\n }\n\n parseValue(d) {\n return this.valueAxis.parse(d, true);\n }\n\n formatData(d) {\n return this.domainAxis.format(d);\n }\n\n formatValue(d) {\n return this.valueAxis.format(d);\n }\n\n parsedData() {\n const retVal = this.data().map(function (row) {\n let prevValue = 0;\n return row.map(function (cell, idx) {\n if (idx === 0) {\n return this.parseData(cell);\n }\n if (idx >= this.columns().length) {\n return cell;\n }\n const _retVal = this.yAxisStacked() ? [prevValue, prevValue + this.parseValue(cell)] : this.parseValue(cell);\n prevValue += this.parseValue(cell);\n return _retVal;\n }, this);\n }, this);\n return retVal;\n }\n\n bandwidth() {\n return this.domainAxis.bandwidth();\n }\n\n protected svg;\n protected svgRegions;\n protected svgDomainGuide;\n protected svgValueGuide;\n protected svgData;\n protected svgDataClipRect;\n protected svgFocus;\n protected svgBrush;\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgRegions = element.append(\"g\");\n this.svgDomainGuide = this.svg.append(\"g\");\n this.svgValueGuide = this.svg.append(\"g\");\n this.svgData = this.svg.append(\"g\");\n\n this.svgDataClipRect = this.svg.append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clippath\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this.svgData = this.svg.append(\"g\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clippath)\")\n ;\n this._selection.widgetElement(this.svgData);\n\n this.svgFocus = element.append(\"g\");\n\n this.domainAxis\n .target(this.svg.node())\n .guideTarget(this.svgDomainGuide.node())\n ;\n\n this.valueAxis\n .target(this.svg.node())\n .guideTarget(this.svgValueGuide.node())\n ;\n\n this.svgBrush = element.append(\"g\")\n .attr(\"class\", \"brush\")\n ;\n this.chartsEnter(this, this.svgData, 250);\n }\n\n resizeBrushHandle(d, width, height) {\n let e;\n let x;\n let y;\n if (d.type === \"e\" || d.type === \"w\") {\n e = +(d.type === \"e\");\n x = e ? 1 : -1;\n y = height / 3;\n return \"M\" + (0.5 * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (0.5 * x) + \",\" + (2 * y) +\n \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8);\n } else {\n e = +(d.type === \"s\");\n y = e ? 1 : -1;\n x = width / 3;\n return \"M\" + x + \", \" + (0.5 * y) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (x + 6) + \",\" + (6.5 * y) +\n \"H\" + (2 * x - 6) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (2 * x) + \",\" + (0.5 * y) +\n \"Z\" +\n \"M\" + (x + 8) + \",\" + (2.5 * y) +\n \"H\" + (2 * x - 8) +\n \"M\" + (x + 8) + \",\" + (4.5 * y) +\n \"H\" + (2 * x - 8);\n }\n }\n\n private _skipSelection = false;\n skipSelection(): boolean;\n skipSelection(_: boolean): this;\n skipSelection(_?: boolean): boolean | this {\n if (!arguments.length) return this._skipSelection;\n this._skipSelection = _;\n return this;\n }\n\n brushMoved() {\n if (this._skipSelection) return;\n let selected = [];\n const context = this;\n const currSel: any = d3BrushSelection(this.svgBrush.node());\n if (currSel) {\n selected = this.data().filter(function (d) {\n const pos = context.dataPos(d[0]);\n if (context.use2dSelection()) {\n const pos2 = context.valuePos(d[1]) + context.valueAxis.bandwidth() / 2;\n return pos >= currSel[0][0] && pos <= currSel[1][0] && pos2 >= currSel[0][1] && pos2 <= currSel[1][1];\n } else {\n return pos >= currSel[0] && pos <= currSel[1];\n }\n });\n }\n this.selection(selected);\n }\n\n brushMoved2() {\n const isHorizontal = this.orientation() === \"horizontal\";\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n const s = d3Event().selection;\n if (s == null) {\n handlePath.attr(\"display\", \"none\");\n } else if (isHorizontal) {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + s[i] + \",\" + 0 + \")\");\n } else {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + 0 + \", \" + s[i] + \")\");\n }\n }\n\n dataPos(d) {\n return this.domainAxis.scalePos(d);\n }\n\n valuePos(d) {\n return this.valueAxis.scalePos(d);\n }\n\n getAxisSize(host: XYAxis): { width: number, height: number } {\n return {\n width: !this.xAxis ? host.xAxis.width() : this.xAxis.width(),\n height: !this.yAxis ? host.yAxis.width() : this.yAxis.height()\n };\n }\n\n calcMargin(_domNode, element, isHorizontal) {\n const margin = {\n top: !isHorizontal && this.selectionMode() ? 10 : 2,\n right: isHorizontal && (this.selectionMode() || this.xAxisFocus()) ? 10 : 2,\n bottom: (this.xAxisFocus() ? this.xAxisFocusHeight() : 0) + 2,\n left: 2\n };\n const width = this.width() - margin.left - margin.right;\n const height = this.height() - margin.top - margin.bottom;\n\n let xRight = 0;\n let xHeight = 30;\n let yTop = 0;\n let yWidth = 30;\n for (let i = 0; i < 10; ++i) {\n this.xAxis.width(width - yWidth).height(0);\n const xAxisOverlap = this.xAxis.calcOverflow(element);\n const newXHeight = xAxisOverlap.depth;\n\n this.yAxis.width(0).height(height - xHeight);\n const yAxisOverlap = this.yAxis.calcOverflow(element);\n const newYWidth = yAxisOverlap.depth;\n\n xRight = xAxisOverlap.right;\n yTop = yAxisOverlap.top;\n\n if (newXHeight === xHeight && newYWidth === yWidth) {\n break;\n }\n xHeight = newXHeight;\n yWidth = newYWidth;\n }\n this.xAxis\n .x(width / 2 + yWidth / 2 + margin.left)\n .y(height + margin.top)\n .width(width - yWidth)\n ;\n this.yAxis\n .x(margin.left)\n .y(height / 2 - xHeight / 2 + margin.top)\n .height(height - xHeight)\n ;\n margin.left += yWidth;\n margin.top += yTop;\n margin.right += xRight;\n margin.bottom += xHeight;\n return margin;\n }\n\n updateRegions(_domNode, _element, isHorizontal) {\n const context = this;\n\n const regions = this.svgRegions.selectAll(\".region\").data(this.regions());\n regions.enter().append(\"rect\")\n .attr(\"class\", \"region\")\n ;\n if (isHorizontal) {\n regions\n .attr(\"x\", function (d) { return context.dataPos(d.x0); })\n .attr(\"y\", 0)\n .attr(\"width\", function (d) { return context.dataPos(d.x1) - context.dataPos(d.x0); })\n .attr(\"height\", this.height())\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n } else {\n regions\n .attr(\"x\", 0)\n .attr(\"y\", function (d) { return context.dataPos(d.x0); })\n .attr(\"width\", this.width())\n .attr(\"height\", function (d) { return context.dataPos(d.x0) - context.dataPos(d.x1); })\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n }\n regions.exit().remove();\n }\n\n protected _prevXAxisType;\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const isHorizontal = this.orientation() === \"horizontal\";\n this.updateRegions(domNode, element, isHorizontal);\n\n this.domainAxis\n .orientation(isHorizontal ? \"bottom\" : \"left\")\n .title(this.xAxisTitle_exists() ? this.xAxisTitle() : this.columns()[0])\n ;\n this.valueAxis\n .orientation(isHorizontal ? \"left\" : \"bottom\")\n ;\n this.xAxis = isHorizontal ? this.domainAxis : this.valueAxis;\n this.yAxis = isHorizontal ? this.valueAxis : this.domainAxis;\n\n // Update Domain ---\n switch (this.xAxisType()) {\n case \"ordinal\":\n const colLen = this.columns().length;\n const ordinalMappings = {};\n this.domainAxis\n .ordinals(this.data().map(function (d) {\n ordinalMappings[d[0]] = context.xAxisOrdinalMapping(d, d[colLen]);\n return d[0];\n }))\n .ordinalMappings(ordinalMappings)\n ;\n\n break;\n default:\n const domainMin = this.xAxisDomainLow() ? this.xAxisDomainLow() : this.domainAxis.parseInvert(d3Min(this.parsedData(), function (data) {\n return data[0];\n }));\n const domainMax = this.xAxisDomainHigh() ? this.xAxisDomainHigh() : this.domainAxis.parseInvert(d3Max(this.parsedData(), function (data) {\n return data[0];\n }));\n if (domainMin !== undefined && domainMax !== undefined) {\n this.domainAxis\n .low(domainMin)\n .high(domainMax)\n ;\n }\n break;\n }\n\n const min = this.yAxisDomainLow() ? this.yAxisDomainLow() : this.valueAxis.parseInvert(d3Min(this.parsedData(), function (data: any[]) {\n return d3Min(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[0] : d; });\n }));\n const max = this.yAxisDomainHigh() ? this.yAxisDomainHigh() : this.valueAxis.parseInvert(d3Max(this.parsedData(), function (data: any[]) {\n return d3Max(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[1] : d; });\n }));\n this.valueAxis\n .low(min)\n .high(max)\n ;\n\n // Calculate Margins ---\n this.margin = this.calcMargin(domNode, element, isHorizontal);\n\n // Update Range ---\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n const maxCurrExtent = isHorizontal ? width : height;\n const maxOtherExtent = isHorizontal ? height : width;\n\n // Render ---\n this.domainAxis\n .tickLength(this.xAxisGuideLines() ? maxOtherExtent : 0)\n .render()\n ;\n this.valueAxis\n .tickLength(this.yAxisGuideLines() ? maxCurrExtent : 0)\n .render()\n ;\n\n this.svgDataClipRect\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this.svgData.transition()\n .attr(\"transform\", \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\")\n ;\n\n this.updateBrush(width, height, maxCurrExtent, isHorizontal);\n this.updateFocusChart(domNode, element, this.margin, width, height, isHorizontal);\n this.chartsUpdate(width, height, 250);\n if (this.selectionMode()) {\n return this.brushMoved();\n }\n }\n\n updateBrush(width, height, maxCurrExtent, isHorizontal) {\n const currBrush = this.use2dSelection() ? this.xyBrush : isHorizontal ? this.xBrush : this.yBrush;\n const prevBrushSel: any = d3BrushSelection(this.svgBrush.node());\n currBrush.extent([[0, 0], [width, height]]);\n this.svgBrush\n .attr(\"transform\", \"translate(\" + this.margin.left + \", \" + this.margin.top + \")\")\n .style(\"display\", this.selectionMode() ? null : \"none\")\n .call(currBrush)\n ;\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n handlePath.enter().append(\"path\")\n .attr(\"class\", \"handle--custom\")\n .merge(handlePath)\n .attr(\"cursor\", isHorizontal ? \"ew-resize\" : \"ns-resize\")\n .attr(\"d\", (d) => this.resizeBrushHandle(d, width, height))\n ;\n\n if (this.selectionMode()) {\n if (this._prevXAxisType !== this.xAxisType()) {\n this._prevXAxisType = this.xAxisType();\n this._prevBrush = null;\n }\n if (this._prevBrush) {\n if (prevBrushSel) {\n if (this._prevBrush.orientation !== this.orientation()) {\n const tmp = prevBrushSel[0];\n prevBrushSel[0] = this._prevBrush.maxCurrExtent - prevBrushSel[1];\n prevBrushSel[1] = this._prevBrush.maxCurrExtent - tmp;\n }\n const ratio = maxCurrExtent / this._prevBrush.maxCurrExtent;\n if (ratio !== 1) {\n this.svgBrush.transition()\n .on(\"start\", function () {\n currBrush.on(\"end\", null);\n })\n .call(currBrush.move, [prevBrushSel[0] * ratio, prevBrushSel[1] * ratio])\n .on(\"end\", () => {\n currBrush.on(\"end\", () => {\n return this.brushMoved();\n });\n })\n ;\n }\n }\n } else {\n this.svgBrush\n .call(currBrush.move, [0, maxCurrExtent])\n ;\n }\n this._prevBrush = {\n orientation: this.orientation(),\n maxCurrExtent\n };\n }\n }\n\n updateFocusChart(domNode, element, margin, width, height, isHorizontal) {\n const context: XYAxis = this;\n const focusChart = this.svgFocus.selectAll(\"#\" + this.id() + \"_focusChart\").data(this.xAxisFocus() ? [true] : []);\n focusChart.enter().append(\"g\")\n .attr(\"id\", this.id() + \"_focusChart\")\n .attr(\"class\", \"focus\")\n .each(function () {\n context.focusChart = new (context.constructor as any)()\n .target(this)\n ;\n context.focusChart.xBrush\n .on(\"brush.focus\", function () {\n context.syncAxis(width);\n context.chartsUpdate(width, height, 0);\n })\n ;\n context.focusChart\n .layers(context.layers().map((w: any) => new w.constructor()))\n ;\n })\n .merge(focusChart)\n .each(function (this: SVGElement) {\n context.copyPropsTo(context.focusChart, [\"layers\"]);\n let layerIdx = 0;\n for (const layer of context.layers()) {\n layer.copyPropsTo(context.focusChart.layers()[layerIdx]);\n layerIdx++;\n }\n context.focusChart\n .xAxisFocus(false)\n .selectionMode(true)\n .skipSelection(true)\n .orientation(\"horizontal\")\n .xAxisGuideLines(false)\n .xAxisDomainLow(null)\n .xAxisDomainHigh(null)\n .yAxisGuideLines(false)\n .x(context.width() / 2)\n .y(context.height() - context.xAxisFocusHeight() / 2)\n .width(context.width())\n .height(context.xAxisFocusHeight())\n .columns(context.columns())\n .data(context.data())\n .render()\n ;\n context.syncAxis(width);\n })\n ;\n focusChart.exit()\n .each(function () {\n if (context.focusChart) {\n context.focusChart\n .target(null)\n ;\n delete context.focusChart;\n }\n })\n .remove()\n ;\n }\n\n syncAxis(width: number) {\n const currSel = d3BrushSelection(this.focusChart.svgBrush.node()) as [number, number];\n if (currSel) {\n if (this.focusChart.xAxisType() !== \"ordinal\") {\n this.xAxis.domain([this.focusChart.xAxis.invert(currSel[0]), this.focusChart.xAxis.invert(currSel[1])]);\n } else {\n const brushWidth = currSel[1] - currSel[0];\n const scale = brushWidth / width;\n this.xAxis.range([-currSel[0] / scale, (width - currSel[0]) / scale]);\n }\n this.xAxis.rerender();\n }\n }\n\n // Layers ---\n layerColumns(host: XYAxis): string[] {\n const masterColumns = host.columns();\n const retVal = super.columns().filter(col => col !== masterColumns[0]);\n if (!retVal.length) {\n return masterColumns;\n }\n return [masterColumns[0], ...retVal];\n }\n\n layerColumnIndices(host: XYAxis): number[] {\n const masterColumns = host.columns();\n const layerColumns = this.layerColumns(host);\n return layerColumns.map(col => masterColumns.indexOf(col));\n }\n\n layerColumnIndex(host: XYAxis, column: string): number {\n const masterColumns = host.columns();\n return masterColumns.indexOf(column);\n }\n\n layerData(host: XYAxis): any[][] {\n if (arguments.length === 1) {\n const indices = this.layerColumnIndices(host);\n return host.data().map(row => {\n const retVal = indices.map(idx => row[idx]);\n (retVal as any).__hpcc_origRow = row;\n return retVal;\n });\n }\n throw new Error(\"Setting data on XYAxisLayer is not supported.\");\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n }\n\n layerExit(host: XYAxis, element, duration: number = 250) {\n }\n\n chartsEnter(host: XYAxis, element, duration: number = 250) {\n this.layerEnter(this, element, duration);\n for (const w of this.layers()) {\n w[\"__xyAxisElement\"] = element.append(\"g\")\n .attr(\"class\", w.class())\n ;\n w\n .target(w[\"__xyAxisElement\"].node() as SVGElement)\n .layerEnter(this, element, duration)\n ;\n }\n }\n\n chartsUpdate(width, height, duration): void {\n this.layerUpdate(this, this.svgData, duration);\n for (const w of this.layers()) {\n w\n .resize({ width, height })\n .layerUpdate(this, w[\"__xyAxisElement\"], duration)\n ;\n }\n }\n\n exit(domNode, element) {\n this.valueAxis.target(null);\n this.domainAxis.target(null);\n super.exit(domNode, element);\n }\n\n selection(_selected) {\n const context = this;\n this._selection.widgetElement().selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = _selected.indexOf(d.origRow) >= 0;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context._selection.svgGlowID() && selected ? `url(#${context._selection.svgGlowID()})` : null)\n ;\n })\n ;\n\n const selRows = _selected.map(d => {\n return this.rowToObj(d);\n });\n setTimeout(() => {\n this.click(selRows, \"\", true);\n }, 0);\n }\n\n // XYAxis ---\n xAxisOrdinalMapping(origRow, lparam) {\n return origRow[0];\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // Selection ---\n _selection: Utility.SimpleSelection;\n}\nXYAxis.prototype._class += \" chart_XYAxis\";\nXYAxis.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface XYAxis {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n orientation_default(_: string);\n pointSizeColumn(): string;\n pointSizeColumn(_: string): this;\n pointSizeColumn_exists(): boolean;\n minPointSize(): number;\n minPointSize(_: number): this;\n maxPointSize(): number;\n maxPointSize(_: number): this;\n use2dSelection(): boolean;\n use2dSelection(_: boolean): this;\n selectionMode(): boolean;\n selectionMode(_: boolean): this;\n xAxisTitle(): string;\n xAxisTitle(_: string): this;\n xAxisTitle_exists(): boolean;\n xAxisTickCount(): number;\n xAxisTickCount(_: number): this;\n xAxisTickFormat(): string;\n xAxisTickFormat(_: string): this;\n xAxisTicks(): Array<{ value: string, label: string }>;\n xAxisTicks(_: Array<{ value: string, label: string }>): this;\n xAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n xAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n xAxisType_default(_: string);\n xAxisTypeTimePattern(): string;\n xAxisTypeTimePattern(_: string): this;\n xAxisDomainLow(): number | string;\n xAxisDomainLow(_: number | string): this;\n xAxisDomainHigh(): number | string;\n xAxisDomainHigh(_: number | string): this;\n xAxisFontSize(): number | string;\n xAxisFontSize(_: number | string): this;\n xAxisFontFamily(): string;\n xAxisFontFamily(_: string): this;\n xAxisOrdinalPaddingInner(): number;\n xAxisOrdinalPaddingInner(_: number): this;\n xAxisOrdinalPaddingOuter(): number;\n xAxisOrdinalPaddingOuter(_: number): this;\n xAxisOverlapMode(): \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\";\n xAxisOverlapMode(_: \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\"): this;\n xAxisLabelRotation(): number;\n xAxisLabelRotation(_: number): this;\n xAxisDomainPadding(): number;\n xAxisDomainPadding(_: number): this;\n xAxisGuideLines(): boolean;\n xAxisGuideLines(_: boolean): this;\n xAxisGuideLines_default(_: boolean);\n xAxisFocus(): boolean;\n xAxisFocus(_: boolean): this;\n xAxisFocusHeight(): number;\n xAxisFocusHeight(_: number): this;\n xAxisHidden(): boolean;\n xAxisHidden(_: boolean): this;\n xAxisHidden_default(_: boolean);\n yAxisTitle(): string;\n yAxisTitle(_: string): this;\n yAxisTickCount(): number;\n yAxisTickCount(_: number): this;\n yAxisTickFormat(): string;\n yAxisTickFormat(_: string): this;\n yAxisTicks(): Array<{ value: string, label: string }>;\n yAxisTicks(_: Array<{ value: string, label: string }>): this;\n yAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n yAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n yAxisType_default(_: string);\n yAxisTypeTimePattern(): string;\n yAxisTypeTimePattern(_: string): this;\n yAxisTypePowExponent(): number;\n yAxisTypePowExponent(_: number): this;\n yAxisTypeLogBase(): number;\n yAxisTypeLogBase(_: number): this;\n yAxisStacked(): boolean;\n yAxisStacked(_: boolean): this;\n yAxisDomainLow(): number | string;\n yAxisDomainLow(_: number | string): this;\n yAxisDomainHigh(): number | string;\n yAxisDomainHigh(_: number | string): this;\n yAxisDomainPadding(): number;\n yAxisDomainPadding(_: number): this;\n yAxisGuideLines(): boolean;\n yAxisGuideLines(_: boolean): this;\n yAxisGuideLines_default(_: boolean);\n yAxisHidden(): boolean;\n yAxisHidden(_: boolean): this;\n yAxisHidden_default(_: boolean);\n regions(): object[];\n regions(_: object[]): this;\n layers(): XYAxis[];\n layers(_: XYAxis[]): this;\n xAxisPadding(): number;\n xAxisPadding(_: number): this;\n yAxisPadding(): number;\n yAxisPadding(_: number): this;\n}\n\nXYAxis.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Selects orientation for the axis\", [\"horizontal\", \"vertical\"]);\nXYAxis.prototype.publish(\"pointSizeColumn\", null, \"string\", \"pointSizeColumn\", null, { optional: true });\nXYAxis.prototype.publish(\"minPointSize\", 6, \"number\", \"minPointSize\");\nXYAxis.prototype.publish(\"maxPointSize\", 26, \"number\", \"maxPointSize\");\nXYAxis.prototype.publish(\"use2dSelection\", false, \"boolean\", \"2D Range Selector\");\nXYAxis.prototype.publish(\"selectionMode\", false, \"boolean\", \"Range Selector\");\nXYAxis.prototype.publishProxy(\"xAxisTitle\", \"domainAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"xAxisTickCount\", \"domainAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"xAxisTickFormat\", \"domainAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"xAxisTicks\", \"domainAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"xAxisType\", \"domainAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"xAxisTypeTimePattern\", \"domainAxis\", \"timePattern\");\nXYAxis.prototype.publish(\"xAxisDomainLow\", null, \"string\", \"X-Axis Low\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"xAxisDomainHigh\", null, \"string\", \"X-Axis High\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"xAxisFontSize\", \"domainAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"xAxisFontFamily\", \"domainAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingInner\", \"domainAxis\", \"ordinalPaddingInner\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingOuter\", \"domainAxis\", \"ordinalPaddingOuter\");\nXYAxis.prototype.publishProxy(\"xAxisOverlapMode\", \"domainAxis\", \"overlapMode\");\nXYAxis.prototype.publishProxy(\"xAxisLabelRotation\", \"domainAxis\", \"labelRotation\");\nXYAxis.prototype.publishProxy(\"xAxisDomainPadding\", \"domainAxis\", \"extend\");\nXYAxis.prototype.publish(\"xAxisGuideLines\", false, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publish(\"xAxisFocus\", false, \"boolean\", \"X-Axis Focus\", null, { disable: (w: any) => w.orientation() !== \"horizontal\" });\nXYAxis.prototype.publish(\"xAxisFocusHeight\", 80, \"number\", \"X-Axis Focus Height\", null, { disable: (w: any) => !w.xAxisFocus() });\nXYAxis.prototype.publishProxy(\"xAxisHidden\", \"domainAxis\", \"hidden\");\nXYAxis.prototype.publishProxy(\"yAxisFontSize\", \"valueAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"yAxisFontFamily\", \"valueAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"yAxisTitle\", \"valueAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"yAxisTickCount\", \"valueAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"yAxisTickFormat\", \"valueAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"yAxisTicks\", \"valueAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"yAxisType\", \"valueAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"yAxisTypeTimePattern\", \"valueAxis\", \"timePattern\");\nXYAxis.prototype.publishProxy(\"yAxisTypePowExponent\", \"valueAxis\", \"powExponent\");\nXYAxis.prototype.publishProxy(\"yAxisTypeLogBase\", \"valueAxis\", \"logBase\");\nXYAxis.prototype.publish(\"yAxisStacked\", false, \"boolean\", \"Stacked Chart\", null, { tags: [\"Basic\"], disable: (w: any) => w.xAxisType() !== \"ordinal\" || w._class.indexOf(\"chart_Column\") < 0 });\nXYAxis.prototype.publish(\"yAxisDomainLow\", null, \"string\", \"Y-Axis Low\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"yAxisDomainHigh\", null, \"string\", \"Y-Axis High\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"yAxisDomainPadding\", \"valueAxis\", \"extend\");\nXYAxis.prototype.publish(\"yAxisGuideLines\", true, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publishProxy(\"yAxisHidden\", \"valueAxis\", \"hidden\");\nXYAxis.prototype.publish(\"regions\", [], \"array\", \"Regions\");\nXYAxis.prototype.publish(\"layers\", [], \"widgetArray\", \"Layers\", null, { render: false });\nXYAxis.prototype.publishProxy(\"xAxisPadding\", \"domainAxis\", \"padding\");\nXYAxis.prototype.publishProxy(\"yAxisPadding\", \"valueAxis\", \"padding\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport {\n area as d3Area,\n curveBasis as d3CurveBasis, curveBundle as d3CurveBundle, curveCardinal as d3CurveCardinal, curveCatmullRom as d3curveCatmullRom, curveLinear as d3CurveLinear,\n curveMonotoneX as d3CurveMonotoneX, curveNatural as d3CurveNatural, curveStep as d3CurveStep, curveStepAfter as d3CurveStepAfter, curveStepBefore as d3CurveStepBefore,\n line as d3Line\n} from \"d3-shape\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Scatter.css\";\n\nexport class Scatter extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n private curve(): any {\n switch (this.interpolate()) {\n case \"linear\":\n return d3CurveLinear;\n case \"step\":\n return d3CurveStep;\n case \"step-before\":\n return d3CurveStepBefore;\n case \"step-after\":\n return d3CurveStepAfter;\n case \"basis\":\n return d3CurveBasis;\n case \"bundle\":\n return d3CurveBundle;\n case \"cardinal\":\n return d3CurveCardinal;\n case \"catmullRom\":\n return d3curveCatmullRom;\n case \"natural\":\n return d3CurveNatural;\n case \"monotone\":\n default:\n return d3CurveMonotoneX;\n }\n }\n\n private getScale() {\n switch (this.pointSizeScale()) {\n case \"linear\":\n return d3ScaleLinear();\n case \"pow\":\n return d3ScalePow().exponent(2);\n case \"log\":\n return d3ScaleLog();\n case \"sqrt\":\n return d3ScaleSqrt();\n }\n }\n\n protected pointColor(row, col, value, origRow) {\n if (this.interpolate() && this.pointDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected lineColor(row, col, value, origRow) {\n if (this.interpolateFill() && this.interpolateDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected areaColor(row, col, value, origRow) {\n return this.fillColor(row, col, value, origRow);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.label,\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: context.data()[d.rowIdx][i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n }\n })\n ;\n }\n\n protected _prevPointShape;\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n const isHorizontal = host.orientation() === \"horizontal\";\n const height = isHorizontal ? this.height() : this.width();\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this._prevPointShape !== this.pointShape()) {\n element.selectAll(\".data\").remove();\n this._prevPointShape = this.pointShape();\n }\n\n function mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n const usePointSizeColumn = this.pointSizeColumn_exists();\n let pointSizeColumnIdx;\n let extent;\n let scale;\n if (usePointSizeColumn) {\n pointSizeColumnIdx = this.columns().indexOf(this.pointSizeColumn());\n extent = d3Extent(this.data(), d => d[pointSizeColumnIdx]);\n scale = this.getScale().domain(extent);\n }\n const layerColumns = this.layerColumns(host);\n const layerData = this.layerData(host);\n const flatData = this.flattenData(layerColumns, layerData).map(function (d) {\n d.shape = mapShape(context.pointShape());\n d.column = layerColumns[d.colIdx];\n d.row = layerData[d.rowIdx];\n d.origRow = (layerData[d.rowIdx] as any).__hpcc_origRow;\n if (extent) {\n d.size = scale(d.row[pointSizeColumnIdx]) * (context.maxPointSize() - context.minPointSize()) + context.minPointSize();\n return d.column === context.pointSizeColumn() ? false : d;\n } else {\n d.size = context.pointSize();\n return d;\n }\n\n }).filter(d => d);\n\n const areas = element.selectAll(\".area\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && context.interpolateFill() && idx > 0; }));\n const areasEnter = areas.enter().append(\"path\");\n const area = d3Area()\n .curve(this.curve())\n ;\n if (isHorizontal) {\n area\n .x(function (d) { return context.xPos(host, d); })\n .y0(Math.min(height, this.yPos(host, { value: 0 })))\n .y1(function (d) { return context.yPos(host, d); })\n ;\n } else {\n area\n .y(function (d) { return context.yPos(host, d); })\n .x0(Math.max(0, this.xPos(host, { value: 0 })))\n .x1(function (d) { return context.xPos(host, d); })\n ;\n }\n areasEnter.merge(areas)\n .attr(\"class\", d => \"area series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n element\n .attr(\"d\", area(flatData.filter(function (d2) { return d2.colIdx === idx + 1; })))\n .style(\"opacity\", context.interpolateFillOpacity())\n .style(\"stroke\", \"none\")\n .style(\"fill\", context.areaColor([], _d, undefined, []))\n ;\n });\n areas.exit().remove();\n\n const lines = element.selectAll(\".line\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && idx > 0; }));\n const linesEnter = lines.enter().append(\"path\");\n const line = d3Line()\n .x(function (d) { return context.xPos(host, d); })\n .y(function (d) { return context.yPos(host, d); })\n .curve(this.curve())\n ;\n linesEnter.merge(lines)\n .attr(\"class\", d => \"line series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n const data2 = flatData.filter(function (d2) { return d2.colIdx === idx + 1; });\n element\n .attr(\"d\", line(data2))\n .style(\"stroke\", context.lineColor([], _d, undefined, []))\n .style(\"fill\", \"none\")\n ;\n });\n lines.exit().remove();\n\n const points = element.selectAll(\".point\").data(flatData, function (d, idx) { return d.shape + \"_\" + idx; });\n points.enter().append(\"g\")\n .each(function (this: SVGElement, d2) {\n const element = d3Select(this);\n element\n .append(d2.shape)\n .attr(\"class\", \"pointShape\")\n ;\n element\n .append(\"text\")\n .attr(\"class\", \"pointValue\")\n .style(\"display\", \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .attr(\"fill\", function (d: any, _idx) {\n const useTextColor = context.valueBaseline() === \"middle\" || context.valueBaseline() === \"central\";\n return useTextColor ? context.textColor(d.row, d.column, d.value, d.origRow) : null;\n })\n ;\n element\n .append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any, _idx) {\n context.click(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n ;\n })\n .merge(points)\n .attr(\"class\", d => \"point series series-\" + this.cssTag(d.column))\n .each(function (this: SVGElement, d2) {\n const textSelection = d3Select(this).select(\".pointValue\");\n textSelection\n .attr(\"x\", function (d) { return context.xPos(host, d); })\n .attr(\"y\", function (d) { return context.yPos(host, d); })\n .style(\"display\", context.showValue() ? \"block\" : \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .text(function (d) {\n return d[\"value\"];\n })\n ;\n const elementSelection = d3Select(this).select(\".pointSelection\");\n elementSelection\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size)\n ;\n\n const element = d3Select(this).select(\".pointShape\");\n switch (d2.shape) {\n case \"rect\":\n element\n .attr(\"x\", function (d) { return context.xPos(host, d) - d2.size / 2; })\n .attr(\"y\", function (d) { return context.yPos(host, d) - d2.size / 2; })\n .attr(\"width\", d2.size)\n .attr(\"height\", d2.size)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"circle\":\n element\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size * 0.9)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"path\":\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2);\n })\n .style(\"stroke\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n default:\n }\n })\n ;\n points.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n paletteID: { (): string; (_: string): Scatter; };\n useClonedPalette: { (): boolean; (_: boolean): Scatter; };\n pointSizeScale: { (): string; (_: string): Scatter; };\n pointShape: { (): string; (_: string): Scatter; };\n pointSize: { (): number; (_: number): Scatter; };\n interpolate: { (): string; (_: string): Scatter; };\n interpolate_default: { (): string; (_: string): Scatter; };\n interpolateFill: { (): boolean; (_: boolean): Scatter; };\n interpolateFill_default: { (): boolean; (_: boolean): Scatter; };\n interpolateFillOpacity: { (): number; (_: number): Scatter; };\n\n // INDChart\n _palette;\n fillColor: (row, column, value, origRow) => string;\n strokeColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\nexport interface Scatter {\n valueAnchor(): string;\n valueAnchor(_: string): this;\n valueBaseline(): string;\n valueBaseline(_: string): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n pointDarken(): boolean;\n pointDarken(_: boolean): this;\n interpolateDarken(): boolean;\n interpolateDarken(_: boolean): this;\n}\nScatter.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Scatter.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nScatter.prototype.publish(\"pointSizeScale\", \"linear\", \"set\", \"pointSizeScale\", [\"linear\", \"pow\", \"log\", \"sqrt\"]);\nScatter.prototype.publish(\"pointShape\", \"cross\", \"set\", \"Shape of the data points\", [\"circle\", \"rectangle\", \"cross\"]);\nScatter.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nScatter.prototype.publish(\"interpolate\", \"\", \"set\", \"Interpolate Data\", [\"\", \"linear\", \"step\", \"step-before\", \"step-after\", \"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"natural\", \"monotone\"]);\nScatter.prototype.publish(\"pointDarken\", true, \"boolean\", \"If true, and interpolate is set, then points will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolate() });\nScatter.prototype.publish(\"interpolateDarken\", true, \"boolean\", \"If true, and interpolateFill is true, then lines will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolateFill() });\nScatter.prototype.publish(\"interpolateFill\", false, \"boolean\", \"If true, the area between the line and zero will be filled\");\nScatter.prototype.publish(\"interpolateFillOpacity\", 0.66, \"number\", \"Fill interpolation Opacity\", null, { range: { min: 0, step: 0.01, max: 1 } });\nScatter.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nScatter.prototype.publish(\"showValue\", false, \"boolean\");\nScatter.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nScatter.prototype.publish(\"valueBaseline\", \"ideographic\", \"set\", \"alignment-baseline for shown value text\", [\"auto\", \"baseline\", \"before-edge\", \"text-before-edge\", \"middle\", \"central\", \"after-edge\", \"text-after-edge\", \"ideographic\", \"alphabetic\", \"hanging\", \"mathematical\", \"inherit\"]);\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import { Scatter } from \"./Scatter\";\n\nexport class Area extends Scatter {\n constructor() {\n super();\n this\n .interpolate_default(\"linear\")\n .interpolateFill_default(true)\n ;\n }\n}\nArea.prototype._class += \" chart_Area\";\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, Text } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Column.css\";\n\nexport class Column extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n protected _linearGap: number;\n private textLocal = d3Local<Text>();\n private stackedTextLocal = d3Local<Text>();\n private isHorizontal: boolean;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n\n this._selection.skipBringToTop(true);\n\n this._linearGap = 25.0;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.row[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: d.row[i + 1]\n };\n })\n });\n default:\n let value = d.row[d.idx];\n if (value instanceof Array) {\n value = value[1] - value[0];\n }\n return context.tooltipFormat({ label: d.row[0], series: context.layerColumns(host)[d.idx], value });\n }\n })\n ;\n }\n\n adjustedData(host: XYAxis) {\n const retVal = this.layerData(host).map(row => {\n let prevValue = 0;\n return row.map((cell, idx) => {\n if (idx === 0) {\n return cell;\n }\n if (idx >= this.layerColumns(host).length) {\n return cell;\n }\n const retVal2 = host.yAxisStacked() ? [prevValue, prevValue + cell] : cell;\n prevValue += cell;\n return retVal2;\n }, this);\n }, this);\n return retVal;\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const isHorizontal = host.orientation() === \"horizontal\";\n this.isHorizontal = isHorizontal;\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n const formatPct = d3Format(context.showValueAsPercentFormat());\n\n let dataLen = 10;\n let offset = 0;\n switch (host.xAxisType()) {\n case \"ordinal\":\n dataLen = host.bandwidth();\n offset = -dataLen / 2;\n break;\n case \"linear\":\n case \"time\":\n dataLen = Math.max(Math.abs(host.dataPos(2) - host.dataPos(1)) * (100 - this._linearGap) / 100, dataLen);\n offset = -dataLen / 2;\n break;\n default:\n }\n\n this.tooltip.direction(isHorizontal ? \"n\" : \"e\");\n\n const columnScale = d3ScaleBand()\n .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; }))\n .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0])\n .paddingInner(this.xAxisSeriesPaddingInner())\n .paddingOuter(0)\n ;\n let domainSums = [];\n const seriesSums = [];\n const columnLength = this.columns().length;\n const rowData = this.data();\n if (this.showValue() && this.showValueAsPercent() === \"series\") {\n rowData.forEach((row) => {\n row.filter((_, idx) => idx > 0 && idx < columnLength).forEach((col, idx) => {\n if (seriesSums[idx + 1] === undefined) {\n seriesSums[idx + 1] = 0;\n }\n seriesSums[idx + 1] += col;\n });\n });\n }\n\n if (this.showDomainTotal() || (this.showValue() && this.showValueAsPercent() === \"domain\")) {\n domainSums = rowData.map(row => {\n return row.filter((cell, idx) => idx > 0 && idx < columnLength).reduce((sum, cell) => {\n return sum + cell;\n }, 0);\n });\n }\n\n const column = element.selectAll(\".dataRow\")\n .data(this.adjustedData(host))\n ;\n const hostData = host.data();\n const axisSize = this.getAxisSize(host);\n column.enter().append(\"g\")\n .attr(\"class\", \"dataRow\")\n .merge(column)\n .each(function (dataRow, dataRowIdx) {\n const element = d3Select(this);\n\n const columnGRect = element.selectAll(\".dataCell\").data(dataRow.filter(function (_d, i) { return i < context.layerColumns(host).length; }).map(function (d, i) {\n return {\n column: context.layerColumns(host)[i],\n row: dataRow,\n origRow: hostData[dataRowIdx],\n value: d,\n idx: i\n };\n }).filter(function (d) { return d.value !== null && d.idx > 0; }), (d: any) => d.column);\n\n const columnGEnter = columnGRect\n .enter().append(\"g\")\n .attr(\"class\", \"dataCell\")\n .on(\"mouseout.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.hide.apply(context, arguments);\n }\n })\n .on(\"mousemove.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.show.apply(context, arguments);\n }\n })\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n context.click(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n context.dblclick(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .style(\"opacity\", 0)\n .each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"class\", \"columnRect series series-\" + context.cssTag(d.column))\n ;\n element.append(\"text\")\n .attr(\"class\", \"columnRectText\")\n .style(\"stroke\", \"transparent\")\n ;\n })\n ;\n columnGEnter.transition().duration(duration)\n .style(\"opacity\", 1)\n ;\n const domainLength = host.yAxisStacked() ? dataLen : columnScale.bandwidth();\n columnGEnter.merge(columnGRect as any).each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n const domainPos = host.dataPos(dataRow[0]) + (host.yAxisStacked() ? 0 : columnScale(d.column)) + offset;\n const upperValue = d.value instanceof Array ? d.value[1] : d.value;\n let valueText = d.origRow[d.idx];\n if (context.showValue()) {\n const dm = context.dataMeta();\n switch (context.showValueAsPercent()) {\n case \"series\":\n const seriesSum = typeof dm.sum !== \"undefined\" ? dm.sum : seriesSums[d.idx];\n valueText = formatPct(valueText / seriesSum);\n break;\n case \"domain\":\n const domainSum = typeof dm.sum !== \"undefined\" ? dm.sum : domainSums[dataRowIdx];\n valueText = formatPct(valueText / domainSum);\n break;\n case null:\n default:\n valueText = d3Format(context.showValueFormat())(valueText);\n break;\n }\n }\n const upperValuePos = host.valuePos(upperValue);\n const lowerValuePos = host.valuePos(d.value instanceof Array ? d.value[0] : 0);\n const valuePos = Math.min(lowerValuePos, upperValuePos);\n const valueLength = Math.abs(upperValuePos - lowerValuePos);\n\n const innerTextHeight = context.innerTextFontSize();\n const innerTextPadding = context.innerTextPadding_exists() ? context.innerTextPadding() : innerTextHeight / 2.5;\n\n const dataRect = context.intersectRectRect(\n {\n x: isHorizontal ? domainPos : valuePos,\n y: isHorizontal ? valuePos : domainPos,\n width: isHorizontal ? domainLength : valueLength,\n height: isHorizontal ? valueLength : domainLength\n },\n {\n x: 0,\n y: 0,\n width: axisSize.width,\n height: axisSize.height\n }\n );\n\n const _rects = element.select(\"rect\").transition().duration(duration)\n .style(\"fill\", (d: any) => context.fillColor(d.row, d.column, d.value, d.origRow))\n ;\n\n if (isHorizontal) {\n _rects\n .attr(\"x\", domainPos)\n .attr(\"y\", valuePos)\n .attr(\"width\", domainLength)\n .attr(\"height\", valueLength)\n ;\n } else {\n _rects\n .attr(\"y\", domainPos)\n .attr(\"x\", valuePos)\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n }\n const _texts = element.select(\"text\").transition().duration(duration)\n .style(\"font-size\", innerTextHeight + \"px\")\n .style(\"fill\", (d: any) => context.textColor(d.row, d.column, d.value, d.origRow))\n ;\n\n _texts.style(\"font-family\", context.innerTextFontFamily_exists() ? context.innerTextFontFamily() : null);\n\n const padding = context.innerTextPadding_exists() ? context.innerTextPadding() : 8;\n\n const textHeightOffset = innerTextHeight / 2.7;\n\n if (isHorizontal) { // Column\n const y = dataRect.y + dataRect.height - innerTextPadding;\n _texts\n .attr(\"x\", domainPos + (domainLength / 2))\n .attr(\"y\", y + textHeightOffset)\n .attr(\"transform\", `rotate(-90, ${domainPos + (domainLength / 2)}, ${y})`)\n ;\n } else { // Bar\n _texts\n .attr(\"x\", dataRect.x + padding)\n .attr(\"y\", domainPos + (domainLength / 2) + textHeightOffset)\n ;\n }\n _texts\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n if (context.showInnerText()) {\n _texts\n .text((d: any) => {\n const innerText = context.innerText(d.origRow, d.origRow[columnLength], d.idx);\n if (innerText) {\n const clippedValueLength = isHorizontal ? dataRect.height : dataRect.width;\n const innerTextObj = context.calcInnerText(clippedValueLength, innerText, valueText);\n d.innerTextObj = innerTextObj;\n\n return innerTextObj.text;\n }\n return \"\";\n })\n ;\n }\n const dataText = element.selectAll(\".dataText\").data(context.showValue() ? [`${upperValue}`] : []);\n const dataTextEnter = dataText.enter().append(\"g\")\n .attr(\"class\", \"dataText\")\n .each(function (this: SVGElement, d) {\n context.textLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n dataTextEnter.merge(dataText as any)\n .each(function (this: SVGElement) {\n const pos = { x: 0, y: 0 };\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(valueText, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(valueText) >= 0;\n\n let valueAnchor = context.valueAnchor() ? context.valueAnchor() : isHorizontal ? \"middle\" : \"start\";\n\n const leftSpace = dataRect.x;\n const rightSpace = axisSize.width - (dataRect.x + dataRect.width);\n const topSpace = dataRect.y;\n const bottomSpace = axisSize.height - (dataRect.y + dataRect.height);\n\n let noRoomInside;\n let isOutside;\n let noRoomOnExpectedSide;\n\n if (d.innerTextObj) {\n const { padding, valueTextWidth } = d.innerTextObj;\n isOutside = false;\n if (isHorizontal) { // Column\n valueAnchor = \"middle\";\n pos.x = domainPos + (domainLength / 2);\n\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.y = valuePos - padding - (valueFontSize / 2);\n } else {\n pos.y = valuePos + padding + (valueFontSize / 2);\n }\n } else { // Bar\n valueAnchor = \"start\";\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.x = (valueLength + valuePos) + padding;\n } else {\n pos.x = (valueLength + valuePos) - valueTextWidth - padding;\n }\n pos.y = domainPos + (domainLength / 2);\n }\n } else {\n /*\n IF this.valueCentered() and NO ROOM INSIDE\n ...then ASSUME THERES ROOM OUTSIDE\n IF NO ROOM OUTSIDE ON EXPECTED SIDE\n ...then ASSUME THERES ROOM ON THE OPPOSITE SIDE\n */\n if (isHorizontal) { // Column\n noRoomInside = dataRect.height < textSize.height;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.x = dataRect.x + (dataRect.width / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = topSpace < textSize.height + padding;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y + dataRect.height + textSize.height;\n }\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n noRoomOnExpectedSide = bottomSpace < textSize.height;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n pos.y = dataRect.y + textSize.height + padding;\n }\n }\n } else {\n pos.y = dataRect.y + (dataRect.height / 2);\n }\n } else { // Bar\n noRoomInside = dataRect.width < textSize.width;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.y = dataRect.y + (dataRect.height / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = rightSpace < textSize.width + padding;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width / 2) + padding;\n }\n } else {\n noRoomOnExpectedSide = leftSpace < textSize.width;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n }\n } else {\n pos.x = dataRect.x + (dataRect.width / 2);\n }\n }\n }\n const textColor = isOutside ? null : context.textColor(d.row, d.column, d.value, d.origRow);\n\n // Prevent overlapping labels on stacked columns\n const columns = context.columns();\n const hideValue = (context.yAxisStacked() && noRoomInside) ||\n (isOutside && context.yAxisStacked() && columns.indexOf(d.column) !== columns.length - 1);\n context.textLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(`${valueText}`)\n .colorFill(textColor)\n .visible(context.showValue() && !hideValue)\n .render()\n ;\n\n });\n dataText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n columnGRect.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove()\n ;\n\n const value4pos = host.yAxisStacked() ? domainSums[dataRowIdx] : Math.max(...dataRow.filter((_, idx) => idx > 0 && idx < columnLength));\n const stackedTotalText = element.selectAll(\".stackedTotalText\").data(context.showDomainTotal() ? [domainSums[dataRowIdx]] : []);\n const stackedTotalTextEnter = stackedTotalText.enter().append(\"g\")\n .attr(\"class\", \"stackedTotalText\")\n .each(function (this: SVGElement, d) {\n context.stackedTextLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n stackedTotalTextEnter.merge(stackedTotalText as any)\n .each(function (this: SVGElement, d: any) {\n const pos = { x: 0, y: 0 };\n const domainPos = host.dataPos(dataRow[0]);\n const valuePos = host.valuePos(value4pos);\n\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(d, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(d) >= 0;\n let valueAnchor: \"start\" | \"middle\" | \"end\" = \"middle\";\n if (isHorizontal) {\n pos.x = domainPos;\n if (isPositive) {\n pos.y = valuePos - textSize.height / 2;\n } else {\n pos.y = valuePos + textSize.height / 2;\n }\n } else {\n valueAnchor = \"start\";\n pos.y = domainPos;\n if (isPositive) {\n pos.x = valuePos + textSize.width / 2;\n } else {\n pos.x = valuePos - textSize.width / 2;\n }\n }\n\n context.stackedTextLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(d)\n .render()\n ;\n\n });\n stackedTotalText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n column.exit().transition().duration(duration)\n .remove()\n ;\n }\n\n calcInnerText(offset, innerText, valueText) {\n\n const fontFamily = this.innerTextFontFamily_exists() ? this.innerTextFontFamily() : \"Verdana\";\n const fontSize = this.innerTextFontSize();\n const valueFontFamily = this.valueFontFamily_exists() ? this.valueFontFamily() : \"Verdana\";\n const valueFontSize = this.valueFontSize();\n const padding = this.innerTextPadding_exists() ? this.innerTextPadding() : fontSize / 2.5;\n const valueTextWidth = this.isHorizontal ? valueFontSize : this.textSize(valueText, valueFontFamily, valueFontSize).width;\n const ellipsisWidth = this.textSize(\"...\", fontFamily, fontSize).width;\n const innerTextWidth = this.textSize(innerText, fontFamily, fontSize).width;\n const origInnerText = innerText;\n\n const fullWidth = (padding * 3) + innerTextWidth + valueTextWidth;\n const fullWidth2 = (padding * 3) + ellipsisWidth + valueTextWidth;\n const fullWidth3 = (padding * 1) + valueTextWidth;\n /*\n Categories:\n 1) room to display inner text (with padding) AND value text (with padding)\n 2) room to display ellipsis (with padding) AND value text (with padding)\n 3) room to display value text only (with padding)\n 4) no room to display any text except value on the outside\n */\n let category = 4;\n if (fullWidth < offset) {\n category = 1;\n } else if (fullWidth2 < offset) {\n const excessWidth = offset - fullWidth2;\n let _text = \"\";\n for (const letter of innerText) {\n if (this.textSize(_text + letter, fontFamily, fontSize).width > excessWidth) {\n innerText = _text + \"...\";\n break;\n } else {\n _text += letter;\n }\n }\n category = 2;\n } else if (fullWidth3 < offset) {\n innerText = \"\";\n category = 3;\n } else {\n innerText = \"\";\n }\n\n return {\n text: innerText,\n isTruncated: origInnerText !== innerText,\n padding,\n category,\n valueTextWidth\n };\n }\n\n innerText(origRow, lparam, idx): string {\n return origRow[0];\n }\n\n // INDChart ---\n _palette;\n fillColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nColumn.prototype._class += \" chart_Column\";\nColumn.prototype.implements(INDChart.prototype);\nColumn.prototype.implements(ITooltip.prototype);\n\nexport interface Column {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n showInnerText(): boolean;\n showInnerText(_: boolean): this;\n showValueFormat(): string;\n showValueFormat(_: string): this;\n showValueAsPercent(): null | \"series\" | \"domain\";\n showValueAsPercent(_: null | \"series\" | \"domain\"): this;\n showValueAsPercentFormat(): string;\n showValueAsPercentFormat(_: string): this;\n showDomainTotal(): boolean;\n showDomainTotal(_: boolean): this;\n valueCentered(): boolean;\n valueCentered(_: boolean): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueFontFamily(): string;\n valueFontFamily(_: string): this;\n valueFontFamily_exists(): boolean;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n xAxisSeriesPaddingInner(): number;\n xAxisSeriesPaddingInner(_: number): this;\n innerTextFontFamily(): string;\n innerTextFontFamily(_: string): this;\n innerTextFontFamily_exists(): boolean;\n innerTextFontSize(): number;\n innerTextFontSize(_: number): this;\n innerTextPadding(): number;\n innerTextPadding(_: number): this;\n innerTextPadding_exists(): boolean;\n tooltipInnerTextEllipsedOnly(): boolean;\n tooltipInnerTextEllipsedOnly(_: boolean): this;\n}\n\nColumn.prototype.publish(\"valueFontFamily\", null, \"string\", \"Font family of value text\", null, { optional: true });\nColumn.prototype.publish(\"valueFontSize\", 12, \"number\", \"Height of value text (pixels)\");\nColumn.prototype.publish(\"innerTextFontFamily\", null, \"string\", \"Font family of inner text\", null, { optional: true });\nColumn.prototype.publish(\"innerTextPadding\", 8, \"number\", \"Offset of inner text (pixels)\", null, { optional: true });\nColumn.prototype.publish(\"innerTextFontSize\", 12, \"number\", \"Height of inner text (pixels)\");\nColumn.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", () => Column.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nColumn.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nColumn.prototype.publish(\"showValue\", false, \"boolean\", \"Show Value in column\");\nColumn.prototype.publish(\"showInnerText\", false, \"boolean\", \"Show Label in column\");\nColumn.prototype.publish(\"showValueFormat\", \",\", \"string\", \"D3 Format for Value\", null, { disable: (w: Column) => !w.showValue() || !!w.showValueAsPercent() });\nColumn.prototype.publish(\"showValueAsPercent\", null, \"set\", \"If showValue is true, optionally show value as a percentage by Series or Domain\", [null, \"series\", \"domain\"], { disable: w => !w.showValue(), optional: true });\nColumn.prototype.publish(\"showValueAsPercentFormat\", \".0%\", \"string\", \"D3 Format for %\", null, { disable: (w: Column) => !w.showValue() || !w.showValueAsPercent() });\nColumn.prototype.publish(\"showDomainTotal\", false, \"boolean\", \"Show Total Value for Stacked Columns\", null);\nColumn.prototype.publish(\"valueCentered\", false, \"boolean\", \"Show Value in center of column\");\nColumn.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nColumn.prototype.publish(\"xAxisSeriesPaddingInner\", 0, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\");\nColumn.prototype.publish(\"tooltipInnerTextEllipsedOnly\", false, \"boolean\", \"Show tooltip only when inner text is truncated with an ellipsis\");\n\n/*\nconst origUseClonedPalette = Column.prototype.useClonedPalette;\nColumn.prototype.useClonedPalette = function (this: Column, _?) {\n const retVal = origUseClonedPalette.apply(this, arguments);\n if (arguments.length) {\n this._useClonedPalette = _;\n }\n return retVal;;\n}\n*/\n","import { Column } from \"./Column\";\n\nexport class Bar extends Column {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n }\n}\nBar.prototype._class += \" chart_Bar\";\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { FAChar, InputField, ISize, SVGWidget, Text, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Bubble.css\";\n\nexport class Bubble extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n labelWidgets;\n d3Pack;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.labelWidgets = {};\n\n this.d3Pack = d3Pack()\n .size([this.width(), this.height()])\n .padding(1.5)\n ;\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.d3Pack\n .size([this.width(), this.height()])\n ;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d[0]),\n value: d[1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n const root = d3Hierarchy({ children: this.cloneData() })\n .sum(function (d) { return d[1]; })\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n ;\n this.d3Pack(root);\n\n const node = element.selectAll(\".node\").data(root.children || [], d => d.data[0]);\n\n // Enter ---\n node.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"node series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.append(\"circle\")\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .attr(\"r\", 0)\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]] = new FAChar()\n .char(d.__viz_faChar)\n .target(this)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]] = new Text()\n .text(d.data[0])\n .target(this)\n .render()\n ;\n }\n })\n .merge(node).transition()\n .attr(\"opacity\", 1)\n .each(function (d) {\n const element2 = d3Select(this);\n const pos = { x: d.x, y: d.y };\n element2.select(\"circle\").transition()\n .attr(\"transform\", \"translate(\" + pos.x + \",\" + pos.y + \")\")\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n .attr(\"r\", d.r)\n .select(\"title\")\n .text(d.data[0] + \" (\" + d.data[1] + \")\")\n ;\n if (d.__viz_faChar) {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .render()\n ;\n } else {\n context.labelWidgets[d.data[0]]\n .pos(pos)\n .colorFill_default(context.textColor(d.data, context.columns()[1], d.data[1]))\n .width(d.r * 2)\n .text(d.data[0])\n .render()\n ;\n }\n })\n ;\n\n // Exit ---\n node.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n paletteID: { (): string; (_: string): Bubble; };\n useClonedPalette: { (): boolean; (_: boolean): Bubble; };\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n\n // SimpleSelectionMixin\n _selection;\n}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nBubble.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Bubble.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nBubble.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { Scatter } from \"./Scatter\";\n\nexport class BubbleXY extends Scatter {\n constructor() {\n super();\n }\n enter(domNode, element) {\n if (!this.pointSizeColumn_exists()) {\n this.pointSizeColumn(this.columns()[this.columns().length - 1]);\n }\n super.enter(domNode, element);\n }\n}\nBubbleXY.prototype._class += \" chart_BubbleXY\";\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 { descending as d3Descending } from \"d3-array\";\r\nimport { axisLeft as d3AxisLeft } from \"d3-axis\";\r\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { timerFlush as d3TimerFlush } from \"d3-timer\";\r\nimport \"d3-transition\";\r\n\r\nexport default function () {\r\n var orient = \"left\",\r\n reverse = false,\r\n vertical = false,\r\n ranges = bulvarRanges,\r\n markers = bulvarMarkers,\r\n measures = bulvarMeasures,\r\n width = 380,\r\n height = 30,\r\n xAxis = d3AxisLeft();\r\n\r\n // For each small multiple…\r\n function bulvar(g) {\r\n g.each(function (d, i) {\r\n var rangez = ranges.call(this, d, i).slice().sort(d3Descending),\r\n markerz = markers.call(this, d, i).slice().sort(d3Descending),\r\n measurez = measures.call(this, d, i).slice().sort(d3Descending),\r\n g2 = d3Select(this),\r\n extentX,\r\n extentY;\r\n\r\n var wrap = g2.select(\"g.wrap\");\r\n if (wrap.empty()) wrap = g2.append(\"g\").attr(\"class\", \"wrap\");\r\n\r\n if (vertical) {\r\n extentX = height, extentY = width;\r\n wrap.attr(\"transform\", \"rotate(90)translate(0,\" + -width + \")\");\r\n } else {\r\n extentX = width, extentY = height;\r\n wrap.attr(\"transform\", null);\r\n }\r\n\r\n // Compute the new x-scale.\r\n var x1 = d3ScaleLinear()\r\n .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])\r\n .range(reverse ? [extentX, 0] : [0, extentX]);\r\n\r\n // Retrieve the old x-scale, if this is an update.\r\n var x0 = this.__chart__ || d3ScaleLinear()\r\n .domain([0, Infinity])\r\n .range(x1.range());\r\n\r\n // Stash the new scale.\r\n this.__chart__ = x1;\r\n\r\n // Derive width-scales from the x-scales.\r\n var w0 = bulvarWidth(x0),\r\n w1 = bulvarWidth(x1);\r\n\r\n // Update the range rects.\r\n var range = wrap.selectAll(\"rect.range\")\r\n .data(rangez);\r\n\r\n range.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"range s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .merge(range)\r\n .transition(range)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY);\r\n\r\n // Update the measure rects.\r\n var measure = wrap.selectAll(\"rect.measure\")\r\n .data(measurez);\r\n\r\n measure.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"measure s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .attr(\"y\", extentY / 3)\r\n .merge(measure)\r\n .transition(measure)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"y\", extentY / 3);\r\n\r\n // Update the marker lines.\r\n var marker = wrap.selectAll(\"line.marker\")\r\n .data(markerz);\r\n\r\n marker.enter().append(\"line\")\r\n .attr(\"class\", \"marker\")\r\n .attr(\"x1\", x0)\r\n .attr(\"x2\", x0)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6)\r\n .merge(marker)\r\n .transition(marker)\r\n .attr(\"x1\", x1)\r\n .attr(\"x2\", x1)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6);\r\n\r\n var axis = g2.selectAll(\"g.axis\").data([0]);\r\n axis.enter().append(\"g\").attr(\"class\", \"axis\");\r\n axis.attr(\"transform\", vertical ? null : \"translate(0,\" + extentY + \")\")\r\n .call(xAxis.scale(x1));\r\n });\r\n d3TimerFlush();\r\n }\r\n\r\n // left, right, top, bottom\r\n bulvar.orient = function (_) {\r\n if (!arguments.length) return orient;\r\n orient = _ + \"\";\r\n reverse = orient === \"right\" || orient === \"bottom\";\r\n xAxis.orient((vertical = orient === \"top\" || orient === \"bottom\") ? \"left\" : \"bottom\"); // eslint-disable-line\r\n return bulvar;\r\n };\r\n\r\n // ranges (bad, satisfactory, good)\r\n bulvar.ranges = function (_) {\r\n if (!arguments.length) return ranges;\r\n ranges = _;\r\n return bulvar;\r\n };\r\n\r\n // markers (previous, goal)\r\n bulvar.markers = function (_) {\r\n if (!arguments.length) return markers;\r\n markers = _;\r\n return bulvar;\r\n };\r\n\r\n // measures (actual, forecast)\r\n bulvar.measures = function (_) {\r\n if (!arguments.length) return measures;\r\n measures = _;\r\n return bulvar;\r\n };\r\n\r\n bulvar.width = function (_) {\r\n if (!arguments.length) return width;\r\n width = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.height = function (_) {\r\n if (!arguments.length) return height;\r\n height = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.tickFormat = function (_) {\r\n if (!arguments.length) return xAxis.tickFormat();\r\n xAxis.tickFormat(_);\r\n return bulvar;\r\n };\r\n\r\n return bulvar;\r\n}\r\n\r\nfunction bulvarRanges(d) {\r\n return d.ranges;\r\n}\r\n\r\nfunction bulvarMarkers(d) {\r\n return d.markers;\r\n}\r\n\r\nfunction bulvarMeasures(d) {\r\n return d.measures;\r\n}\r\n\r\nfunction bulvarWidth(x) {\r\n var x0 = x(0);\r\n return function (d) {\r\n return Math.abs(x(d) - x0);\r\n };\r\n}\r\n","import { HTMLWidget, publish, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { bullet as d3Bullet } from \"d3v4-bullet\";\n\nimport \"../src/Bullet.css\";\n\nexport class Bullet extends HTMLWidget {\n @publish(null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true })\n titleColumn: publish<this, string>;\n @publish(null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true })\n subtitleColumn: publish<this, string>;\n @publish(null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true })\n rangesColumn: publish<this, string>;\n @publish(null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true })\n measuresColumn: publish<this, string>;\n @publish(null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true })\n markersColumn: publish<this, string>;\n\n private _hiddenColumns = {};\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n bulletData() {\n const context = this;\n this._hiddenColumns = {};\n const columns = this.columns();\n return this.data().map(function (row) {\n return {\n title: valueOf(row, this.titleColumn()),\n subtitle: valueOf(row, this.subtitleColumn()),\n ranges: valueOf(row, this.rangesColumn(), \"range\"),\n measures: valueOf(row, this.measuresColumn(), \"measure\"),\n markers: valueOf(row, this.markersColumn(), \"marker\"),\n origRow: row\n };\n }, this);\n\n function valueOf(row, column, columnType?) {\n const colIdx = columns.indexOf(column);\n if (colIdx >= 0) {\n if (row[colIdx] instanceof Array) {\n return row[colIdx];\n }\n return [row[colIdx]];\n }\n if (columnType) {\n context._hiddenColumns[columnType] = true;\n }\n return [0];\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow\", \"auto\");\n this._selection.widgetElement(element);\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n\n element.selectAll(\".axis\")\n .style(\"display\", \"none\")\n ;\n element.selectAll(\".range,.measure,.marker\")\n .style(\"display\", null)\n ;\n\n const margin = { left: 2, top: 8, right: 2, bottom: 8 };\n const width = this.width() - margin.left - margin.right;\n const height = 40 - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.bulletData());\n const svgUpdate = svg.enter().append(\"svg\")\n .attr(\"class\", \"bullet\")\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 element2 = d3Select(this);\n const bulletBar = element2.append(\"g\")\n .attr(\"class\", (d, i) => \"bulletBar series series-\" + context.cssTag(context.titleColumn()))\n ;\n const bulletTitle = bulletBar.append(\"g\")\n .attr(\"class\", \"bulletTitle\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"title\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"subtitle\")\n .attr(\"dy\", \"1em\")\n ;\n })\n .merge(svg)\n ;\n\n // Title ---\n const title = svgUpdate.select(\".bulletTitle\")\n .style(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(-6,\" + height / 2 + \")\")\n ;\n title.select(\".title\")\n .text(function (d) { return d.title; })\n ;\n title.select(\".subtitle\")\n .text(function (d) { return d.subtitle; })\n ;\n\n let titleWidth = 0;\n title.each(function () {\n const bbox = this.getBBox();\n if (bbox.width > titleWidth) {\n titleWidth = bbox.width;\n }\n });\n titleWidth; // Gap between title and bullet bar.\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\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}\nBullet.prototype._class += \" chart_Bullet\";\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import { I1DChart } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { contourDensity as d3ContourDensity } from \"d3-contour\";\nimport { geoPath } from \"d3-geo\";\nimport { XYAxis } from \"./XYAxis\";\n\nexport class Contour extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n\n this._palette = this._palette.switch(this.paletteID());\n\n const data = this.flattenData(this.layerColumns(host), this.layerData(host));\n const contourData = d3ContourDensity()\n .x(d => this.xPos(host, d))\n .y(d => this.yPos(host, d))\n .size([this.width(), this.height()])\n .bandwidth(this.contourBandwidth())(data)\n ;\n const _vals = contourData.map(d => d.value);\n const minValue = Math.min.apply(this, _vals);\n const maxValue = Math.max.apply(this, _vals);\n this._dataMinWeight = minValue;\n this._dataMaxWeight = maxValue;\n const lines = element.selectAll(\"path\").data(contourData);\n lines.enter().append(\"path\")\n .merge(lines)\n .attr(\"d\", geoPath())\n .attr(\"fill\", d => this.showContourFill() ? this._palette(d.value, minValue, maxValue) : \"none\")\n .attr(\"stroke\", this.contourStrokeColor())\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-width\", this.contourStrokeWidth())\n ;\n lines.exit().remove();\n }\n\n exit(_domNode, _element) {\n super.exit(_domNode, _element);\n }\n}\nContour.prototype._class += \" chart_Contour\";\nContour.prototype.implements(I1DChart.prototype);\n\nexport interface Contour {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showContourFill(): boolean;\n showContourFill(_: boolean): this;\n showContour(): boolean;\n showContour(_: boolean): this;\n contourBandwidth(): number;\n contourBandwidth(_: number): this;\n contourStrokeColor(): string;\n contourStrokeColor(_: string): this;\n contourStrokeWidth(): number;\n contourStrokeWidth(_: number): this;\n}\nContour.prototype.publish(\"paletteID\", \"YlGnBu\", \"string\", \"Color palette for this widget\");\nContour.prototype.publish(\"useClonedPalette\", true, \"boolean\", \"Enable or disable using a cloned palette\");\nContour.prototype.publish(\"showContourFill\", true, \"boolean\", \"Show/hide the contour background colors\");\nContour.prototype.publish(\"showContour\", true, \"boolean\", \"Show/hide the contour border lines\");\nContour.prototype.publish(\"contourBandwidth\", 40, \"number\", \"Controls the sensitivity of the contour grouping algorithm\");\nContour.prototype.publish(\"contourStrokeColor\", \"#2C3A47\", \"html-color\", \"Color of the contour border lines\");\nContour.prototype.publish(\"contourStrokeWidth\", 1, \"number\", \"Width of the contour border lines\");\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import { Bar } from \"./Bar\";\n\nexport class Gantt extends Bar {\n constructor() {\n super();\n\n this\n .orientation_default(\"vertical\")\n .xAxisType_default(\"ordinal\")\n .yAxisType_default(\"time\")\n ;\n }\n}\nGantt.prototype._class += \" chart_Gantt\";\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {epsilon, pi, halfPi, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = Math.abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * Math.cos(a0), r1 * Math.sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * Math.cos(a1), r0 * Math.sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : Math.sqrt(r0 * r0 + r1 * r1)),\n rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * Math.sin(ap)),\n p1 = asin(rp / r1 * Math.sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * Math.cos(a01),\n y01 = r1 * Math.sin(a01),\n x10 = r0 * Math.cos(a10),\n y10 = r0 * Math.sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * Math.cos(a11),\n y11 = r1 * Math.sin(a11),\n x00 = r0 * Math.cos(a00),\n y00 = r0 * Math.sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","export default class Annotation {\n constructor({\n x = 0,\n y = 0,\n nx,\n ny,\n dy = 0,\n dx = 0,\n color = \"grey\",\n data,\n type,\n subject,\n connector,\n note,\n disable,\n id,\n className\n }) {\n this._dx = nx !== undefined ? nx - x : dx\n this._dy = ny !== undefined ? ny - y : dy\n this._x = x\n this._y = y\n this._color = color\n this.id = id\n this._className = className || \"\"\n\n this._type = type || \"\"\n this.data = data\n\n this.note = note || {}\n this.connector = connector || {}\n this.subject = subject || {}\n\n this.disable = disable || []\n }\n\n updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition()\n if (\n this.type.subject &&\n this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0\n ) {\n this.type.redrawSubject()\n }\n }\n }\n\n clearComponents() {\n this.type.clearComponents && this.type.clearComponents()\n }\n\n get className() {\n return this._className\n }\n\n set className(className) {\n this._className = className\n if (this.type.setClassName) this.type.setClassName()\n }\n\n updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset()\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector()\n }\n\n this.type.redrawNote()\n }\n }\n\n get type() {\n return this._type\n }\n\n set type(type) {\n this._type = type\n this.clearComponents()\n }\n\n get x() {\n return this._x\n }\n set x(x) {\n this._x = x\n this.updatePosition()\n }\n\n get y() {\n return this._y\n }\n set y(y) {\n this._y = y\n this.updatePosition()\n }\n\n get color() {\n return this._color\n }\n set color(color) {\n this._color = color\n this.updatePosition()\n }\n\n get dx() {\n return this._dx\n }\n set dx(dx) {\n this._dx = dx\n this.updateOffset()\n }\n\n get dy() {\n return this._dy\n }\n set dy(dy) {\n this._dy = dy\n this.updateOffset()\n }\n\n set nx(nx) {\n this._dx = nx - this._x\n this.updateOffset()\n }\n\n set ny(ny) {\n this._dy = ny - this._y\n this.updateOffset()\n }\n\n get offset() {\n return { x: this._dx, y: this._dy }\n }\n\n set offset({ x, y }) {\n this._dx = x\n this._dy = y\n this.updateOffset()\n }\n\n get position() {\n return { x: this._x, y: this._y }\n }\n\n set position({ x, y }) {\n this._x = x\n this._y = y\n this.updatePosition()\n }\n\n get translation() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n }\n }\n\n get json() {\n const json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n }\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data\n if (this.type) json.type = this.type\n if (this._className) json.className = this._className\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector\n if (Object.keys(this.subject).length > 0) json.subject = this.subject\n if (Object.keys(this.note).length > 0) json.note = this.note\n\n return json\n }\n}\n","export default class AnnotationCollection {\n\n constructor ({ annotations, accessors, accessorsInverse }) {\n this.accessors = accessors\n this.accessorsInverse = accessorsInverse\n this.annotations = annotations\n }\n\n clearTypes (newSettings) {\n this.annotations.forEach(d => {\n d.type = undefined\n d.subject = newSettings && newSettings.subject || d.subject\n d.connector = newSettings && newSettings.connector || d.connector\n d.note = newSettings && newSettings.note || d.note\n })\n }\n\n setPositionWithAccessors () {\n this.annotations.forEach(d => {\n d.type.setPositionWithAccessors(this.accessors)\n })\n }\n\n editMode (editMode) { this.annotations.forEach(a => {\n if (a.type) {\n a.type.editMode = editMode\n a.type.updateEditMode()\n }\n })\n }\n\n updateDisable (disable) {\n this.annotations.forEach(a => {\n a.disable = disable\n if (a.type) {\n disable.forEach(d => {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove()\n a.type[d] = undefined\n }\n })\n }\n })\n }\n\n updateTextWrap (textWrap) {\n this.annotations.forEach(a => {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap)\n }\n })\n }\n\n updateText () {\n this.annotations.forEach(a => {\n if (a.type && a.type.drawText) {\n a.type.drawText()\n }\n })\n }\n\n updateNotePadding (notePadding) {\n this.annotations.forEach(a => {\n if (a.type) {\n a.type.notePadding = notePadding\n }\n })\n }\n\n get json () { \n return this.annotations.map(a => { \n const json = a.json\n if (this.accessorsInverse && a.data) {\n json.data = {}\n Object.keys(this.accessorsInverse).forEach(k => {\n json.data[k] = this.accessorsInverse[k]({ x: a.x, y: a.y})\n\n //TODO make this feasible to map back to data for other types of subjects\n })\n }\n return json\n })\n }\n\n get noteNodes () {\n return this.annotations.map(a => ({ ...a.type.getNoteBBoxOffset(), positionX: a.x, positionY: a.y }))\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n}\n","\nexport const leftRightDynamic = (align, y) => {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) { align = \"top\" }\n else { align = \"bottom\" } \n }\n return align\n}\n\nexport const topBottomDynamic = (align, x) => {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) { align = \"right\" }\n else { align = \"left\" } \n }\n return align\n}\n\nconst orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"]\nconst orientationLeftRight = [\"leftRight\", \"left\", \"right\"]\n\nexport default ({ padding=0, bbox={x:0, y:0, width:0, height:0}, align, orientation, offset={x:0, y:0} }) => {\n let x = -bbox.x \n let y = 0//-bbox.y\n if ( orientationTopBottom.indexOf(orientation) !== -1 ) {\n align = topBottomDynamic(align, offset.x)\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") { \n y -= bbox.height + padding\n } else {\n y += padding\n }\n\n if ( align === \"middle\" ) {\n x -= bbox.width/2\n } else if (align === \"right\" ) {\n x -= bbox.width\n } \n\n } else if ( orientationLeftRight.indexOf(orientation) !== -1 ) {\n align = leftRightDynamic(align, offset.y)\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") { \n x -= bbox.width + padding\n } else {\n x += padding\n }\n\n if ( align === \"middle\" ) {\n y -= bbox.height/2\n } else if (align === \"top\" ) {\n y -= bbox.height\n }\n } \n\n return { x, y }\n}","import { line, arc, curveLinear } from \"d3-shape\"\n\nexport const lineBuilder = ({ data, curve=curveLinear, canvasContext, className, classID }) => { \n const lineGen = line()\n .curve(curve)\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n if (canvasContext) {\n lineGen.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n builder.attrs = {\n d: lineGen(data)\n }\n }\n\n return builder\n}\n\nexport const arcBuilder = ({ data, canvasContext, className, classID }) => {\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n const arcShape = arc()\n .innerRadius(data.innerRadius || 0)\n .outerRadius(data.outerRadius || data.radius || 2)\n .startAngle(data.startAngle || 0)\n .endAngle(data.endAngle || 2*Math.PI)\n\n if (canvasContext) {\n arcShape.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n \n builder.attrs = {\n d: arcShape()\n }\n }\n\n return builder\n}","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import { lineBuilder } from '../Builder'\n\nexport const lineSetup = ({ type, subjectType }) => {\n let annotation = type.annotation\n let offset = annotation.position\n \n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n\n const subjectData = annotation.subject\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const h = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))\n const angle = Math.asin(-y2/h)\n const r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0)\n\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n\n }\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n\n return [[x1, y1], [x2, y2]]\n}\n\nexport default (connectorData) => {\n const data = lineSetup(connectorData)\n return { components: [lineBuilder({ data, className : \"connector\" })]} \n}","import { lineBuilder } from '../Builder'\nimport { event } from 'd3-selection'\nimport { lineSetup } from './type-line'\nimport { curveCatmullRom } from 'd3-shape'\nimport { pointHandle } from '../Handles'\n\nexport default ({ type, connectorData, subjectType }) => {\n\n if (!connectorData) { connectorData = {} }\n if (!connectorData.points || typeof connectorData.points === \"number\") { \n connectorData.points = createPoints(type.annotation.offset, connectorData.points) \n }\n if (!connectorData.curve) { connectorData.curve = curveCatmullRom }\n\n let handles = []\n\n if (type.editMode) {\n const cHandles = connectorData.points\n .map((c,i) => ({...pointHandle({cx: c[0], cy: c[1]}), index: i}))\n\n const updatePoint = (index) => { \n connectorData.points[index][0] += event.dx\n connectorData.points[index][1] += event.dy\n type.redrawConnector()\n }\n \n handles = type.mapHandles(cHandles\n .map(h => ({ ...h.move, drag: updatePoint.bind(type, h.index)})))\n\n }\n\n let data = lineSetup({ type, subjectType })\n data = [data[0], ...connectorData.points, data[1]]\n const components = [lineBuilder({ data, curve: connectorData.curve, className: \"connector\" })]\n\n return { components , handles }\n}\n\nconst createPoints = function ( offset, anchors=2) {\n const diff = { x: offset.x/(anchors + 1), y: offset.y/(anchors + 1) }\n const p = []\n\n let i = 1 \n for (; i <= anchors; i++) {\n p.push([diff.x*i + i%2*20, diff.y*i - i%2*20])\n }\n return p\n}","import { select } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\n\nexport const pointHandle = ({ cx = 0, cy = 0 }) => {\n return { move: { x: cx, y: cy } }\n}\n\nexport const circleHandles = ({ cx = 0, cy = 0, r1, r2, padding }) => {\n const h = { move: { x: cx, y: cy } }\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) }\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) }\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy }\n }\n\n return h\n}\n\nexport const rectHandles = ({\n x1 = 0,\n y1 = 0,\n x2 = x1,\n y2 = y1,\n width,\n height\n}) => {\n const w = width || Math.abs(x2 - x1)\n const h = height || Math.abs(y2 - y1)\n\n return {\n move: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.min(y1, y2) - 10\n },\n width: {\n x: Math.max(x1, x2),\n y: Math.min(y1, y2) + h / 2\n },\n height: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.max(y1, y2)\n }\n }\n}\n\nexport const lineHandles = ({ x1, y1, x2, y2, x, y }) => {\n const minY = Math.min(y1, y2)\n const minX = Math.min(x1, x2)\n\n const height = Math.abs(y2 - y1)\n const width = Math.abs(x2 - x1)\n\n return {\n move: {\n x: x || minX + width / 2,\n y: y || minY + height / 2\n }\n }\n}\n\n//arc handles\nexport const addHandles = ({ group, handles, r = 10 }) => {\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n const h = group.selectAll(\"circle.handle\").data(handles)\n\n h\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"handle\")\n .attr(\"fill\", \"grey\")\n .attr(\"fill-opacity\", 0.1)\n .attr(\"cursor\", \"move\")\n .attr(\"stroke-dasharray\", 5)\n .attr(\"stroke\", \"grey\")\n .call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => d.start && d.start(d))\n .on(\"drag\", d => d.drag && d.drag(d))\n .on(\"end\", d => d.end && d.end(d))\n )\n\n group\n .selectAll(\"circle.handle\")\n .attr(\"cx\", d => d.x)\n .attr(\"cy\", d => d.y)\n .attr(\"r\", d => d.r || r)\n .attr(\"class\", d => `handle ${d.className || \"\"}`)\n\n h.exit().remove()\n}\n","import { circleHandles } from \"../Handles\"\nimport { arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20\n }\n\n let handles = []\n const c = arcBuilder({ data: subjectData, className: \"subject\" })\n if (type.editMode) {\n const h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n })\n\n const updateRadius = attr => {\n const r = subjectData[attr] + event.dx * Math.sqrt(2)\n subjectData[attr] = r\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const cHandles = [\n {\n ...h.r1,\n drag: updateRadius.bind(\n type,\n subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\"\n )\n }\n ]\n\n if (subjectData.innerRadius) {\n cHandles.push({ ...h.r2, drag: updateRadius.bind(type, \"innerRadius\") })\n }\n handles = type.mapHandles(cHandles)\n }\n\n c.attrs[\"fill-opacity\"] = 0\n\n return { components: [c], handles }\n}\n","import { select, event } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\nimport { addHandles } from \"./Handles\"\n\n//Note options\nimport noteAlignment from \"./Note/alignment\"\nimport noteVertical from \"./Note/lineType-vertical\"\nimport noteHorizontal from \"./Note/lineType-horizontal\"\n\n//Connector options\nimport connectorLine from \"./Connector/type-line\"\nimport connectorElbow from \"./Connector/type-elbow\"\nimport connectorCurve from \"./Connector/type-curve\"\nimport connectorArrow from \"./Connector/end-arrow\"\nimport connectorDot from \"./Connector/end-dot\"\n\n//Subject options\nimport subjectCircle from \"./Subject/circle\"\nimport subjectRect from \"./Subject/rect\"\nimport subjectThreshold from \"./Subject/threshold\"\nimport subjectBadge from \"./Subject/badge\"\n\nexport class Type {\n constructor({ a, annotation, editMode, dispatcher, notePadding, accessors }) {\n this.a = a\n\n this.note =\n annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\")\n this.noteContent = this.note && a.select(\"g.annotation-note-content\")\n this.connector =\n annotation.disable.indexOf(\"connector\") === -1 &&\n a.select(\"g.annotation-connector\")\n this.subject =\n annotation.disable.indexOf(\"subject\") === -1 &&\n a.select(\"g.annotation-subject\")\n this.dispatcher = dispatcher\n\n if (dispatcher) {\n const handler = addHandlers.bind(null, dispatcher, annotation)\n handler({ component: this.note, name: \"note\" })\n handler({ component: this.connector, name: \"connector\" })\n handler({ component: this.subject, name: \"subject\" })\n }\n\n this.annotation = annotation\n this.editMode = annotation.editMode || editMode\n this.notePadding = notePadding !== undefined ? notePadding : 3\n this.offsetCornerX = 0\n this.offsetCornerY = 0\n\n if (accessors && annotation.data) {\n this.init(accessors)\n }\n }\n\n init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors)\n }\n if (!this.annotation.y) {\n this.mapY(accessors)\n }\n }\n\n mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data)\n }\n }\n\n mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data)\n }\n }\n\n updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove()\n }\n\n drawOnSVG(component, builders) {\n if (!Array.isArray(builders)) {\n builders = [builders]\n }\n\n builders\n .filter(b => b)\n .forEach(({ type, className, attrs, handles, classID }) => {\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles })\n } else {\n newWithClass(component, [this.annotation], type, className, classID)\n const el = component.select(`${type}.${classID || className}`)\n const addAttrs = Object.keys(attrs)\n const removeAttrs = []\n\n const currentAttrs = el.node().attributes\n for (let i = currentAttrs.length - 1; i >= 0; i--) {\n const name = currentAttrs[i].name\n if (addAttrs.indexOf(name) === -1 && name !== \"class\")\n removeAttrs.push(name)\n }\n\n addAttrs.forEach(attr => {\n if (attr === \"text\") {\n el.text(attrs[attr])\n } else {\n el.attr(attr, attrs[attr])\n }\n })\n\n removeAttrs.forEach(attr => el.attr(attr, null))\n }\n })\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\")\n }\n getNoteBBoxOffset() {\n const bbox = bboxWithoutHandles(this.note, \".annotation-note-content\")\n const transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g)\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy\n bbox.offsetX = this.annotation.dx\n bbox.offsetY = this.annotation.dy\n return bbox\n }\n\n drawSubject(context = {}) {\n const subjectData = this.annotation.subject\n const type = context.type\n const subjectParams = { type: this, subjectData }\n\n let subject = {}\n if (type === \"circle\") subject = subjectCircle(subjectParams)\n else if (type === \"rect\") subject = subjectRect(subjectParams)\n else if (type === \"threshold\") subject = subjectThreshold(subjectParams)\n else if (type === \"badge\")\n subject = subjectBadge(subjectParams, this.annotation)\n\n let { components = [], handles = [] } = subject\n components.forEach(c => {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = this.annotation.color\n }\n })\n\n if (this.editMode) {\n handles = handles.concat(\n this.mapHandles([{ drag: this.dragSubject.bind(this) }])\n )\n components.push({ type: \"handle\", handles })\n }\n\n return components\n }\n\n drawConnector(context = {}) {\n const connectorData = this.annotation.connector\n const type = connectorData.type || context.type\n const connectorParams = { type: this, connectorData }\n connectorParams.subjectType =\n this.typeSettings &&\n this.typeSettings.subject &&\n this.typeSettings.subject.type\n\n let connector = {}\n if (type === \"curve\") connector = connectorCurve(connectorParams)\n else if (type === \"elbow\") connector = connectorElbow(connectorParams)\n else connector = connectorLine(connectorParams)\n let { components = [], handles = [] } = connector\n const line = components[0]\n //TODO: genericize this into fill t/f stroke t/f\n if (line) {\n line.attrs.stroke = this.annotation.color\n line.attrs.fill = \"none\"\n }\n const endType = connectorData.end || context.end\n let end = {}\n if (endType === \"arrow\") {\n let s = line.data[1]\n const e = line.data[0]\n const distance = Math.sqrt(\n Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2)\n )\n if (distance < 5 && line.data[2]) {\n s = line.data[2]\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n })\n } else if (endType === \"dot\") {\n end = connectorDot({ line, scale: connectorData.endScale })\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove()\n }\n\n if (end.components) {\n end.components.forEach(c => {\n c.attrs.fill = this.annotation.color\n c.attrs.stroke = this.annotation.color\n })\n components = components.concat(end.components)\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles })\n }\n return components\n }\n\n drawNote(context = {}) {\n const noteData = this.annotation.note\n const align = noteData.align || context.align || \"dynamic\"\n const noteParams = {\n bbox: context.bbox,\n align,\n offset: this.annotation.offset\n }\n const lineType = noteData.lineType || context.lineType\n let note = {}\n if (lineType === \"vertical\") note = noteVertical(noteParams)\n else if (lineType === \"horizontal\") note = noteHorizontal(noteParams)\n\n let { components = [], handles = [] } = note\n components.forEach(c => {\n c.attrs.stroke = this.annotation.color\n })\n\n if (this.editMode) {\n handles = this.mapHandles([\n { x: 0, y: 0, drag: this.dragNote.bind(this) }\n ])\n components.push({ type: \"handle\", handles })\n\n const dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this)\n this.note.call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => start(d))\n .on(\"drag\", d => dragging(d))\n .on(\"end\", d => end(d))\n )\n } else {\n this.note.on(\"mousedown.drag\", null)\n }\n return components\n }\n\n drawNoteContent(context) {\n const noteData = this.annotation.note\n const padding =\n noteData.padding !== undefined ? noteData.padding : this.notePadding\n let orientation = noteData.orientation || context.orientation || \"topBottom\"\n const lineType = noteData.lineType || context.lineType\n const align = noteData.align || context.align || \"dynamic\"\n\n if (lineType === \"vertical\") orientation = \"leftRight\"\n else if (lineType === \"horizontal\") orientation = \"topBottom\"\n\n const noteParams = {\n padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation,\n align\n }\n const { x, y } = noteAlignment(noteParams)\n this.offsetCornerX = x + this.annotation.dx\n this.offsetCornerY = y + this.annotation.dy\n this.note && this.noteContent.attr(\"transform\", `translate(${x}, ${y})`)\n\n return []\n }\n\n drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction)\n }\n\n redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject())\n }\n\n redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector())\n }\n\n redrawNote(bbox = this.getNoteBBox()) {\n this.noteContent &&\n this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox }))\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox }))\n }\n\n setPosition() {\n const position = this.annotation.position\n this.a.attr(\"transform\", `translate(${position.x}, ${position.y})`)\n }\n\n clearComponents() {\n this.subject && this.subject.select(\"*\").remove()\n this.connector && this.connector.select(\"*\").remove()\n // this.note && this.note.select(\"*\").remove()\n }\n\n setOffset() {\n if (this.note) {\n const offset = this.annotation.offset\n this.note.attr(\"transform\", `translate(${offset.x}, ${offset.y})`)\n }\n }\n\n setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors)\n this.mapY(accessors)\n }\n this.setPosition()\n }\n\n setClassName() {\n this.a.attr(\n \"class\",\n `annotation ${this.className && this.className()} ${\n this.editMode ? \"editable\" : \"\"\n } ${this.annotation.className || \"\"}`\n )\n }\n\n draw() {\n this.setClassName()\n this.setPosition()\n this.setOffset()\n this.redrawSubject()\n this.redrawConnector()\n this.redrawNote()\n }\n\n dragstarted() {\n event.sourceEvent.stopPropagation()\n this.dispatcher &&\n this.dispatcher.call(\"dragstart\", this.a, this.annotation)\n this.a.classed(\"dragging\", true)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\")\n }\n dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation)\n this.a.classed(\"dragging\", false)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\")\n }\n\n dragSubject() {\n const position = this.annotation.position\n position.x += event.dx\n position.y += event.dy\n this.annotation.position = position\n }\n\n dragNote() {\n const offset = this.annotation.offset\n offset.x += event.dx\n offset.y += event.dy\n this.annotation.offset = offset\n }\n\n mapHandles(handles) {\n return handles.map(h => ({\n ...h,\n start: this.dragstarted.bind(this),\n end: this.dragended.bind(this)\n }))\n }\n}\n\nexport const customType = (initialType, typeSettings, init) => {\n return class customType extends initialType {\n constructor(settings) {\n super(settings)\n this.typeSettings = typeSettings\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(d => {\n this[d] && this[d].remove()\n\n this[d] = undefined\n if (d === \"note\") {\n this.noteContent = undefined\n }\n })\n }\n }\n\n static init(annotation, accessors) {\n super.init(annotation, accessors)\n if (init) {\n annotation = init(annotation, accessors)\n }\n return annotation\n }\n\n className() {\n return `${typeSettings.className ||\n super.className && super.className() ||\n \"\"}`\n }\n\n drawSubject(context) {\n this.typeSettings.subject = Object.assign(\n {},\n typeSettings.subject,\n this.typeSettings.subject\n )\n return super.drawSubject({ ...context, ...this.typeSettings.subject })\n }\n\n drawConnector(context) {\n this.typeSettings.connector = Object.assign(\n {},\n typeSettings.connector,\n this.typeSettings.connector\n )\n return super.drawConnector({\n ...context,\n ...typeSettings.connector,\n ...this.typeSettings.connector\n })\n }\n\n drawNote(context) {\n this.typeSettings.note = Object.assign(\n {},\n typeSettings.note,\n this.typeSettings.note\n )\n return super.drawNote({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n\n drawNoteContent(context) {\n return super.drawNoteContent({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n }\n}\n\nexport class d3NoteText extends Type {\n constructor(params) {\n super(params)\n this.textWrap = params.textWrap || 120\n this.drawText()\n }\n\n updateTextWrap(textWrap) {\n this.textWrap = textWrap\n this.drawText()\n }\n\n //TODO: add update text functionality\n\n drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\")\n\n const noteContent = this.note.select(\"g.annotation-note-content\")\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\")\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-label\"\n )\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-title\"\n )\n\n let titleBBox = { height: 0 }\n const label = this.a.select(\"text.annotation-note-label\")\n const wrapLength =\n this.annotation.note && this.annotation.note.wrap ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrap ||\n this.textWrap\n\n const wrapSplitter =\n this.annotation.note && this.annotation.note.wrapSplitter ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrapSplitter\n\n let bgPadding =\n this.annotation.note && this.annotation.note.bgPadding ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.bgPadding\n\n let bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 }\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n }\n } else if (bgPadding && typeof bgPadding === \"object\") {\n bgPaddingFinal = Object.assign(bgPaddingFinal, bgPadding)\n }\n\n if (this.annotation.note.title) {\n const title = this.a.select(\"text.annotation-note-title\")\n title.text(this.annotation.note.title)\n title.attr(\"fill\", this.annotation.color)\n title.attr(\"font-weight\", \"bold\")\n title.call(wrap, wrapLength, wrapSplitter)\n titleBBox = title.node().getBBox()\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\")\n label.call(wrap, wrapLength, wrapSplitter)\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0)\n label.attr(\"fill\", this.annotation.color)\n\n const bbox = this.getNoteBBox()\n\n this.a\n .select(\"rect.annotation-note-bg\")\n .attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right)\n .attr(\n \"height\",\n bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom\n )\n .attr(\"x\", bbox.x - bgPaddingFinal.left)\n .attr(\"y\", -bgPaddingFinal.top)\n .attr(\"fill\", \"white\")\n .attr(\"fill-opacity\", 0)\n }\n }\n}\n\nexport const d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n})\n\nexport const d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n})\n\nexport const d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n})\n\nexport const d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n})\n\nexport const d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nclass ThresholdMap extends d3Callout {\n mapY(accessors) {\n super.mapY(accessors)\n const a = this.annotation\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data)\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2\n }\n }\n\n mapX(accessors) {\n super.mapX(accessors)\n const a = this.annotation\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data)\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2\n }\n }\n}\n\nexport const d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n})\n\nexport const newWithClass = (a, d, type, className, classID) => {\n const group = a.selectAll(`${type}.${classID || className}`).data(d)\n group\n .enter()\n .append(type)\n .merge(group)\n .attr(\"class\", className)\n\n group.exit().remove()\n return a\n}\n\nconst addHandlers = (dispatcher, annotation, { component, name }) => {\n if (component) {\n component\n .on(\"mouseover.annotations\", () => {\n dispatcher.call(`${name}over`, component, annotation)\n })\n .on(\"mouseout.annotations\", () =>\n dispatcher.call(`${name}out`, component, annotation)\n )\n .on(\"click.annotations\", () =>\n dispatcher.call(`${name}click`, component, annotation)\n )\n }\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst wrap = (text, width, wrapSplitter, lineHeight = 1.2) => {\n text.each(function() {\n const text = select(this),\n words = text\n .text()\n .split(wrapSplitter || /[ \\t\\r\\n]+/)\n .reverse()\n .filter(w => w !== \"\")\n let word,\n line = [],\n tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", 0.8 + \"em\")\n\n while (word = words.pop()) {\n line.push(word)\n tspan.text(line.join(\" \"))\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst bboxWithoutHandles = (selection, selector = \":not(.handle)\") => {\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 }\n }\n\n return selection\n .selectAll(selector)\n .nodes()\n .reduce(\n (p, c) => {\n const bbox = c.getBBox()\n p.x = Math.min(p.x, bbox.x)\n p.y = Math.min(p.y, bbox.y)\n p.width = Math.max(p.width, bbox.width)\n\n const yOffset = c && c.attributes && c.attributes.y\n p.height = Math.max(\n p.height,\n (yOffset && parseFloat(yOffset.value) || 0) + bbox.height\n )\n return p\n },\n { x: 0, y: 0, width: 0, height: 0 }\n )\n}\n\nexport default {\n Type,\n d3Label,\n d3Callout,\n d3CalloutElbow,\n d3CalloutCurve,\n d3CalloutCircle,\n d3CalloutRect,\n d3XYThreshold,\n d3Badge,\n customType\n}\n","import { lineBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.width) {\n subjectData.width = 100\n }\n if (!subjectData.height) {\n subjectData.height = 100\n }\n\n let handles = []\n let { width, height } = subjectData\n\n const data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]]\n let rect = lineBuilder({ data, className: \"subject\" })\n\n if (type.editMode) {\n const updateWidth = () => {\n subjectData.width = event.x\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const updateHeight = () => {\n subjectData.height = event.y\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const rHandles = [\n { x: width, y: height / 2, drag: updateWidth.bind(type) },\n { x: width / 2, y: height, drag: updateHeight.bind(type) }\n ]\n\n handles = type.mapHandles(rHandles)\n }\n rect.attrs[\"fill-opacity\"] = 0.1\n return { components: [rect], handles }\n}\n","import { lineBuilder } from '../Builder'\n\n\nexport default ({ subjectData, type }) => {\n const offset = type.annotation.position\n\n let x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y\n\n const data = [[x1, y1], [x2, y2]]\n return { components: [lineBuilder({ data, className : 'subject'})]}\n}","import { lineBuilder, arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData = {}, type = {} }, annotation = {}) => {\n const typeSettings = type.typeSettings && type.typeSettings.subject\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius\n } else {\n subjectData.radius = 14\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y\n }\n }\n\n let handles = []\n const components = []\n const radius = subjectData.radius\n const innerRadius = radius * 0.7\n let x = 0\n let y = 0\n\n const notCornerOffset = Math.sqrt(2) * radius\n const placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n }\n\n if (subjectData.x && !subjectData.y) {\n x = placement[`x${subjectData.x}`]\n } else if (subjectData.y && !subjectData.x) {\n y = placement[`y${subjectData.y}`]\n } else if (subjectData.x && subjectData.y) {\n x = placement[`x${subjectData.x}corner`]\n y = placement[`y${subjectData.y}corner`]\n }\n\n const transform = `translate(${x}, ${y})`\n const circlebg = arcBuilder({ className: \"subject\", data: { radius } })\n circlebg.attrs.transform = transform\n circlebg.attrs.fill = annotation.color\n circlebg.attrs[\"stroke-linecap\"] = \"round\"\n circlebg.attrs[\"stroke-width\"] = \"3px\"\n\n const circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius }\n })\n\n circle.attrs.transform = transform\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\"\n circle.attrs.fill = \"white\"\n\n let pointer\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n })\n } else if (x || y) {\n const notCornerPointerXY = (v, sign = 1) =>\n v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2)\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [\n [0, 0],\n [notCornerPointerXY(x), notCornerPointerXY(y)],\n [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)],\n [0, 0]\n ]\n })\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color\n pointer.attrs[\"stroke-linecap\"] = \"round\"\n pointer.attrs[\"stroke-width\"] = \"3px\"\n components.push(pointer)\n }\n\n if (type.editMode) {\n const dragBadge = () => {\n subjectData.x =\n event.x < -radius * 2\n ? \"left\"\n : event.x > radius * 2 ? \"right\" : undefined\n subjectData.y =\n event.y < -radius * 2\n ? \"top\"\n : event.y > radius * 2 ? \"bottom\" : undefined\n\n type.redrawSubject()\n }\n\n const bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) }\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius\n }\n\n handles = type.mapHandles([bHandles])\n }\n\n let text\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x,\n y\n }\n }\n }\n\n components.push(circlebg)\n components.push(circle)\n components.push(text)\n\n return { components, handles }\n}\n","import { lineBuilder } from '../Builder'\n\nexport default ({ type, subjectType }) => {\n\n const annotation = type.annotation\n const offset = annotation.position\n\n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n const subjectData = annotation.subject\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n let data = [[x1, y1], [x2, y2]]\n\n let diffY = y2 - y1\n let diffX = x2 - x1\n let xe = x2 \n let ye = y2\n let opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2\n ye = y1 + diffX*opposite\n } else {\n ye = y2\n xe = x1 + diffY*opposite\n }\n \n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0)\n const length = r/Math.sqrt(2)\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length*(x2 < 0 ? -1 : 1)\n y1 = length*(y2 < 0 ? -1 : 1)\n data = [[x1, y1], [xe , ye ], [x2, y2]]\n\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n const angle = Math.asin(-y2/r)\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n data = [[ x1, y2], [x2, y2]]\n } else {\n const angle = Math.acos(x2/r)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n data = [[ x2, y1], [x2, y2]]\n }\n } else {\n data = [[x1, y1], [xe , ye], [x2, y2]]\n }\n\n return { components: [lineBuilder({ data, className: \"connector\"})]}\n}\n","import { lineBuilder } from \"../Builder\"\n\nexport default ({ annotation, start, end, scale = 1 }) => {\n const offset = annotation.position\n if (!start) {\n start = [annotation.dx, annotation.dy]\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]]\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y]\n }\n\n let x1 = end[0],\n y1 = end[1]\n\n let dx = start[0]\n let dy = start[1]\n\n let size = 10 * scale\n let angleOffset = 16 / 180 * Math.PI\n let angle = Math.atan(dy / dx)\n\n if (dx < 0) {\n angle += Math.PI\n }\n\n const data = [\n [x1, y1],\n [\n Math.cos(angle + angleOffset) * size + x1,\n Math.sin(angle + angleOffset) * size + y1\n ],\n [\n Math.cos(angle - angleOffset) * size + x1,\n Math.sin(angle - angleOffset) * size + y1\n ],\n [x1, y1]\n ]\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [\n lineBuilder({\n data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })\n ]\n }\n}\n","import { arcBuilder } from \"../Builder\"\n\nexport default ({ line, scale = 1 }) => {\n let dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n })\n dot.attrs.transform = `translate(${line.data[0][0]}, ${line.data[0][1]})`\n\n return { components: [dot] }\n}\n","import { lineBuilder } from '../Builder'\nimport { leftRightDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, bbox, offset }) => {\n align = leftRightDynamic(align, offset.y)\n\n if (align === \"top\") { y -= bbox.height } \n else if (align === \"middle\") { y -= bbox.height/2 }\n\n const data = [[x, y], [x, y + bbox.height]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\nimport { topBottomDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, offset, bbox }) => {\n align = topBottomDynamic(align, offset.x)\n\n if (align === \"right\") { x -= bbox.width }\n else if (align === \"middle\") { x -= bbox.width/2 }\n\n const data = [[x, y], [x + bbox.width, y]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate, interpolateHcl as d3InterpolateHcl } from \"d3-interpolate\";\nimport { scaleLinear } from \"d3-scale\";\nimport { Arc, arc as d3Arc, DefaultArcObject } from \"d3-shape\";\nimport { annotation as d3Annotation, annotationCalloutElbow } from \"d3-svg-annotation\";\n\nfunction value2Angle(value: number): number {\n return (value - 0.5) * .65 * 2 * Math.PI;\n}\n\nfunction pointOnArc(angle: number, radius: number): { x: number, y: number } {\n return {\n x: Math.cos(angle - Math.PI / 2) * radius,\n y: Math.sin(angle - Math.PI / 2) * radius\n };\n}\n\nfunction indicatorTranslate(angle: number, radius: number, inner: boolean = false) {\n const point = pointOnArc(angle, radius);\n const rotation = angle * 180 / Math.PI + (inner === true ? 180 : 0);\n return `translate(${point.x}, ${point.y}) rotate(${rotation})`;\n}\n\ntype IndicatorDatum = { angle: number };\nfunction indicatorTween(newAngle: number, radius: number, inner: boolean = false) {\n return function (d: IndicatorDatum) {\n const interpolate = d3Interpolate(d.angle, newAngle);\n d.angle = newAngle;\n return function (t: number) {\n return indicatorTranslate(interpolate(t), radius, inner);\n };\n };\n}\n\nfunction arcTween(startAngle: number, endAngle: number, arc: Arc<any, DefaultArcObject>) {\n return function (d: DefaultArcObject) {\n const startInterpolate = d3Interpolate(d.startAngle, startAngle);\n const endInterpolate = d3Interpolate(d.endAngle, endAngle);\n return function (t: number): string {\n d.startAngle = startInterpolate(t);\n d.endAngle = endInterpolate(t);\n return arc(d)!;\n };\n };\n}\n\nexport class Gauge extends SVGWidget {\n\n private _d3Arc: Arc<any, DefaultArcObject> = d3Arc()\n .innerRadius(85)\n .outerRadius(100)\n ;\n private _colorScale = scaleLinear<string, string>()\n .interpolate(d3InterpolateHcl)\n ;\n\n protected _usageArc: any;\n protected _meanArc: any;\n protected _freeArc: any;\n protected _indInner: any;\n protected _indOuter: any;\n protected _centerTextG: any;\n protected _centerText: any;\n protected _bottomText: any;\n protected _tooltipG: any;\n protected _mainTooltip: any;\n\n @publish(\"\", \"string\")\n title: publish<this, string>;\n\n @publish(\"\", \"string\")\n titleDescription: publish<this, string>;\n\n @publish(128, \"number\")\n maxDiameter: publish<this, number>;\n\n @publish(0, \"number\")\n value: publish<this, number>;\n\n @publish(\"\", \"string\")\n valueDescription: publish<this, string>;\n\n @publish(false, \"boolean\")\n showTick: publish<this, boolean>;\n\n @publish(0, \"number\")\n tickValue: publish<this, number>;\n\n @publish(\"\", \"string\")\n tickValueDescription: publish<this, string>;\n\n @publish(\"\", \"string\")\n tooltip: publish<this, string>;\n\n constructor() {\n super();\n }\n\n protected tip(d: any) {\n if (d === null || d.label === \"\") {\n this._tooltipG\n .transition()\n .style(\"opacity\", 0)\n .on(\"interrupt end\", () => {\n this._tooltipG\n .selectAll(\"g\")\n .remove()\n ;\n })\n ;\n } else {\n this._tooltipG\n .interrupt()\n .style(\"opacity\", 1)\n ;\n d.w = (this._centerText.datum() as any).w + 10;\n let lineType = \"horizontal\";\n let xOffset = 0;\n let yOffset = 5;\n let padding: number | undefined = 5;\n if (d.y >= 5 && d.y <= 25) {\n xOffset = d.x < 0 ? -d.w / 2 : d.w / 2;\n yOffset = 12.5;\n padding = undefined;\n lineType = \"vertical\";\n } else if (d.y > 25) {\n yOffset = 25;\n padding = 0;\n }\n const annotationtip = d3Annotation()\n .type(annotationCalloutElbow)\n .annotations([{\n data: d,\n dx: -d.x + xOffset,\n dy: -d.y + yOffset,\n color: \"black\",\n note: {\n label: d.label,\n lineType,\n padding,\n align: \"middle\"\n }\n }])\n .accessors({ x: (d2: any) => d2.x, y: (d2: any) => d2.y });\n this._tooltipG.call(annotationtip as any);\n }\n }\n\n protected calcSize(textElement, width: number, height: number): { width: number, height: number, scale: number } {\n const bb = (textElement.node() as any).getBBox();\n const widthTransform = width / bb.width;\n const heightTransform = height / bb.height;\n const scale = widthTransform < heightTransform ? widthTransform : heightTransform;\n return {\n width: bb.width,\n height: bb.height,\n scale\n };\n }\n\n protected updateText(textElement, x: number, y: number, w: number, h: number) {\n textElement\n .datum({ x, y, w, h })\n .attr(\"transform\", null)\n ;\n const size = this.calcSize(textElement, w, h);\n const x2 = x + w / 2 - size.width / 2 * size.scale;\n const y2 = y + h / 2 - size.height / 2 * size.scale;\n textElement.attr(\"transform\", `translate(${x2}, ${y2}) scale(${size.scale})`);\n }\n\n calcWidth(): number {\n return Math.min(this.width(), this.height(), this.maxDiameter());\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n\n element.on(\"click\", (d: Gauge) => {\n this.click(d);\n });\n\n this._usageArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._freeArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(1) })\n .style(\"fill\", \"lightGrey\")\n ;\n this._meanArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._mainTooltip = element.append(\"title\");\n\n const context = this;\n function appendIndicator() {\n return element.append(\"path\").datum({ angle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .style(\"stroke\", \"black\")\n .attr(\"d\", \"M 0 0 l -3 -3 l 6 0 z\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = context._d3Arc.centroid(context._meanArc.datum() as any);\n context.tip({ x, y, label: context.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n context.tip(null);\n })\n ;\n }\n this._indInner = appendIndicator();\n this._indOuter = appendIndicator();\n this._centerText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: 0, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._bottomText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: d.y, label: this.titleDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._tooltipG = element.append(\"g\")\n .attr(\"class\", \"annotation-tip\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n\n this._colorScale\n .domain(this.colorDomain())\n .range(this.colorRange())\n ;\n element\n .attr(\"title\", this.tooltip())\n .style(\"cursor\", this.click !== Gauge.prototype.click ? \"pointer\" : null)\n ;\n\n const innerRadius = this.calcWidth() / 3;\n const outerRadius = this.calcWidth() / 2 - 5;\n this._d3Arc\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n ;\n\n const val = this.value();\n const tickVal = this.tickValue();\n\n this._usageArc\n .style(\"fill\", this._colorScale(val))\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(0), value2Angle(val), this._d3Arc))\n ;\n\n this._freeArc\n .style(\"fill\", this.emptyColor())\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(val), value2Angle(1), this._d3Arc))\n ;\n\n this._meanArc\n .style(\"fill\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(tickVal - 0.001), value2Angle(tickVal + 0.001), this._d3Arc))\n ;\n\n this._indInner\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), innerRadius, true))\n ;\n\n this._indOuter\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), outerRadius))\n ;\n\n this._centerText\n .style(\"fill\", this._colorScale(val))\n .text(d3Format(\".0%\")(val))\n ;\n\n this._bottomText\n .style(\"fill\", this.click !== Gauge.prototype.click ? \"blue\" : \"black\")\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n tickColor(): string;\n tickColor(_: string): this;\n emptyColor(): string;\n emptyColor(_: string): this;\n colorDomain(): number[];\n colorDomain(_: number[]): this;\n colorRange(): string[];\n colorRange(_: string[]): this;\n}\n\nGauge.prototype.publish(\"colorRange\", [\"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"orange\", \"red\", \"red\"], \"array\", \"Array of colors for the filled gauge portion. The fill color will be relative to the gauge value.\");\nGauge.prototype.publish(\"colorDomain\", [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], \"array\", \"This array augments the mapping of the value to the fill colorRange.\");\nGauge.prototype.publish(\"emptyColor\", \"lightgrey\", \"html-color\", \"Color of the empty portion of the gauge\");\nGauge.prototype.publish(\"tickColor\", \"black\", \"html-color\", \"Color of the tick\");\n","import Annotation from \"./Annotation\"\nimport AnnotationCollection from \"./AnnotationCollection\"\nimport { newWithClass, d3Callout } from \"./Types-d3\"\nimport { select } from \"d3-selection\"\nimport { dispatch } from \"d3-dispatch\"\n\nexport default function annotation() {\n let annotations = [],\n collection,\n context, //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids,\n type = d3Callout,\n textWrap,\n notePadding,\n annotationDispatcher = dispatch(\n \"subjectover\",\n \"subjectout\",\n \"subjectclick\",\n \"connectorover\",\n \"connectorout\",\n \"connectorclick\",\n \"noteover\",\n \"noteout\",\n \"noteclick\",\n \"dragend\",\n \"dragstart\"\n ),\n sel\n\n const annotation = function(selection) {\n sel = selection\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove()\n }\n\n const translatedAnnotations = annotations.map(a => {\n if (!a.type) {\n a.type = type\n }\n if (!a.disable) {\n a.disable = disable\n }\n return new Annotation(a)\n })\n\n collection =\n collection ||\n new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors,\n accessorsInverse,\n ids\n })\n\n const annotationG = selection.selectAll(\"g\").data([collection])\n annotationG.enter().append(\"g\").attr(\"class\", `annotations`)\n\n const group = selection.select(\"g.annotations\")\n newWithClass(group, collection.annotations, \"g\", \"annotation\")\n\n const annotation = group.selectAll(\"g.annotation\")\n\n annotation.each(function(d) {\n const a = select(this)\n\n a.attr(\"class\", \"annotation\")\n\n newWithClass(a, [d], \"g\", \"annotation-connector\")\n newWithClass(a, [d], \"g\", \"annotation-subject\")\n newWithClass(a, [d], \"g\", \"annotation-note\")\n newWithClass(\n a.select(\"g.annotation-note\"),\n [d],\n \"g\",\n \"annotation-note-content\"\n )\n d.type =\n d.type.toString() === \"[object Object]\"\n ? d.type\n : new d.type({\n a,\n annotation: d,\n textWrap,\n notePadding,\n editMode,\n dispatcher: annotationDispatcher,\n accessors\n })\n d.type.draw()\n d.type.drawText && d.type.drawText()\n })\n }\n\n annotation.json = function() {\n /* eslint-disable no-console */\n console.log(\n \"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\",\n collection.json\n )\n /* eslint-enable no-console */\n window.copy(\n JSON.stringify(\n collection.json.map(a => {\n delete a.type\n return a\n })\n )\n )\n return annotation\n }\n\n annotation.update = function() {\n if (annotations && collection) {\n annotations = collection.annotations.map(a => {\n a.type.draw()\n return a\n })\n }\n return annotation\n }\n\n annotation.updateText = function() {\n if (collection) {\n collection.updateText(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.updatedAccessors = function() {\n collection.setPositionWithAccessors()\n annotations = collection.annotations\n return annotation\n }\n\n annotation.disable = function(_) {\n if (!arguments.length) return disable\n disable = _\n if (collection) {\n collection.updateDisable(disable)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n if (collection) {\n collection.updateTextWrap(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.notePadding = function(_) {\n if (!arguments.length) return notePadding\n notePadding = _\n if (collection) {\n collection.updateNotePadding(notePadding)\n annotations = collection.annotations\n }\n return annotation\n }\n //todo think of how to handle when undefined is sent\n annotation.type = function(_, settings) {\n if (!arguments.length) return type\n type = _\n if (collection) {\n collection.annotations.map(a => {\n a.type.note &&\n a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove()\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove()\n a.type.subject && a.type.subject.selectAll(\"*\").remove()\n a.type.connector && a.type.connector.selectAll(\"*\").remove()\n a.type.typeSettings = {}\n a.type = type\n\n a.subject = settings && settings.subject || a.subject\n a.connector = settings && settings.connector || a.connector\n a.note = settings && settings.note || a.note\n })\n\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.annotations = function(_) {\n if (!arguments.length)\n return collection && collection.annotations || annotations\n annotations = _\n\n if (collection && collection.annotations) {\n const rerun = annotations.some(\n d => !d.type || d.type.toString() !== \"[object Object]\"\n )\n\n if (rerun) {\n collection = null\n annotation(sel)\n } else {\n collection.annotations = annotations\n }\n }\n return annotation\n }\n\n annotation.context = function(_) {\n if (!arguments.length) return context\n context = _\n return annotation\n }\n\n annotation.accessors = function(_) {\n if (!arguments.length) return accessors\n accessors = _\n return annotation\n }\n\n annotation.accessorsInverse = function(_) {\n if (!arguments.length) return accessorsInverse\n accessorsInverse = _\n return annotation\n }\n\n annotation.ids = function(_) {\n if (!arguments.length) return ids\n ids = _\n return annotation\n }\n\n annotation.editMode = function(_) {\n if (!arguments.length) return editMode\n editMode = _\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode)\n }\n\n if (collection) {\n collection.editMode(editMode)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.collection = function(_) {\n if (!arguments.length) return collection\n collection = _\n return annotation\n }\n\n annotation.on = function() {\n const value = annotationDispatcher.on.apply(annotationDispatcher, arguments)\n return value === annotationDispatcher ? annotation : value\n }\n\n return annotation\n}\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { degreesToRadians, normalizeRadians } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { select as d3Select } from \"d3-selection\";\nimport { arc as d3Arc, pie as d3Pie } from \"d3-shape\";\n\nimport \"../src/Pie.css\";\n\nexport class Pie extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n protected _totalValue: number;\n\n d3Pie;\n d3Arc;\n d3LabelArc;\n private _labelPositions;\n private _smallValueLabelHeight;\n private _labelWidthLimit: number;\n private _quadIdxArr;\n private _minLabelTop = 0;\n private _maxLabelBottom = 0;\n private _seriesValueFormatter;\n private _seriesPercentageFormatter;\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this.d3Pie = d3Pie();\n\n this.d3Arc = d3Arc();\n this.d3LabelArc = d3Arc();\n this\n .tooltipTick_default(false)\n .tooltipOffset_default(0)\n ;\n }\n\n intersection(pointA, pointB) {\n return this.intersectCircle(this.calcOuterRadius(), pointA, pointB);\n }\n\n calcInnerRadius() {\n return this.innerRadius_exists() ? this.calcOuterRadius() * (this.innerRadius() as number) / 100 : 0;\n }\n\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d }, false)), \"Verdana\", 12).width;\n const horizontalLimit = this._size.width - (this.showLabels() ? maxTextWidth * 2 : 0) - 20;\n const verticalLimit = this._size.height - 12 * 3 - (this.showLabels() ? this._smallValueLabelHeight : 0);\n const outerRadius = Math.min(horizontalLimit, verticalLimit) / 2 - 2;\n if ((horizontalLimit / 2) - 2 < this.minOuterRadius()) {\n this._labelWidthLimit = maxTextWidth - (this.minOuterRadius() - ((horizontalLimit / 2) - 2));\n } else {\n this._labelWidthLimit = maxTextWidth;\n }\n if (outerRadius < this.minOuterRadius()) {\n return this.minOuterRadius();\n }\n return outerRadius;\n }\n\n calcSmallValueLabelHeight() {\n const smallDef = 0.1;\n const totalVal = this.data().reduce((acc, n) => acc + n[1], 0);\n let smallCount = 0;\n this.data().forEach(row => {\n if (row[1] / totalVal < smallDef) {\n smallCount++;\n }\n });\n return this.labelHeight() * smallCount;\n }\n\n calcTotalValue(): number {\n return this.data().reduce((acc, d) => {\n return acc + d[1];\n }, 0);\n }\n\n getLabelText(d, truncate?) {\n let len;\n let label = d.data[0];\n if (typeof this._labelWidthLimit !== \"undefined\" && truncate) {\n const labelWidth = this.textSize(label, \"Verdana\", this.labelHeight()).width;\n if (this._labelWidthLimit < labelWidth) {\n len = label.length * (this._labelWidthLimit / labelWidth) - 3;\n label = len < label.length ? label.slice(0, len) + \"...\" : label;\n }\n }\n if (this.showSeriesValue()) {\n label += ` : ${this._seriesValueFormatter(d.data[1])}`;\n }\n if (this.showSeriesPercentage()) {\n let sum = this._totalValue;\n const dm = this.dataMeta();\n if (typeof dm.sum !== \"undefined\") {\n sum = dm.sum;\n }\n const perc = (d.data[1] / sum) * 100;\n label += ` : ${this._seriesPercentageFormatter(perc)}%`;\n }\n return label;\n }\n\n selection(): any[]; // any[] === single row\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n try {\n return this._selection.selection2()[0]?.data;\n } catch (e) {\n return undefined;\n }\n }\n // Stringify to enable a deep equal\n const strRow = JSON.stringify(_);\n this._selection.selection2(d => strRow === JSON.stringify(d.data));\n }\n\n selectByLabel(_: string) {\n const row = this.data().filter(row => row[0] === _)[0];\n if (row) {\n this.selection(row);\n }\n }\n\n _slices;\n _labels;\n enter(_domNode, element) {\n super.enter(_domNode, element);\n this._selection.widgetElement(element);\n this._slices = element.append(\"g\");\n this._labels = element.append(\"g\");\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.data[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(d.data[0]),\n value: d.data[i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.data[0], value: d.data[1] });\n }\n })\n ;\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n this.updateD3Pie();\n this._palette = this._palette.switch(this.paletteID());\n this._seriesValueFormatter = d3Format(this.seriesValueFormat() as string);\n this._seriesPercentageFormatter = d3Format(this.seriesPercentageFormat() as string);\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n this._smallValueLabelHeight = this.calcSmallValueLabelHeight();\n this._totalValue = this.calcTotalValue();\n const innerRadius = this.calcInnerRadius();\n const outerRadius = this.calcOuterRadius();\n const labelRadius = outerRadius + 12;\n this.d3Arc\n .innerRadius(innerRadius)\n .padRadius(outerRadius)\n .outerRadius(outerRadius)\n ;\n\n this._quadIdxArr = [[], [], [], []];\n const data = [...this.data()].sort((a, b) => {\n return a[1] - b[1] > 0 ? -1 : 1;\n });\n const arc = this._slices.selectAll(\".arc\").data(this.d3Pie(data), d => d.data[0]);\n\n this._labelPositions = [];\n\n // Enter ---\n arc.enter().append(\"g\")\n .attr(\"class\", (d, i) => \"arc series series-\" + this.cssTag(d.data[0]))\n .attr(\"opacity\", 0)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n })\n .each(function (d, i) {\n d3Select(this).append(\"path\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"mouseover\", arcTween(0, 0))\n .on(\"mouseout\", arcTween(-5, 150))\n ;\n })\n .merge(arc).transition()\n .attr(\"opacity\", 1)\n .each(function (d, i) {\n const quad = context.getQuadrant(midAngle(d));\n context._quadIdxArr[quad].push(i);\n d.outerRadius = outerRadius - 5;\n const element2 = d3Select(this);\n element2.select(\"path\").transition()\n .attr(\"d\", context.d3Arc)\n .style(\"fill\", context.fillColor(d.data, context.columns()[1], d.data[1]))\n ;\n })\n ;\n\n // Exit ---\n arc.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n // Labels ---\n this.d3LabelArc\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n ;\n const text = this._labels.selectAll(\"text\").data(this.showLabels() ? this.d3Pie(data) : [], d => d.data[0]);\n\n const mergedText = text.enter().append(\"text\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"dy\", \".5em\")\n .on(\"click\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context._selection.click(this);\n context.click(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .on(\"dblclick\", function (d) {\n context._slices.selectAll(\"g\").filter(function (d2) {\n if (d.data === d2.data) {\n context.dblclick(context.rowToObj(d.data), context.columns()[1], context._selection.selected(this));\n }\n });\n })\n .merge(text)\n .text(d => this.getLabelText(d, true))\n .each(function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const mid_angle = midAngle(d);\n pos[0] = labelRadius * (context.isLeftSide(mid_angle) ? 1 : -1);\n context._labelPositions.push({\n top: pos[1],\n bottom: pos[1] + context.labelHeight()\n });\n });\n if (this.showLabels()) {\n this.adjustForOverlap();\n mergedText.transition()\n .style(\"font-size\", this.labelHeight() + \"px\")\n .attr(\"transform\", (d, i) => {\n const pos = context.d3LabelArc.centroid(d);\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return \"translate(\" + pos + \")\";\n })\n .style(\"text-anchor\", d => this.isLeftSide(midAngle(d)) ? \"start\" : \"end\");\n }\n\n text.exit()\n .remove();\n\n const polyline = this._labels.selectAll(\"polyline\").data(this.showLabels() ? this.d3Pie(data) : [], d => this.getLabelText(d, true));\n\n polyline.enter()\n .append(\"polyline\")\n .merge(polyline).transition()\n .attr(\"points\", function (d, i) {\n const pos = context.d3LabelArc.centroid(d);\n const pos1 = context.d3Arc.centroid(d);\n const pos2 = [...pos];\n pos[0] = labelRadius * (context.isLeftSide(midAngle(d)) ? 1 : -1);\n pos[1] = context._labelPositions[i].top;\n return [pos1, pos2, pos];\n });\n\n polyline.exit()\n .remove();\n\n if (this.showLabels()) {\n this.centerOnLabels();\n }\n function midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n\n function arcTween(outerRadiusDelta, delay) {\n return function () {\n d3Select(this).transition().delay(delay).attrTween(\"d\", function (d: any) {\n const i = d3Interpolate(d.outerRadius, outerRadius + outerRadiusDelta);\n return function (t) { d.outerRadius = i(t); return context.d3Arc(d); };\n });\n };\n }\n }\n\n isLeftSide(midAngle) {\n midAngle = normalizeRadians(midAngle);\n const isLeft = midAngle > Math.PI * 2 ? midAngle : midAngle < Math.PI && midAngle > 0;\n return isLeft;\n }\n\n getQuadrant(radians) {\n let quad = 0;\n const rad = normalizeRadians(radians);\n quad = rad <= Math.PI * 1.0 && rad >= Math.PI * 0.5 ? 3 : quad;\n quad = rad <= Math.PI * 0.5 && rad >= Math.PI * 0.0 ? 2 : quad;\n quad = rad <= Math.PI * 0.0 && rad >= Math.PI * -0.5 ? 1 : quad;\n return quad;\n }\n\n centerOnLabels() {\n const gY = this.pos().y;\n const gY2 = gY * 2;\n const radius = this.calcOuterRadius();\n const top = Math.min(this._minLabelTop, -radius);\n const bottom = Math.max(this._maxLabelBottom, radius);\n const h = bottom - top;\n const heightDiff = gY2 - h;\n const absTop = Math.abs(this._minLabelTop);\n let yShift = 0;\n if (bottom > gY) {\n yShift = gY - bottom + (this.labelHeight() / 2);\n yShift -= heightDiff / 2;\n } else if (top < 0 && absTop > gY) {\n yShift = absTop - gY + (this.labelHeight() / 2);\n yShift += heightDiff / 2;\n }\n const pos = this.pos();\n this.pos({\n y: pos.y + yShift,\n x: pos.x\n });\n }\n\n adjustForOverlap() {\n const labelHeight = this.labelHeight();\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].sort((a, b) => {\n if (quad === 1 || quad === 2) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? -1 : 1;\n } else if (quad === 0 || quad === 3) {\n return this._labelPositions[a].top > this._labelPositions[b].top ? 1 : -1;\n }\n });\n let prevTop;\n this._quadIdxArr[quad].forEach((n, i) => {\n if (i > 0) {\n if (quad === 1 || quad === 2) {\n if (prevTop < this._labelPositions[n].bottom) {\n const overlap = this._labelPositions[n].bottom - prevTop;\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n } else if (quad === 0 || quad === 3) {\n if (prevTop + labelHeight > this._labelPositions[n].top) {\n const overlap = Math.abs(this._labelPositions[n].top) - Math.abs(prevTop + labelHeight);\n this._labelPositions[n].top -= overlap;\n this._labelPositions[n].bottom -= overlap;\n }\n }\n }\n prevTop = this._labelPositions[n].top;\n });\n });\n this._minLabelTop = 0;\n this._maxLabelBottom = 0;\n this._quadIdxArr.forEach((arr, quad) => {\n this._quadIdxArr[quad].forEach((n, i) => {\n if (this._minLabelTop > this._labelPositions[n].top) {\n this._minLabelTop = this._labelPositions[n].top;\n }\n if (this._maxLabelBottom < this._labelPositions[n].bottom) {\n this._maxLabelBottom = this._labelPositions[n].bottom;\n }\n });\n });\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n updateD3Pie() {\n const startAngle = normalizeRadians(degreesToRadians(this.startAngle()));\n this.d3Pie\n .padAngle(0.0025)\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .sort(function (b, a) {\n return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;\n })\n .value(function (d) {\n return d[1];\n })\n ;\n }\n\n paletteID: (_?: string) => string | Pie;\n useClonedPalette: (_?: boolean) => boolean | Pie;\n outerText: (_?: boolean) => boolean | Pie;\n innerRadius: { (): number; (_: number): Pie; };\n innerRadius_exists: () => boolean;\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n tooltipTick: { (): boolean; (_: boolean): Pie; };\n tooltipTick_default: { (): boolean; (_: boolean): Pie; };\n tooltipOffset: { (): number; (_: number): Pie; };\n tooltipOffset_default: { (): number; (_: number): Pie; };\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\n\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface Pie {\n showSeriesValue(): boolean;\n showSeriesValue(_: boolean): this;\n seriesValueFormat(): string;\n seriesValueFormat(_: string): this;\n showSeriesPercentage(): boolean;\n showSeriesPercentage(_: boolean): this;\n minOuterRadius(): number;\n minOuterRadius(_: number): this;\n startAngle(): number;\n startAngle(_: number): this;\n labelHeight(): number;\n labelHeight(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n}\nPie.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, wedge labels will display\");\nPie.prototype.publish(\"showSeriesValue\", false, \"boolean\", \"Append data series value next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesValueFormat\", \",.0f\", \"string\", \"Number format used for formatting series values\", null, { disable: w => !w.showSeriesValue() });\nPie.prototype.publish(\"showSeriesPercentage\", false, \"boolean\", \"Append data series percentage next to label\", null, { disable: w => !w.showLabels() });\nPie.prototype.publish(\"seriesPercentageFormat\", \",.0f\", \"string\", \"Number format used for formatting series percentages\", null, { disable: w => !w.showSeriesPercentage() });\nPie.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Pie.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nPie.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nPie.prototype.publish(\"innerRadius\", 0, \"number\", \"Sets inner pie hole radius as a percentage of the radius of the pie chart\", null, { tags: [\"Basic\"], range: { min: 0, step: 1, max: 100 } });\nPie.prototype.publish(\"minOuterRadius\", 20, \"number\", \"Minimum outer radius (pixels)\");\nPie.prototype.publish(\"startAngle\", 0, \"number\", \"Starting angle of the first (and largest) wedge (degrees)\");\nPie.prototype.publish(\"labelHeight\", 12, \"number\", \"Font size of labels (pixels)\", null, { disable: w => !w.showLabels() });\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import { Pie } from \"./Pie\";\n\nexport class HalfPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this._pos.x;\n let y = this._pos.y;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n y += (this._size.height / 4);\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(-Math.PI / 2)\n .endAngle(Math.PI / 2)\n ;\n }\n}\nHalfPie.prototype._class += \" chart_HalfPie\";\n","import { max, Palette } from \"@hpcc-js/common\";\nimport { XYAxis } from \"./XYAxis\";\n\nexport class Heat extends XYAxis {\n\n protected _domForeignObject;\n protected _domCanvas;\n protected _heat;\n\n constructor() {\n super();\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n radius(r: number): this {\n this.radiusX(r);\n this.radiusY(r);\n return this;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n this._domForeignObject = this.svg.insert(\"foreignObject\", `#${this.id() + \"_clippath\"}`);\n this._domCanvas = this._domForeignObject.append(\"xhtml:body\")\n .style(\"margin\", \"0px\")\n .style(\"padding\", \"0px\")\n .style(\"background-color\", \"transparent\")\n .append(\"canvas\")\n ;\n this._heat = simpleheat(this._domCanvas.node());\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n\n this._domForeignObject\n .attr(\"x\", this.margin.left)\n .attr(\"y\", this.margin.top)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this._domCanvas\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const data = host.orientation() === \"horizontal\" ?\n this.data().map(r => [host.dataPos(r[0]), host.valuePos(r[1]), r[2]]) :\n this.data().map(r => [host.valuePos(r[1]), host.dataPos(r[0]), r[2]])\n ;\n\n const maxWeight = max(data, r => r[2]);\n\n if (this.paletteID() !== \"default\") {\n const gradient = {};\n const count = 8;\n const reverse = this.reversePalette();\n for (let i = 0; i < count; ++i) {\n gradient[i / count] = this._palette((reverse ? count - i : i) / count, 0, 1);\n }\n this._heat.gradient(gradient);\n } else {\n this._heat.gradient(this._heat.defaultGradient);\n }\n\n this._heat.resize();\n\n const radiusX = this.radiusAsPercent() ? this.radiusX() * width / 100 : this.radiusX();\n const radiusY = this.radiusAsPercent() ? this.radiusY() * height / 100 : this.radiusY();\n\n this._heat\n .clear()\n .radius(radiusX, radiusY, this.blur())\n .max(maxWeight)\n .data(data)\n .draw(this.minOpacity())\n ;\n }\n}\n\nHeat.prototype._class += \" chart_Heat\";\nHeat.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface Heat {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n reversePalette(): boolean;\n reversePalette(_: boolean): this;\n\n radiusX(): number;\n radiusX(_: number): this;\n radiusY(): number;\n radiusY(_: number): this;\n radiusAsPercent(): boolean;\n radiusAsPercent(_: boolean): this;\n blur(): number;\n blur(_: number): this;\n\n minOpacity(): number;\n minOpacity(_: number): this;\n}\n\nHeat.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Heat.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeat.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHeat.prototype.publish(\"reversePalette\", false, \"boolean\", \"Reverse Palette Colors\", null, { disable: w => w.paletteID() === \"default\" });\n\nHeat.prototype.publish(\"radiusX\", 25, \"number\", \"Point X radius (25 by default)\");\nHeat.prototype.publish(\"radiusY\", 25, \"number\", \"Point Y radius (25 by default)\");\nHeat.prototype.publish(\"radiusAsPercent\", false, \"boolean\", \"Calculate RadiusX + RadiusY as % of size\");\nHeat.prototype.publish(\"blur\", 15, \"number\", \"Point blur radius (15 by default)\");\n\nHeat.prototype.publish(\"minOpacity\", 0.05, \"number\", \"Minimum point opacity (0.05 by default)\");\n\n// The following code is a modified version of \n// - https://github.com/mourner/simpleheat\n// - Licensed under BSD-2-Clause - https://github.com/mourner/simpleheat/blob/gh-pages/LICENSE\n// Changes:\n// * Fixed TS syntax issues\n// * Added support for eliptical shapes instead of circles\n\nfunction simpleheat(canvas): void {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === \"string\" ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext(\"2d\");\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: \"blue\",\n 0.6: \"cyan\",\n 0.7: \"lime\",\n 0.8: \"yellow\",\n 1.0: \"red\"\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (rX, rY, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred ellipse image that we'll use for drawing points\n const ellipse = this._ellipse = this._createCanvas();\n const ctx = ellipse.getContext(\"2d\");\n const rX2 = this._r = rX + blur;\n const rY2 = this._r = rY + blur;\n\n ellipse.width = rX2 * 2;\n ellipse.height = rY2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = rX2 * 2;\n ctx.shadowOffsetY = ctx.shadowOffsetY = rY2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = \"black\";\n\n ctx.beginPath();\n ctx.ellipse(-rX2, -rY2, rX, rY, 0, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n const canvas = this._createCanvas(),\n ctx = canvas.getContext(\"2d\"),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (const i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._ellipse) this.radius(this.defaultRadius, this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n const ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred ellipse at each data point\n for (let i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._ellipse, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n const colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (let i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== \"undefined\") {\n return document.createElement(\"canvas\");\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","var thirdPi = Math.PI / 3,\n angles = [0, thirdPi, 2 * thirdPi, 3 * thirdPi, 4 * thirdPi, 5 * thirdPi];\n\nfunction pointX(d) {\n return d[0];\n}\n\nfunction pointY(d) {\n return d[1];\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 1,\n y1 = 1,\n x = pointX,\n y = pointY,\n r,\n dx,\n dy;\n\n function hexbin(points) {\n var binsById = {}, bins = [], i, n = points.length;\n\n for (i = 0; i < n; ++i) {\n if (isNaN(px = +x.call(null, point = points[i], i, points))\n || isNaN(py = +y.call(null, point, i, points))) continue;\n\n var point,\n px,\n py,\n pj = Math.round(py = py / dy),\n pi = Math.round(px = px / dx - (pj & 1) / 2),\n py1 = py - pj;\n\n if (Math.abs(py1) * 3 > 1) {\n var px1 = px - pi,\n pi2 = pi + (px < pi ? -1 : 1) / 2,\n pj2 = pj + (py < pj ? -1 : 1),\n px2 = px - pi2,\n py2 = py - pj2;\n if (px1 * px1 + py1 * py1 > px2 * px2 + py2 * py2) pi = pi2 + (pj & 1 ? 1 : -1) / 2, pj = pj2;\n }\n\n var id = pi + \"-\" + pj, bin = binsById[id];\n if (bin) bin.push(point);\n else {\n bins.push(bin = binsById[id] = [point]);\n bin.x = (pi + (pj & 1) / 2) * dx;\n bin.y = pj * dy;\n }\n }\n\n return bins;\n }\n\n function hexagon(radius) {\n var x0 = 0, y0 = 0;\n return angles.map(function(angle) {\n var x1 = Math.sin(angle) * radius,\n y1 = -Math.cos(angle) * radius,\n dx = x1 - x0,\n dy = y1 - y0;\n x0 = x1, y0 = y1;\n return [dx, dy];\n });\n }\n\n hexbin.hexagon = function(radius) {\n return \"m\" + hexagon(radius == null ? r : +radius).join(\"l\") + \"z\";\n };\n\n hexbin.centers = function() {\n var centers = [],\n j = Math.round(y0 / dy),\n i = Math.round(x0 / dx);\n for (var y = j * dy; y < y1 + r; y += dy, ++j) {\n for (var x = i * dx + (j & 1) * dx / 2; x < x1 + dx / 2; x += dx) {\n centers.push([x, y]);\n }\n }\n return centers;\n };\n\n hexbin.mesh = function() {\n var fragment = hexagon(r).slice(0, 4).join(\"l\");\n return hexbin.centers().map(function(p) { return \"M\" + p + \"m\" + fragment; }).join(\"\");\n };\n\n hexbin.x = function(_) {\n return arguments.length ? (x = _, hexbin) : x;\n };\n\n hexbin.y = function(_) {\n return arguments.length ? (y = _, hexbin) : y;\n };\n\n hexbin.radius = function(_) {\n return arguments.length ? (r = +_, dx = r * 2 * Math.sin(thirdPi), dy = r * 1.5, hexbin) : r;\n };\n\n hexbin.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], hexbin) : [x1 - x0, y1 - y0];\n };\n\n hexbin.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], hexbin) : [[x0, y0], [x1, y1]];\n };\n\n return hexbin.radius(1);\n}\n","import { I2DAggrChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent, max as d3Max, min as d3Min } from \"d3-array\";\nimport { hexbin as d3HexBin } from \"d3-hexbin\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/HexBin.css\";\n\nexport class HexBin extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _hexbin;\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n I2DAggrChart.call(this);\n this.tooltipValueFormat_default(\",.0f\");\n ITooltip.call(this);\n this.tooltipHTML(d => {\n const seriesExtent = d3Extent<{ label: any, value: any }>(d, d => d.label);\n const labelExtent = d3Extent<{ label: any, value: any }>(d, d => d.value);\n return this.tooltipFormat({\n series: seriesExtent[0] === seriesExtent[1] ? seriesExtent[0] : `${seriesExtent[0]} -> ${seriesExtent[1]}`,\n label: labelExtent[0] === labelExtent[1] ? labelExtent[0] : `${labelExtent[0]} -> ${labelExtent[1]}`,\n value: d.length\n });\n });\n this._hexbin = d3HexBin()\n .x(d => d.x)\n .y(d => d.y)\n ;\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._hexbin\n .extent([0, 0], [this.width(), this.height()])\n .radius(this.binSize())\n ;\n\n const flatData = this.flattenData();\n const dataPoints = flatData.map(d => {\n return {\n x: context.xPos(host, d),\n y: context.yPos(host, d),\n label: host.parseData(d.label),\n value: host.parseValue(d.value),\n origRow: d\n };\n });\n const hexBinPoints = this._hexbin(dataPoints);\n const minBinPoints = d3Min(hexBinPoints, function (d: any) { return d.length; });\n const maxBinPoints = d3Max(hexBinPoints, function (d: any) { return d.length; });\n this._dataMinWeight = minBinPoints;\n this._dataMaxWeight = maxBinPoints;\n\n const points = element.selectAll(\".hexagon\").data(hexBinPoints, function (d) { return d.i + \"_\" + d.j; });\n points.enter().append(\"path\")\n .attr(\"class\", \"hexagon\")\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n const data = context.data();\n context.click(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n const data = context.data();\n context.dblclick(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .merge(points).transition().duration(duration)\n .attr(\"d\", this._hexbin.hexagon())\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(1)\"; })\n .style(\"fill\", function (d) { return context._palette(d.length, minBinPoints, maxBinPoints); })\n ;\n points.exit().transition().duration(duration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n dblclick(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipValueFormat: (_) => string;\n tooltipValueFormat_default: (_) => string;\n\n paletteID: { (): string; (_: string): HexBin; };\n useClonedPalette: { (): boolean; (_: boolean): HexBin; };\n binSize: { (): number; (_: number): HexBin; };\n}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nHexBin.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for this widget\", HexBin.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nHexBin.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHexBin.prototype.publish(\"binSize\", 20, \"number\", \"Bin radius\", null, { range: { min: 1, max: 300, step: 1 } });\n","import { Scatter } from \"./Scatter\";\n\nimport \"../src/Line.css\";\n\nexport class Line extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"linear\")\n ;\n }\n}\nLine.prototype._class += \" chart_Line\";\n","import { Pie } from \"./Pie\";\n\nexport class QuarterPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this.orientation() === \"left\" ? 0 : this._size.width;\n let y = this._size.height;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(this.orientation() === \"left\" ? 0 : -Math.PI / 2)\n .endAngle(this.orientation() === \"left\" ? Math.PI / 2 : 0)\n ;\n }\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d })), \"Verdana\", 12).width;\n return Math.min(this._size.width - maxTextWidth - 10, this._size.height - 12 * 3) - 2;\n }\n}\nQuarterPie.prototype._class += \" chart_QuarterPie\";\n\nexport interface QuarterPie {\n orientation(): string;\n orientation(_: string): this;\n}\nQuarterPie.prototype.publish(\"orientation\", \"left\", \"set\", \"Determines the placement and start/end angle.\", [\"left\", \"right\"]);\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\n\nexport class QuartileCandlestick extends SVGWidget {\n protected _g;\n protected _leftLine;\n protected _rightLine;\n protected _midLine;\n protected _midOuterRect;\n protected _midInnerRect1;\n protected _midInnerRect2;\n protected _q0text;\n protected _q1text;\n protected _q2text;\n protected _q3text;\n protected _q4text;\n protected _q0val;\n protected _q1val;\n protected _q2val;\n protected _q3val;\n protected _q4val;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\");\n this._leftLine = this._g.append(\"rect\");\n this._rightLine = this._g.append(\"rect\");\n this._midLine = this._g.append(\"rect\");\n this._midOuterRect = this._g.append(\"rect\");\n this._midInnerRect1 = this._g.append(\"rect\");\n this._midInnerRect2 = this._g.append(\"rect\");\n this._q0text = this._g.append(\"text\");\n this._q1text = this._g.append(\"text\");\n this._q2text = this._g.append(\"text\");\n this._q3text = this._g.append(\"text\");\n this._q4text = this._g.append(\"text\");\n this._q0val = this._g.append(\"text\");\n this._q1val = this._g.append(\"text\");\n this._q2val = this._g.append(\"text\");\n this._q3val = this._g.append(\"text\");\n this._q4val = this._g.append(\"text\");\n }\n update(domNode, element) {\n super.update(domNode, element);\n const valueSize = (this.orientation() === \"horizontal\" ? this.width() : this.height()) - this.lineWidth();\n const domainSize = this.orientation() === \"horizontal\" ? this.height() : this.width();\n const scale = d3ScaleLinear()\n .domain([\n this.data()[0],\n this.data()[4]\n ])\n .range([\n this.edgePadding(),\n valueSize - this.edgePadding()\n ])\n ;\n const candleWidth = this.candleWidth_exists() ? this.candleWidth() : domainSize;\n const lineWidth = this.lineWidth();\n const lineColor = this.lineColor();\n const roundedCorners = this.roundedCorners();\n const q0x = this.edgePadding();\n let q1x = scale(this.data()[1]);\n let q2x = scale(this.data()[2]);\n let q3x = scale(this.data()[3]);\n const dataTop = -candleWidth / 2;\n const dataBottom = candleWidth / 2;\n const upperTextRotation = this.upperTextRotation();\n const lowerTextRotation = this.lowerTextRotation();\n const padding = this.textPadding();\n const labelFontSize = this.labelFontSize();\n const valueFontSize = this.valueFontSize();\n const sz = Math.max(labelFontSize, valueFontSize);\n const q4x = valueSize - q0x;\n if (sz > 0) {\n while (q1x - q0x < sz) {\n q1x += sz;\n }\n while (q2x - q1x < sz) {\n q2x += sz;\n }\n while (q3x - q2x < sz) {\n q3x += sz;\n }\n while (q4x - q3x < sz) {\n q3x -= sz;\n }\n while (q3x - q2x < sz) {\n q2x -= sz;\n }\n while (q2x - q1x < sz) {\n q1x -= sz;\n }\n }\n let transX = (-valueSize / 2) - (this.lineWidth() / 2);\n let transY = 0;\n let rotate = 0;\n const s = 1;\n let textScale = 1;\n let labelAnchor = \"start\";\n let valueAnchor = \"end\";\n if (this.orientation() === \"vertical\") {\n transX = 0;\n transY = valueSize / 2 + (this.lineWidth() / 2);\n rotate = -90;\n labelAnchor = \"end\";\n valueAnchor = \"start\";\n textScale = -1;\n }\n this._g\n .style(\"shape-rendering\", \"crispEdges\")\n .attr(\"transform\", `translate(${transX},${transY})rotate(${rotate})scale(${s})`)\n ;\n this._leftLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q0x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._rightLine\n .attr(\"class\", \"right-line\")\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q4x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", lineWidth)\n .attr(\"width\", q4x - q0x)\n .attr(\"x\", q0x)\n .attr(\"y\", -lineWidth / 2)\n ;\n this._midOuterRect\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"x\", q1x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midInnerRect1\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q2x - (q1x + (lineWidth * 2)))\n .attr(\"x\", q1x + lineWidth)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._midInnerRect2\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q3x - q2x - lineWidth)\n .attr(\"x\", q2x)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._q0text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.columns()[0])\n ;\n this._q1text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[1])\n ;\n this._q2text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[2])\n ;\n this._q3text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[3])\n ;\n this._q4text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.columns()[4])\n ;\n this._q0val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.data()[0])\n ;\n this._q1val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[1])\n ;\n this._q2val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[2])\n ;\n this._q3val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[3])\n ;\n this._q4val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.data()[4])\n ;\n }\n}\nQuartileCandlestick.prototype._class += \" chart_QuartileCandlestick\";\n\nexport interface QuartileCandlestick {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n textPadding(): number;\n textPadding(_: number): this;\n edgePadding(): number;\n edgePadding(_: number): this;\n candleWidth(): number;\n candleWidth(_: number): this;\n candleWidth_exists(): boolean;\n lineWidth(): number;\n lineWidth(_: number): this;\n lineColor(): string;\n lineColor(_: string): this;\n innerRectColor(): string;\n innerRectColor(_: string): this;\n lowerTextRotation(): number;\n lowerTextRotation(_: number): this;\n upperTextRotation(): number;\n upperTextRotation(_: number): this;\n roundedCorners(): number;\n roundedCorners(_: number): this;\n labelFontSize(): number;\n labelFontSize(_: number): this;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n textColor(): string;\n textColor(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n showValues(): boolean;\n showValues(_: boolean): this;\n}\nQuartileCandlestick.prototype.publish(\"textColor\", \"black\", \"html-color\", \"Color of label and value text\");\nQuartileCandlestick.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, labels will be shown\");\nQuartileCandlestick.prototype.publish(\"showValues\", true, \"boolean\", \"If true, values will be shown\");\nQuartileCandlestick.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Determines layout\", [\"horizontal\", \"vertical\"]);\nQuartileCandlestick.prototype.publish(\"valueFontSize\", 12, \"number\", \"Font size of value text (pixels)\");\nQuartileCandlestick.prototype.publish(\"labelFontSize\", 12, \"number\", \"Font size of label text (pixels)\");\nQuartileCandlestick.prototype.publish(\"roundedCorners\", 8, \"number\", \"Radius of rounded rect corners (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineWidth\", 4, \"number\", \"Width of lines (pixels)\");\nQuartileCandlestick.prototype.publish(\"candleWidth\", null, \"number\", \"Height of outer rect (pixels)\", null, {optional: true});\nQuartileCandlestick.prototype.publish(\"textPadding\", 8, \"number\", \"Padding between outer rect and text (pixels)\");\nQuartileCandlestick.prototype.publish(\"edgePadding\", 30, \"number\", \"Padding between outer rect and left/right sides (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineColor\", \"#333\", \"html-color\", \"Color of outer rect and lines\");\nQuartileCandlestick.prototype.publish(\"innerRectColor\", \"white\", \"html-color\", \"Color of the inner rects\");\nQuartileCandlestick.prototype.publish(\"upperTextRotation\", -60, \"number\", \"Rotation of label text (degrees)\");\nQuartileCandlestick.prototype.publish(\"lowerTextRotation\", -60, \"number\", \"Rotation of value text (degrees)\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Radar.css\";\nexport class Radar extends SVGWidget {\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n setPointAttributes(element, x, y) {\n const shape = this.mapShape(this.pointShape());\n const context = this;\n switch (shape) {\n case \"rect\":\n element\n .attr(\"width\", context.pointSize())\n .attr(\"height\", context.pointSize())\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"circle\":\n element\n .attr(\"r\", context.pointSize() / 2)\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"path\":\n const half_size = context.pointSize() / 2;\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (x - half_size) + \" \" + (y - half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y + half_size) + \" \" +\n \"M\" + (x - half_size) + \" \" + (y + half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y - half_size);\n })\n .style(\"stroke\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n default:\n }\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this\n .tooltipHTML(d => {\n return this.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n })\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n const context = this;\n const h = this.height();\n const w = this.width();\n const half_h = (h / 2);\n const half_w = (w / 2);\n\n const columns = this.columns();\n const data = this.data();\n const flatData = this.flattenData(columns, data).map((d: any, idx: number) => {\n d.shape = this.mapShape(this.pointShape());\n d.column = columns[d.colIdx];\n d.row = data[idx];\n return d;\n });\n const domain_points = [];\n const arc = this.degrees2radians(360 / this.data().length);\n const max_label_h = this.fontSize();\n let max_label_w = 0;\n flatData.filter(n => n.colIdx === 1).forEach(n => {\n const isize = super.textSize(n.label, `${this.fontFamily()}`, this.fontSize());\n if (max_label_w < isize.width) max_label_w = isize.width;\n });\n const radius = Math.min(half_h - max_label_h, half_w - max_label_w);\n const labels = element\n .selectAll(\".label\")\n .data(flatData.filter(n => n.colIdx === 1))\n ;\n const max_val = Math.max.apply(context, flatData.map(n => n.value));\n labels.enter()\n .append(\"text\")\n .attr(\"class\", \"label\")\n .attr(\"text-anchor\", \"middle\")\n .merge(labels)\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .each(function (this: SVGElement, n, i) {\n const xy = context.polar2cartesian(radius, (i * arc) - (Math.PI / 2));\n domain_points.push(xy.map(n => n * context.labelPaddingRatio()));\n let text_anchor = \"middle\";\n const _x = Math.round(xy[0]);\n text_anchor = _x > 0 ? \"start\" : text_anchor;\n text_anchor = _x < 0 ? \"end\" : text_anchor;\n d3Select(this)\n .attr(\"text-anchor\", text_anchor)\n .attr(\"x\", xy[0])\n .attr(\"y\", xy[1])\n ;\n })\n .text(n => n.label)\n ;\n labels.exit().remove();\n const domains = element\n .selectAll(\".domain\")\n .data(flatData.filter(n => n.colIdx === 1));\n domains.enter()\n .append(\"line\")\n .classed(\"domain\", true)\n .style(\"stroke\", \"#000\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"1px\")\n .merge(domains)\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", (n, i) => domain_points[i][0])\n .attr(\"y2\", (n, i) => domain_points[i][1]);\n domains.exit().remove();\n const value_guides = element\n .selectAll(\".value_guide\")\n .data(this.valueGuideRatios())\n ;\n value_guides.enter()\n .append(\"polygon\")\n .classed(\"value_guide\", true)\n .style(\"stroke\", \"grey\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(value_guides)\n .each(function (mult, i) {\n const poly_points = [];\n domain_points.forEach((domain_point, row_idx) => {\n poly_points.push([\n domain_point[0] * mult,\n domain_point[1] * mult\n ]);\n });\n d3Select(this)\n .attr(\"points\", poly_points.join(\" \"))\n .attr(\"stroke\", \"rgb(0, 0, 0)\")\n .attr(\"stroke-opacity\", 0.75)\n .attr(\"stroke-width\", 0.3)\n .attr(\"fill-opacity\", 0)\n ;\n })\n ;\n value_guides.exit().remove();\n\n const value_guide_text = element\n .selectAll(\".value_guide_text\")\n .data(this.valueGuideRatios())\n ;\n value_guide_text.enter()\n .append(\"text\")\n .attr(\"class\", \"value_guide_text\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .merge(value_guide_text)\n .attr(\"x\", 2)\n .attr(\"y\", mult => domain_points[0][1] * mult)\n .text((mult, i) => Math.round(mult * max_val))\n ;\n value_guides.exit().remove();\n\n // Polygon shapes ---\n const series_polygons = element\n .selectAll(\".area\")\n .data(columns.filter((n, i) => i > 0));\n series_polygons.enter()\n .append(\"polygon\")\n .attr(\"class\", \"area\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(series_polygons)\n .style(\"stroke\", d => this.strokeColor([], d, 0))\n .style(\"fill\", d => this.fillColor([], d, 0))\n .style(\"fill-opacity\", this.fillOpacity())\n .attr(\"points\", (d, col_idx) => {\n return domain_points.map((domain_point, row_idx) => {\n const val = data[row_idx][col_idx + 1];\n const val_mult = val === 0 ? 0 : val / max_val;\n return domain_point[0] * val_mult + \",\" + domain_point[1] * val_mult;\n }).join(\" \");\n });\n series_polygons.exit().remove();\n\n // Points ---\n const point_elm = element\n .selectAll(\".point\")\n .data(flatData);\n point_elm.enter()\n .append(\"g\")\n .attr(\"class\", \"point\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n const data_row = context.data()[d.rowIdx];\n const row_obj = context.rowToObj(data_row);\n const selected = context._selection.selected(this);\n context.click(row_obj, context.columns()[d.colIdx], selected);\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(context.data()[d.rowIdx]), d.column, context._selection.selected(this));\n })\n .each(function (d) {\n const element = d3Select(this);\n element.append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .attr(\"r\", context.pointSize())\n .call(context._selection.enter.bind(context._selection))\n ;\n element.append(context.mapShape(context.pointShape()))\n .attr(\"class\", \"pointShape\")\n ;\n })\n .merge(point_elm)\n .each(function (d) {\n const element = d3Select(this);\n const val_mult = d.value === 0 ? 0 : d.value / max_val;\n const x = domain_points[d.rowIdx][0] * val_mult;\n const y = domain_points[d.rowIdx][1] * val_mult;\n element.select(\".pointSelection\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n ;\n\n const pointElement = element.select(\".pointShape\")\n .style(\"stroke\", context.strokeColor(d.row, d.column, d.value))\n .style(\"fill\", context.fillColor(d.row, d.column, d.value))\n ;\n context.setPointAttributes(pointElement, x, y);\n })\n ;\n point_elm.exit().remove();\n }\n\n polar2cartesian(r, theta) {\n return [r * Math.cos(theta), r * Math.sin(theta)];\n }\n cartesian2polar(x, y) {\n return [Math.atan2(y, x), Math.sqrt(x * x + y * y)];\n }\n degrees2radians(d) {\n return d / 57.295779513;\n }\n radians2degrees(r) {\n return r * 57.295779513;\n }\n point_in_polygon(point, vs) {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n const xi = vs[i][0];\n const yi = vs[i][1];\n const xj = vs[j][0];\n const yj = vs[j][1];\n const intersect = ((yi > y) !== (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n _selection;\n}\nRadar.prototype._class += \" chart_Radar\";\nRadar.prototype.implements(INDChart.prototype);\nRadar.prototype.implements(ITooltip.prototype);\nRadar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Radar {\n labelPaddingRatio(): number;\n labelPaddingRatio(_: number): this;\n fillOpacity(): number;\n fillOpacity(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n valueGuideRatios(): any;\n valueGuideRatios(_: any): this;\n valueGuideFontSize(): number;\n valueGuideFontSize(_: number): this;\n valueGuideFontFamily(): string;\n valueGuideFontFamily(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n}\n\nRadar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Radar.prototype._palette.switch());\nRadar.prototype.publish(\"pointShape\", \"cross\", \"set\", \"pointShape\", [\"circle\", \"rectangle\", \"cross\"]);\nRadar.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nRadar.prototype.publish(\"valueGuideRatios\", [0.2, 0.4, 0.6, 0.8, 1], \"array\", \"Array of values between 0 and 1 that are multiplied by the widget radius to produce guide lines\");\nRadar.prototype.publish(\"fillOpacity\", 0.66, \"number\", \"Opacity of the data polygon(s)\");\nRadar.prototype.publish(\"fontFamily\", \"\", \"string\", \"fontFamily\");\nRadar.prototype.publish(\"fontSize\", 16, \"number\", \"fontSize\");\nRadar.prototype.publish(\"labelPaddingRatio\", 0.9, \"number\", \"labelPaddingRatio\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/RadialBar.css\";\n\nexport class RadialBar extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\"\n }];\n\n private _domainScale = d3ScaleBand();\n private _valueScale = d3ScaleLinear();\n private _d3Arc = d3Arc<[string, number]>()\n .startAngle(0)\n .endAngle((d) => this._valueScale(d[1]))\n ;\n\n protected _arcs;\n protected _axialAxis;\n protected _radialAxis;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n this.tooltipHTML(d => {\n return this.tooltipFormat({ label: d[0], value: d[1] });\n });\n\n this._radialAxis = element.append(\"g\")\n .attr(\"class\", \"r axis\")\n ;\n this._axialAxis = element.append(\"g\")\n .attr(\"class\", \"a axis\")\n ;\n this._arcs = element.append(\"g\")\n .attr(\"class\", \"data\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const maxValue = Math.max(this.valueDomainHigh_exists() ? this.valueDomainHigh() : 0, ...this.data().map(d => d[1]));\n\n this._valueScale\n .domain([0, maxValue])\n .range([0, this.radians(this.valueMaxAngle())])\n ;\n\n const ticks = this._valueScale.ticks(this.tickCount());\n\n const maxTextWidth = this.textSize(ticks.map(d => \"\" + d), \"Verdana\", 12).width;\n const chartRadius = (Math.min(this.width() - (10 + maxTextWidth) * 2, this.height() - (10 + 12) * 2) / 2);\n\n // Domain Axis (x-axis) ---\n const domainData = this.data().map(d => d[0]);\n\n this._domainScale\n .domain(domainData)\n .range([0, chartRadius])\n .padding(this.domainPadding())\n ;\n const domainPadding = this._domainScale.step() * this._domainScale.padding();\n\n const domainCircles = this._radialAxis.selectAll(\"circle\").data(domainData);\n domainCircles.enter().append(\"circle\")\n .attr(\"fill\", \"transparent\")\n .merge(domainCircles)\n .attr(\"r\", d => this._domainScale(d) + this._domainScale.step() - domainPadding / 2)\n ;\n domainCircles.exit().remove();\n\n const domainText = this._radialAxis.selectAll(\".arc-text\").data(domainData);\n domainText.enter().append(\"text\")\n .attr(\"class\", \"arc-text\")\n .attr(\"x\", -4)\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"text-anchor\", \"end\")\n .merge(domainText)\n .attr(\"y\", d => -this._domainScale(d) - this._domainScale.bandwidth() / 2)\n .text(d => d);\n domainText.exit().remove();\n\n // Value Axis (y-axis) ---\n const valueLines = this._axialAxis.selectAll(\"line\").data(ticks);\n valueLines.enter().append(\"line\")\n .merge(valueLines)\n .attr(\"x2\", d => chartRadius * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y2\", d => chartRadius * Math.sin(this._valueScale(d) - this.radians(90)))\n ;\n valueLines.exit().remove();\n\n const valueText = this._axialAxis.selectAll(\"text\").data(ticks);\n valueText.enter().append(\"text\")\n .style(\"dominant-baseline\", \"central\")\n .merge(valueText)\n .attr(\"x\", d => (chartRadius + 10) * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y\", d => (chartRadius + 10) * Math.sin(this._valueScale(d) - this.radians(90)))\n .style(\"text-anchor\", d => {\n const middleZone = 20;\n const angle = this.degrees(this._valueScale(d));\n if (angle >= 0 && angle <= middleZone ||\n angle >= 180 - middleZone && angle <= 180 + middleZone ||\n angle >= 360 - middleZone && angle <= 360\n ) {\n return \"middle\";\n } else if (angle >= 180 && angle <= 360) {\n return \"end\";\n } else {\n return null;\n }\n })\n .text(d => d)\n ;\n valueText.exit().remove();\n\n const valueColumn = this.columns().length > 1 ? this.columns()[1] : \"\";\n // Data (arcs) ---\n this._d3Arc\n .innerRadius(d => this._domainScale(d[0]))\n .outerRadius(d => this._domainScale(d[0]) + this._domainScale.bandwidth())\n ;\n const arcs = this._arcs.selectAll(\"path\").data(this.data(), d => d[0]);\n arcs.enter().append(\"path\")\n .attr(\"class\", \"arc\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n context.click(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .merge(arcs)\n .style(\"fill\", (d, i) => this.fillColor(d, d[0], d[1]))\n .transition()\n .delay((d, i) => i * this.transitionDelay())\n .duration(this.transitionDuration())\n .attrTween(\"d\", (d, indx) => {\n const interpolate = d3Interpolate(d._current || 0, d[1]);\n d._current = d[1];\n return t => this._d3Arc([d[0], interpolate(t)], indx);\n })\n ;\n arcs.exit().remove();\n }\n\n degrees(radians) {\n return radians * 180 / Math.PI;\n }\n\n radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n _selection;\n}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface RadialBar {\n paletteID(): string;\n paletteID(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n valueMaxAngle(): number;\n valueMaxAngle(_: number): this;\n valueDomainHigh(): number;\n valueDomainHigh(_: number): this;\n valueDomainHigh_exists(): boolean;\n transitionDelay(): number;\n transitionDelay(_: number): this;\n transitionDuration(): number;\n transitionDuration(_: number): this;\n}\nRadialBar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", RadialBar.prototype._palette.switch());\nRadialBar.prototype.publish(\"tickCount\", 10, \"number\", \"Number of ticks to display\");\nRadialBar.prototype.publish(\"domainPadding\", 0.25, \"number\", \"Padding between chart edge and container edge (0..1)\");\nRadialBar.prototype.publish(\"valueMaxAngle\", 270, \"number\", \"Maximum angular length of a bar (degrees)\");\nRadialBar.prototype.publish(\"valueDomainHigh\", null, \"number\", \"Value domain high\", undefined, { optional: true });\nRadialBar.prototype.publish(\"transitionDelay\", 100, \"number\", \"Delay between the start of each row animation (ms)\");\nRadialBar.prototype.publish(\"transitionDuration\", 750, \"number\", \"Duration of a row's animation (ms)\");\n","import { format as d3Format, HTMLWidget, Palette } from \"@hpcc-js/common\";\nimport { QuartileCandlestick } from \"./QuartileCandlestick\";\nimport { Scatter } from \"./Scatter\";\n\nconst rainbow = Palette.rainbow(\"Blues\");\nconst palette = Palette.ordinal(\"Quartile\", [rainbow(100, 0, 100), rainbow(50, 0, 100), rainbow(50, 0, 100), rainbow(75, 0, 100)]);\npalette(\"Std. Dev.\");\npalette(\"MinMax\");\npalette(\"25%\");\npalette(\"50%\");\n\ntype Mode = \"min_max\" | \"25_75\" | \"normal\";\ntype Tick = { label: string, value: number };\ntype Ticks = Tick[];\ntype AxisTick = { label: string, value: string };\ntype AxisTicks = AxisTick[];\n\nfunction myFormatter(format: string): (num: number) => string {\n const formatter = d3Format(format);\n return function (num: number) {\n const strVal = (Math.round(num * 100) / 100).toString();\n if (strVal.length <= 4) return strVal;\n return formatter(num);\n };\n}\n\nexport class StatChart extends HTMLWidget {\n\n private _mean: number;\n private _standardDeviation: number;\n private _quartiles: number[];\n private _selectMode: any;\n private _tickFormatter: (_: number) => string;\n\n private _bellCurve: Scatter = new Scatter()\n .columns([\"\", \"Std. Dev.\"])\n .paletteID(\"Quartile\")\n .interpolate_default(\"basis\")\n .pointSize(0)\n .xAxisType(\"linear\")\n .xAxisOverlapMode(\"none\")\n .xAxisTickFormat(\",\")\n .yAxisHidden(true)\n .yAxisDomainLow(0)\n .yAxisDomainHigh(110)\n .yAxisGuideLines(false) as Scatter\n ;\n\n private _candle = new QuartileCandlestick()\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\"])\n .edgePadding(0)\n .roundedCorners(1)\n .lineWidth(1)\n .upperTextRotation(-90)\n .lowerTextRotation(-90)\n .labelFontSize(0)\n .valueFontSize(0)\n .lineColor(rainbow(90, 0, 100))\n .innerRectColor(rainbow(10, 0, 100))\n ;\n\n private stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n private formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n private quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.data()[0][q];\n }\n\n private formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n private domain(mode: Mode): [number, number] {\n switch (mode) {\n case \"25_75\":\n return [this.quartile(1), this.quartile(3)];\n case \"normal\":\n return [this.stdDev(-4), this.stdDev(4)];\n case \"min_max\":\n default:\n return [this.quartile(0), this.quartile(4)];\n }\n }\n\n mean(): number;\n mean(_: number): this;\n mean(_?: number): this | number {\n if (!arguments.length) return this._mean;\n this._mean = _;\n if (this.data()[0]) {\n this.data()[0][5] = _;\n }\n return this;\n }\n\n standardDeviation(): number;\n standardDeviation(_: number): this;\n standardDeviation(_?: number): this | number {\n if (!arguments.length) return this._standardDeviation;\n this._standardDeviation = _;\n if (this.data()[0]) {\n this.data()[0][6] = _;\n }\n return this;\n }\n\n quartiles(): number[];\n quartiles(_: number[]): this;\n quartiles(_?: number[]): this | number[] {\n if (!arguments.length) return this._quartiles;\n this._quartiles = _;\n if (this.data()[0]) {\n this.data()[0] = _.concat(this.data()[0].slice(-2));\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._bellCurve.target(element.append(\"div\").node());\n\n this._candle.target(element.append(\"div\").node());\n\n this._selectMode = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.render();\n })\n ;\n this._selectMode.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectMode.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectMode.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n private bellTicks(mode: Mode): AxisTicks {\n let ticks: Ticks;\n switch (mode) {\n case \"25_75\":\n ticks = [\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) }\n ];\n break;\n case \"normal\":\n ticks = [\n { label: this.formatStdDev(-4), value: this.stdDev(-4) },\n { label: \"-3σ\", value: this.stdDev(-3) },\n { label: \"-2σ\", value: this.stdDev(-2) },\n { label: \"-1σ\", value: this.stdDev(-1) },\n { label: this.formatStdDev(0), value: this.stdDev(0) },\n { label: \"+1σ\", value: this.stdDev(1) },\n { label: \"+2σ\", value: this.stdDev(2) },\n { label: \"+3σ\", value: this.stdDev(3) },\n { label: this.formatStdDev(4), value: this.stdDev(4) }\n ];\n break;\n case \"min_max\":\n default:\n ticks = [\n { label: this.formatQ(0), value: this.quartile(0) },\n { label: this.formatQ(1), value: this.quartile(1) },\n { label: this.formatQ(2), value: this.quartile(2) },\n { label: this.formatQ(3), value: this.quartile(3) },\n { label: this.formatQ(4), value: this.quartile(4) }\n ];\n }\n\n const [domainLow, domainHigh] = this.domain(this._selectMode.node().value);\n return ticks\n .filter(sd => sd.value >= domainLow && sd.value <= domainHigh)\n .map(sd => ({ label: sd.label, value: sd.value.toString() }))\n ;\n }\n\n updateScatter() {\n const mode = this._selectMode.node().value;\n const [domainLow, domainHigh] = this.domain(mode);\n const padding = (domainHigh - domainLow) * (this.domainPadding() / 100);\n\n this._bellCurve\n .xAxisDomainLow(domainLow - padding)\n .xAxisDomainHigh(domainHigh + padding)\n .xAxisTicks(this.bellTicks(mode))\n .data([\n [this.stdDev(-4), 0],\n [this.stdDev(-3), 0.3],\n [this.stdDev(-2), 5],\n [this.stdDev(-1), 68],\n [this.stdDev(0), 100],\n [this.stdDev(1), 68],\n [this.stdDev(2), 5],\n [this.stdDev(3), 0.3],\n [this.stdDev(4), 0]\n ])\n .resize({ width: this.width(), height: this.height() - this.candleHeight() })\n .render()\n ;\n }\n\n updateCandle() {\n const candleX = this._bellCurve.dataPos(this.quartile(0));\n const candleW = this._bellCurve.dataPos(this.quartile(4)) - candleX;\n this._candle\n .resize({ width: this.width(), height: this.candleHeight() })\n .pos({ x: (candleX + candleW / 2) + 2, y: this.candleHeight() / 2 })\n .width(candleW)\n .candleWidth(this.candleHeight())\n .data(this.quartiles())\n .render()\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._tickFormatter = myFormatter(this.tickFormat());\n if (this.data()[0] && this.data()[0].length === 7) {\n this.quartiles(this.data()[0].slice(0, 5));\n this.mean(this.data()[0][5]);\n this.standardDeviation(this.data()[0][6]);\n }\n this.updateScatter();\n this.updateCandle();\n }\n}\nexport interface StatChart {\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n}\nStatChart.prototype.publish(\"tickFormat\", \".2e\", \"string\", \"X-Axis Tick Format\");\nStatChart.prototype.publish(\"candleHeight\", 20, \"number\", \"Height of candle widget (pixels)\");\nStatChart.prototype.publish(\"domainPadding\", 10, \"number\", \"Domain value padding\");\n","import { Scatter } from \"./Scatter\";\n\nexport class Step extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"step\")\n ;\n }\n}\nStep.prototype._class += \" chart_Step\";\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Summary.css\";\n\nconst TEXT = \"text\";\nconst HTML = \"html\";\n\nexport class Summary extends HTMLWidget {\n protected _playIntervalIdx = 0;\n protected _mainDiv;\n protected _headerDiv;\n protected _textDiv;\n\n constructor() {\n super();\n this._tag = \"div\";\n\n this._drawStartPos = \"center\";\n this.playInterval(this.playInterval());\n }\n\n lookupFieldIdx(propID, defaultIdx?: number) {\n let retVal = defaultIdx;\n if (this[propID + \"_exists\"]()) {\n retVal = this.columns().indexOf(this[propID]());\n if (retVal < 0) {\n return undefined;\n }\n }\n return retVal;\n }\n\n lookupFieldText(propID, defaultIdx?: number) {\n if (this[propID + \"_exists\"]()) {\n return this[propID]();\n }\n if (defaultIdx !== undefined) {\n return this.columns()[defaultIdx] || \"\";\n }\n return \"\";\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n summaryData() {\n let labelFieldIdx; // undefined\n if (!this.hideLabel()) {\n labelFieldIdx = this.lookupFieldIdx(\"labelColumn\", 0);\n }\n const iconFieldIdx = this.lookupFieldIdx(\"iconColumn\");\n const valueFieldIdx = this.lookupFieldIdx(\"valueColumn\", 1);\n let moreIconIdx; // undefined\n let moreTextIdx; // undefined\n if (!this.hideMore()) {\n moreIconIdx = this.lookupFieldIdx(\"moreIconColumn\");\n moreTextIdx = this.lookupFieldIdx(\"moreTextColumn\");\n }\n const colorFillIdx = this.lookupFieldIdx(\"colorFillColumn\");\n const colorStrokeIdx = this.lookupFieldIdx(\"colorStrokeColumn\");\n return this.formattedData().map(function (row) {\n return {\n icon: iconFieldIdx === undefined ? this.icon() : row[iconFieldIdx],\n label: labelFieldIdx === undefined ? \"\" : row[labelFieldIdx],\n value: row[valueFieldIdx],\n moreIcon: moreIconIdx === undefined ? (this.hideMore() ? \"\" : this.moreIcon()) : row[moreIconIdx],\n moreText: moreTextIdx === undefined ? (this.hideMore() ? \"\" : this.moreText()) : row[moreTextIdx],\n fill: colorFillIdx === undefined ? this.colorFill() : row[colorFillIdx],\n stroke: colorStrokeIdx === undefined ? this.colorStroke() : row[colorStrokeIdx]\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._mainDiv = element.append(\"div\")\n ;\n const context = this;\n this._headerDiv = this._mainDiv.append(\"h2\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n ;\n this._textDiv = this._mainDiv.append(\"div\")\n .attr(\"class\", \"text\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this.data().length) {\n\n }\n const data = this.summaryData();\n if (this._playIntervalIdx >= data.length) {\n this._playIntervalIdx = 0;\n }\n const row: any = this._playIntervalIdx < data.length ? data[this._playIntervalIdx] : [\"\", \"\"];\n element\n .style(\"width\", this.fixedSize() ? this.minWidth_exists() ? this.minWidth() + \"px\" : null : \"100%\")\n .style(\"height\", this.fixedSize() ? this.minHeight_exists() ? this.minHeight() + \"px\" : null : \"100%\")\n ;\n this._mainDiv\n .attr(\"class\", \"content bgIcon \" + row.icon)\n .transition()\n .style(\"background-color\", row.fill)\n .style(\"color\", row.stroke)\n .style(\"min-width\", this.minWidth_exists() ? this.minWidth() + \"px\" : null)\n .style(\"min-height\", this.minHeight_exists() ? this.minHeight() + \"px\" : null)\n .style(\"font-size\", this.iconFontSize() + \"px\")\n ;\n this._headerDiv\n .transition()\n .style(\"color\", row.stroke)\n .style(\"font-size\", this.headerFontSize() + \"px\")\n [this.valueHTML() ? HTML : TEXT](row.value)\n ;\n this._textDiv\n .style(\"font-size\", this.textFontSize() + \"px\")\n [this.labelHTML() ? HTML : TEXT](row.label)\n ;\n const context = this;\n const moreDivs = this._mainDiv.selectAll(\".more\").data([row]);\n const moreDivsEnter = moreDivs.enter()\n .append(\"div\")\n .attr(\"class\", \"more\")\n .on(\"click\", function (d) {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"moreTextColumn\") || \"more\", true);\n })\n .each(function () {\n const element2 = d3Select(this);\n element2.append(\"i\");\n element2.append(\"span\");\n })\n ;\n const moreDivsUpdate = moreDivsEnter\n .merge(moreDivs)\n .style(\"display\", this.hideMoreWrapper() ? \"none\" : null)\n .style(\"font-size\", this.moreFontSize() + \"px\")\n .style(\"height\", this.moreWrapperHeight_exists() ? this.moreWrapperHeight() + \"px\" : null)\n .transition()\n .style(\"background-color\", d3Rgb(row.fill).darker(0.75).toString())\n ;\n moreDivsUpdate\n .select(\"i\")\n .attr(\"class\", function (d) {\n return \"fa \" + d.moreIcon;\n })\n ;\n if (this.moreTextHTML()) {\n moreDivsUpdate.select(\"span\")\n .each(function (d) {\n this.innerHTML = d.moreText;\n });\n } else {\n moreDivsUpdate.select(\"span\").text(d => d.moreText);\n }\n moreDivs.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nSummary.prototype._class += \" chart_Summary\";\nSummary.prototype.implements(I2DChart.prototype);\n\nexport interface Summary {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n\n headerFontSize(): number;\n headerFontSize(_: number): this;\n textFontSize(): number;\n textFontSize(_: number): this;\n moreFontSize(): number;\n moreFontSize(_: number): this;\n iconFontSize(): number;\n iconFontSize(_: number): this;\n\n hideLabel(): boolean;\n hideLabel(_: boolean): this;\n hideLabel_exists(): boolean;\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelHTML(): boolean;\n labelHTML(_: boolean): this;\n labelHTML_exists(): boolean;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueHTML(): boolean;\n valueHTML(_: boolean): this;\n valueHTML_exists(): boolean;\n\n hideMore(): boolean;\n hideMore(_: boolean): this;\n hideMore_exists(): boolean;\n hideMoreWrapper(): boolean;\n hideMoreWrapper(_: boolean): this;\n moreWrapperHeight(): number;\n moreWrapperHeight(_: number): this;\n moreWrapperHeight_exists(): boolean;\n moreIconColumn(): string;\n moreIconColumn(_: string): this;\n moreIconColumn_exists(): boolean;\n moreIcon(): string;\n moreIcon(_: string): this;\n moreIcon_exists(): boolean;\n moreTextColumn(): string;\n moreTextColumn(_: string): this;\n moreTextColumn_exists(): boolean;\n moreText(): string;\n moreText(_: string): this;\n moreText_exists(): boolean;\n moreTextHTML(): boolean;\n moreTextHTML(_: boolean): this;\n moreTextHTML_exists(): boolean;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n\n // I2DChart ---\n click(row, column, selected);\n dblclick(row, column, selected);\n}\n\nSummary.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummary.prototype.publish(\"headerFontSize\", null, \"number\", \"headerFontSize\");\nSummary.prototype.publish(\"textFontSize\", null, \"number\", \"textFontSize\");\nSummary.prototype.publish(\"moreFontSize\", null, \"number\", \"moreFontSize\");\nSummary.prototype.publish(\"iconFontSize\", null, \"number\", \"iconFontSize\");\n\nSummary.prototype.publish(\"hideLabel\", false, \"boolean\", \"Hide label column\");\nSummary.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideLabel() });\nSummary.prototype.publish(\"labelHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideLabel() });\n\nSummary.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"valueHTML\", false, \"boolean\", \"Allow HTML\");\n\nSummary.prototype.publish(\"hideMore\", false, \"boolean\", \"Hide More Information\");\nSummary.prototype.publish(\"hideMoreWrapper\", false, \"boolean\", \"Hide More Information Wrapper\");\nSummary.prototype.publish(\"moreWrapperHeight\", null, \"number\", \"Height of the 'more' text wrapper (pixels)\");\nSummary.prototype.publish(\"moreIconColumn\", null, \"set\", \"Select More Icon Column\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreIcon\", \"fa-info-circle\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.hideMore() || w.moreIconColumn() });\nSummary.prototype.publish(\"moreTextColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreText\", \"More Info\", \"string\", \"More text\", null, { disable: (w) => w.hideMore() || w.moreTextColumn() });\nSummary.prototype.publish(\"moreTextHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideMore() });\n\nSummary.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorFill\", \"#3498db\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorFillColumn() });\nSummary.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorStroke\", \"#ffffff\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummary.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummary.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummary.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummary.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nconst playInterval = Summary.prototype.playInterval;\nSummary.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { CanvasWidget, Utility } from \"@hpcc-js/common\";\n\nexport class SummaryC extends CanvasWidget {\n protected _playIntervalIdx = 0;\n\n constructor() {\n super();\n I2DChart.call(this);\n this.playInterval(this.playInterval());\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n enter(domNode, element) {\n super.enter.apply(this, arguments);\n const { width, height } = this.size();\n domNode.height = height;\n domNode.width = width;\n }\n\n update(domNode, element) {\n super.update.apply(this, arguments);\n const context = this;\n if (this._playIntervalIdx >= this.data().length) {\n this._playIntervalIdx = 0;\n }\n const size = this.size();\n const minDimension = Math.min(size.width, size.height);\n const sizeRatio = this.fontSizeRatio();\n const labelIdx = this.columns().indexOf(this.labelColumn());\n const valueIdx = this.columns().indexOf(this.valueColumn());\n const bgColorIdx = this.columns().indexOf(this.colorFillColumn());\n const fontColorIdx = this.columns().indexOf(this.colorStrokeColumn());\n const iconIdx = this.columns().indexOf(this.iconColumn());\n const icon = iconIdx !== -1 ? this.currentRow()[iconIdx] : this.icon();\n const label = labelIdx !== -1 ? this.currentRow()[labelIdx] : \"\";\n const value = valueIdx !== -1 ? this.currentRow()[valueIdx] : \"\";\n const bgColor = bgColorIdx !== -1 ? this.currentRow()[bgColorIdx] : this.colorFill();\n const fontColor = fontColorIdx !== -1 ? this.currentRow()[fontColorIdx] : this.colorStroke();\n\n let mainFontSize = size.height * (sizeRatio - this.paddingSizeRatio());\n const subFontSize = size.height * (1 - sizeRatio - this.paddingSizeRatio());\n const iconSize = size.height * (this.iconSizeRatio() - this.paddingSizeRatio());\n const p = minDimension * this.paddingSizeRatio();\n const ctx = domNode.getContext(\"2d\");\n\n ctx.clearRect(0, 0, size.width, size.height);\n\n const fontFamily = context.fontFamily();\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size.width, size.height);\n\n ctx.globalAlpha = this.iconOpacity();\n drawIcon(Utility.faChar(icon), iconSize, context.iconAnchor());\n\n ctx.globalAlpha = this.valueOpacity();\n mainFontSize = drawText(value, p, mainFontSize, context.valueAnchor());\n\n ctx.globalAlpha = this.labelOpacity();\n drawText(label, mainFontSize + p, subFontSize, context.labelAnchor());\n\n function drawText(text, y, fontSize, anchorMode) {\n ctx.textBaseline = \"top\";\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n fontSize = fontSize * fontSizeMult;\n ctx.font = `${fontSize}px ${fontFamily}`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n ctx.fillText(text, x, y);\n return fontSize;\n }\n\n function drawIcon(text, fontSize, anchorMode) {\n if (typeof text === \"undefined\") return;\n ctx.textBaseline = context.iconBaseline();\n ctx.font = `${fontSize}px FontAwesome`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n ctx.font = `${fontSize * fontSizeMult}px FontAwesome`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n const y = getTextOffsetY(context.iconBaseline());\n ctx.fillText(text, x, y);\n }\n\n function getTextOffsetX(width, anchorMode) {\n switch (anchorMode) {\n case \"start\":\n return p;\n case \"middle\":\n return (size.width / 2) - (width / 2);\n case \"end\":\n return size.width - width - p;\n }\n }\n function getTextOffsetY(anchorMode) {\n switch (anchorMode) {\n case \"top\":\n return p;\n case \"middle\":\n return size.height / 2;\n case \"bottom\":\n return size.height - p;\n }\n }\n }\n}\nSummaryC.prototype._class += \" chart_SummaryC\";\nSummaryC.prototype.implements(I2DChart.prototype);\n\nexport interface SummaryC {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n iconOpacity(): number;\n iconOpacity(_: number): this;\n\n fontFamily(): string;\n fontFamily(_: string): this;\n\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelOpacity(): number;\n labelOpacity(_: number): this;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueOpacity(): number;\n valueOpacity(_: number): this;\n\n fontSizeRatio(): number;\n fontSizeRatio(_: number): this;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n paddingSizeRatio(): number;\n paddingSizeRatio(_: number): this;\n iconSizeRatio(): number;\n iconSizeRatio(_: number): this;\n\n iconAnchor(): \"start\" | \"middle\" | \"end\";\n iconAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n labelAnchor(): \"start\" | \"middle\" | \"end\";\n labelAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n\n iconBaseline(): \"top\" | \"middle\" | \"bottom\";\n iconBaseline(_: \"top\" | \"middle\" | \"bottom\"): this;\n}\n\nSummaryC.prototype.publish(\"iconBaseline\", \"bottom\", \"string\", \"Text baseline for the icon\", [\"top\", \"middle\", \"bottom\"]);\nSummaryC.prototype.publish(\"iconAnchor\", \"end\", \"set\", \"Anchors the icon either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"valueAnchor\", \"start\", \"set\", \"Anchors the value either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"labelAnchor\", \"start\", \"set\", \"Anchors the label either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummaryC.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Font Family\");\n\nSummaryC.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\n\nSummaryC.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for background color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorFill\", \"#0097e6\", \"html-color\", \"Background Color\", null, { disable: (w) => w.colorFillColumn() });\nSummaryC.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for font color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorStroke\", \"#2f3640\", \"html-color\", \"Font Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummaryC.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummaryC.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummaryC.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummaryC.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nSummaryC.prototype.publish(\"fontSizeRatio\", 0.618, \"number\", \"Ratio between widget height and value font size\");\nSummaryC.prototype.publish(\"valueOpacity\", 1, \"number\", \"Opacity of value text (0..1)\");\nSummaryC.prototype.publish(\"labelOpacity\", 0.9, \"number\", \"Opacity of label text (0..1)\");\nSummaryC.prototype.publish(\"iconOpacity\", 0.3, \"number\", \"Opacity of icon text (0..1)\");\n\nSummaryC.prototype.publish(\"paddingSizeRatio\", 0.1, \"number\", \"Ratio of the smallest dimension for edge padding (0..1)\");\nSummaryC.prototype.publish(\"iconSizeRatio\", 0.9, \"number\", \"Ratio of the height for icon size (0..1)\");\n\nconst playInterval = SummaryC.prototype.playInterval;\nSummaryC.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, InputField, SVGWidget, Utility, zoom as d3Zoom } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { d3Cloud } from \"./D3Cloud\";\n\nimport \"../src/WordCloud.css\";\n\nexport class WordCloud extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n private _prevOffsetX;\n private _prevOffsetY;\n private _prevZoom;\n private _root;\n private _canvas;\n private _d3Cloud;\n private _d3Zoom;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._prevOffsetX = this.offsetX();\n this._prevOffsetY = this.offsetY();\n this._prevZoom = this.zoom();\n }\n\n calcData() {\n return this.data().map(row => {\n return {\n __viz_label: row[0],\n __viz_weight: row[1],\n __viz_row: row\n };\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this._root = element.append(\"g\");\n this._canvas = document.createElement(\"canvas\");\n\n const context = this;\n this._d3Zoom = d3Zoom()\n .scaleExtent([0.1, 10])\n ;\n this._d3Zoom\n .on(\"zoom\", function (evt) {\n const event = d3Event();\n if (event && event.transform) {\n context.zoomed(context._d3Zoom, [event.transform.x, event.transform.y], event.transform.k);\n }\n })\n ;\n element.call(this._d3Zoom);\n\n this\n .tooltipHTML(function (d) {\n const columns = context.columns();\n const series = columns && columns.length ? columns[0] : \"Word\";\n return context.tooltipFormat({ label: d.__viz_label, series, value: d.__viz_weight });\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._d3Cloud = d3Cloud()\n .canvas(() => this._canvas)\n ;\n\n this.zoomed(this, [this.offsetX(), this.offsetY()], this.zoom());\n\n const data = this.calcData();\n const context = this;\n const extent = d3Extent(data, function (d: any) { return d.__viz_weight; });\n let scaler;\n switch (this.scaleMode()) {\n case \"log\":\n scaler = d3ScaleLog;\n break;\n case \"sqrt\":\n scaler = d3ScaleSqrt;\n break;\n case \"pow\":\n scaler = d3ScalePow;\n break;\n case \"linear\":\n default:\n scaler = d3ScaleLinear;\n break;\n }\n const scale = scaler().domain(extent).range([this.fontSizeFrom(), this.fontSizeTo()]);\n const angleDomain = d3ScaleLinear().domain([0, context.angleCount() - 1]).range([context.angleFrom(), context.angleTo()]);\n\n this._d3Cloud.stop()\n .size([this.width(), this.height()])\n .words(data)\n .font(this.fontFamily())\n .padding(this.padding())\n .spiral(this.spiral())\n .text(function (d) {\n return d.__viz_label.trim();\n })\n .fontSize(function (d) {\n return scale(d.__viz_weight);\n })\n .rotate((d, i) => angleDomain(i % context.angleCount()))\n .on(\"word\", w => {\n })\n .on(\"end\", draw)\n .start()\n ;\n\n function draw(data, bounds) {\n const text = context._root.selectAll(\"text\")\n .data(data, function (d) { return d.__viz_label ? d.__viz_label.toLowerCase() : \"\"; })\n ;\n text.enter().append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .call(context._selection.enter.bind(context._selection))\n .text(function (d) { return d.__viz_label; })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .style(\"opacity\", 1e-6)\n .merge(text)\n .style(\"font-size\", function (d) { return scale(d.__viz_weight) + \"px\"; })\n .style(\"font-family\", context.fontFamily())\n .transition().duration(1000)\n .attr(\"transform\", function (d) { return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\"; })\n .style(\"fill\", function (d) { return context._palette(d.__viz_label ? d.__viz_label.toLowerCase() : \"\"); })\n .style(\"opacity\", 1)\n ;\n text.exit().transition().duration(1000)\n .style(\"opacity\", 1e-4)\n .remove()\n ;\n }\n }\n\n zoomed(source, translate, scale) {\n if (translate[0] !== this._prevOffsetX || translate[1] !== this._prevOffsetY || scale !== this._prevZoom) {\n this._root.attr(\"transform\", translate);\n switch (source) {\n case this:\n /*\n this._d3Zoom\n .scale(scale)\n .translate(translate)\n ;\n */\n break;\n case this._d3Zoom:\n this.offsetX(translate[0]);\n this.offsetY(translate[1]);\n this.zoom(scale);\n break;\n }\n this._prevOffsetX = translate[0];\n this._prevOffsetY = translate[1];\n this._prevZoom = scale;\n }\n }\n\n paletteID: { (): string; (_: string): WordCloud };\n paletteID_exists: () => boolean;\n useClonedPalette: { (): boolean; (_: boolean): WordCloud };\n useClonedPalette_exists: () => boolean;\n fontFamily: { (): string; (_: string): WordCloud };\n fontFamily_exists: () => boolean;\n fontSizeFrom: { (): number; (_: number): WordCloud };\n fontSizeFrom_exists: () => boolean;\n fontSizeTo: { (): number; (_: number): WordCloud };\n fontSizeTo_exists: () => boolean;\n angleFrom: { (): number; (_: number): WordCloud };\n angleFrom_exists: () => boolean;\n angleTo: { (): number; (_: number): WordCloud };\n angleTo_exists: () => boolean;\n angleCount: { (): number; (_: number): WordCloud };\n angleCount_exists: () => boolean;\n padding: { (): number; (_: number): WordCloud };\n padding_exists: () => boolean;\n scaleMode: { (): string; (_: string): WordCloud };\n scaleMode_exists: () => boolean;\n spiral: { (): string; (_: string): WordCloud };\n spiral_exists: () => boolean;\n offsetX: { (): number; (_: number): WordCloud };\n offsetX_exists: () => boolean;\n offsetY: { (): number; (_: number): WordCloud };\n offsetY_exists: () => boolean;\n zoom: { (): number; (_: number): WordCloud };\n zoom_exists: () => boolean;\n\n // I2DChart\n _palette;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_?) => any;\n tooltipFormat: (opts) => any;\n tooltipStyle: { (): string; (_: string): WordCloud };\n tooltipStyle_exists: () => boolean;\n tooltipValueFormat: { (): string; (_: string): WordCloud };\n tooltipValueFormat_exists: () => boolean;\n tooltipSeriesColor: { (): string; (_: string): WordCloud };\n tooltipSeriesColor_exists: () => boolean;\n tooltipLabelColor: { (): string; (_: string): WordCloud };\n tooltipLabelColor_exists: () => boolean;\n tooltipValueColor: { (): string; (_: string): WordCloud };\n tooltipValueColor_exists: () => boolean;\n tooltipTick: { (): boolean; (_: boolean): WordCloud };\n tooltipTick_exists: () => boolean;\n tooltipOffset: { (): number; (_: number): WordCloud };\n tooltipOffset_exists: () => boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nWordCloud.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", WordCloud.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nWordCloud.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nWordCloud.prototype.publish(\"fontFamily\", \"Impact\", \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeFrom\", 6, \"number\", \"Minimum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeTo\", 48, \"number\", \"Maximum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleFrom\", -60, \"number\", \"Minimum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleTo\", 60, \"number\", \"Maximum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleCount\", 5, \"number\", \"Number of different angles\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"padding\", 0, \"number\", \"Padding between words (pixels)\", null, { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"scaleMode\", \"linear\", \"set\", \"Text scaling mode\", [\"linear\", \"log\", \"sqrt\", \"pow\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"spiral\", \"archimedean\", \"set\", \"Text scaling mode\", [\"archimedean\", \"rectangular\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"offsetX\", 0, \"number\", \"X offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"offsetY\", 0, \"number\", \"Y offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"zoom\", 1, \"number\", \"Zoom\", null, { tags: [\"Advanced\"] });\n"],"mappings":"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"}