@hpcc-js/chart 2.86.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/index.js +323 -11790
  2. package/dist/index.js.map +7 -1
  3. package/package.json +32 -36
  4. package/src/Area.ts +1 -1
  5. package/src/Axis.ts +91 -60
  6. package/src/Bar.ts +1 -1
  7. package/src/Bubble.ts +18 -13
  8. package/src/BubbleXY.ts +1 -1
  9. package/src/Bullet.ts +21 -11
  10. package/src/Column.ts +13 -13
  11. package/src/Contour.ts +1 -1
  12. package/src/D3Cloud.ts +13 -13
  13. package/src/Gantt.ts +1 -1
  14. package/src/Gauge.ts +30 -28
  15. package/src/HalfPie.ts +1 -1
  16. package/src/Heat.ts +1 -1
  17. package/src/HexBin.ts +16 -11
  18. package/src/Line.ts +1 -1
  19. package/src/Pie.ts +31 -27
  20. package/src/QuarterPie.ts +1 -1
  21. package/src/Radar.ts +15 -15
  22. package/src/RadialBar.ts +18 -13
  23. package/src/Scatter.ts +36 -25
  24. package/src/StatChart.ts +11 -3
  25. package/src/Step.ts +1 -1
  26. package/src/WordCloud.ts +56 -51
  27. package/src/XYAxis.ts +4 -4
  28. package/src/__package__.ts +2 -2
  29. package/src/index.ts +27 -27
  30. package/types/Area.d.ts +1 -2
  31. package/types/Axis.d.ts +69 -120
  32. package/types/Bar.d.ts +1 -2
  33. package/types/Bubble.d.ts +13 -16
  34. package/types/BubbleXY.d.ts +1 -2
  35. package/types/Bullet.d.ts +13 -7
  36. package/types/Column.d.ts +9 -10
  37. package/types/Contour.d.ts +1 -2
  38. package/types/D3Cloud.d.ts +0 -1
  39. package/types/Gantt.d.ts +1 -2
  40. package/types/Gauge.d.ts +19 -11
  41. package/types/HalfPie.d.ts +1 -2
  42. package/types/Heat.d.ts +1 -2
  43. package/types/HexBin.d.ts +13 -18
  44. package/types/Line.d.ts +1 -2
  45. package/types/Pie.d.ts +23 -35
  46. package/types/QuarterPie.d.ts +1 -2
  47. package/types/QuartileCandlestick.d.ts +0 -1
  48. package/types/Radar.d.ts +10 -11
  49. package/types/RadialBar.d.ts +10 -11
  50. package/types/Scatter.d.ts +29 -51
  51. package/types/StatChart.d.ts +3 -3
  52. package/types/Step.d.ts +1 -2
  53. package/types/Summary.d.ts +0 -1
  54. package/types/SummaryC.d.ts +0 -1
  55. package/types/WordCloud.d.ts +50 -110
  56. package/types/XYAxis.d.ts +3 -4
  57. package/types/__package__.d.ts +2 -3
  58. package/types/index.d.ts +27 -28
  59. package/dist/index.es6.js +0 -11759
  60. package/dist/index.es6.js.map +0 -1
  61. package/dist/index.min.js +0 -2
  62. package/dist/index.min.js.map +0 -1
  63. package/types/Area.d.ts.map +0 -1
  64. package/types/Axis.d.ts.map +0 -1
  65. package/types/Bar.d.ts.map +0 -1
  66. package/types/Bubble.d.ts.map +0 -1
  67. package/types/BubbleXY.d.ts.map +0 -1
  68. package/types/Bullet.d.ts.map +0 -1
  69. package/types/Column.d.ts.map +0 -1
  70. package/types/Contour.d.ts.map +0 -1
  71. package/types/D3Cloud.d.ts.map +0 -1
  72. package/types/Gantt.d.ts.map +0 -1
  73. package/types/Gauge.d.ts.map +0 -1
  74. package/types/HalfPie.d.ts.map +0 -1
  75. package/types/Heat.d.ts.map +0 -1
  76. package/types/HexBin.d.ts.map +0 -1
  77. package/types/Line.d.ts.map +0 -1
  78. package/types/Pie.d.ts.map +0 -1
  79. package/types/QuarterPie.d.ts.map +0 -1
  80. package/types/QuartileCandlestick.d.ts.map +0 -1
  81. package/types/Radar.d.ts.map +0 -1
  82. package/types/RadialBar.d.ts.map +0 -1
  83. package/types/Scatter.d.ts.map +0 -1
  84. package/types/StatChart.d.ts.map +0 -1
  85. package/types/Step.d.ts.map +0 -1
  86. package/types/Summary.d.ts.map +0 -1
  87. package/types/SummaryC.d.ts.map +0 -1
  88. package/types/WordCloud.d.ts.map +0 -1
  89. package/types/XYAxis.d.ts.map +0 -1
  90. package/types/__package__.d.ts.map +0 -1
  91. package/types/__tests__/heat.d.ts +0 -10
  92. package/types/__tests__/heat.d.ts.map +0 -1
  93. package/types/__tests__/index.d.ts +0 -2
  94. package/types/__tests__/index.d.ts.map +0 -1
  95. package/types/__tests__/pie.d.ts +0 -5
  96. package/types/__tests__/pie.d.ts.map +0 -1
  97. package/types/__tests__/stat.d.ts +0 -5
  98. package/types/__tests__/stat.d.ts.map +0 -1
  99. package/types/__tests__/test3.d.ts +0 -9
  100. package/types/__tests__/test3.d.ts.map +0 -1
  101. package/types/index.d.ts.map +0 -1
  102. package/types/test.d.ts +0 -10
  103. package/types/test.d.ts.map +0 -1
  104. package/types-3.4/Area.d.ts +0 -5
  105. package/types-3.4/Axis.d.ts +0 -180
  106. package/types-3.4/Bar.d.ts +0 -5
  107. package/types-3.4/Bubble.d.ts +0 -32
  108. package/types-3.4/BubbleXY.d.ts +0 -6
  109. package/types-3.4/Bullet.d.ts +0 -19
  110. package/types-3.4/Column.d.ts +0 -70
  111. package/types-3.4/Contour.d.ts +0 -30
  112. package/types-3.4/D3Cloud.d.ts +0 -2
  113. package/types-3.4/Gantt.d.ts +0 -5
  114. package/types-3.4/Gauge.d.ts +0 -47
  115. package/types-3.4/HalfPie.d.ts +0 -7
  116. package/types-3.4/Heat.d.ts +0 -32
  117. package/types-3.4/HexBin.d.ts +0 -34
  118. package/types-3.4/Line.d.ts +0 -6
  119. package/types-3.4/Pie.d.ts +0 -95
  120. package/types-3.4/QuarterPie.d.ts +0 -12
  121. package/types-3.4/QuartileCandlestick.d.ts +0 -57
  122. package/types-3.4/Radar.d.ts +0 -47
  123. package/types-3.4/RadialBar.d.ts +0 -44
  124. package/types-3.4/Scatter.d.ts +0 -80
  125. package/types-3.4/StatChart.d.ts +0 -70
  126. package/types-3.4/Step.d.ts +0 -5
  127. package/types-3.4/Summary.d.ts +0 -105
  128. package/types-3.4/SummaryC.d.ts +0 -69
  129. package/types-3.4/WordCloud.d.ts +0 -130
  130. package/types-3.4/XYAxis.d.ts +0 -181
  131. package/types-3.4/__package__.d.ts +0 -4
  132. package/types-3.4/__tests__/heat.d.ts +0 -10
  133. package/types-3.4/__tests__/index.d.ts +0 -2
  134. package/types-3.4/__tests__/pie.d.ts +0 -5
  135. package/types-3.4/__tests__/stat.d.ts +0 -5
  136. package/types-3.4/__tests__/test3.d.ts +0 -9
  137. package/types-3.4/index.d.ts +0 -28
  138. package/types-3.4/test.d.ts +0 -10
