@hpcc-js/chart 3.5.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -2
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +4 -4
- package/src/Column.css +34 -6
- package/src/Column.ts +261 -236
- package/src/Pie.css +32 -5
- package/src/Pie.ts +48 -9
- package/src/Scatter.css +30 -3
- package/src/Scatter.ts +26 -1
- package/src/XYAxis.ts +6 -0
- package/types/Pie.d.ts +13 -4
- package/types/Scatter.d.ts +1 -0
- package/types/XYAxis.d.ts +2 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../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/area.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/pie.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","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.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/hierarchy/index.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/area.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/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","../../../node_modules/d3-geo/src/path/index.js","../src/Contour.ts","../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/line.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/indexRollupNext.js","../src/Gauge.ts","../src/Pie.ts","../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","../src/timeFormats.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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","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","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","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","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","import { 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 _origType;\n _origTimePattern;\n\n protected parser;\n protected parserInvert;\n protected formatter: ((d: Date | any) => string) | null;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n protected _tickFormatFunc?: (d: any) => string;\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 tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickFormatFunc(fn?: (d: any) => string): this | ((d: any) => string) | undefined {\n if (!arguments.length) return this._tickFormatFunc;\n this._tickFormatFunc = fn;\n this.updateScale();\n return this;\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 if (this._tickFormatFunc) {\n this.formatter = this._tickFormatFunc;\n } else {\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n }\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}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_default(): string;\n orientation_default(_: string): this;\n powExponent(): number;\n powExponent(_: number): this;\n logBase(): number;\n logBase(_: number): this;\n ordinals(): string[];\n ordinals(_: string[]): this;\n ordinals_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n fontFamily(): string;\n fontFamily(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tickFormat_reset(): void;\n tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickLength(): number;\n tickLength(_: number): this;\n tickLength_exists(): boolean;\n ticks(): Array<{ value: string, label: string }>;\n ticks(_: Array<{ value: string, label: string }>): this;\n low(): any;\n low(_: any): this;\n low_exists(): boolean;\n high(): any;\n high(_: any): this;\n high_exists(): boolean;\n overlapMode(): string;\n overlapMode(_: string): this;\n overlapMode_default(): string;\n overlapMode_default(_: string): this;\n labelRotation(): number;\n labelRotation(_: number): this;\n shrinkToFit(): string;\n shrinkToFit(_: string): this;\n shrinkToFit_default(): string;\n shrinkToFit_default(_: string): this;\n extend(): number;\n extend(_: number): this;\n extend_default(): number;\n extend_default(_: number): this;\n hidden(): boolean;\n hidden(_: boolean): this;\n\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(\"type\", \"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"]);\nAxis.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" });\nAxis.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse\");\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'\");\n\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\nAxis.prototype._origType = Axis.prototype.type;\nAxis.prototype.type = function (_?: string) {\n const retVal = Axis.prototype._origType.apply(this, arguments);\n if (_ !== undefined) {\n this._type = _;\n this.updateScale();\n }\n return retVal;\n};\n\nAxis.prototype._origTimePattern = Axis.prototype.timePattern;\nAxis.prototype.timePattern = function (_?: string) {\n const retVal = Axis.prototype._origTimePattern.apply(this, arguments);\n if (_ !== undefined) {\n this._timePattern = _;\n this.updateScale();\n }\n return retVal;\n};\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.ts\";\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\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 _palette;\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.ts\";\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}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\n\nexport interface Scatter {\n\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\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n pointSizeScale(): string;\n pointSizeScale(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n interpolate(): string;\n interpolate(_: string): this;\n interpolate_default(): string;\n interpolate_default(_: string): this;\n interpolateFill(): boolean;\n interpolateFill(_: boolean): this;\n interpolateFill_default(): boolean;\n interpolateFill_default(_: boolean): this;\n interpolateFillOpacity(): number;\n interpolateFillOpacity(_: number): this;\n\n // INDChart\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.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 { Scatter } from \"./Scatter.ts\";\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.ts\";\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}\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 // INDChart ---\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 tooltipStyle(_: \"default\" | \"none\" | \"series-table\"): 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.ts\";\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","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.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 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}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Bubble {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\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}\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.ts\";\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, 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\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\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\nexport interface Bullet {\n titleColumn(): string;\n titleColumn(_: string): this;\n subtitleColumn(): string;\n subtitleColumn(_: string): this;\n rangesColumn(): string;\n rangesColumn(_: string): this;\n measuresColumn(): string;\n measuresColumn(_: string): this;\n markersColumn(): string;\n markersColumn(_: string): this;\n}\n\nBullet.prototype.publish(\"titleColumn\", null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"subtitleColumn\", null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"rangesColumn\", null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"measuresColumn\", null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"markersColumn\", null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true });\n\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(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","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","// 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 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 { 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.ts\";\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 { Bar } from \"./Bar.ts\";\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","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","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","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport { arc, curveCatmullRom, curveLinear, line } from 'd3-shape';\nimport { dispatch } from 'd3-dispatch';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar Annotation = function () {\n function Annotation(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n nx = _ref.nx,\n ny = _ref.ny,\n _ref$dy = _ref.dy,\n dy = _ref$dy === undefined ? 0 : _ref$dy,\n _ref$dx = _ref.dx,\n dx = _ref$dx === undefined ? 0 : _ref$dx,\n _ref$color = _ref.color,\n color = _ref$color === undefined ? \"grey\" : _ref$color,\n data = _ref.data,\n type = _ref.type,\n subject = _ref.subject,\n connector = _ref.connector,\n note = _ref.note,\n disable = _ref.disable,\n id = _ref.id,\n className = _ref.className;\n classCallCheck(this, Annotation);\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 createClass(Annotation, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition();\n if (this.type.subject && this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawSubject();\n }\n }\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.type.clearComponents && this.type.clearComponents();\n }\n }, {\n key: \"updateOffset\",\n value: function 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 key: \"className\",\n get: function get$$1() {\n return this._className;\n },\n set: function set$$1(className) {\n this._className = className;\n if (this.type.setClassName) this.type.setClassName();\n }\n }, {\n key: \"type\",\n get: function get$$1() {\n return this._type;\n },\n set: function set$$1(type) {\n this._type = type;\n this.clearComponents();\n }\n }, {\n key: \"x\",\n get: function get$$1() {\n return this._x;\n },\n set: function set$$1(x) {\n this._x = x;\n this.updatePosition();\n }\n }, {\n key: \"y\",\n get: function get$$1() {\n return this._y;\n },\n set: function set$$1(y) {\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"color\",\n get: function get$$1() {\n return this._color;\n },\n set: function set$$1(color) {\n this._color = color;\n this.updatePosition();\n }\n }, {\n key: \"dx\",\n get: function get$$1() {\n return this._dx;\n },\n set: function set$$1(dx) {\n this._dx = dx;\n this.updateOffset();\n }\n }, {\n key: \"dy\",\n get: function get$$1() {\n return this._dy;\n },\n set: function set$$1(dy) {\n this._dy = dy;\n this.updateOffset();\n }\n }, {\n key: \"nx\",\n set: function set$$1(nx) {\n this._dx = nx - this._x;\n this.updateOffset();\n }\n }, {\n key: \"ny\",\n set: function set$$1(ny) {\n this._dy = ny - this._y;\n this.updateOffset();\n }\n }, {\n key: \"offset\",\n get: function get$$1() {\n return { x: this._dx, y: this._dy };\n },\n set: function set$$1(_ref2) {\n var x = _ref2.x,\n y = _ref2.y;\n\n this._dx = x;\n this._dy = y;\n this.updateOffset();\n }\n }, {\n key: \"position\",\n get: function get$$1() {\n return { x: this._x, y: this._y };\n },\n set: function set$$1(_ref3) {\n var x = _ref3.x,\n y = _ref3.y;\n\n this._x = x;\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"translation\",\n get: function get$$1() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n };\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var 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 return Annotation;\n}();\n\nvar AnnotationCollection = function () {\n function AnnotationCollection(_ref) {\n var annotations = _ref.annotations,\n accessors = _ref.accessors,\n accessorsInverse = _ref.accessorsInverse;\n classCallCheck(this, AnnotationCollection);\n\n this.accessors = accessors;\n this.accessorsInverse = accessorsInverse;\n this.annotations = annotations;\n }\n\n createClass(AnnotationCollection, [{\n key: \"clearTypes\",\n value: function clearTypes(newSettings) {\n this.annotations.forEach(function (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 key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors() {\n var _this = this;\n\n this.annotations.forEach(function (d) {\n d.type.setPositionWithAccessors(_this.accessors);\n });\n }\n }, {\n key: \"editMode\",\n value: function editMode(_editMode) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.editMode = _editMode;\n a.type.updateEditMode();\n }\n });\n }\n }, {\n key: \"updateDisable\",\n value: function updateDisable(disable) {\n this.annotations.forEach(function (a) {\n a.disable = disable;\n if (a.type) {\n disable.forEach(function (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 key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap);\n }\n });\n }\n }, {\n key: \"updateText\",\n value: function updateText() {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.drawText) {\n a.type.drawText();\n }\n });\n }\n }, {\n key: \"updateNotePadding\",\n value: function updateNotePadding(notePadding) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.notePadding = notePadding;\n }\n });\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var _this2 = this;\n\n return this.annotations.map(function (a) {\n var json = a.json;\n if (_this2.accessorsInverse && a.data) {\n json.data = {};\n Object.keys(_this2.accessorsInverse).forEach(function (k) {\n json.data[k] = _this2.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 key: \"noteNodes\",\n get: function get$$1() {\n return this.annotations.map(function (a) {\n return _extends({}, a.type.getNoteBBoxOffset(), { positionX: a.x, positionY: a.y });\n });\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 }]);\n return AnnotationCollection;\n}();\n\nvar pointHandle = function pointHandle(_ref) {\n var _ref$cx = _ref.cx,\n cx = _ref$cx === undefined ? 0 : _ref$cx,\n _ref$cy = _ref.cy,\n cy = _ref$cy === undefined ? 0 : _ref$cy;\n\n return { move: { x: cx, y: cy } };\n};\n\nvar circleHandles = function circleHandles(_ref2) {\n var _ref2$cx = _ref2.cx,\n cx = _ref2$cx === undefined ? 0 : _ref2$cx,\n _ref2$cy = _ref2.cy,\n cy = _ref2$cy === undefined ? 0 : _ref2$cy,\n r1 = _ref2.r1,\n r2 = _ref2.r2,\n padding = _ref2.padding;\n\n var 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\n\n\n\n\n//arc handles\nvar addHandles = function addHandles(_ref5) {\n var group = _ref5.group,\n handles = _ref5.handles,\n _ref5$r = _ref5.r,\n r = _ref5$r === undefined ? 10 : _ref5$r;\n\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n var h = group.selectAll(\"circle.handle\").data(handles);\n\n h.enter().append(\"circle\").attr(\"class\", \"handle\").attr(\"fill\", \"grey\").attr(\"fill-opacity\", 0.1).attr(\"cursor\", \"move\").attr(\"stroke-dasharray\", 5).attr(\"stroke\", \"grey\").call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return d.start && d.start(d);\n }).on(\"drag\", function (d) {\n return d.drag && d.drag(d);\n }).on(\"end\", function (d) {\n return d.end && d.end(d);\n }));\n\n group.selectAll(\"circle.handle\").attr(\"cx\", function (d) {\n return d.x;\n }).attr(\"cy\", function (d) {\n return d.y;\n }).attr(\"r\", function (d) {\n return d.r || r;\n }).attr(\"class\", function (d) {\n return \"handle \" + (d.className || \"\");\n });\n\n h.exit().remove();\n};\n\nvar leftRightDynamic = function leftRightDynamic(align, y) {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) {\n align = \"top\";\n } else {\n align = \"bottom\";\n }\n }\n return align;\n};\n\nvar topBottomDynamic = function topBottomDynamic(align, x) {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) {\n align = \"right\";\n } else {\n align = \"left\";\n }\n }\n return align;\n};\n\nvar orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"];\nvar orientationLeftRight = [\"leftRight\", \"left\", \"right\"];\n\nvar noteAlignment = (function (_ref) {\n var _ref$padding = _ref.padding,\n padding = _ref$padding === undefined ? 0 : _ref$padding,\n _ref$bbox = _ref.bbox,\n bbox = _ref$bbox === undefined ? { x: 0, y: 0, width: 0, height: 0 } : _ref$bbox,\n align = _ref.align,\n orientation = _ref.orientation,\n _ref$offset = _ref.offset,\n offset = _ref$offset === undefined ? { x: 0, y: 0 } : _ref$offset;\n\n var x = -bbox.x;\n var 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 } 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: x, y: y };\n});\n\nvar lineBuilder = function lineBuilder(_ref) {\n var data = _ref.data,\n _ref$curve = _ref.curve,\n curve = _ref$curve === undefined ? curveLinear : _ref$curve,\n canvasContext = _ref.canvasContext,\n className = _ref.className,\n classID = _ref.classID;\n\n var lineGen = line().curve(curve);\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n if (canvasContext) {\n lineGen.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n builder.attrs = {\n d: lineGen(data)\n };\n }\n\n return builder;\n};\n\nvar arcBuilder = function arcBuilder(_ref2) {\n var data = _ref2.data,\n canvasContext = _ref2.canvasContext,\n className = _ref2.className,\n classID = _ref2.classID;\n\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n var arcShape = arc().innerRadius(data.innerRadius || 0).outerRadius(data.outerRadius || data.radius || 2).startAngle(data.startAngle || 0).endAngle(data.endAngle || 2 * Math.PI);\n\n if (canvasContext) {\n arcShape.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n\n builder.attrs = {\n d: arcShape()\n };\n }\n\n return builder;\n};\n\nvar noteVertical = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n bbox = _ref.bbox,\n offset = _ref.offset;\n\n align = leftRightDynamic(align, offset.y);\n\n if (align === \"top\") {\n y -= bbox.height;\n } else if (align === \"middle\") {\n y -= bbox.height / 2;\n }\n\n var data = [[x, y], [x, y + bbox.height]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar noteHorizontal = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n offset = _ref.offset,\n bbox = _ref.bbox;\n\n align = topBottomDynamic(align, offset.x);\n\n if (align === \"right\") {\n x -= bbox.width;\n } else if (align === \"middle\") {\n x -= bbox.width / 2;\n }\n\n var data = [[x, y], [x + bbox.width, y]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar lineSetup = function lineSetup(_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var h = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n var angle = Math.asin(-y2 / h);\n var 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 if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\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;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;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n return [[x1, y1], [x2, y2]];\n};\n\nvar connectorLine = (function (connectorData) {\n var data = lineSetup(connectorData);\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorElbow = (function (_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\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;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;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n var data = [[x1, y1], [x2, y2]];\n\n var diffY = y2 - y1;\n var diffX = x2 - x1;\n var xe = x2;\n var ye = y2;\n var 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 var r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0);\n var 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 } else if (Math.abs(diffX) > Math.abs(diffY)) {\n var 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 var _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: data, className: \"connector\" })] };\n});\n\nvar connectorCurve = (function (_ref) {\n var type = _ref.type,\n connectorData = _ref.connectorData,\n subjectType = _ref.subjectType;\n\n\n if (!connectorData) {\n connectorData = {};\n }\n if (!connectorData.points || typeof connectorData.points === \"number\") {\n connectorData.points = createPoints(type.annotation.offset, connectorData.points);\n }\n if (!connectorData.curve) {\n connectorData.curve = curveCatmullRom;\n }\n\n var handles = [];\n\n if (type.editMode) {\n var cHandles = connectorData.points.map(function (c, i) {\n return _extends({}, pointHandle({ cx: c[0], cy: c[1] }), { index: i });\n });\n\n var updatePoint = function 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.map(function (h) {\n return _extends({}, h.move, { drag: updatePoint.bind(type, h.index) });\n }));\n }\n\n var data = lineSetup({ type: type, subjectType: subjectType });\n data = [data[0]].concat(toConsumableArray(connectorData.points), [data[1]]);\n var components = [lineBuilder({ data: data, curve: connectorData.curve, className: \"connector\" })];\n\n return { components: components, handles: handles };\n});\n\nvar createPoints = function createPoints(offset) {\n var anchors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n var diff = { x: offset.x / (anchors + 1), y: offset.y / (anchors + 1) };\n var p = [];\n\n var 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};\n\nvar connectorArrow = (function (_ref) {\n var annotation = _ref.annotation,\n start = _ref.start,\n end = _ref.end,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var 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 var x1 = end[0],\n y1 = end[1];\n\n var dx = start[0];\n var dy = start[1];\n\n var size = 10 * scale;\n var angleOffset = 16 / 180 * Math.PI;\n var angle = Math.atan(dy / dx);\n\n if (dx < 0) {\n angle += Math.PI;\n }\n\n var data = [[x1, y1], [Math.cos(angle + angleOffset) * size + x1, Math.sin(angle + angleOffset) * size + y1], [Math.cos(angle - angleOffset) * size + x1, Math.sin(angle - angleOffset) * size + y1], [x1, y1]];\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: [lineBuilder({\n data: data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })]\n };\n});\n\nvar connectorDot = (function (_ref) {\n var line$$1 = _ref.line,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var 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$$1.data[0][0] + \", \" + line$$1.data[0][1] + \")\";\n\n return { components: [dot] };\n});\n\nvar subjectCircle = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20;\n }\n\n var handles = [];\n var c = arcBuilder({ data: subjectData, className: \"subject\" });\n if (type.editMode) {\n var h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n });\n\n var updateRadius = function updateRadius(attr) {\n var r = subjectData[attr] + event.dx * Math.sqrt(2);\n subjectData[attr] = r;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var cHandles = [_extends({}, h.r1, {\n drag: updateRadius.bind(type, subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\")\n })];\n\n if (subjectData.innerRadius) {\n cHandles.push(_extends({}, 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: handles };\n});\n\nvar subjectRect = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.width) {\n subjectData.width = 100;\n }\n if (!subjectData.height) {\n subjectData.height = 100;\n }\n\n var handles = [];\n var width = subjectData.width,\n height = subjectData.height;\n\n\n var data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]];\n var rect = lineBuilder({ data: data, className: \"subject\" });\n\n if (type.editMode) {\n var updateWidth = function updateWidth() {\n subjectData.width = event.x;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var updateHeight = function updateHeight() {\n subjectData.height = event.y;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var rHandles = [{ x: width, y: height / 2, drag: updateWidth.bind(type) }, { x: width / 2, y: height, drag: updateHeight.bind(type) }];\n\n handles = type.mapHandles(rHandles);\n }\n rect.attrs[\"fill-opacity\"] = 0.1;\n return { components: [rect], handles: handles };\n});\n\nvar subjectThreshold = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n var offset = type.annotation.position;\n\n var 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 var data = [[x1, y1], [x2, y2]];\n return { components: [lineBuilder({ data: data, className: 'subject' })] };\n});\n\nvar subjectBadge = (function (_ref) {\n var _ref$subjectData = _ref.subjectData,\n subjectData = _ref$subjectData === undefined ? {} : _ref$subjectData,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? {} : _ref$type;\n var annotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var 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 var handles = [];\n var components = [];\n var radius = subjectData.radius;\n var innerRadius = radius * 0.7;\n var x = 0;\n var y = 0;\n\n var notCornerOffset = Math.sqrt(2) * radius;\n var 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 var transform = \"translate(\" + x + \", \" + y + \")\";\n var circlebg = arcBuilder({ className: \"subject\", data: { radius: 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 var circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius: 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 var pointer = void 0;\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 var notCornerPointerXY = function notCornerPointerXY(v) {\n var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2);\n };\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [notCornerPointerXY(x), notCornerPointerXY(y)], [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)], [0, 0]]\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 var dragBadge = function dragBadge() {\n subjectData.x = event.x < -radius * 2 ? \"left\" : event.x > radius * 2 ? \"right\" : undefined;\n subjectData.y = event.y < -radius * 2 ? \"top\" : event.y > radius * 2 ? \"bottom\" : undefined;\n\n type.redrawSubject();\n };\n\n var 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 var text = void 0;\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: x,\n y: y\n }\n };\n }\n\n components.push(circlebg);\n components.push(circle);\n components.push(text);\n\n return { components: components, handles: handles };\n});\n\n//Note options\n//Connector options\n//Subject options\nvar Type = function () {\n function Type(_ref) {\n var a = _ref.a,\n annotation = _ref.annotation,\n editMode = _ref.editMode,\n dispatcher = _ref.dispatcher,\n notePadding = _ref.notePadding,\n accessors = _ref.accessors;\n classCallCheck(this, Type);\n\n this.a = a;\n\n this.note = annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\");\n this.noteContent = this.note && a.select(\"g.annotation-note-content\");\n this.connector = annotation.disable.indexOf(\"connector\") === -1 && a.select(\"g.annotation-connector\");\n this.subject = annotation.disable.indexOf(\"subject\") === -1 && a.select(\"g.annotation-subject\");\n this.dispatcher = dispatcher;\n\n if (dispatcher) {\n var 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 createClass(Type, [{\n key: \"init\",\n value: function 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 key: \"mapY\",\n value: function mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data);\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data);\n }\n }\n }, {\n key: \"updateEditMode\",\n value: function updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove();\n }\n }, {\n key: \"drawOnSVG\",\n value: function drawOnSVG(component, builders) {\n var _this = this;\n\n if (!Array.isArray(builders)) {\n builders = [builders];\n }\n\n builders.filter(function (b) {\n return b;\n }).forEach(function (_ref2) {\n var type = _ref2.type,\n className = _ref2.className,\n attrs = _ref2.attrs,\n handles = _ref2.handles,\n classID = _ref2.classID;\n\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles: handles });\n } else {\n newWithClass(component, [_this.annotation], type, className, classID);\n var el = component.select(type + \".\" + (classID || className));\n var addAttrs = Object.keys(attrs);\n var removeAttrs = [];\n\n var currentAttrs = el.node().attributes;\n for (var i = currentAttrs.length - 1; i >= 0; i--) {\n var name = currentAttrs[i].name;\n if (addAttrs.indexOf(name) === -1 && name !== \"class\") removeAttrs.push(name);\n }\n\n addAttrs.forEach(function (attr) {\n if (attr === \"text\") {\n el.text(attrs[attr]);\n } else {\n el.attr(attr, attrs[attr]);\n }\n });\n\n removeAttrs.forEach(function (attr) {\n return el.attr(attr, null);\n });\n }\n });\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n }, {\n key: \"getNoteBBox\",\n value: function getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\");\n }\n }, {\n key: \"getNoteBBoxOffset\",\n value: function getNoteBBoxOffset() {\n var bbox = bboxWithoutHandles(this.note, \".annotation-note-content\");\n var 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 key: \"drawSubject\",\n value: function drawSubject() {\n var _this2 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var subjectData = this.annotation.subject;\n var type = context.type;\n var subjectParams = { type: this, subjectData: subjectData };\n\n var subject = {};\n if (type === \"circle\") subject = subjectCircle(subjectParams);else if (type === \"rect\") subject = subjectRect(subjectParams);else if (type === \"threshold\") subject = subjectThreshold(subjectParams);else if (type === \"badge\") subject = subjectBadge(subjectParams, this.annotation);\n\n var _subject = subject,\n _subject$components = _subject.components,\n components = _subject$components === undefined ? [] : _subject$components,\n _subject$handles = _subject.handles,\n handles = _subject$handles === undefined ? [] : _subject$handles;\n\n components.forEach(function (c) {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = _this2.annotation.color;\n }\n });\n\n if (this.editMode) {\n handles = handles.concat(this.mapHandles([{ drag: this.dragSubject.bind(this) }]));\n components.push({ type: \"handle\", handles: handles });\n }\n\n return components;\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector() {\n var _this3 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var connectorData = this.annotation.connector;\n var type = connectorData.type || context.type;\n var connectorParams = { type: this, connectorData: connectorData };\n connectorParams.subjectType = this.typeSettings && this.typeSettings.subject && this.typeSettings.subject.type;\n\n var connector = {};\n if (type === \"curve\") connector = connectorCurve(connectorParams);else if (type === \"elbow\") connector = connectorElbow(connectorParams);else connector = connectorLine(connectorParams);\n var _connector = connector,\n _connector$components = _connector.components,\n components = _connector$components === undefined ? [] : _connector$components,\n _connector$handles = _connector.handles,\n handles = _connector$handles === undefined ? [] : _connector$handles;\n\n var line$$1 = components[0];\n //TODO: genericize this into fill t/f stroke t/f\n if (line$$1) {\n line$$1.attrs.stroke = this.annotation.color;\n line$$1.attrs.fill = \"none\";\n }\n var endType = connectorData.end || context.end;\n var end = {};\n if (endType === \"arrow\") {\n var s = line$$1.data[1];\n var e = line$$1.data[0];\n var distance = Math.sqrt(Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2));\n if (distance < 5 && line$$1.data[2]) {\n s = line$$1.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: line$$1, 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(function (c) {\n c.attrs.fill = _this3.annotation.color;\n c.attrs.stroke = _this3.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: handles });\n }\n return components;\n }\n }, {\n key: \"drawNote\",\n value: function drawNote() {\n var _this4 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var noteData = this.annotation.note;\n var align = noteData.align || context.align || \"dynamic\";\n var noteParams = {\n bbox: context.bbox,\n align: align,\n offset: this.annotation.offset\n };\n var lineType = noteData.lineType || context.lineType;\n var note = {};\n if (lineType === \"vertical\") note = noteVertical(noteParams);else if (lineType === \"horizontal\") note = noteHorizontal(noteParams);\n\n var _note = note,\n _note$components = _note.components,\n components = _note$components === undefined ? [] : _note$components,\n _note$handles = _note.handles,\n handles = _note$handles === undefined ? [] : _note$handles;\n\n components.forEach(function (c) {\n c.attrs.stroke = _this4.annotation.color;\n });\n\n if (this.editMode) {\n handles = this.mapHandles([{ x: 0, y: 0, drag: this.dragNote.bind(this) }]);\n components.push({ type: \"handle\", handles: handles });\n\n var dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this);\n this.note.call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return start(d);\n }).on(\"drag\", function (d) {\n return dragging(d);\n }).on(\"end\", function (d) {\n return end(d);\n }));\n } else {\n this.note.on(\"mousedown.drag\", null);\n }\n return components;\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n var noteData = this.annotation.note;\n var padding = noteData.padding !== undefined ? noteData.padding : this.notePadding;\n var orientation = noteData.orientation || context.orientation || \"topBottom\";\n var lineType = noteData.lineType || context.lineType;\n var align = noteData.align || context.align || \"dynamic\";\n\n if (lineType === \"vertical\") orientation = \"leftRight\";else if (lineType === \"horizontal\") orientation = \"topBottom\";\n\n var noteParams = {\n padding: padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation: orientation,\n align: align\n };\n\n var _noteAlignment = noteAlignment(noteParams),\n x = _noteAlignment.x,\n y = _noteAlignment.y;\n\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 key: \"drawOnScreen\",\n value: function drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction);\n }\n }, {\n key: \"redrawSubject\",\n value: function redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject());\n }\n }, {\n key: \"redrawConnector\",\n value: function redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector());\n }\n }, {\n key: \"redrawNote\",\n value: function redrawNote() {\n var bbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getNoteBBox();\n\n this.noteContent && this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox: bbox }));\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox: bbox }));\n }\n }, {\n key: \"setPosition\",\n value: function setPosition() {\n var position = this.annotation.position;\n this.a.attr(\"transform\", \"translate(\" + position.x + \", \" + position.y + \")\");\n }\n }, {\n key: \"clearComponents\",\n value: function 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 key: \"setOffset\",\n value: function setOffset() {\n if (this.note) {\n var offset = this.annotation.offset;\n this.note.attr(\"transform\", \"translate(\" + offset.x + \", \" + offset.y + \")\");\n }\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors);\n this.mapY(accessors);\n }\n this.setPosition();\n }\n }, {\n key: \"setClassName\",\n value: function setClassName() {\n this.a.attr(\"class\", \"annotation \" + (this.className && this.className()) + \" \" + (this.editMode ? \"editable\" : \"\") + \" \" + (this.annotation.className || \"\"));\n }\n }, {\n key: \"draw\",\n value: function draw() {\n this.setClassName();\n this.setPosition();\n this.setOffset();\n this.redrawSubject();\n this.redrawConnector();\n this.redrawNote();\n }\n }, {\n key: \"dragstarted\",\n value: function dragstarted() {\n event.sourceEvent.stopPropagation();\n this.dispatcher && 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 }, {\n key: \"dragended\",\n value: function 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 key: \"dragSubject\",\n value: function dragSubject() {\n var position = this.annotation.position;\n position.x += event.dx;\n position.y += event.dy;\n this.annotation.position = position;\n }\n }, {\n key: \"dragNote\",\n value: function dragNote() {\n var offset = this.annotation.offset;\n offset.x += event.dx;\n offset.y += event.dy;\n this.annotation.offset = offset;\n }\n }, {\n key: \"mapHandles\",\n value: function mapHandles(handles) {\n var _this5 = this;\n\n return handles.map(function (h) {\n return _extends({}, h, {\n start: _this5.dragstarted.bind(_this5),\n end: _this5.dragended.bind(_this5)\n });\n });\n }\n }]);\n return Type;\n}();\n\nvar customType = function customType(initialType, typeSettings, _init) {\n return function (_initialType) {\n inherits(customType, _initialType);\n\n function customType(settings) {\n classCallCheck(this, customType);\n\n var _this6 = possibleConstructorReturn(this, (customType.__proto__ || Object.getPrototypeOf(customType)).call(this, settings));\n\n _this6.typeSettings = typeSettings;\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(function (d) {\n _this6[d] && _this6[d].remove();\n\n _this6[d] = undefined;\n if (d === \"note\") {\n _this6.noteContent = undefined;\n }\n });\n }\n return _this6;\n }\n\n createClass(customType, [{\n key: \"className\",\n value: function className() {\n return \"\" + (typeSettings.className || get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this) && get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this).call(this) || \"\");\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject(context) {\n this.typeSettings.subject = _extends({}, typeSettings.subject, this.typeSettings.subject);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawSubject\", this).call(this, _extends({}, context, this.typeSettings.subject));\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector(context) {\n this.typeSettings.connector = _extends({}, typeSettings.connector, this.typeSettings.connector);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawConnector\", this).call(this, _extends({}, context, typeSettings.connector, this.typeSettings.connector));\n }\n }, {\n key: \"drawNote\",\n value: function drawNote(context) {\n this.typeSettings.note = _extends({}, typeSettings.note, this.typeSettings.note);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNote\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNoteContent\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }], [{\n key: \"init\",\n value: function init(annotation, accessors) {\n get(customType.__proto__ || Object.getPrototypeOf(customType), \"init\", this).call(this, annotation, accessors);\n if (_init) {\n annotation = _init(annotation, accessors);\n }\n return annotation;\n }\n }]);\n return customType;\n }(initialType);\n};\n\nvar d3NoteText = function (_Type) {\n inherits(d3NoteText, _Type);\n\n function d3NoteText(params) {\n classCallCheck(this, d3NoteText);\n\n var _this7 = possibleConstructorReturn(this, (d3NoteText.__proto__ || Object.getPrototypeOf(d3NoteText)).call(this, params));\n\n _this7.textWrap = params.textWrap || 120;\n _this7.drawText();\n return _this7;\n }\n\n createClass(d3NoteText, [{\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.textWrap = textWrap;\n this.drawText();\n }\n\n //TODO: add update text functionality\n\n }, {\n key: \"drawText\",\n value: function drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\");\n\n var noteContent = this.note.select(\"g.annotation-note-content\");\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-label\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-title\");\n\n var titleBBox = { height: 0 };\n var label = this.a.select(\"text.annotation-note-label\");\n var wrapLength = this.annotation.note && this.annotation.note.wrap || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrap || this.textWrap;\n\n var wrapSplitter = this.annotation.note && this.annotation.note.wrapSplitter || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrapSplitter;\n\n var bgPadding = this.annotation.note && this.annotation.note.bgPadding || this.typeSettings && this.typeSettings.note && this.typeSettings.note.bgPadding;\n\n var 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 === \"undefined\" ? \"undefined\" : _typeof(bgPadding)) === \"object\") {\n bgPaddingFinal = _extends(bgPaddingFinal, bgPadding);\n }\n\n if (this.annotation.note.title) {\n var 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 var bbox = this.getNoteBBox();\n\n this.a.select(\"rect.annotation-note-bg\").attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right).attr(\"height\", bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom).attr(\"x\", bbox.x - bgPaddingFinal.left).attr(\"y\", -bgPaddingFinal.top).attr(\"fill\", \"white\").attr(\"fill-opacity\", 0);\n }\n }\n }]);\n return d3NoteText;\n}(Type);\n\nvar d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n});\n\nvar d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n});\n\nvar d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n});\n\nvar d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n});\n\nvar d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar ThresholdMap = function (_d3Callout) {\n inherits(ThresholdMap, _d3Callout);\n\n function ThresholdMap() {\n classCallCheck(this, ThresholdMap);\n return possibleConstructorReturn(this, (ThresholdMap.__proto__ || Object.getPrototypeOf(ThresholdMap)).apply(this, arguments));\n }\n\n createClass(ThresholdMap, [{\n key: \"mapY\",\n value: function mapY(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapY\", this).call(this, accessors);\n var 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 key: \"mapX\",\n value: function mapX(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapX\", this).call(this, accessors);\n var 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 return ThresholdMap;\n}(d3Callout);\n\nvar d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n});\n\nvar newWithClass = function newWithClass(a, d, type, className, classID) {\n var group = a.selectAll(type + \".\" + (classID || className)).data(d);\n group.enter().append(type).merge(group).attr(\"class\", className);\n\n group.exit().remove();\n return a;\n};\n\nvar addHandlers = function addHandlers(dispatcher, annotation, _ref3) {\n var component = _ref3.component,\n name = _ref3.name;\n\n if (component) {\n component.on(\"mouseover.annotations\", function () {\n dispatcher.call(name + \"over\", component, annotation);\n }).on(\"mouseout.annotations\", function () {\n return dispatcher.call(name + \"out\", component, annotation);\n }).on(\"click.annotations\", function () {\n return dispatcher.call(name + \"click\", component, annotation);\n });\n }\n};\n\n//Text wrapping code adapted from Mike Bostock\nvar wrap = function wrap(text, width, wrapSplitter) {\n var lineHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1.2;\n\n text.each(function () {\n var text = select(this),\n words = text.text().split(wrapSplitter || /[ \\t\\r\\n]+/).reverse().filter(function (w) {\n return w !== \"\";\n });\n var word = void 0,\n line$$1 = [],\n tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", 0.8 + \"em\");\n\n while (word = words.pop()) {\n line$$1.push(word);\n tspan.text(line$$1.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line$$1.length > 1) {\n line$$1.pop();\n tspan.text(line$$1.join(\" \"));\n line$$1 = [word];\n tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n};\n\nvar bboxWithoutHandles = function bboxWithoutHandles(selection) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \":not(.handle)\";\n\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n return selection.selectAll(selector).nodes().reduce(function (p, c) {\n var 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 var yOffset = c && c.attributes && c.attributes.y;\n p.height = Math.max(p.height, (yOffset && parseFloat(yOffset.value) || 0) + bbox.height);\n return p;\n }, { x: 0, y: 0, width: 0, height: 0 });\n};\n\nfunction annotation() {\n var annotations = [],\n collection = void 0,\n context = void 0,\n //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids = void 0,\n type = d3Callout,\n textWrap = void 0,\n notePadding = void 0,\n annotationDispatcher = dispatch(\"subjectover\", \"subjectout\", \"subjectclick\", \"connectorover\", \"connectorout\", \"connectorclick\", \"noteover\", \"noteout\", \"noteclick\", \"dragend\", \"dragstart\"),\n sel = void 0;\n\n var annotation = function annotation(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 var translatedAnnotations = annotations.map(function (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 = collection || new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors: accessors,\n accessorsInverse: accessorsInverse,\n ids: ids\n });\n\n var annotationG = selection.selectAll(\"g\").data([collection]);\n annotationG.enter().append(\"g\").attr(\"class\", \"annotations\");\n\n var group = selection.select(\"g.annotations\");\n newWithClass(group, collection.annotations, \"g\", \"annotation\");\n\n var annotation = group.selectAll(\"g.annotation\");\n\n annotation.each(function (d) {\n var 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(a.select(\"g.annotation-note\"), [d], \"g\", \"annotation-note-content\");\n d.type = d.type.toString() === \"[object Object]\" ? d.type : new d.type({\n a: a,\n annotation: d,\n textWrap: textWrap,\n notePadding: notePadding,\n editMode: editMode,\n dispatcher: annotationDispatcher,\n accessors: 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(\"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.\", collection.json);\n /* eslint-enable no-console */\n window.copy(JSON.stringify(collection.json.map(function (a) {\n delete a.type;\n return a;\n })));\n return annotation;\n };\n\n annotation.update = function () {\n if (annotations && collection) {\n annotations = collection.annotations.map(function (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(function (a) {\n a.type.note && 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) return collection && collection.annotations || annotations;\n annotations = _;\n\n if (collection && collection.annotations) {\n var rerun = annotations.some(function (d) {\n return !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 var value = annotationDispatcher.on.apply(annotationDispatcher, arguments);\n return value === annotationDispatcher ? annotation : value;\n };\n\n return annotation;\n}\n\nvar index = {\n annotation: annotation,\n annotationTypeBase: Type,\n annotationLabel: d3Label,\n annotationCallout: d3Callout,\n annotationCalloutCurve: d3CalloutCurve,\n annotationCalloutElbow: d3CalloutElbow,\n annotationCalloutCircle: d3CalloutCircle,\n annotationCalloutRect: d3CalloutRect,\n annotationXYThreshold: d3XYThreshold,\n annotationBadge: d3Badge,\n annotationCustomType: customType\n};\n\nexport { annotation, Type as annotationTypeBase, d3Label as annotationLabel, d3Callout as annotationCallout, d3CalloutCurve as annotationCalloutCurve, d3CalloutElbow as annotationCalloutElbow, d3CalloutCircle as annotationCalloutCircle, d3CalloutRect as annotationCalloutRect, d3XYThreshold as annotationXYThreshold, d3Badge as annotationBadge, customType as annotationCustomType };export default index;\n//# sourceMappingURL=indexRollupNext.js.map\n","import { 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 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 ? this.titleClickColor() : this.titleColor())\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 title(): string;\n title(_: string): this;\n titleDescription(): string;\n titleDescription(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleClickColor(): string;\n titleClickColor(_: string): this;\n\n maxDiameter(): number;\n maxDiameter(_: number): this;\n value(): number;\n value(_: number): this;\n valueDescription(): string;\n valueDescription(_: string): this;\n showTick(): boolean;\n showTick(_: boolean): this;\n tickValue(): number;\n tickValue(_: number): this;\n tickValueDescription(): string;\n tickValueDescription(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n\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(\"title\", \"\", \"string\", \"Title\");\nGauge.prototype.publish(\"titleDescription\", \"\", \"string\", \"Title Description\");\nGauge.prototype.publish(\"titleColor\", \"black\", \"html-color\", \"Color of the title text\");\nGauge.prototype.publish(\"titleClickColor\", \"blue\", \"html-color\", \"Color of the title text when clickable\");\n\nGauge.prototype.publish(\"maxDiameter\", 128, \"number\", \"Max Diameter\");\nGauge.prototype.publish(\"value\", 0, \"number\", \"Value\");\nGauge.prototype.publish(\"valueDescription\", \"\", \"string\", \"Value Description\");\nGauge.prototype.publish(\"showTick\", false, \"boolean\", \"Show Tick\");\nGauge.prototype.publish(\"tickValue\", 0, \"number\", \"Tick Value\");\nGauge.prototype.publish(\"tickValueDescription\", \"\", \"string\", \"Tick Value Description\");\nGauge.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\");\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 { 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\nconst sortAscending = (a, b) => a[1] - b[1] > 0 ? 1 : -1;\nconst sortDescending = (a, b) => a[1] - b[1] > 0 ? -1 : 1;\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()];\n switch (this.sortDataByValue()) {\n case \"ascending\":\n data.sort(sortAscending);\n break;\n case \"descending\":\n data.sort(sortDescending);\n break;\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\n switch (this.sortDataByValue()) {\n case \"ascending\":\n this.d3Pie.sort(sortAscending);\n break;\n case \"descending\":\n this.d3Pie.sort(sortDescending);\n break;\n default:\n this.d3Pie.sort(null);\n }\n\n this.d3Pie\n .padAngle(0.0025)\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .value(function (d) {\n return d[1];\n })\n ;\n }\n}\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\n\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 sortDataByValue(): \"none\" | \"ascending\" | \"descending\";\n sortDataByValue(_: \"none\" | \"ascending\" | \"descending\"): this;\n\n paletteID(_?: string): string | Pie;\n useClonedPalette(_?: boolean): boolean | Pie;\n outerText(_?: boolean): boolean | Pie;\n innerRadius(): number;\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;\n tooltipTick(_: boolean): Pie;\n tooltipTick_default(): boolean;\n tooltipTick_default(_: boolean): Pie;\n tooltipOffset(): number;\n tooltipOffset(_: number): Pie;\n tooltipOffset_default(): number;\n tooltipOffset_default(_: number): Pie;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\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() });\nPie.prototype.publish(\"sortDataByValue\", \"descending\", \"set\", \"Sort data by value\", [\"none\", \"ascending\", \"descending\"]);\n","import { Pie } from \"./Pie.ts\";\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.ts\";\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 = this.maxWeight_exists() ? this.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 maxWeight(): number;\n maxWeight(_: number): this;\n maxWeight_exists(): boolean;\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(\"maxWeight\", undefined, \"number\", \"Clamp max weight to value (optional), omitting uses max data point\", undefined, { optional: true });\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 if (p[2] < 0) {\n p[2] = 0;\n } else if (p[2] > this._max) {\n p[2] = this._max;\n }\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.ts\";\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}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nexport interface HexBin {\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipValueFormat(_): string;\n tooltipValueFormat_default(_): string;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n binSize(): number;\n binSize(_: number): this;\n}\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.ts\";\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.ts\";\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}\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 // 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}\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}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\n\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\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 // SimpleSelectionMixin\n _selection;\n}\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.ts\";\nimport { Scatter } from \"./Scatter.ts\";\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 View = \"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 type StatChartView = \"min_max\" | \"25_75\" | \"normal\";\nexport type Quartiles = [number, number, number, number, number];\nexport type Data = [[number, number, number, number, number, number, number]];\n\nexport class StatChart extends HTMLWidget {\n\n protected _selectElement: any;\n protected _tickFormatter: (_: number) => string;\n\n protected _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 protected _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 constructor() {\n super();\n this\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\", \"Mean\", \"Std. Dev.\"])\n ;\n }\n\n protected stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n protected formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n protected quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.quartiles()[q];\n }\n\n protected formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n protected domain(mode: View): [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 protected min(): number {\n return this.quartile(0);\n }\n\n protected max(): number {\n return this.quartile(4);\n }\n\n data(): Data;\n data(_: Data): this;\n data(_?: Data): Data | this {\n if (!arguments.length) return [[...this.quartiles(), this.mean(), this.standardDeviation()]];\n const row = _[0];\n this.quartiles([row[0], row[1], row[2], row[3], row[4]]);\n this.mean(row[5]);\n this.standardDeviation(row[6]);\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._selectElement = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.view(this._selectElement.node().value);\n this.lazyRender();\n })\n ;\n this._selectElement.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectElement.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectElement.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n protected bellTicks(mode: View): 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._selectElement.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._selectElement.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 this._selectElement.node().value = this.view();\n this.updateScatter();\n this.updateCandle();\n }\n\n exit(domNode, element) {\n this._bellCurve.target(null);\n this._candle.target(null);\n this._selectElement.remove();\n\n super.exit(domNode, element);\n }\n}\nStatChart.prototype._class += \" chart_StatChart\";\n\nexport interface StatChart {\n view(): StatChartView;\n view(_: StatChartView): this;\n\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n\n mean(): number;\n mean(_: number): this;\n standardDeviation(): number;\n standardDeviation(_: number): this;\n quartiles(): Quartiles;\n quartiles(_: Quartiles): this;\n}\nStatChart.prototype.publish(\"view\", \"min_max\", \"set\", \"View\", [\"min_max\", \"25_75\", \"normal\"]);\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\nStatChart.prototype.publish(\"mean\", .5, \"number\", \"Mean\");\nStatChart.prototype.publish(\"standardDeviation\", .125, \"number\", \"Standard Deviation (σ)\");\nStatChart.prototype.publish(\"quartiles\", [0, .25, .5, .75, 1], \"object\", \"Quartiles (Min, 25%, 50%, 75%, Max)\");\n","import { Scatter } from \"./Scatter.ts\";\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) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\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.ts\";\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}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface WordCloud {\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSizeFrom(): number;\n fontSizeFrom(_: number): this;\n fontSizeTo(): number;\n fontSizeTo(_: number): this;\n angleFrom(): number;\n angleFrom(_: number): this;\n angleTo(): number;\n angleTo(_: number): this;\n angleCount(): number;\n angleCount(_: number): this;\n padding(): number;\n padding(_: number): this;\n scaleMode(): string;\n scaleMode(_: string): this;\n spiral(): string;\n spiral(_: string): this;\n offsetX(): number;\n offsetX(_: number): this;\n offsetY(): number;\n offsetY(_: number): this;\n zoom(): number;\n zoom(_: number): this;\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;\n tooltipStyle(_: string): this;\n tooltipValueFormat(): string;\n tooltipValueFormat(_: string): this;\n tooltipSeriesColor(): string;\n tooltipSeriesColor(_: string): this;\n tooltipLabelColor(): string;\n tooltipLabelColor(_: string): this;\n tooltipValueColor(): string;\n tooltipValueColor(_: string): this;\n tooltipTick(): boolean;\n tooltipTick(_: boolean): this;\n tooltipOffset(): number;\n tooltipOffset(_: number): this;\n tooltipOffset_exists(): boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\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","import { timeFormat } from \"d3-time-format\";\n\n/**\n * Adaptive 24-hour multi-scale tick formatter.\n * Order of precedence (first predicate that matches):\n * milliseconds -> seconds -> minutes -> hours -> day -> month -> year.\n */\nexport function multiScale24Hours(): (d: Date) => string {\n const fmtMs = timeFormat(\".%L\");\n const fmtSec = timeFormat(\":%S\");\n const fmtMin = timeFormat(\"%H:%M\");\n const fmtHour = timeFormat(\"%H:00\");\n const fmtDay = timeFormat(\"%b %d\");\n const fmtMonth = timeFormat(\"%b\");\n const fmtYear = timeFormat(\"%Y\");\n\n return (d: Date): string => {\n if (d.getMilliseconds() !== 0) return fmtMs(d);\n if (d.getSeconds() !== 0) return fmtSec(d);\n if (d.getMinutes() !== 0) return fmtMin(d);\n if (d.getHours() !== 0) return fmtHour(d);\n if (d.getDate() !== 1) return fmtDay(d);\n if (d.getMonth() !== 0) return fmtMonth(d);\n return fmtYear(d);\n };\n}\n"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","pi","Math","PI","tau","epsilon","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","_","path","constant$3","x","__name","prototype","constructor","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","d","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","a","length","Linear","_context","d3CurveLinear","p","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","i","n","defined0","lineStart","lineEnd","point","d3Area","area","j","k","x0z","Array","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending","b","NaN","identity$2","d3Pie","value","identity","sortValues","sort","pie","v","sum","index","arcs","pa","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","_line","_point","_x","_y","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","m","CatmullRom","alpha","_alpha","x23","y23","pow","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","Object","create","call","px","py","i0","i1","slice","identity$1","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","values","ticks","domain","format","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","_Axis","SVGWidget","_origType","_origTimePattern","parser","parserInvert","formatter","d3Scale","d3Axis","d3Guides","_guideElement","svg","svgAxis","svgGuides","_tickFormatFunc","drawStartPosition","super","_drawStartPos","updateScale","lowValue","parse","low","highValue","high","forceNumeric","map","parseInvert","parseFormat","tickFormatFunc","fn","scalePos","retVal","type","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","d3Select","_class","domNode","element","_prevOrientation","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","timePattern","d3TimeFormat","d3AxisLeft","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","style","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr","getBoundingClientRect","right","left","calcOverflow","ignoreText","hidden","top","bottom","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","Axis","publish","disable","optional","_type","_timePattern","_XYAxis","domainAxis","valueAxis","xAxis","yAxis","xyBrush","xBrush","yBrush","margin","focusChart","Utility","SimpleSelectionMixin","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","d3Brush","on","brushMoved","brushMoved2","d3BrushX","d3BrushY","_prevBrush","resetSelection","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","svgFocus","svgBrush","id","_selection","widgetElement","target","chartsEnter","resizeBrushHandle","e","_skipSelection","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","calcMargin","_domNode","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","_prevXAxisType","xAxisTitle_exists","xAxisTitle","xAxisType","colLen","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","tmp","ratio","move","syncAxis","layers","copyPropsTo","layerIdx","layer","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","XYAxis","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","_prevPointShape","mapShape","shape","switch","paletteID","useClonedPalette","cloneNotExists","pointShape","pointSizeColumnIdx","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","showValue","__publicField","multi","Scatter","implements","step","_Area","interpolate_default","interpolateFill_default","Area","_Column","_linearGap","textLocal","d3Local","stackedTextLocal","skipBringToTop","adjustedData","retVal2","formatPct","showValueAsPercentFormat","dataLen","direction","columnScale","xAxisSeriesPaddingInner","domainSums","seriesSums","columnLength","rowData","showValueAsPercent","forEach","showDomainTotal","reduce","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","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","noRoomInside","isOutside","noRoomOnExpectedSide","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","value4pos","stackedTotalText","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","letter","Column","_Bar","Bar","count","children","node_count","eachAfter","node_each","callback","current","next","node_eachBefore","nodes","node_eachAfter","node_sum","node_sort","compare","eachBefore","node_path","end","start","ancestor","leastCommonAncestor","parent","splice","aNodes","ancestors","bNodes","c","node_ancestors","node_descendants","node_leaves","leaves","node_links","root","links","source","hierarchy","child","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","descendants","shuffle","array","random","enclose","circles","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","packEnclose","aa","ca","sj","sk","pack","f","required","constantZero","constant$2","defaultRadius","d3Pack","radius","radiusLeaf","packChildren","translateChild","_Bubble","labelWidgets","I2DChart","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","Bubble","_BubbleXY","BubbleXY","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","nap","poke","delay","t2","time","Infinity","sleep","clearTimeout","clearInterval","setInterval","d3Bullet","vertical","ranges","bulvarRanges","markers","bulvarMarkers","measures","bulvarMeasures","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","bulvarWidth","w1","i2","measure","marker","d3TimerFlush","restart","TypeError","stop","_Bullet","HTMLWidget","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","keys","Bullet","ascending","ring","constant$1","contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","q","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","isorings","polygon","coordinates","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","concat","unshift","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","d3ContourDensity","weight","o","density","values0","Float32Array","values1","wi","shift","geometry","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","adder","Adder","reset","add","temp","bv","av","streamGeometry","stream","streamGeometryType","hasOwnProperty","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","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","geoPath","projection","projectionStream","contextStream","pathArea","pathMeasure","pathBounds","pathCentroid","_circle","_Contour","_dataMinWeight","_dataMaxWeight","xAxisType_default","contourData","contourBandwidth","_vals","minValue","maxValue","showContourFill","contourStrokeColor","contourStrokeWidth","Contour","I1DChart","_Gantt","yAxisType_default","Gantt","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","_typeof","Symbol","iterator","obj","classCallCheck","instance","Constructor","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","_extends","assign","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","inherits","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","toConsumableArray","arr2","from","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","_this","setPositionWithAccessors","_editMode","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","pointHandle","_ref$cx","_ref$cy","circleHandles","_ref2$cx","_ref2$cy","addHandles","_ref5","group","handles","_ref5$r","drag","container","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","noteVertical","components","noteHorizontal","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorLine","connectorData","connectorElbow","diffY","diffX","xe","ye","opposite","_angle","connectorCurve","createPoints","cHandles","updatePoint","event","mapHandles","anchors","diff","connectorArrow","_ref$scale","angleOffset","atan","connectorDot","line$$1","dot","subjectCircle","updateRadius","subjectRect","updateWidth","updateHeight","rHandles","subjectThreshold","subjectBadge","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","xrightcorner","ytopcorner","ybottomcorner","xleft","xright","ytop","ybottom","circlebg","fill","pointer","notCornerPointerXY","bHandles","stroke","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","newWithClass","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","_subject","_subject$components","_subject$handles","dragSubject","_this3","connectorParams","_connector","_connector$components","_connector$handles","endType","endScale","_this4","noteData","noteParams","lineType","_note","_note$components","_note$handles","dragNote","dragging","dragstarted","dragended","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","_init","_initialType","settings","_this6","d3NoteText","params","_this7","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","d3Callout","d3CalloutElbow","ThresholdMap","lineHeight","selector","yOffset","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","console","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","value2Angle","pointOnArc","indicatorTranslate","inner","rotation","indicatorTween","newAngle","d3Interpolate","arcTween","startInterpolate","endInterpolate","_Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","_usageArc","_meanArc","_freeArc","_indInner","_indOuter","_centerTextG","_centerText","_bottomText","_tooltipG","_mainTooltip","tip","interrupt","datum","xOffset","annotationtip","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","valueDescription","tickValueDescription","appendIndicator","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","titleClickColor","titleColor","point2","Gauge","sortAscending","sortDescending","_Pie","_totalValue","d3LabelArc","_labelPositions","_smallValueLabelHeight","_labelWidthLimit","_quadIdxArr","_minLabelTop","_maxLabelBottom","_seriesValueFormatter","_seriesPercentageFormatter","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","minOuterRadius","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","truncate","len","labelWidth","showSeriesValue","showSeriesPercentage","perc","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","sortDataByValue","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","Pie","_HalfPie","_pos","_target","SVGElement","_widgetScale","HalfPie","_Heat","_domForeignObject","_domCanvas","_heat","radiusX","radiusY","simpleheat","maxWeight","maxWeight_exists","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","Heat","canvas","_canvas","document","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","createElement","thirdPi","angles","d3HexBin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","_HexBin","_hexbin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","HexBin","_Line","Line","_QuarterPie","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","QuartileCandlestick","_Radar","setPointAttributes","half_size","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","Radar","_RadialBar","_domainScale","_valueScale","_arcs","_axialAxis","_radialAxis","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","RadialBar","palette","ordinal","myFormatter","num","strVal","_StatChart","_selectElement","_tickFormatter","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","quartile","quartiles","formatQ","mode","view","lazyRender","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","StatChart","_Step","TEXT","HTML","_Summary","_playIntervalIdx","_mainDiv","_headerDiv","_textDiv","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","iconFieldIdx","valueFieldIdx","moreIconIdx","moreTextIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","Summary","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","_renderCount","_SummaryC","CanvasWidget","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","drawIcon","iconBaseline","fontSizeMult","getTextOffsetY","iconOpacity","faChar","iconAnchor","valueOpacity","labelOpacity","SummaryC","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","strokeStyle","textAlign","board","tag","startX","startY","maxDelta","dt","dxdy","cloudCollide","collideRects","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","rectangularSpiral","archimedean","rectangular","_WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","_root","_d3Cloud","_d3Zoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","d3Zoom","scaleExtent","evt","zoomed","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","toLowerCase","trim","WordCloud","multiScale24Hours","fmtMs","timeFormat","fmtSec","fmtMin","fmtHour","fmtDay","fmtMonth","fmtYear","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,95]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../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/area.js","../../../node_modules/d3-shape/src/descending.js","../../../node_modules/d3-shape/src/identity.js","../../../node_modules/d3-shape/src/pie.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","../src/Axis.ts","../src/XYAxis.ts","../src/Scatter.ts","../src/Area.ts","../src/Column.ts","../src/Bar.ts","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.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/hierarchy/index.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/area.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/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","../../../node_modules/d3-geo/src/path/index.js","../src/Contour.ts","../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/line.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/indexRollupNext.js","../src/Gauge.ts","../src/Pie.ts","../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","../src/timeFormats.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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","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","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","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","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","import { 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 _origType;\n _origTimePattern;\n\n protected parser;\n protected parserInvert;\n protected formatter: ((d: Date | any) => string) | null;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n protected _tickFormatFunc?: (d: any) => string;\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 tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickFormatFunc(fn?: (d: any) => string): this | ((d: any) => string) | undefined {\n if (!arguments.length) return this._tickFormatFunc;\n this._tickFormatFunc = fn;\n this.updateScale();\n return this;\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 if (this._tickFormatFunc) {\n this.formatter = this._tickFormatFunc;\n } else {\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n }\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}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern_exists(): boolean;\n reverse(): boolean;\n reverse(_: boolean): this;\n\n title(): string;\n title(_: string): this;\n title_exists(): boolean;\n orientation(): string;\n orientation(_: string): this;\n orientation_default(): string;\n orientation_default(_: string): this;\n powExponent(): number;\n powExponent(_: number): this;\n logBase(): number;\n logBase(_: number): this;\n ordinals(): string[];\n ordinals(_: string[]): this;\n ordinals_exists(): boolean;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n fontFamily(): string;\n fontFamily(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickFormat(): string;\n tickFormat(_: string): this;\n tickFormat_exists(): boolean;\n tickFormat_reset(): void;\n tickFormatFunc(fn: (d: any) => string): this;\n tickFormatFunc(): ((d: any) => string) | undefined;\n tickLength(): number;\n tickLength(_: number): this;\n tickLength_exists(): boolean;\n ticks(): Array<{ value: string, label: string }>;\n ticks(_: Array<{ value: string, label: string }>): this;\n low(): any;\n low(_: any): this;\n low_exists(): boolean;\n high(): any;\n high(_: any): this;\n high_exists(): boolean;\n overlapMode(): string;\n overlapMode(_: string): this;\n overlapMode_default(): string;\n overlapMode_default(_: string): this;\n labelRotation(): number;\n labelRotation(_: number): this;\n shrinkToFit(): string;\n shrinkToFit(_: string): this;\n shrinkToFit_default(): string;\n shrinkToFit_default(_: string): this;\n extend(): number;\n extend(_: number): this;\n extend_default(): number;\n extend_default(_: number): this;\n hidden(): boolean;\n hidden(_: boolean): this;\n\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(\"type\", \"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"]);\nAxis.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" });\nAxis.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse\");\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'\");\n\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\nAxis.prototype._origType = Axis.prototype.type;\nAxis.prototype.type = function (_?: string) {\n const retVal = Axis.prototype._origType.apply(this, arguments);\n if (_ !== undefined) {\n this._type = _;\n this.updateScale();\n }\n return retVal;\n};\n\nAxis.prototype._origTimePattern = Axis.prototype.timePattern;\nAxis.prototype.timePattern = function (_?: string) {\n const retVal = Axis.prototype._origTimePattern.apply(this, arguments);\n if (_ !== undefined) {\n this._timePattern = _;\n this.updateScale();\n }\n return retVal;\n};\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.ts\";\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\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 this.selectionGlow(!this.tabNavigation());\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 _palette;\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 // Tab Navigation\n tabNavigation(): boolean;\n tabNavigation(_: boolean): 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\");\nXYAxis.prototype.publish(\"tabNavigation\", false, \"boolean\", \"Enable or disable tab navigation\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, 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.ts\";\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 if (this.tabNavigation() && host.parentRelativeDiv) {\n host.parentRelativeDiv\n .attr(\"tabindex\", \"0\")\n .attr(\"role\", \"group\")\n .attr(\"aria-label\", `${this.columns()[0] || \"Chart\"} data`);\n } else if (host.parentRelativeDiv) {\n host.parentRelativeDiv\n .attr(\"tabindex\", null)\n .attr(\"role\", null)\n .attr(\"aria-label\", null);\n }\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 .on(\"keydown\", function (evt, d: any) {\n if (context.tabNavigation()) {\n const event = d3Event();\n if (event.code === \"Space\" || event.key === \"Enter\") {\n event.preventDefault();\n host._selection.click(this);\n }\n }\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 .attr(\"tabindex\", context.tabNavigation() ? 0 : null)\n .attr(\"role\", context.tabNavigation() ? \"button\" : null)\n .attr(\"aria-label\", context.tabNavigation() ? (d: any) => `${d.column || \"Value\"}: ${d.value} @ ${d.label}` : null)\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}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\n\nexport interface Scatter {\n\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\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n pointSizeScale(): string;\n pointSizeScale(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n interpolate(): string;\n interpolate(_: string): this;\n interpolate_default(): string;\n interpolate_default(_: string): this;\n interpolateFill(): boolean;\n interpolateFill(_: boolean): this;\n interpolateFill_default(): boolean;\n interpolateFill_default(_: boolean): this;\n interpolateFillOpacity(): number;\n interpolateFillOpacity(_: number): this;\n\n // INDChart\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 tooltipStyle(_: \"default\" | \"none\" | \"series-table\"): 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 { Scatter } from \"./Scatter.ts\";\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 { d3Event, 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.ts\";\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\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 if (this.tabNavigation() && host.parentRelativeDiv) {\n host.parentRelativeDiv\n .attr(\"tabindex\", \"0\")\n .attr(\"role\", \"group\")\n .attr(\"aria-label\", `${this.columns()[0] || \"Chart\"} data`);\n } else if (host.parentRelativeDiv) {\n host.parentRelativeDiv\n .attr(\"tabindex\", null)\n .attr(\"role\", null)\n .attr(\"aria-label\", null);\n }\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(Math.max(this.xAxisSeriesPaddingInner(), 0.05))\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 .on(\"keydown\", function (evt, d: any) {\n if (context.tabNavigation()) {\n const event = d3Event();\n if (event.code === \"Space\" || event.key === \"Enter\") {\n event.preventDefault();\n host._selection.click(this);\n }\n }\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)\n .attr(\"tabindex\", context.tabNavigation() ? 0 : null) // Tabster Groupper manages these inner focusables\n .attr(\"role\", context.tabNavigation() ? \"button\" : null) // ARIA role for accessibility\n .attr(\"aria-label\", context.tabNavigation() ? (d: any) => `${d.origRow[0]} - ${d.column}: ${d.value instanceof Array ? d.value[1] - d.value[0] : d.value}` : null)\n .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 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}\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 // INDChart ---\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 tooltipStyle(_: \"default\" | \"none\" | \"series-table\"): 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.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.ts\";\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","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.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 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}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Bubble {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\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}\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.ts\";\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, 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\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\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\nexport interface Bullet {\n titleColumn(): string;\n titleColumn(_: string): this;\n subtitleColumn(): string;\n subtitleColumn(_: string): this;\n rangesColumn(): string;\n rangesColumn(_: string): this;\n measuresColumn(): string;\n measuresColumn(_: string): this;\n markersColumn(): string;\n markersColumn(_: string): this;\n}\n\nBullet.prototype.publish(\"titleColumn\", null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"subtitleColumn\", null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"rangesColumn\", null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"measuresColumn\", null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true });\nBullet.prototype.publish(\"markersColumn\", null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true });\n\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(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","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","// 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 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 { 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.ts\";\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 { Bar } from \"./Bar.ts\";\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","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","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","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport { arc, curveCatmullRom, curveLinear, line } from 'd3-shape';\nimport { dispatch } from 'd3-dispatch';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar Annotation = function () {\n function Annotation(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n nx = _ref.nx,\n ny = _ref.ny,\n _ref$dy = _ref.dy,\n dy = _ref$dy === undefined ? 0 : _ref$dy,\n _ref$dx = _ref.dx,\n dx = _ref$dx === undefined ? 0 : _ref$dx,\n _ref$color = _ref.color,\n color = _ref$color === undefined ? \"grey\" : _ref$color,\n data = _ref.data,\n type = _ref.type,\n subject = _ref.subject,\n connector = _ref.connector,\n note = _ref.note,\n disable = _ref.disable,\n id = _ref.id,\n className = _ref.className;\n classCallCheck(this, Annotation);\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 createClass(Annotation, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition();\n if (this.type.subject && this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawSubject();\n }\n }\n }\n }, {\n key: \"clearComponents\",\n value: function clearComponents() {\n this.type.clearComponents && this.type.clearComponents();\n }\n }, {\n key: \"updateOffset\",\n value: function 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 key: \"className\",\n get: function get$$1() {\n return this._className;\n },\n set: function set$$1(className) {\n this._className = className;\n if (this.type.setClassName) this.type.setClassName();\n }\n }, {\n key: \"type\",\n get: function get$$1() {\n return this._type;\n },\n set: function set$$1(type) {\n this._type = type;\n this.clearComponents();\n }\n }, {\n key: \"x\",\n get: function get$$1() {\n return this._x;\n },\n set: function set$$1(x) {\n this._x = x;\n this.updatePosition();\n }\n }, {\n key: \"y\",\n get: function get$$1() {\n return this._y;\n },\n set: function set$$1(y) {\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"color\",\n get: function get$$1() {\n return this._color;\n },\n set: function set$$1(color) {\n this._color = color;\n this.updatePosition();\n }\n }, {\n key: \"dx\",\n get: function get$$1() {\n return this._dx;\n },\n set: function set$$1(dx) {\n this._dx = dx;\n this.updateOffset();\n }\n }, {\n key: \"dy\",\n get: function get$$1() {\n return this._dy;\n },\n set: function set$$1(dy) {\n this._dy = dy;\n this.updateOffset();\n }\n }, {\n key: \"nx\",\n set: function set$$1(nx) {\n this._dx = nx - this._x;\n this.updateOffset();\n }\n }, {\n key: \"ny\",\n set: function set$$1(ny) {\n this._dy = ny - this._y;\n this.updateOffset();\n }\n }, {\n key: \"offset\",\n get: function get$$1() {\n return { x: this._dx, y: this._dy };\n },\n set: function set$$1(_ref2) {\n var x = _ref2.x,\n y = _ref2.y;\n\n this._dx = x;\n this._dy = y;\n this.updateOffset();\n }\n }, {\n key: \"position\",\n get: function get$$1() {\n return { x: this._x, y: this._y };\n },\n set: function set$$1(_ref3) {\n var x = _ref3.x,\n y = _ref3.y;\n\n this._x = x;\n this._y = y;\n this.updatePosition();\n }\n }, {\n key: \"translation\",\n get: function get$$1() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n };\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var 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 return Annotation;\n}();\n\nvar AnnotationCollection = function () {\n function AnnotationCollection(_ref) {\n var annotations = _ref.annotations,\n accessors = _ref.accessors,\n accessorsInverse = _ref.accessorsInverse;\n classCallCheck(this, AnnotationCollection);\n\n this.accessors = accessors;\n this.accessorsInverse = accessorsInverse;\n this.annotations = annotations;\n }\n\n createClass(AnnotationCollection, [{\n key: \"clearTypes\",\n value: function clearTypes(newSettings) {\n this.annotations.forEach(function (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 key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors() {\n var _this = this;\n\n this.annotations.forEach(function (d) {\n d.type.setPositionWithAccessors(_this.accessors);\n });\n }\n }, {\n key: \"editMode\",\n value: function editMode(_editMode) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.editMode = _editMode;\n a.type.updateEditMode();\n }\n });\n }\n }, {\n key: \"updateDisable\",\n value: function updateDisable(disable) {\n this.annotations.forEach(function (a) {\n a.disable = disable;\n if (a.type) {\n disable.forEach(function (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 key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap);\n }\n });\n }\n }, {\n key: \"updateText\",\n value: function updateText() {\n this.annotations.forEach(function (a) {\n if (a.type && a.type.drawText) {\n a.type.drawText();\n }\n });\n }\n }, {\n key: \"updateNotePadding\",\n value: function updateNotePadding(notePadding) {\n this.annotations.forEach(function (a) {\n if (a.type) {\n a.type.notePadding = notePadding;\n }\n });\n }\n }, {\n key: \"json\",\n get: function get$$1() {\n var _this2 = this;\n\n return this.annotations.map(function (a) {\n var json = a.json;\n if (_this2.accessorsInverse && a.data) {\n json.data = {};\n Object.keys(_this2.accessorsInverse).forEach(function (k) {\n json.data[k] = _this2.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 key: \"noteNodes\",\n get: function get$$1() {\n return this.annotations.map(function (a) {\n return _extends({}, a.type.getNoteBBoxOffset(), { positionX: a.x, positionY: a.y });\n });\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 }]);\n return AnnotationCollection;\n}();\n\nvar pointHandle = function pointHandle(_ref) {\n var _ref$cx = _ref.cx,\n cx = _ref$cx === undefined ? 0 : _ref$cx,\n _ref$cy = _ref.cy,\n cy = _ref$cy === undefined ? 0 : _ref$cy;\n\n return { move: { x: cx, y: cy } };\n};\n\nvar circleHandles = function circleHandles(_ref2) {\n var _ref2$cx = _ref2.cx,\n cx = _ref2$cx === undefined ? 0 : _ref2$cx,\n _ref2$cy = _ref2.cy,\n cy = _ref2$cy === undefined ? 0 : _ref2$cy,\n r1 = _ref2.r1,\n r2 = _ref2.r2,\n padding = _ref2.padding;\n\n var 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\n\n\n\n\n//arc handles\nvar addHandles = function addHandles(_ref5) {\n var group = _ref5.group,\n handles = _ref5.handles,\n _ref5$r = _ref5.r,\n r = _ref5$r === undefined ? 10 : _ref5$r;\n\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n var h = group.selectAll(\"circle.handle\").data(handles);\n\n h.enter().append(\"circle\").attr(\"class\", \"handle\").attr(\"fill\", \"grey\").attr(\"fill-opacity\", 0.1).attr(\"cursor\", \"move\").attr(\"stroke-dasharray\", 5).attr(\"stroke\", \"grey\").call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return d.start && d.start(d);\n }).on(\"drag\", function (d) {\n return d.drag && d.drag(d);\n }).on(\"end\", function (d) {\n return d.end && d.end(d);\n }));\n\n group.selectAll(\"circle.handle\").attr(\"cx\", function (d) {\n return d.x;\n }).attr(\"cy\", function (d) {\n return d.y;\n }).attr(\"r\", function (d) {\n return d.r || r;\n }).attr(\"class\", function (d) {\n return \"handle \" + (d.className || \"\");\n });\n\n h.exit().remove();\n};\n\nvar leftRightDynamic = function leftRightDynamic(align, y) {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) {\n align = \"top\";\n } else {\n align = \"bottom\";\n }\n }\n return align;\n};\n\nvar topBottomDynamic = function topBottomDynamic(align, x) {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) {\n align = \"right\";\n } else {\n align = \"left\";\n }\n }\n return align;\n};\n\nvar orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"];\nvar orientationLeftRight = [\"leftRight\", \"left\", \"right\"];\n\nvar noteAlignment = (function (_ref) {\n var _ref$padding = _ref.padding,\n padding = _ref$padding === undefined ? 0 : _ref$padding,\n _ref$bbox = _ref.bbox,\n bbox = _ref$bbox === undefined ? { x: 0, y: 0, width: 0, height: 0 } : _ref$bbox,\n align = _ref.align,\n orientation = _ref.orientation,\n _ref$offset = _ref.offset,\n offset = _ref$offset === undefined ? { x: 0, y: 0 } : _ref$offset;\n\n var x = -bbox.x;\n var 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 } 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: x, y: y };\n});\n\nvar lineBuilder = function lineBuilder(_ref) {\n var data = _ref.data,\n _ref$curve = _ref.curve,\n curve = _ref$curve === undefined ? curveLinear : _ref$curve,\n canvasContext = _ref.canvasContext,\n className = _ref.className,\n classID = _ref.classID;\n\n var lineGen = line().curve(curve);\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n if (canvasContext) {\n lineGen.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n builder.attrs = {\n d: lineGen(data)\n };\n }\n\n return builder;\n};\n\nvar arcBuilder = function arcBuilder(_ref2) {\n var data = _ref2.data,\n canvasContext = _ref2.canvasContext,\n className = _ref2.className,\n classID = _ref2.classID;\n\n\n var builder = {\n type: 'path',\n className: className,\n classID: classID,\n data: data\n };\n\n var arcShape = arc().innerRadius(data.innerRadius || 0).outerRadius(data.outerRadius || data.radius || 2).startAngle(data.startAngle || 0).endAngle(data.endAngle || 2 * Math.PI);\n\n if (canvasContext) {\n arcShape.context(canvasContext);\n builder.pathMethods = lineGen;\n } else {\n\n builder.attrs = {\n d: arcShape()\n };\n }\n\n return builder;\n};\n\nvar noteVertical = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n bbox = _ref.bbox,\n offset = _ref.offset;\n\n align = leftRightDynamic(align, offset.y);\n\n if (align === \"top\") {\n y -= bbox.height;\n } else if (align === \"middle\") {\n y -= bbox.height / 2;\n }\n\n var data = [[x, y], [x, y + bbox.height]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar noteHorizontal = (function (_ref) {\n var align = _ref.align,\n _ref$x = _ref.x,\n x = _ref$x === undefined ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === undefined ? 0 : _ref$y,\n offset = _ref.offset,\n bbox = _ref.bbox;\n\n align = topBottomDynamic(align, offset.x);\n\n if (align === \"right\") {\n x -= bbox.width;\n } else if (align === \"middle\") {\n x -= bbox.width / 2;\n }\n\n var data = [[x, y], [x + bbox.width, y]];\n return { components: [lineBuilder({ data: data, className: \"note-line\" })] };\n});\n\nvar lineSetup = function lineSetup(_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n var h = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n var angle = Math.asin(-y2 / h);\n var 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 if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\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;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;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n return [[x1, y1], [x2, y2]];\n};\n\nvar connectorLine = (function (connectorData) {\n var data = lineSetup(connectorData);\n return { components: [lineBuilder({ data: data, className: \"connector\" })] };\n});\n\nvar connectorElbow = (function (_ref) {\n var type = _ref.type,\n subjectType = _ref.subjectType;\n\n\n var annotation = type.annotation;\n var offset = annotation.position;\n\n var x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy;\n\n var subjectData = annotation.subject;\n\n if (subjectType === \"rect\") {\n var width = subjectData.width,\n height = subjectData.height;\n\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;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;else y1 = height;\n }\n if (x1 === width / 2 && y1 === height / 2) {\n x1 = x2;y1 = y2;\n }\n }\n\n var data = [[x1, y1], [x2, y2]];\n\n var diffY = y2 - y1;\n var diffX = x2 - x1;\n var xe = x2;\n var ye = y2;\n var 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 var r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0);\n var 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 } else if (Math.abs(diffX) > Math.abs(diffY)) {\n var 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 var _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: data, className: \"connector\" })] };\n});\n\nvar connectorCurve = (function (_ref) {\n var type = _ref.type,\n connectorData = _ref.connectorData,\n subjectType = _ref.subjectType;\n\n\n if (!connectorData) {\n connectorData = {};\n }\n if (!connectorData.points || typeof connectorData.points === \"number\") {\n connectorData.points = createPoints(type.annotation.offset, connectorData.points);\n }\n if (!connectorData.curve) {\n connectorData.curve = curveCatmullRom;\n }\n\n var handles = [];\n\n if (type.editMode) {\n var cHandles = connectorData.points.map(function (c, i) {\n return _extends({}, pointHandle({ cx: c[0], cy: c[1] }), { index: i });\n });\n\n var updatePoint = function 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.map(function (h) {\n return _extends({}, h.move, { drag: updatePoint.bind(type, h.index) });\n }));\n }\n\n var data = lineSetup({ type: type, subjectType: subjectType });\n data = [data[0]].concat(toConsumableArray(connectorData.points), [data[1]]);\n var components = [lineBuilder({ data: data, curve: connectorData.curve, className: \"connector\" })];\n\n return { components: components, handles: handles };\n});\n\nvar createPoints = function createPoints(offset) {\n var anchors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n var diff = { x: offset.x / (anchors + 1), y: offset.y / (anchors + 1) };\n var p = [];\n\n var 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};\n\nvar connectorArrow = (function (_ref) {\n var annotation = _ref.annotation,\n start = _ref.start,\n end = _ref.end,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var 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 var x1 = end[0],\n y1 = end[1];\n\n var dx = start[0];\n var dy = start[1];\n\n var size = 10 * scale;\n var angleOffset = 16 / 180 * Math.PI;\n var angle = Math.atan(dy / dx);\n\n if (dx < 0) {\n angle += Math.PI;\n }\n\n var data = [[x1, y1], [Math.cos(angle + angleOffset) * size + x1, Math.sin(angle + angleOffset) * size + y1], [Math.cos(angle - angleOffset) * size + x1, Math.sin(angle - angleOffset) * size + y1], [x1, y1]];\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: [lineBuilder({\n data: data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })]\n };\n});\n\nvar connectorDot = (function (_ref) {\n var line$$1 = _ref.line,\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? 1 : _ref$scale;\n\n var 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$$1.data[0][0] + \", \" + line$$1.data[0][1] + \")\";\n\n return { components: [dot] };\n});\n\nvar subjectCircle = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20;\n }\n\n var handles = [];\n var c = arcBuilder({ data: subjectData, className: \"subject\" });\n if (type.editMode) {\n var h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n });\n\n var updateRadius = function updateRadius(attr) {\n var r = subjectData[attr] + event.dx * Math.sqrt(2);\n subjectData[attr] = r;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var cHandles = [_extends({}, h.r1, {\n drag: updateRadius.bind(type, subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\")\n })];\n\n if (subjectData.innerRadius) {\n cHandles.push(_extends({}, 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: handles };\n});\n\nvar subjectRect = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n if (!subjectData.width) {\n subjectData.width = 100;\n }\n if (!subjectData.height) {\n subjectData.height = 100;\n }\n\n var handles = [];\n var width = subjectData.width,\n height = subjectData.height;\n\n\n var data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]];\n var rect = lineBuilder({ data: data, className: \"subject\" });\n\n if (type.editMode) {\n var updateWidth = function updateWidth() {\n subjectData.width = event.x;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var updateHeight = function updateHeight() {\n subjectData.height = event.y;\n type.redrawSubject();\n type.redrawConnector();\n };\n\n var rHandles = [{ x: width, y: height / 2, drag: updateWidth.bind(type) }, { x: width / 2, y: height, drag: updateHeight.bind(type) }];\n\n handles = type.mapHandles(rHandles);\n }\n rect.attrs[\"fill-opacity\"] = 0.1;\n return { components: [rect], handles: handles };\n});\n\nvar subjectThreshold = (function (_ref) {\n var subjectData = _ref.subjectData,\n type = _ref.type;\n\n var offset = type.annotation.position;\n\n var 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 var data = [[x1, y1], [x2, y2]];\n return { components: [lineBuilder({ data: data, className: 'subject' })] };\n});\n\nvar subjectBadge = (function (_ref) {\n var _ref$subjectData = _ref.subjectData,\n subjectData = _ref$subjectData === undefined ? {} : _ref$subjectData,\n _ref$type = _ref.type,\n type = _ref$type === undefined ? {} : _ref$type;\n var annotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var 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 var handles = [];\n var components = [];\n var radius = subjectData.radius;\n var innerRadius = radius * 0.7;\n var x = 0;\n var y = 0;\n\n var notCornerOffset = Math.sqrt(2) * radius;\n var 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 var transform = \"translate(\" + x + \", \" + y + \")\";\n var circlebg = arcBuilder({ className: \"subject\", data: { radius: 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 var circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius: 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 var pointer = void 0;\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 var notCornerPointerXY = function notCornerPointerXY(v) {\n var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2);\n };\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [notCornerPointerXY(x), notCornerPointerXY(y)], [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)], [0, 0]]\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 var dragBadge = function dragBadge() {\n subjectData.x = event.x < -radius * 2 ? \"left\" : event.x > radius * 2 ? \"right\" : undefined;\n subjectData.y = event.y < -radius * 2 ? \"top\" : event.y > radius * 2 ? \"bottom\" : undefined;\n\n type.redrawSubject();\n };\n\n var 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 var text = void 0;\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: x,\n y: y\n }\n };\n }\n\n components.push(circlebg);\n components.push(circle);\n components.push(text);\n\n return { components: components, handles: handles };\n});\n\n//Note options\n//Connector options\n//Subject options\nvar Type = function () {\n function Type(_ref) {\n var a = _ref.a,\n annotation = _ref.annotation,\n editMode = _ref.editMode,\n dispatcher = _ref.dispatcher,\n notePadding = _ref.notePadding,\n accessors = _ref.accessors;\n classCallCheck(this, Type);\n\n this.a = a;\n\n this.note = annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\");\n this.noteContent = this.note && a.select(\"g.annotation-note-content\");\n this.connector = annotation.disable.indexOf(\"connector\") === -1 && a.select(\"g.annotation-connector\");\n this.subject = annotation.disable.indexOf(\"subject\") === -1 && a.select(\"g.annotation-subject\");\n this.dispatcher = dispatcher;\n\n if (dispatcher) {\n var 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 createClass(Type, [{\n key: \"init\",\n value: function 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 key: \"mapY\",\n value: function mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data);\n }\n }\n }, {\n key: \"mapX\",\n value: function mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data);\n }\n }\n }, {\n key: \"updateEditMode\",\n value: function updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove();\n }\n }, {\n key: \"drawOnSVG\",\n value: function drawOnSVG(component, builders) {\n var _this = this;\n\n if (!Array.isArray(builders)) {\n builders = [builders];\n }\n\n builders.filter(function (b) {\n return b;\n }).forEach(function (_ref2) {\n var type = _ref2.type,\n className = _ref2.className,\n attrs = _ref2.attrs,\n handles = _ref2.handles,\n classID = _ref2.classID;\n\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles: handles });\n } else {\n newWithClass(component, [_this.annotation], type, className, classID);\n var el = component.select(type + \".\" + (classID || className));\n var addAttrs = Object.keys(attrs);\n var removeAttrs = [];\n\n var currentAttrs = el.node().attributes;\n for (var i = currentAttrs.length - 1; i >= 0; i--) {\n var name = currentAttrs[i].name;\n if (addAttrs.indexOf(name) === -1 && name !== \"class\") removeAttrs.push(name);\n }\n\n addAttrs.forEach(function (attr) {\n if (attr === \"text\") {\n el.text(attrs[attr]);\n } else {\n el.attr(attr, attrs[attr]);\n }\n });\n\n removeAttrs.forEach(function (attr) {\n return el.attr(attr, null);\n });\n }\n });\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n }, {\n key: \"getNoteBBox\",\n value: function getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\");\n }\n }, {\n key: \"getNoteBBoxOffset\",\n value: function getNoteBBoxOffset() {\n var bbox = bboxWithoutHandles(this.note, \".annotation-note-content\");\n var 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 key: \"drawSubject\",\n value: function drawSubject() {\n var _this2 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var subjectData = this.annotation.subject;\n var type = context.type;\n var subjectParams = { type: this, subjectData: subjectData };\n\n var subject = {};\n if (type === \"circle\") subject = subjectCircle(subjectParams);else if (type === \"rect\") subject = subjectRect(subjectParams);else if (type === \"threshold\") subject = subjectThreshold(subjectParams);else if (type === \"badge\") subject = subjectBadge(subjectParams, this.annotation);\n\n var _subject = subject,\n _subject$components = _subject.components,\n components = _subject$components === undefined ? [] : _subject$components,\n _subject$handles = _subject.handles,\n handles = _subject$handles === undefined ? [] : _subject$handles;\n\n components.forEach(function (c) {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = _this2.annotation.color;\n }\n });\n\n if (this.editMode) {\n handles = handles.concat(this.mapHandles([{ drag: this.dragSubject.bind(this) }]));\n components.push({ type: \"handle\", handles: handles });\n }\n\n return components;\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector() {\n var _this3 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var connectorData = this.annotation.connector;\n var type = connectorData.type || context.type;\n var connectorParams = { type: this, connectorData: connectorData };\n connectorParams.subjectType = this.typeSettings && this.typeSettings.subject && this.typeSettings.subject.type;\n\n var connector = {};\n if (type === \"curve\") connector = connectorCurve(connectorParams);else if (type === \"elbow\") connector = connectorElbow(connectorParams);else connector = connectorLine(connectorParams);\n var _connector = connector,\n _connector$components = _connector.components,\n components = _connector$components === undefined ? [] : _connector$components,\n _connector$handles = _connector.handles,\n handles = _connector$handles === undefined ? [] : _connector$handles;\n\n var line$$1 = components[0];\n //TODO: genericize this into fill t/f stroke t/f\n if (line$$1) {\n line$$1.attrs.stroke = this.annotation.color;\n line$$1.attrs.fill = \"none\";\n }\n var endType = connectorData.end || context.end;\n var end = {};\n if (endType === \"arrow\") {\n var s = line$$1.data[1];\n var e = line$$1.data[0];\n var distance = Math.sqrt(Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2));\n if (distance < 5 && line$$1.data[2]) {\n s = line$$1.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: line$$1, 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(function (c) {\n c.attrs.fill = _this3.annotation.color;\n c.attrs.stroke = _this3.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: handles });\n }\n return components;\n }\n }, {\n key: \"drawNote\",\n value: function drawNote() {\n var _this4 = this;\n\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var noteData = this.annotation.note;\n var align = noteData.align || context.align || \"dynamic\";\n var noteParams = {\n bbox: context.bbox,\n align: align,\n offset: this.annotation.offset\n };\n var lineType = noteData.lineType || context.lineType;\n var note = {};\n if (lineType === \"vertical\") note = noteVertical(noteParams);else if (lineType === \"horizontal\") note = noteHorizontal(noteParams);\n\n var _note = note,\n _note$components = _note.components,\n components = _note$components === undefined ? [] : _note$components,\n _note$handles = _note.handles,\n handles = _note$handles === undefined ? [] : _note$handles;\n\n components.forEach(function (c) {\n c.attrs.stroke = _this4.annotation.color;\n });\n\n if (this.editMode) {\n handles = this.mapHandles([{ x: 0, y: 0, drag: this.dragNote.bind(this) }]);\n components.push({ type: \"handle\", handles: handles });\n\n var dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this);\n this.note.call(drag().container(select(\"g.annotations\").node()).on(\"start\", function (d) {\n return start(d);\n }).on(\"drag\", function (d) {\n return dragging(d);\n }).on(\"end\", function (d) {\n return end(d);\n }));\n } else {\n this.note.on(\"mousedown.drag\", null);\n }\n return components;\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n var noteData = this.annotation.note;\n var padding = noteData.padding !== undefined ? noteData.padding : this.notePadding;\n var orientation = noteData.orientation || context.orientation || \"topBottom\";\n var lineType = noteData.lineType || context.lineType;\n var align = noteData.align || context.align || \"dynamic\";\n\n if (lineType === \"vertical\") orientation = \"leftRight\";else if (lineType === \"horizontal\") orientation = \"topBottom\";\n\n var noteParams = {\n padding: padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation: orientation,\n align: align\n };\n\n var _noteAlignment = noteAlignment(noteParams),\n x = _noteAlignment.x,\n y = _noteAlignment.y;\n\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 key: \"drawOnScreen\",\n value: function drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction);\n }\n }, {\n key: \"redrawSubject\",\n value: function redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject());\n }\n }, {\n key: \"redrawConnector\",\n value: function redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector());\n }\n }, {\n key: \"redrawNote\",\n value: function redrawNote() {\n var bbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getNoteBBox();\n\n this.noteContent && this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox: bbox }));\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox: bbox }));\n }\n }, {\n key: \"setPosition\",\n value: function setPosition() {\n var position = this.annotation.position;\n this.a.attr(\"transform\", \"translate(\" + position.x + \", \" + position.y + \")\");\n }\n }, {\n key: \"clearComponents\",\n value: function 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 key: \"setOffset\",\n value: function setOffset() {\n if (this.note) {\n var offset = this.annotation.offset;\n this.note.attr(\"transform\", \"translate(\" + offset.x + \", \" + offset.y + \")\");\n }\n }\n }, {\n key: \"setPositionWithAccessors\",\n value: function setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors);\n this.mapY(accessors);\n }\n this.setPosition();\n }\n }, {\n key: \"setClassName\",\n value: function setClassName() {\n this.a.attr(\"class\", \"annotation \" + (this.className && this.className()) + \" \" + (this.editMode ? \"editable\" : \"\") + \" \" + (this.annotation.className || \"\"));\n }\n }, {\n key: \"draw\",\n value: function draw() {\n this.setClassName();\n this.setPosition();\n this.setOffset();\n this.redrawSubject();\n this.redrawConnector();\n this.redrawNote();\n }\n }, {\n key: \"dragstarted\",\n value: function dragstarted() {\n event.sourceEvent.stopPropagation();\n this.dispatcher && 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 }, {\n key: \"dragended\",\n value: function 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 key: \"dragSubject\",\n value: function dragSubject() {\n var position = this.annotation.position;\n position.x += event.dx;\n position.y += event.dy;\n this.annotation.position = position;\n }\n }, {\n key: \"dragNote\",\n value: function dragNote() {\n var offset = this.annotation.offset;\n offset.x += event.dx;\n offset.y += event.dy;\n this.annotation.offset = offset;\n }\n }, {\n key: \"mapHandles\",\n value: function mapHandles(handles) {\n var _this5 = this;\n\n return handles.map(function (h) {\n return _extends({}, h, {\n start: _this5.dragstarted.bind(_this5),\n end: _this5.dragended.bind(_this5)\n });\n });\n }\n }]);\n return Type;\n}();\n\nvar customType = function customType(initialType, typeSettings, _init) {\n return function (_initialType) {\n inherits(customType, _initialType);\n\n function customType(settings) {\n classCallCheck(this, customType);\n\n var _this6 = possibleConstructorReturn(this, (customType.__proto__ || Object.getPrototypeOf(customType)).call(this, settings));\n\n _this6.typeSettings = typeSettings;\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(function (d) {\n _this6[d] && _this6[d].remove();\n\n _this6[d] = undefined;\n if (d === \"note\") {\n _this6.noteContent = undefined;\n }\n });\n }\n return _this6;\n }\n\n createClass(customType, [{\n key: \"className\",\n value: function className() {\n return \"\" + (typeSettings.className || get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this) && get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"className\", this).call(this) || \"\");\n }\n }, {\n key: \"drawSubject\",\n value: function drawSubject(context) {\n this.typeSettings.subject = _extends({}, typeSettings.subject, this.typeSettings.subject);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawSubject\", this).call(this, _extends({}, context, this.typeSettings.subject));\n }\n }, {\n key: \"drawConnector\",\n value: function drawConnector(context) {\n this.typeSettings.connector = _extends({}, typeSettings.connector, this.typeSettings.connector);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawConnector\", this).call(this, _extends({}, context, typeSettings.connector, this.typeSettings.connector));\n }\n }, {\n key: \"drawNote\",\n value: function drawNote(context) {\n this.typeSettings.note = _extends({}, typeSettings.note, this.typeSettings.note);\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNote\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }, {\n key: \"drawNoteContent\",\n value: function drawNoteContent(context) {\n return get(customType.prototype.__proto__ || Object.getPrototypeOf(customType.prototype), \"drawNoteContent\", this).call(this, _extends({}, context, typeSettings.note, this.typeSettings.note));\n }\n }], [{\n key: \"init\",\n value: function init(annotation, accessors) {\n get(customType.__proto__ || Object.getPrototypeOf(customType), \"init\", this).call(this, annotation, accessors);\n if (_init) {\n annotation = _init(annotation, accessors);\n }\n return annotation;\n }\n }]);\n return customType;\n }(initialType);\n};\n\nvar d3NoteText = function (_Type) {\n inherits(d3NoteText, _Type);\n\n function d3NoteText(params) {\n classCallCheck(this, d3NoteText);\n\n var _this7 = possibleConstructorReturn(this, (d3NoteText.__proto__ || Object.getPrototypeOf(d3NoteText)).call(this, params));\n\n _this7.textWrap = params.textWrap || 120;\n _this7.drawText();\n return _this7;\n }\n\n createClass(d3NoteText, [{\n key: \"updateTextWrap\",\n value: function updateTextWrap(textWrap) {\n this.textWrap = textWrap;\n this.drawText();\n }\n\n //TODO: add update text functionality\n\n }, {\n key: \"drawText\",\n value: function drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\");\n\n var noteContent = this.note.select(\"g.annotation-note-content\");\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-label\");\n newWithClass(noteContent, [this.annotation], \"text\", \"annotation-note-title\");\n\n var titleBBox = { height: 0 };\n var label = this.a.select(\"text.annotation-note-label\");\n var wrapLength = this.annotation.note && this.annotation.note.wrap || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrap || this.textWrap;\n\n var wrapSplitter = this.annotation.note && this.annotation.note.wrapSplitter || this.typeSettings && this.typeSettings.note && this.typeSettings.note.wrapSplitter;\n\n var bgPadding = this.annotation.note && this.annotation.note.bgPadding || this.typeSettings && this.typeSettings.note && this.typeSettings.note.bgPadding;\n\n var 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 === \"undefined\" ? \"undefined\" : _typeof(bgPadding)) === \"object\") {\n bgPaddingFinal = _extends(bgPaddingFinal, bgPadding);\n }\n\n if (this.annotation.note.title) {\n var 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 var bbox = this.getNoteBBox();\n\n this.a.select(\"rect.annotation-note-bg\").attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right).attr(\"height\", bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom).attr(\"x\", bbox.x - bgPaddingFinal.left).attr(\"y\", -bgPaddingFinal.top).attr(\"fill\", \"white\").attr(\"fill-opacity\", 0);\n }\n }\n }]);\n return d3NoteText;\n}(Type);\n\nvar d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n});\n\nvar d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n});\n\nvar d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n});\n\nvar d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n});\n\nvar d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n});\n\nvar ThresholdMap = function (_d3Callout) {\n inherits(ThresholdMap, _d3Callout);\n\n function ThresholdMap() {\n classCallCheck(this, ThresholdMap);\n return possibleConstructorReturn(this, (ThresholdMap.__proto__ || Object.getPrototypeOf(ThresholdMap)).apply(this, arguments));\n }\n\n createClass(ThresholdMap, [{\n key: \"mapY\",\n value: function mapY(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapY\", this).call(this, accessors);\n var 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 key: \"mapX\",\n value: function mapX(accessors) {\n get(ThresholdMap.prototype.__proto__ || Object.getPrototypeOf(ThresholdMap.prototype), \"mapX\", this).call(this, accessors);\n var 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 return ThresholdMap;\n}(d3Callout);\n\nvar d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n});\n\nvar newWithClass = function newWithClass(a, d, type, className, classID) {\n var group = a.selectAll(type + \".\" + (classID || className)).data(d);\n group.enter().append(type).merge(group).attr(\"class\", className);\n\n group.exit().remove();\n return a;\n};\n\nvar addHandlers = function addHandlers(dispatcher, annotation, _ref3) {\n var component = _ref3.component,\n name = _ref3.name;\n\n if (component) {\n component.on(\"mouseover.annotations\", function () {\n dispatcher.call(name + \"over\", component, annotation);\n }).on(\"mouseout.annotations\", function () {\n return dispatcher.call(name + \"out\", component, annotation);\n }).on(\"click.annotations\", function () {\n return dispatcher.call(name + \"click\", component, annotation);\n });\n }\n};\n\n//Text wrapping code adapted from Mike Bostock\nvar wrap = function wrap(text, width, wrapSplitter) {\n var lineHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1.2;\n\n text.each(function () {\n var text = select(this),\n words = text.text().split(wrapSplitter || /[ \\t\\r\\n]+/).reverse().filter(function (w) {\n return w !== \"\";\n });\n var word = void 0,\n line$$1 = [],\n tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", 0.8 + \"em\");\n\n while (word = words.pop()) {\n line$$1.push(word);\n tspan.text(line$$1.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line$$1.length > 1) {\n line$$1.pop();\n tspan.text(line$$1.join(\" \"));\n line$$1 = [word];\n tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n};\n\nvar bboxWithoutHandles = function bboxWithoutHandles(selection) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \":not(.handle)\";\n\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n\n return selection.selectAll(selector).nodes().reduce(function (p, c) {\n var 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 var yOffset = c && c.attributes && c.attributes.y;\n p.height = Math.max(p.height, (yOffset && parseFloat(yOffset.value) || 0) + bbox.height);\n return p;\n }, { x: 0, y: 0, width: 0, height: 0 });\n};\n\nfunction annotation() {\n var annotations = [],\n collection = void 0,\n context = void 0,\n //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids = void 0,\n type = d3Callout,\n textWrap = void 0,\n notePadding = void 0,\n annotationDispatcher = dispatch(\"subjectover\", \"subjectout\", \"subjectclick\", \"connectorover\", \"connectorout\", \"connectorclick\", \"noteover\", \"noteout\", \"noteclick\", \"dragend\", \"dragstart\"),\n sel = void 0;\n\n var annotation = function annotation(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 var translatedAnnotations = annotations.map(function (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 = collection || new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors: accessors,\n accessorsInverse: accessorsInverse,\n ids: ids\n });\n\n var annotationG = selection.selectAll(\"g\").data([collection]);\n annotationG.enter().append(\"g\").attr(\"class\", \"annotations\");\n\n var group = selection.select(\"g.annotations\");\n newWithClass(group, collection.annotations, \"g\", \"annotation\");\n\n var annotation = group.selectAll(\"g.annotation\");\n\n annotation.each(function (d) {\n var 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(a.select(\"g.annotation-note\"), [d], \"g\", \"annotation-note-content\");\n d.type = d.type.toString() === \"[object Object]\" ? d.type : new d.type({\n a: a,\n annotation: d,\n textWrap: textWrap,\n notePadding: notePadding,\n editMode: editMode,\n dispatcher: annotationDispatcher,\n accessors: 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(\"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.\", collection.json);\n /* eslint-enable no-console */\n window.copy(JSON.stringify(collection.json.map(function (a) {\n delete a.type;\n return a;\n })));\n return annotation;\n };\n\n annotation.update = function () {\n if (annotations && collection) {\n annotations = collection.annotations.map(function (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(function (a) {\n a.type.note && 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) return collection && collection.annotations || annotations;\n annotations = _;\n\n if (collection && collection.annotations) {\n var rerun = annotations.some(function (d) {\n return !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 var value = annotationDispatcher.on.apply(annotationDispatcher, arguments);\n return value === annotationDispatcher ? annotation : value;\n };\n\n return annotation;\n}\n\nvar index = {\n annotation: annotation,\n annotationTypeBase: Type,\n annotationLabel: d3Label,\n annotationCallout: d3Callout,\n annotationCalloutCurve: d3CalloutCurve,\n annotationCalloutElbow: d3CalloutElbow,\n annotationCalloutCircle: d3CalloutCircle,\n annotationCalloutRect: d3CalloutRect,\n annotationXYThreshold: d3XYThreshold,\n annotationBadge: d3Badge,\n annotationCustomType: customType\n};\n\nexport { annotation, Type as annotationTypeBase, d3Label as annotationLabel, d3Callout as annotationCallout, d3CalloutCurve as annotationCalloutCurve, d3CalloutElbow as annotationCalloutElbow, d3CalloutCircle as annotationCalloutCircle, d3CalloutRect as annotationCalloutRect, d3XYThreshold as annotationXYThreshold, d3Badge as annotationBadge, customType as annotationCustomType };export default index;\n//# sourceMappingURL=indexRollupNext.js.map\n","import { 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 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 ? this.titleClickColor() : this.titleColor())\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 title(): string;\n title(_: string): this;\n titleDescription(): string;\n titleDescription(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleClickColor(): string;\n titleClickColor(_: string): this;\n\n maxDiameter(): number;\n maxDiameter(_: number): this;\n value(): number;\n value(_: number): this;\n valueDescription(): string;\n valueDescription(_: string): this;\n showTick(): boolean;\n showTick(_: boolean): this;\n tickValue(): number;\n tickValue(_: number): this;\n tickValueDescription(): string;\n tickValueDescription(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n\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(\"title\", \"\", \"string\", \"Title\");\nGauge.prototype.publish(\"titleDescription\", \"\", \"string\", \"Title Description\");\nGauge.prototype.publish(\"titleColor\", \"black\", \"html-color\", \"Color of the title text\");\nGauge.prototype.publish(\"titleClickColor\", \"blue\", \"html-color\", \"Color of the title text when clickable\");\n\nGauge.prototype.publish(\"maxDiameter\", 128, \"number\", \"Max Diameter\");\nGauge.prototype.publish(\"value\", 0, \"number\", \"Value\");\nGauge.prototype.publish(\"valueDescription\", \"\", \"string\", \"Value Description\");\nGauge.prototype.publish(\"showTick\", false, \"boolean\", \"Show Tick\");\nGauge.prototype.publish(\"tickValue\", 0, \"number\", \"Tick Value\");\nGauge.prototype.publish(\"tickValueDescription\", \"\", \"string\", \"Tick Value Description\");\nGauge.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\");\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 { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, 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\nconst sortAscending = (a, b) => a[1] - b[1] > 0 ? 1 : -1;\nconst sortDescending = (a, b) => a[1] - b[1] > 0 ? -1 : 1;\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\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 calcPadAngleRadians(): number {\n const paddingValue = this.slicePadding();\n return paddingValue > 0 ? Math.min(paddingValue, 0.05) : 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\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection\n .widgetElement(element)\n .skipBringToTop(true)\n ;\n\n this._slices = element.append(\"g\");\n this._labels = element.append(\"g\");\n\n const context = this;\n\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 this.selectionGlow(!this.tabNavigation());\n super.update(_domNode, element);\n const context = this;\n\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 outerRadius = this.calcOuterRadius();\n const innerRadius = Math.max(this.calcInnerRadius(), Math.min(outerRadius / 30, 6));\n const labelRadius = outerRadius + 12;\n\n this.d3Arc\n .innerRadius(innerRadius)\n .padRadius(outerRadius)\n .outerRadius(outerRadius)\n .padAngle(this.calcPadAngleRadians())\n ;\n\n this._quadIdxArr = [[], [], [], []];\n const data = [...this.data()];\n switch (this.sortDataByValue()) {\n case \"ascending\":\n data.sort(sortAscending);\n break;\n case \"descending\":\n data.sort(sortDescending);\n break;\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 .on(\"keydown\", function (evt, d) {\n const event = d3Event();\n if (context.tabNavigation() && (event.code === \"Space\" || event.key === \"Enter\")) {\n event.preventDefault();\n context._selection.click(this);\n }\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 .attr(\"tabindex\", context.tabNavigation() ? \"0\" : null)\n .attr(\"role\", context.tabNavigation() ? \"button\" : null)\n .attr(\"aria-label\", context.tabNavigation() ? (d: any) => `${d.data[0]}: ${d.data[1]}` : null)\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\n switch (this.sortDataByValue()) {\n case \"ascending\":\n this.d3Pie.sort(sortAscending);\n break;\n case \"descending\":\n this.d3Pie.sort(sortDescending);\n break;\n default:\n this.d3Pie.sort(null);\n }\n\n this.d3Pie\n .padAngle(this.calcPadAngleRadians())\n .startAngle(startAngle)\n .endAngle(2 * Math.PI + startAngle)\n .value(function (d) {\n return d[1];\n })\n ;\n }\n}\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\n\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 slicePadding(): number;\n slicePadding(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n sortDataByValue(): \"none\" | \"ascending\" | \"descending\";\n sortDataByValue(_: \"none\" | \"ascending\" | \"descending\"): this;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n outerText(): boolean;\n outerText(_: boolean): this;\n innerRadius(): number;\n innerRadius(_: number): this;\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;\n tooltipTick(_: boolean): Pie;\n tooltipTick_default(): boolean;\n tooltipTick_default(_: boolean): Pie;\n tooltipOffset(): number;\n tooltipOffset(_: number): Pie;\n tooltipOffset_default(): number;\n tooltipOffset_default(_: number): Pie;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n\n // Tab Navigation\n tabNavigation(): boolean;\n tabNavigation(_: 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() });\nPie.prototype.publish(\"slicePadding\", 0.01, \"number\", \"Padding between pie slices (converted to pixels)\", null, { tags: [\"Basic\"], range: { min: 0, step: 0.01, max: 0.2 } });\nPie.prototype.publish(\"sortDataByValue\", \"descending\", \"set\", \"Sort data by value\", [\"none\", \"ascending\", \"descending\"]);\nPie.prototype.publish(\"tabNavigation\", false, \"boolean\", \"Enable or disable tab navigation\");\n","import { Pie } from \"./Pie.ts\";\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.ts\";\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 = this.maxWeight_exists() ? this.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 maxWeight(): number;\n maxWeight(_: number): this;\n maxWeight_exists(): boolean;\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(\"maxWeight\", undefined, \"number\", \"Clamp max weight to value (optional), omitting uses max data point\", undefined, { optional: true });\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 if (p[2] < 0) {\n p[2] = 0;\n } else if (p[2] > this._max) {\n p[2] = this._max;\n }\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.ts\";\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}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nexport interface HexBin {\n // ITooltip\n tooltip;\n tooltipHTML(_): string;\n tooltipFormat(_): string;\n tooltipValueFormat(_): string;\n tooltipValueFormat_default(_): string;\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n binSize(): number;\n binSize(_: number): this;\n}\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.ts\";\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.ts\";\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}\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 // 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}\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}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\n\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\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 // SimpleSelectionMixin\n _selection;\n}\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.ts\";\nimport { Scatter } from \"./Scatter.ts\";\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 View = \"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 type StatChartView = \"min_max\" | \"25_75\" | \"normal\";\nexport type Quartiles = [number, number, number, number, number];\nexport type Data = [[number, number, number, number, number, number, number]];\n\nexport class StatChart extends HTMLWidget {\n\n protected _selectElement: any;\n protected _tickFormatter: (_: number) => string;\n\n protected _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 protected _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 constructor() {\n super();\n this\n .columns([\"Min\", \"25%\", \"50%\", \"75%\", \"Max\", \"Mean\", \"Std. Dev.\"])\n ;\n }\n\n protected stdDev(degrees: number): number {\n return this.mean() + degrees * this.standardDeviation();\n }\n\n protected formatStdDev(degrees: number): string {\n return this._tickFormatter(this.stdDev(degrees));\n }\n\n protected quartile(q: 0 | 1 | 2 | 3 | 4): number {\n return this.quartiles()[q];\n }\n\n protected formatQ(q: 0 | 1 | 2 | 3 | 4): string {\n return this._tickFormatter(this.quartile(q));\n }\n\n protected domain(mode: View): [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 protected min(): number {\n return this.quartile(0);\n }\n\n protected max(): number {\n return this.quartile(4);\n }\n\n data(): Data;\n data(_: Data): this;\n data(_?: Data): Data | this {\n if (!arguments.length) return [[...this.quartiles(), this.mean(), this.standardDeviation()]];\n const row = _[0];\n this.quartiles([row[0], row[1], row[2], row[3], row[4]]);\n this.mean(row[5]);\n this.standardDeviation(row[6]);\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._selectElement = element.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"right\", \"0px\").append(\"select\")\n .on(\"change\", () => {\n this.view(this._selectElement.node().value);\n this.lazyRender();\n })\n ;\n this._selectElement.append(\"option\").attr(\"value\", \"min_max\").text(\"Min / Max\");\n this._selectElement.append(\"option\").attr(\"value\", \"25_75\").text(\"25% / 75%\");\n this._selectElement.append(\"option\").attr(\"value\", \"normal\").text(\"Normal\");\n }\n\n protected bellTicks(mode: View): 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._selectElement.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._selectElement.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 this._selectElement.node().value = this.view();\n this.updateScatter();\n this.updateCandle();\n }\n\n exit(domNode, element) {\n this._bellCurve.target(null);\n this._candle.target(null);\n this._selectElement.remove();\n\n super.exit(domNode, element);\n }\n}\nStatChart.prototype._class += \" chart_StatChart\";\n\nexport interface StatChart {\n view(): StatChartView;\n view(_: StatChartView): this;\n\n tickFormat(): string;\n tickFormat(_: string): this;\n candleHeight(): number;\n candleHeight(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n\n mean(): number;\n mean(_: number): this;\n standardDeviation(): number;\n standardDeviation(_: number): this;\n quartiles(): Quartiles;\n quartiles(_: Quartiles): this;\n}\nStatChart.prototype.publish(\"view\", \"min_max\", \"set\", \"View\", [\"min_max\", \"25_75\", \"normal\"]);\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\nStatChart.prototype.publish(\"mean\", .5, \"number\", \"Mean\");\nStatChart.prototype.publish(\"standardDeviation\", .125, \"number\", \"Standard Deviation (σ)\");\nStatChart.prototype.publish(\"quartiles\", [0, .25, .5, .75, 1], \"object\", \"Quartiles (Min, 25%, 50%, 75%, Max)\");\n","import { Scatter } from \"./Scatter.ts\";\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) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\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.ts\";\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}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface WordCloud {\n\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSizeFrom(): number;\n fontSizeFrom(_: number): this;\n fontSizeTo(): number;\n fontSizeTo(_: number): this;\n angleFrom(): number;\n angleFrom(_: number): this;\n angleTo(): number;\n angleTo(_: number): this;\n angleCount(): number;\n angleCount(_: number): this;\n padding(): number;\n padding(_: number): this;\n scaleMode(): string;\n scaleMode(_: string): this;\n spiral(): string;\n spiral(_: string): this;\n offsetX(): number;\n offsetX(_: number): this;\n offsetY(): number;\n offsetY(_: number): this;\n zoom(): number;\n zoom(_: number): this;\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;\n tooltipStyle(_: string): this;\n tooltipValueFormat(): string;\n tooltipValueFormat(_: string): this;\n tooltipSeriesColor(): string;\n tooltipSeriesColor(_: string): this;\n tooltipLabelColor(): string;\n tooltipLabelColor(_: string): this;\n tooltipValueColor(): string;\n tooltipValueColor(_: string): this;\n tooltipTick(): boolean;\n tooltipTick(_: boolean): this;\n tooltipOffset(): number;\n tooltipOffset(_: number): this;\n tooltipOffset_exists(): boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\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","import { timeFormat } from \"d3-time-format\";\n\n/**\n * Adaptive 24-hour multi-scale tick formatter.\n * Order of precedence (first predicate that matches):\n * milliseconds -> seconds -> minutes -> hours -> day -> month -> year.\n */\nexport function multiScale24Hours(): (d: Date) => string {\n const fmtMs = timeFormat(\".%L\");\n const fmtSec = timeFormat(\":%S\");\n const fmtMin = timeFormat(\"%H:%M\");\n const fmtHour = timeFormat(\"%H:00\");\n const fmtDay = timeFormat(\"%b %d\");\n const fmtMonth = timeFormat(\"%b\");\n const fmtYear = timeFormat(\"%Y\");\n\n return (d: Date): string => {\n if (d.getMilliseconds() !== 0) return fmtMs(d);\n if (d.getSeconds() !== 0) return fmtSec(d);\n if (d.getMinutes() !== 0) return fmtMin(d);\n if (d.getHours() !== 0) return fmtHour(d);\n if (d.getDate() !== 1) return fmtDay(d);\n if (d.getMonth() !== 0) return fmtMonth(d);\n return fmtYear(d);\n };\n}\n"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","pi","Math","PI","tau","epsilon","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","_","path","constant$3","x","__name","prototype","constructor","moveTo","y","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","x0","y0","x21","y21","x01","y01","l01_2","Error","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","w","h","toString","atan2","max","min","halfPi","asin","arcInnerRadius","d","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","constant","padRadius","context","buffer","r0","apply","arguments","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","a","length","Linear","_context","d3CurveLinear","p","d3Line","pointX","pointY","defined","curve","curveLinear","output","line","data","i","n","defined0","lineStart","lineEnd","point","d3Area","area","j","k","x0z","Array","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending","b","NaN","identity$2","d3Pie","value","identity","sortValues","sort","pie","v","sum","index","arcs","pa","that","Basis","d3CurveBasis","Bundle","beta","_basis","_beta","_line","_point","_x","_y","push","d3CurveBundle","custom","bundle","_k","_x2","_y2","Cardinal","tension","d3CurveCardinal","cardinal","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","m","CatmullRom","alpha","_alpha","x23","y23","pow","d3curveCatmullRom","catmullRom","sign","slope3","h0","h1","s0","s1","slope2","MonotoneX","monotoneX","Natural","controlPoints","d3CurveNatural","Step","_t","d3CurveStep","stepBefore","stepAfter","_t0","Object","create","call","px","py","i0","i1","slice","identity$1","translateX","translateY","number","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","values","ticks","domain","format","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","_Axis","SVGWidget","_origType","_origTimePattern","parser","parserInvert","formatter","d3Scale","d3Axis","d3Guides","_guideElement","svg","svgAxis","svgGuides","_tickFormatFunc","drawStartPosition","super","_drawStartPos","updateScale","lowValue","parse","low","highValue","high","forceNumeric","map","parseInvert","parseFormat","tickFormatFunc","fn","scalePos","retVal","type","isHorizontal","orientation","rangeRoundBands","rangeExtent","rangeRound","invert","pos","guideTarget","d3Select","_class","domNode","element","_prevOrientation","d3ScaleBand","paddingInner","ordinalPaddingInner","paddingOuter","ordinalPaddingOuter","ordinals_exists","ordinals","ordinalMappings_exists","mappings","ordinalMappings","d3ScaleLinear","low_exists","high_exists","tickFormat_exists","d3Format","d3ScalePow","exponent","powExponent","d3ScaleLog","base","logBase","d3ScaleTime","timePattern_exists","d3TimeParse","timePattern","d3TimeFormat","d3AxisLeft","d3AxisTop","d3AxisRight","d3AxisBottom","html","extend","delta","newLow","newHigh","width","height","tickCount","tickLength_exists","tickLength","customTicks","_d","label","adjustText","tickOverlapModulus","isHoriztontal","isLeft","isBottom","textSelection","style","fontFamily","fontSize_exists","fontSize","overlapMode","linebreak","wrap","deg","labelRotation","elm","bbox","node","getBBox","dyOff","calcTickOverlapModulus","bboxArr","getBoundingClientRect","right","left","calcOverflow","ignoreText","hidden","top","bottom","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","Axis","publish","disable","optional","_type","_timePattern","_XYAxis","domainAxis","valueAxis","xAxis","yAxis","xyBrush","xBrush","yBrush","margin","focusChart","Utility","SimpleSelectionMixin","orientation_default","overlapMode_default","shrinkToFit_default","extend_default","d3Brush","on","brushMoved","brushMoved2","d3BrushX","d3BrushY","_prevBrush","resetSelection","parseData","parseValue","formatData","formatValue","parsedData","row","prevValue","cell","idx","columns","_retVal","yAxisStacked","svgRegions","svgDomainGuide","svgValueGuide","svgData","svgDataClipRect","svgFocus","svgBrush","id","_selection","widgetElement","target","chartsEnter","resizeBrushHandle","e","_skipSelection","skipSelection","selected","currSel","d3BrushSelection","dataPos","use2dSelection","pos2","valuePos","handleTypes","handlePath","s","d3Event","getAxisSize","host","calcMargin","_domNode","selectionMode","xAxisFocus","xAxisFocusHeight","xRight","xHeight","yTop","yWidth","xAxisOverlap","newXHeight","yAxisOverlap","newYWidth","updateRegions","regions","_palette","colorID","d3Hsl","brighter","_prevXAxisType","selectionGlow","tabNavigation","xAxisTitle_exists","xAxisTitle","xAxisType","colLen","xAxisOrdinalMapping","domainMin","xAxisDomainLow","d3Min","domainMax","xAxisDomainHigh","d3Max","yAxisDomainLow","indexOf","yAxisDomainHigh","maxCurrExtent","maxOtherExtent","xAxisGuideLines","render","yAxisGuideLines","updateBrush","updateFocusChart","chartsUpdate","currBrush","prevBrushSel","extent","tmp","ratio","move","syncAxis","layers","copyPropsTo","layerIdx","layer","layerColumns","masterColumns","col","layerColumnIndices","layerColumnIndex","column","layerData","indices","__hpcc_origRow","layerEnter","duration","layerUpdate","layerExit","class","resize","_selected","origRow","svgGlowID","selRows","rowToObj","setTimeout","click","lparam","XYAxis","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","_prevPointShape","mapShape","shape","parentRelativeDiv","switch","paletteID","useClonedPalette","cloneNotExists","pointShape","pointSizeColumnIdx","pointSizeColumn_exists","pointSizeColumn","d3Extent","flatData","flattenData","colIdx","size","maxPointSize","minPointSize","pointSize","areas","areasEnter","cssTag","interpolateFillOpacity","lines","linesEnter","data2","points","valueAnchor","valueBaseline","_idx","textColor","tooltip","hide","show","bind","dblclick","evt","event","code","key","preventDefault","showValue","__publicField","multi","Scatter","implements","step","_Area","interpolate_default","interpolateFill_default","Area","_Column","_linearGap","textLocal","d3Local","stackedTextLocal","skipBringToTop","adjustedData","retVal2","formatPct","showValueAsPercentFormat","dataLen","direction","columnScale","xAxisSeriesPaddingInner","domainSums","seriesSums","columnLength","rowData","showValueAsPercent","forEach","showDomainTotal","reduce","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","valueFontFamily","valueFontSize","textSize","isPositive","leftSpace","rightSpace","topSpace","bottomSpace","noRoomInside","isOutside","noRoomOnExpectedSide","valueTextWidth","category","valueCentered","hideValue","get","anchor","colorFill","visible","value4pos","stackedTotalText","valueFontFamily_exists","origInnerText","fullWidth2","fullWidth3","excessWidth","letter","Column","_Bar","Bar","count","children","node_count","eachAfter","node_each","callback","current","next","node_eachBefore","nodes","node_eachAfter","node_sum","node_sort","compare","eachBefore","node_path","end","start","ancestor","leastCommonAncestor","parent","splice","aNodes","ancestors","bNodes","c","node_ancestors","node_descendants","node_leaves","leaves","node_links","root","links","source","hierarchy","child","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","descendants","shuffle","array","random","enclose","circles","B","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c2","c3","d1","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","circle","previous","packEnclose","aa","ca","sj","sk","pack","f","required","constantZero","constant$2","defaultRadius","d3Pack","radius","radiusLeaf","packChildren","translateChild","_Bubble","labelWidgets","I2DChart","d3Hierarchy","cloneData","element2","__viz_faChar","FAChar","char","colorFill_default","Bubble","_BubbleXY","BubbleXY","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","timerFlush","wake","nap","poke","delay","t2","time","Infinity","sleep","clearTimeout","clearInterval","setInterval","d3Bullet","vertical","ranges","bulvarRanges","markers","bulvarMarkers","measures","bulvarMeasures","bulvar","g","extentX","extentY","rangez","d3Descending","markerz","measurez","g2","empty","__chart__","w0","bulvarWidth","w1","i2","measure","marker","d3TimerFlush","restart","TypeError","stop","_Bullet","HTMLWidget","_hiddenColumns","bulletData","valueOf","titleColumn","subtitle","subtitleColumn","rangesColumn","measuresColumn","markersColumn","columnType","svgUpdate","bulletTitle","titleWidth","chart","keys","Bullet","ascending","ring","constant$1","contains","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","q","noop$2","cases","contours","threshold","thresholdSturges","smooth","smoothLinear","tz","isArray","tickStep","contour","polygons","holes","isorings","polygon","coordinates","t3","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","concat","unshift","v0","xt","yt","v1","_0","_1","thresholds","noop","blurX","sr","blurY","defaultX","defaultY","defaultWeight","d3ContourDensity","weight","o","density","values0","Float32Array","values1","wi","shift","geometry","transformPolygon","transformRing","transformPoint","cellSize","log","LN2","adder","Adder","reset","add","temp","bv","av","streamGeometry","stream","streamGeometryType","hasOwnProperty","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","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","z","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","PathString","_string","geoPath","projection","projectionStream","contextStream","pathArea","pathMeasure","pathBounds","pathCentroid","_circle","_Contour","_dataMinWeight","_dataMaxWeight","xAxisType_default","contourData","contourBandwidth","_vals","minValue","maxValue","showContourFill","contourStrokeColor","contourStrokeWidth","Contour","I1DChart","_Gantt","yAxisType_default","Gantt","CardinalClosed","CardinalOpen","_x3","_x4","_x5","_y3","_y4","_y5","curveCatmullRom","CatmullRomClosed","CatmullRomOpen","_typeof","Symbol","iterator","obj","classCallCheck","instance","Constructor","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","_extends","assign","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","inherits","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","toConsumableArray","arr2","from","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","_this","setPositionWithAccessors","_editMode","editMode","updateEditMode","textWrap","updateTextWrap","drawText","notePadding","_this2","getNoteBBoxOffset","positionX","positionY","pointHandle","_ref$cx","_ref$cy","circleHandles","_ref2$cx","_ref2$cy","addHandles","_ref5","group","handles","_ref5$r","drag","container","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","noteAlignment","_ref$padding","_ref$bbox","_ref$offset","lineBuilder","_ref$curve","canvasContext","lineGen","builder","pathMethods","attrs","arcBuilder","arcShape","noteVertical","components","noteHorizontal","lineSetup","subjectType","annotation","subjectData","angle","radiusPadding","connectorLine","connectorData","connectorElbow","diffY","diffX","xe","ye","opposite","_angle","connectorCurve","createPoints","cHandles","updatePoint","mapHandles","anchors","diff","connectorArrow","_ref$scale","angleOffset","atan","connectorDot","line$$1","dot","subjectCircle","updateRadius","subjectRect","updateWidth","updateHeight","rHandles","subjectThreshold","subjectBadge","_ref$subjectData","_ref$type","typeSettings","notCornerOffset","placement","xleftcorner","xrightcorner","ytopcorner","ybottomcorner","xleft","xright","ytop","ybottom","circlebg","fill","pointer","notCornerPointerXY","bHandles","stroke","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","newWithClass","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","offsetX","offsetY","subjectParams","_subject","_subject$components","_subject$handles","dragSubject","_this3","connectorParams","_connector","_connector$components","_connector$handles","endType","endScale","_this4","noteData","noteParams","lineType","_note","_note$components","_note$handles","dragNote","dragging","dragstarted","dragended","_noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","_this5","customType","initialType","_init","_initialType","settings","_this6","d3NoteText","params","_this7","titleBBox","wrapLength","wrapSplitter","bgPadding","bgPaddingFinal","d3Callout","d3CalloutElbow","ThresholdMap","lineHeight","selector","yOffset","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","draw","console","JSON","stringify","updateText","updatedAccessors","updateDisable","updateNotePadding","some","value2Angle","pointOnArc","indicatorTranslate","inner","rotation","indicatorTween","newAngle","d3Interpolate","arcTween","startInterpolate","endInterpolate","_Gauge","_d3Arc","_colorScale","scaleLinear","d3InterpolateHcl","_usageArc","_meanArc","_freeArc","_indInner","_indOuter","_centerTextG","_centerText","_bottomText","_tooltipG","_mainTooltip","tip","interrupt","datum","xOffset","annotationtip","d3Annotation","annotationCalloutElbow","calcSize","textElement","bb","widthTransform","heightTransform","calcWidth","maxDiameter","valueDescription","tickValueDescription","appendIndicator","titleDescription","colorDomain","colorRange","val","tickVal","tickValue","attrTween","emptyColor","tickColor","showTick","titleClickColor","titleColor","point2","Gauge","sortAscending","sortDescending","_Pie","_totalValue","d3LabelArc","_labelPositions","_smallValueLabelHeight","_labelWidthLimit","_quadIdxArr","_minLabelTop","_maxLabelBottom","_seriesValueFormatter","_seriesPercentageFormatter","tooltipTick_default","tooltipOffset_default","intersection","pointA","pointB","intersectCircle","calcOuterRadius","calcInnerRadius","innerRadius_exists","maxTextWidth","getLabelText","horizontalLimit","_size","showLabels","verticalLimit","minOuterRadius","calcSmallValueLabelHeight","totalVal","acc","smallCount","labelHeight","calcTotalValue","calcPadAngleRadians","paddingValue","slicePadding","truncate","len","labelWidth","showSeriesValue","showSeriesPercentage","perc","selection2","strRow","selectByLabel","_slices","_labels","updateD3Pie","seriesValueFormat","seriesPercentageFormat","labelRadius","sortDataByValue","quad","getQuadrant","midAngle","mergedText","mid_angle","isLeftSide","adjustForOverlap","polyline","outerRadiusDelta","pos1","centerOnLabels","normalizeRadians","radians","rad","gY","gY2","heightDiff","absTop","yShift","prevTop","degreesToRadians","Pie","_HalfPie","_pos","_target","SVGElement","_widgetScale","HalfPie","_Heat","_domForeignObject","_domCanvas","_heat","radiusX","radiusY","simpleheat","maxWeight","maxWeight_exists","gradient","reversePalette","defaultGradient","radiusAsPercent","clear","blur","minOpacity","Heat","canvas","_canvas","document","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","createElement","thirdPi","angles","d3HexBin","hexbin","binsById","bins","isNaN","py1","px1","pi2","pj2","px2","py2","bin","hexagon","centers","mesh","fragment","_HexBin","_hexbin","I2DAggrChart","tooltipValueFormat_default","seriesExtent","labelExtent","binSize","dataPoints","hexBinPoints","minBinPoints","maxBinPoints","HexBin","_Line","Line","_QuarterPie","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","QuartileCandlestick","_Radar","setPointAttributes","half_size","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","Radar","_RadialBar","_domainScale","_valueScale","_arcs","_axialAxis","_radialAxis","valueDomainHigh_exists","valueDomainHigh","valueMaxAngle","chartRadius","domainData","domainPadding","domainCircles","domainText","valueLines","degrees","valueColumn","transitionDelay","transitionDuration","indx","_current","RadialBar","palette","ordinal","myFormatter","num","strVal","_StatChart","_selectElement","_tickFormatter","_bellCurve","xAxisOverlapMode","xAxisTickFormat","yAxisHidden","_candle","stdDev","mean","standardDeviation","formatStdDev","quartile","quartiles","formatQ","mode","view","lazyRender","bellTicks","domainLow","domainHigh","sd","updateScatter","xAxisTicks","candleHeight","updateCandle","candleX","candleW","StatChart","_Step","TEXT","HTML","_Summary","_playIntervalIdx","_mainDiv","_headerDiv","_textDiv","_tag","playInterval","lookupFieldIdx","propID","defaultIdx","lookupFieldText","currentRow","summaryData","labelFieldIdx","hideLabel","iconFieldIdx","valueFieldIdx","moreIconIdx","moreTextIdx","hideMore","colorFillIdx","colorStrokeIdx","formattedData","icon","moreIcon","moreText","colorStroke","fixedSize","minWidth_exists","minWidth","minHeight_exists","minHeight","iconFontSize","headerFontSize","valueHTML","textFontSize","labelHTML","moreDivs","moreDivsUpdate","hideMoreWrapper","moreFontSize","moreWrapperHeight_exists","moreWrapperHeight","d3Rgb","darker","moreTextHTML","innerHTML","Summary","iconColumn","moreIconColumn","moreTextColumn","colorFillColumn","colorStrokeColumn","_playIntervalHandle","_renderCount","_SummaryC","CanvasWidget","minDimension","sizeRatio","fontSizeRatio","labelIdx","labelColumn","valueIdx","bgColorIdx","fontColorIdx","iconIdx","bgColor","fontColor","mainFontSize","paddingSizeRatio","subFontSize","iconSize","iconSizeRatio","anchorMode","textBaseline","font","measurement","measureText","getTextOffsetX","fillText","drawIcon","iconBaseline","fontSizeMult","getTextOffsetY","iconOpacity","faChar","iconAnchor","valueOpacity","labelOpacity","SummaryC","cloudRadians","ch","d3Cloud","cloud","cloudText","cloudFont","cloudFontSize","fontStyle","cloudFontNormal","fontWeight","cloudRotate","cloudPadding","spiral","archimedeanSpiral","timeInterval","timer","cloudCanvas","strokeStyle","textAlign","board","tag","startX","startY","maxDelta","dt","dxdy","cloudCollide","collideRects","sprite","sw","lx","sx","msx","last","functor","contextAndRatio","zeroArray","cloudSprite","hasText","cloudBounds","spirals","di","maxh","save","cr","wcr","wsr","hcr","hsr","translate","strokeText","restore","xoff","yoff","w32","seen","seenRow","b0","b1","rectangularSpiral","archimedean","rectangular","_WordCloud","_prevOffsetX","_prevOffsetY","_prevZoom","_root","_d3Cloud","_d3Zoom","zoom","calcData","__viz_label","__viz_weight","__viz_row","d3Zoom","scaleExtent","zoomed","scaler","scaleMode","fontSizeFrom","fontSizeTo","angleDomain","angleCount","angleFrom","angleTo","toLowerCase","trim","WordCloud","multiScale24Hours","fmtMs","timeFormat","fmtSec","fmtMin","fmtHour","fmtDay","fmtMonth","fmtYear","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,95]}
|