@hpcc-js/chart 2.86.4 → 2.86.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es6.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.4\";\nexport const BUILD_VERSION = \"2.108.9\";\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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 function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\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","d3Brush","d3BrushX","d3BrushY","d3BrushSelection","d3Hsl","d3Min","d3Max","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","d3ScaleSqrt","extent","d3Extent","d3Local","Node","d3Hierarchy","d3Descending","d3TimerFlush","noop","max","x00","y00","x0","y0","stream","pathArea","pathMeasure","pathBounds","pathCentroid","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","interpolate","d3Interpolate","d3InterpolateHcl","d3Annotation","annotationCalloutElbow","format","d3Rgb","playInterval","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
+ {"version":3,"file":"index.es6.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.5\";\nexport const BUILD_VERSION = \"2.108.10\";\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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 function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\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","d3Brush","d3BrushX","d3BrushY","d3BrushSelection","d3Hsl","d3Min","d3Max","d3CurveStepBefore","d3CurveStepAfter","d3CurveMonotoneX","d3ScaleSqrt","extent","d3Extent","d3Local","Node","d3Hierarchy","d3Descending","d3TimerFlush","noop","max","x00","y00","x0","y0","stream","pathArea","pathMeasure","pathBounds","pathCentroid","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","interpolate","d3Interpolate","d3InterpolateHcl","d3Annotation","annotationCalloutElbow","format","d3Rgb","playInterval","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]}