package/dist/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/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","../../../node_modules/style-inject/dist/style-inject.es.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/src/Annotation.js","../../../node_modules/d3-svg-annotation/src/AnnotationCollection.js","../../../node_modules/d3-svg-annotation/src/Handles.js","../../../node_modules/d3-svg-annotation/src/Note/alignment.js","../../../node_modules/d3-svg-annotation/src/Builder.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-vertical.js","../../../node_modules/d3-svg-annotation/src/Note/lineType-horizontal.js","../../../node_modules/d3-svg-annotation/src/Connector/type-line.js","../../../node_modules/d3-svg-annotation/src/Connector/type-elbow.js","../../../node_modules/d3-svg-annotation/src/Connector/type-curve.js","../../../node_modules/d3-svg-annotation/src/Connector/end-arrow.js","../../../node_modules/d3-svg-annotation/src/Connector/end-dot.js","../../../node_modules/d3-svg-annotation/src/Subject/circle.js","../../../node_modules/d3-svg-annotation/src/Subject/rect.js","../../../node_modules/d3-svg-annotation/src/Subject/threshold.js","../../../node_modules/d3-svg-annotation/src/Subject/badge.js","../../../node_modules/d3-svg-annotation/src/Types-d3.js","../../../node_modules/d3-svg-annotation/src/Adapter-d3.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"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/chart\";\nexport const PKG_VERSION = \"2.86.0\";\nexport const BUILD_VERSION = \"2.107.0\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","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","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, axisRight as d3AxisRight, axisTop as d3AxisTop } from \"d3-axis\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleTime as d3ScaleTime } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Axis.css\";\n\nexport interface IOverflow {\n left: number;\n top: number;\n right: number;\n bottom: number;\n depth: number;\n tickOverlapModulus: number;\n}\n\nexport class Axis extends SVGWidget {\n protected parser;\n protected parserInvert;\n protected formatter: (date: Date) => string;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n\n @publish(\"linear\", \"set\", \"Type\", [\"none\", \"ordinal\", \"linear\", \"pow\", \"log\", \"time\"])\n _type: string;\n type(): string;\n type(_: string): this;\n type(_?: string): string | this {\n if (!arguments.length) return this._type;\n this._type = _;\n this.updateScale();\n return this;\n }\n\n @publish(\"%Y-%m-%d\", \"string\", \"Time Series Pattern\", null, { disable: (w: any) => w.type() !== \"time\" })\n _timePattern: string;\n timePattern(): string;\n timePattern(_: string): this;\n timePattern(_?: string): string | this {\n if (!arguments.length) return this._timePattern;\n this._timePattern = _;\n this.updateScale();\n return this;\n }\n timePattern_exists: () => boolean;\n\n @publish(false, \"boolean\", \"Reverse\")\n reverse: publish<this, boolean>;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right - this.padding() : 0 + this.padding();\n\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n\n title: { (): string; (_: string): Axis; };\n orientation: { (): string; (_: string): Axis; };\n orientation_default: { (): string; (_: string): Axis; };\n powExponent: { (): number; (_: number): Axis; };\n logBase: { (): number; (_: number): Axis; };\n ordinals: { (): string[]; (_: string[]): Axis; };\n ordinals_exists: () => boolean;\n fontSize: { (): number; (_: number): Axis; };\n fontSize_exists: () => boolean;\n fontFamily: { (): string; (_: string): Axis; };\n tickCount: { (): number; (_: number): Axis; };\n tickFormat: { (): string; (_: string): Axis; };\n tickFormat_exists: () => boolean;\n tickLength: { (): number; (_: number): Axis; };\n tickLength_exists: () => boolean;\n ticks: { (): Array<{ value: string, label: string }>; (_: Array<{ value: string, label: string }>): Axis; };\n xAxisDomainLow: { (): string; (_: string): Axis; };\n xAxisDomainHigh: { (): string; (_: string): Axis; };\n low: { (): any; (_: any): Axis; };\n low_exists: () => boolean;\n high: { (): any; (_: any): Axis; };\n high_exists: () => boolean;\n overlapMode: { (): string; (_: string): Axis; };\n overlapMode_default: { (): string; (_: string): Axis; };\n labelRotation: { (): number; (_: number): Axis; };\n shrinkToFit: { (): string; (_: string): Axis; };\n shrinkToFit_default: { (): string; (_: string): Axis; };\n extend: { (): number; (_: number): Axis; };\n extend_default: { (): number; (_: number): Axis; };\n hidden: { (): boolean; (_: boolean): Axis; };\n}\nAxis.prototype._class += \" chart_Axis\";\n\nexport interface Axis {\n title_exists(): boolean;\n ordinalPaddingInner(): number;\n ordinalPaddingInner(_: number): this;\n ordinalPaddingOuter(): number;\n ordinalPaddingOuter(_: number): this;\n ordinalMappings(_: { [key: string]: string }): this;\n ordinalMappings(): { [key: string]: string };\n ordinalMappings_exists(): boolean;\n padding(): number;\n padding(_: number): this;\n}\n\nAxis.prototype.publish(\"title\", null, \"string\", \"Title\");\nAxis.prototype.publish(\"orientation\", \"bottom\", \"set\", \"Placement/orientation of the axis\", [\"left\", \"top\", \"right\", \"bottom\"]);\nAxis.prototype.publish(\"powExponent\", 2, \"number\", \"Power exponent (disabled when type is not 'pow')\", null, { disable: (w: any) => w.type() !== \"pow\" });\nAxis.prototype.publish(\"logBase\", 10, \"number\", \"Logarithmic base (disabled when type is not 'log')\", null, { disable: (w: any) => w.type() !== \"log\" });\nAxis.prototype.publish(\"ordinals\", [], \"array\", \"Array of ordinal values to display (disabled when type is not 'ordinal')\", null, { disable: (w: any) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"fontSize\", null, \"number\", \"Size of tick label font (pixels)\", null, { optional: true });\nAxis.prototype.publish(\"fontFamily\", null, \"string\", \"Font family of tick labels\", null, { optional: true });\nAxis.prototype.publish(\"tickCount\", null, \"number\", \"Number of ticks to display (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickFormat\", null, \"string\", \"Format rules for tick text (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"tickLength\", null, \"number\", \"Height (or width for left/right orientations) of the axis ticks (in pixels)\", null, { optional: true });\nAxis.prototype.publish(\"ticks\", [], \"array\", \"Custom tick labels\", null, { optional: true }); // TODO: What does this control?\nAxis.prototype.publish(\"low\", null, \"any\", \"Minimum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"high\", null, \"any\", \"Maximum tick value (disabled when type is ordinal)\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"overlapMode\", \"none\", \"set\", \"Specifies the behavior when tick labels overlap\", [\"none\", \"stagger\", \"hide\", \"rotate\", \"linebreak\", \"wrap\"]);\nAxis.prototype.publish(\"labelRotation\", 33, \"number\", \"Angle of rotation for tick labels (disabled when overlapMode is not 'rotate')\", null, { optional: true, disable: (w: any) => w.overlapMode() !== \"rotate\" });\nAxis.prototype.publish(\"shrinkToFit\", \"both\", \"set\", \"shrinkToFit\", [\"none\", \"low\", \"high\", \"both\"]); // TODO: What does this control?\nAxis.prototype.publish(\"extend\", 5, \"number\", \"Extend the axis range by this % beyond what is needed to display the data (disabled when type is 'ordinal')\", null, { optional: true, disable: (w: any) => w.type() === \"ordinal\" });\nAxis.prototype.publish(\"hidden\", false, \"boolean\", \"Hides axis when 'true'\");\nAxis.prototype.publish(\"ordinalPaddingInner\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalPaddingOuter\", 0.1, \"number\", \"Determines the ratio of the range that is reserved for blank space before the first band and after the last band (0->1)\", null, { disable: (w: Axis) => w.type() !== \"ordinal\" });\nAxis.prototype.publish(\"ordinalMappings\", null, \"object\", \"Alternative label mappings (icons)\", null, { optional: true });\nAxis.prototype.publish(\"padding\", 0, \"number\", \"Padding space at top of axis (pixels)\", null, { optional: true });\n","import { d3Event, select as d3Select, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { max as d3Max, min as d3Min } from \"d3-array\";\nimport { brush as d3Brush, brushSelection as d3BrushSelection, brushX as d3BrushX, brushY as d3BrushY } from \"d3-brush\";\nimport { hsl as d3Hsl } from \"d3-color\";\nimport { Axis } from \"./Axis\";\n\nimport \"../src/XYAxis.css\";\n\nexport class XYAxis extends SVGWidget {\n protected domainAxis: Axis;\n protected valueAxis: Axis;\n protected xAxis: Axis;\n protected yAxis: Axis;\n protected xyBrush;\n protected xBrush;\n protected yBrush;\n protected margin;\n protected focusChart: XYAxis;\n _palette;\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this.domainAxis = new Axis()\n .classed({ domain: true })\n .orientation_default(\"bottom\")\n .type(\"ordinal\")\n .overlapMode_default(\"stagger\")\n .shrinkToFit_default(\"high\")\n .extend_default(0)\n ;\n this.valueAxis = new Axis()\n .classed({ value: true })\n .orientation_default(\"left\")\n .type(\"linear\")\n .shrinkToFit_default(\"high\")\n ;\n\n this.xyBrush = d3Brush()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.xBrush = d3BrushX()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n this.yBrush = d3BrushY()\n .on(\"end\", () => {\n return this.brushMoved();\n })\n .on(\"start.handle brush.handle end.handle\", () => {\n return this.brushMoved2();\n })\n ;\n }\n\n protected _prevBrush;\n resetSelection() {\n this._prevBrush = null;\n return this;\n }\n\n parseData(d) {\n return this.domainAxis.parse(d);\n }\n\n parseValue(d) {\n return this.valueAxis.parse(d, true);\n }\n\n formatData(d) {\n return this.domainAxis.format(d);\n }\n\n formatValue(d) {\n return this.valueAxis.format(d);\n }\n\n parsedData() {\n const retVal = this.data().map(function (row) {\n let prevValue = 0;\n return row.map(function (cell, idx) {\n if (idx === 0) {\n return this.parseData(cell);\n }\n if (idx >= this.columns().length) {\n return cell;\n }\n const _retVal = this.yAxisStacked() ? [prevValue, prevValue + this.parseValue(cell)] : this.parseValue(cell);\n prevValue += this.parseValue(cell);\n return _retVal;\n }, this);\n }, this);\n return retVal;\n }\n\n bandwidth() {\n return this.domainAxis.bandwidth();\n }\n\n protected svg;\n protected svgRegions;\n protected svgDomainGuide;\n protected svgValueGuide;\n protected svgData;\n protected svgDataClipRect;\n protected svgFocus;\n protected svgBrush;\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgRegions = element.append(\"g\");\n this.svgDomainGuide = this.svg.append(\"g\");\n this.svgValueGuide = this.svg.append(\"g\");\n this.svgData = this.svg.append(\"g\");\n\n this.svgDataClipRect = this.svg.append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clippath\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this.svgData = this.svg.append(\"g\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clippath)\")\n ;\n this._selection.widgetElement(this.svgData);\n\n this.svgFocus = element.append(\"g\");\n\n this.domainAxis\n .target(this.svg.node())\n .guideTarget(this.svgDomainGuide.node())\n ;\n\n this.valueAxis\n .target(this.svg.node())\n .guideTarget(this.svgValueGuide.node())\n ;\n\n this.svgBrush = element.append(\"g\")\n .attr(\"class\", \"brush\")\n ;\n this.chartsEnter(this, this.svgData, 250);\n }\n\n resizeBrushHandle(d, width, height) {\n let e;\n let x;\n let y;\n if (d.type === \"e\" || d.type === \"w\") {\n e = +(d.type === \"e\");\n x = e ? 1 : -1;\n y = height / 3;\n return \"M\" + (0.5 * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (0.5 * x) + \",\" + (2 * y) +\n \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8);\n } else {\n e = +(d.type === \"s\");\n y = e ? 1 : -1;\n x = width / 3;\n return \"M\" + x + \", \" + (0.5 * y) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (x + 6) + \",\" + (6.5 * y) +\n \"H\" + (2 * x - 6) +\n \"A6,6 0 0 \" + (e + 1) % 2 + \" \" + (2 * x) + \",\" + (0.5 * y) +\n \"Z\" +\n \"M\" + (x + 8) + \",\" + (2.5 * y) +\n \"H\" + (2 * x - 8) +\n \"M\" + (x + 8) + \",\" + (4.5 * y) +\n \"H\" + (2 * x - 8);\n }\n }\n\n private _skipSelection = false;\n skipSelection(): boolean;\n skipSelection(_: boolean): this;\n skipSelection(_?: boolean): boolean | this {\n if (!arguments.length) return this._skipSelection;\n this._skipSelection = _;\n return this;\n }\n\n brushMoved() {\n if (this._skipSelection) return;\n let selected = [];\n const context = this;\n const currSel: any = d3BrushSelection(this.svgBrush.node());\n if (currSel) {\n selected = this.data().filter(function (d) {\n const pos = context.dataPos(d[0]);\n if (context.use2dSelection()) {\n const pos2 = context.valuePos(d[1]) + context.valueAxis.bandwidth() / 2;\n return pos >= currSel[0][0] && pos <= currSel[1][0] && pos2 >= currSel[0][1] && pos2 <= currSel[1][1];\n } else {\n return pos >= currSel[0] && pos <= currSel[1];\n }\n });\n }\n this.selection(selected);\n }\n\n brushMoved2() {\n const isHorizontal = this.orientation() === \"horizontal\";\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n const s = d3Event().selection;\n if (s == null) {\n handlePath.attr(\"display\", \"none\");\n } else if (isHorizontal) {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + s[i] + \",\" + 0 + \")\");\n } else {\n handlePath.attr(\"display\", null).attr(\"transform\", (_d, i) => \"translate(\" + 0 + \", \" + s[i] + \")\");\n }\n }\n\n dataPos(d) {\n return this.domainAxis.scalePos(d);\n }\n\n valuePos(d) {\n return this.valueAxis.scalePos(d);\n }\n\n getAxisSize(host: XYAxis): { width: number, height: number } {\n return {\n width: !this.xAxis ? host.xAxis.width() : this.xAxis.width(),\n height: !this.yAxis ? host.yAxis.width() : this.yAxis.height()\n };\n }\n\n calcMargin(_domNode, element, isHorizontal) {\n const margin = {\n top: !isHorizontal && this.selectionMode() ? 10 : 2,\n right: isHorizontal && (this.selectionMode() || this.xAxisFocus()) ? 10 : 2,\n bottom: (this.xAxisFocus() ? this.xAxisFocusHeight() : 0) + 2,\n left: 2\n };\n const width = this.width() - margin.left - margin.right;\n const height = this.height() - margin.top - margin.bottom;\n\n let xRight = 0;\n let xHeight = 30;\n let yTop = 0;\n let yWidth = 30;\n for (let i = 0; i < 10; ++i) {\n this.xAxis.width(width - yWidth).height(0);\n const xAxisOverlap = this.xAxis.calcOverflow(element);\n const newXHeight = xAxisOverlap.depth;\n\n this.yAxis.width(0).height(height - xHeight);\n const yAxisOverlap = this.yAxis.calcOverflow(element);\n const newYWidth = yAxisOverlap.depth;\n\n xRight = xAxisOverlap.right;\n yTop = yAxisOverlap.top;\n\n if (newXHeight === xHeight && newYWidth === yWidth) {\n break;\n }\n xHeight = newXHeight;\n yWidth = newYWidth;\n }\n this.xAxis\n .x(width / 2 + yWidth / 2 + margin.left)\n .y(height + margin.top)\n .width(width - yWidth)\n ;\n this.yAxis\n .x(margin.left)\n .y(height / 2 - xHeight / 2 + margin.top)\n .height(height - xHeight)\n ;\n margin.left += yWidth;\n margin.top += yTop;\n margin.right += xRight;\n margin.bottom += xHeight;\n return margin;\n }\n\n updateRegions(_domNode, _element, isHorizontal) {\n const context = this;\n\n const regions = this.svgRegions.selectAll(\".region\").data(this.regions());\n regions.enter().append(\"rect\")\n .attr(\"class\", \"region\")\n ;\n if (isHorizontal) {\n regions\n .attr(\"x\", function (d) { return context.dataPos(d.x0); })\n .attr(\"y\", 0)\n .attr(\"width\", function (d) { return context.dataPos(d.x1) - context.dataPos(d.x0); })\n .attr(\"height\", this.height())\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n } else {\n regions\n .attr(\"x\", 0)\n .attr(\"y\", function (d) { return context.dataPos(d.x0); })\n .attr(\"width\", this.width())\n .attr(\"height\", function (d) { return context.dataPos(d.x0) - context.dataPos(d.x1); })\n .style(\"stroke\", function (d) { return context._palette(d.colorID); })\n .style(\"fill\", function (d) { return d3Hsl(context._palette(d.colorID)).brighter(); })\n ;\n }\n regions.exit().remove();\n }\n\n protected _prevXAxisType;\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const isHorizontal = this.orientation() === \"horizontal\";\n this.updateRegions(domNode, element, isHorizontal);\n\n this.domainAxis\n .orientation(isHorizontal ? \"bottom\" : \"left\")\n .title(this.xAxisTitle_exists() ? this.xAxisTitle() : this.columns()[0])\n ;\n this.valueAxis\n .orientation(isHorizontal ? \"left\" : \"bottom\")\n ;\n this.xAxis = isHorizontal ? this.domainAxis : this.valueAxis;\n this.yAxis = isHorizontal ? this.valueAxis : this.domainAxis;\n\n // Update Domain ---\n switch (this.xAxisType()) {\n case \"ordinal\":\n const colLen = this.columns().length;\n const ordinalMappings = {};\n this.domainAxis\n .ordinals(this.data().map(function (d) {\n ordinalMappings[d[0]] = context.xAxisOrdinalMapping(d, d[colLen]);\n return d[0];\n }))\n .ordinalMappings(ordinalMappings)\n ;\n\n break;\n default:\n const domainMin = this.xAxisDomainLow() ? this.xAxisDomainLow() : this.domainAxis.parseInvert(d3Min(this.parsedData(), function (data) {\n return data[0];\n }));\n const domainMax = this.xAxisDomainHigh() ? this.xAxisDomainHigh() : this.domainAxis.parseInvert(d3Max(this.parsedData(), function (data) {\n return data[0];\n }));\n if (domainMin !== undefined && domainMax !== undefined) {\n this.domainAxis\n .low(domainMin)\n .high(domainMax)\n ;\n }\n break;\n }\n\n const min = this.yAxisDomainLow() ? this.yAxisDomainLow() : this.valueAxis.parseInvert(d3Min(this.parsedData(), function (data: any[]) {\n return d3Min(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[0] : d; });\n }));\n const max = this.yAxisDomainHigh() ? this.yAxisDomainHigh() : this.valueAxis.parseInvert(d3Max(this.parsedData(), function (data: any[]) {\n return d3Max(data.filter(function (cell, i) { return i > 0 && context.columns()[i] && context.columns()[i].indexOf(\"__\") !== 0 && cell !== null; }), function (d) { return d instanceof Array ? d[1] : d; });\n }));\n this.valueAxis\n .low(min)\n .high(max)\n ;\n\n // Calculate Margins ---\n this.margin = this.calcMargin(domNode, element, isHorizontal);\n\n // Update Range ---\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n const maxCurrExtent = isHorizontal ? width : height;\n const maxOtherExtent = isHorizontal ? height : width;\n\n // Render ---\n this.domainAxis\n .tickLength(this.xAxisGuideLines() ? maxOtherExtent : 0)\n .render()\n ;\n this.valueAxis\n .tickLength(this.yAxisGuideLines() ? maxCurrExtent : 0)\n .render()\n ;\n\n this.svgDataClipRect\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this.svgData.transition()\n .attr(\"transform\", \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\")\n ;\n\n this.updateBrush(width, height, maxCurrExtent, isHorizontal);\n this.updateFocusChart(domNode, element, this.margin, width, height, isHorizontal);\n this.chartsUpdate(width, height, 250);\n if (this.selectionMode()) {\n return this.brushMoved();\n }\n }\n\n updateBrush(width, height, maxCurrExtent, isHorizontal) {\n const currBrush = this.use2dSelection() ? this.xyBrush : isHorizontal ? this.xBrush : this.yBrush;\n const prevBrushSel: any = d3BrushSelection(this.svgBrush.node());\n currBrush.extent([[0, 0], [width, height]]);\n this.svgBrush\n .attr(\"transform\", \"translate(\" + this.margin.left + \", \" + this.margin.top + \")\")\n .style(\"display\", this.selectionMode() ? null : \"none\")\n .call(currBrush)\n ;\n const handleTypes = this.use2dSelection() ? [] : isHorizontal ? [{ type: \"w\" }, { type: \"e\" }] : [{ type: \"n\" }, { type: \"s\" }];\n const handlePath = this.svgBrush.selectAll(\".handle--custom\").data(handleTypes);\n handlePath.enter().append(\"path\")\n .attr(\"class\", \"handle--custom\")\n .merge(handlePath)\n .attr(\"cursor\", isHorizontal ? \"ew-resize\" : \"ns-resize\")\n .attr(\"d\", (d) => this.resizeBrushHandle(d, width, height))\n ;\n\n if (this.selectionMode()) {\n if (this._prevXAxisType !== this.xAxisType()) {\n this._prevXAxisType = this.xAxisType();\n this._prevBrush = null;\n }\n if (this._prevBrush) {\n if (prevBrushSel) {\n if (this._prevBrush.orientation !== this.orientation()) {\n const tmp = prevBrushSel[0];\n prevBrushSel[0] = this._prevBrush.maxCurrExtent - prevBrushSel[1];\n prevBrushSel[1] = this._prevBrush.maxCurrExtent - tmp;\n }\n const ratio = maxCurrExtent / this._prevBrush.maxCurrExtent;\n if (ratio !== 1) {\n this.svgBrush.transition()\n .on(\"start\", function () {\n currBrush.on(\"end\", null);\n })\n .call(currBrush.move, [prevBrushSel[0] * ratio, prevBrushSel[1] * ratio])\n .on(\"end\", () => {\n currBrush.on(\"end\", () => {\n return this.brushMoved();\n });\n })\n ;\n }\n }\n } else {\n this.svgBrush\n .call(currBrush.move, [0, maxCurrExtent])\n ;\n }\n this._prevBrush = {\n orientation: this.orientation(),\n maxCurrExtent\n };\n }\n }\n\n updateFocusChart(domNode, element, margin, width, height, isHorizontal) {\n const context: XYAxis = this;\n const focusChart = this.svgFocus.selectAll(\"#\" + this.id() + \"_focusChart\").data(this.xAxisFocus() ? [true] : []);\n focusChart.enter().append(\"g\")\n .attr(\"id\", this.id() + \"_focusChart\")\n .attr(\"class\", \"focus\")\n .each(function () {\n context.focusChart = new (context.constructor as any)()\n .target(this)\n ;\n context.focusChart.xBrush\n .on(\"brush.focus\", function () {\n context.syncAxis(width);\n context.chartsUpdate(width, height, 0);\n })\n ;\n context.focusChart\n .layers(context.layers().map((w: any) => new w.constructor()))\n ;\n })\n .merge(focusChart)\n .each(function (this: SVGElement) {\n context.copyPropsTo(context.focusChart, [\"layers\"]);\n let layerIdx = 0;\n for (const layer of context.layers()) {\n layer.copyPropsTo(context.focusChart.layers()[layerIdx]);\n layerIdx++;\n }\n context.focusChart\n .xAxisFocus(false)\n .selectionMode(true)\n .skipSelection(true)\n .orientation(\"horizontal\")\n .xAxisGuideLines(false)\n .xAxisDomainLow(null)\n .xAxisDomainHigh(null)\n .yAxisGuideLines(false)\n .x(context.width() / 2)\n .y(context.height() - context.xAxisFocusHeight() / 2)\n .width(context.width())\n .height(context.xAxisFocusHeight())\n .columns(context.columns())\n .data(context.data())\n .render()\n ;\n context.syncAxis(width);\n })\n ;\n focusChart.exit()\n .each(function () {\n if (context.focusChart) {\n context.focusChart\n .target(null)\n ;\n delete context.focusChart;\n }\n })\n .remove()\n ;\n }\n\n syncAxis(width: number) {\n const currSel = d3BrushSelection(this.focusChart.svgBrush.node()) as [number, number];\n if (currSel) {\n if (this.focusChart.xAxisType() !== \"ordinal\") {\n this.xAxis.domain([this.focusChart.xAxis.invert(currSel[0]), this.focusChart.xAxis.invert(currSel[1])]);\n } else {\n const brushWidth = currSel[1] - currSel[0];\n const scale = brushWidth / width;\n this.xAxis.range([-currSel[0] / scale, (width - currSel[0]) / scale]);\n }\n this.xAxis.rerender();\n }\n }\n\n // Layers ---\n layerColumns(host: XYAxis): string[] {\n const masterColumns = host.columns();\n const retVal = super.columns().filter(col => col !== masterColumns[0]);\n if (!retVal.length) {\n return masterColumns;\n }\n return [masterColumns[0], ...retVal];\n }\n\n layerColumnIndices(host: XYAxis): number[] {\n const masterColumns = host.columns();\n const layerColumns = this.layerColumns(host);\n return layerColumns.map(col => masterColumns.indexOf(col));\n }\n\n layerColumnIndex(host: XYAxis, column: string): number {\n const masterColumns = host.columns();\n return masterColumns.indexOf(column);\n }\n\n layerData(host: XYAxis): any[][] {\n if (arguments.length === 1) {\n const indices = this.layerColumnIndices(host);\n return host.data().map(row => {\n const retVal = indices.map(idx => row[idx]);\n (retVal as any).__hpcc_origRow = row;\n return retVal;\n });\n }\n throw new Error(\"Setting data on XYAxisLayer is not supported.\");\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n }\n\n layerExit(host: XYAxis, element, duration: number = 250) {\n }\n\n chartsEnter(host: XYAxis, element, duration: number = 250) {\n this.layerEnter(this, element, duration);\n for (const w of this.layers()) {\n w[\"__xyAxisElement\"] = element.append(\"g\")\n .attr(\"class\", w.class())\n ;\n w\n .target(w[\"__xyAxisElement\"].node() as SVGElement)\n .layerEnter(this, element, duration)\n ;\n }\n }\n\n chartsUpdate(width, height, duration): void {\n this.layerUpdate(this, this.svgData, duration);\n for (const w of this.layers()) {\n w\n .resize({ width, height })\n .layerUpdate(this, w[\"__xyAxisElement\"], duration)\n ;\n }\n }\n\n exit(domNode, element) {\n this.valueAxis.target(null);\n this.domainAxis.target(null);\n super.exit(domNode, element);\n }\n\n selection(_selected) {\n const context = this;\n this._selection.widgetElement().selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = _selected.indexOf(d.origRow) >= 0;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context._selection.svgGlowID() && selected ? `url(#${context._selection.svgGlowID()})` : null)\n ;\n })\n ;\n\n const selRows = _selected.map(d => {\n return this.rowToObj(d);\n });\n setTimeout(() => {\n this.click(selRows, \"\", true);\n }, 0);\n }\n\n // XYAxis ---\n xAxisOrdinalMapping(origRow, lparam) {\n return origRow[0];\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // Selection ---\n _selection: Utility.SimpleSelection;\n}\nXYAxis.prototype._class += \" chart_XYAxis\";\nXYAxis.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface XYAxis {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n orientation_default(_: string);\n pointSizeColumn(): string;\n pointSizeColumn(_: string): this;\n pointSizeColumn_exists(): boolean;\n minPointSize(): number;\n minPointSize(_: number): this;\n maxPointSize(): number;\n maxPointSize(_: number): this;\n use2dSelection(): boolean;\n use2dSelection(_: boolean): this;\n selectionMode(): boolean;\n selectionMode(_: boolean): this;\n xAxisTitle(): string;\n xAxisTitle(_: string): this;\n xAxisTitle_exists(): boolean;\n xAxisTickCount(): number;\n xAxisTickCount(_: number): this;\n xAxisTickFormat(): string;\n xAxisTickFormat(_: string): this;\n xAxisTicks(): Array<{ value: string, label: string }>;\n xAxisTicks(_: Array<{ value: string, label: string }>): this;\n xAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n xAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n xAxisType_default(_: string);\n xAxisTypeTimePattern(): string;\n xAxisTypeTimePattern(_: string): this;\n xAxisDomainLow(): number | string;\n xAxisDomainLow(_: number | string): this;\n xAxisDomainHigh(): number | string;\n xAxisDomainHigh(_: number | string): this;\n xAxisFontSize(): number | string;\n xAxisFontSize(_: number | string): this;\n xAxisFontFamily(): string;\n xAxisFontFamily(_: string): this;\n xAxisOrdinalPaddingInner(): number;\n xAxisOrdinalPaddingInner(_: number): this;\n xAxisOrdinalPaddingOuter(): number;\n xAxisOrdinalPaddingOuter(_: number): this;\n xAxisOverlapMode(): \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\";\n xAxisOverlapMode(_: \"none\" | \"stagger\" | \"hide\" | \"rotate\" | \"linebreak\" | \"wrap\"): this;\n xAxisLabelRotation(): number;\n xAxisLabelRotation(_: number): this;\n xAxisDomainPadding(): number;\n xAxisDomainPadding(_: number): this;\n xAxisGuideLines(): boolean;\n xAxisGuideLines(_: boolean): this;\n xAxisGuideLines_default(_: boolean);\n xAxisFocus(): boolean;\n xAxisFocus(_: boolean): this;\n xAxisFocusHeight(): number;\n xAxisFocusHeight(_: number): this;\n xAxisHidden(): boolean;\n xAxisHidden(_: boolean): this;\n xAxisHidden_default(_: boolean);\n yAxisTitle(): string;\n yAxisTitle(_: string): this;\n yAxisTickCount(): number;\n yAxisTickCount(_: number): this;\n yAxisTickFormat(): string;\n yAxisTickFormat(_: string): this;\n yAxisTicks(): Array<{ value: string, label: string }>;\n yAxisTicks(_: Array<{ value: string, label: string }>): this;\n yAxisType(): \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\";\n yAxisType(_: \"none\" | \"ordinal\" | \"linear\" | \"pow\" | \"log\" | \"time\"): this;\n yAxisType_default(_: string);\n yAxisTypeTimePattern(): string;\n yAxisTypeTimePattern(_: string): this;\n yAxisTypePowExponent(): number;\n yAxisTypePowExponent(_: number): this;\n yAxisTypeLogBase(): number;\n yAxisTypeLogBase(_: number): this;\n yAxisStacked(): boolean;\n yAxisStacked(_: boolean): this;\n yAxisDomainLow(): number | string;\n yAxisDomainLow(_: number | string): this;\n yAxisDomainHigh(): number | string;\n yAxisDomainHigh(_: number | string): this;\n yAxisDomainPadding(): number;\n yAxisDomainPadding(_: number): this;\n yAxisGuideLines(): boolean;\n yAxisGuideLines(_: boolean): this;\n yAxisGuideLines_default(_: boolean);\n yAxisHidden(): boolean;\n yAxisHidden(_: boolean): this;\n yAxisHidden_default(_: boolean);\n regions(): object[];\n regions(_: object[]): this;\n layers(): XYAxis[];\n layers(_: XYAxis[]): this;\n xAxisPadding(): number;\n xAxisPadding(_: number): this;\n yAxisPadding(): number;\n yAxisPadding(_: number): this;\n}\n\nXYAxis.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Selects orientation for the axis\", [\"horizontal\", \"vertical\"]);\nXYAxis.prototype.publish(\"pointSizeColumn\", null, \"string\", \"pointSizeColumn\", null, { optional: true });\nXYAxis.prototype.publish(\"minPointSize\", 6, \"number\", \"minPointSize\");\nXYAxis.prototype.publish(\"maxPointSize\", 26, \"number\", \"maxPointSize\");\nXYAxis.prototype.publish(\"use2dSelection\", false, \"boolean\", \"2D Range Selector\");\nXYAxis.prototype.publish(\"selectionMode\", false, \"boolean\", \"Range Selector\");\nXYAxis.prototype.publishProxy(\"xAxisTitle\", \"domainAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"xAxisTickCount\", \"domainAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"xAxisTickFormat\", \"domainAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"xAxisTicks\", \"domainAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"xAxisType\", \"domainAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"xAxisTypeTimePattern\", \"domainAxis\", \"timePattern\");\nXYAxis.prototype.publish(\"xAxisDomainLow\", null, \"string\", \"X-Axis Low\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"xAxisDomainHigh\", null, \"string\", \"X-Axis High\", null, { optional: true, disable: (w: XYAxis) => w.xAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"xAxisFontSize\", \"domainAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"xAxisFontFamily\", \"domainAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingInner\", \"domainAxis\", \"ordinalPaddingInner\");\nXYAxis.prototype.publishProxy(\"xAxisOrdinalPaddingOuter\", \"domainAxis\", \"ordinalPaddingOuter\");\nXYAxis.prototype.publishProxy(\"xAxisOverlapMode\", \"domainAxis\", \"overlapMode\");\nXYAxis.prototype.publishProxy(\"xAxisLabelRotation\", \"domainAxis\", \"labelRotation\");\nXYAxis.prototype.publishProxy(\"xAxisDomainPadding\", \"domainAxis\", \"extend\");\nXYAxis.prototype.publish(\"xAxisGuideLines\", false, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publish(\"xAxisFocus\", false, \"boolean\", \"X-Axis Focus\", null, { disable: (w: any) => w.orientation() !== \"horizontal\" });\nXYAxis.prototype.publish(\"xAxisFocusHeight\", 80, \"number\", \"X-Axis Focus Height\", null, { disable: (w: any) => !w.xAxisFocus() });\nXYAxis.prototype.publishProxy(\"xAxisHidden\", \"domainAxis\", \"hidden\");\nXYAxis.prototype.publishProxy(\"yAxisFontSize\", \"valueAxis\", \"fontSize\");\nXYAxis.prototype.publishProxy(\"yAxisFontFamily\", \"valueAxis\", \"fontFamily\");\nXYAxis.prototype.publishProxy(\"yAxisTitle\", \"valueAxis\", \"title\");\nXYAxis.prototype.publishProxy(\"yAxisTickCount\", \"valueAxis\", \"tickCount\");\nXYAxis.prototype.publishProxy(\"yAxisTickFormat\", \"valueAxis\", \"tickFormat\");\nXYAxis.prototype.publishProxy(\"yAxisTicks\", \"valueAxis\", \"ticks\");\nXYAxis.prototype.publishProxy(\"yAxisType\", \"valueAxis\", \"type\");\nXYAxis.prototype.publishProxy(\"yAxisTypeTimePattern\", \"valueAxis\", \"timePattern\");\nXYAxis.prototype.publishProxy(\"yAxisTypePowExponent\", \"valueAxis\", \"powExponent\");\nXYAxis.prototype.publishProxy(\"yAxisTypeLogBase\", \"valueAxis\", \"logBase\");\nXYAxis.prototype.publish(\"yAxisStacked\", false, \"boolean\", \"Stacked Chart\", null, { tags: [\"Basic\"], disable: (w: any) => w.xAxisType() !== \"ordinal\" || w._class.indexOf(\"chart_Column\") < 0 });\nXYAxis.prototype.publish(\"yAxisDomainLow\", null, \"string\", \"Y-Axis Low\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publish(\"yAxisDomainHigh\", null, \"string\", \"Y-Axis High\", null, { optional: true, disable: (w: any) => w.yAxisType() === \"ordinal\" });\nXYAxis.prototype.publishProxy(\"yAxisDomainPadding\", \"valueAxis\", \"extend\");\nXYAxis.prototype.publish(\"yAxisGuideLines\", true, \"boolean\", \"Y-Axis Guide Lines\");\nXYAxis.prototype.publishProxy(\"yAxisHidden\", \"valueAxis\", \"hidden\");\nXYAxis.prototype.publish(\"regions\", [], \"array\", \"Regions\");\nXYAxis.prototype.publish(\"layers\", [], \"widgetArray\", \"Layers\", null, { render: false });\nXYAxis.prototype.publishProxy(\"xAxisPadding\", \"domainAxis\", \"padding\");\nXYAxis.prototype.publishProxy(\"yAxisPadding\", \"valueAxis\", \"padding\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\nimport {\n area as d3Area,\n curveBasis as d3CurveBasis, curveBundle as d3CurveBundle, curveCardinal as d3CurveCardinal, curveCatmullRom as d3curveCatmullRom, curveLinear as d3CurveLinear,\n curveMonotoneX as d3CurveMonotoneX, curveNatural as d3CurveNatural, curveStep as d3CurveStep, curveStepAfter as d3CurveStepAfter, curveStepBefore as d3CurveStepBefore,\n line as d3Line\n} from \"d3-shape\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Scatter.css\";\n\nexport class Scatter extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n private curve(): any {\n switch (this.interpolate()) {\n case \"linear\":\n return d3CurveLinear;\n case \"step\":\n return d3CurveStep;\n case \"step-before\":\n return d3CurveStepBefore;\n case \"step-after\":\n return d3CurveStepAfter;\n case \"basis\":\n return d3CurveBasis;\n case \"bundle\":\n return d3CurveBundle;\n case \"cardinal\":\n return d3CurveCardinal;\n case \"catmullRom\":\n return d3curveCatmullRom;\n case \"natural\":\n return d3CurveNatural;\n case \"monotone\":\n default:\n return d3CurveMonotoneX;\n }\n }\n\n private getScale() {\n switch (this.pointSizeScale()) {\n case \"linear\":\n return d3ScaleLinear();\n case \"pow\":\n return d3ScalePow().exponent(2);\n case \"log\":\n return d3ScaleLog();\n case \"sqrt\":\n return d3ScaleSqrt();\n }\n }\n\n protected pointColor(row, col, value, origRow) {\n if (this.interpolate() && this.pointDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected lineColor(row, col, value, origRow) {\n if (this.interpolateFill() && this.interpolateDarken()) {\n return this.strokeColor(row, col, value, origRow);\n }\n return this.fillColor(row, col, value, origRow);\n }\n\n protected areaColor(row, col, value, origRow) {\n return this.fillColor(row, col, value, origRow);\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.label,\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: context.data()[d.rowIdx][i + 1]\n };\n })\n });\n default:\n return context.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n }\n })\n ;\n }\n\n protected _prevPointShape;\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n const isHorizontal = host.orientation() === \"horizontal\";\n const height = isHorizontal ? this.height() : this.width();\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this._prevPointShape !== this.pointShape()) {\n element.selectAll(\".data\").remove();\n this._prevPointShape = this.pointShape();\n }\n\n function mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n const usePointSizeColumn = this.pointSizeColumn_exists();\n let pointSizeColumnIdx;\n let extent;\n let scale;\n if (usePointSizeColumn) {\n pointSizeColumnIdx = this.columns().indexOf(this.pointSizeColumn());\n extent = d3Extent(this.data(), d => d[pointSizeColumnIdx]);\n scale = this.getScale().domain(extent);\n }\n const layerColumns = this.layerColumns(host);\n const layerData = this.layerData(host);\n const flatData = this.flattenData(layerColumns, layerData).map(function (d) {\n d.shape = mapShape(context.pointShape());\n d.column = layerColumns[d.colIdx];\n d.row = layerData[d.rowIdx];\n d.origRow = (layerData[d.rowIdx] as any).__hpcc_origRow;\n if (extent) {\n d.size = scale(d.row[pointSizeColumnIdx]) * (context.maxPointSize() - context.minPointSize()) + context.minPointSize();\n return d.column === context.pointSizeColumn() ? false : d;\n } else {\n d.size = context.pointSize();\n return d;\n }\n\n }).filter(d => d);\n\n const areas = element.selectAll(\".area\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && context.interpolateFill() && idx > 0; }));\n const areasEnter = areas.enter().append(\"path\");\n const area = d3Area()\n .curve(this.curve())\n ;\n if (isHorizontal) {\n area\n .x(function (d) { return context.xPos(host, d); })\n .y0(Math.min(height, this.yPos(host, { value: 0 })))\n .y1(function (d) { return context.yPos(host, d); })\n ;\n } else {\n area\n .y(function (d) { return context.yPos(host, d); })\n .x0(Math.max(0, this.xPos(host, { value: 0 })))\n .x1(function (d) { return context.xPos(host, d); })\n ;\n }\n areasEnter.merge(areas)\n .attr(\"class\", d => \"area series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n element\n .attr(\"d\", area(flatData.filter(function (d2) { return d2.colIdx === idx + 1; })))\n .style(\"opacity\", context.interpolateFillOpacity())\n .style(\"stroke\", \"none\")\n .style(\"fill\", context.areaColor([], _d, undefined, []))\n ;\n });\n areas.exit().remove();\n\n const lines = element.selectAll(\".line\").data(layerColumns.filter(function (_d, idx) { return context.interpolate() && idx > 0; }));\n const linesEnter = lines.enter().append(\"path\");\n const line = d3Line()\n .x(function (d) { return context.xPos(host, d); })\n .y(function (d) { return context.yPos(host, d); })\n .curve(this.curve())\n ;\n linesEnter.merge(lines)\n .attr(\"class\", d => \"line series series-\" + this.cssTag(d))\n .each(function (_d, idx) {\n const element = d3Select(this);\n const data2 = flatData.filter(function (d2) { return d2.colIdx === idx + 1; });\n element\n .attr(\"d\", line(data2))\n .style(\"stroke\", context.lineColor([], _d, undefined, []))\n .style(\"fill\", \"none\")\n ;\n });\n lines.exit().remove();\n\n const points = element.selectAll(\".point\").data(flatData, function (d, idx) { return d.shape + \"_\" + idx; });\n points.enter().append(\"g\")\n .each(function (this: SVGElement, d2) {\n const element = d3Select(this);\n element\n .append(d2.shape)\n .attr(\"class\", \"pointShape\")\n ;\n element\n .append(\"text\")\n .attr(\"class\", \"pointValue\")\n .style(\"display\", \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .attr(\"fill\", function (d: any, _idx) {\n const useTextColor = context.valueBaseline() === \"middle\" || context.valueBaseline() === \"central\";\n return useTextColor ? context.textColor(d.row, d.column, d.value, d.origRow) : null;\n })\n ;\n element\n .append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any, _idx) {\n context.click(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(host.rowToObj(host.data()[d.rowIdx]), d.column, host._selection.selected(this));\n })\n ;\n })\n .merge(points)\n .attr(\"class\", d => \"point series series-\" + this.cssTag(d.column))\n .each(function (this: SVGElement, d2) {\n const textSelection = d3Select(this).select(\".pointValue\");\n textSelection\n .attr(\"x\", function (d) { return context.xPos(host, d); })\n .attr(\"y\", function (d) { return context.yPos(host, d); })\n .style(\"display\", context.showValue() ? \"block\" : \"none\")\n .attr(\"text-anchor\", context.valueAnchor())\n .attr(\"alignment-baseline\", context.valueBaseline())\n .text(function (d) {\n return d[\"value\"];\n })\n ;\n const elementSelection = d3Select(this).select(\".pointSelection\");\n elementSelection\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size)\n ;\n\n const element = d3Select(this).select(\".pointShape\");\n switch (d2.shape) {\n case \"rect\":\n element\n .attr(\"x\", function (d) { return context.xPos(host, d) - d2.size / 2; })\n .attr(\"y\", function (d) { return context.yPos(host, d) - d2.size / 2; })\n .attr(\"width\", d2.size)\n .attr(\"height\", d2.size)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"circle\":\n element\n .attr(\"cx\", function (d) { return context.xPos(host, d); })\n .attr(\"cy\", function (d) { return context.yPos(host, d); })\n .attr(\"r\", d2.size * 0.9)\n .style(\"fill\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n case \"path\":\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"M\" + (context.xPos(host, d) - d2.size / 2) + \" \" + (context.yPos(host, d) + d2.size / 2) + \" \" +\n \"L\" + (context.xPos(host, d) + d2.size / 2) + \" \" + (context.yPos(host, d) - d2.size / 2);\n })\n .style(\"stroke\", context.pointColor(d2.row, d2.column, d2.value, d2.origRow))\n ;\n break;\n default:\n }\n })\n ;\n points.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n paletteID: { (): string; (_: string): Scatter; };\n useClonedPalette: { (): boolean; (_: boolean): Scatter; };\n pointSizeScale: { (): string; (_: string): Scatter; };\n pointShape: { (): string; (_: string): Scatter; };\n pointSize: { (): number; (_: number): Scatter; };\n interpolate: { (): string; (_: string): Scatter; };\n interpolate_default: { (): string; (_: string): Scatter; };\n interpolateFill: { (): boolean; (_: boolean): Scatter; };\n interpolateFill_default: { (): boolean; (_: boolean): Scatter; };\n interpolateFillOpacity: { (): number; (_: number): Scatter; };\n\n // INDChart\n _palette;\n fillColor: (row, column, value, origRow) => string;\n strokeColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nScatter.prototype._class += \" chart_Scatter\";\nScatter.prototype.implements(INDChart.prototype);\nScatter.prototype.implements(ITooltip.prototype);\nexport interface Scatter {\n valueAnchor(): string;\n valueAnchor(_: string): this;\n valueBaseline(): string;\n valueBaseline(_: string): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n pointDarken(): boolean;\n pointDarken(_: boolean): this;\n interpolateDarken(): boolean;\n interpolateDarken(_: boolean): this;\n}\nScatter.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Scatter.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nScatter.prototype.publish(\"pointSizeScale\", \"linear\", \"set\", \"pointSizeScale\", [\"linear\", \"pow\", \"log\", \"sqrt\"]);\nScatter.prototype.publish(\"pointShape\", \"cross\", \"set\", \"Shape of the data points\", [\"circle\", \"rectangle\", \"cross\"]);\nScatter.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nScatter.prototype.publish(\"interpolate\", \"\", \"set\", \"Interpolate Data\", [\"\", \"linear\", \"step\", \"step-before\", \"step-after\", \"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"natural\", \"monotone\"]);\nScatter.prototype.publish(\"pointDarken\", true, \"boolean\", \"If true, and interpolate is set, then points will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolate() });\nScatter.prototype.publish(\"interpolateDarken\", true, \"boolean\", \"If true, and interpolateFill is true, then lines will have a slightly darker color than their assigned palette color\", null, { disable: w => !w.interpolateFill() });\nScatter.prototype.publish(\"interpolateFill\", false, \"boolean\", \"If true, the area between the line and zero will be filled\");\nScatter.prototype.publish(\"interpolateFillOpacity\", 0.66, \"number\", \"Fill interpolation Opacity\", null, { range: { min: 0, step: 0.01, max: 1 } });\nScatter.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nScatter.prototype.publish(\"showValue\", false, \"boolean\");\nScatter.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nScatter.prototype.publish(\"valueBaseline\", \"ideographic\", \"set\", \"alignment-baseline for shown value text\", [\"auto\", \"baseline\", \"before-edge\", \"text-before-edge\", \"middle\", \"central\", \"after-edge\", \"text-after-edge\", \"ideographic\", \"alphabetic\", \"hanging\", \"mathematical\", \"inherit\"]);\n","import { Scatter } from \"./Scatter\";\n\nexport class Area extends Scatter {\n constructor() {\n super();\n this\n .interpolate_default(\"linear\")\n .interpolateFill_default(true)\n ;\n }\n}\nArea.prototype._class += \" chart_Area\";\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, Text } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleBand as d3ScaleBand } from \"d3-scale\";\nimport { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { XYAxis } from \"./XYAxis\";\n\nimport \"../src/Column.css\";\n\nexport class Column extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"values\",\n type: \"number\",\n multi: true\n }];\n\n protected _linearGap: number;\n private textLocal = d3Local<Text>();\n private stackedTextLocal = d3Local<Text>();\n private isHorizontal: boolean;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n\n this._selection.skipBringToTop(true);\n\n this._linearGap = 25.0;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n const context = this;\n this\n .tooltipHTML(function (d) {\n switch (context.tooltipStyle()) {\n case \"series-table\":\n return context.tooltipFormat({\n label: d.row[0],\n arr: context.columns().slice(1).map(function (column, i) {\n return {\n label: column,\n color: context._palette(column),\n value: d.row[i + 1]\n };\n })\n });\n default:\n let value = d.row[d.idx];\n if (value instanceof Array) {\n value = value[1] - value[0];\n }\n return context.tooltipFormat({ label: d.row[0], series: context.layerColumns(host)[d.idx], value });\n }\n })\n ;\n }\n\n adjustedData(host: XYAxis) {\n const retVal = this.layerData(host).map(row => {\n let prevValue = 0;\n return row.map((cell, idx) => {\n if (idx === 0) {\n return cell;\n }\n if (idx >= this.layerColumns(host).length) {\n return cell;\n }\n const retVal2 = host.yAxisStacked() ? [prevValue, prevValue + cell] : cell;\n prevValue += cell;\n return retVal2;\n }, this);\n }, this);\n return retVal;\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const isHorizontal = host.orientation() === \"horizontal\";\n this.isHorizontal = isHorizontal;\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n const formatPct = d3Format(context.showValueAsPercentFormat());\n\n let dataLen = 10;\n let offset = 0;\n switch (host.xAxisType()) {\n case \"ordinal\":\n dataLen = host.bandwidth();\n offset = -dataLen / 2;\n break;\n case \"linear\":\n case \"time\":\n dataLen = Math.max(Math.abs(host.dataPos(2) - host.dataPos(1)) * (100 - this._linearGap) / 100, dataLen);\n offset = -dataLen / 2;\n break;\n default:\n }\n\n this.tooltip.direction(isHorizontal ? \"n\" : \"e\");\n\n const columnScale = d3ScaleBand()\n .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; }))\n .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0])\n .paddingInner(this.xAxisSeriesPaddingInner())\n .paddingOuter(0)\n ;\n let domainSums = [];\n const seriesSums = [];\n const columnLength = this.columns().length;\n const rowData = this.data();\n if (this.showValue() && this.showValueAsPercent() === \"series\") {\n rowData.forEach((row) => {\n row.filter((_, idx) => idx > 0 && idx < columnLength).forEach((col, idx) => {\n if (seriesSums[idx + 1] === undefined) {\n seriesSums[idx + 1] = 0;\n }\n seriesSums[idx + 1] += col;\n });\n });\n }\n\n if (this.showDomainTotal() || (this.showValue() && this.showValueAsPercent() === \"domain\")) {\n domainSums = rowData.map(row => {\n return row.filter((cell, idx) => idx > 0 && idx < columnLength).reduce((sum, cell) => {\n return sum + cell;\n }, 0);\n });\n }\n\n const column = element.selectAll(\".dataRow\")\n .data(this.adjustedData(host))\n ;\n const hostData = host.data();\n const axisSize = this.getAxisSize(host);\n column.enter().append(\"g\")\n .attr(\"class\", \"dataRow\")\n .merge(column)\n .each(function (dataRow, dataRowIdx) {\n const element = d3Select(this);\n\n const columnGRect = element.selectAll(\".dataCell\").data(dataRow.filter(function (_d, i) { return i < context.layerColumns(host).length; }).map(function (d, i) {\n return {\n column: context.layerColumns(host)[i],\n row: dataRow,\n origRow: hostData[dataRowIdx],\n value: d,\n idx: i\n };\n }).filter(function (d) { return d.value !== null && d.idx > 0; }), (d: any) => d.column);\n\n const columnGEnter = columnGRect\n .enter().append(\"g\")\n .attr(\"class\", \"dataCell\")\n .on(\"mouseout.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.hide.apply(context, arguments);\n }\n })\n .on(\"mousemove.tooltip\", function (d: any) {\n if (!context.tooltipInnerTextEllipsedOnly() || (d.innerTextObj && d.innerTextObj.isTruncated)) {\n context.tooltip.show.apply(context, arguments);\n }\n })\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n context.click(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n context.dblclick(host.rowToObj(d.origRow), d.column, host._selection.selected(this));\n })\n .style(\"opacity\", 0)\n .each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"class\", \"columnRect series series-\" + context.cssTag(d.column))\n ;\n element.append(\"text\")\n .attr(\"class\", \"columnRectText\")\n .style(\"stroke\", \"transparent\")\n ;\n })\n ;\n columnGEnter.transition().duration(duration)\n .style(\"opacity\", 1)\n ;\n const domainLength = host.yAxisStacked() ? dataLen : columnScale.bandwidth();\n columnGEnter.merge(columnGRect as any).each(function (this: SVGElement, d: any) {\n const element = d3Select(this);\n const domainPos = host.dataPos(dataRow[0]) + (host.yAxisStacked() ? 0 : columnScale(d.column)) + offset;\n const upperValue = d.value instanceof Array ? d.value[1] : d.value;\n let valueText = d.origRow[d.idx];\n if (context.showValue()) {\n const dm = context.dataMeta();\n switch (context.showValueAsPercent()) {\n case \"series\":\n const seriesSum = typeof dm.sum !== \"undefined\" ? dm.sum : seriesSums[d.idx];\n valueText = formatPct(valueText / seriesSum);\n break;\n case \"domain\":\n const domainSum = typeof dm.sum !== \"undefined\" ? dm.sum : domainSums[dataRowIdx];\n valueText = formatPct(valueText / domainSum);\n break;\n case null:\n default:\n valueText = d3Format(context.showValueFormat())(valueText);\n break;\n }\n }\n const upperValuePos = host.valuePos(upperValue);\n const lowerValuePos = host.valuePos(d.value instanceof Array ? d.value[0] : 0);\n const valuePos = Math.min(lowerValuePos, upperValuePos);\n const valueLength = Math.abs(upperValuePos - lowerValuePos);\n\n const innerTextHeight = context.innerTextFontSize();\n const innerTextPadding = context.innerTextPadding_exists() ? context.innerTextPadding() : innerTextHeight / 2.5;\n\n const dataRect = context.intersectRectRect(\n {\n x: isHorizontal ? domainPos : valuePos,\n y: isHorizontal ? valuePos : domainPos,\n width: isHorizontal ? domainLength : valueLength,\n height: isHorizontal ? valueLength : domainLength\n },\n {\n x: 0,\n y: 0,\n width: axisSize.width,\n height: axisSize.height\n }\n );\n\n const _rects = element.select(\"rect\").transition().duration(duration)\n .style(\"fill\", (d: any) => context.fillColor(d.row, d.column, d.value, d.origRow))\n ;\n\n if (isHorizontal) {\n _rects\n .attr(\"x\", domainPos)\n .attr(\"y\", valuePos)\n .attr(\"width\", domainLength)\n .attr(\"height\", valueLength)\n ;\n } else {\n _rects\n .attr(\"y\", domainPos)\n .attr(\"x\", valuePos)\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n }\n const _texts = element.select(\"text\").transition().duration(duration)\n .style(\"font-size\", innerTextHeight + \"px\")\n .style(\"fill\", (d: any) => context.textColor(d.row, d.column, d.value, d.origRow))\n ;\n\n _texts.style(\"font-family\", context.innerTextFontFamily_exists() ? context.innerTextFontFamily() : null);\n\n const padding = context.innerTextPadding_exists() ? context.innerTextPadding() : 8;\n\n const textHeightOffset = innerTextHeight / 2.7;\n\n if (isHorizontal) { // Column\n const y = dataRect.y + dataRect.height - innerTextPadding;\n _texts\n .attr(\"x\", domainPos + (domainLength / 2))\n .attr(\"y\", y + textHeightOffset)\n .attr(\"transform\", `rotate(-90, ${domainPos + (domainLength / 2)}, ${y})`)\n ;\n } else { // Bar\n _texts\n .attr(\"x\", dataRect.x + padding)\n .attr(\"y\", domainPos + (domainLength / 2) + textHeightOffset)\n ;\n }\n _texts\n .attr(\"height\", domainLength)\n .attr(\"width\", valueLength)\n ;\n if (context.showInnerText()) {\n _texts\n .text((d: any) => {\n const innerText = context.innerText(d.origRow, d.origRow[columnLength], d.idx);\n if (innerText) {\n const clippedValueLength = isHorizontal ? dataRect.height : dataRect.width;\n const innerTextObj = context.calcInnerText(clippedValueLength, innerText, valueText);\n d.innerTextObj = innerTextObj;\n\n return innerTextObj.text;\n }\n return \"\";\n })\n ;\n }\n const dataText = element.selectAll(\".dataText\").data(context.showValue() ? [`${upperValue}`] : []);\n const dataTextEnter = dataText.enter().append(\"g\")\n .attr(\"class\", \"dataText\")\n .each(function (this: SVGElement, d) {\n context.textLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n dataTextEnter.merge(dataText as any)\n .each(function (this: SVGElement) {\n const pos = { x: 0, y: 0 };\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(valueText, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(valueText) >= 0;\n\n let valueAnchor = context.valueAnchor() ? context.valueAnchor() : isHorizontal ? \"middle\" : \"start\";\n\n const leftSpace = dataRect.x;\n const rightSpace = axisSize.width - (dataRect.x + dataRect.width);\n const topSpace = dataRect.y;\n const bottomSpace = axisSize.height - (dataRect.y + dataRect.height);\n\n let noRoomInside;\n let isOutside;\n let noRoomOnExpectedSide;\n\n if (d.innerTextObj) {\n const { padding, valueTextWidth } = d.innerTextObj;\n isOutside = false;\n if (isHorizontal) { // Column\n valueAnchor = \"middle\";\n pos.x = domainPos + (domainLength / 2);\n\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.y = valuePos - padding - (valueFontSize / 2);\n } else {\n pos.y = valuePos + padding + (valueFontSize / 2);\n }\n } else { // Bar\n valueAnchor = \"start\";\n if (d.innerTextObj.category === 4) {\n isOutside = true;\n pos.x = (valueLength + valuePos) + padding;\n } else {\n pos.x = (valueLength + valuePos) - valueTextWidth - padding;\n }\n pos.y = domainPos + (domainLength / 2);\n }\n } else {\n /*\n IF this.valueCentered() and NO ROOM INSIDE\n ...then ASSUME THERES ROOM OUTSIDE\n IF NO ROOM OUTSIDE ON EXPECTED SIDE\n ...then ASSUME THERES ROOM ON THE OPPOSITE SIDE\n */\n if (isHorizontal) { // Column\n noRoomInside = dataRect.height < textSize.height;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.x = dataRect.x + (dataRect.width / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = topSpace < textSize.height + padding;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y + dataRect.height + textSize.height;\n }\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n noRoomOnExpectedSide = bottomSpace < textSize.height;\n if (noRoomOnExpectedSide) {\n if (!noRoomInside) {\n isOutside = false;\n pos.y = dataRect.y + (dataRect.height / 2);\n } else {\n pos.y = dataRect.y - (textSize.height / 2) - padding;\n }\n } else {\n pos.y = dataRect.y + textSize.height + padding;\n }\n }\n } else {\n pos.y = dataRect.y + (dataRect.height / 2);\n }\n } else { // Bar\n noRoomInside = dataRect.width < textSize.width;\n isOutside = !context.valueCentered() || noRoomInside;\n\n pos.y = dataRect.y + (dataRect.height / 2);\n\n if (isOutside) {\n if (isPositive) {\n noRoomOnExpectedSide = rightSpace < textSize.width + padding;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width / 2) + padding;\n }\n } else {\n noRoomOnExpectedSide = leftSpace < textSize.width;\n if (noRoomOnExpectedSide) {\n if (context.showInnerText() || !noRoomInside) {\n isOutside = false;\n pos.x = dataRect.x + (dataRect.width / 2);\n } else {\n pos.x = dataRect.x + dataRect.width + (textSize.width - padding);\n }\n } else {\n pos.x = dataRect.x - (textSize.width - padding);\n }\n }\n } else {\n pos.x = dataRect.x + (dataRect.width / 2);\n }\n }\n }\n const textColor = isOutside ? null : context.textColor(d.row, d.column, d.value, d.origRow);\n\n // Prevent overlapping labels on stacked columns\n const columns = context.columns();\n const hideValue = (context.yAxisStacked() && noRoomInside) ||\n (isOutside && context.yAxisStacked() && columns.indexOf(d.column) !== columns.length - 1);\n context.textLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(`${valueText}`)\n .colorFill(textColor)\n .visible(context.showValue() && !hideValue)\n .render()\n ;\n\n });\n dataText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n columnGRect.exit().transition().duration(duration)\n .style(\"opacity\", 0)\n .remove()\n ;\n\n const value4pos = host.yAxisStacked() ? domainSums[dataRowIdx] : Math.max(...dataRow.filter((_, idx) => idx > 0 && idx < columnLength));\n const stackedTotalText = element.selectAll(\".stackedTotalText\").data(context.showDomainTotal() ? [domainSums[dataRowIdx]] : []);\n const stackedTotalTextEnter = stackedTotalText.enter().append(\"g\")\n .attr(\"class\", \"stackedTotalText\")\n .each(function (this: SVGElement, d) {\n context.stackedTextLocal.set(this, new Text().target(this).colorStroke_default(\"transparent\"));\n });\n stackedTotalTextEnter.merge(stackedTotalText as any)\n .each(function (this: SVGElement, d: any) {\n const pos = { x: 0, y: 0 };\n const domainPos = host.dataPos(dataRow[0]);\n const valuePos = host.valuePos(value4pos);\n\n const valueFontFamily = context.valueFontFamily();\n const valueFontSize = context.valueFontSize();\n const textSize = context.textSize(d, valueFontFamily, valueFontSize);\n\n const isPositive = parseFloat(d) >= 0;\n let valueAnchor: \"start\" | \"middle\" | \"end\" = \"middle\";\n if (isHorizontal) {\n pos.x = domainPos;\n if (isPositive) {\n pos.y = valuePos - textSize.height / 2;\n } else {\n pos.y = valuePos + textSize.height / 2;\n }\n } else {\n valueAnchor = \"start\";\n pos.y = domainPos;\n if (isPositive) {\n pos.x = valuePos + textSize.width / 2;\n } else {\n pos.x = valuePos - textSize.width / 2;\n }\n }\n\n context.stackedTextLocal.get(this)\n .pos(pos)\n .anchor(valueAnchor)\n .fontFamily(valueFontFamily)\n .fontSize(valueFontSize)\n .text(d)\n .render()\n ;\n\n });\n stackedTotalText.exit()\n .each(function (this: SVGElement, d) {\n context.textLocal.get(this).target(null);\n })\n .remove()\n ;\n });\n column.exit().transition().duration(duration)\n .remove()\n ;\n }\n\n calcInnerText(offset, innerText, valueText) {\n\n const fontFamily = this.innerTextFontFamily_exists() ? this.innerTextFontFamily() : \"Verdana\";\n const fontSize = this.innerTextFontSize();\n const valueFontFamily = this.valueFontFamily_exists() ? this.valueFontFamily() : \"Verdana\";\n const valueFontSize = this.valueFontSize();\n const padding = this.innerTextPadding_exists() ? this.innerTextPadding() : fontSize / 2.5;\n const valueTextWidth = this.isHorizontal ? valueFontSize : this.textSize(valueText, valueFontFamily, valueFontSize).width;\n const ellipsisWidth = this.textSize(\"...\", fontFamily, fontSize).width;\n const innerTextWidth = this.textSize(innerText, fontFamily, fontSize).width;\n const origInnerText = innerText;\n\n const fullWidth = (padding * 3) + innerTextWidth + valueTextWidth;\n const fullWidth2 = (padding * 3) + ellipsisWidth + valueTextWidth;\n const fullWidth3 = (padding * 1) + valueTextWidth;\n /*\n Categories:\n 1) room to display inner text (with padding) AND value text (with padding)\n 2) room to display ellipsis (with padding) AND value text (with padding)\n 3) room to display value text only (with padding)\n 4) no room to display any text except value on the outside\n */\n let category = 4;\n if (fullWidth < offset) {\n category = 1;\n } else if (fullWidth2 < offset) {\n const excessWidth = offset - fullWidth2;\n let _text = \"\";\n for (const letter of innerText) {\n if (this.textSize(_text + letter, fontFamily, fontSize).width > excessWidth) {\n innerText = _text + \"...\";\n break;\n } else {\n _text += letter;\n }\n }\n category = 2;\n } else if (fullWidth3 < offset) {\n innerText = \"\";\n category = 3;\n } else {\n innerText = \"\";\n }\n\n return {\n text: innerText,\n isTruncated: origInnerText !== innerText,\n padding,\n category,\n valueTextWidth\n };\n }\n\n innerText(origRow, lparam, idx): string {\n return origRow[0];\n }\n\n // INDChart ---\n _palette;\n fillColor: (row, column, value, origRow) => string;\n textColor: (row, column, value, origRow) => string;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n}\nColumn.prototype._class += \" chart_Column\";\nColumn.prototype.implements(INDChart.prototype);\nColumn.prototype.implements(ITooltip.prototype);\n\nexport interface Column {\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n showValue(): boolean;\n showValue(_: boolean): this;\n showInnerText(): boolean;\n showInnerText(_: boolean): this;\n showValueFormat(): string;\n showValueFormat(_: string): this;\n showValueAsPercent(): null | \"series\" | \"domain\";\n showValueAsPercent(_: null | \"series\" | \"domain\"): this;\n showValueAsPercentFormat(): string;\n showValueAsPercentFormat(_: string): this;\n showDomainTotal(): boolean;\n showDomainTotal(_: boolean): this;\n valueCentered(): boolean;\n valueCentered(_: boolean): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueFontFamily(): string;\n valueFontFamily(_: string): this;\n valueFontFamily_exists(): boolean;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n xAxisSeriesPaddingInner(): number;\n xAxisSeriesPaddingInner(_: number): this;\n innerTextFontFamily(): string;\n innerTextFontFamily(_: string): this;\n innerTextFontFamily_exists(): boolean;\n innerTextFontSize(): number;\n innerTextFontSize(_: number): this;\n innerTextPadding(): number;\n innerTextPadding(_: number): this;\n innerTextPadding_exists(): boolean;\n tooltipInnerTextEllipsedOnly(): boolean;\n tooltipInnerTextEllipsedOnly(_: boolean): this;\n}\n\nColumn.prototype.publish(\"valueFontFamily\", null, \"string\", \"Font family of value text\", null, { optional: true });\nColumn.prototype.publish(\"valueFontSize\", 12, \"number\", \"Height of value text (pixels)\");\nColumn.prototype.publish(\"innerTextFontFamily\", null, \"string\", \"Font family of inner text\", null, { optional: true });\nColumn.prototype.publish(\"innerTextPadding\", 8, \"number\", \"Offset of inner text (pixels)\", null, { optional: true });\nColumn.prototype.publish(\"innerTextFontSize\", 12, \"number\", \"Height of inner text (pixels)\");\nColumn.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", () => Column.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nColumn.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nColumn.prototype.publish(\"showValue\", false, \"boolean\", \"Show Value in column\");\nColumn.prototype.publish(\"showInnerText\", false, \"boolean\", \"Show Label in column\");\nColumn.prototype.publish(\"showValueFormat\", \",\", \"string\", \"D3 Format for Value\", null, { disable: (w: Column) => !w.showValue() || !!w.showValueAsPercent() });\nColumn.prototype.publish(\"showValueAsPercent\", null, \"set\", \"If showValue is true, optionally show value as a percentage by Series or Domain\", [null, \"series\", \"domain\"], { disable: w => !w.showValue(), optional: true });\nColumn.prototype.publish(\"showValueAsPercentFormat\", \".0%\", \"string\", \"D3 Format for %\", null, { disable: (w: Column) => !w.showValue() || !w.showValueAsPercent() });\nColumn.prototype.publish(\"showDomainTotal\", false, \"boolean\", \"Show Total Value for Stacked Columns\", null);\nColumn.prototype.publish(\"valueCentered\", false, \"boolean\", \"Show Value in center of column\");\nColumn.prototype.publish(\"valueAnchor\", \"middle\", \"set\", \"text-anchor for shown value text\", [\"start\", \"middle\", \"end\"]);\nColumn.prototype.publish(\"xAxisSeriesPaddingInner\", 0, \"number\", \"Determines the ratio of the range that is reserved for blank space between band (0->1)\");\nColumn.prototype.publish(\"tooltipInnerTextEllipsedOnly\", false, \"boolean\", \"Show tooltip only when inner text is truncated with an ellipsis\");\n\n/*\nconst origUseClonedPalette = Column.prototype.useClonedPalette;\nColumn.prototype.useClonedPalette = function (this: Column, _?) {\n const retVal = origUseClonedPalette.apply(this, arguments);\n if (arguments.length) {\n this._useClonedPalette = _;\n }\n return retVal;;\n}\n*/\n","import { Column } from \"./Column\";\n\nexport class Bar extends Column {\n constructor() {\n super();\n this.orientation_default(\"vertical\");\n }\n}\nBar.prototype._class += \" chart_Bar\";\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","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 paletteID: { (): string; (_: string): Bubble; };\n useClonedPalette: { (): boolean; (_: boolean): Bubble; };\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n\n // SimpleSelectionMixin\n _selection;\n}\nBubble.prototype._class += \" chart_Bubble\";\nBubble.prototype.implements(I2DChart.prototype);\nBubble.prototype.implements(ITooltip.prototype);\nBubble.prototype.mixin(Utility.SimpleSelectionMixin);\n\nBubble.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Bubble.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nBubble.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { Scatter } from \"./Scatter\";\n\nexport class BubbleXY extends Scatter {\n constructor() {\n super();\n }\n enter(domNode, element) {\n if (!this.pointSizeColumn_exists()) {\n this.pointSizeColumn(this.columns()[this.columns().length - 1]);\n }\n super.enter(domNode, element);\n }\n}\nBubbleXY.prototype._class += \" chart_BubbleXY\";\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { descending as d3Descending } from \"d3-array\";\r\nimport { axisLeft as d3AxisLeft } from \"d3-axis\";\r\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { timerFlush as d3TimerFlush } from \"d3-timer\";\r\nimport \"d3-transition\";\r\n\r\nexport default function () {\r\n var orient = \"left\",\r\n reverse = false,\r\n vertical = false,\r\n ranges = bulvarRanges,\r\n markers = bulvarMarkers,\r\n measures = bulvarMeasures,\r\n width = 380,\r\n height = 30,\r\n xAxis = d3AxisLeft();\r\n\r\n // For each small multiple…\r\n function bulvar(g) {\r\n g.each(function (d, i) {\r\n var rangez = ranges.call(this, d, i).slice().sort(d3Descending),\r\n markerz = markers.call(this, d, i).slice().sort(d3Descending),\r\n measurez = measures.call(this, d, i).slice().sort(d3Descending),\r\n g2 = d3Select(this),\r\n extentX,\r\n extentY;\r\n\r\n var wrap = g2.select(\"g.wrap\");\r\n if (wrap.empty()) wrap = g2.append(\"g\").attr(\"class\", \"wrap\");\r\n\r\n if (vertical) {\r\n extentX = height, extentY = width;\r\n wrap.attr(\"transform\", \"rotate(90)translate(0,\" + -width + \")\");\r\n } else {\r\n extentX = width, extentY = height;\r\n wrap.attr(\"transform\", null);\r\n }\r\n\r\n // Compute the new x-scale.\r\n var x1 = d3ScaleLinear()\r\n .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])\r\n .range(reverse ? [extentX, 0] : [0, extentX]);\r\n\r\n // Retrieve the old x-scale, if this is an update.\r\n var x0 = this.__chart__ || d3ScaleLinear()\r\n .domain([0, Infinity])\r\n .range(x1.range());\r\n\r\n // Stash the new scale.\r\n this.__chart__ = x1;\r\n\r\n // Derive width-scales from the x-scales.\r\n var w0 = bulvarWidth(x0),\r\n w1 = bulvarWidth(x1);\r\n\r\n // Update the range rects.\r\n var range = wrap.selectAll(\"rect.range\")\r\n .data(rangez);\r\n\r\n range.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"range s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .merge(range)\r\n .transition(range)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY);\r\n\r\n // Update the measure rects.\r\n var measure = wrap.selectAll(\"rect.measure\")\r\n .data(measurez);\r\n\r\n measure.enter().append(\"rect\")\r\n .attr(\"class\", function (_d, i2) { return \"measure s\" + i2; })\r\n .attr(\"width\", w0)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x0 : 0)\r\n .attr(\"y\", extentY / 3)\r\n .merge(measure)\r\n .transition(measure)\r\n .attr(\"width\", w1)\r\n .attr(\"height\", extentY / 3)\r\n .attr(\"x\", reverse ? x1 : 0)\r\n .attr(\"y\", extentY / 3);\r\n\r\n // Update the marker lines.\r\n var marker = wrap.selectAll(\"line.marker\")\r\n .data(markerz);\r\n\r\n marker.enter().append(\"line\")\r\n .attr(\"class\", \"marker\")\r\n .attr(\"x1\", x0)\r\n .attr(\"x2\", x0)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6)\r\n .merge(marker)\r\n .transition(marker)\r\n .attr(\"x1\", x1)\r\n .attr(\"x2\", x1)\r\n .attr(\"y1\", extentY / 6)\r\n .attr(\"y2\", extentY * 5 / 6);\r\n\r\n var axis = g2.selectAll(\"g.axis\").data([0]);\r\n axis.enter().append(\"g\").attr(\"class\", \"axis\");\r\n axis.attr(\"transform\", vertical ? null : \"translate(0,\" + extentY + \")\")\r\n .call(xAxis.scale(x1));\r\n });\r\n d3TimerFlush();\r\n }\r\n\r\n // left, right, top, bottom\r\n bulvar.orient = function (_) {\r\n if (!arguments.length) return orient;\r\n orient = _ + \"\";\r\n reverse = orient === \"right\" || orient === \"bottom\";\r\n xAxis.orient((vertical = orient === \"top\" || orient === \"bottom\") ? \"left\" : \"bottom\"); // eslint-disable-line\r\n return bulvar;\r\n };\r\n\r\n // ranges (bad, satisfactory, good)\r\n bulvar.ranges = function (_) {\r\n if (!arguments.length) return ranges;\r\n ranges = _;\r\n return bulvar;\r\n };\r\n\r\n // markers (previous, goal)\r\n bulvar.markers = function (_) {\r\n if (!arguments.length) return markers;\r\n markers = _;\r\n return bulvar;\r\n };\r\n\r\n // measures (actual, forecast)\r\n bulvar.measures = function (_) {\r\n if (!arguments.length) return measures;\r\n measures = _;\r\n return bulvar;\r\n };\r\n\r\n bulvar.width = function (_) {\r\n if (!arguments.length) return width;\r\n width = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.height = function (_) {\r\n if (!arguments.length) return height;\r\n height = +_;\r\n return bulvar;\r\n };\r\n\r\n bulvar.tickFormat = function (_) {\r\n if (!arguments.length) return xAxis.tickFormat();\r\n xAxis.tickFormat(_);\r\n return bulvar;\r\n };\r\n\r\n return bulvar;\r\n}\r\n\r\nfunction bulvarRanges(d) {\r\n return d.ranges;\r\n}\r\n\r\nfunction bulvarMarkers(d) {\r\n return d.markers;\r\n}\r\n\r\nfunction bulvarMeasures(d) {\r\n return d.measures;\r\n}\r\n\r\nfunction bulvarWidth(x) {\r\n var x0 = x(0);\r\n return function (d) {\r\n return Math.abs(x(d) - x0);\r\n };\r\n}\r\n","import { HTMLWidget, publish, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\nimport { bullet as d3Bullet } from \"d3v4-bullet\";\n\nimport \"../src/Bullet.css\";\n\nexport class Bullet extends HTMLWidget {\n @publish(null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true })\n titleColumn: publish<this, string>;\n @publish(null, \"set\", \"Subtitle Column\", function () { return this.columns(); }, { optional: true })\n subtitleColumn: publish<this, string>;\n @publish(null, \"set\", \"Ranges Column\", function () { return this.columns(); }, { optional: true })\n rangesColumn: publish<this, string>;\n @publish(null, \"set\", \"Measures Column\", function () { return this.columns(); }, { optional: true })\n measuresColumn: publish<this, string>;\n @publish(null, \"set\", \"Markers Column\", function () { return this.columns(); }, { optional: true })\n markersColumn: publish<this, string>;\n\n private _hiddenColumns = {};\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n bulletData() {\n const context = this;\n this._hiddenColumns = {};\n const columns = this.columns();\n return this.data().map(function (row) {\n return {\n title: valueOf(row, this.titleColumn()),\n subtitle: valueOf(row, this.subtitleColumn()),\n ranges: valueOf(row, this.rangesColumn(), \"range\"),\n measures: valueOf(row, this.measuresColumn(), \"measure\"),\n markers: valueOf(row, this.markersColumn(), \"marker\"),\n origRow: row\n };\n }, this);\n\n function valueOf(row, column, columnType?) {\n const colIdx = columns.indexOf(column);\n if (colIdx >= 0) {\n if (row[colIdx] instanceof Array) {\n return row[colIdx];\n }\n return [row[colIdx]];\n }\n if (columnType) {\n context._hiddenColumns[columnType] = true;\n }\n return [0];\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow\", \"auto\");\n this._selection.widgetElement(element);\n }\n\n update(_domNode, element) {\n super.update(_domNode, element);\n const context = this;\n\n element.selectAll(\".axis\")\n .style(\"display\", \"none\")\n ;\n element.selectAll(\".range,.measure,.marker\")\n .style(\"display\", null)\n ;\n\n const margin = { left: 2, top: 8, right: 2, bottom: 8 };\n const width = this.width() - margin.left - margin.right;\n const height = 40 - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.bulletData());\n const svgUpdate = svg.enter().append(\"svg\")\n .attr(\"class\", \"bullet\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const element2 = d3Select(this);\n const bulletBar = element2.append(\"g\")\n .attr(\"class\", (d, i) => \"bulletBar series series-\" + context.cssTag(context.titleColumn()))\n ;\n const bulletTitle = bulletBar.append(\"g\")\n .attr(\"class\", \"bulletTitle\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"title\")\n ;\n bulletTitle.append(\"text\")\n .attr(\"class\", \"subtitle\")\n .attr(\"dy\", \"1em\")\n ;\n })\n .merge(svg)\n ;\n\n // Title ---\n const title = svgUpdate.select(\".bulletTitle\")\n .style(\"text-anchor\", \"end\")\n .attr(\"transform\", \"translate(-6,\" + height / 2 + \")\")\n ;\n title.select(\".title\")\n .text(function (d) { return d.title; })\n ;\n title.select(\".subtitle\")\n .text(function (d) { return d.subtitle; })\n ;\n\n let titleWidth = 0;\n title.each(function () {\n const bbox = this.getBBox();\n if (bbox.width > titleWidth) {\n titleWidth = bbox.width;\n }\n });\n titleWidth; // Gap between title and bullet bar.\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nBullet.prototype._class += \" chart_Bullet\";\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(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\";\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\";\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","export default class Annotation {\n constructor({\n x = 0,\n y = 0,\n nx,\n ny,\n dy = 0,\n dx = 0,\n color = \"grey\",\n data,\n type,\n subject,\n connector,\n note,\n disable,\n id,\n className\n }) {\n this._dx = nx !== undefined ? nx - x : dx\n this._dy = ny !== undefined ? ny - y : dy\n this._x = x\n this._y = y\n this._color = color\n this.id = id\n this._className = className || \"\"\n\n this._type = type || \"\"\n this.data = data\n\n this.note = note || {}\n this.connector = connector || {}\n this.subject = subject || {}\n\n this.disable = disable || []\n }\n\n updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition()\n if (\n this.type.subject &&\n this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0\n ) {\n this.type.redrawSubject()\n }\n }\n }\n\n clearComponents() {\n this.type.clearComponents && this.type.clearComponents()\n }\n\n get className() {\n return this._className\n }\n\n set className(className) {\n this._className = className\n if (this.type.setClassName) this.type.setClassName()\n }\n\n updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset()\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector()\n }\n\n this.type.redrawNote()\n }\n }\n\n get type() {\n return this._type\n }\n\n set type(type) {\n this._type = type\n this.clearComponents()\n }\n\n get x() {\n return this._x\n }\n set x(x) {\n this._x = x\n this.updatePosition()\n }\n\n get y() {\n return this._y\n }\n set y(y) {\n this._y = y\n this.updatePosition()\n }\n\n get color() {\n return this._color\n }\n set color(color) {\n this._color = color\n this.updatePosition()\n }\n\n get dx() {\n return this._dx\n }\n set dx(dx) {\n this._dx = dx\n this.updateOffset()\n }\n\n get dy() {\n return this._dy\n }\n set dy(dy) {\n this._dy = dy\n this.updateOffset()\n }\n\n set nx(nx) {\n this._dx = nx - this._x\n this.updateOffset()\n }\n\n set ny(ny) {\n this._dy = ny - this._y\n this.updateOffset()\n }\n\n get offset() {\n return { x: this._dx, y: this._dy }\n }\n\n set offset({ x, y }) {\n this._dx = x\n this._dy = y\n this.updateOffset()\n }\n\n get position() {\n return { x: this._x, y: this._y }\n }\n\n set position({ x, y }) {\n this._x = x\n this._y = y\n this.updatePosition()\n }\n\n get translation() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n }\n }\n\n get json() {\n const json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n }\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data\n if (this.type) json.type = this.type\n if (this._className) json.className = this._className\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector\n if (Object.keys(this.subject).length > 0) json.subject = this.subject\n if (Object.keys(this.note).length > 0) json.note = this.note\n\n return json\n }\n}\n","export default class AnnotationCollection {\n\n constructor ({ annotations, accessors, accessorsInverse }) {\n this.accessors = accessors\n this.accessorsInverse = accessorsInverse\n this.annotations = annotations\n }\n\n clearTypes (newSettings) {\n this.annotations.forEach(d => {\n d.type = undefined\n d.subject = newSettings && newSettings.subject || d.subject\n d.connector = newSettings && newSettings.connector || d.connector\n d.note = newSettings && newSettings.note || d.note\n })\n }\n\n setPositionWithAccessors () {\n this.annotations.forEach(d => {\n d.type.setPositionWithAccessors(this.accessors)\n })\n }\n\n editMode (editMode) { this.annotations.forEach(a => {\n if (a.type) {\n a.type.editMode = editMode\n a.type.updateEditMode()\n }\n })\n }\n\n updateDisable (disable) {\n this.annotations.forEach(a => {\n a.disable = disable\n if (a.type) {\n disable.forEach(d => {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove()\n a.type[d] = undefined\n }\n })\n }\n })\n }\n\n updateTextWrap (textWrap) {\n this.annotations.forEach(a => {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap)\n }\n })\n }\n\n updateText () {\n this.annotations.forEach(a => {\n if (a.type && a.type.drawText) {\n a.type.drawText()\n }\n })\n }\n\n updateNotePadding (notePadding) {\n this.annotations.forEach(a => {\n if (a.type) {\n a.type.notePadding = notePadding\n }\n })\n }\n\n get json () { \n return this.annotations.map(a => { \n const json = a.json\n if (this.accessorsInverse && a.data) {\n json.data = {}\n Object.keys(this.accessorsInverse).forEach(k => {\n json.data[k] = this.accessorsInverse[k]({ x: a.x, y: a.y})\n\n //TODO make this feasible to map back to data for other types of subjects\n })\n }\n return json\n })\n }\n\n get noteNodes () {\n return this.annotations.map(a => ({ ...a.type.getNoteBBoxOffset(), positionX: a.x, positionY: a.y }))\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n}\n","import { select } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\n\nexport const pointHandle = ({ cx = 0, cy = 0 }) => {\n return { move: { x: cx, y: cy } }\n}\n\nexport const circleHandles = ({ cx = 0, cy = 0, r1, r2, padding }) => {\n const h = { move: { x: cx, y: cy } }\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) }\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) }\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy }\n }\n\n return h\n}\n\nexport const rectHandles = ({\n x1 = 0,\n y1 = 0,\n x2 = x1,\n y2 = y1,\n width,\n height\n}) => {\n const w = width || Math.abs(x2 - x1)\n const h = height || Math.abs(y2 - y1)\n\n return {\n move: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.min(y1, y2) - 10\n },\n width: {\n x: Math.max(x1, x2),\n y: Math.min(y1, y2) + h / 2\n },\n height: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.max(y1, y2)\n }\n }\n}\n\nexport const lineHandles = ({ x1, y1, x2, y2, x, y }) => {\n const minY = Math.min(y1, y2)\n const minX = Math.min(x1, x2)\n\n const height = Math.abs(y2 - y1)\n const width = Math.abs(x2 - x1)\n\n return {\n move: {\n x: x || minX + width / 2,\n y: y || minY + height / 2\n }\n }\n}\n\n//arc handles\nexport const addHandles = ({ group, handles, r = 10 }) => {\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n const h = group.selectAll(\"circle.handle\").data(handles)\n\n h\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"handle\")\n .attr(\"fill\", \"grey\")\n .attr(\"fill-opacity\", 0.1)\n .attr(\"cursor\", \"move\")\n .attr(\"stroke-dasharray\", 5)\n .attr(\"stroke\", \"grey\")\n .call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => d.start && d.start(d))\n .on(\"drag\", d => d.drag && d.drag(d))\n .on(\"end\", d => d.end && d.end(d))\n )\n\n group\n .selectAll(\"circle.handle\")\n .attr(\"cx\", d => d.x)\n .attr(\"cy\", d => d.y)\n .attr(\"r\", d => d.r || r)\n .attr(\"class\", d => `handle ${d.className || \"\"}`)\n\n h.exit().remove()\n}\n","\nexport const leftRightDynamic = (align, y) => {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) { align = \"top\" }\n else { align = \"bottom\" } \n }\n return align\n}\n\nexport const topBottomDynamic = (align, x) => {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) { align = \"right\" }\n else { align = \"left\" } \n }\n return align\n}\n\nconst orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"]\nconst orientationLeftRight = [\"leftRight\", \"left\", \"right\"]\n\nexport default ({ padding=0, bbox={x:0, y:0, width:0, height:0}, align, orientation, offset={x:0, y:0} }) => {\n let x = -bbox.x \n let y = 0//-bbox.y\n if ( orientationTopBottom.indexOf(orientation) !== -1 ) {\n align = topBottomDynamic(align, offset.x)\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") { \n y -= bbox.height + padding\n } else {\n y += padding\n }\n\n if ( align === \"middle\" ) {\n x -= bbox.width/2\n } else if (align === \"right\" ) {\n x -= bbox.width\n } \n\n } else if ( orientationLeftRight.indexOf(orientation) !== -1 ) {\n align = leftRightDynamic(align, offset.y)\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") { \n x -= bbox.width + padding\n } else {\n x += padding\n }\n\n if ( align === \"middle\" ) {\n y -= bbox.height/2\n } else if (align === \"top\" ) {\n y -= bbox.height\n }\n } \n\n return { x, y }\n}","import { line, arc, curveLinear } from \"d3-shape\"\n\nexport const lineBuilder = ({ data, curve=curveLinear, canvasContext, className, classID }) => { \n const lineGen = line()\n .curve(curve)\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n if (canvasContext) {\n lineGen.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n builder.attrs = {\n d: lineGen(data)\n }\n }\n\n return builder\n}\n\nexport const arcBuilder = ({ data, canvasContext, className, classID }) => {\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n const arcShape = arc()\n .innerRadius(data.innerRadius || 0)\n .outerRadius(data.outerRadius || data.radius || 2)\n .startAngle(data.startAngle || 0)\n .endAngle(data.endAngle || 2*Math.PI)\n\n if (canvasContext) {\n arcShape.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n \n builder.attrs = {\n d: arcShape()\n }\n }\n\n return builder\n}","import { lineBuilder } from '../Builder'\nimport { leftRightDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, bbox, offset }) => {\n align = leftRightDynamic(align, offset.y)\n\n if (align === \"top\") { y -= bbox.height } \n else if (align === \"middle\") { y -= bbox.height/2 }\n\n const data = [[x, y], [x, y + bbox.height]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\nimport { topBottomDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, offset, bbox }) => {\n align = topBottomDynamic(align, offset.x)\n\n if (align === \"right\") { x -= bbox.width }\n else if (align === \"middle\") { x -= bbox.width/2 }\n\n const data = [[x, y], [x + bbox.width, y]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\n\nexport const lineSetup = ({ type, subjectType }) => {\n let annotation = type.annotation\n let offset = annotation.position\n \n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n\n const subjectData = annotation.subject\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const h = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))\n const angle = Math.asin(-y2/h)\n const r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0)\n\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n\n }\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n\n return [[x1, y1], [x2, y2]]\n}\n\nexport default (connectorData) => {\n const data = lineSetup(connectorData)\n return { components: [lineBuilder({ data, className : \"connector\" })]} \n}","import { lineBuilder } from '../Builder'\n\nexport default ({ type, subjectType }) => {\n\n const annotation = type.annotation\n const offset = annotation.position\n\n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n const subjectData = annotation.subject\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n let data = [[x1, y1], [x2, y2]]\n\n let diffY = y2 - y1\n let diffX = x2 - x1\n let xe = x2 \n let ye = y2\n let opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2\n ye = y1 + diffX*opposite\n } else {\n ye = y2\n xe = x1 + diffY*opposite\n }\n \n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0)\n const length = r/Math.sqrt(2)\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length*(x2 < 0 ? -1 : 1)\n y1 = length*(y2 < 0 ? -1 : 1)\n data = [[x1, y1], [xe , ye ], [x2, y2]]\n\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n const angle = Math.asin(-y2/r)\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n data = [[ x1, y2], [x2, y2]]\n } else {\n const angle = Math.acos(x2/r)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n data = [[ x2, y1], [x2, y2]]\n }\n } else {\n data = [[x1, y1], [xe , ye], [x2, y2]]\n }\n\n return { components: [lineBuilder({ data, className: \"connector\"})]}\n}\n","import { lineBuilder } from '../Builder'\nimport { event } from 'd3-selection'\nimport { lineSetup } from './type-line'\nimport { curveCatmullRom } from 'd3-shape'\nimport { pointHandle } from '../Handles'\n\nexport default ({ type, connectorData, subjectType }) => {\n\n if (!connectorData) { connectorData = {} }\n if (!connectorData.points || typeof connectorData.points === \"number\") { \n connectorData.points = createPoints(type.annotation.offset, connectorData.points) \n }\n if (!connectorData.curve) { connectorData.curve = curveCatmullRom }\n\n let handles = []\n\n if (type.editMode) {\n const cHandles = connectorData.points\n .map((c,i) => ({...pointHandle({cx: c[0], cy: c[1]}), index: i}))\n\n const updatePoint = (index) => { \n connectorData.points[index][0] += event.dx\n connectorData.points[index][1] += event.dy\n type.redrawConnector()\n }\n \n handles = type.mapHandles(cHandles\n .map(h => ({ ...h.move, drag: updatePoint.bind(type, h.index)})))\n\n }\n\n let data = lineSetup({ type, subjectType })\n data = [data[0], ...connectorData.points, data[1]]\n const components = [lineBuilder({ data, curve: connectorData.curve, className: \"connector\" })]\n\n return { components , handles }\n}\n\nconst createPoints = function ( offset, anchors=2) {\n const diff = { x: offset.x/(anchors + 1), y: offset.y/(anchors + 1) }\n const p = []\n\n let i = 1 \n for (; i <= anchors; i++) {\n p.push([diff.x*i + i%2*20, diff.y*i - i%2*20])\n }\n return p\n}","import { lineBuilder } from \"../Builder\"\n\nexport default ({ annotation, start, end, scale = 1 }) => {\n const offset = annotation.position\n if (!start) {\n start = [annotation.dx, annotation.dy]\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]]\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y]\n }\n\n let x1 = end[0],\n y1 = end[1]\n\n let dx = start[0]\n let dy = start[1]\n\n let size = 10 * scale\n let angleOffset = 16 / 180 * Math.PI\n let angle = Math.atan(dy / dx)\n\n if (dx < 0) {\n angle += Math.PI\n }\n\n const data = [\n [x1, y1],\n [\n Math.cos(angle + angleOffset) * size + x1,\n Math.sin(angle + angleOffset) * size + y1\n ],\n [\n Math.cos(angle - angleOffset) * size + x1,\n Math.sin(angle - angleOffset) * size + y1\n ],\n [x1, y1]\n ]\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [\n lineBuilder({\n data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })\n ]\n }\n}\n","import { arcBuilder } from \"../Builder\"\n\nexport default ({ line, scale = 1 }) => {\n let dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n })\n dot.attrs.transform = `translate(${line.data[0][0]}, ${line.data[0][1]})`\n\n return { components: [dot] }\n}\n","import { circleHandles } from \"../Handles\"\nimport { arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20\n }\n\n let handles = []\n const c = arcBuilder({ data: subjectData, className: \"subject\" })\n if (type.editMode) {\n const h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n })\n\n const updateRadius = attr => {\n const r = subjectData[attr] + event.dx * Math.sqrt(2)\n subjectData[attr] = r\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const cHandles = [\n {\n ...h.r1,\n drag: updateRadius.bind(\n type,\n subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\"\n )\n }\n ]\n\n if (subjectData.innerRadius) {\n cHandles.push({ ...h.r2, drag: updateRadius.bind(type, \"innerRadius\") })\n }\n handles = type.mapHandles(cHandles)\n }\n\n c.attrs[\"fill-opacity\"] = 0\n\n return { components: [c], handles }\n}\n","import { lineBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.width) {\n subjectData.width = 100\n }\n if (!subjectData.height) {\n subjectData.height = 100\n }\n\n let handles = []\n let { width, height } = subjectData\n\n const data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]]\n let rect = lineBuilder({ data, className: \"subject\" })\n\n if (type.editMode) {\n const updateWidth = () => {\n subjectData.width = event.x\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const updateHeight = () => {\n subjectData.height = event.y\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const rHandles = [\n { x: width, y: height / 2, drag: updateWidth.bind(type) },\n { x: width / 2, y: height, drag: updateHeight.bind(type) }\n ]\n\n handles = type.mapHandles(rHandles)\n }\n rect.attrs[\"fill-opacity\"] = 0.1\n return { components: [rect], handles }\n}\n","import { lineBuilder } from '../Builder'\n\n\nexport default ({ subjectData, type }) => {\n const offset = type.annotation.position\n\n let x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y\n\n const data = [[x1, y1], [x2, y2]]\n return { components: [lineBuilder({ data, className : 'subject'})]}\n}","import { lineBuilder, arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData = {}, type = {} }, annotation = {}) => {\n const typeSettings = type.typeSettings && type.typeSettings.subject\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius\n } else {\n subjectData.radius = 14\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y\n }\n }\n\n let handles = []\n const components = []\n const radius = subjectData.radius\n const innerRadius = radius * 0.7\n let x = 0\n let y = 0\n\n const notCornerOffset = Math.sqrt(2) * radius\n const placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n }\n\n if (subjectData.x && !subjectData.y) {\n x = placement[`x${subjectData.x}`]\n } else if (subjectData.y && !subjectData.x) {\n y = placement[`y${subjectData.y}`]\n } else if (subjectData.x && subjectData.y) {\n x = placement[`x${subjectData.x}corner`]\n y = placement[`y${subjectData.y}corner`]\n }\n\n const transform = `translate(${x}, ${y})`\n const circlebg = arcBuilder({ className: \"subject\", data: { radius } })\n circlebg.attrs.transform = transform\n circlebg.attrs.fill = annotation.color\n circlebg.attrs[\"stroke-linecap\"] = \"round\"\n circlebg.attrs[\"stroke-width\"] = \"3px\"\n\n const circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius }\n })\n\n circle.attrs.transform = transform\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\"\n circle.attrs.fill = \"white\"\n\n let pointer\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n })\n } else if (x || y) {\n const notCornerPointerXY = (v, sign = 1) =>\n v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2)\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [\n [0, 0],\n [notCornerPointerXY(x), notCornerPointerXY(y)],\n [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)],\n [0, 0]\n ]\n })\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color\n pointer.attrs[\"stroke-linecap\"] = \"round\"\n pointer.attrs[\"stroke-width\"] = \"3px\"\n components.push(pointer)\n }\n\n if (type.editMode) {\n const dragBadge = () => {\n subjectData.x =\n event.x < -radius * 2\n ? \"left\"\n : event.x > radius * 2 ? \"right\" : undefined\n subjectData.y =\n event.y < -radius * 2\n ? \"top\"\n : event.y > radius * 2 ? \"bottom\" : undefined\n\n type.redrawSubject()\n }\n\n const bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) }\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius\n }\n\n handles = type.mapHandles([bHandles])\n }\n\n let text\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x,\n y\n }\n }\n }\n\n components.push(circlebg)\n components.push(circle)\n components.push(text)\n\n return { components, handles }\n}\n","import { select, event } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\nimport { addHandles } from \"./Handles\"\n\n//Note options\nimport noteAlignment from \"./Note/alignment\"\nimport noteVertical from \"./Note/lineType-vertical\"\nimport noteHorizontal from \"./Note/lineType-horizontal\"\n\n//Connector options\nimport connectorLine from \"./Connector/type-line\"\nimport connectorElbow from \"./Connector/type-elbow\"\nimport connectorCurve from \"./Connector/type-curve\"\nimport connectorArrow from \"./Connector/end-arrow\"\nimport connectorDot from \"./Connector/end-dot\"\n\n//Subject options\nimport subjectCircle from \"./Subject/circle\"\nimport subjectRect from \"./Subject/rect\"\nimport subjectThreshold from \"./Subject/threshold\"\nimport subjectBadge from \"./Subject/badge\"\n\nexport class Type {\n constructor({ a, annotation, editMode, dispatcher, notePadding, accessors }) {\n this.a = a\n\n this.note =\n annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\")\n this.noteContent = this.note && a.select(\"g.annotation-note-content\")\n this.connector =\n annotation.disable.indexOf(\"connector\") === -1 &&\n a.select(\"g.annotation-connector\")\n this.subject =\n annotation.disable.indexOf(\"subject\") === -1 &&\n a.select(\"g.annotation-subject\")\n this.dispatcher = dispatcher\n\n if (dispatcher) {\n const handler = addHandlers.bind(null, dispatcher, annotation)\n handler({ component: this.note, name: \"note\" })\n handler({ component: this.connector, name: \"connector\" })\n handler({ component: this.subject, name: \"subject\" })\n }\n\n this.annotation = annotation\n this.editMode = annotation.editMode || editMode\n this.notePadding = notePadding !== undefined ? notePadding : 3\n this.offsetCornerX = 0\n this.offsetCornerY = 0\n\n if (accessors && annotation.data) {\n this.init(accessors)\n }\n }\n\n init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors)\n }\n if (!this.annotation.y) {\n this.mapY(accessors)\n }\n }\n\n mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data)\n }\n }\n\n mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data)\n }\n }\n\n updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove()\n }\n\n drawOnSVG(component, builders) {\n if (!Array.isArray(builders)) {\n builders = [builders]\n }\n\n builders\n .filter(b => b)\n .forEach(({ type, className, attrs, handles, classID }) => {\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles })\n } else {\n newWithClass(component, [this.annotation], type, className, classID)\n const el = component.select(`${type}.${classID || className}`)\n const addAttrs = Object.keys(attrs)\n const removeAttrs = []\n\n const currentAttrs = el.node().attributes\n for (let i = currentAttrs.length - 1; i >= 0; i--) {\n const name = currentAttrs[i].name\n if (addAttrs.indexOf(name) === -1 && name !== \"class\")\n removeAttrs.push(name)\n }\n\n addAttrs.forEach(attr => {\n if (attr === \"text\") {\n el.text(attrs[attr])\n } else {\n el.attr(attr, attrs[attr])\n }\n })\n\n removeAttrs.forEach(attr => el.attr(attr, null))\n }\n })\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\")\n }\n getNoteBBoxOffset() {\n const bbox = bboxWithoutHandles(this.note, \".annotation-note-content\")\n const transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g)\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy\n bbox.offsetX = this.annotation.dx\n bbox.offsetY = this.annotation.dy\n return bbox\n }\n\n drawSubject(context = {}) {\n const subjectData = this.annotation.subject\n const type = context.type\n const subjectParams = { type: this, subjectData }\n\n let subject = {}\n if (type === \"circle\") subject = subjectCircle(subjectParams)\n else if (type === \"rect\") subject = subjectRect(subjectParams)\n else if (type === \"threshold\") subject = subjectThreshold(subjectParams)\n else if (type === \"badge\")\n subject = subjectBadge(subjectParams, this.annotation)\n\n let { components = [], handles = [] } = subject\n components.forEach(c => {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = this.annotation.color\n }\n })\n\n if (this.editMode) {\n handles = handles.concat(\n this.mapHandles([{ drag: this.dragSubject.bind(this) }])\n )\n components.push({ type: \"handle\", handles })\n }\n\n return components\n }\n\n drawConnector(context = {}) {\n const connectorData = this.annotation.connector\n const type = connectorData.type || context.type\n const connectorParams = { type: this, connectorData }\n connectorParams.subjectType =\n this.typeSettings &&\n this.typeSettings.subject &&\n this.typeSettings.subject.type\n\n let connector = {}\n if (type === \"curve\") connector = connectorCurve(connectorParams)\n else if (type === \"elbow\") connector = connectorElbow(connectorParams)\n else connector = connectorLine(connectorParams)\n let { components = [], handles = [] } = connector\n const line = components[0]\n //TODO: genericize this into fill t/f stroke t/f\n if (line) {\n line.attrs.stroke = this.annotation.color\n line.attrs.fill = \"none\"\n }\n const endType = connectorData.end || context.end\n let end = {}\n if (endType === \"arrow\") {\n let s = line.data[1]\n const e = line.data[0]\n const distance = Math.sqrt(\n Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2)\n )\n if (distance < 5 && line.data[2]) {\n s = line.data[2]\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n })\n } else if (endType === \"dot\") {\n end = connectorDot({ line, scale: connectorData.endScale })\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove()\n }\n\n if (end.components) {\n end.components.forEach(c => {\n c.attrs.fill = this.annotation.color\n c.attrs.stroke = this.annotation.color\n })\n components = components.concat(end.components)\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles })\n }\n return components\n }\n\n drawNote(context = {}) {\n const noteData = this.annotation.note\n const align = noteData.align || context.align || \"dynamic\"\n const noteParams = {\n bbox: context.bbox,\n align,\n offset: this.annotation.offset\n }\n const lineType = noteData.lineType || context.lineType\n let note = {}\n if (lineType === \"vertical\") note = noteVertical(noteParams)\n else if (lineType === \"horizontal\") note = noteHorizontal(noteParams)\n\n let { components = [], handles = [] } = note\n components.forEach(c => {\n c.attrs.stroke = this.annotation.color\n })\n\n if (this.editMode) {\n handles = this.mapHandles([\n { x: 0, y: 0, drag: this.dragNote.bind(this) }\n ])\n components.push({ type: \"handle\", handles })\n\n const dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this)\n this.note.call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => start(d))\n .on(\"drag\", d => dragging(d))\n .on(\"end\", d => end(d))\n )\n } else {\n this.note.on(\"mousedown.drag\", null)\n }\n return components\n }\n\n drawNoteContent(context) {\n const noteData = this.annotation.note\n const padding =\n noteData.padding !== undefined ? noteData.padding : this.notePadding\n let orientation = noteData.orientation || context.orientation || \"topBottom\"\n const lineType = noteData.lineType || context.lineType\n const align = noteData.align || context.align || \"dynamic\"\n\n if (lineType === \"vertical\") orientation = \"leftRight\"\n else if (lineType === \"horizontal\") orientation = \"topBottom\"\n\n const noteParams = {\n padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation,\n align\n }\n const { x, y } = noteAlignment(noteParams)\n this.offsetCornerX = x + this.annotation.dx\n this.offsetCornerY = y + this.annotation.dy\n this.note && this.noteContent.attr(\"transform\", `translate(${x}, ${y})`)\n\n return []\n }\n\n drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction)\n }\n\n redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject())\n }\n\n redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector())\n }\n\n redrawNote(bbox = this.getNoteBBox()) {\n this.noteContent &&\n this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox }))\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox }))\n }\n\n setPosition() {\n const position = this.annotation.position\n this.a.attr(\"transform\", `translate(${position.x}, ${position.y})`)\n }\n\n clearComponents() {\n this.subject && this.subject.select(\"*\").remove()\n this.connector && this.connector.select(\"*\").remove()\n // this.note && this.note.select(\"*\").remove()\n }\n\n setOffset() {\n if (this.note) {\n const offset = this.annotation.offset\n this.note.attr(\"transform\", `translate(${offset.x}, ${offset.y})`)\n }\n }\n\n setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors)\n this.mapY(accessors)\n }\n this.setPosition()\n }\n\n setClassName() {\n this.a.attr(\n \"class\",\n `annotation ${this.className && this.className()} ${\n this.editMode ? \"editable\" : \"\"\n } ${this.annotation.className || \"\"}`\n )\n }\n\n draw() {\n this.setClassName()\n this.setPosition()\n this.setOffset()\n this.redrawSubject()\n this.redrawConnector()\n this.redrawNote()\n }\n\n dragstarted() {\n event.sourceEvent.stopPropagation()\n this.dispatcher &&\n this.dispatcher.call(\"dragstart\", this.a, this.annotation)\n this.a.classed(\"dragging\", true)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\")\n }\n dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation)\n this.a.classed(\"dragging\", false)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\")\n }\n\n dragSubject() {\n const position = this.annotation.position\n position.x += event.dx\n position.y += event.dy\n this.annotation.position = position\n }\n\n dragNote() {\n const offset = this.annotation.offset\n offset.x += event.dx\n offset.y += event.dy\n this.annotation.offset = offset\n }\n\n mapHandles(handles) {\n return handles.map(h => ({\n ...h,\n start: this.dragstarted.bind(this),\n end: this.dragended.bind(this)\n }))\n }\n}\n\nexport const customType = (initialType, typeSettings, init) => {\n return class customType extends initialType {\n constructor(settings) {\n super(settings)\n this.typeSettings = typeSettings\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(d => {\n this[d] && this[d].remove()\n\n this[d] = undefined\n if (d === \"note\") {\n this.noteContent = undefined\n }\n })\n }\n }\n\n static init(annotation, accessors) {\n super.init(annotation, accessors)\n if (init) {\n annotation = init(annotation, accessors)\n }\n return annotation\n }\n\n className() {\n return `${typeSettings.className ||\n super.className && super.className() ||\n \"\"}`\n }\n\n drawSubject(context) {\n this.typeSettings.subject = Object.assign(\n {},\n typeSettings.subject,\n this.typeSettings.subject\n )\n return super.drawSubject({ ...context, ...this.typeSettings.subject })\n }\n\n drawConnector(context) {\n this.typeSettings.connector = Object.assign(\n {},\n typeSettings.connector,\n this.typeSettings.connector\n )\n return super.drawConnector({\n ...context,\n ...typeSettings.connector,\n ...this.typeSettings.connector\n })\n }\n\n drawNote(context) {\n this.typeSettings.note = Object.assign(\n {},\n typeSettings.note,\n this.typeSettings.note\n )\n return super.drawNote({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n\n drawNoteContent(context) {\n return super.drawNoteContent({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n }\n}\n\nexport class d3NoteText extends Type {\n constructor(params) {\n super(params)\n this.textWrap = params.textWrap || 120\n this.drawText()\n }\n\n updateTextWrap(textWrap) {\n this.textWrap = textWrap\n this.drawText()\n }\n\n //TODO: add update text functionality\n\n drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\")\n\n const noteContent = this.note.select(\"g.annotation-note-content\")\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\")\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-label\"\n )\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-title\"\n )\n\n let titleBBox = { height: 0 }\n const label = this.a.select(\"text.annotation-note-label\")\n const wrapLength =\n this.annotation.note && this.annotation.note.wrap ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrap ||\n this.textWrap\n\n const wrapSplitter =\n this.annotation.note && this.annotation.note.wrapSplitter ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrapSplitter\n\n let bgPadding =\n this.annotation.note && this.annotation.note.bgPadding ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.bgPadding\n\n let bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 }\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n }\n } else if (bgPadding && typeof bgPadding === \"object\") {\n bgPaddingFinal = Object.assign(bgPaddingFinal, bgPadding)\n }\n\n if (this.annotation.note.title) {\n const title = this.a.select(\"text.annotation-note-title\")\n title.text(this.annotation.note.title)\n title.attr(\"fill\", this.annotation.color)\n title.attr(\"font-weight\", \"bold\")\n title.call(wrap, wrapLength, wrapSplitter)\n titleBBox = title.node().getBBox()\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\")\n label.call(wrap, wrapLength, wrapSplitter)\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0)\n label.attr(\"fill\", this.annotation.color)\n\n const bbox = this.getNoteBBox()\n\n this.a\n .select(\"rect.annotation-note-bg\")\n .attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right)\n .attr(\n \"height\",\n bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom\n )\n .attr(\"x\", bbox.x - bgPaddingFinal.left)\n .attr(\"y\", -bgPaddingFinal.top)\n .attr(\"fill\", \"white\")\n .attr(\"fill-opacity\", 0)\n }\n }\n}\n\nexport const d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n})\n\nexport const d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n})\n\nexport const d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n})\n\nexport const d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n})\n\nexport const d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nclass ThresholdMap extends d3Callout {\n mapY(accessors) {\n super.mapY(accessors)\n const a = this.annotation\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data)\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2\n }\n }\n\n mapX(accessors) {\n super.mapX(accessors)\n const a = this.annotation\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data)\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2\n }\n }\n}\n\nexport const d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n})\n\nexport const newWithClass = (a, d, type, className, classID) => {\n const group = a.selectAll(`${type}.${classID || className}`).data(d)\n group\n .enter()\n .append(type)\n .merge(group)\n .attr(\"class\", className)\n\n group.exit().remove()\n return a\n}\n\nconst addHandlers = (dispatcher, annotation, { component, name }) => {\n if (component) {\n component\n .on(\"mouseover.annotations\", () => {\n dispatcher.call(`${name}over`, component, annotation)\n })\n .on(\"mouseout.annotations\", () =>\n dispatcher.call(`${name}out`, component, annotation)\n )\n .on(\"click.annotations\", () =>\n dispatcher.call(`${name}click`, component, annotation)\n )\n }\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst wrap = (text, width, wrapSplitter, lineHeight = 1.2) => {\n text.each(function() {\n const text = select(this),\n words = text\n .text()\n .split(wrapSplitter || /[ \\t\\r\\n]+/)\n .reverse()\n .filter(w => w !== \"\")\n let word,\n line = [],\n tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", 0.8 + \"em\")\n\n while (word = words.pop()) {\n line.push(word)\n tspan.text(line.join(\" \"))\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst bboxWithoutHandles = (selection, selector = \":not(.handle)\") => {\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 }\n }\n\n return selection\n .selectAll(selector)\n .nodes()\n .reduce(\n (p, c) => {\n const bbox = c.getBBox()\n p.x = Math.min(p.x, bbox.x)\n p.y = Math.min(p.y, bbox.y)\n p.width = Math.max(p.width, bbox.width)\n\n const yOffset = c && c.attributes && c.attributes.y\n p.height = Math.max(\n p.height,\n (yOffset && parseFloat(yOffset.value) || 0) + bbox.height\n )\n return p\n },\n { x: 0, y: 0, width: 0, height: 0 }\n )\n}\n\nexport default {\n Type,\n d3Label,\n d3Callout,\n d3CalloutElbow,\n d3CalloutCurve,\n d3CalloutCircle,\n d3CalloutRect,\n d3XYThreshold,\n d3Badge,\n customType\n}\n","import Annotation from \"./Annotation\"\nimport AnnotationCollection from \"./AnnotationCollection\"\nimport { newWithClass, d3Callout } from \"./Types-d3\"\nimport { select } from \"d3-selection\"\nimport { dispatch } from \"d3-dispatch\"\n\nexport default function annotation() {\n let annotations = [],\n collection,\n context, //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids,\n type = d3Callout,\n textWrap,\n notePadding,\n annotationDispatcher = dispatch(\n \"subjectover\",\n \"subjectout\",\n \"subjectclick\",\n \"connectorover\",\n \"connectorout\",\n \"connectorclick\",\n \"noteover\",\n \"noteout\",\n \"noteclick\",\n \"dragend\",\n \"dragstart\"\n ),\n sel\n\n const annotation = function(selection) {\n sel = selection\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove()\n }\n\n const translatedAnnotations = annotations.map(a => {\n if (!a.type) {\n a.type = type\n }\n if (!a.disable) {\n a.disable = disable\n }\n return new Annotation(a)\n })\n\n collection =\n collection ||\n new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors,\n accessorsInverse,\n ids\n })\n\n const annotationG = selection.selectAll(\"g\").data([collection])\n annotationG.enter().append(\"g\").attr(\"class\", `annotations`)\n\n const group = selection.select(\"g.annotations\")\n newWithClass(group, collection.annotations, \"g\", \"annotation\")\n\n const annotation = group.selectAll(\"g.annotation\")\n\n annotation.each(function(d) {\n const a = select(this)\n\n a.attr(\"class\", \"annotation\")\n\n newWithClass(a, [d], \"g\", \"annotation-connector\")\n newWithClass(a, [d], \"g\", \"annotation-subject\")\n newWithClass(a, [d], \"g\", \"annotation-note\")\n newWithClass(\n a.select(\"g.annotation-note\"),\n [d],\n \"g\",\n \"annotation-note-content\"\n )\n d.type =\n d.type.toString() === \"[object Object]\"\n ? d.type\n : new d.type({\n a,\n annotation: d,\n textWrap,\n notePadding,\n editMode,\n dispatcher: annotationDispatcher,\n accessors\n })\n d.type.draw()\n d.type.drawText && d.type.drawText()\n })\n }\n\n annotation.json = function() {\n /* eslint-disable no-console */\n console.log(\n \"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\",\n collection.json\n )\n /* eslint-enable no-console */\n window.copy(\n JSON.stringify(\n collection.json.map(a => {\n delete a.type\n return a\n })\n )\n )\n return annotation\n }\n\n annotation.update = function() {\n if (annotations && collection) {\n annotations = collection.annotations.map(a => {\n a.type.draw()\n return a\n })\n }\n return annotation\n }\n\n annotation.updateText = function() {\n if (collection) {\n collection.updateText(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.updatedAccessors = function() {\n collection.setPositionWithAccessors()\n annotations = collection.annotations\n return annotation\n }\n\n annotation.disable = function(_) {\n if (!arguments.length) return disable\n disable = _\n if (collection) {\n collection.updateDisable(disable)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n if (collection) {\n collection.updateTextWrap(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.notePadding = function(_) {\n if (!arguments.length) return notePadding\n notePadding = _\n if (collection) {\n collection.updateNotePadding(notePadding)\n annotations = collection.annotations\n }\n return annotation\n }\n //todo think of how to handle when undefined is sent\n annotation.type = function(_, settings) {\n if (!arguments.length) return type\n type = _\n if (collection) {\n collection.annotations.map(a => {\n a.type.note &&\n a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove()\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove()\n a.type.subject && a.type.subject.selectAll(\"*\").remove()\n a.type.connector && a.type.connector.selectAll(\"*\").remove()\n a.type.typeSettings = {}\n a.type = type\n\n a.subject = settings && settings.subject || a.subject\n a.connector = settings && settings.connector || a.connector\n a.note = settings && settings.note || a.note\n })\n\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.annotations = function(_) {\n if (!arguments.length)\n return collection && collection.annotations || annotations\n annotations = _\n\n if (collection && collection.annotations) {\n const rerun = annotations.some(\n d => !d.type || d.type.toString() !== \"[object Object]\"\n )\n\n if (rerun) {\n collection = null\n annotation(sel)\n } else {\n collection.annotations = annotations\n }\n }\n return annotation\n }\n\n annotation.context = function(_) {\n if (!arguments.length) return context\n context = _\n return annotation\n }\n\n annotation.accessors = function(_) {\n if (!arguments.length) return accessors\n accessors = _\n return annotation\n }\n\n annotation.accessorsInverse = function(_) {\n if (!arguments.length) return accessorsInverse\n accessorsInverse = _\n return annotation\n }\n\n annotation.ids = function(_) {\n if (!arguments.length) return ids\n ids = _\n return annotation\n }\n\n annotation.editMode = function(_) {\n if (!arguments.length) return editMode\n editMode = _\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode)\n }\n\n if (collection) {\n collection.editMode(editMode)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.collection = function(_) {\n if (!arguments.length) return collection\n collection = _\n return annotation\n }\n\n annotation.on = function() {\n const value = annotationDispatcher.on.apply(annotationDispatcher, arguments)\n return value === annotationDispatcher ? annotation : value\n }\n\n return annotation\n}\n","import { publish, SVGWidget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { interpolate as d3Interpolate, interpolateHcl as d3InterpolateHcl } from \"d3-interpolate\";\nimport { scaleLinear } from \"d3-scale\";\nimport { Arc, arc as d3Arc, DefaultArcObject } from \"d3-shape\";\nimport { annotation as d3Annotation, annotationCalloutElbow } from \"d3-svg-annotation\";\n\nfunction value2Angle(value: number): number {\n return (value - 0.5) * .65 * 2 * Math.PI;\n}\n\nfunction pointOnArc(angle: number, radius: number): { x: number, y: number } {\n return {\n x: Math.cos(angle - Math.PI / 2) * radius,\n y: Math.sin(angle - Math.PI / 2) * radius\n };\n}\n\nfunction indicatorTranslate(angle: number, radius: number, inner: boolean = false) {\n const point = pointOnArc(angle, radius);\n const rotation = angle * 180 / Math.PI + (inner === true ? 180 : 0);\n return `translate(${point.x}, ${point.y}) rotate(${rotation})`;\n}\n\ntype IndicatorDatum = { angle: number };\nfunction indicatorTween(newAngle: number, radius: number, inner: boolean = false) {\n return function (d: IndicatorDatum) {\n const interpolate = d3Interpolate(d.angle, newAngle);\n d.angle = newAngle;\n return function (t: number) {\n return indicatorTranslate(interpolate(t), radius, inner);\n };\n };\n}\n\nfunction arcTween(startAngle: number, endAngle: number, arc: Arc<any, DefaultArcObject>) {\n return function (d: DefaultArcObject) {\n const startInterpolate = d3Interpolate(d.startAngle, startAngle);\n const endInterpolate = d3Interpolate(d.endAngle, endAngle);\n return function (t: number): string {\n d.startAngle = startInterpolate(t);\n d.endAngle = endInterpolate(t);\n return arc(d)!;\n };\n };\n}\n\nexport class Gauge extends SVGWidget {\n\n private _d3Arc: Arc<any, DefaultArcObject> = d3Arc()\n .innerRadius(85)\n .outerRadius(100)\n ;\n private _colorScale = scaleLinear<string, string>()\n .interpolate(d3InterpolateHcl)\n ;\n\n protected _usageArc: any;\n protected _meanArc: any;\n protected _freeArc: any;\n protected _indInner: any;\n protected _indOuter: any;\n protected _centerTextG: any;\n protected _centerText: any;\n protected _bottomText: any;\n protected _tooltipG: any;\n protected _mainTooltip: any;\n\n @publish(\"\", \"string\")\n title: publish<this, string>;\n\n @publish(\"\", \"string\")\n titleDescription: publish<this, string>;\n\n @publish(128, \"number\")\n maxDiameter: publish<this, number>;\n\n @publish(0, \"number\")\n value: publish<this, number>;\n\n @publish(\"\", \"string\")\n valueDescription: publish<this, string>;\n\n @publish(false, \"boolean\")\n showTick: publish<this, boolean>;\n\n @publish(0, \"number\")\n tickValue: publish<this, number>;\n\n @publish(\"\", \"string\")\n tickValueDescription: publish<this, string>;\n\n @publish(\"\", \"string\")\n tooltip: publish<this, string>;\n\n constructor() {\n super();\n }\n\n protected tip(d: any) {\n if (d === null || d.label === \"\") {\n this._tooltipG\n .transition()\n .style(\"opacity\", 0)\n .on(\"interrupt end\", () => {\n this._tooltipG\n .selectAll(\"g\")\n .remove()\n ;\n })\n ;\n } else {\n this._tooltipG\n .interrupt()\n .style(\"opacity\", 1)\n ;\n d.w = (this._centerText.datum() as any).w + 10;\n let lineType = \"horizontal\";\n let xOffset = 0;\n let yOffset = 5;\n let padding: number | undefined = 5;\n if (d.y >= 5 && d.y <= 25) {\n xOffset = d.x < 0 ? -d.w / 2 : d.w / 2;\n yOffset = 12.5;\n padding = undefined;\n lineType = \"vertical\";\n } else if (d.y > 25) {\n yOffset = 25;\n padding = 0;\n }\n const annotationtip = d3Annotation()\n .type(annotationCalloutElbow)\n .annotations([{\n data: d,\n dx: -d.x + xOffset,\n dy: -d.y + yOffset,\n color: \"black\",\n note: {\n label: d.label,\n lineType,\n padding,\n align: \"middle\"\n }\n }])\n .accessors({ x: (d2: any) => d2.x, y: (d2: any) => d2.y });\n this._tooltipG.call(annotationtip as any);\n }\n }\n\n protected calcSize(textElement, width: number, height: number): { width: number, height: number, scale: number } {\n const bb = (textElement.node() as any).getBBox();\n const widthTransform = width / bb.width;\n const heightTransform = height / bb.height;\n const scale = widthTransform < heightTransform ? widthTransform : heightTransform;\n return {\n width: bb.width,\n height: bb.height,\n scale\n };\n }\n\n protected updateText(textElement, x: number, y: number, w: number, h: number) {\n textElement\n .datum({ x, y, w, h })\n .attr(\"transform\", null)\n ;\n const size = this.calcSize(textElement, w, h);\n const x2 = x + w / 2 - size.width / 2 * size.scale;\n const y2 = y + h / 2 - size.height / 2 * size.scale;\n textElement.attr(\"transform\", `translate(${x2}, ${y2}) scale(${size.scale})`);\n }\n\n calcWidth(): number {\n return Math.min(this.width(), this.height(), this.maxDiameter());\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n\n element.on(\"click\", (d: Gauge) => {\n this.click(d);\n });\n\n this._usageArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._freeArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(1) })\n .style(\"fill\", \"lightGrey\")\n ;\n this._meanArc = element.append(\"path\").datum({ startAngle: value2Angle(0), endAngle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = this._d3Arc.centroid(d);\n this.tip({ x, y, label: this.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._mainTooltip = element.append(\"title\");\n\n const context = this;\n function appendIndicator() {\n return element.append(\"path\").datum({ angle: value2Angle(0) })\n .style(\"fill\", \"black\")\n .style(\"stroke\", \"black\")\n .attr(\"d\", \"M 0 0 l -3 -3 l 6 0 z\")\n .on(\"mousemove\", (d: any) => {\n const [x, y] = context._d3Arc.centroid(context._meanArc.datum() as any);\n context.tip({ x, y, label: context.tickValueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n context.tip(null);\n })\n ;\n }\n this._indInner = appendIndicator();\n this._indOuter = appendIndicator();\n this._centerText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .style(\"fill\", \"green\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: 0, label: this.valueDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n this._bottomText = element.append(\"text\")\n .attr(\"dy\", \".66em\")\n .on(\"mousemove\", (d: any) => {\n this.tip({ x: 0, y: d.y, label: this.titleDescription() });\n })\n .on(\"mouseout\", (d: any) => {\n this.tip(null);\n })\n ;\n\n this._tooltipG = element.append(\"g\")\n .attr(\"class\", \"annotation-tip\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n\n this._colorScale\n .domain(this.colorDomain())\n .range(this.colorRange())\n ;\n element\n .attr(\"title\", this.tooltip())\n .style(\"cursor\", this.click !== Gauge.prototype.click ? \"pointer\" : null)\n ;\n\n const innerRadius = this.calcWidth() / 3;\n const outerRadius = this.calcWidth() / 2 - 5;\n this._d3Arc\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n ;\n\n const val = this.value();\n const tickVal = this.tickValue();\n\n this._usageArc\n .style(\"fill\", this._colorScale(val))\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(0), value2Angle(val), this._d3Arc))\n ;\n\n this._freeArc\n .style(\"fill\", this.emptyColor())\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(val), value2Angle(1), this._d3Arc))\n ;\n\n this._meanArc\n .style(\"fill\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"d\", arcTween(value2Angle(tickVal - 0.001), value2Angle(tickVal + 0.001), this._d3Arc))\n ;\n\n this._indInner\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), innerRadius, true))\n ;\n\n this._indOuter\n .style(\"fill\", this.tickColor())\n .style(\"stroke\", this.tickColor())\n .style(\"visibility\", this.showTick() ? \"visible\" : \"hidden\")\n .transition()\n .duration(750)\n .attrTween(\"transform\", indicatorTween(value2Angle(tickVal), outerRadius))\n ;\n\n this._centerText\n .style(\"fill\", this._colorScale(val))\n .text(d3Format(\".0%\")(val))\n ;\n\n this._bottomText\n .style(\"fill\", this.click !== Gauge.prototype.click ? \"blue\" : \"black\")\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n tickColor(): string;\n tickColor(_: string): this;\n emptyColor(): string;\n emptyColor(_: string): this;\n colorDomain(): number[];\n colorDomain(_: number[]): this;\n colorRange(): string[];\n colorRange(_: string[]): this;\n}\n\nGauge.prototype.publish(\"colorRange\", [\"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"green\", \"orange\", \"red\", \"red\"], \"array\", \"Array of colors for the filled gauge portion. The fill color will be relative to the gauge value.\");\nGauge.prototype.publish(\"colorDomain\", [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], \"array\", \"This array augments the mapping of the value to the fill colorRange.\");\nGauge.prototype.publish(\"emptyColor\", \"lightgrey\", \"html-color\", \"Color of the empty portion of the gauge\");\nGauge.prototype.publish(\"tickColor\", \"black\", \"html-color\", \"Color of the tick\");\n","import { 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\n paletteID: (_?: string) => string | Pie;\n useClonedPalette: (_?: boolean) => boolean | Pie;\n outerText: (_?: boolean) => boolean | Pie;\n innerRadius: { (): number; (_: number): Pie; };\n innerRadius_exists: () => boolean;\n\n // I2DChart\n _palette;\n fillColor: (row: any[], column: string, value: number) => string;\n textColor: (row: any[], column: string, value: number) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipStyle: () => \"default\" | \"none\" | \"series-table\";\n tooltipTick: { (): boolean; (_: boolean): Pie; };\n tooltipTick_default: { (): boolean; (_: boolean): Pie; };\n tooltipOffset: { (): number; (_: number): Pie; };\n tooltipOffset_default: { (): number; (_: number): Pie; };\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\n\nPie.prototype._class += \" chart_Pie\";\nPie.prototype.implements(I2DChart.prototype);\nPie.prototype.implements(ITooltip.prototype);\nPie.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface Pie {\n showSeriesValue(): boolean;\n showSeriesValue(_: boolean): this;\n seriesValueFormat(): string;\n seriesValueFormat(_: string): this;\n showSeriesPercentage(): boolean;\n showSeriesPercentage(_: boolean): this;\n minOuterRadius(): number;\n minOuterRadius(_: number): this;\n startAngle(): number;\n startAngle(_: number): this;\n labelHeight(): number;\n labelHeight(_: number): this;\n seriesPercentageFormat(): string;\n seriesPercentageFormat(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n sortDataByValue(): \"none\" | \"ascending\" | \"descending\";\n sortDataByValue(_: \"none\" | \"ascending\" | \"descending\"): 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(\"sortDataByValue\", \"descending\", \"set\", \"Sort data by value\", [\"none\", \"ascending\", \"descending\"]);\n","import { Pie } from \"./Pie\";\n\nexport class HalfPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this._pos.x;\n let y = this._pos.y;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n y += (this._size.height / 4);\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(-Math.PI / 2)\n .endAngle(Math.PI / 2)\n ;\n }\n}\nHalfPie.prototype._class += \" chart_HalfPie\";\n","import { max, Palette } from \"@hpcc-js/common\";\nimport { XYAxis } from \"./XYAxis\";\n\nexport class Heat extends XYAxis {\n\n protected _domForeignObject;\n protected _domCanvas;\n protected _heat;\n\n constructor() {\n super();\n this\n .xAxisGuideLines_default(true)\n .yAxisGuideLines_default(true)\n ;\n }\n\n radius(r: number): this {\n this.radiusX(r);\n this.radiusY(r);\n return this;\n }\n\n layerEnter(host: XYAxis, element, duration: number = 250) {\n super.layerEnter(host, element, duration);\n this._domForeignObject = this.svg.insert(\"foreignObject\", `#${this.id() + \"_clippath\"}`);\n this._domCanvas = this._domForeignObject.append(\"xhtml:body\")\n .style(\"margin\", \"0px\")\n .style(\"padding\", \"0px\")\n .style(\"background-color\", \"transparent\")\n .append(\"canvas\")\n ;\n this._heat = simpleheat(this._domCanvas.node());\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n let width = this.width() - this.margin.left - this.margin.right;\n if (width < 0) width = 0;\n let height = this.height() - this.margin.top - this.margin.bottom;\n if (height < 0) height = 0;\n\n this._domForeignObject\n .attr(\"x\", this.margin.left)\n .attr(\"y\", this.margin.top)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n this._domCanvas\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n\n const data = host.orientation() === \"horizontal\" ?\n this.data().map(r => [host.dataPos(r[0]), host.valuePos(r[1]), r[2]]) :\n this.data().map(r => [host.valuePos(r[1]), host.dataPos(r[0]), r[2]])\n ;\n\n const maxWeight = 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\";\n\nimport \"../src/HexBin.css\";\n\nexport class HexBin extends XYAxis {\n static __inputs: InputField[] = [{\n id: \"x\",\n type: \"any\"\n }, {\n id: \"y\",\n type: \"number\"\n }];\n\n protected _hexbin;\n protected _dataMinWeight;\n protected _dataMaxWeight;\n constructor() {\n super();\n I2DAggrChart.call(this);\n this.tooltipValueFormat_default(\",.0f\");\n ITooltip.call(this);\n this.tooltipHTML(d => {\n const seriesExtent = d3Extent<{ label: any, value: any }>(d, d => d.label);\n const labelExtent = d3Extent<{ label: any, value: any }>(d, d => d.value);\n return this.tooltipFormat({\n series: seriesExtent[0] === seriesExtent[1] ? seriesExtent[0] : `${seriesExtent[0]} -> ${seriesExtent[1]}`,\n label: labelExtent[0] === labelExtent[1] ? labelExtent[0] : `${labelExtent[0]} -> ${labelExtent[1]}`,\n value: d.length\n });\n });\n this._hexbin = d3HexBin()\n .x(d => d.x)\n .y(d => d.y)\n ;\n this\n .xAxisGuideLines_default(false)\n .yAxisGuideLines_default(false)\n .xAxisType_default(\"linear\")\n ;\n }\n\n xPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.dataPos(d.label) : host.valuePos(d.value);\n }\n\n yPos(host: XYAxis, d) {\n return host.orientation() === \"horizontal\" ? host.valuePos(d.value) : host.dataPos(d.label);\n }\n\n layerUpdate(host: XYAxis, element, duration: number = 250) {\n super.layerUpdate(host, element, duration);\n const context = this;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._hexbin\n .extent([0, 0], [this.width(), this.height()])\n .radius(this.binSize())\n ;\n\n const flatData = this.flattenData();\n const dataPoints = flatData.map(d => {\n return {\n x: context.xPos(host, d),\n y: context.yPos(host, d),\n label: host.parseData(d.label),\n value: host.parseValue(d.value),\n origRow: d\n };\n });\n const hexBinPoints = this._hexbin(dataPoints);\n const minBinPoints = d3Min(hexBinPoints, function (d: any) { return d.length; });\n const maxBinPoints = d3Max(hexBinPoints, function (d: any) { return d.length; });\n this._dataMinWeight = minBinPoints;\n this._dataMaxWeight = maxBinPoints;\n\n const points = element.selectAll(\".hexagon\").data(hexBinPoints, function (d) { return d.i + \"_\" + d.j; });\n points.enter().append(\"path\")\n .attr(\"class\", \"hexagon\")\n .call(host._selection.enter.bind(host._selection))\n .on(\"click\", function (d: any) {\n const data = context.data();\n context.click(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any) {\n const data = context.data();\n context.dblclick(d.map(row => host.rowToObj(data[row.origRow.rowIdx])), context.columns()[1], host._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .merge(points).transition().duration(duration)\n .attr(\"d\", this._hexbin.hexagon())\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(1)\"; })\n .style(\"fill\", function (d) { return context._palette(d.length, minBinPoints, maxBinPoints); })\n ;\n points.exit().transition().duration(duration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.x + \",\" + d.y + \")scale(0)\"; })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n dblclick(row: object[], column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \", \" + selected);\n }\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n tooltipValueFormat: (_) => string;\n tooltipValueFormat_default: (_) => string;\n\n paletteID: { (): string; (_: string): HexBin; };\n useClonedPalette: { (): boolean; (_: boolean): HexBin; };\n binSize: { (): number; (_: number): HexBin; };\n}\nHexBin.prototype._class += \" chart_HexBin\";\nHexBin.prototype.implements(I2DAggrChart.prototype);\nHexBin.prototype.implements(ITooltip.prototype);\n\nHexBin.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for this widget\", HexBin.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nHexBin.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nHexBin.prototype.publish(\"binSize\", 20, \"number\", \"Bin radius\", null, { range: { min: 1, max: 300, step: 1 } });\n","import { Scatter } from \"./Scatter\";\n\nimport \"../src/Line.css\";\n\nexport class Line extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"linear\")\n ;\n }\n}\nLine.prototype._class += \" chart_Line\";\n","import { Pie } from \"./Pie\";\n\nexport class QuarterPie extends Pie {\n constructor() {\n super();\n }\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let x = this.orientation() === \"left\" ? 0 : this._size.width;\n let y = this._size.height;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n x -= this._size.width / 2;\n y -= this._size.height / 2;\n }\n this._element.attr(\"transform\", \"translate(\" + x + \",\" + y + \")scale(\" + this._widgetScale + \")\");\n }\n updateD3Pie() {\n super.updateD3Pie();\n this.d3Pie\n .startAngle(this.orientation() === \"left\" ? 0 : -Math.PI / 2)\n .endAngle(this.orientation() === \"left\" ? Math.PI / 2 : 0)\n ;\n }\n calcOuterRadius() {\n const maxTextWidth = this.textSize(this.data().map(d => this.getLabelText({ data: d })), \"Verdana\", 12).width;\n return Math.min(this._size.width - maxTextWidth - 10, this._size.height - 12 * 3) - 2;\n }\n}\nQuarterPie.prototype._class += \" chart_QuarterPie\";\n\nexport interface QuarterPie {\n orientation(): string;\n orientation(_: string): this;\n}\nQuarterPie.prototype.publish(\"orientation\", \"left\", \"set\", \"Determines the placement and start/end angle.\", [\"left\", \"right\"]);\n","import { SVGWidget } from \"@hpcc-js/common\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\n\nexport class QuartileCandlestick extends SVGWidget {\n protected _g;\n protected _leftLine;\n protected _rightLine;\n protected _midLine;\n protected _midOuterRect;\n protected _midInnerRect1;\n protected _midInnerRect2;\n protected _q0text;\n protected _q1text;\n protected _q2text;\n protected _q3text;\n protected _q4text;\n protected _q0val;\n protected _q1val;\n protected _q2val;\n protected _q3val;\n protected _q4val;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._g = element.append(\"g\");\n this._leftLine = this._g.append(\"rect\");\n this._rightLine = this._g.append(\"rect\");\n this._midLine = this._g.append(\"rect\");\n this._midOuterRect = this._g.append(\"rect\");\n this._midInnerRect1 = this._g.append(\"rect\");\n this._midInnerRect2 = this._g.append(\"rect\");\n this._q0text = this._g.append(\"text\");\n this._q1text = this._g.append(\"text\");\n this._q2text = this._g.append(\"text\");\n this._q3text = this._g.append(\"text\");\n this._q4text = this._g.append(\"text\");\n this._q0val = this._g.append(\"text\");\n this._q1val = this._g.append(\"text\");\n this._q2val = this._g.append(\"text\");\n this._q3val = this._g.append(\"text\");\n this._q4val = this._g.append(\"text\");\n }\n update(domNode, element) {\n super.update(domNode, element);\n const valueSize = (this.orientation() === \"horizontal\" ? this.width() : this.height()) - this.lineWidth();\n const domainSize = this.orientation() === \"horizontal\" ? this.height() : this.width();\n const scale = d3ScaleLinear()\n .domain([\n this.data()[0],\n this.data()[4]\n ])\n .range([\n this.edgePadding(),\n valueSize - this.edgePadding()\n ])\n ;\n const candleWidth = this.candleWidth_exists() ? this.candleWidth() : domainSize;\n const lineWidth = this.lineWidth();\n const lineColor = this.lineColor();\n const roundedCorners = this.roundedCorners();\n const q0x = this.edgePadding();\n let q1x = scale(this.data()[1]);\n let q2x = scale(this.data()[2]);\n let q3x = scale(this.data()[3]);\n const dataTop = -candleWidth / 2;\n const dataBottom = candleWidth / 2;\n const upperTextRotation = this.upperTextRotation();\n const lowerTextRotation = this.lowerTextRotation();\n const padding = this.textPadding();\n const labelFontSize = this.labelFontSize();\n const valueFontSize = this.valueFontSize();\n const sz = Math.max(labelFontSize, valueFontSize);\n const q4x = valueSize - q0x;\n if (sz > 0) {\n while (q1x - q0x < sz) {\n q1x += sz;\n }\n while (q2x - q1x < sz) {\n q2x += sz;\n }\n while (q3x - q2x < sz) {\n q3x += sz;\n }\n while (q4x - q3x < sz) {\n q3x -= sz;\n }\n while (q3x - q2x < sz) {\n q2x -= sz;\n }\n while (q2x - q1x < sz) {\n q1x -= sz;\n }\n }\n let transX = (-valueSize / 2) - (this.lineWidth() / 2);\n let transY = 0;\n let rotate = 0;\n const s = 1;\n let textScale = 1;\n let labelAnchor = \"start\";\n let valueAnchor = \"end\";\n if (this.orientation() === \"vertical\") {\n transX = 0;\n transY = valueSize / 2 + (this.lineWidth() / 2);\n rotate = -90;\n labelAnchor = \"end\";\n valueAnchor = \"start\";\n textScale = -1;\n }\n this._g\n .style(\"shape-rendering\", \"crispEdges\")\n .attr(\"transform\", `translate(${transX},${transY})rotate(${rotate})scale(${s})`)\n ;\n this._leftLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q0x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._rightLine\n .attr(\"class\", \"right-line\")\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", lineWidth)\n .attr(\"x\", q4x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midLine\n .attr(\"fill\", lineColor)\n .attr(\"height\", lineWidth)\n .attr(\"width\", q4x - q0x)\n .attr(\"x\", q0x)\n .attr(\"y\", -lineWidth / 2)\n ;\n this._midOuterRect\n .attr(\"fill\", lineColor)\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"x\", q1x)\n .attr(\"y\", dataTop)\n .attr(\"rx\", roundedCorners)\n .attr(\"ry\", roundedCorners)\n ;\n this._midInnerRect1\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q2x - (q1x + (lineWidth * 2)))\n .attr(\"x\", q1x + lineWidth)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._midInnerRect2\n .attr(\"fill\", this.innerRectColor())\n .attr(\"height\", candleWidth - (lineWidth * 2))\n .attr(\"width\", q3x - q2x - lineWidth)\n .attr(\"x\", q2x)\n .attr(\"y\", lineWidth - (candleWidth / 2))\n .attr(\"rx\", roundedCorners * 0.618)\n .attr(\"ry\", roundedCorners * 0.618)\n ;\n this._q0text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.columns()[0])\n ;\n this._q1text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[1])\n ;\n this._q2text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[2])\n ;\n this._q3text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.columns()[3])\n ;\n this._q4text\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showLabels() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataTop - padding})rotate(${upperTextRotation})scale(${textScale})`)\n .attr(\"font-size\", labelFontSize)\n .attr(\"text-anchor\", labelAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.columns()[4])\n ;\n this._q0val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q0x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"hanging\")\n .text(this.data()[0])\n ;\n this._q1val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q1x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[1])\n ;\n this._q2val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q2x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[2])\n ;\n this._q3val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q3x}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"middle\")\n .text(this.data()[3])\n ;\n this._q4val\n .attr(\"height\", candleWidth)\n .attr(\"width\", q3x - q1x)\n .attr(\"display\", this.showValues() ? null : \"none\")\n .attr(\"fill\", this.textColor())\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"transform\", `translate(${q4x + lineWidth}, ${dataBottom + padding})rotate(${lowerTextRotation})scale(${textScale})`)\n .attr(\"font-size\", valueFontSize)\n .attr(\"text-anchor\", valueAnchor)\n .attr(\"alignment-baseline\", \"baseline\")\n .text(this.data()[4])\n ;\n }\n}\nQuartileCandlestick.prototype._class += \" chart_QuartileCandlestick\";\n\nexport interface QuartileCandlestick {\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n textPadding(): number;\n textPadding(_: number): this;\n edgePadding(): number;\n edgePadding(_: number): this;\n candleWidth(): number;\n candleWidth(_: number): this;\n candleWidth_exists(): boolean;\n lineWidth(): number;\n lineWidth(_: number): this;\n lineColor(): string;\n lineColor(_: string): this;\n innerRectColor(): string;\n innerRectColor(_: string): this;\n lowerTextRotation(): number;\n lowerTextRotation(_: number): this;\n upperTextRotation(): number;\n upperTextRotation(_: number): this;\n roundedCorners(): number;\n roundedCorners(_: number): this;\n labelFontSize(): number;\n labelFontSize(_: number): this;\n valueFontSize(): number;\n valueFontSize(_: number): this;\n textColor(): string;\n textColor(_: string): this;\n showLabels(): boolean;\n showLabels(_: boolean): this;\n showValues(): boolean;\n showValues(_: boolean): this;\n}\nQuartileCandlestick.prototype.publish(\"textColor\", \"black\", \"html-color\", \"Color of label and value text\");\nQuartileCandlestick.prototype.publish(\"showLabels\", true, \"boolean\", \"If true, labels will be shown\");\nQuartileCandlestick.prototype.publish(\"showValues\", true, \"boolean\", \"If true, values will be shown\");\nQuartileCandlestick.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Determines layout\", [\"horizontal\", \"vertical\"]);\nQuartileCandlestick.prototype.publish(\"valueFontSize\", 12, \"number\", \"Font size of value text (pixels)\");\nQuartileCandlestick.prototype.publish(\"labelFontSize\", 12, \"number\", \"Font size of label text (pixels)\");\nQuartileCandlestick.prototype.publish(\"roundedCorners\", 8, \"number\", \"Radius of rounded rect corners (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineWidth\", 4, \"number\", \"Width of lines (pixels)\");\nQuartileCandlestick.prototype.publish(\"candleWidth\", null, \"number\", \"Height of outer rect (pixels)\", null, {optional: true});\nQuartileCandlestick.prototype.publish(\"textPadding\", 8, \"number\", \"Padding between outer rect and text (pixels)\");\nQuartileCandlestick.prototype.publish(\"edgePadding\", 30, \"number\", \"Padding between outer rect and left/right sides (pixels)\");\nQuartileCandlestick.prototype.publish(\"lineColor\", \"#333\", \"html-color\", \"Color of outer rect and lines\");\nQuartileCandlestick.prototype.publish(\"innerRectColor\", \"white\", \"html-color\", \"Color of the inner rects\");\nQuartileCandlestick.prototype.publish(\"upperTextRotation\", -60, \"number\", \"Rotation of label text (degrees)\");\nQuartileCandlestick.prototype.publish(\"lowerTextRotation\", -60, \"number\", \"Rotation of value text (degrees)\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Radar.css\";\nexport class Radar extends SVGWidget {\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n mapShape(shape) {\n switch (shape) {\n case \"rectangle\":\n return \"rect\";\n case \"circle\":\n return \"circle\";\n case \"cross\":\n return \"path\";\n default:\n }\n }\n setPointAttributes(element, x, y) {\n const shape = this.mapShape(this.pointShape());\n const context = this;\n switch (shape) {\n case \"rect\":\n element\n .attr(\"width\", context.pointSize())\n .attr(\"height\", context.pointSize())\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"circle\":\n element\n .attr(\"r\", context.pointSize() / 2)\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n .style(\"fill\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n case \"path\":\n const half_size = context.pointSize() / 2;\n element\n .attr(\"d\", function (d: any) {\n return \"M\" + (x - half_size) + \" \" + (y - half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y + half_size) + \" \" +\n \"M\" + (x - half_size) + \" \" + (y + half_size) + \" \" +\n \"L\" + (x + half_size) + \" \" + (y - half_size);\n })\n .style(\"stroke\", d => this.strokeColor(d.data, d.column, d.value))\n ;\n break;\n default:\n }\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this\n .tooltipHTML(d => {\n return this.tooltipFormat({ label: d.label, series: d.column, value: d.value });\n })\n ;\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n const context = this;\n const h = this.height();\n const w = this.width();\n const half_h = (h / 2);\n const half_w = (w / 2);\n\n const columns = this.columns();\n const data = this.data();\n const flatData = this.flattenData(columns, data).map((d: any, idx: number) => {\n d.shape = this.mapShape(this.pointShape());\n d.column = columns[d.colIdx];\n d.row = data[idx];\n return d;\n });\n const domain_points = [];\n const arc = this.degrees2radians(360 / this.data().length);\n const max_label_h = this.fontSize();\n let max_label_w = 0;\n flatData.filter(n => n.colIdx === 1).forEach(n => {\n const isize = super.textSize(n.label, `${this.fontFamily()}`, this.fontSize());\n if (max_label_w < isize.width) max_label_w = isize.width;\n });\n const radius = Math.min(half_h - max_label_h, half_w - max_label_w);\n const labels = element\n .selectAll(\".label\")\n .data(flatData.filter(n => n.colIdx === 1))\n ;\n const max_val = Math.max.apply(context, flatData.map(n => n.value));\n labels.enter()\n .append(\"text\")\n .attr(\"class\", \"label\")\n .attr(\"text-anchor\", \"middle\")\n .merge(labels)\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .each(function (this: SVGElement, n, i) {\n const xy = context.polar2cartesian(radius, (i * arc) - (Math.PI / 2));\n domain_points.push(xy.map(n => n * context.labelPaddingRatio()));\n let text_anchor = \"middle\";\n const _x = Math.round(xy[0]);\n text_anchor = _x > 0 ? \"start\" : text_anchor;\n text_anchor = _x < 0 ? \"end\" : text_anchor;\n d3Select(this)\n .attr(\"text-anchor\", text_anchor)\n .attr(\"x\", xy[0])\n .attr(\"y\", xy[1])\n ;\n })\n .text(n => n.label)\n ;\n labels.exit().remove();\n const domains = element\n .selectAll(\".domain\")\n .data(flatData.filter(n => n.colIdx === 1));\n domains.enter()\n .append(\"line\")\n .classed(\"domain\", true)\n .style(\"stroke\", \"#000\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"1px\")\n .merge(domains)\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", (n, i) => domain_points[i][0])\n .attr(\"y2\", (n, i) => domain_points[i][1]);\n domains.exit().remove();\n const value_guides = element\n .selectAll(\".value_guide\")\n .data(this.valueGuideRatios())\n ;\n value_guides.enter()\n .append(\"polygon\")\n .classed(\"value_guide\", true)\n .style(\"stroke\", \"grey\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(value_guides)\n .each(function (mult, i) {\n const poly_points = [];\n domain_points.forEach((domain_point, row_idx) => {\n poly_points.push([\n domain_point[0] * mult,\n domain_point[1] * mult\n ]);\n });\n d3Select(this)\n .attr(\"points\", poly_points.join(\" \"))\n .attr(\"stroke\", \"rgb(0, 0, 0)\")\n .attr(\"stroke-opacity\", 0.75)\n .attr(\"stroke-width\", 0.3)\n .attr(\"fill-opacity\", 0)\n ;\n })\n ;\n value_guides.exit().remove();\n\n const value_guide_text = element\n .selectAll(\".value_guide_text\")\n .data(this.valueGuideRatios())\n ;\n value_guide_text.enter()\n .append(\"text\")\n .attr(\"class\", \"value_guide_text\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"font-family\", this.fontFamily())\n .merge(value_guide_text)\n .attr(\"x\", 2)\n .attr(\"y\", mult => domain_points[0][1] * mult)\n .text((mult, i) => Math.round(mult * max_val))\n ;\n value_guides.exit().remove();\n\n // Polygon shapes ---\n const series_polygons = element\n .selectAll(\".area\")\n .data(columns.filter((n, i) => i > 0));\n series_polygons.enter()\n .append(\"polygon\")\n .attr(\"class\", \"area\")\n .style(\"stroke-opacity\", \"0.75\")\n .style(\"stroke-width\", \"0.3px\")\n .merge(series_polygons)\n .style(\"stroke\", d => this.strokeColor([], d, 0))\n .style(\"fill\", d => this.fillColor([], d, 0))\n .style(\"fill-opacity\", this.fillOpacity())\n .attr(\"points\", (d, col_idx) => {\n return domain_points.map((domain_point, row_idx) => {\n const val = data[row_idx][col_idx + 1];\n const val_mult = val === 0 ? 0 : val / max_val;\n return domain_point[0] * val_mult + \",\" + domain_point[1] * val_mult;\n }).join(\" \");\n });\n series_polygons.exit().remove();\n\n // Points ---\n const point_elm = element\n .selectAll(\".point\")\n .data(flatData);\n point_elm.enter()\n .append(\"g\")\n .attr(\"class\", \"point\")\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n const data_row = context.data()[d.rowIdx];\n const row_obj = context.rowToObj(data_row);\n const selected = context._selection.selected(this);\n context.click(row_obj, context.columns()[d.colIdx], selected);\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(context.data()[d.rowIdx]), d.column, context._selection.selected(this));\n })\n .each(function (d) {\n const element = d3Select(this);\n element.append(\"circle\")\n .attr(\"class\", \"pointSelection\")\n .attr(\"r\", context.pointSize())\n .call(context._selection.enter.bind(context._selection))\n ;\n element.append(context.mapShape(context.pointShape()))\n .attr(\"class\", \"pointShape\")\n ;\n })\n .merge(point_elm)\n .each(function (d) {\n const element = d3Select(this);\n const val_mult = d.value === 0 ? 0 : d.value / max_val;\n const x = domain_points[d.rowIdx][0] * val_mult;\n const y = domain_points[d.rowIdx][1] * val_mult;\n element.select(\".pointSelection\")\n .attr(\"cx\", x)\n .attr(\"cy\", y)\n ;\n\n const pointElement = element.select(\".pointShape\")\n .style(\"stroke\", context.strokeColor(d.row, d.column, d.value))\n .style(\"fill\", context.fillColor(d.row, d.column, d.value))\n ;\n context.setPointAttributes(pointElement, x, y);\n })\n ;\n point_elm.exit().remove();\n }\n\n polar2cartesian(r, theta) {\n return [r * Math.cos(theta), r * Math.sin(theta)];\n }\n cartesian2polar(x, y) {\n return [Math.atan2(y, x), Math.sqrt(x * x + y * y)];\n }\n degrees2radians(d) {\n return d / 57.295779513;\n }\n radians2degrees(r) {\n return r * 57.295779513;\n }\n point_in_polygon(point, vs) {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n const xi = vs[i][0];\n const yi = vs[i][1];\n const xj = vs[j][0];\n const yj = vs[j][1];\n const intersect = ((yi > y) !== (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n\n _selection;\n}\nRadar.prototype._class += \" chart_Radar\";\nRadar.prototype.implements(INDChart.prototype);\nRadar.prototype.implements(ITooltip.prototype);\nRadar.prototype.mixin(Utility.SimpleSelectionMixin);\n\nexport interface Radar {\n labelPaddingRatio(): number;\n labelPaddingRatio(_: number): this;\n fillOpacity(): number;\n fillOpacity(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n valueGuideRatios(): any;\n valueGuideRatios(_: any): this;\n valueGuideFontSize(): number;\n valueGuideFontSize(_: number): this;\n valueGuideFontFamily(): string;\n valueGuideFontFamily(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n pointShape(): string;\n pointShape(_: string): this;\n pointSize(): number;\n pointSize(_: number): this;\n}\n\nRadar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Radar.prototype._palette.switch());\nRadar.prototype.publish(\"pointShape\", \"cross\", \"set\", \"pointShape\", [\"circle\", \"rectangle\", \"cross\"]);\nRadar.prototype.publish(\"pointSize\", 6, \"number\", \"Point Size\", null, { range: { min: 1, step: 1, max: 200 } });\nRadar.prototype.publish(\"valueGuideRatios\", [0.2, 0.4, 0.6, 0.8, 1], \"array\", \"Array of values between 0 and 1 that are multiplied by the widget radius to produce guide lines\");\nRadar.prototype.publish(\"fillOpacity\", 0.66, \"number\", \"Opacity of the data polygon(s)\");\nRadar.prototype.publish(\"fontFamily\", \"\", \"string\", \"fontFamily\");\nRadar.prototype.publish(\"fontSize\", 16, \"number\", \"fontSize\");\nRadar.prototype.publish(\"labelPaddingRatio\", 0.9, \"number\", \"labelPaddingRatio\");\n","import { INDChart, ITooltip } from \"@hpcc-js/api\";\nimport { InputField, SVGWidget, Utility } from \"@hpcc-js/common\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/RadialBar.css\";\n\nexport class RadialBar extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"any\"\n }, {\n id: \"values\",\n type: \"number\"\n }];\n\n private _domainScale = d3ScaleBand();\n private _valueScale = d3ScaleLinear();\n private _d3Arc = d3Arc<[string, number]>()\n .startAngle(0)\n .endAngle((d) => this._valueScale(d[1]))\n ;\n\n protected _arcs;\n protected _axialAxis;\n protected _radialAxis;\n\n constructor() {\n super();\n INDChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n this.tooltipHTML(d => {\n return this.tooltipFormat({ label: d[0], value: d[1] });\n });\n\n this._radialAxis = element.append(\"g\")\n .attr(\"class\", \"r axis\")\n ;\n this._axialAxis = element.append(\"g\")\n .attr(\"class\", \"a axis\")\n ;\n this._arcs = element.append(\"g\")\n .attr(\"class\", \"data\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const maxValue = Math.max(this.valueDomainHigh_exists() ? this.valueDomainHigh() : 0, ...this.data().map(d => d[1]));\n\n this._valueScale\n .domain([0, maxValue])\n .range([0, this.radians(this.valueMaxAngle())])\n ;\n\n const ticks = this._valueScale.ticks(this.tickCount());\n\n const maxTextWidth = this.textSize(ticks.map(d => \"\" + d), \"Verdana\", 12).width;\n const chartRadius = (Math.min(this.width() - (10 + maxTextWidth) * 2, this.height() - (10 + 12) * 2) / 2);\n\n // Domain Axis (x-axis) ---\n const domainData = this.data().map(d => d[0]);\n\n this._domainScale\n .domain(domainData)\n .range([0, chartRadius])\n .padding(this.domainPadding())\n ;\n const domainPadding = this._domainScale.step() * this._domainScale.padding();\n\n const domainCircles = this._radialAxis.selectAll(\"circle\").data(domainData);\n domainCircles.enter().append(\"circle\")\n .attr(\"fill\", \"transparent\")\n .merge(domainCircles)\n .attr(\"r\", d => this._domainScale(d) + this._domainScale.step() - domainPadding / 2)\n ;\n domainCircles.exit().remove();\n\n const domainText = this._radialAxis.selectAll(\".arc-text\").data(domainData);\n domainText.enter().append(\"text\")\n .attr(\"class\", \"arc-text\")\n .attr(\"x\", -4)\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"text-anchor\", \"end\")\n .merge(domainText)\n .attr(\"y\", d => -this._domainScale(d) - this._domainScale.bandwidth() / 2)\n .text(d => d);\n domainText.exit().remove();\n\n // Value Axis (y-axis) ---\n const valueLines = this._axialAxis.selectAll(\"line\").data(ticks);\n valueLines.enter().append(\"line\")\n .merge(valueLines)\n .attr(\"x2\", d => chartRadius * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y2\", d => chartRadius * Math.sin(this._valueScale(d) - this.radians(90)))\n ;\n valueLines.exit().remove();\n\n const valueText = this._axialAxis.selectAll(\"text\").data(ticks);\n valueText.enter().append(\"text\")\n .style(\"dominant-baseline\", \"central\")\n .merge(valueText)\n .attr(\"x\", d => (chartRadius + 10) * Math.cos(this._valueScale(d) - this.radians(90)))\n .attr(\"y\", d => (chartRadius + 10) * Math.sin(this._valueScale(d) - this.radians(90)))\n .style(\"text-anchor\", d => {\n const middleZone = 20;\n const angle = this.degrees(this._valueScale(d));\n if (angle >= 0 && angle <= middleZone ||\n angle >= 180 - middleZone && angle <= 180 + middleZone ||\n angle >= 360 - middleZone && angle <= 360\n ) {\n return \"middle\";\n } else if (angle >= 180 && angle <= 360) {\n return \"end\";\n } else {\n return null;\n }\n })\n .text(d => d)\n ;\n valueText.exit().remove();\n\n const valueColumn = this.columns().length > 1 ? this.columns()[1] : \"\";\n // Data (arcs) ---\n this._d3Arc\n .innerRadius(d => this._domainScale(d[0]))\n .outerRadius(d => this._domainScale(d[0]) + this._domainScale.bandwidth())\n ;\n const arcs = this._arcs.selectAll(\"path\").data(this.data(), d => d[0]);\n arcs.enter().append(\"path\")\n .attr(\"class\", \"arc\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"mouseout.tooltip\", this.tooltip.hide)\n .on(\"mousemove.tooltip\", this.tooltip.show)\n .on(\"click\", function (d: any, _idx) {\n context.click(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .on(\"dblclick\", function (d: any, _idx) {\n context.dblclick(context.rowToObj(d), valueColumn, context._selection.selected(this));\n })\n .merge(arcs)\n .style(\"fill\", (d, i) => this.fillColor(d, d[0], d[1]))\n .transition()\n .delay((d, i) => i * this.transitionDelay())\n .duration(this.transitionDuration())\n .attrTween(\"d\", (d, indx) => {\n const interpolate = d3Interpolate(d._current || 0, d[1]);\n d._current = d[1];\n return t => this._d3Arc([d[0], interpolate(t)], indx);\n })\n ;\n arcs.exit().remove();\n }\n\n degrees(radians) {\n return radians * 180 / Math.PI;\n }\n\n radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n // INDChart\n _palette;\n fillColor: (row, column, value) => string;\n strokeColor: (row, column, value) => string;\n textColor: (row, column, value) => string;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip\n tooltip;\n tooltipHTML: (_) => string;\n tooltipFormat: (_) => string;\n _selection;\n}\nRadialBar.prototype._class += \" chart_RadialBar\";\nRadialBar.prototype.implements(INDChart.prototype);\nRadialBar.prototype.implements(ITooltip.prototype);\nRadialBar.prototype.mixin(Utility.SimpleSelectionMixin);\nexport interface RadialBar {\n paletteID(): string;\n paletteID(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n domainPadding(): number;\n domainPadding(_: number): this;\n valueMaxAngle(): number;\n valueMaxAngle(_: number): this;\n valueDomainHigh(): number;\n valueDomainHigh(_: number): this;\n valueDomainHigh_exists(): boolean;\n transitionDelay(): number;\n transitionDelay(_: number): this;\n transitionDuration(): number;\n transitionDuration(_: number): this;\n}\nRadialBar.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", RadialBar.prototype._palette.switch());\nRadialBar.prototype.publish(\"tickCount\", 10, \"number\", \"Number of ticks to display\");\nRadialBar.prototype.publish(\"domainPadding\", 0.25, \"number\", \"Padding between chart edge and container edge (0..1)\");\nRadialBar.prototype.publish(\"valueMaxAngle\", 270, \"number\", \"Maximum angular length of a bar (degrees)\");\nRadialBar.prototype.publish(\"valueDomainHigh\", null, \"number\", \"Value domain high\", undefined, { optional: true });\nRadialBar.prototype.publish(\"transitionDelay\", 100, \"number\", \"Delay between the start of each row animation (ms)\");\nRadialBar.prototype.publish(\"transitionDuration\", 750, \"number\", \"Duration of a row's animation (ms)\");\n","import { format as d3Format, HTMLWidget, Palette } from \"@hpcc-js/common\";\nimport { QuartileCandlestick } from \"./QuartileCandlestick\";\nimport { Scatter } from \"./Scatter\";\n\nconst rainbow = Palette.rainbow(\"Blues\");\nconst palette = Palette.ordinal(\"Quartile\", [rainbow(100, 0, 100), rainbow(50, 0, 100), rainbow(50, 0, 100), rainbow(75, 0, 100)]);\npalette(\"Std. Dev.\");\npalette(\"MinMax\");\npalette(\"25%\");\npalette(\"50%\");\n\ntype 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}\nStatChart.prototype._class += \" chart_Stat\";\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\";\n\nexport class Step extends Scatter {\n constructor() {\n super();\n\n this\n .interpolate_default(\"step\")\n ;\n }\n}\nStep.prototype._class += \" chart_Step\";\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Summary.css\";\n\nconst TEXT = \"text\";\nconst HTML = \"html\";\n\nexport class Summary extends HTMLWidget {\n protected _playIntervalIdx = 0;\n protected _mainDiv;\n protected _headerDiv;\n protected _textDiv;\n\n constructor() {\n super();\n this._tag = \"div\";\n\n this._drawStartPos = \"center\";\n this.playInterval(this.playInterval());\n }\n\n lookupFieldIdx(propID, defaultIdx?: number) {\n let retVal = defaultIdx;\n if (this[propID + \"_exists\"]()) {\n retVal = this.columns().indexOf(this[propID]());\n if (retVal < 0) {\n return undefined;\n }\n }\n return retVal;\n }\n\n lookupFieldText(propID, defaultIdx?: number) {\n if (this[propID + \"_exists\"]()) {\n return this[propID]();\n }\n if (defaultIdx !== undefined) {\n return this.columns()[defaultIdx] || \"\";\n }\n return \"\";\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n summaryData() {\n let labelFieldIdx; // undefined\n if (!this.hideLabel()) {\n labelFieldIdx = this.lookupFieldIdx(\"labelColumn\", 0);\n }\n const iconFieldIdx = this.lookupFieldIdx(\"iconColumn\");\n const valueFieldIdx = this.lookupFieldIdx(\"valueColumn\", 1);\n let moreIconIdx; // undefined\n let moreTextIdx; // undefined\n if (!this.hideMore()) {\n moreIconIdx = this.lookupFieldIdx(\"moreIconColumn\");\n moreTextIdx = this.lookupFieldIdx(\"moreTextColumn\");\n }\n const colorFillIdx = this.lookupFieldIdx(\"colorFillColumn\");\n const colorStrokeIdx = this.lookupFieldIdx(\"colorStrokeColumn\");\n return this.formattedData().map(function (row) {\n return {\n icon: iconFieldIdx === undefined ? this.icon() : row[iconFieldIdx],\n label: labelFieldIdx === undefined ? \"\" : row[labelFieldIdx],\n value: row[valueFieldIdx],\n moreIcon: moreIconIdx === undefined ? (this.hideMore() ? \"\" : this.moreIcon()) : row[moreIconIdx],\n moreText: moreTextIdx === undefined ? (this.hideMore() ? \"\" : this.moreText()) : row[moreTextIdx],\n fill: colorFillIdx === undefined ? this.colorFill() : row[colorFillIdx],\n stroke: colorStrokeIdx === undefined ? this.colorStroke() : row[colorStrokeIdx]\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._mainDiv = element.append(\"div\")\n ;\n const context = this;\n this._headerDiv = this._mainDiv.append(\"h2\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"valueColumn\", 1), true);\n })\n ;\n this._textDiv = this._mainDiv.append(\"div\")\n .attr(\"class\", \"text\")\n .on(\"click\", function () {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n .on(\"dblclick\", function () {\n context.dblclick(context.rowToObj(context.currentRow()), context.lookupFieldText(\"labelColumn\", 0), true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this.data().length) {\n\n }\n const data = this.summaryData();\n if (this._playIntervalIdx >= data.length) {\n this._playIntervalIdx = 0;\n }\n const row: any = this._playIntervalIdx < data.length ? data[this._playIntervalIdx] : [\"\", \"\"];\n element\n .style(\"width\", this.fixedSize() ? this.minWidth_exists() ? this.minWidth() + \"px\" : null : \"100%\")\n .style(\"height\", this.fixedSize() ? this.minHeight_exists() ? this.minHeight() + \"px\" : null : \"100%\")\n ;\n this._mainDiv\n .attr(\"class\", \"content bgIcon \" + row.icon)\n .transition()\n .style(\"background-color\", row.fill)\n .style(\"color\", row.stroke)\n .style(\"min-width\", this.minWidth_exists() ? this.minWidth() + \"px\" : null)\n .style(\"min-height\", this.minHeight_exists() ? this.minHeight() + \"px\" : null)\n .style(\"font-size\", this.iconFontSize() + \"px\")\n ;\n this._headerDiv\n .transition()\n .style(\"color\", row.stroke)\n .style(\"font-size\", this.headerFontSize() + \"px\")\n [this.valueHTML() ? HTML : TEXT](row.value)\n ;\n this._textDiv\n .style(\"font-size\", this.textFontSize() + \"px\")\n [this.labelHTML() ? HTML : TEXT](row.label)\n ;\n const context = this;\n const moreDivs = this._mainDiv.selectAll(\".more\").data([row]);\n const moreDivsEnter = moreDivs.enter()\n .append(\"div\")\n .attr(\"class\", \"more\")\n .on(\"click\", function (d) {\n context.click(context.rowToObj(context.currentRow()), context.lookupFieldText(\"moreTextColumn\") || \"more\", true);\n })\n .each(function () {\n const element2 = d3Select(this);\n element2.append(\"i\");\n element2.append(\"span\");\n })\n ;\n const moreDivsUpdate = moreDivsEnter\n .merge(moreDivs)\n .style(\"display\", this.hideMoreWrapper() ? \"none\" : null)\n .style(\"font-size\", this.moreFontSize() + \"px\")\n .style(\"height\", this.moreWrapperHeight_exists() ? this.moreWrapperHeight() + \"px\" : null)\n .transition()\n .style(\"background-color\", d3Rgb(row.fill).darker(0.75).toString())\n ;\n moreDivsUpdate\n .select(\"i\")\n .attr(\"class\", function (d) {\n return \"fa \" + d.moreIcon;\n })\n ;\n if (this.moreTextHTML()) {\n moreDivsUpdate.select(\"span\")\n .each(function (d) {\n this.innerHTML = d.moreText;\n });\n } else {\n moreDivsUpdate.select(\"span\").text(d => d.moreText);\n }\n moreDivs.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n}\nSummary.prototype._class += \" chart_Summary\";\nSummary.prototype.implements(I2DChart.prototype);\n\nexport interface Summary {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n\n headerFontSize(): number;\n headerFontSize(_: number): this;\n textFontSize(): number;\n textFontSize(_: number): this;\n moreFontSize(): number;\n moreFontSize(_: number): this;\n iconFontSize(): number;\n iconFontSize(_: number): this;\n\n hideLabel(): boolean;\n hideLabel(_: boolean): this;\n hideLabel_exists(): boolean;\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelHTML(): boolean;\n labelHTML(_: boolean): this;\n labelHTML_exists(): boolean;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueHTML(): boolean;\n valueHTML(_: boolean): this;\n valueHTML_exists(): boolean;\n\n hideMore(): boolean;\n hideMore(_: boolean): this;\n hideMore_exists(): boolean;\n hideMoreWrapper(): boolean;\n hideMoreWrapper(_: boolean): this;\n moreWrapperHeight(): number;\n moreWrapperHeight(_: number): this;\n moreWrapperHeight_exists(): boolean;\n moreIconColumn(): string;\n moreIconColumn(_: string): this;\n moreIconColumn_exists(): boolean;\n moreIcon(): string;\n moreIcon(_: string): this;\n moreIcon_exists(): boolean;\n moreTextColumn(): string;\n moreTextColumn(_: string): this;\n moreTextColumn_exists(): boolean;\n moreText(): string;\n moreText(_: string): this;\n moreText_exists(): boolean;\n moreTextHTML(): boolean;\n moreTextHTML(_: boolean): this;\n moreTextHTML_exists(): boolean;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n\n // I2DChart ---\n click(row, column, selected);\n dblclick(row, column, selected);\n}\n\nSummary.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummary.prototype.publish(\"headerFontSize\", null, \"number\", \"headerFontSize\");\nSummary.prototype.publish(\"textFontSize\", null, \"number\", \"textFontSize\");\nSummary.prototype.publish(\"moreFontSize\", null, \"number\", \"moreFontSize\");\nSummary.prototype.publish(\"iconFontSize\", null, \"number\", \"iconFontSize\");\n\nSummary.prototype.publish(\"hideLabel\", false, \"boolean\", \"Hide label column\");\nSummary.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideLabel() });\nSummary.prototype.publish(\"labelHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideLabel() });\n\nSummary.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"valueHTML\", false, \"boolean\", \"Allow HTML\");\n\nSummary.prototype.publish(\"hideMore\", false, \"boolean\", \"Hide More Information\");\nSummary.prototype.publish(\"hideMoreWrapper\", false, \"boolean\", \"Hide More Information Wrapper\");\nSummary.prototype.publish(\"moreWrapperHeight\", null, \"number\", \"Height of the 'more' text wrapper (pixels)\");\nSummary.prototype.publish(\"moreIconColumn\", null, \"set\", \"Select More Icon Column\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreIcon\", \"fa-info-circle\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.hideMore() || w.moreIconColumn() });\nSummary.prototype.publish(\"moreTextColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true, disable: (w) => w.hideMore() });\nSummary.prototype.publish(\"moreText\", \"More Info\", \"string\", \"More text\", null, { disable: (w) => w.hideMore() || w.moreTextColumn() });\nSummary.prototype.publish(\"moreTextHTML\", false, \"boolean\", \"Allow HTML\", null, { disable: (w) => w.hideMore() });\n\nSummary.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorFill\", \"#3498db\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorFillColumn() });\nSummary.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for color\", function () { return this.columns(); }, { optional: true });\nSummary.prototype.publish(\"colorStroke\", \"#ffffff\", \"html-color\", \"Fill Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummary.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummary.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummary.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummary.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nconst playInterval = Summary.prototype.playInterval;\nSummary.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","import { I2DChart } from \"@hpcc-js/api\";\nimport { CanvasWidget, Utility } from \"@hpcc-js/common\";\n\nexport class SummaryC extends CanvasWidget {\n protected _playIntervalIdx = 0;\n\n constructor() {\n super();\n I2DChart.call(this);\n this.playInterval(this.playInterval());\n }\n\n currentRow() {\n return this.data()[this._playIntervalIdx];\n }\n\n enter(domNode, element) {\n super.enter.apply(this, arguments);\n const { width, height } = this.size();\n domNode.height = height;\n domNode.width = width;\n }\n\n update(domNode, element) {\n super.update.apply(this, arguments);\n const context = this;\n if (this._playIntervalIdx >= this.data().length) {\n this._playIntervalIdx = 0;\n }\n const size = this.size();\n const minDimension = Math.min(size.width, size.height);\n const sizeRatio = this.fontSizeRatio();\n const labelIdx = this.columns().indexOf(this.labelColumn());\n const valueIdx = this.columns().indexOf(this.valueColumn());\n const bgColorIdx = this.columns().indexOf(this.colorFillColumn());\n const fontColorIdx = this.columns().indexOf(this.colorStrokeColumn());\n const iconIdx = this.columns().indexOf(this.iconColumn());\n const icon = iconIdx !== -1 ? this.currentRow()[iconIdx] : this.icon();\n const label = labelIdx !== -1 ? this.currentRow()[labelIdx] : \"\";\n const value = valueIdx !== -1 ? this.currentRow()[valueIdx] : \"\";\n const bgColor = bgColorIdx !== -1 ? this.currentRow()[bgColorIdx] : this.colorFill();\n const fontColor = fontColorIdx !== -1 ? this.currentRow()[fontColorIdx] : this.colorStroke();\n\n let mainFontSize = size.height * (sizeRatio - this.paddingSizeRatio());\n const subFontSize = size.height * (1 - sizeRatio - this.paddingSizeRatio());\n const iconSize = size.height * (this.iconSizeRatio() - this.paddingSizeRatio());\n const p = minDimension * this.paddingSizeRatio();\n const ctx = domNode.getContext(\"2d\");\n\n ctx.clearRect(0, 0, size.width, size.height);\n\n const fontFamily = context.fontFamily();\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size.width, size.height);\n\n ctx.globalAlpha = this.iconOpacity();\n drawIcon(Utility.faChar(icon), iconSize, context.iconAnchor());\n\n ctx.globalAlpha = this.valueOpacity();\n mainFontSize = drawText(value, p, mainFontSize, context.valueAnchor());\n\n ctx.globalAlpha = this.labelOpacity();\n drawText(label, mainFontSize + p, subFontSize, context.labelAnchor());\n\n function drawText(text, y, fontSize, anchorMode) {\n ctx.textBaseline = \"top\";\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n fontSize = fontSize * fontSizeMult;\n ctx.font = `${fontSize}px ${fontFamily}`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n ctx.fillText(text, x, y);\n return fontSize;\n }\n\n function drawIcon(text, fontSize, anchorMode) {\n if (typeof text === \"undefined\") return;\n ctx.textBaseline = context.iconBaseline();\n ctx.font = `${fontSize}px FontAwesome`;\n ctx.fillStyle = fontColor;\n let measurement = ctx.measureText(text);\n if (measurement.width > (size.width - (p * 2))) {\n const fontSizeMult = (size.width - (p * 2)) / measurement.width;\n ctx.font = `${fontSize * fontSizeMult}px FontAwesome`;\n measurement = ctx.measureText(text);\n }\n const x = getTextOffsetX(measurement.width, anchorMode);\n const y = getTextOffsetY(context.iconBaseline());\n ctx.fillText(text, x, y);\n }\n\n function getTextOffsetX(width, anchorMode) {\n switch (anchorMode) {\n case \"start\":\n return p;\n case \"middle\":\n return (size.width / 2) - (width / 2);\n case \"end\":\n return size.width - width - p;\n }\n }\n function getTextOffsetY(anchorMode) {\n switch (anchorMode) {\n case \"top\":\n return p;\n case \"middle\":\n return size.height / 2;\n case \"bottom\":\n return size.height - p;\n }\n }\n }\n}\nSummaryC.prototype._class += \" chart_SummaryC\";\nSummaryC.prototype.implements(I2DChart.prototype);\n\nexport interface SummaryC {\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColumn_exists(): boolean;\n icon(): string;\n icon(_: string): this;\n icon_exists(): boolean;\n iconOpacity(): number;\n iconOpacity(_: number): this;\n\n fontFamily(): string;\n fontFamily(_: string): this;\n\n labelColumn(): string;\n labelColumn(_: string): this;\n labelColumn_exists(): boolean;\n labelOpacity(): number;\n labelOpacity(_: number): this;\n\n valueColumn(): string;\n valueColumn(_: string): this;\n valueColumn_exists(): boolean;\n valueOpacity(): number;\n valueOpacity(_: number): this;\n\n fontSizeRatio(): number;\n fontSizeRatio(_: number): this;\n\n colorFillColumn(): string;\n colorFillColumn(_: string): this;\n colorFillColumn_exists(): boolean;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n colorStrokeColumn(): string;\n colorStrokeColumn(_: string): this;\n colorStrokeColumn_exists(): boolean;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_exists(): boolean;\n\n fixedSize(): boolean;\n fixedSize(_: boolean): this;\n fixedSize_exists(): boolean;\n minWidth(): number;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n playInterval(): number;\n playInterval(_: number): this;\n playInterval_exists(): boolean;\n paddingSizeRatio(): number;\n paddingSizeRatio(_: number): this;\n iconSizeRatio(): number;\n iconSizeRatio(_: number): this;\n\n iconAnchor(): \"start\" | \"middle\" | \"end\";\n iconAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n labelAnchor(): \"start\" | \"middle\" | \"end\";\n labelAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n valueAnchor(): \"start\" | \"middle\" | \"end\";\n valueAnchor(_: \"start\" | \"middle\" | \"end\"): this;\n\n iconBaseline(): \"top\" | \"middle\" | \"bottom\";\n iconBaseline(_: \"top\" | \"middle\" | \"bottom\"): this;\n}\n\nSummaryC.prototype.publish(\"iconBaseline\", \"bottom\", \"string\", \"Text baseline for the icon\", [\"top\", \"middle\", \"bottom\"]);\nSummaryC.prototype.publish(\"iconAnchor\", \"end\", \"set\", \"Anchors the icon either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"valueAnchor\", \"start\", \"set\", \"Anchors the value either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"labelAnchor\", \"start\", \"set\", \"Anchors the label either at the start, middle, or end of the summary\", [\"start\", \"middle\", \"end\"]);\nSummaryC.prototype.publish(\"iconColumn\", null, \"set\", \"Select Icon Column\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"icon\", \"fa-briefcase\", \"string\", \"FA Char icon class\", null, { disable: (w) => w.iconColumn() });\n\nSummaryC.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Font Family\");\n\nSummaryC.prototype.publish(\"labelColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\n\nSummaryC.prototype.publish(\"colorFillColumn\", null, \"set\", \"Column for background color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorFill\", \"#0097e6\", \"html-color\", \"Background Color\", null, { disable: (w) => w.colorFillColumn() });\nSummaryC.prototype.publish(\"colorStrokeColumn\", null, \"set\", \"Column for font color\", function () { return this.columns(); }, { optional: true });\nSummaryC.prototype.publish(\"colorStroke\", \"#2f3640\", \"html-color\", \"Font Color\", null, { disable: (w) => w.colorStrokeColumn() });\n\nSummaryC.prototype.publish(\"fixedSize\", true, \"boolean\", \"Fix Size to Min Width/Height\");\nSummaryC.prototype.publish(\"minWidth\", 225, \"number\", \"Minimum Width\");\nSummaryC.prototype.publish(\"minHeight\", 150, \"number\", \"Minimum Height\");\nSummaryC.prototype.publish(\"playInterval\", null, \"number\", \"Play Interval\", null, { optional: true });\n\nSummaryC.prototype.publish(\"fontSizeRatio\", 0.618, \"number\", \"Ratio between widget height and value font size\");\nSummaryC.prototype.publish(\"valueOpacity\", 1, \"number\", \"Opacity of value text (0..1)\");\nSummaryC.prototype.publish(\"labelOpacity\", 0.9, \"number\", \"Opacity of label text (0..1)\");\nSummaryC.prototype.publish(\"iconOpacity\", 0.3, \"number\", \"Opacity of icon text (0..1)\");\n\nSummaryC.prototype.publish(\"paddingSizeRatio\", 0.1, \"number\", \"Ratio of the smallest dimension for edge padding (0..1)\");\nSummaryC.prototype.publish(\"iconSizeRatio\", 0.9, \"number\", \"Ratio of the height for icon size (0..1)\");\n\nconst playInterval = SummaryC.prototype.playInterval;\nSummaryC.prototype.playInterval = function (_?: number): number | any {\n const retVal = playInterval.apply(this, arguments);\n if (arguments.length) {\n if (this._playIntervalHandle) {\n clearInterval(this._playIntervalHandle);\n }\n const context = this;\n if (_) {\n this._playIntervalHandle = setInterval(function () {\n context._playIntervalIdx++;\n if (context._renderCount && context.data().length) {\n context.render();\n }\n }, _);\n }\n }\n return retVal;\n};\n","// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n","import { I2DChart, ITooltip } from \"@hpcc-js/api\";\nimport { d3Event, InputField, SVGWidget, Utility, zoom as d3Zoom } from \"@hpcc-js/common\";\nimport { extent as d3Extent } from \"d3-array\";\nimport { scaleLinear as d3ScaleLinear, scaleLog as d3ScaleLog, scalePow as d3ScalePow, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { d3Cloud } from \"./D3Cloud\";\n\nimport \"../src/WordCloud.css\";\n\nexport class WordCloud extends SVGWidget {\n static __inputs: InputField[] = [{\n id: \"label\",\n type: \"string\"\n }, {\n id: \"value\",\n type: \"number\"\n }];\n\n private _prevOffsetX;\n private _prevOffsetY;\n private _prevZoom;\n private _root;\n private _canvas;\n private _d3Cloud;\n private _d3Zoom;\n\n constructor() {\n super();\n I2DChart.call(this);\n ITooltip.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._prevOffsetX = this.offsetX();\n this._prevOffsetY = this.offsetY();\n this._prevZoom = this.zoom();\n }\n\n calcData() {\n return this.data().map(row => {\n return {\n __viz_label: row[0],\n __viz_weight: row[1],\n __viz_row: row\n };\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._selection.widgetElement(element);\n\n this._root = element.append(\"g\");\n this._canvas = document.createElement(\"canvas\");\n\n const context = this;\n this._d3Zoom = d3Zoom()\n .scaleExtent([0.1, 10])\n ;\n this._d3Zoom\n .on(\"zoom\", function (evt) {\n const event = d3Event();\n if (event && event.transform) {\n context.zoomed(context._d3Zoom, [event.transform.x, event.transform.y], event.transform.k);\n }\n })\n ;\n element.call(this._d3Zoom);\n\n this\n .tooltipHTML(function (d) {\n const columns = context.columns();\n const series = columns && columns.length ? columns[0] : \"Word\";\n return context.tooltipFormat({ label: d.__viz_label, series, value: d.__viz_weight });\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this._d3Cloud = d3Cloud()\n .canvas(() => this._canvas)\n ;\n\n this.zoomed(this, [this.offsetX(), this.offsetY()], this.zoom());\n\n const data = this.calcData();\n const context = this;\n const extent = d3Extent(data, function (d: any) { return d.__viz_weight; });\n let scaler;\n switch (this.scaleMode()) {\n case \"log\":\n scaler = d3ScaleLog;\n break;\n case \"sqrt\":\n scaler = d3ScaleSqrt;\n break;\n case \"pow\":\n scaler = d3ScalePow;\n break;\n case \"linear\":\n default:\n scaler = d3ScaleLinear;\n break;\n }\n const scale = scaler().domain(extent).range([this.fontSizeFrom(), this.fontSizeTo()]);\n const angleDomain = d3ScaleLinear().domain([0, context.angleCount() - 1]).range([context.angleFrom(), context.angleTo()]);\n\n this._d3Cloud.stop()\n .size([this.width(), this.height()])\n .words(data)\n .font(this.fontFamily())\n .padding(this.padding())\n .spiral(this.spiral())\n .text(function (d) {\n return d.__viz_label.trim();\n })\n .fontSize(function (d) {\n return scale(d.__viz_weight);\n })\n .rotate((d, i) => angleDomain(i % context.angleCount()))\n .on(\"word\", w => {\n })\n .on(\"end\", draw)\n .start()\n ;\n\n function draw(data, bounds) {\n const text = context._root.selectAll(\"text\")\n .data(data, function (d) { return d.__viz_label ? d.__viz_label.toLowerCase() : \"\"; })\n ;\n text.enter().append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .call(context._selection.enter.bind(context._selection))\n .text(function (d) { return d.__viz_label; })\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.__viz_row), context.columns()[1], context._selection.selected(this));\n })\n .on(\"mouseout.tooltip\", context.tooltip.hide)\n .on(\"mousemove.tooltip\", context.tooltip.show)\n .style(\"opacity\", 1e-6)\n .merge(text)\n .style(\"font-size\", function (d) { return scale(d.__viz_weight) + \"px\"; })\n .style(\"font-family\", context.fontFamily())\n .transition().duration(1000)\n .attr(\"transform\", function (d) { return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\"; })\n .style(\"fill\", function (d) { return context._palette(d.__viz_label ? d.__viz_label.toLowerCase() : \"\"); })\n .style(\"opacity\", 1)\n ;\n text.exit().transition().duration(1000)\n .style(\"opacity\", 1e-4)\n .remove()\n ;\n }\n }\n\n zoomed(source, translate, scale) {\n if (translate[0] !== this._prevOffsetX || translate[1] !== this._prevOffsetY || scale !== this._prevZoom) {\n this._root.attr(\"transform\", translate);\n switch (source) {\n case this:\n /*\n this._d3Zoom\n .scale(scale)\n .translate(translate)\n ;\n */\n break;\n case this._d3Zoom:\n this.offsetX(translate[0]);\n this.offsetY(translate[1]);\n this.zoom(scale);\n break;\n }\n this._prevOffsetX = translate[0];\n this._prevOffsetY = translate[1];\n this._prevZoom = scale;\n }\n }\n\n paletteID: { (): string; (_: string): WordCloud };\n paletteID_exists: () => boolean;\n useClonedPalette: { (): boolean; (_: boolean): WordCloud };\n useClonedPalette_exists: () => boolean;\n fontFamily: { (): string; (_: string): WordCloud };\n fontFamily_exists: () => boolean;\n fontSizeFrom: { (): number; (_: number): WordCloud };\n fontSizeFrom_exists: () => boolean;\n fontSizeTo: { (): number; (_: number): WordCloud };\n fontSizeTo_exists: () => boolean;\n angleFrom: { (): number; (_: number): WordCloud };\n angleFrom_exists: () => boolean;\n angleTo: { (): number; (_: number): WordCloud };\n angleTo_exists: () => boolean;\n angleCount: { (): number; (_: number): WordCloud };\n angleCount_exists: () => boolean;\n padding: { (): number; (_: number): WordCloud };\n padding_exists: () => boolean;\n scaleMode: { (): string; (_: string): WordCloud };\n scaleMode_exists: () => boolean;\n spiral: { (): string; (_: string): WordCloud };\n spiral_exists: () => boolean;\n offsetX: { (): number; (_: number): WordCloud };\n offsetX_exists: () => boolean;\n offsetY: { (): number; (_: number): WordCloud };\n offsetY_exists: () => boolean;\n zoom: { (): number; (_: number): WordCloud };\n zoom_exists: () => boolean;\n\n // I2DChart\n _palette;\n click: (row, column, selected) => void;\n dblclick: (row, column, selected) => void;\n\n // ITooltip ---\n tooltip;\n tooltipHTML: (_?) => any;\n tooltipFormat: (opts) => any;\n tooltipStyle: { (): string; (_: string): WordCloud };\n tooltipStyle_exists: () => boolean;\n tooltipValueFormat: { (): string; (_: string): WordCloud };\n tooltipValueFormat_exists: () => boolean;\n tooltipSeriesColor: { (): string; (_: string): WordCloud };\n tooltipSeriesColor_exists: () => boolean;\n tooltipLabelColor: { (): string; (_: string): WordCloud };\n tooltipLabelColor_exists: () => boolean;\n tooltipValueColor: { (): string; (_: string): WordCloud };\n tooltipValueColor_exists: () => boolean;\n tooltipTick: { (): boolean; (_: boolean): WordCloud };\n tooltipTick_exists: () => boolean;\n tooltipOffset: { (): number; (_: number): WordCloud };\n tooltipOffset_exists: () => boolean;\n\n // SimpleSelectionMixin\n _selection: Utility.SimpleSelection;\n}\nWordCloud.prototype._class += \" chart_WordCloud\";\nWordCloud.prototype.implements(I2DChart.prototype);\nWordCloud.prototype.implements(ITooltip.prototype);\nWordCloud.prototype.mixin(Utility.SimpleSelectionMixin);\n\nWordCloud.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", WordCloud.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nWordCloud.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nWordCloud.prototype.publish(\"fontFamily\", \"Impact\", \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeFrom\", 6, \"number\", \"Minimum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"fontSizeTo\", 48, \"number\", \"Maximum font size (pixels)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleFrom\", -60, \"number\", \"Minimum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleTo\", 60, \"number\", \"Maximum angle (degrees)\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"angleCount\", 5, \"number\", \"Number of different angles\", null, { tags: [\"Basic\"] });\nWordCloud.prototype.publish(\"padding\", 0, \"number\", \"Padding between words (pixels)\", null, { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"scaleMode\", \"linear\", \"set\", \"Text scaling mode\", [\"linear\", \"log\", \"sqrt\", \"pow\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"spiral\", \"archimedean\", \"set\", \"Text scaling mode\", [\"archimedean\", \"rectangular\"], { tags: [\"Intermediate\"] });\nWordCloud.prototype.publish(\"offsetX\", 0, \"number\", \"X offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"offsetY\", 0, \"number\", \"Y offset\", null, { tags: [\"Advanced\"] });\nWordCloud.prototype.publish(\"zoom\", 1, \"number\", \"Zoom\", null, { tags: [\"Advanced\"] });\n"],"names":["pi","tau","epsilon","abs","sqrt","halfPi","asin","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","cornerTangents","constant","Linear","x","y","pointX","pointY","curveLinear","line","identity","point","Basis","Bundle","Cardinal","CatmullRom","sign","slope3","slope2","MonotoneX","Step","slice","d3Select","d3ScaleBand","d3ScaleLinear","d3Format","d3ScalePow","d3ScaleLog","d3ScaleTime","d3TimeParse","d3TimeFormat","d3AxisLeft","d3AxisTop","d3AxisRight","d3AxisBottom","publish","SVGWidget","Utility","d3Brush","d3BrushX","d3BrushY","d3BrushSelection","d3Event","d3Hsl","d3Min","d3Max","INDChart","ITooltip","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","d3ScaleSqrt","d3Extent","d3Local","Text","Node","I2DChart","d3Hierarchy","FAChar","d3Descending","d3TimerFlush","HTMLWidget","thresholdSturges","extent","tickStep","range","noop","max","x00","y00","x0","y0","stream","pathArea","pathMeasure","pathBounds","pathCentroid","I1DChart","Annotation","nx","ny","dy","dx","color","data","type","subject","connector","note","disable","id","className","_dx","undefined","_dy","_x","_y","_color","_className","_type","setPosition","selectAll","nodes","length","redrawSubject","clearComponents","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","json","Object","keys","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","forEach","d","setPositionWithAccessors","editMode","a","updateEditMode","remove","textWrap","updateTextWrap","drawText","notePadding","map","k","getNoteBBoxOffset","positionX","positionY","pointHandle","cx","cy","move","circleHandles","r1","r2","padding","h","Math","addHandles","group","handles","r","enter","append","attr","call","drag","container","select","node","on","start","end","exit","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","bbox","width","height","orientation","offset","indexOf","lineBuilder","curve","canvasContext","classID","lineGen","builder","context","pathMethods","attrs","arcBuilder","arcShape","arc","innerRadius","outerRadius","radius","startAngle","endAngle","PI","components","lineSetup","subjectType","annotation","position","x1","x2","y1","y2","subjectData","angle","radiusPadding","cos","sin","connectorData","diffY","diffX","xe","ye","opposite","acos","points","createPoints","curveCatmullRom","cHandles","c","i","index","updatePoint","event","mapHandles","bind","anchors","diff","p","push","scale","size","angleOffset","atan","dot","transform","updateRadius","rect","updateWidth","updateHeight","rHandles","typeSettings","notCornerOffset","placement","circlebg","fill","circle","pointer","notCornerPointerXY","v","dragBadge","bHandles","text","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","Array","isArray","filter","b","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","split","parseFloat","offsetX","offsetY","subjectParams","subjectCircle","subjectRect","subjectThreshold","subjectBadge","stroke","concat","dragSubject","connectorParams","connectorCurve","connectorElbow","connectorLine","endType","s","e","distance","pow","connectorArrow","endScale","connectorDot","noteData","noteParams","lineType","noteVertical","noteHorizontal","dragNote","dragging","dragstarted","dragended","noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","classed","style","customType","initialType","settings","babelHelpers.get","babelHelpers.extends","d3NoteText","params","titleBBox","label","wrapLength","wrap","wrapSplitter","bgPadding","bgPaddingFinal","top","bottom","left","right","title","getBBox","d3Callout","d3CalloutElbow","ThresholdMap","newWithClass","merge","lineHeight","each","words","reverse","w","word","tspan","pop","join","getComputedTextLength","selection","selector","reduce","min","yOffset","value","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","annotationG","toString","draw","log","copy","JSON","stringify","update","updateText","updatedAccessors","_","arguments","updateDisable","updateNotePadding","rerun","some","apply","d3Interpolate","scaleLinear","d3InterpolateHcl","d3Annotation","annotationCalloutElbow","normalizeRadians","degreesToRadians","Palette","I2DAggrChart","d3Rgb","playInterval","CanvasWidget","d3Zoom"],"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,22,23,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,114]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/__package__.ts", "../src/Scatter.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", "../src/XYAxis.ts", "../src/Axis.ts", "../../../node_modules/d3-axis/src/array.js", "../../../node_modules/d3-axis/src/identity.js", "../../../node_modules/d3-axis/src/axis.js", "../src/Axis.css", "../src/XYAxis.css", "../src/Scatter.css", "../src/Area.ts", "../src/Column.ts", "../src/Column.css", "../src/Bar.ts", "../src/Bubble.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.css", "../src/BubbleXY.ts", "../src/Bullet.ts", "../../../node_modules/d3v4-bullet/src/bullet.js", "../../../node_modules/d3-timer/src/timer.js", "../src/Bullet.css", "../src/Contour.ts", "../../../node_modules/d3-contour/src/contours.js", "../../../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/density.js", "../../../node_modules/d3-contour/src/blur.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/Gantt.ts", "../src/Gauge.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/curve/radial.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/symbol/diamond.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/symbol/star.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/symbol/triangle.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/symbol/wye.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/basisClosed.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/basisOpen.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/linearClosed.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/monotone.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/natural.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/curve/step.js", "../../../node_modules/d3-svg-annotation/node_modules/d3-shape/src/array.js", "../../../node_modules/d3-svg-annotation/src/Annotation.js", "../../../node_modules/d3-svg-annotation/src/AnnotationCollection.js", "../../../node_modules/d3-svg-annotation/src/Handles.js", "../../../node_modules/d3-svg-annotation/src/Note/alignment.js", "../../../node_modules/d3-svg-annotation/src/Builder.js", "../../../node_modules/d3-svg-annotation/src/Note/lineType-vertical.js", "../../../node_modules/d3-svg-annotation/src/Note/lineType-horizontal.js", "../../../node_modules/d3-svg-annotation/src/Connector/type-line.js", "../../../node_modules/d3-svg-annotation/src/Connector/type-elbow.js", "../../../node_modules/d3-svg-annotation/src/Connector/type-curve.js", "../../../node_modules/d3-svg-annotation/src/Connector/end-arrow.js", "../../../node_modules/d3-svg-annotation/src/Connector/end-dot.js", "../../../node_modules/d3-svg-annotation/src/Subject/circle.js", "../../../node_modules/d3-svg-annotation/src/Subject/rect.js", "../../../node_modules/d3-svg-annotation/src/Subject/threshold.js", "../../../node_modules/d3-svg-annotation/src/Subject/badge.js", "../../../node_modules/d3-svg-annotation/src/Types-d3.js", "../../../node_modules/d3-svg-annotation/src/Adapter-d3.js", "../../../node_modules/d3-svg-annotation/index.js", "../src/Pie.ts", "../src/Pie.css", "../src/HalfPie.ts", "../src/Heat.ts", "../src/HexBin.ts", "../../../node_modules/d3-hexbin/src/hexbin.js", "../src/HexBin.css", "../src/Line.css", "../src/Line.ts", "../src/QuarterPie.ts", "../src/QuartileCandlestick.ts", "../src/Radar.ts", "../src/Radar.css", "../src/RadialBar.ts", "../src/RadialBar.css", "../src/StatChart.ts", "../src/Step.ts", "../src/Summary.ts", "../src/Summary.css", "../src/SummaryC.ts", "../src/WordCloud.ts", "../src/D3Cloud.ts", "../src/WordCloud.css"],
4
+ "sourcesContent": ["export const PKG_NAME = \"@hpcc-js/chart\";\nexport const PKG_VERSION = \"3.2.0\";\nexport const BUILD_VERSION = \"3.2.0\";\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", "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\u2019re 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 \u2265 r0, da1 \u2265 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\u2019s 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\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s 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\u00E9zier 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", "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 { 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: (date: Date) => string;\n protected d3Scale;\n protected d3Axis;\n protected d3Guides;\n protected _guideElement;\n protected svg;\n protected svgAxis;\n protected svgGuides;\n\n constructor(drawStartPosition: \"origin\" | \"center\" = \"origin\") {\n super();\n this._drawStartPos = drawStartPosition;\n\n this.updateScale();\n }\n\n lowValue() {\n return this.parse(this.low());\n }\n\n highValue() {\n return this.parse(this.high());\n }\n\n parse(d, forceNumeric?) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parse(d2);\n }, this);\n }\n if (d !== undefined && d !== null) {\n if (this.parser) {\n return this.parser(typeof d === \"number\" ? d.toString() : d);\n }\n if (forceNumeric && typeof d === \"string\") {\n return +d;\n }\n }\n return d;\n }\n\n parseInvert(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.parseInvert(d2);\n }, this);\n }\n if (this.parserInvert && d) {\n return this.parserInvert(d);\n }\n return d;\n }\n\n format(d) {\n if (d instanceof Array) {\n return d.map(function (d2) {\n return this.format(d2);\n }, this);\n }\n if (d !== undefined && d !== null && this.formatter) {\n return this.formatter(d);\n }\n return d;\n }\n\n parseFormat(d) {\n return this.format(this.parse(d));\n }\n\n scalePos(d) {\n let retVal = this.d3Scale(this.parse(d));\n if (this.type() === \"ordinal\") {\n retVal += this.bandwidth() / 2;\n }\n return retVal;\n }\n\n bandwidth() {\n return this.d3Scale.bandwidth ? this.d3Scale.bandwidth() : 0;\n }\n\n isHorizontal() {\n switch (this.orientation()) {\n case \"left\":\n case \"right\":\n return false;\n default:\n }\n return true;\n }\n\n domain(_?) {\n if (!arguments.length) return this.d3Scale.domain();\n this.d3Scale.domain(_);\n return this;\n }\n\n range(_?) {\n if (!arguments.length) {\n if (this.d3Scale.rangeRoundBands) {\n return this.d3Scale.rangeExtent();\n } else if (this.d3Scale.rangeRound) {\n return this.d3Scale.range();\n }\n }\n if (this.d3Scale.rangeRoundBands) {\n this.d3Scale.rangeRoundBands(_, 0.1);\n } else if (this.d3Scale.rangeRound) {\n this.d3Scale.range(_);\n }\n return this;\n }\n\n invert(pos) {\n return this.d3Scale.invert(pos);\n }\n\n guideTarget(_) {\n this._guideElement = d3Select(_)\n .attr(\"class\", this._class)\n ;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.svg = element.append(\"g\");\n this.svgAxis = this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n ;\n this.svgGuides = (this._guideElement || element).append(\"g\")\n .attr(\"class\", \"guide\")\n ;\n }\n\n protected _prevOrientation;\n updateScale(): this {\n switch (this.type()) {\n case \"ordinal\":\n this.d3Scale = d3ScaleBand()\n .paddingInner(this.ordinalPaddingInner())\n .paddingOuter(this.ordinalPaddingOuter())\n ;\n if (this.ordinals_exists()) {\n this.d3Scale.domain(this.ordinals());\n }\n this.parser = null;\n if (this.ordinalMappings_exists()) {\n const mappings = this.ordinalMappings();\n this.formatter = (_: any) => mappings[_] || _;\n } else {\n this.formatter = null;\n }\n break;\n case \"linear\":\n this.d3Scale = d3ScaleLinear();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"pow\":\n this.d3Scale = d3ScalePow()\n .exponent(this.powExponent())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"log\":\n this.d3Scale = d3ScaleLog()\n .base(this.logBase())\n ;\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = null;\n this.formatter = this.tickFormat_exists() ? d3Format(this.tickFormat()) : null;\n break;\n case \"time\":\n this.d3Scale = d3ScaleTime();\n if (this.low_exists() && this.high_exists()) {\n this.d3Scale.domain([this.lowValue(), this.highValue()]);\n }\n this.parser = this.timePattern_exists() ? d3TimeParse(this.timePattern()) : null;\n this.parserInvert = this.timePattern_exists() ? d3TimeFormat(this.timePattern()) : null;\n this.formatter = this.tickFormat_exists() ? d3TimeFormat(this.tickFormat()) : null;\n break;\n default:\n }\n if (this._prevOrientation !== this.orientation()) {\n switch (this.orientation()) {\n case \"left\":\n this.d3Axis = d3AxisLeft(this.d3Scale);\n this.d3Guides = d3AxisLeft(this.d3Scale);\n break;\n case \"top\":\n this.d3Axis = d3AxisTop(this.d3Scale);\n this.d3Guides = d3AxisTop(this.d3Scale);\n break;\n case \"right\":\n this.d3Axis = d3AxisRight(this.d3Scale);\n this.d3Guides = d3AxisRight(this.d3Scale);\n break;\n case \"bottom\":\n default:\n this.d3Axis = d3AxisBottom(this.d3Scale);\n this.d3Guides = d3AxisBottom(this.d3Scale);\n break;\n }\n this._prevOrientation = this.orientation();\n if (this.svgAxis) {\n this.svgAxis.html(\"\");\n }\n if (this.svgGuides) {\n this.svgGuides.html(\"\");\n }\n }\n\n if (this.extend()) {\n switch (this.type()) {\n case \"ordinal\":\n break;\n default:\n let length;\n let delta;\n let low;\n let high;\n let newLow;\n let newHigh;\n if (this.isHorizontal()) {\n length = this.width();\n this.d3Scale.range([0, length]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(0);\n newLow = this.d3Scale.invert(-delta);\n high = this.d3Scale.invert(length);\n newHigh = this.d3Scale.invert(length + delta);\n } else {\n length = this.height();\n this.d3Scale.range([length, 0]);\n delta = length * this.extend() / 100;\n low = this.d3Scale.invert(length);\n newLow = this.d3Scale.invert(length + delta);\n high = this.d3Scale.invert(0);\n newHigh = this.d3Scale.invert(-delta);\n }\n if (newLow === low) { // Edge case when there is only one item in the domain ---\n newLow = low - low * this.extend() / 100;\n }\n if (newHigh === high) { // Edge case when there is only one item in the domain ---\n newHigh = high + high * this.extend() / 100;\n }\n if ((Math as any).sign(low) !== (Math as any).sign(newLow)) {\n newLow = 0;\n }\n if ((Math as any).sign(high) !== (Math as any).sign(newHigh)) {\n newHigh = 0;\n }\n this.d3Scale.domain([newLow, newHigh]);\n break;\n }\n }\n\n this.d3Axis\n .scale(this.d3Scale)\n .tickFormat(this.formatter)\n .ticks(this.tickCount())\n ;\n this.d3Guides\n .scale(this.d3Scale)\n .tickSize(this.tickLength_exists() ? -this.tickLength() : 0)\n .tickFormat(\"\")\n .ticks(this.tickCount())\n ;\n const customTicks = this.ticks();\n if (customTicks.length) {\n this.d3Axis\n .tickValues(customTicks.map(d => this.parse(d.value)))\n .tickFormat((_d, i) => {\n return customTicks[i].label;\n });\n this.d3Guides\n .tickValues(customTicks.map(d => this.parse(d.value)));\n }\n return this;\n }\n\n adjustText(svg, tickOverlapModulus) {\n const isHoriztontal = this.isHorizontal();\n const isLeft = this.orientation() === \"left\";\n const isBottom = this.orientation() === \"bottom\";\n const context = this;\n const textSelection = svg.selectAll(\".tick > text\")\n .style(\"font-family\", this.fontFamily())\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n ;\n if (this.overlapMode() === \"linebreak\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.linebreak.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else if (this.overlapMode() === \"wrap\") {\n if (this.type() === \"ordinal\") {\n textSelection\n .call(function () {\n return context.wrap.apply(context, arguments);\n }, this.bandwidth())\n ;\n }\n } else {\n switch (isHoriztontal ? this.overlapMode() : \"none\") {\n case \"stagger\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", function (_d, i) { return (isBottom ? 1 : -1) * ((isBottom ? 0.71 : 0) + i % tickOverlapModulus) + \"em\"; })\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"hide\":\n textSelection\n .style(\"text-anchor\", \"middle\")\n .attr(\"dy\", (isBottom ? 0.71 : 0) + \"em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", function (_d, i) { return i % tickOverlapModulus ? \"hidden\" : null; })\n .attr(\"transform\", \"rotate(0)\")\n ;\n break;\n case \"rotate\":\n const deg = -(this.labelRotation()) || 0;\n if (deg !== 0 && tickOverlapModulus > 1) {\n textSelection\n .each(function () {\n const elm = d3Select(this);\n const bbox = elm.node().getBBox();\n const dyOff = (isBottom ? 1 : -1) * Math.sin(Math.PI * (-Math.abs(deg) / 180));\n elm\n .style(\"text-anchor\", deg > 0 ? (isBottom ? \"start\" : \"end\") : (isBottom ? \"end\" : \"start\"))\n .attr(\"dy\", (bbox.height / 2 * dyOff) + \"px\")\n .attr(\"dx\", deg > 0 ? (isBottom ? \"0.71em\" : \"-0.71em\") : (isBottom ? \"-0.71em\" : \"0.71em\"))\n .attr(\"transform\", \"rotate(\" + deg + \")\")\n .attr(\"visibility\", null)\n ;\n })\n ;\n break;\n }\n /* falls through */\n default:\n textSelection\n .style(\"text-anchor\", isHoriztontal ? \"middle\" : isLeft ? \"end\" : \"start\")\n .attr(\"dy\", isHoriztontal ? ((isBottom ? 0.71 : 0) + \"em\") : \"0.32em\")\n .attr(\"dx\", 0)\n .attr(\"visibility\", null)\n .attr(\"transform\", \"rotate(0)\")\n ;\n }\n }\n }\n\n calcTickOverlapModulus(element) {\n let retVal = 1;\n switch (this.overlapMode()) {\n case \"rotate\":\n case \"stagger\":\n case \"hide\":\n const bboxArr = [];\n element.selectAll(\".tick > text\").each(function () {\n const bbox = this.getBoundingClientRect();\n for (let i = bboxArr.length - 1; i >= 0; --i) {\n if (bboxArr[i].right < bbox.left) {\n break;\n }\n if (bboxArr.length + 1 - i > retVal) {\n retVal = bboxArr.length + 1 - i;\n }\n }\n bboxArr.push(bbox);\n });\n break;\n default:\n }\n return retVal;\n }\n\n calcOverflow(element, ignoreText?): IOverflow {\n this.updateScale();\n if (this.hidden()) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: 1\n };\n }\n const isHorizontal = this.isHorizontal();\n this.range(isHorizontal ? [0, this.width()] : [this.height(), 0]);\n const tmpSvg = element.append(\"g\").attr(\"class\", this.classID());\n const tmpSvgG = tmpSvg.append(\"g\");\n tmpSvgG\n .attr(\"class\", isHorizontal ? \"x\" : \"y\")\n .call(this.d3Axis)\n ;\n if (ignoreText) {\n element.selectAll(\".tick > text\").remove();\n }\n\n const retVal: IOverflow = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n depth: 0,\n tickOverlapModulus: this.calcTickOverlapModulus(tmpSvgG)\n };\n this.adjustText(tmpSvgG, retVal.tickOverlapModulus);\n\n const bbox = tmpSvgG.node().getBBox();\n retVal.depth = isHorizontal ? bbox.height : bbox.width;\n switch (this.shrinkToFit()) {\n case \"low\":\n case \"both\":\n retVal.left = isHorizontal ? -bbox.x : 0;\n retVal.bottom = isHorizontal ? 0 : -(this.height() - (bbox.height + bbox.y));\n break;\n default:\n }\n switch (this.shrinkToFit()) {\n case \"high\":\n case \"both\":\n retVal.top = isHorizontal ? 0 : -bbox.y;\n retVal.right = isHorizontal ? -(this.width() - bbox.x - bbox.width) : 0;\n break;\n default:\n }\n tmpSvg.remove();\n\n return retVal;\n }\n\n wrap(_text, bandSize, re) {\n re = re || /\\s+/;\n const context = this;\n _text.each(function () {\n const text = d3Select(this);\n const words = text.text().split(re).reverse();\n let line = [];\n let lineNumber = 0;\n const lineHeight = 1.1;\n const x = text.attr(\"x\");\n const y = text.attr(\"y\");\n const fs = parseFloat(text.style(\"font-size\")) || 10;\n const maxLinesPerBand = Math.floor(bandSize / (fs * lineHeight)) - 1;\n const minWordsPerLine = context.isHorizontal() ? 1 : Math.ceil(words.length / maxLinesPerBand);\n const dy = parseFloat(text.attr(\"dy\"))\n ;\n let tspan = text.text(null).append(\"tspan\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .attr(\"dy\", dy + \"em\")\n ;\n let wordsOnLine = 0;\n let word = words.pop();\n while (word) {\n line.push(word);\n tspan.text(line.join(\" \"));\n wordsOnLine++;\n if ((tspan.node() as any).getComputedTextLength() > bandSize && wordsOnLine >= minWordsPerLine) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\n wordsOnLine = 0;\n }\n word = words.pop();\n }\n if (!context.isHorizontal()) {\n text.selectAll(\"tspan\")\n .attr(\"y\", (-lineNumber / 2) + \"em\")\n ;\n }\n });\n }\n\n linebreak(text, bandSize) {\n this.wrap(text, bandSize, \"\\n\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.svg.style(\"display\", this.hidden() ? \"none\" : null);\n\n const overlap = this.calcOverflow(element);\n\n const lowerPos: number = this.isHorizontal() ? overlap.left : this.height() - overlap.top - overlap.bottom;\n const upperPos: number = this.isHorizontal() ? this.width() - overlap.right - this.padding() : 0 + this.padding();\n\n this.range(this.reverse() ? [upperPos, lowerPos] : [lowerPos, upperPos]);\n\n const context = this;\n function doPosition(element) {\n element.attr(\"transform\", function () {\n switch (context.orientation()) {\n case \"left\":\n return \"translate(\" + overlap.depth + \", \" + overlap.top + \")\";\n case \"top\":\n return \"translate(0,\" + overlap.depth + \")\";\n case \"right\":\n return \"translate(\" + (context.width() - overlap.depth) + \", \" + overlap.top + \")\";\n case \"bottom\":\n return \"translate(0,\" + (context.height() - overlap.depth) + \")\";\n default:\n }\n return \"translate(0,0)\";\n });\n }\n this.svg\n // .attr(\"class\", this.isHorizontal() ? \"x\" : \"y\")\n .style(\"visibility\", this.type() === \"none\" ? \"hidden\" : null)\n .transition()\n .call(doPosition)\n ;\n if (this._guideElement) {\n this.svgGuides\n .transition()\n .call(doPosition)\n ;\n }\n this.svgAxis\n .call(this.d3Axis)\n ;\n this.adjustText(this.svgAxis, overlap.tickOverlapModulus);\n\n const svgLineBBox = {\n x: this.pos().x,\n width: this.width()\n };\n const svgText = this.svgAxis.selectAll(\".axisTitle\").data(this.title() ? [this.title()] : []);\n const svgTextUpdate = svgText.enter().append(\"text\")\n .attr(\"class\", \"axisTitle\")\n .merge(svgText)\n ;\n const svgTitleTransition = svgTextUpdate.transition()\n .attr(\"dx\", null)\n .style(\"text-anchor\", \"end\")\n ;\n switch (this.orientation()) {\n case \"left\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 2)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"right\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"x\", -2)\n .attr(\"y\", 4)\n .attr(\"dx\", null)\n .attr(\"dy\", \"-.71em\")\n ;\n break;\n case \"top\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", 2)\n .attr(\"dx\", null)\n .attr(\"dy\", \".71em\")\n ;\n break;\n case \"bottom\":\n svgTitleTransition\n .attr(\"transform\", \"rotate(0)\")\n .attr(\"x\", svgLineBBox.width - 2)\n .attr(\"y\", -2)\n .attr(\"dy\", null)\n ;\n break;\n default:\n }\n svgTitleTransition\n .text(this.title_exists() ? this.title() : \"\")\n ;\n svgText.exit().remove();\n this.svgGuides\n .call(this.d3Guides)\n .selectAll(\".tick\").classed(\"guide-0\", d => d === 0 && this.low() < 0)\n ;\n }\n\n rerender() {\n this.svgAxis.call(this.d3Axis);\n this.svgGuides.call(this.d3Guides);\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._guideElement) {\n this._guideElement\n .attr(\"transform\", this._element.attr(\"transform\"))\n ;\n }\n }\n}\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 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", "export var slice = Array.prototype.slice;\n", "export default function(x) {\n return x;\n}\n", "import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "(function(){\n if (!document.getElementById('1a9a5701')) {\n var e = document.createElement('style');\n e.id = '1a9a5701';\n e.textContent = `.chart_Axis {\n fill: black;\n font: 10px sans-serif;\n}\n\n.chart_Axis .axis .tick > text {\n font: 10px sans-serif;\n}\n\n.chart_Axis .axis path.domain,\n.chart_Axis .axis .tick line {\n fill: none;\n stroke: black;\n}\n\n.chart_Axis .guide path.domain\n{\n fill: none;\n stroke: none;\n}\n.chart_Axis .guide .tick line {\n fill: none;\n stroke: lightgrey;\n opacity: 0.7;\n}\n.chart_Axis .guide .tick.guide-0 line {\n stroke: black;\n stroke-width: 1;\n stroke-dasharray: 3 5;\n}\n.chart_Axis line,\n.chart_Axis path{\n shape-rendering: crispEdges;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('87806f80')) {\n var e = document.createElement('style');\n e.id = '87806f80';\n e.textContent = `.chart_XYAxis .axis {\n fill: black;\n font: 10px sans-serif;\n}\n\n.chart_XYAxis .tick > text {\n font: 10px sans-serif;\n}\n\n.chart_XYAxis .focus .chart_Axis.value .tick {\n visibility:hidden;\n}\n\n.chart_XYAxis .axis path,\n.chart_XYAxis .axis line {\n fill: none;\n stroke: #000;\n shape-rendering: crispEdges;\n}\n\n.chart_XYAxis .region {\n opacity: 0.33;\n}\n\n.chart_XYAxis .brush rect.background {\n z-index: -999;\n}\n\n.chart_XYAxis .brush .selection {\n stroke: steelblue;\n stroke-opacity: 1;\n stroke-width: 1px;\n fill: steelblue;\n fill-opacity: .125;\n shape-rendering: crispEdges;\n}\n\n.chart_XYAxis .brush path.handle--custom {\n fill: #eee;\n stroke: #666;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('49f420a2')) {\n var e = document.createElement('style');\n e.id = '49f420a2';\n e.textContent = `.chart_Scatter .pointShape,\n.chart_Scatter .line,\n.chart_Scatter .area {\n pointer-events: none;\n}\n\n.chart_Scatter .point .pointSelection {\n fill: none;\n stroke: none;\n pointer-events: all;\n}\n\n.chart_Scatter .point .pointSelection.selected {\n fill: none;\n stroke: red;\n}\n`;\n document.head.appendChild(e);\n }\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", "(function(){\n if (!document.getElementById('ecdfd98d')) {\n var e = document.createElement('style');\n e.id = 'ecdfd98d';\n e.textContent = `.chart_Column .columnRect {\n fill: steelblue;\n cursor: pointer;\n}\n\n.chart_Column .data.axis path {\n display: none;\n}\n\n.chart_Column .columnRect {\n stroke: transparent;\n border-width: 1.5px;\n}\n\n.chart_Column .columnRect.selected {\n stroke: red;\n}\n`;\n document.head.appendChild(e);\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", "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", "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\u2019t include the root\u2019s 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\u2026\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 // \u201CCloseness\u201D is determined by linear distance along the front-chain.\n // \u201CAhead\u201D or \u201Cbehind\u201D 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", "(function(){\n if (!document.getElementById('e6cb163e')) {\n var e = document.createElement('style');\n e.id = 'e6cb163e';\n e.textContent = `.chart_Bubble circle {\n cursor: pointer;\n}\n\n.chart_Bubble .selected circle {\n stroke: red;\n stroke-width: 1.5px\n}\n\n.chart_Bubble .common_FAChar {\n fill: white;\n pointer-events: none;\n}\n\n.chart_Bubble .common_Text {\n pointer-events: none;\n}`;\n document.head.appendChild(e);\n }\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", "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 titleWidth; // Gap between title and bullet bar.\n\n // Bullet Chart ---\n const chart = d3Bullet()\n .width(width - titleWidth - 6)\n .height(height)\n ;\n svgUpdate\n .attr(\"width\", width)\n .attr(\"height\", height + margin.top + margin.bottom)\n .style(\"margin-left\", `${margin.left}px`)\n ;\n svgUpdate.select(\".bulletBar\")\n .attr(\"transform\", \"translate(\" + (titleWidth + 6) + \",\" + margin.top + \")\")\n .call(chart)\n ;\n\n svg.exit().remove();\n\n if (Object.keys(this._hiddenColumns).length > 0) {\n element.selectAll(`.${Object.keys(this._hiddenColumns).join(\",.\")}`)\n .style(\"display\", \"none\")\n ;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nBullet.prototype._class += \" chart_Bullet\";\n\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", "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\u2026\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", "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\u2019ve set an alarm, if we haven\u2019t 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", "(function(){\n if (!document.getElementById('3748928c')) {\n var e = document.createElement('style');\n e.id = '3748928c';\n e.textContent = `.chart_Bullet .domain {\n opacity: 0;\n}\n\n.chart_Bullet .bullet {\n border: solid 1px;\n border-color: transparent;\n font: 10px sans-serif;\n}\n\n.chart_Bullet .bullet.selected {\n border-color: red;\n}\n\n.chart_Bullet .bullet.over {\n border-color: orange;\n}\n\n.chart_Bullet .bullet.selected.over {\n border-color: red;\n}\n\n.chart_Bullet .bullet .marker {\n stroke: #000;\n stroke-width: 2px;\n}\n\n.chart_Bullet .bullet .tick line {\n stroke: #666;\n stroke-width: .5px;\n}\n\n.chart_Bullet .bullet .range.s0 {\n fill: #eee;\n}\n\n.chart_Bullet .bullet .range.s1 {\n fill: #ddd;\n}\n\n.chart_Bullet .bullet .range.s2 {\n fill: #ccc;\n}\n\n.chart_Bullet .bullet .measure.s0 {\n fill: lightsteelblue;\n}\n\n.chart_Bullet .bullet .measure.s1 {\n fill: steelblue;\n}\n\n.chart_Bullet .bullet .title {\n font-size: 14px;\n font-weight: bold;\n}\n\n.chart_Bullet .bullet .subtitle {\n fill: #999;\n}\n`;\n document.head.appendChild(e);\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 {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", "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 {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", "// 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", "// 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\u2013363 (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 { 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", "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 ? \"blue\" : \"black\")\n .style(\"text-decoration\", this.click !== Gauge.prototype.click ? \"underline\" : null)\n .text(this.title())\n ;\n\n // Update Text ---\n const point = pointOnArc(value2Angle(1), innerRadius - 8);\n this.updateText(this._centerText, -point.x, -point.y, 2 * point.x, 2 * point.y);\n\n const point2 = pointOnArc(value2Angle(1), outerRadius);\n point2.y += 5;\n const width = this.calcWidth() - 20;\n const height = this.calcWidth() / 2 - point2.y - 5;\n this.updateText(this._bottomText, -width / 2, point2.y, width, height);\n\n this._mainTooltip.text(this.tooltip());\n }\n\n // Events ---\n click(w: Gauge) {\n }\n}\nGauge.prototype._class += \" chart_Gauge\";\n\nexport interface Gauge {\n title(): string;\n title(_: string): this;\n titleDescription(): string;\n titleDescription(_: string): this;\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(\"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", "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 \u2265 r0, da1 \u2265 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\u2019s 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\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s 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", "import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n", "var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n", "import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n", "var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n", "var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\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 noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\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._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\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 BasisClosed(context);\n}\n", "import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.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 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; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // 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 BasisOpen(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", "import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\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\u00E9zier 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 class Annotation {\n constructor({\n x = 0,\n y = 0,\n nx,\n ny,\n dy = 0,\n dx = 0,\n color = \"grey\",\n data,\n type,\n subject,\n connector,\n note,\n disable,\n id,\n className\n }) {\n this._dx = nx !== undefined ? nx - x : dx\n this._dy = ny !== undefined ? ny - y : dy\n this._x = x\n this._y = y\n this._color = color\n this.id = id\n this._className = className || \"\"\n\n this._type = type || \"\"\n this.data = data\n\n this.note = note || {}\n this.connector = connector || {}\n this.subject = subject || {}\n\n this.disable = disable || []\n }\n\n updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition()\n if (\n this.type.subject &&\n this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0\n ) {\n this.type.redrawSubject()\n }\n }\n }\n\n clearComponents() {\n this.type.clearComponents && this.type.clearComponents()\n }\n\n get className() {\n return this._className\n }\n\n set className(className) {\n this._className = className\n if (this.type.setClassName) this.type.setClassName()\n }\n\n updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset()\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector()\n }\n\n this.type.redrawNote()\n }\n }\n\n get type() {\n return this._type\n }\n\n set type(type) {\n this._type = type\n this.clearComponents()\n }\n\n get x() {\n return this._x\n }\n set x(x) {\n this._x = x\n this.updatePosition()\n }\n\n get y() {\n return this._y\n }\n set y(y) {\n this._y = y\n this.updatePosition()\n }\n\n get color() {\n return this._color\n }\n set color(color) {\n this._color = color\n this.updatePosition()\n }\n\n get dx() {\n return this._dx\n }\n set dx(dx) {\n this._dx = dx\n this.updateOffset()\n }\n\n get dy() {\n return this._dy\n }\n set dy(dy) {\n this._dy = dy\n this.updateOffset()\n }\n\n set nx(nx) {\n this._dx = nx - this._x\n this.updateOffset()\n }\n\n set ny(ny) {\n this._dy = ny - this._y\n this.updateOffset()\n }\n\n get offset() {\n return { x: this._dx, y: this._dy }\n }\n\n set offset({ x, y }) {\n this._dx = x\n this._dy = y\n this.updateOffset()\n }\n\n get position() {\n return { x: this._x, y: this._y }\n }\n\n set position({ x, y }) {\n this._x = x\n this._y = y\n this.updatePosition()\n }\n\n get translation() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n }\n }\n\n get json() {\n const json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n }\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data\n if (this.type) json.type = this.type\n if (this._className) json.className = this._className\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector\n if (Object.keys(this.subject).length > 0) json.subject = this.subject\n if (Object.keys(this.note).length > 0) json.note = this.note\n\n return json\n }\n}\n", "export default class AnnotationCollection {\n\n constructor ({ annotations, accessors, accessorsInverse }) {\n this.accessors = accessors\n this.accessorsInverse = accessorsInverse\n this.annotations = annotations\n }\n\n clearTypes (newSettings) {\n this.annotations.forEach(d => {\n d.type = undefined\n d.subject = newSettings && newSettings.subject || d.subject\n d.connector = newSettings && newSettings.connector || d.connector\n d.note = newSettings && newSettings.note || d.note\n })\n }\n\n setPositionWithAccessors () {\n this.annotations.forEach(d => {\n d.type.setPositionWithAccessors(this.accessors)\n })\n }\n\n editMode (editMode) { this.annotations.forEach(a => {\n if (a.type) {\n a.type.editMode = editMode\n a.type.updateEditMode()\n }\n })\n }\n\n updateDisable (disable) {\n this.annotations.forEach(a => {\n a.disable = disable\n if (a.type) {\n disable.forEach(d => {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove()\n a.type[d] = undefined\n }\n })\n }\n })\n }\n\n updateTextWrap (textWrap) {\n this.annotations.forEach(a => {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap)\n }\n })\n }\n\n updateText () {\n this.annotations.forEach(a => {\n if (a.type && a.type.drawText) {\n a.type.drawText()\n }\n })\n }\n\n updateNotePadding (notePadding) {\n this.annotations.forEach(a => {\n if (a.type) {\n a.type.notePadding = notePadding\n }\n })\n }\n\n get json () { \n return this.annotations.map(a => { \n const json = a.json\n if (this.accessorsInverse && a.data) {\n json.data = {}\n Object.keys(this.accessorsInverse).forEach(k => {\n json.data[k] = this.accessorsInverse[k]({ x: a.x, y: a.y})\n\n //TODO make this feasible to map back to data for other types of subjects\n })\n }\n return json\n })\n }\n\n get noteNodes () {\n return this.annotations.map(a => ({ ...a.type.getNoteBBoxOffset(), positionX: a.x, positionY: a.y }))\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n}\n", "import { select } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\n\nexport const pointHandle = ({ cx = 0, cy = 0 }) => {\n return { move: { x: cx, y: cy } }\n}\n\nexport const circleHandles = ({ cx = 0, cy = 0, r1, r2, padding }) => {\n const h = { move: { x: cx, y: cy } }\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) }\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) }\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy }\n }\n\n return h\n}\n\nexport const rectHandles = ({\n x1 = 0,\n y1 = 0,\n x2 = x1,\n y2 = y1,\n width,\n height\n}) => {\n const w = width || Math.abs(x2 - x1)\n const h = height || Math.abs(y2 - y1)\n\n return {\n move: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.min(y1, y2) - 10\n },\n width: {\n x: Math.max(x1, x2),\n y: Math.min(y1, y2) + h / 2\n },\n height: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.max(y1, y2)\n }\n }\n}\n\nexport const lineHandles = ({ x1, y1, x2, y2, x, y }) => {\n const minY = Math.min(y1, y2)\n const minX = Math.min(x1, x2)\n\n const height = Math.abs(y2 - y1)\n const width = Math.abs(x2 - x1)\n\n return {\n move: {\n x: x || minX + width / 2,\n y: y || minY + height / 2\n }\n }\n}\n\n//arc handles\nexport const addHandles = ({ group, handles, r = 10 }) => {\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n const h = group.selectAll(\"circle.handle\").data(handles)\n\n h\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"handle\")\n .attr(\"fill\", \"grey\")\n .attr(\"fill-opacity\", 0.1)\n .attr(\"cursor\", \"move\")\n .attr(\"stroke-dasharray\", 5)\n .attr(\"stroke\", \"grey\")\n .call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => d.start && d.start(d))\n .on(\"drag\", d => d.drag && d.drag(d))\n .on(\"end\", d => d.end && d.end(d))\n )\n\n group\n .selectAll(\"circle.handle\")\n .attr(\"cx\", d => d.x)\n .attr(\"cy\", d => d.y)\n .attr(\"r\", d => d.r || r)\n .attr(\"class\", d => `handle ${d.className || \"\"}`)\n\n h.exit().remove()\n}\n", "\nexport const leftRightDynamic = (align, y) => {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) { align = \"top\" }\n else { align = \"bottom\" } \n }\n return align\n}\n\nexport const topBottomDynamic = (align, x) => {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) { align = \"right\" }\n else { align = \"left\" } \n }\n return align\n}\n\nconst orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"]\nconst orientationLeftRight = [\"leftRight\", \"left\", \"right\"]\n\nexport default ({ padding=0, bbox={x:0, y:0, width:0, height:0}, align, orientation, offset={x:0, y:0} }) => {\n let x = -bbox.x \n let y = 0//-bbox.y\n if ( orientationTopBottom.indexOf(orientation) !== -1 ) {\n align = topBottomDynamic(align, offset.x)\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") { \n y -= bbox.height + padding\n } else {\n y += padding\n }\n\n if ( align === \"middle\" ) {\n x -= bbox.width/2\n } else if (align === \"right\" ) {\n x -= bbox.width\n } \n\n } else if ( orientationLeftRight.indexOf(orientation) !== -1 ) {\n align = leftRightDynamic(align, offset.y)\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") { \n x -= bbox.width + padding\n } else {\n x += padding\n }\n\n if ( align === \"middle\" ) {\n y -= bbox.height/2\n } else if (align === \"top\" ) {\n y -= bbox.height\n }\n } \n\n return { x, y }\n}", "import { line, arc, curveLinear } from \"d3-shape\"\n\nexport const lineBuilder = ({ data, curve=curveLinear, canvasContext, className, classID }) => { \n const lineGen = line()\n .curve(curve)\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n if (canvasContext) {\n lineGen.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n builder.attrs = {\n d: lineGen(data)\n }\n }\n\n return builder\n}\n\nexport const arcBuilder = ({ data, canvasContext, className, classID }) => {\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n const arcShape = arc()\n .innerRadius(data.innerRadius || 0)\n .outerRadius(data.outerRadius || data.radius || 2)\n .startAngle(data.startAngle || 0)\n .endAngle(data.endAngle || 2*Math.PI)\n\n if (canvasContext) {\n arcShape.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n \n builder.attrs = {\n d: arcShape()\n }\n }\n\n return builder\n}", "import { lineBuilder } from '../Builder'\nimport { leftRightDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, bbox, offset }) => {\n align = leftRightDynamic(align, offset.y)\n\n if (align === \"top\") { y -= bbox.height } \n else if (align === \"middle\") { y -= bbox.height/2 }\n\n const data = [[x, y], [x, y + bbox.height]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}", "import { lineBuilder } from '../Builder'\nimport { topBottomDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, offset, bbox }) => {\n align = topBottomDynamic(align, offset.x)\n\n if (align === \"right\") { x -= bbox.width }\n else if (align === \"middle\") { x -= bbox.width/2 }\n\n const data = [[x, y], [x + bbox.width, y]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}", "import { lineBuilder } from '../Builder'\n\nexport const lineSetup = ({ type, subjectType }) => {\n let annotation = type.annotation\n let offset = annotation.position\n \n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n\n const subjectData = annotation.subject\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const h = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))\n const angle = Math.asin(-y2/h)\n const r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0)\n\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n\n }\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n\n return [[x1, y1], [x2, y2]]\n}\n\nexport default (connectorData) => {\n const data = lineSetup(connectorData)\n return { components: [lineBuilder({ data, className : \"connector\" })]} \n}", "import { lineBuilder } from '../Builder'\n\nexport default ({ type, subjectType }) => {\n\n const annotation = type.annotation\n const offset = annotation.position\n\n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n const subjectData = annotation.subject\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n let data = [[x1, y1], [x2, y2]]\n\n let diffY = y2 - y1\n let diffX = x2 - x1\n let xe = x2 \n let ye = y2\n let opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2\n ye = y1 + diffX*opposite\n } else {\n ye = y2\n xe = x1 + diffY*opposite\n }\n \n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0)\n const length = r/Math.sqrt(2)\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length*(x2 < 0 ? -1 : 1)\n y1 = length*(y2 < 0 ? -1 : 1)\n data = [[x1, y1], [xe , ye ], [x2, y2]]\n\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n const angle = Math.asin(-y2/r)\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n data = [[ x1, y2], [x2, y2]]\n } else {\n const angle = Math.acos(x2/r)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n data = [[ x2, y1], [x2, y2]]\n }\n } else {\n data = [[x1, y1], [xe , ye], [x2, y2]]\n }\n\n return { components: [lineBuilder({ data, className: \"connector\"})]}\n}\n", "import { lineBuilder } from '../Builder'\nimport { event } from 'd3-selection'\nimport { lineSetup } from './type-line'\nimport { curveCatmullRom } from 'd3-shape'\nimport { pointHandle } from '../Handles'\n\nexport default ({ type, connectorData, subjectType }) => {\n\n if (!connectorData) { connectorData = {} }\n if (!connectorData.points || typeof connectorData.points === \"number\") { \n connectorData.points = createPoints(type.annotation.offset, connectorData.points) \n }\n if (!connectorData.curve) { connectorData.curve = curveCatmullRom }\n\n let handles = []\n\n if (type.editMode) {\n const cHandles = connectorData.points\n .map((c,i) => ({...pointHandle({cx: c[0], cy: c[1]}), index: i}))\n\n const updatePoint = (index) => { \n connectorData.points[index][0] += event.dx\n connectorData.points[index][1] += event.dy\n type.redrawConnector()\n }\n \n handles = type.mapHandles(cHandles\n .map(h => ({ ...h.move, drag: updatePoint.bind(type, h.index)})))\n\n }\n\n let data = lineSetup({ type, subjectType })\n data = [data[0], ...connectorData.points, data[1]]\n const components = [lineBuilder({ data, curve: connectorData.curve, className: \"connector\" })]\n\n return { components , handles }\n}\n\nconst createPoints = function ( offset, anchors=2) {\n const diff = { x: offset.x/(anchors + 1), y: offset.y/(anchors + 1) }\n const p = []\n\n let i = 1 \n for (; i <= anchors; i++) {\n p.push([diff.x*i + i%2*20, diff.y*i - i%2*20])\n }\n return p\n}", "import { lineBuilder } from \"../Builder\"\n\nexport default ({ annotation, start, end, scale = 1 }) => {\n const offset = annotation.position\n if (!start) {\n start = [annotation.dx, annotation.dy]\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]]\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y]\n }\n\n let x1 = end[0],\n y1 = end[1]\n\n let dx = start[0]\n let dy = start[1]\n\n let size = 10 * scale\n let angleOffset = 16 / 180 * Math.PI\n let angle = Math.atan(dy / dx)\n\n if (dx < 0) {\n angle += Math.PI\n }\n\n const data = [\n [x1, y1],\n [\n Math.cos(angle + angleOffset) * size + x1,\n Math.sin(angle + angleOffset) * size + y1\n ],\n [\n Math.cos(angle - angleOffset) * size + x1,\n Math.sin(angle - angleOffset) * size + y1\n ],\n [x1, y1]\n ]\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [\n lineBuilder({\n data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })\n ]\n }\n}\n", "import { arcBuilder } from \"../Builder\"\n\nexport default ({ line, scale = 1 }) => {\n let dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n })\n dot.attrs.transform = `translate(${line.data[0][0]}, ${line.data[0][1]})`\n\n return { components: [dot] }\n}\n", "import { circleHandles } from \"../Handles\"\nimport { arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20\n }\n\n let handles = []\n const c = arcBuilder({ data: subjectData, className: \"subject\" })\n if (type.editMode) {\n const h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n })\n\n const updateRadius = attr => {\n const r = subjectData[attr] + event.dx * Math.sqrt(2)\n subjectData[attr] = r\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const cHandles = [\n {\n ...h.r1,\n drag: updateRadius.bind(\n type,\n subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\"\n )\n }\n ]\n\n if (subjectData.innerRadius) {\n cHandles.push({ ...h.r2, drag: updateRadius.bind(type, \"innerRadius\") })\n }\n handles = type.mapHandles(cHandles)\n }\n\n c.attrs[\"fill-opacity\"] = 0\n\n return { components: [c], handles }\n}\n", "import { lineBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.width) {\n subjectData.width = 100\n }\n if (!subjectData.height) {\n subjectData.height = 100\n }\n\n let handles = []\n let { width, height } = subjectData\n\n const data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]]\n let rect = lineBuilder({ data, className: \"subject\" })\n\n if (type.editMode) {\n const updateWidth = () => {\n subjectData.width = event.x\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const updateHeight = () => {\n subjectData.height = event.y\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const rHandles = [\n { x: width, y: height / 2, drag: updateWidth.bind(type) },\n { x: width / 2, y: height, drag: updateHeight.bind(type) }\n ]\n\n handles = type.mapHandles(rHandles)\n }\n rect.attrs[\"fill-opacity\"] = 0.1\n return { components: [rect], handles }\n}\n", "import { lineBuilder } from '../Builder'\n\n\nexport default ({ subjectData, type }) => {\n const offset = type.annotation.position\n\n let x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y\n\n const data = [[x1, y1], [x2, y2]]\n return { components: [lineBuilder({ data, className : 'subject'})]}\n}", "import { lineBuilder, arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData = {}, type = {} }, annotation = {}) => {\n const typeSettings = type.typeSettings && type.typeSettings.subject\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius\n } else {\n subjectData.radius = 14\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y\n }\n }\n\n let handles = []\n const components = []\n const radius = subjectData.radius\n const innerRadius = radius * 0.7\n let x = 0\n let y = 0\n\n const notCornerOffset = Math.sqrt(2) * radius\n const placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n }\n\n if (subjectData.x && !subjectData.y) {\n x = placement[`x${subjectData.x}`]\n } else if (subjectData.y && !subjectData.x) {\n y = placement[`y${subjectData.y}`]\n } else if (subjectData.x && subjectData.y) {\n x = placement[`x${subjectData.x}corner`]\n y = placement[`y${subjectData.y}corner`]\n }\n\n const transform = `translate(${x}, ${y})`\n const circlebg = arcBuilder({ className: \"subject\", data: { radius } })\n circlebg.attrs.transform = transform\n circlebg.attrs.fill = annotation.color\n circlebg.attrs[\"stroke-linecap\"] = \"round\"\n circlebg.attrs[\"stroke-width\"] = \"3px\"\n\n const circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius }\n })\n\n circle.attrs.transform = transform\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\"\n circle.attrs.fill = \"white\"\n\n let pointer\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n })\n } else if (x || y) {\n const notCornerPointerXY = (v, sign = 1) =>\n v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2)\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [\n [0, 0],\n [notCornerPointerXY(x), notCornerPointerXY(y)],\n [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)],\n [0, 0]\n ]\n })\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color\n pointer.attrs[\"stroke-linecap\"] = \"round\"\n pointer.attrs[\"stroke-width\"] = \"3px\"\n components.push(pointer)\n }\n\n if (type.editMode) {\n const dragBadge = () => {\n subjectData.x =\n event.x < -radius * 2\n ? \"left\"\n : event.x > radius * 2 ? \"right\" : undefined\n subjectData.y =\n event.y < -radius * 2\n ? \"top\"\n : event.y > radius * 2 ? \"bottom\" : undefined\n\n type.redrawSubject()\n }\n\n const bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) }\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius\n }\n\n handles = type.mapHandles([bHandles])\n }\n\n let text\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x,\n y\n }\n }\n }\n\n components.push(circlebg)\n components.push(circle)\n components.push(text)\n\n return { components, handles }\n}\n", "import { select, event } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\nimport { addHandles } from \"./Handles\"\n\n//Note options\nimport noteAlignment from \"./Note/alignment\"\nimport noteVertical from \"./Note/lineType-vertical\"\nimport noteHorizontal from \"./Note/lineType-horizontal\"\n\n//Connector options\nimport connectorLine from \"./Connector/type-line\"\nimport connectorElbow from \"./Connector/type-elbow\"\nimport connectorCurve from \"./Connector/type-curve\"\nimport connectorArrow from \"./Connector/end-arrow\"\nimport connectorDot from \"./Connector/end-dot\"\n\n//Subject options\nimport subjectCircle from \"./Subject/circle\"\nimport subjectRect from \"./Subject/rect\"\nimport subjectThreshold from \"./Subject/threshold\"\nimport subjectBadge from \"./Subject/badge\"\n\nexport class Type {\n constructor({ a, annotation, editMode, dispatcher, notePadding, accessors }) {\n this.a = a\n\n this.note =\n annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\")\n this.noteContent = this.note && a.select(\"g.annotation-note-content\")\n this.connector =\n annotation.disable.indexOf(\"connector\") === -1 &&\n a.select(\"g.annotation-connector\")\n this.subject =\n annotation.disable.indexOf(\"subject\") === -1 &&\n a.select(\"g.annotation-subject\")\n this.dispatcher = dispatcher\n\n if (dispatcher) {\n const handler = addHandlers.bind(null, dispatcher, annotation)\n handler({ component: this.note, name: \"note\" })\n handler({ component: this.connector, name: \"connector\" })\n handler({ component: this.subject, name: \"subject\" })\n }\n\n this.annotation = annotation\n this.editMode = annotation.editMode || editMode\n this.notePadding = notePadding !== undefined ? notePadding : 3\n this.offsetCornerX = 0\n this.offsetCornerY = 0\n\n if (accessors && annotation.data) {\n this.init(accessors)\n }\n }\n\n init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors)\n }\n if (!this.annotation.y) {\n this.mapY(accessors)\n }\n }\n\n mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data)\n }\n }\n\n mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data)\n }\n }\n\n updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove()\n }\n\n drawOnSVG(component, builders) {\n if (!Array.isArray(builders)) {\n builders = [builders]\n }\n\n builders\n .filter(b => b)\n .forEach(({ type, className, attrs, handles, classID }) => {\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles })\n } else {\n newWithClass(component, [this.annotation], type, className, classID)\n const el = component.select(`${type}.${classID || className}`)\n const addAttrs = Object.keys(attrs)\n const removeAttrs = []\n\n const currentAttrs = el.node().attributes\n for (let i = currentAttrs.length - 1; i >= 0; i--) {\n const name = currentAttrs[i].name\n if (addAttrs.indexOf(name) === -1 && name !== \"class\")\n removeAttrs.push(name)\n }\n\n addAttrs.forEach(attr => {\n if (attr === \"text\") {\n el.text(attrs[attr])\n } else {\n el.attr(attr, attrs[attr])\n }\n })\n\n removeAttrs.forEach(attr => el.attr(attr, null))\n }\n })\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\")\n }\n getNoteBBoxOffset() {\n const bbox = bboxWithoutHandles(this.note, \".annotation-note-content\")\n const transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g)\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy\n bbox.offsetX = this.annotation.dx\n bbox.offsetY = this.annotation.dy\n return bbox\n }\n\n drawSubject(context = {}) {\n const subjectData = this.annotation.subject\n const type = context.type\n const subjectParams = { type: this, subjectData }\n\n let subject = {}\n if (type === \"circle\") subject = subjectCircle(subjectParams)\n else if (type === \"rect\") subject = subjectRect(subjectParams)\n else if (type === \"threshold\") subject = subjectThreshold(subjectParams)\n else if (type === \"badge\")\n subject = subjectBadge(subjectParams, this.annotation)\n\n let { components = [], handles = [] } = subject\n components.forEach(c => {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = this.annotation.color\n }\n })\n\n if (this.editMode) {\n handles = handles.concat(\n this.mapHandles([{ drag: this.dragSubject.bind(this) }])\n )\n components.push({ type: \"handle\", handles })\n }\n\n return components\n }\n\n drawConnector(context = {}) {\n const connectorData = this.annotation.connector\n const type = connectorData.type || context.type\n const connectorParams = { type: this, connectorData }\n connectorParams.subjectType =\n this.typeSettings &&\n this.typeSettings.subject &&\n this.typeSettings.subject.type\n\n let connector = {}\n if (type === \"curve\") connector = connectorCurve(connectorParams)\n else if (type === \"elbow\") connector = connectorElbow(connectorParams)\n else connector = connectorLine(connectorParams)\n let { components = [], handles = [] } = connector\n const line = components[0]\n //TODO: genericize this into fill t/f stroke t/f\n if (line) {\n line.attrs.stroke = this.annotation.color\n line.attrs.fill = \"none\"\n }\n const endType = connectorData.end || context.end\n let end = {}\n if (endType === \"arrow\") {\n let s = line.data[1]\n const e = line.data[0]\n const distance = Math.sqrt(\n Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2)\n )\n if (distance < 5 && line.data[2]) {\n s = line.data[2]\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n })\n } else if (endType === \"dot\") {\n end = connectorDot({ line, scale: connectorData.endScale })\n } else if (!endType || endType === \"none\") {\n this.connector && this.connector.select(\".connector-end\").remove()\n }\n\n if (end.components) {\n end.components.forEach(c => {\n c.attrs.fill = this.annotation.color\n c.attrs.stroke = this.annotation.color\n })\n components = components.concat(end.components)\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles })\n }\n return components\n }\n\n drawNote(context = {}) {\n const noteData = this.annotation.note\n const align = noteData.align || context.align || \"dynamic\"\n const noteParams = {\n bbox: context.bbox,\n align,\n offset: this.annotation.offset\n }\n const lineType = noteData.lineType || context.lineType\n let note = {}\n if (lineType === \"vertical\") note = noteVertical(noteParams)\n else if (lineType === \"horizontal\") note = noteHorizontal(noteParams)\n\n let { components = [], handles = [] } = note\n components.forEach(c => {\n c.attrs.stroke = this.annotation.color\n })\n\n if (this.editMode) {\n handles = this.mapHandles([\n { x: 0, y: 0, drag: this.dragNote.bind(this) }\n ])\n components.push({ type: \"handle\", handles })\n\n const dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this)\n this.note.call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => start(d))\n .on(\"drag\", d => dragging(d))\n .on(\"end\", d => end(d))\n )\n } else {\n this.note.on(\"mousedown.drag\", null)\n }\n return components\n }\n\n drawNoteContent(context) {\n const noteData = this.annotation.note\n const padding =\n noteData.padding !== undefined ? noteData.padding : this.notePadding\n let orientation = noteData.orientation || context.orientation || \"topBottom\"\n const lineType = noteData.lineType || context.lineType\n const align = noteData.align || context.align || \"dynamic\"\n\n if (lineType === \"vertical\") orientation = \"leftRight\"\n else if (lineType === \"horizontal\") orientation = \"topBottom\"\n\n const noteParams = {\n padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation,\n align\n }\n const { x, y } = noteAlignment(noteParams)\n this.offsetCornerX = x + this.annotation.dx\n this.offsetCornerY = y + this.annotation.dy\n this.note && this.noteContent.attr(\"transform\", `translate(${x}, ${y})`)\n\n return []\n }\n\n drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction)\n }\n\n redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject())\n }\n\n redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector())\n }\n\n redrawNote(bbox = this.getNoteBBox()) {\n this.noteContent &&\n this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox }))\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox }))\n }\n\n setPosition() {\n const position = this.annotation.position\n this.a.attr(\"transform\", `translate(${position.x}, ${position.y})`)\n }\n\n clearComponents() {\n this.subject && this.subject.select(\"*\").remove()\n this.connector && this.connector.select(\"*\").remove()\n // this.note && this.note.select(\"*\").remove()\n }\n\n setOffset() {\n if (this.note) {\n const offset = this.annotation.offset\n this.note.attr(\"transform\", `translate(${offset.x}, ${offset.y})`)\n }\n }\n\n setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors)\n this.mapY(accessors)\n }\n this.setPosition()\n }\n\n setClassName() {\n this.a.attr(\n \"class\",\n `annotation ${this.className && this.className()} ${\n this.editMode ? \"editable\" : \"\"\n } ${this.annotation.className || \"\"}`\n )\n }\n\n draw() {\n this.setClassName()\n this.setPosition()\n this.setOffset()\n this.redrawSubject()\n this.redrawConnector()\n this.redrawNote()\n }\n\n dragstarted() {\n event.sourceEvent.stopPropagation()\n this.dispatcher &&\n this.dispatcher.call(\"dragstart\", this.a, this.annotation)\n this.a.classed(\"dragging\", true)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\")\n }\n dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation)\n this.a.classed(\"dragging\", false)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\")\n }\n\n dragSubject() {\n const position = this.annotation.position\n position.x += event.dx\n position.y += event.dy\n this.annotation.position = position\n }\n\n dragNote() {\n const offset = this.annotation.offset\n offset.x += event.dx\n offset.y += event.dy\n this.annotation.offset = offset\n }\n\n mapHandles(handles) {\n return handles.map(h => ({\n ...h,\n start: this.dragstarted.bind(this),\n end: this.dragended.bind(this)\n }))\n }\n}\n\nexport const customType = (initialType, typeSettings, init) => {\n return class customType extends initialType {\n constructor(settings) {\n super(settings)\n this.typeSettings = typeSettings\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(d => {\n this[d] && this[d].remove()\n\n this[d] = undefined\n if (d === \"note\") {\n this.noteContent = undefined\n }\n })\n }\n }\n\n static init(annotation, accessors) {\n super.init(annotation, accessors)\n if (init) {\n annotation = init(annotation, accessors)\n }\n return annotation\n }\n\n className() {\n return `${typeSettings.className ||\n super.className && super.className() ||\n \"\"}`\n }\n\n drawSubject(context) {\n this.typeSettings.subject = Object.assign(\n {},\n typeSettings.subject,\n this.typeSettings.subject\n )\n return super.drawSubject({ ...context, ...this.typeSettings.subject })\n }\n\n drawConnector(context) {\n this.typeSettings.connector = Object.assign(\n {},\n typeSettings.connector,\n this.typeSettings.connector\n )\n return super.drawConnector({\n ...context,\n ...typeSettings.connector,\n ...this.typeSettings.connector\n })\n }\n\n drawNote(context) {\n this.typeSettings.note = Object.assign(\n {},\n typeSettings.note,\n this.typeSettings.note\n )\n return super.drawNote({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n\n drawNoteContent(context) {\n return super.drawNoteContent({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n }\n}\n\nexport class d3NoteText extends Type {\n constructor(params) {\n super(params)\n this.textWrap = params.textWrap || 120\n this.drawText()\n }\n\n updateTextWrap(textWrap) {\n this.textWrap = textWrap\n this.drawText()\n }\n\n //TODO: add update text functionality\n\n drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\")\n\n const noteContent = this.note.select(\"g.annotation-note-content\")\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\")\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-label\"\n )\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-title\"\n )\n\n let titleBBox = { height: 0 }\n const label = this.a.select(\"text.annotation-note-label\")\n const wrapLength =\n this.annotation.note && this.annotation.note.wrap ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrap ||\n this.textWrap\n\n const wrapSplitter =\n this.annotation.note && this.annotation.note.wrapSplitter ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrapSplitter\n\n let bgPadding =\n this.annotation.note && this.annotation.note.bgPadding ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.bgPadding\n\n let bgPaddingFinal = { top: 0, bottom: 0, left: 0, right: 0 }\n if (typeof bgPadding === \"number\") {\n bgPaddingFinal = {\n top: bgPadding,\n bottom: bgPadding,\n left: bgPadding,\n right: bgPadding\n }\n } else if (bgPadding && typeof bgPadding === \"object\") {\n bgPaddingFinal = Object.assign(bgPaddingFinal, bgPadding)\n }\n\n if (this.annotation.note.title) {\n const title = this.a.select(\"text.annotation-note-title\")\n title.text(this.annotation.note.title)\n title.attr(\"fill\", this.annotation.color)\n title.attr(\"font-weight\", \"bold\")\n title.call(wrap, wrapLength, wrapSplitter)\n titleBBox = title.node().getBBox()\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\")\n label.call(wrap, wrapLength, wrapSplitter)\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0)\n label.attr(\"fill\", this.annotation.color)\n\n const bbox = this.getNoteBBox()\n\n this.a\n .select(\"rect.annotation-note-bg\")\n .attr(\"width\", bbox.width + bgPaddingFinal.left + bgPaddingFinal.right)\n .attr(\n \"height\",\n bbox.height + bgPaddingFinal.top + bgPaddingFinal.bottom\n )\n .attr(\"x\", bbox.x - bgPaddingFinal.left)\n .attr(\"y\", -bgPaddingFinal.top)\n .attr(\"fill\", \"white\")\n .attr(\"fill-opacity\", 0)\n }\n }\n}\n\nexport const d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n})\n\nexport const d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n})\n\nexport const d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n})\n\nexport const d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n})\n\nexport const d3CalloutCircle = customType(d3NoteText, {\n className: \"callout circle\",\n subject: { type: \"circle\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutRect = customType(d3NoteText, {\n className: \"callout rect\",\n subject: { type: \"rect\" },\n note: { lineType: \"horizontal\" },\n connector: { type: \"elbow\" }\n})\n\nclass ThresholdMap extends d3Callout {\n mapY(accessors) {\n super.mapY(accessors)\n const a = this.annotation\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data)\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2\n }\n }\n\n mapX(accessors) {\n super.mapX(accessors)\n const a = this.annotation\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data)\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2\n }\n }\n}\n\nexport const d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n})\n\nexport const newWithClass = (a, d, type, className, classID) => {\n const group = a.selectAll(`${type}.${classID || className}`).data(d)\n group\n .enter()\n .append(type)\n .merge(group)\n .attr(\"class\", className)\n\n group.exit().remove()\n return a\n}\n\nconst addHandlers = (dispatcher, annotation, { component, name }) => {\n if (component) {\n component\n .on(\"mouseover.annotations\", () => {\n dispatcher.call(`${name}over`, component, annotation)\n })\n .on(\"mouseout.annotations\", () =>\n dispatcher.call(`${name}out`, component, annotation)\n )\n .on(\"click.annotations\", () =>\n dispatcher.call(`${name}click`, component, annotation)\n )\n }\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst wrap = (text, width, wrapSplitter, lineHeight = 1.2) => {\n text.each(function() {\n const text = select(this),\n words = text\n .text()\n .split(wrapSplitter || /[ \\t\\r\\n]+/)\n .reverse()\n .filter(w => w !== \"\")\n let word,\n line = [],\n tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", 0.8 + \"em\")\n\n while (word = words.pop()) {\n line.push(word)\n tspan.text(line.join(\" \"))\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst bboxWithoutHandles = (selection, selector = \":not(.handle)\") => {\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 }\n }\n\n return selection\n .selectAll(selector)\n .nodes()\n .reduce(\n (p, c) => {\n const bbox = c.getBBox()\n p.x = Math.min(p.x, bbox.x)\n p.y = Math.min(p.y, bbox.y)\n p.width = Math.max(p.width, bbox.width)\n\n const yOffset = c && c.attributes && c.attributes.y\n p.height = Math.max(\n p.height,\n (yOffset && parseFloat(yOffset.value) || 0) + bbox.height\n )\n return p\n },\n { x: 0, y: 0, width: 0, height: 0 }\n )\n}\n\nexport default {\n Type,\n d3Label,\n d3Callout,\n d3CalloutElbow,\n d3CalloutCurve,\n d3CalloutCircle,\n d3CalloutRect,\n d3XYThreshold,\n d3Badge,\n customType\n}\n", "import Annotation from \"./Annotation\"\nimport AnnotationCollection from \"./AnnotationCollection\"\nimport { newWithClass, d3Callout } from \"./Types-d3\"\nimport { select } from \"d3-selection\"\nimport { dispatch } from \"d3-dispatch\"\n\nexport default function annotation() {\n let annotations = [],\n collection,\n context, //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids,\n type = d3Callout,\n textWrap,\n notePadding,\n annotationDispatcher = dispatch(\n \"subjectover\",\n \"subjectout\",\n \"subjectclick\",\n \"connectorover\",\n \"connectorout\",\n \"connectorclick\",\n \"noteover\",\n \"noteout\",\n \"noteclick\",\n \"dragend\",\n \"dragstart\"\n ),\n sel\n\n const annotation = function(selection) {\n sel = selection\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove()\n }\n\n const translatedAnnotations = annotations.map(a => {\n if (!a.type) {\n a.type = type\n }\n if (!a.disable) {\n a.disable = disable\n }\n return new Annotation(a)\n })\n\n collection =\n collection ||\n new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors,\n accessorsInverse,\n ids\n })\n\n const annotationG = selection.selectAll(\"g\").data([collection])\n annotationG.enter().append(\"g\").attr(\"class\", `annotations`)\n\n const group = selection.select(\"g.annotations\")\n newWithClass(group, collection.annotations, \"g\", \"annotation\")\n\n const annotation = group.selectAll(\"g.annotation\")\n\n annotation.each(function(d) {\n const a = select(this)\n\n a.attr(\"class\", \"annotation\")\n\n newWithClass(a, [d], \"g\", \"annotation-connector\")\n newWithClass(a, [d], \"g\", \"annotation-subject\")\n newWithClass(a, [d], \"g\", \"annotation-note\")\n newWithClass(\n a.select(\"g.annotation-note\"),\n [d],\n \"g\",\n \"annotation-note-content\"\n )\n d.type =\n d.type.toString() === \"[object Object]\"\n ? d.type\n : new d.type({\n a,\n annotation: d,\n textWrap,\n notePadding,\n editMode,\n dispatcher: annotationDispatcher,\n accessors\n })\n d.type.draw()\n d.type.drawText && d.type.drawText()\n })\n }\n\n annotation.json = function() {\n /* eslint-disable no-console */\n console.log(\n \"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\",\n collection.json\n )\n /* eslint-enable no-console */\n window.copy(\n JSON.stringify(\n collection.json.map(a => {\n delete a.type\n return a\n })\n )\n )\n return annotation\n }\n\n annotation.update = function() {\n if (annotations && collection) {\n annotations = collection.annotations.map(a => {\n a.type.draw()\n return a\n })\n }\n return annotation\n }\n\n annotation.updateText = function() {\n if (collection) {\n collection.updateText(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.updatedAccessors = function() {\n collection.setPositionWithAccessors()\n annotations = collection.annotations\n return annotation\n }\n\n annotation.disable = function(_) {\n if (!arguments.length) return disable\n disable = _\n if (collection) {\n collection.updateDisable(disable)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n if (collection) {\n collection.updateTextWrap(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.notePadding = function(_) {\n if (!arguments.length) return notePadding\n notePadding = _\n if (collection) {\n collection.updateNotePadding(notePadding)\n annotations = collection.annotations\n }\n return annotation\n }\n //todo think of how to handle when undefined is sent\n annotation.type = function(_, settings) {\n if (!arguments.length) return type\n type = _\n if (collection) {\n collection.annotations.map(a => {\n a.type.note &&\n a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove()\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove()\n a.type.subject && a.type.subject.selectAll(\"*\").remove()\n a.type.connector && a.type.connector.selectAll(\"*\").remove()\n a.type.typeSettings = {}\n a.type = type\n\n a.subject = settings && settings.subject || a.subject\n a.connector = settings && settings.connector || a.connector\n a.note = settings && settings.note || a.note\n })\n\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.annotations = function(_) {\n if (!arguments.length)\n return collection && collection.annotations || annotations\n annotations = _\n\n if (collection && collection.annotations) {\n const rerun = annotations.some(\n d => !d.type || d.type.toString() !== \"[object Object]\"\n )\n\n if (rerun) {\n collection = null\n annotation(sel)\n } else {\n collection.annotations = annotations\n }\n }\n return annotation\n }\n\n annotation.context = function(_) {\n if (!arguments.length) return context\n context = _\n return annotation\n }\n\n annotation.accessors = function(_) {\n if (!arguments.length) return accessors\n accessors = _\n return annotation\n }\n\n annotation.accessorsInverse = function(_) {\n if (!arguments.length) return accessorsInverse\n accessorsInverse = _\n return annotation\n }\n\n annotation.ids = function(_) {\n if (!arguments.length) return ids\n ids = _\n return annotation\n }\n\n annotation.editMode = function(_) {\n if (!arguments.length) return editMode\n editMode = _\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode)\n }\n\n if (collection) {\n collection.editMode(editMode)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.collection = function(_) {\n if (!arguments.length) return collection\n collection = _\n return annotation\n }\n\n annotation.on = function() {\n const value = annotationDispatcher.on.apply(annotationDispatcher, arguments)\n return value === annotationDispatcher ? annotation : value\n }\n\n return annotation\n}\n", "import annotation from './src/Adapter-d3'\nimport { Type, d3Label, d3Callout, d3CalloutCurve, d3CalloutElbow, d3CalloutCircle, \n d3CalloutRect, d3XYThreshold, d3Badge, customType } from './src/Types-d3'\n\nexport {\n annotation,\n Type as annotationTypeBase ,\n d3Label as annotationLabel ,\n d3Callout as annotationCallout ,\n d3CalloutCurve as annotationCalloutCurve ,\n d3CalloutElbow as annotationCalloutElbow ,\n d3CalloutCircle as annotationCalloutCircle ,\n d3CalloutRect as annotationCalloutRect ,\n d3XYThreshold as annotationXYThreshold ,\n d3Badge as annotationBadge ,\n customType as annotationCustomType \n}\n\nexport default {\n 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}", "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", "(function(){\n if (!document.getElementById('f0535be3')) {\n var e = document.createElement('style');\n e.id = 'f0535be3';\n e.textContent = `.chart_Pie path {\n cursor: pointer;\n}\n\n.chart_Pie > g > text {\n cursor: pointer;\n}\n\n.chart_Pie .arc path {\n stroke: white;\n stroke-width: 0.75px;\n}\n\n.chart_Pie .arc.selected path {\n stroke: red;\n stroke-width: 1.5px;\n}\n\n.chart_Pie polyline {\n opacity: .3;\n stroke: black;\n stroke-width: 2px;\n fill: none;\n}`;\n document.head.appendChild(e);\n }\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", "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", "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", "(function(){\n if (!document.getElementById('eb186e30')) {\n var e = document.createElement('style');\n e.id = 'eb186e30';\n e.textContent = `.chart_HexBin .hexagon {\n fill: none;\n stroke: #000;\n stroke-width: .5px;\n}\n\n.chart_HexBin .hexagon.selected {\n stroke: red;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "(function(){\n if (!document.getElementById('755ddb76')) {\n var e = document.createElement('style');\n e.id = '755ddb76';\n e.textContent = `.chart_Line .dataLine {\n fill: none;\n stroke: steelblue;\n stroke-width: 1.5px;\n}\n\n`;\n document.head.appendChild(e);\n }\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", "(function(){\n if (!document.getElementById('a617941b')) {\n var e = document.createElement('style');\n e.id = 'a617941b';\n e.textContent = `.chart_Radar .pointShape,\n.chart_Radar .area {\n pointer-events: none;\n}\n\n.chart_Radar .point .pointSelection {\n fill: none;\n stroke: none;\n pointer-events: all;\n}\n\n.chart_Radar .point .pointSelection.selected {\n fill: none;\n stroke: red;\n}\n`;\n document.head.appendChild(e);\n }\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", "(function(){\n if (!document.getElementById('cd0e7473')) {\n var e = document.createElement('style');\n e.id = 'cd0e7473';\n e.textContent = `.chart_RadialBar path.arc {\n opacity: 0.9;\n transition: opacity 0.5s;\n}\n\n.chart_RadialBar path.arc.selected {\n stroke: red;\n}\n\n.chart_RadialBar path.arc:hover {\n opacity: 0.7;\n}\n\n.chart_RadialBar .axis line,\n.chart_RadialBar .axis circle {\n stroke: #cccccc;\n stroke-width: 1px\n}\n\n.chart_RadialBar .axis circle {\n fill: none;\n}\n\n.chart_RadialBar .r.axis text {\n text-anchor: end\n}`;\n document.head.appendChild(e);\n }\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\u03C3\", value: this.stdDev(-3) },\n { label: \"-2\u03C3\", value: this.stdDev(-2) },\n { label: \"-1\u03C3\", value: this.stdDev(-1) },\n { label: this.formatStdDev(0), value: this.stdDev(0) },\n { label: \"+1\u03C3\", value: this.stdDev(1) },\n { label: \"+2\u03C3\", value: this.stdDev(2) },\n { label: \"+3\u03C3\", 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 (\u03C3)\");\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", "(function(){\n if (!document.getElementById('7a5a04b5')) {\n var e = document.createElement('style');\n e.id = '7a5a04b5';\n e.textContent = `.chart_Summary {\n width: 225px;\n height: 150px;\n font-size: 14px;\n}\n\n.chart_Summary .content h2 {\n font-weight: bold;\n font-size: 3em;\n margin-left: 10px;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n.chart_Summary .bgIcon:before {\n position: absolute;\n font-family: FontAwesome;\n font-size: 5.5em;\n opacity: 0.4;\n top: 0.5em;\n right: 15px;\n}\n\n.chart_Summary .bgIcon {\n position: relative;\n}\n \n.chart_Summary .content {\n float: left;\n width: 100%;\n height: 100%;\n background-color: #efd752;\n}\n\n.chart_Summary .content div {\n margin-top: -1.1em;\n font-size: 1.1em;\n opacity: 0.8;\n}\n\n.chart_Summary .content .text {\n padding-left: 10px;\n}\n\n.chart_Summary .content .more {\n position: absolute;\n bottom:0px;\n width: 100%;\n height: 3em;\n line-height: 3em;\n}\n\n.chart_Summary .content .more i {\n padding-left: 10px;\n padding-right: 0.5em;\n}\n`;\n document.head.appendChild(e);\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", "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", "// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nimport { dispatch } from \"d3-dispatch\";\n\nconst cloudRadians = Math.PI / 180;\nconst cw = 1 << 11 >> 5;\nconst ch = 1 << 11;\n\nexport function d3Cloud() {\n const event = dispatch(\"word\", \"end\");\n const cloud: any = {};\n\n let size = [256, 256];\n let text = cloudText;\n let font = cloudFont;\n let fontSize = cloudFontSize;\n let fontStyle = cloudFontNormal;\n let fontWeight = cloudFontNormal;\n let rotate = cloudRotate;\n let padding = cloudPadding;\n let words = [];\n let spiral = archimedeanSpiral;\n let timeInterval = Infinity;\n let timer = null;\n let random = Math.random;\n let canvas = cloudCanvas;\n\n cloud.canvas = function (_?) {\n return arguments.length ? (canvas = functor(_), cloud) : canvas;\n };\n\n cloud.start = function () {\n const contextAndRatio = getContext(canvas());\n const board = zeroArray((size[0] >> 5) * size[1]);\n let bounds = null;\n const n = words.length;\n let i = -1;\n const tags = [];\n const data = words.map(function (d, i) {\n d.text = text.call(this, d, i);\n d.font = font.call(this, d, i);\n d.style = fontStyle.call(this, d, i);\n d.weight = fontWeight.call(this, d, i);\n d.rotate = rotate.call(this, d, i);\n d.size = ~~fontSize.call(this, d, i);\n d.padding = padding.call(this, d, i);\n return d;\n }).sort(function (a, b) { return b.size - a.size; });\n\n if (timer) clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n\n return cloud;\n\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n && timer) {\n const d = data[i];\n d.x = (size[0] * (random() + .5)) >> 1;\n d.y = (size[1] * (random() + .5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n event.call(\"word\", cloud, d);\n if (bounds) cloudBounds(bounds, d);\n else bounds = [{ x: d.x + d.x0, y: d.y + d.y0 }, { x: d.x + d.x1, y: d.y + d.y1 }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n if (i >= n) {\n cloud.stop();\n event.call(\"end\", cloud, tags, bounds);\n }\n }\n };\n\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext(\"2d\").getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n\n const context = canvas.getContext(\"2d\");\n context.fillStyle = context.strokeStyle = \"red\";\n context.textAlign = \"center\";\n\n return { context, ratio };\n }\n\n function place(board, tag, bounds) {\n const startX = tag.x;\n const startY = tag.y;\n const maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]);\n const s = spiral(size);\n const dt = random() < .5 ? 1 : -1;\n let t = -dt;\n let dxdy;\n let dx;\n let dy;\n\n // eslint-disable-next-line no-cond-assign\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n\n tag.x = startX + dx;\n tag.y = startY + dy;\n\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const sw = size[0] >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n\n cloud.timeInterval = function (_?) {\n return arguments.length ? (timeInterval = _ == null ? Infinity : _, cloud) : timeInterval;\n };\n\n cloud.words = function (_?) {\n return arguments.length ? (words = _, cloud) : words;\n };\n\n cloud.size = function (_?) {\n return arguments.length ? (size = [+_[0], +_[1]], cloud) : size;\n };\n\n cloud.font = function (_?) {\n return arguments.length ? (font = functor(_), cloud) : font;\n };\n\n cloud.fontStyle = function (_?) {\n return arguments.length ? (fontStyle = functor(_), cloud) : fontStyle;\n };\n\n cloud.fontWeight = function (_?) {\n return arguments.length ? (fontWeight = functor(_), cloud) : fontWeight;\n };\n\n cloud.rotate = function (_?) {\n return arguments.length ? (rotate = functor(_), cloud) : rotate;\n };\n\n cloud.text = function (_?) {\n return arguments.length ? (text = functor(_), cloud) : text;\n };\n\n cloud.spiral = function (_?) {\n return arguments.length ? (spiral = spirals[_] || _, cloud) : spiral;\n };\n\n cloud.fontSize = function (_?) {\n return arguments.length ? (fontSize = functor(_), cloud) : fontSize;\n };\n\n cloud.padding = function (_?) {\n return arguments.length ? (padding = functor(_), cloud) : padding;\n };\n\n cloud.random = function (_?) {\n return arguments.length ? (random = _, cloud) : random;\n };\n\n cloud.on = function () {\n const value = event.on.apply(event, arguments);\n return value === event ? cloud : value;\n };\n\n return cloud;\n}\n\nfunction cloudText(d) {\n return d.text;\n}\n\nfunction cloudFont() {\n return \"serif\";\n}\n\nfunction cloudFontNormal() {\n return \"normal\";\n}\n\nfunction cloudFontSize(d) {\n return Math.sqrt(d.value);\n}\n\nfunction cloudRotate() {\n return (~~(Math.random() * 6) - 3) * 30;\n}\n\nfunction cloudPadding() {\n return 1;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n const c = contextAndRatio.context;\n const ratio = contextAndRatio.ratio;\n\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0;\n let y = 0;\n let maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + \" \" + d.weight + \" \" + ~~((d.size + 1) / ratio) + \"px \" + d.font;\n let w = c.measureText(d.text + \"m\").width * ratio;\n let h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians);\n const cr = Math.cos(d.rotate * cloudRadians);\n const wcr = w * cr;\n const wsr = w * sr;\n const hcr = h * cr;\n const hsr = h * sr;\n w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = (w + 0x1f) >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= (cw << 5)) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) c.lineWidth = 2 * d.padding, c.strokeText(d.text, 0, 0);\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data;\n const sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n const w = d.width;\n const w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n let seen = 0;\n let seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5);\n const m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite;\n const w = tag.width >> 5;\n const lx = tag.x - (w << 4);\n const sx = lx & 0x7f;\n const msx = 32 - sx;\n const h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5);\n let last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0))\n & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\n\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0];\n const b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\n\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\n\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\n\nfunction rectangularSpiral(size) {\n const dy = 4;\n const dx = dy * size[0] / size[1];\n let x = 0;\n let y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0: x += dx; break;\n case 1: y += dy; break;\n case 2: x -= dx; break;\n default: y -= dy; break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\n\nfunction cloudCanvas() {\n return document.createElement(\"canvas\");\n}\n\nfunction functor(d) {\n return typeof d === \"function\" ? d : function () { return d; };\n}\n\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n", "(function(){\n if (!document.getElementById('09ec0fe9')) {\n var e = document.createElement('style');\n e.id = '09ec0fe9';\n e.textContent = `.other_Wordcloud text {\n cursor: pointer;\n}\n`;\n document.head.appendChild(e);\n }\n })();"],
5
+ "mappings": "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",
6
+ "names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "INDChart", "ITooltip", "d3Extent", "d3ScaleLinear", "d3ScaleLog", "d3ScalePow", "d3ScaleSqrt", "d3Select", "pi", "tau", "epsilon", "tauEpsilon", "Path", "__name", "path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path_default", "constant_default", "x", "__name", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "__name", "asin", "arcInnerRadius", "d", "__name", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "path_default", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "Linear", "context", "__name", "x", "y", "linear_default", "x", "p", "__name", "y", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "line", "data", "i", "n", "d", "defined0", "buffer", "path_default", "__name", "_", "area_default", "x0", "x", "x1", "y0", "constant_default", "y1", "y", "defined", "context", "curve", "linear_default", "output", "area", "data", "i", "j", "k", "n", "d", "defined0", "buffer", "x0z", "y0z", "path_default", "__name", "arealine", "line_default", "_", "descending_default", "a", "b", "__name", "identity_default", "d", "__name", "pie_default", "value", "identity_default", "sortValues", "descending_default", "sort", "startAngle", "constant_default", "endAngle", "tau", "padAngle", "pie", "data", "i", "n", "j", "k", "sum", "index", "arcs", "a0", "da", "a1", "p", "pa", "v", "__name", "_", "point", "that", "x", "y", "__name", "Basis", "context", "basis_default", "Bundle", "context", "beta", "Basis", "__name", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "bundle_default", "custom", "bundle", "point", "that", "x", "y", "__name", "Cardinal", "context", "tension", "cardinal_default", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "__name", "CatmullRom", "context", "alpha", "x23", "y23", "catmullRom_default", "custom", "catmullRom", "Cardinal", "sign", "x", "__name", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "y", "MonotoneY", "ReflectContext", "monotoneX", "Natural", "context", "__name", "x", "y", "n", "px", "controlPoints", "py", "i0", "i1", "i", "m", "a", "b", "r", "natural_default", "Step", "context", "__name", "x", "y", "x1", "step_default", "stepBefore", "stepAfter", "d3Event", "d3Select", "SVGWidget", "Utility", "d3Max", "d3Min", "d3Brush", "d3BrushSelection", "d3BrushX", "d3BrushY", "d3Hsl", "SVGWidget", "slice", "identity_default", "x", "__name", "top", "right", "bottom", "left", "epsilon", "translateX", "x", "__name", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "transform", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "p", "_", "slice", "axisTop", "axisRight", "axisBottom", "axisLeft", "d3Format", "d3ScaleBand", "d3ScaleLinear", "d3ScaleLog", "d3ScalePow", "d3ScaleTime", "d3Select", "d3TimeFormat", "d3TimeParse", "Axis", "SVGWidget", "__name", "drawStartPosition", "d", "forceNumeric", "d2", "retVal", "_", "pos", "d3Select", "domNode", "element", "d3ScaleBand", "mappings", "d3ScaleLinear", "d3Format", "d3ScalePow", "d3ScaleLog", "d3ScaleTime", "d3TimeParse", "d3TimeFormat", "axisLeft", "axisTop", "axisRight", "axisBottom", "length", "delta", "low", "high", "newLow", "newHigh", "customTicks", "_d", "i", "svg", "tickOverlapModulus", "isHoriztontal", "isLeft", "isBottom", "context", "textSelection", "deg", "elm", "bbox", "dyOff", "bboxArr", "ignoreText", "isHorizontal", "tmpSvg", "tmpSvgG", "_text", "bandSize", "re", "text", "words", "line", "lineNumber", "lineHeight", "x", "y", "fs", "maxLinesPerBand", "minWordsPerLine", "dy", "tspan", "wordsOnLine", "word", "overlap", "lowerPos", "upperPos", "doPosition", "svgLineBBox", "svgText", "svgTitleTransition", "w", "XYAxis", "SVGWidget", "__name", "Utility", "Axis", "d3Brush", "d3BrushX", "d3BrushY", "d", "row", "prevValue", "cell", "idx", "_retVal", "domNode", "element", "width", "height", "e", "x", "y", "_", "selected", "context", "currSel", "d3BrushSelection", "pos", "pos2", "isHorizontal", "handleTypes", "handlePath", "s", "d3Event", "_d", "i", "host", "_domNode", "margin", "xRight", "xHeight", "yTop", "yWidth", "xAxisOverlap", "newXHeight", "yAxisOverlap", "newYWidth", "_element", "regions", "d3Hsl", "colLen", "ordinalMappings", "domainMin", "d3Min", "data", "domainMax", "d3Max", "min", "max", "maxCurrExtent", "maxOtherExtent", "currBrush", "prevBrushSel", "tmp", "ratio", "focusChart", "w", "layerIdx", "layer", "scale", "masterColumns", "retVal", "col", "column", "indices", "duration", "_selected", "d3Select", "selRows", "origRow", "lparam", "Scatter", "XYAxis", "__name", "INDChart", "ITooltip", "host", "d", "linear_default", "step_default", "stepBefore", "stepAfter", "basis_default", "bundle_default", "cardinal_default", "catmullRom_default", "natural_default", "monotoneX", "d3ScaleLinear", "d3ScalePow", "d3ScaleLog", "d3ScaleSqrt", "row", "col", "value", "origRow", "element", "duration", "context", "column", "i", "isHorizontal", "height", "mapShape", "shape", "usePointSizeColumn", "pointSizeColumnIdx", "extent", "scale", "d3Extent", "layerColumns", "layerData", "flatData", "areas", "_d", "idx", "areasEnter", "area", "area_default", "d3Select", "d2", "lines", "linesEnter", "line", "line_default", "data2", "points", "_idx", "domNode", "w", "Area", "Scatter", "__name", "INDChart", "ITooltip", "Text", "d3Format", "d3ScaleBand", "d3Local", "d3Select", "Column", "XYAxis", "__name", "d3Local", "INDChart", "ITooltip", "host", "element", "duration", "context", "d", "column", "i", "value", "row", "prevValue", "cell", "idx", "retVal2", "isHorizontal", "formatPct", "d3Format", "dataLen", "offset", "columnScale", "d3ScaleBand", "_d", "domainSums", "seriesSums", "columnLength", "rowData", "col", "sum", "hostData", "axisSize", "dataRow", "dataRowIdx", "d3Select", "columnGRect", "columnGEnter", "domainLength", "domainPos", "upperValue", "valueText", "dm", "seriesSum", "domainSum", "upperValuePos", "lowerValuePos", "valuePos", "valueLength", "innerTextHeight", "innerTextPadding", "dataRect", "_rects", "_texts", "padding", "textHeightOffset", "y", "innerText", "clippedValueLength", "innerTextObj", "dataText", "Text", "pos", "valueFontFamily", "valueFontSize", "textSize", "isPositive", "valueAnchor", "leftSpace", "rightSpace", "topSpace", "bottomSpace", "noRoomInside", "isOutside", "noRoomOnExpectedSide", "valueTextWidth", "textColor", "columns", "hideValue", "value4pos", "_", "stackedTotalText", "fontFamily", "fontSize", "ellipsisWidth", "innerTextWidth", "origInnerText", "fullWidth", "fullWidth2", "fullWidth3", "category", "excessWidth", "_text", "letter", "origRow", "lparam", "w", "Bar", "Column", "__name", "I2DChart", "ITooltip", "FAChar", "SVGWidget", "Text", "Utility", "count", "node", "sum", "children", "i", "__name", "count_default", "each_default", "callback", "node", "current", "next", "children", "i", "n", "__name", "eachBefore_default", "callback", "node", "nodes", "children", "i", "__name", "eachAfter_default", "callback", "node", "nodes", "next", "children", "i", "n", "__name", "sum_default", "value", "node", "sum", "children", "i", "__name", "sort_default", "compare", "node", "__name", "path_default", "end", "start", "ancestor", "leastCommonAncestor", "nodes", "k", "__name", "a", "b", "aNodes", "bNodes", "c", "ancestors_default", "node", "nodes", "__name", "descendants_default", "nodes", "node", "__name", "leaves_default", "leaves", "node", "__name", "links_default", "root", "links", "node", "__name", "hierarchy", "data", "children", "root", "Node", "valued", "node", "nodes", "child", "childs", "i", "n", "defaultChildren", "computeHeight", "__name", "node_copy", "copyData", "d", "height", "count_default", "each_default", "eachAfter_default", "eachBefore_default", "sum_default", "sort_default", "path_default", "ancestors_default", "descendants_default", "leaves_default", "links_default", "slice", "shuffle", "array", "m", "t", "i", "__name", "enclose_default", "circles", "i", "n", "shuffle", "slice", "B", "p", "e", "enclosesWeak", "encloseBasis", "extendBasis", "__name", "j", "enclosesWeakAll", "enclosesNot", "encloseBasis2", "encloseBasis3", "a", "b", "dr", "dx", "dy", "encloseBasis1", "x1", "y1", "r1", "x2", "y2", "r2", "x21", "y21", "r21", "l", "c", "x3", "y3", "r3", "a2", "a3", "b2", "b3", "c2", "c3", "d1", "d2", "d3", "ab", "xa", "xb", "ya", "yb", "A", "C", "r", "place", "b", "a", "c", "dx", "x", "a2", "dy", "y", "b2", "d2", "__name", "intersects", "dr", "score", "node", "ab", "Node", "circle", "packEnclose", "circles", "n", "aa", "ca", "i", "j", "k", "sj", "sk", "pack", "enclose_default", "optional", "f", "required", "__name", "constantZero", "__name", "constant_default", "x", "defaultRadius", "d", "__name", "pack_default", "radius", "dx", "dy", "padding", "constantZero", "pack", "root", "radiusLeaf", "packChildren", "translateChild", "x", "optional", "constant_default", "node", "k", "children", "i", "n", "r", "e", "packEnclose", "parent", "d3Select", "Bubble", "SVGWidget", "__name", "I2DChart", "ITooltip", "Utility", "pack_default", "_", "retVal", "domNode", "element", "context", "d", "column", "i", "root", "hierarchy", "b", "a", "node", "element2", "d3Select", "pos", "FAChar", "Text", "BubbleXY", "Scatter", "__name", "domNode", "element", "HTMLWidget", "Utility", "d3Select", "d3Descending", "d3ScaleLinear", "d3Select", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "__name", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "e", "wake", "nap", "poke", "t0", "t1", "t2", "bullet_default", "orient", "reverse", "vertical", "ranges", "bulvarRanges", "markers", "bulvarMarkers", "measures", "bulvarMeasures", "width", "height", "xAxis", "axisLeft", "bulvar", "g", "d", "i", "rangez", "d3Descending", "markerz", "measurez", "g2", "d3Select", "extentX", "extentY", "wrap", "x1", "d3ScaleLinear", "x0", "w0", "bulvarWidth", "w1", "range", "_d", "i2", "measure", "marker", "axis", "timerFlush", "__name", "_", "x", "Bullet", "HTMLWidget", "__name", "Utility", "context", "columns", "row", "valueOf", "column", "columnType", "colIdx", "domNode", "element", "d3Select", "_domNode", "margin", "width", "height", "svg", "svgUpdate", "bulletTitle", "d", "i", "title", "titleWidth", "bbox", "chart", "bullet_default", "selected", "I1DChart", "extent", "thresholdSturges", "tickStep", "range", "array", "slice", "ascending_default", "a", "b", "__name", "area_default", "ring", "i", "n", "area", "__name", "constant_default", "x", "__name", "contains_default", "ring", "hole", "c", "ringContains", "__name", "point", "x", "y", "contains", "i", "n", "j", "pi", "xi", "yi", "pj", "xj", "yj", "segmentContains", "a", "b", "collinear", "within", "p", "q", "r", "noop_default", "__name", "cases", "contours_default", "dx", "dy", "threshold", "thresholdSturges", "smooth", "smoothLinear", "contours", "values", "tz", "ascending_default", "domain", "extent", "start", "stop", "tickStep", "range", "value", "contour", "__name", "polygons", "holes", "isorings", "ring", "area_default", "hole", "i", "n", "polygon", "contains_default", "callback", "fragmentByStart", "fragmentByEnd", "x", "y", "t0", "t1", "t2", "t3", "stitch", "line", "end", "startIndex", "index", "endIndex", "f", "g", "point", "xt", "yt", "v0", "v1", "_", "_0", "_1", "constant_default", "slice", "noop_default", "max", "range", "tickStep", "blurX", "source", "target", "r", "m", "w", "j", "i", "sr", "__name", "blurY", "defaultX", "d", "__name", "defaultY", "defaultWeight", "density_default", "x", "y", "weight", "dx", "dy", "r", "k", "o", "n", "m", "threshold", "constant_default", "density", "data", "values0", "values1", "i", "xi", "yi", "wi", "blurX", "blurY", "tz", "stop", "max", "tickStep", "range", "contours_default", "transform", "geometry", "transformPolygon", "coordinates", "transformRing", "transformPoint", "resize", "_", "_0", "_1", "slice", "adder_default", "Adder", "__name", "y", "add", "temp", "adder", "a", "b", "x", "bv", "av", "pi", "halfPi", "quarterPi", "tau", "degrees", "radians", "abs", "sqrt", "noop", "__name", "streamGeometry", "geometry", "stream", "streamGeometryType", "__name", "streamObjectType", "object", "features", "i", "n", "coordinates", "streamLine", "streamPolygon", "geometries", "closed", "coordinate", "stream_default", "identity_default", "x", "__name", "areaSum", "adder_default", "areaRingSum", "x00", "y00", "x0", "y0", "areaStream", "noop", "__name", "areaRingStart", "areaRingEnd", "abs", "area", "areaPointFirst", "x", "y", "areaPoint", "area_default", "x0", "y0", "x1", "y1", "boundsStream", "boundsPoint", "noop", "__name", "bounds", "x", "y", "bounds_default", "X0", "Y0", "Z0", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "x00", "y00", "x0", "y0", "centroidStream", "centroidPoint", "centroidLineStart", "centroidLineEnd", "__name", "centroidRingStart", "centroidRingEnd", "centroid", "x", "y", "centroidPointFirstLine", "centroidPointLine", "dx", "dy", "z", "sqrt", "centroidPointFirstRing", "centroidPointRing", "centroid_default", "PathContext", "context", "__name", "_", "x", "y", "tau", "noop", "lengthSum", "adder_default", "lengthRing", "x00", "y00", "x0", "y0", "lengthStream", "noop", "__name", "lengthPointFirst", "lengthPoint", "length", "x", "y", "sqrt", "measure_default", "PathString", "__name", "circle", "_", "x", "y", "result", "radius", "path_default", "projection", "context", "pointRadius", "projectionStream", "contextStream", "path", "object", "stream_default", "__name", "area_default", "measure_default", "bounds_default", "centroid_default", "_", "identity_default", "PathString", "PathContext", "Contour", "XYAxis", "__name", "host", "d", "element", "duration", "data", "contourData", "density_default", "_vals", "minValue", "maxValue", "lines", "path_default", "_domNode", "_element", "I1DChart", "Gantt", "Bar", "__name", "SVGWidget", "d3Format", "d3Interpolate", "d3InterpolateHcl", "scaleLinear", "constant_default", "x", "__name", "epsilon", "pi", "halfPi", "tau", "arcInnerRadius", "d", "__name", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "asin", "x", "halfPi", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "arc", "buffer", "r0", "a0", "a1", "da", "path_default", "epsilon", "tau", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "rc0", "rc1", "t0", "t1", "p0", "p1", "pi", "oc", "ax", "ay", "bx", "by", "kc", "lc", "a", "_", "Linear", "context", "__name", "x", "y", "linear_default", "x", "p", "__name", "y", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "line", "data", "i", "n", "d", "defined0", "buffer", "path_default", "__name", "_", "curveRadialLinear", "curveRadial", "linear_default", "Radial", "curve", "__name", "a", "r", "radial", "context", "tan30", "tan30_2", "kr", "pi", "kx", "tau", "ky", "sqrt3", "s", "k", "a", "noop_default", "__name", "point", "that", "x", "y", "__name", "Basis", "context", "BasisClosed", "context", "__name", "noop_default", "x", "y", "point", "BasisOpen", "context", "__name", "x", "y", "x0", "y0", "point", "Bundle", "context", "beta", "Basis", "__name", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "bundle_default", "custom", "bundle", "point", "that", "x", "y", "__name", "Cardinal", "context", "tension", "cardinal_default", "custom", "cardinal", "CardinalClosed", "context", "tension", "__name", "noop_default", "x", "y", "point", "cardinalClosed_default", "custom", "cardinal", "CardinalOpen", "context", "tension", "__name", "x", "y", "point", "cardinalOpen_default", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "__name", "CatmullRom", "context", "alpha", "x23", "y23", "catmullRom_default", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "__name", "noop_default", "x", "y", "x23", "y23", "point", "catmullRomClosed_default", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "__name", "x", "y", "x23", "y23", "point", "catmullRomOpen_default", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "__name", "noop_default", "x", "y", "sign", "x", "__name", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "y", "MonotoneY", "ReflectContext", "Natural", "context", "__name", "x", "y", "n", "px", "controlPoints", "py", "i0", "i1", "i", "m", "a", "b", "r", "Step", "context", "__name", "x", "y", "x1", "slice", "Annotation", "x", "_ref$x", "y", "_ref$y", "nx", "_ref", "ny", "dy", "_ref$dy", "dx", "_ref$dx", "color", "_ref$color", "data", "type", "subject", "connector", "note", "disable", "id", "className", "_dx", "undefined", "_dy", "_x", "_y", "_color", "_className", "_type", "setPosition", "selectAll", "nodes", "length", "redrawSubject", "clearComponents", "setOffset", "redrawConnector", "redrawNote", "setClassName", "updatePosition", "updateOffset", "_ref2", "_ref3", "json", "Object", "keys", "AnnotationCollection", "annotations", "accessors", "accessorsInverse", "newSettings", "forEach", "d", "setPositionWithAccessors", "_this", "editMode", "a", "updateEditMode", "remove", "textWrap", "updateTextWrap", "drawText", "notePadding", "map", "_this2", "k", "getNoteBBoxOffset", "positionX", "positionY", "pointHandle", "__name", "cx", "_ref$cx", "cy", "_ref$cy", "move", "circleHandles", "_ref2$cx", "_ref2$cy", "r1", "r2", "padding", "h", "Math", "sqrt", "addHandles", "_ref5", "group", "handles", "r", "_ref5$r", "enter", "append", "attr", "call", "drag", "container", "select", "node", "on", "start", "end", "exit", "leftRightDynamic", "align", "topBottomDynamic", "orientationTopBottom", "orientationLeftRight", "noteAlignment", "_ref$padding", "bbox", "_ref$bbox", "width", "height", "orientation", "offset", "_ref$offset", "indexOf", "lineBuilder", "curve", "_ref$curve", "curveLinear", "canvasContext", "classID", "lineGen", "line", "builder", "context", "pathMethods", "attrs", "arcBuilder", "arcShape", "arc", "innerRadius", "outerRadius", "radius", "startAngle", "endAngle", "PI", "noteVertical", "components", "noteHorizontal", "lineSetup", "subjectType", "annotation", "position", "x1", "x2", "y1", "y2", "subjectData", "angle", "asin", "radiusPadding", "abs", "cos", "sin", "connectorLine", "connectorData", "connectorElbow", "diffY", "diffX", "xe", "ye", "opposite", "acos", "connectorCurve", "points", "createPoints", "curveCatmullRom", "cHandles", "c", "i", "index", "updatePoint", "event", "mapHandles", "bind", "toConsumableArray", "anchors", "diff", "p", "push", "connectorArrow", "scale", "_ref$scale", "size", "angleOffset", "atan", "connectorDot", "dot", "transform", "subjectCircle", "updateRadius", "_extends", "subjectRect", "rect", "updateWidth", "updateHeight", "rHandles", "subjectThreshold", "subjectBadge", "_ref$subjectData", "_ref$type", "typeSettings", "notCornerOffset", "placement", "circlebg", "fill", "circle", "pointer", "notCornerPointerXY", "v", "sign", "dragBadge", "bHandles", "text", "Type", "dispatcher", "noteContent", "handler", "addHandlers", "component", "name", "offsetCornerX", "offsetCornerY", "init", "mapX", "mapY", "builders", "Array", "isArray", "filter", "b", "el", "addAttrs", "removeAttrs", "currentAttrs", "attributes", "bboxWithoutHandles", "split", "parseFloat", "offsetX", "offsetY", "subjectParams", "_subject$components", "_subject$handles", "stroke", "concat", "dragSubject", "connectorParams", "_connector$components", "_connector$handles", "endType", "s", "e", "distance", "pow", "endScale", "_this3", "noteData", "noteParams", "lineType", "_note$components", "_note$handles", "_this4", "dragNote", "dragging", "dragstarted", "dragended", "_noteAlignment", "drawFunction", "drawOnSVG", "drawOnScreen", "drawSubject", "drawConnector", "getNoteBBox", "drawNoteContent", "drawNote", "sourceEvent", "stopPropagation", "classed", "style", "_this5", "customType", "initialType", "settings", "_this6", "babelHelpers.get", "babelHelpers.extends", "d3NoteText", "_Type", "params", "titleBBox", "label", "wrapLength", "wrap", "wrapSplitter", "bgPadding", "bgPaddingFinal", "top", "bottom", "left", "right", "_typeof", "title", "getBBox", "d3Label", "d3Callout", "d3CalloutElbow", "d3CalloutCurve", "d3Badge", "d3CalloutCircle", "d3CalloutRect", "ThresholdMap", "d3XYThreshold", "newWithClass", "merge", "lineHeight", "each", "words", "reverse", "w", "word", "tspan", "pop", "join", "getComputedTextLength", "selection", "selector", "reduce", "min", "max", "yOffset", "value", "collection", "ids", "annotationDispatcher", "dispatch", "sel", "translatedAnnotations", "annotationG", "toString", "draw", "log", "copy", "JSON", "stringify", "update", "updateText", "updatedAccessors", "_", "arguments", "updateDisable", "updateNotePadding", "rerun", "some", "apply", "value2Angle", "value", "__name", "pointOnArc", "angle", "radius", "indicatorTranslate", "inner", "point", "rotation", "indicatorTween", "newAngle", "d", "interpolate", "d3Interpolate", "t", "arcTween", "startAngle", "endAngle", "arc", "startInterpolate", "endInterpolate", "Gauge", "_Gauge", "SVGWidget", "arc_default", "scaleLinear", "d3InterpolateHcl", "lineType", "xOffset", "yOffset", "padding", "annotationtip", "annotation", "d3CalloutElbow", "d2", "textElement", "width", "height", "bb", "widthTransform", "heightTransform", "scale", "x", "y", "w", "h", "size", "x2", "y2", "domNode", "element", "context", "appendIndicator", "innerRadius", "outerRadius", "val", "tickVal", "d3Format", "point2", "I2DChart", "ITooltip", "SVGWidget", "Utility", "degreesToRadians", "normalizeRadians", "d3Format", "d3Interpolate", "d3Select", "sortAscending", "__name", "a", "b", "sortDescending", "Pie", "SVGWidget", "I2DChart", "ITooltip", "Utility", "pie_default", "arc_default", "pointA", "pointB", "maxTextWidth", "d", "horizontalLimit", "verticalLimit", "outerRadius", "totalVal", "acc", "n", "smallCount", "row", "truncate", "len", "label", "labelWidth", "sum", "dm", "perc", "_", "strRow", "_domNode", "element", "context", "column", "i", "d3Format", "innerRadius", "labelRadius", "data", "arc", "d3Select", "arcTween", "quad", "midAngle", "text", "mergedText", "d2", "pos", "mid_angle", "polyline", "pos1", "pos2", "outerRadiusDelta", "delay", "d3Interpolate", "t", "normalizeRadians", "radians", "rad", "gY", "gY2", "radius", "top", "bottom", "h", "heightDiff", "absTop", "yShift", "labelHeight", "arr", "prevTop", "overlap", "domNode", "startAngle", "degreesToRadians", "w", "HalfPie", "Pie", "__name", "domNode", "element", "x", "y", "max", "Palette", "Heat", "XYAxis", "__name", "r", "host", "element", "duration", "simpleheat", "width", "height", "data", "maxWeight", "max", "gradient", "reverse", "i", "radiusX", "radiusY", "Palette", "w", "canvas", "point", "rX", "rY", "blur", "ellipse", "ctx", "rX2", "rY2", "grad", "minOpacity", "len", "p", "colored", "pixels", "j", "I2DAggrChart", "ITooltip", "d3Extent", "d3Max", "d3Min", "thirdPi", "angles", "pointX", "d", "__name", "pointY", "hexbin_default", "x0", "y0", "x1", "y1", "x", "y", "r", "dx", "dy", "hexbin", "points", "binsById", "bins", "i", "n", "px", "point", "py", "pj", "pi", "py1", "px1", "pi2", "pj2", "px2", "py2", "id", "bin", "hexagon", "radius", "angle", "centers", "j", "fragment", "p", "_", "HexBin", "XYAxis", "__name", "I2DAggrChart", "ITooltip", "d", "seriesExtent", "d3Extent", "labelExtent", "hexbin_default", "host", "element", "duration", "context", "dataPoints", "hexBinPoints", "minBinPoints", "d3Min", "maxBinPoints", "d3Max", "points", "data", "row", "domNode", "column", "selected", "Line", "Scatter", "__name", "QuarterPie", "Pie", "__name", "domNode", "element", "x", "y", "maxTextWidth", "d", "SVGWidget", "d3ScaleLinear", "QuartileCandlestick", "SVGWidget", "__name", "domNode", "element", "valueSize", "domainSize", "scale", "d3ScaleLinear", "candleWidth", "lineWidth", "lineColor", "roundedCorners", "q0x", "q1x", "q2x", "q3x", "dataTop", "dataBottom", "upperTextRotation", "lowerTextRotation", "padding", "labelFontSize", "valueFontSize", "sz", "q4x", "transX", "transY", "rotate", "s", "textScale", "labelAnchor", "valueAnchor", "INDChart", "ITooltip", "SVGWidget", "Utility", "d3Select", "Radar", "SVGWidget", "__name", "INDChart", "ITooltip", "Utility", "shape", "element", "x", "y", "context", "d", "half_size", "domNode", "h", "w", "half_h", "half_w", "columns", "data", "flatData", "idx", "domain_points", "arc", "max_label_h", "max_label_w", "n", "isize", "radius", "labels", "max_val", "i", "xy", "text_anchor", "_x", "d3Select", "domains", "value_guides", "mult", "poly_points", "domain_point", "row_idx", "value_guide_text", "series_polygons", "col_idx", "val", "val_mult", "point_elm", "_idx", "data_row", "row_obj", "selected", "pointElement", "r", "theta", "point", "vs", "inside", "j", "xi", "yi", "xj", "yj", "INDChart", "ITooltip", "SVGWidget", "Utility", "d3Interpolate", "d3ScaleBand", "d3ScaleLinear", "RadialBar", "SVGWidget", "__name", "d3ScaleBand", "d3ScaleLinear", "arc_default", "d", "INDChart", "ITooltip", "Utility", "domNode", "element", "context", "maxValue", "ticks", "maxTextWidth", "chartRadius", "domainData", "domainPadding", "domainCircles", "domainText", "valueLines", "valueText", "angle", "valueColumn", "arcs", "_idx", "i", "indx", "interpolate", "d3Interpolate", "t", "radians", "degrees", "d3Format", "HTMLWidget", "Palette", "rainbow", "Palette", "palette", "myFormatter", "format", "formatter", "d3Format", "num", "strVal", "__name", "StatChart", "HTMLWidget", "Scatter", "QuartileCandlestick", "degrees", "q", "mode", "_", "row", "domNode", "element", "ticks", "domainLow", "domainHigh", "sd", "padding", "candleX", "candleW", "Step", "Scatter", "__name", "I2DChart", "HTMLWidget", "d3Rgb", "d3Select", "TEXT", "HTML", "Summary", "HTMLWidget", "__name", "propID", "defaultIdx", "retVal", "labelFieldIdx", "iconFieldIdx", "valueFieldIdx", "moreIconIdx", "moreTextIdx", "colorFillIdx", "colorStrokeIdx", "row", "domNode", "element", "context", "data", "moreDivs", "moreDivsUpdate", "d", "element2", "d3Select", "d3Rgb", "I2DChart", "w", "playInterval", "_", "I2DChart", "CanvasWidget", "Utility", "SummaryC", "CanvasWidget", "__name", "I2DChart", "domNode", "element", "width", "height", "context", "size", "minDimension", "sizeRatio", "labelIdx", "valueIdx", "bgColorIdx", "fontColorIdx", "iconIdx", "icon", "label", "value", "bgColor", "fontColor", "mainFontSize", "subFontSize", "iconSize", "p", "ctx", "fontFamily", "drawIcon", "Utility", "drawText", "text", "y", "fontSize", "anchorMode", "measurement", "fontSizeMult", "x", "getTextOffsetX", "getTextOffsetY", "w", "playInterval", "_", "retVal", "I2DChart", "ITooltip", "d3Event", "SVGWidget", "Utility", "d3Zoom", "d3Extent", "d3ScaleLinear", "d3ScaleLog", "d3ScalePow", "d3ScaleSqrt", "dispatch", "cloudRadians", "cw", "ch", "d3Cloud", "event", "dispatch", "cloud", "size", "text", "cloudText", "font", "cloudFont", "fontSize", "cloudFontSize", "fontStyle", "cloudFontNormal", "fontWeight", "rotate", "cloudRotate", "padding", "cloudPadding", "words", "spiral", "archimedeanSpiral", "timeInterval", "timer", "random", "canvas", "cloudCanvas", "functor", "contextAndRatio", "getContext", "board", "zeroArray", "bounds", "n", "i", "tags", "data", "d", "a", "b", "step", "start", "cloudSprite", "place", "cloudBounds", "__name", "ratio", "context", "tag", "startX", "startY", "maxDelta", "s", "dt", "t", "dxdy", "dx", "dy", "cloudCollide", "collideRects", "sprite", "w", "sw", "lx", "sx", "msx", "h", "x", "last", "j", "spirals", "value", "di", "c", "y", "maxh", "sr", "cr", "wcr", "wsr", "hcr", "hsr", "pixels", "w32", "seen", "seenRow", "k", "m", "b0", "b1", "e", "rectangularSpiral", "sign", "WordCloud", "SVGWidget", "__name", "I2DChart", "ITooltip", "Utility", "row", "domNode", "element", "context", "d3Zoom", "evt", "event", "d3Event", "d", "columns", "series", "d3Cloud", "data", "extent", "d3Extent", "scaler", "d3ScaleLog", "d3ScaleSqrt", "d3ScalePow", "d3ScaleLinear", "scale", "angleDomain", "i", "w", "draw", "bounds", "text", "source", "translate"]
7
+ }