@hpcc-js/tree 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1979 -81
- package/dist/index.js.map +1 -7
- package/dist/index.umd.cjs +2 -0
- package/dist/index.umd.cjs.map +1 -0
- package/package.json +15 -13
- package/src/__package__.ts +1 -1
- package/types/__package__.d.ts +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/__package__.ts", "../src/CirclePacking.ts", "../../../node_modules/d3-hierarchy/src/cluster.js", "../../../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", "../../../node_modules/d3-hierarchy/src/treemap/round.js", "../../../node_modules/d3-hierarchy/src/treemap/dice.js", "../../../node_modules/d3-hierarchy/src/partition.js", "../../../node_modules/d3-hierarchy/src/tree.js", "../../../node_modules/d3-hierarchy/src/treemap/slice.js", "../../../node_modules/d3-hierarchy/src/treemap/squarify.js", "../../../node_modules/d3-hierarchy/src/treemap/index.js", "../../../node_modules/d3-hierarchy/src/treemap/binary.js", "../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js", "../../../node_modules/d3-hierarchy/src/treemap/resquarify.js", "../src/CirclePacking.css", "../src/Dendrogram.ts", "../src/Dendrogram.css", "../src/DirectoryTree.ts", "../src/Indented.ts", "../src/Indented.css", "../src/SunburstPartition.ts", "../../../node_modules/d3-path/src/path.js", "../../../node_modules/d3-shape/src/constant.js", "../../../node_modules/d3-shape/src/math.js", "../../../node_modules/d3-shape/src/arc.js", "../src/SunburstPartition.css", "../src/Treemap.ts", "../src/Treemap.css"],
|
|
4
|
-
"sourcesContent": ["export const PKG_NAME = \"@hpcc-js/tree\";\nexport const PKG_VERSION = \"3.0.0\";\nexport const BUILD_VERSION = \"3.2.0\";\n", "import { ITree } from \"@hpcc-js/api\";\nimport { d3Event, SVGWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { interpolateZoom as d3InterpolateZoom } from \"d3-interpolate\";\nimport \"d3-transition\";\n\nimport \"../src/CirclePacking.css\";\n\nexport class CirclePacking extends SVGWidget {\n diameter;\n pack;\n svg;\n _focus;\n circle;\n view;\n protected _node;\n\n constructor() {\n super();\n ITree.call(this);\n }\n\n enter(_domNode, element) {\n this.diameter = Math.min(this.width(), this.height());\n\n this.pack = d3Pack()\n .size([this.diameter - 4, this.diameter - 4])\n .padding(1.5)\n ;\n\n this.svg = element\n .append(\"g\")\n ;\n }\n\n update(_domNode, _element) {\n const context = this;\n\n this.diameter = Math.min(this.width(), this.height());\n this.pack\n .size([this.diameter - 4, this.diameter - 4])\n .padding(1.5)\n ;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this.svg.selectAll(\"circle\").remove();\n this.svg.selectAll(\"text\").remove();\n\n const root: any = d3Hierarchy(this.data())\n .sum(function (d) {\n return d && d.size ? d.size : 1;\n }).sort(function (a, b) {\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n })\n ;\n this._focus = root;\n this.pack(root);\n\n this.circle = this.svg.selectAll(\"circle\").data(root.descendants())\n .enter().append(\"circle\")\n .attr(\"class\", function (d) { return d.parent ? d.children ? \"node\" : \"node leaf\" : \"node root\"; })\n .style(\"fill\", function (d) {\n d.color = context.paletteDepthLevel_exists() && d.depth > context.paletteDepthLevel() ? d3Rgb(d.parent.color)[context.paletteDepthVariant()](1) : context._palette(d.data.label);\n return d.color;\n })\n .on(\"click\", function (d) { context.click(d.data, null, null); })\n .on(\"dblclick\", function (d) {\n if (this._focus !== d) {\n context.zoom(d);\n }\n d3Event().stopPropagation();\n })\n ;\n this.circle.append(\"title\").text(function (d) { return d.data.label; });\n\n this.svg.selectAll(\"text\").data(root.descendants())\n .enter().append(\"text\")\n .attr(\"class\", \"label\")\n .style(\"fill-opacity\", function (d) { return d.parent === root ? 1 : 0; })\n .style(\"display\", function (d) { return d.parent === root ? null : \"none\"; })\n .text(function (d) {\n return d.data.label + (context.showSize() && typeof d.data.size !== \"undefined\" ? \" \" + d.data.size : \"\");\n })\n ;\n\n this._node = this.svg.selectAll(\"circle,text\");\n\n this.zoomTo([root.x, root.y, root.r * 2]);\n }\n\n zoom(newFocus) {\n this._focus = newFocus;\n const context = this;\n const transition = this.svg.transition()\n .duration(d3Event().altKey ? 7500 : 750)\n .tween(\"zoom\", function () {\n const i = d3InterpolateZoom(context.view, [context._focus.x, context._focus.y, context._focus.r * 2]);\n return function (t) { context.zoomTo(i(t)); };\n });\n\n function showText(d) {\n return (d === context._focus && !d.children) || d.parent === context._focus;\n }\n\n transition.selectAll(\"text\")\n .filter(function (d) { return showText(d) || this.style.display === \"inline\"; })\n .style(\"fill-opacity\", function (d) { return showText(d) ? 1 : 0; })\n .on(\"start\", function (d) { if (showText(d)) this.style.display = \"inline\"; })\n .on(\"end\", function (d) { if (!showText(d)) this.style.display = \"none\"; });\n }\n\n zoomTo(v) {\n const k = this.diameter / v[2];\n this.view = v;\n this._node.attr(\"transform\", function (d) { return \"translate(\" + (d.x - v[0]) * k + \",\" + (d.y - v[1]) * k + \")\"; });\n this.circle.attr(\"r\", function (d) { return d.r * k; });\n }\n}\nCirclePacking.prototype._class += \" tree_CirclePacking\";\nCirclePacking.prototype.implements(ITree.prototype);\n\nexport interface CirclePacking {\n _palette;\n\n // I2DChart ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n showSize(): boolean;\n showSize(_: boolean): this;\n paletteDepthLevel(): number;\n paletteDepthLevel(_: number): this;\n paletteDepthLevel_exists(): boolean;\n paletteDepthVariant(): \"brighter\" | \"darker\";\n paletteDepthVariant(_: \"brighter\" | \"darker\"): this;\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n}\n\nCirclePacking.prototype.publish(\"showSize\", true, \"boolean\", \"Show size along with label\");\nCirclePacking.prototype.publish(\"paletteDepthLevel\", null, \"number\", \"If not null then beyond this depth number the child node colors are based on parent\", null, { optional: true });\nCirclePacking.prototype.publish(\"paletteDepthVariant\", \"brighter\", \"set\", \"Determines paletteDepthLevel decendant color shade variant\", [\"brighter\", \"darker\"], { disable: w => w.paletteDepthLevel_exists() });\nCirclePacking.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", CirclePacking.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCirclePacking.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n", "function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n", "function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n", "export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n", "export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n", "export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n", "export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n", "export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n", "export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n", "export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n", "export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n", "export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n", "export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don\u2019t include the root\u2019s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n", "import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n", "export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n", "import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n", "import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle\u2026\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // \u201CCloseness\u201D is determined by linear distance along the front-chain.\n // \u201CAhead\u201D or \u201Cbehind\u201D is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n", "export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n", "export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n", "import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n", "export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n", "import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n", "import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-\u2019s ancestor is a sibling of v, returns vi-\u2019s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.\u2019s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n", "import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n", "import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n", "(function(){\n if (!document.getElementById('1fa24db4')) {\n var e = document.createElement('style');\n e.id = '1fa24db4';\n e.textContent = `.tree_CirclePacking circle {\n fill: rgb(31, 119, 180);\n fill-opacity: .25;\n stroke: rgb(31, 119, 180);\n stroke-width: 1px;\n}\n\n.tree_CirclePacking .leaf circle {\n fill: #ff7f0e;\n fill-opacity: 1;\n}\n\n.tree_CirclePacking .label {\n fill:white;\n text-anchor: middle;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { ITree } from \"@hpcc-js/api\";\nimport { PropertyExt, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { cluster as d3Cluster, hierarchy as d3Hierarchy, tree as d3Tree } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Dendrogram.css\";\n\nexport class DendrogramColumn extends PropertyExt {\n _owner: Dendrogram;\n\n constructor() {\n super();\n }\n\n owner(): Dendrogram;\n owner(_: Dendrogram): this;\n owner(_?: Dendrogram): Dendrogram | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n valid(): boolean {\n return !!this.column();\n }\n\n column: { (): string; (_: string): Dendrogram; };\n}\nDendrogramColumn.prototype._class += \" tree_Dendrogram.DendrogramColumn\";\n\nDendrogramColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: DendrogramColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Dendrogram extends SVGZoomWidget {\n Column;\n _d3LayoutCluster;\n _d3LayoutTree;\n _d3Layout;\n\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this._d3LayoutCluster = d3Cluster();\n this._d3LayoutTree = d3Tree();\n }\n\n dendrogramData() {\n if (this.data().length === 0) return [];\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n const view = this._db.rollupView(this.mappings().map(function (mapping) { return mapping.column(); }));\n const retVal = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(retVal);\n\n function formatData(node) {\n return {\n label: node.key,\n children: node.values.filter(function (value) { return !(value instanceof Array); }).map(function (value) { return formatData(value); }),\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._renderElement\n .attr(\"opacity\", 0)\n .transition().duration(500)\n .attr(\"opacity\", 1)\n ;\n this._selection.widgetElement(this._renderElement);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const isVertical = this.orientation() === \"vertical\";\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._d3Layout = this.dendrogram() ? this._d3LayoutCluster : this._d3LayoutTree;\n\n if (this.radial()) {\n this._d3Layout\n .size([360, this.separation() * 2])\n ;\n this._d3Layout.separation(function separation(a, b) {\n return (a.parent === b.parent ? 1 : 2) / a.depth;\n });\n } else {\n this._d3Layout.nodeSize([14, this.separation()]);\n this._d3Layout.separation(function separation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n });\n }\n\n const data = this.dendrogramData();\n const root = d3Hierarchy(data);\n this._d3Layout(root);\n\n const dataNodes = root.descendants();\n const links = root.descendants().slice(1);\n\n // Lines ---\n function linkVertical(d) {\n return \"M\" + d.parent.x + \",\" + d.parent.y\n + \"C\" + d.parent.x + \",\" + (d.parent.y + d.y) / 2\n + \" \" + d.x + \",\" + (d.parent.y + d.y) / 2\n + \" \" + d.x + \",\" + d.y;\n }\n\n function linkHorizontal(d) {\n return \"M\" + d.y + \",\" + d.x\n + \"C\" + (d.y + d.parent.y) / 2 + \",\" + d.x\n + \" \" + (d.y + d.parent.y) / 2 + \",\" + d.parent.x\n + \" \" + d.parent.y + \",\" + d.parent.x;\n }\n function diagonal(d) {\n return isVertical ? linkVertical(d) : linkHorizontal(d);\n }\n\n function project(x, y) {\n const angle = (x - 90) / 180 * Math.PI;\n const radius = y;\n return [radius * Math.cos(angle), radius * Math.sin(angle)];\n }\n\n function radialDiagonal(d) {\n return \"M\" + project(d.x, d.y)\n + \"C\" + project(d.x, (d.y + d.parent.y) / 2)\n + \" \" + project(d.parent.x, (d.y + d.parent.y) / 2)\n + \" \" + project(d.parent.x, d.parent.y);\n }\n\n const transitionDuration = this._renderCount ? 500 : 0;\n const lines = this._renderElement.selectAll(\".link\").data(links);\n lines.enter().append(\"path\")\n .attr(\"class\", \"link\")\n .attr(\"d\", this.radial() ? radialDiagonal : diagonal)\n ;\n lines.transition().duration(transitionDuration)\n .attr(\"d\", this.radial() ? radialDiagonal : diagonal)\n ;\n lines.exit().remove();\n\n // Nodes ---\n const textOffsetX = this.circleRadius() + 2;\n function nodeTransform(d) {\n if (context.radial()) {\n return \"rotate(\" + (d.x - 90) + \")translate(\" + d.y + \")\";\n }\n return context.orientation() === \"horizontal\" ? \"translate(\" + d.y + \",\" + d.x + \")\" : \"translate(\" + d.x + \",\" + d.y + \")\";\n }\n const nodes = this._renderElement.selectAll(\".node\").data(dataNodes);\n nodes.transition().duration(transitionDuration)\n .attr(\"transform\", nodeTransform)\n ;\n const enterNodes = nodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", nodeTransform)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n let tmp = d;\n while (tmp.children) {\n tmp = tmp.children[0];\n }\n if (d.depth > 0) {\n if (tmp.origRows) {\n context.click(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);\n } else {\n context.click(tmp.data, context.mappings()[d.depth - 1].column(), true);\n }\n }\n })\n .on(\"dblclick\", function (d) {\n let tmp = d;\n while (tmp.children) {\n tmp = tmp.children[0];\n }\n if (d.depth > 0) {\n if (tmp.origRows) {\n context.dblclick(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);\n } else {\n context.dblclick(tmp.data, context.mappings()[d.depth - 1].column(), true);\n }\n }\n })\n .each(function () {\n const e = d3Select(this);\n e.append(\"circle\");\n e.append(\"text\");\n })\n ;\n enterNodes.merge(nodes).select(\"circle\")\n .attr(\"r\", this.circleRadius())\n .style(\"fill\", function (d) { return context._palette(d.data.label); })\n .append(\"title\")\n .text(function (d) { return d.data.label; })\n ;\n enterNodes.merge(nodes).select(\"text\")\n .attr(\"dx\", function (d) {\n if (context.radial()) {\n if (d.children) {\n return d.x < 180 ? -textOffsetX : textOffsetX;\n } else {\n return d.x < 180 ? textOffsetX : -textOffsetX;\n }\n } else if (isVertical) {\n return d.children ? textOffsetX : -textOffsetX;\n }\n return d.children ? -textOffsetX : textOffsetX;\n })\n .attr(\"dy\", \"0.25em\")\n .style(\"text-anchor\", function (d) {\n if (context.radial()) {\n if (d.children) {\n return d.x < 180 ? \"end\" : \"start\";\n } else {\n return d.x < 180 ? \"start\" : \"end\";\n }\n } else if (isVertical) {\n return d.children ? \"start\" : \"end\";\n }\n return d.children ? \"end\" : \"start\";\n })\n .attr(\"transform\", function (d) {\n if (context.radial()) {\n return d.x < 180 ? null : \"rotate(180)\";\n } else if (isVertical) {\n return \"rotate(-66)\";\n }\n return null;\n })\n .text(function (d) { return d.data.label; })\n ;\n nodes.exit().remove();\n\n if (!this._renderCount) {\n context.zoomToFit();\n }\n }\n}\nDendrogram.prototype._class += \" tree_Dendrogram\";\nDendrogram.prototype.implements(ITree.prototype);\nDendrogram.prototype.mixin(Utility.SimpleSelectionMixin);\nDendrogram.prototype.Column = DendrogramColumn;\n\nexport interface Dendrogram {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // SimpleSelectionMixin ---\n _selection;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n mappings(): DendrogramColumn[];\n mappings(_: DendrogramColumn[]): this;\n\n circleRadius(): number;\n circleRadius(_: number): this;\n separation(): number;\n separation(_: number): this;\n dendrogram(): boolean;\n dendrogram(_: boolean): this;\n radial(): boolean;\n radial(_: boolean): this;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n}\n\nDendrogram.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Dendrogram.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nDendrogram.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nDendrogram.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: DendrogramColumn });\n\nDendrogram.prototype.publish(\"circleRadius\", 4.5, \"number\", \"Text offset from circle\");\nDendrogram.prototype.publish(\"separation\", 240, \"number\", \"Leaf Separation\");\nDendrogram.prototype.publish(\"dendrogram\", true, \"boolean\", \"Dendrogram\");\nDendrogram.prototype.publish(\"radial\", false, \"boolean\", \"Radial\");\nDendrogram.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Orientation\", [\"horizontal\", \"vertical\"], { tags: [\"Private\"], disable: w => w.radial() });\n", "(function(){\n if (!document.getElementById('077fd267')) {\n var e = document.createElement('style');\n e.id = '077fd267';\n e.textContent = `.tree_Dendrogram .node {\n}\n\n.tree_Dendrogram .node circle {\n fill: #dcf1ff;\n stroke: #1f77b4;\n stroke-width: 1.0px;\n}\n\n.tree_Dendrogram .node.selected circle {\n stroke: red;\n}\n\n.tree_Dendrogram .node.over circle {\n stroke: orange;\n}\n\n.tree_Dendrogram .node.selected.over circle {\n stroke: red;\n}\n\n.tree_Dendrogram .node.selected text {\n fill: red;\n}\n\n.tree_Dendrogram .node.over text {\n fill: orange;\n}\n\n.tree_Dendrogram .node.selected.over text {\n fill: red;\n}\n\n.tree_Dendrogram .node text {\n font-size: 14px;\n}\n\n.tree_Dendrogram .link {\n fill: none;\n stroke: #656565;\n stroke-width: 1.0px;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { HTMLWidget, Palette, Platform, select as d3Select, Utility, } from \"@hpcc-js/common\";\nimport { max as d3Max } from \"d3-array\";\nimport { hierarchy as d3Hierarchy } from \"d3-hierarchy\";\n\ninterface DirectoryItem {\n color?: string;\n iconClass?: string;\n label: string;\n depth: number;\n content?: string;\n markers?: any;\n isFolder: boolean;\n bold?: boolean;\n selected?: boolean;\n weightValue?: string;\n weightColor?: string;\n}\n\nexport class DirectoryTree extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n flattenData(json): DirectoryItem[] {\n const context = this;\n const root = d3Hierarchy(json);\n const ret = [];\n\n if (!this.omitRoot()) {\n visitNode(root);\n } else if (root.children) {\n root.children.forEach(visitNode);\n }\n\n return ret;\n\n function visitNode(node) {\n const weightValue = node.data.markers && node.data.markers.length ? node.data.markers.length : \"\";\n ret.push({\n label: node.data.label,\n depth: node.depth - (context.omitRoot() ? 1 : 0),\n content: node.data.content,\n isFolder: !!node.data.children,\n iconClass: node.data.iconClass,\n color: node.data.color,\n bold: node.data.bold,\n weightValue,\n markers: node.data.markers,\n selected: node.data.selected\n });\n if (node.children) {\n node.children.forEach(visitNode);\n }\n }\n }\n\n protected iconClass(d) {\n if (d.label === \"error\") {\n return \"fa fa-exclamation\";\n }\n if (d.isFolder) {\n return this.folderIconOpen();\n }\n return this.textFileIcon();\n }\n\n protected calcRequiredWidth() {\n const flatData = this.flattenData(this.data());\n\n let widest = 0;\n\n const padding = this.rowItemPadding();\n const iconWidth = this.iconSize() + (padding * 2);\n const scrollbarWidth = Platform.getScrollbarWidth();\n\n flatData.forEach(row => {\n const offsetWidth = (row.depth * iconWidth) + (padding * 2);\n const textWidth = Utility.textSize(\n row.label,\n this.fontFamily(),\n this.fontSize(),\n !!row.bold\n ).width + (padding * 2);\n const totalWidth = textWidth + iconWidth + offsetWidth + scrollbarWidth;\n if (widest < totalWidth) {\n widest = totalWidth;\n }\n });\n return widest;\n }\n\n rowClick(str, markers) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"width\", \"100%\")\n .style(\"height\", \"100%\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n element\n .style(\"overflow-y\", this.verticalScroll() ? \"scroll\" : null)\n ;\n const flatData = this.flattenData(this.data());\n const maxWeightValue = d3Max(flatData, n => Number(n.weightValue));\n\n flatData.forEach(d => {\n if (!d.weightValue) {\n d.weightColor = \"transparent\";\n } else {\n d.weightColor = this._palette(d.weightValue, 1, maxWeightValue);\n }\n });\n const context = this;\n const padding = this.rowItemPadding();\n const iconWidth = this.iconSize() + padding;\n const lineHeight = Math.max(context.iconSize(), context.fontSize());\n const rowSelection = element.selectAll(\".directory-row\").data(flatData);\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const maxWeightWidth = d3Max(flatData, d => this.textSize(d.weightValue, fontFamily, fontSize).width);\n const rowItemPadding = `${padding}px ${padding}px ${padding / 2}px ${padding}px`;\n\n const rowEnter = rowSelection.enter().append(\"div\")\n .attr(\"class\", d => `directory-row directory-row-depth-${d.depth}`)\n .style(\"display\", \"flex\")\n .style(\"cursor\", \"pointer\")\n .each(function (d: DirectoryItem) {\n const rowDiv = d3Select(this);\n\n const fontColor = d.color ? d.color : context.fontColor();\n const weightColor = d.weightColor ? d.weightColor : \"transparent\";\n const weightFontColor = Palette.textColor(weightColor);\n\n const weightDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-weight\")\n .style(\"padding\", rowItemPadding)\n .style(\"color\", weightFontColor)\n .style(\"box-shadow\", `inset 0 0 100px ${weightColor}`)\n .style(\"font-weight\", d.bold ? \"bold\" : \"normal\")\n .style(\"font-family\", fontFamily)\n .style(\"font-size\", fontSize + \"px\")\n .text(d.weightValue)\n .attr(\"title\", d.weightValue)\n .style(\"overflow\", \"hidden\")\n .style(\"width\", (maxWeightWidth + (padding * 2)) + \"px\")\n .style(\"text-overflow\", \"ellipsis\")\n .style(\"text-align\", \"right\")\n .style(\"line-height\", lineHeight + \"px\")\n ;\n rowDiv.append(\"div\")\n .attr(\"class\", \"row-depth\")\n .style(\"width\", (context.depthSize() * d.depth) + \"px\")\n .style(\"opacity\", 1)\n .style(\"line-height\", lineHeight + \"px\")\n ;\n const iconDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-icon \" + (d.iconClass ? d.iconClass : context.iconClass(d)))\n .style(\"width\", iconWidth + \"px\")\n .style(\"height\", lineHeight + \"px\")\n .style(\"color\", fontColor)\n .style(\"background-color\", d.selected ? context.selectionBackgroundColor() : \"transparent\")\n .style(\"font-size\", context.iconSize() + \"px\")\n .style(\"padding\", rowItemPadding)\n .style(\"line-height\", lineHeight + \"px\")\n ;\n const labelDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-label\")\n .style(\"padding\", rowItemPadding)\n .style(\"color\", fontColor)\n .style(\"background-color\", d.selected ? context.selectionBackgroundColor() : \"transparent\")\n .style(\"font-weight\", d.bold ? \"bold\" : \"normal\")\n .style(\"font-family\", context.fontFamily())\n .style(\"font-size\", context.fontSize() + \"px\")\n .text(d.label)\n .attr(\"title\", d.label)\n .style(\"flex\", 1)\n .style(\"overflow\", \"hidden\")\n .style(\"text-overflow\", \"ellipsis\")\n .style(\"line-height\", lineHeight + \"px\")\n ;\n\n rowDiv\n .on(\"mouseenter\", () => {\n labelDiv.style(\"font-weight\", \"bold\");\n })\n .on(\"mouseleave\", () => {\n labelDiv.style(\"font-weight\", d.bold ? \"bold\" : \"normal\");\n })\n ;\n weightDiv\n .on(\"mouseenter\", () => {\n context.weight_mouseenter(d);\n })\n .on(\"mouseleave\", () => {\n context.weight_mouseleave(d);\n })\n ;\n\n if (d.isFolder) {\n rowDiv.on(\"click\", function (d: any) {\n let next = this.nextSibling;\n const wasClosed = rowDiv.classed(\"folder-closed\");\n if (wasClosed) {\n rowDiv.classed(\"folder-closed\", false);\n rowDiv.classed(\"folder-open\", true);\n iconDiv.attr(\"class\", \"row-icon \" + context.folderIconOpen());\n } else {\n rowDiv.classed(\"folder-closed\", true);\n rowDiv.classed(\"folder-open\", false);\n iconDiv.attr(\"class\", \"row-icon \" + context.folderIconClosed());\n }\n while (next !== null) {\n const nextDepth = (d3Select(next).datum() as any).depth;\n if (nextDepth > d.depth) {\n next.style.display = wasClosed ? \"flex\" : \"none\";\n next = next.nextSibling;\n } else {\n next = null;\n }\n }\n });\n } else {\n rowDiv.on(\"click\", () => {\n element.selectAll(\".row-label\").style(\"background-color\", \"transparent\");\n element.selectAll(\".row-icon\").style(\"background-color\", \"transparent\");\n iconDiv.style(\"background-color\", context.selectionBackgroundColor());\n labelDiv.style(\"background-color\", context.selectionBackgroundColor());\n const ext = d.label.split(\".\").pop().toLowerCase();\n context.rowClick(ext === \"json\" ? JSON.stringify(JSON.parse(d.content), null, 4) : d.content, d.markers);\n });\n }\n })\n ;\n\n rowEnter\n .merge(rowSelection)\n .style(\"background-color\", context.backgroundColor())\n ;\n\n rowSelection.exit().remove();\n }\n weight_mouseenter(d) {\n\n }\n weight_mouseleave(d) {\n\n }\n}\nDirectoryTree.prototype._class += \" tree_DirectoryTree\";\nDirectoryTree.prototype._palette = Palette.rainbow(\"Blues\");\n\nexport interface DirectoryTree {\n _palette;\n\n depthSize(): number;\n depthSize(_: number): this;\n paletteID(): string;\n paletteID(_: string): this;\n omitRoot(): boolean;\n omitRoot(_: boolean): this;\n rowItemPadding(): number;\n rowItemPadding(_: number): this;\n selectionBackgroundColor(): string;\n selectionBackgroundColor(_: string): this;\n backgroundColor(): string;\n backgroundColor(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n iconSize(): number;\n iconSize(_: number): this;\n folderIconOpen(): string;\n folderIconOpen(_: string): this;\n folderIconClosed(): string;\n folderIconClosed(_: string): this;\n textFileIcon(): string;\n textFileIcon(_: string): this;\n verticalScroll(): boolean;\n verticalScroll(_: boolean): this;\n}\n\nDirectoryTree.prototype.publish(\"depthSize\", 14, \"number\", \"Width of indentation per file or folder depth (pixels)\");\nDirectoryTree.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for the weight backgrounds\", DirectoryTree.prototype._palette.switch(), { tags: [\"Basic\"] });\nDirectoryTree.prototype.publish(\"omitRoot\", false, \"boolean\", \"If true, root node will not display\");\nDirectoryTree.prototype.publish(\"rowItemPadding\", 2, \"number\", \"Top, bottom, left and right row item padding\");\nDirectoryTree.prototype.publish(\"selectionBackgroundColor\", \"#CCC\", \"html-color\", \"Background color of selected directory rows\");\nDirectoryTree.prototype.publish(\"backgroundColor\", \"#FFF\", \"html-color\", \"Directory item background color\");\nDirectoryTree.prototype.publish(\"fontColor\", \"#000\", \"html-color\", \"Directory item font color\");\nDirectoryTree.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Directory item font family\");\nDirectoryTree.prototype.publish(\"fontSize\", 12, \"number\", \"Directory item font size (pixels)\");\nDirectoryTree.prototype.publish(\"iconSize\", 12, \"number\", \"Directory folder and file icon size (pixels)\");\nDirectoryTree.prototype.publish(\"folderIconOpen\", \"fa fa-folder-open\", \"string\", \"Open folder icon class\");\nDirectoryTree.prototype.publish(\"folderIconClosed\", \"fa fa-folder\", \"string\", \"Closed folder icon class\");\nDirectoryTree.prototype.publish(\"textFileIcon\", \"fa fa-file-text-o\", \"string\", \"Text file icon class\");\nDirectoryTree.prototype.publish(\"verticalScroll\", true, \"boolean\", \"If true, vertical scroll bar will be shown\");\n", "\uFEFFimport { ITree } from \"@hpcc-js/api\";\nimport { PropertyExt, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, tree as d3Tree } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Indented.css\";\n\nexport class IndentedColumn extends PropertyExt {\n _owner: Indented;\n\n constructor() {\n super();\n }\n\n owner(): Indented;\n owner(_: Indented): this;\n owner(_?: Indented): Indented | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n valid(): boolean {\n return !!this.column();\n }\n\n column: (_?: string) => string | IndentedColumn;\n}\nIndentedColumn.prototype._class += \" tree_Dendrogram.IndentedColumn\";\n\nIndentedColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: IndentedColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Indented extends SVGZoomWidget {\n Column;\n _d3Tree;\n _xml;\n _svgLinks;\n _svgNodes;\n _treeData;\n _collapsed: { [key: string]: boolean } = {};\n\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this._d3Tree = d3Tree();\n }\n\n xmlToData(xml, id = \"\") {\n if (DOMParser) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(xml, \"text/xml\");\n return xmlToJson(doc, id).children[0];\n }\n return [];\n }\n\n xml(_) {\n if (!arguments.length) return this._xml;\n this._xml = _;\n this.data(this.xmlToData(this._xml));\n return this;\n }\n\n IndentedData() {\n if (this.data().length === 0) return [];\n if (this.xmlColumn_exists()) {\n const cellIdx = this.columns().indexOf(this.xmlColumn());\n const retVal = {\n label: this.xmlColumn(),\n children: this.data().map(function (row, idx) {\n return this.xmlToData(row[cellIdx], \"[\" + idx + \"]\");\n }, this)\n };\n return retVal.children.length === 1 ? retVal.children[0] : retVal;\n } else {\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n const view = this._db.rollupView(this.mappings().map(function (mapping) { return mapping.column(); }));\n const root = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(root);\n }\n\n function formatData(node): any {\n if (node.values instanceof Array) {\n const children = node.values.filter(function (value) {\n return !(value instanceof Array);\n }).map(function (value) {\n return formatData(value);\n });\n const retVal: any = {\n label: node.key\n };\n if (children.length) {\n retVal.children = children;\n } else {\n retVal.size = 22;\n }\n return retVal;\n }\n return {\n label: node.key,\n size: node.values.aggregate,\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._svgLinks = this._renderElement.append(\"g\");\n this._svgNodes = this._renderElement.append(\"g\");\n this._selection.widgetElement(this._svgNodes);\n }\n\n protected _prevDataChecksum;\n update(domNode, _element) {\n super.update(domNode, _element);\n const context = this;\n\n this._d3Tree\n .nodeSize([0, this.barHeight()])\n ;\n const dataChecksum = this._db.dataChecksum();\n if (this._prevDataChecksum !== dataChecksum) {\n this._treeData = this.IndentedData();\n this._prevDataChecksum = dataChecksum;\n }\n\n function getID(d) {\n return (d.parent ? getID(d.parent) + \".\" : \"\") + d.data.label;\n }\n\n const root = d3Hierarchy(this.data())\n .sum(function (d) {\n return d.size || 50;\n }).each((d) => {\n if (this._collapsed[getID(d)]) {\n delete (d.children);\n }\n })\n ;\n\n const dataNodes = this._d3Tree(root).descendants();\n const links = this._d3Tree(root).descendants().slice(1);\n\n let nodeIdx = 0;\n root.eachBefore((n: any) => {\n n.x = nodeIdx * context.barHeight();\n ++nodeIdx;\n });\n\n const boxSize = this.barHeight() - 4;\n const transitionDuration = this._renderCount ? 500 : 0;\n\n // Lines ---\n const lines = this._svgLinks.selectAll(\".link\").data(links, function (d) { return getID(d); });\n lines.enter().append(\"path\")\n .attr(\"class\", \"link\")\n .attr(\"d\", elbow)\n ;\n lines.transition().duration(transitionDuration)\n .attr(\"d\", elbow)\n ;\n lines.exit().remove();\n\n function elbow(d) {\n return \"M\" + d.parent.y + \",\" + d.parent.x\n + \"V\" + d.x + \", H\" + d.y;\n }\n\n // Nodes ---\n const nodes = this._svgNodes.selectAll(\".node\").data(dataNodes, function (d) { return getID(d); });\n nodes.transition().duration(transitionDuration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.y + \",\" + d.x + \")\"; })\n ;\n const enterNodes = nodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", function (d) { return \"translate(\" + d.y + \",\" + d.x + \")\"; })\n .call(this._selection.enter.bind(this._selection))\n .each(function () {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"height\", boxSize)\n .attr(\"width\", boxSize)\n .on(\"click\", function (d: any) {\n if (context._collapsed[getID(d)]) {\n delete context._collapsed[getID(d)];\n } else if (d.children) {\n context._collapsed[getID(d)] = true;\n }\n context.lazyRender();\n })\n ;\n element.append(\"text\");\n })\n .style(\"opacity\", 0)\n ;\n enterNodes.transition()\n .style(\"opacity\", 1)\n ;\n enterNodes.merge(nodes).select(\"rect\")\n .attr(\"x\", -boxSize / 2)\n .attr(\"y\", -boxSize / 2)\n .style(\"fill\", color)\n ;\n enterNodes.merge(nodes).select(\"text\")\n .attr(\"dx\", boxSize / 2 + 4 + \"px\")\n .attr(\"dy\", \"0.33em\")\n .text(function (d) { return d.data.label; })\n ;\n nodes.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n\n if (!this._renderCount) {\n context.zoomToFit();\n }\n\n function color(d) {\n return context._collapsed[getID(d)] ? \"#3182bd\" : d.children ? \"#c6dbef\" : \"#fd8d3c\";\n }\n }\n}\nIndented.prototype._class += \" tree_Indented\";\nIndented.prototype.implements(ITree.prototype);\nIndented.prototype.mixin(Utility.SimpleSelectionMixin);\nIndented.prototype.Column = IndentedColumn;\n\nexport interface Indented {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // SimpleSelectionMixin ---\n _selection;\n\n // Properties ---\n xmlColumn(): string;\n xmlColumn(_: string): this;\n xmlColumn_exists(): boolean;\n mappings(): IndentedColumn[];\n mappings(_: IndentedColumn[]): this;\n barHeight(): number;\n barHeight(_: number): this;\n}\n\nIndented.prototype.publish(\"xmlColumn\", null, \"set\", \"Field\", function () { return this.columns(); }, { optional: true });\nIndented.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: IndentedColumn, disable: (w) => w.xmlColumn_exists() });\nIndented.prototype.publish(\"barHeight\", 16, \"number\", \"Bar height\");\n\nfunction xmlToJson(xml, id = \"\") {\n const retVal = {\n id,\n label: \"\",\n attributes: {},\n children: []\n };\n\n retVal.label = xml.nodeName;\n if (xml.nodeType === 1) { // element\n if (xml.attributes.length > 0) {\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n retVal.attributes[attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) { // text\n retVal.label = xml.nodeValue;\n }\n\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const child = xmlToJson(item, id + \"[\" + retVal.children.length + \"]\");\n retVal.children.push(child);\n }\n }\n return retVal;\n}\n", "(function(){\n if (!document.getElementById('f8ec8ea8')) {\n var e = document.createElement('style');\n e.id = 'f8ec8ea8';\n e.textContent = `\uFEFF.tree_Indented .node rect {\n cursor: pointer;\n fill: #fff;\n stroke: #3182bd;\n stroke-width: 1px;\n}\n\n.tree_Indented .node text {\n font: 10px sans-serif;\n pointer-events: none;\n}\n\n.tree_Indented path.link {\n fill: none;\n stroke: #9ecae1;\n stroke-width: 1.5px;\n}`;\n document.head.appendChild(e);\n }\n })();", "import { ITree } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, partition as d3Parition } from \"d3-hierarchy\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleLinear as d3ScaleLinear, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/SunburstPartition.css\";\n\nexport class SunburstPartition extends SVGWidget {\n svg;\n radius;\n _xScale;\n _yScale;\n partition;\n arc;\n _resetRoot;\n\n constructor() {\n super();\n ITree.call(this);\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = SVGWidget.prototype.data.apply(this, arguments);\n if (arguments.length) {\n this._resetRoot = true;\n }\n return retVal;\n }\n\n enter(_domNode, element) {\n const context = this;\n\n this.radius = Math.min(this.width(), this.height()) / 2;\n\n this._xScale = d3ScaleLinear()\n .range([0, 2 * Math.PI])\n ;\n\n this._yScale = d3ScaleSqrt()\n .range([0, this.radius])\n ;\n\n this.partition = d3Parition();\n\n this.arc = d3Arc()\n .startAngle(function (d: any) {\n return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x0)));\n })\n .endAngle(function (d: any) {\n return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x1)));\n })\n .innerRadius(function (d: any) {\n return Math.max(0, context._yScale(d.y0));\n })\n .outerRadius(function (d: any) {\n return Math.max(0, context._yScale(d.y1));\n })\n ;\n\n this.svg = element.append(\"g\");\n }\n\n 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 this.radius = Math.min(this.width(), this.height()) / 2;\n this._yScale.range([0, this.radius]);\n\n const root = d3Hierarchy(this.data())\n .sum(function (d) {\n return d.size !== undefined ? d.size : 1;\n })\n ;\n\n const paths = this.svg.selectAll(\"path\").data(this.partition(root).descendants(), function (d, i) {\n return d.data.label !== undefined ? d.data.label : i;\n });\n\n paths.enter().append(\"path\")\n .on(\"click\", function (d) { context.click(d.data, null, null); })\n .on(\"dblclick\", function (d) {\n const event = d3Event();\n if (event) {\n event.stopPropagation();\n }\n context.zoomTo(d);\n })\n .each(function () {\n const element = d3Select(this);\n element\n .append(\"title\")\n ;\n })\n .merge(paths)\n .attr(\"d\", this.arc)\n .style(\"fill\", function (d) {\n return d.data.__viz_fill ? d.data.__viz_fill : context._palette(d.data.label);\n })\n .style(\"stroke\", function (d) {\n return d.value > 16 ? \"white\" : \"none\";\n })\n .select(\"title\")\n .text(function (d) {\n return d.data.label;\n })\n ;\n\n paths.exit().remove();\n\n if (this._resetRoot) {\n this._resetRoot = false;\n this.zoomTo(root);\n }\n }\n\n zoomTo(d) {\n const context = this;\n this.svg.transition()\n .duration(750)\n .tween(\"scale\", function () {\n const xd = d3Interpolate(context._xScale.domain(), [d.x0, d.x1]);\n const yd = d3Interpolate(context._yScale.domain(), [d.y0, 1]);\n const yr = d3Interpolate(context._yScale.range(), [d.y0 ? 20 : 0, context.radius]);\n return function (t) { context._xScale.domain(xd(t)); context._yScale.domain(yd(t)).range(yr(t)); };\n })\n .selectAll(\"path\")\n .attrTween(\"d\", function (d2) { return function () { return context.arc(d2); }; });\n }\n}\nSunburstPartition.prototype._class += \" tree_SunburstPartition\";\nSunburstPartition.prototype.implements(ITree.prototype);\n\nexport interface SunburstPartition {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n}\n\nSunburstPartition.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", SunburstPartition.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nSunburstPartition.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n", "var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "(function(){\n if (!document.getElementById('9deab9a1')) {\n var e = document.createElement('style');\n e.id = '9deab9a1';\n e.textContent = `.tree_Sunburst path {\n stroke: #fff;\n stroke-width:0.5px;\n fill-rule: evenodd;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "\uFEFFimport { ITree } from \"@hpcc-js/api\";\nimport { HTMLWidget, Palette, PropertyExt, Utility } from \"@hpcc-js/common\";\nimport { rgb as d3rgb } from \"d3-color\";\nimport { hierarchy as d3Hierarchy, treemap as d3Treemap, treemapBinary as d3treemapBinary, treemapDice as d3treemapDice, treemapResquarify as d3treemapResquarify, treemapSlice as d3treemapSlice, treemapSliceDice as d3treemapSliceDice, treemapSquarify as d3treemapSquarify } from \"d3-hierarchy\";\n\nimport \"../src/Treemap.css\";\n\nexport class TreemapColumn extends PropertyExt {\n _owner: Treemap;\n\n constructor() {\n super();\n }\n\n owner(): Treemap;\n owner(_: Treemap): this;\n owner(_?: Treemap): Treemap | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n column: { (): string; (_: string): TreemapColumn; };\n}\nTreemapColumn.prototype._class += \" tree_Dendrogram.TreemapColumn\";\n\nTreemapColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: TreemapColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Treemap extends HTMLWidget {\n Column;\n protected _d3Treemap;\n protected _elementDIV;\n protected _selection;\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n private getTilingMethod() {\n switch (this.tilingMethod()) {\n case \"treemapBinary\":\n return d3treemapBinary;\n case \"treemapDice\":\n return d3treemapDice;\n case \"treemapSlice\":\n return d3treemapSlice;\n case \"treemapSliceDice\":\n return d3treemapSliceDice;\n case \"treemapResquarify\":\n return d3treemapResquarify;\n case \"treemapSquarify\":\n default:\n return d3treemapSquarify;\n }\n }\n\n treemapData() {\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n\n const view = this._db.aggregateView(this.mappings().map(function (mapping) { return mapping.column(); }), this.aggrType(), this.aggrColumn());\n const retVal = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(retVal);\n\n function formatData(node): any {\n if (node.values instanceof Array) {\n const children = node.values.filter(function (value) {\n return !(value instanceof Array);\n }).map(function (value) {\n return formatData(value);\n });\n const retVal2: any = {\n label: node.key\n };\n if (children.length) {\n retVal2.children = children;\n } else {\n retVal2.size = 22;\n }\n return retVal2;\n }\n return {\n label: node.key,\n size: node.values.aggregate,\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._d3Treemap = d3Treemap();\n\n this._elementDIV = element.append(\"div\");\n this._selection.widgetElement(this._elementDIV);\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(this.treemapData())\n .sum(this.nodeWeight)\n ;\n\n this._d3Treemap\n .size([this.width(), this.height()])\n .paddingInner(this.paddingInner())\n .paddingOuter(this.paddingOuter())\n .paddingTop(this.paddingTop())\n ;\n if ([\"treemapSquarify\", \"treemapResquarify\"].indexOf(this.tilingMethod()) !== -1) {\n this._d3Treemap.tile(this.getTilingMethod()[\"ratio\"](this.squarifyRatio()));\n } else {\n this._d3Treemap.tile(this.getTilingMethod());\n }\n this._d3Treemap(root);\n\n this._elementDIV\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n .style(\"line-height\", this.fontSize_exists() ? (this.fontSize() + 2) + \"px\" : null)\n ;\n\n const node = this._elementDIV.selectAll(\".node\").data(root.descendants());\n node.enter().append(\"div\")\n .attr(\"class\", \"node\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n if (d) {\n let columnLabel = \"\";\n context.mappings().forEach(function (mapping) {\n if (mapping.column()) {\n columnLabel = mapping.column();\n }\n });\n if (d.origRows) {\n context.click(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));\n } else {\n context.click(d.data, columnLabel, context._selection.selected(this));\n }\n }\n })\n .on(\"dblclick\", function (d) {\n if (d) {\n let columnLabel = \"\";\n context.mappings().forEach(function (mapping) {\n if (mapping.column()) {\n columnLabel = mapping.column();\n }\n });\n if (d.origRows) {\n context.dblclick(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));\n } else {\n context.dblclick(d.data, columnLabel, context._selection.selected(this));\n }\n }\n })\n .merge(node)\n .style(\"left\", function (d) { return (d.x0 + Math.max(0, d.x1 - d.x0) / 2) + \"px\"; })\n .style(\"top\", function (d) { return (d.y0 + Math.max(0, d.y1 - d.y0) / 2) + \"px\"; })\n .style(\"width\", function () { return 0 + \"px\"; })\n .style(\"height\", function () { return 0 + \"px\"; })\n .style(\"font-size\", function (d) { return (d.children ? context.parentFontSize() : context.leafFontSize()) + \"px\"; })\n .style(\"line-height\", function (d) { return (d.children ? context.parentFontSize() : context.leafFontSize()) + \"px\"; })\n .attr(\"title\", tooltip)\n .html(function (d) {\n if (!context.showRoot() && d.depth === 0) {\n return null;\n }\n if (d.children) {\n if (context.enableParentLabels()) {\n return context.parentWeightHTML(d);\n } else {\n return null;\n }\n } else {\n return context.leafWeightHTML(d);\n }\n })\n .style(\"background\", function (d) {\n if (!context.showRoot() && d.depth === 0) {\n this.style.color = \"transparent\";\n return \"transparent\";\n }\n const light_dark = context.brighterLeafNodes() ? \"brighter\" : \"darker\";\n let _color;\n if (context.usePaletteOnParentNodes()) {\n _color = d.children ? context._palette(d.data.label) : d3rgb(context._palette(d.parent.data.label))[light_dark](1);\n } else {\n if (d.depth > context.depthColorLimit()) {\n _color = d3rgb(d.parent.color)[light_dark](1);\n } else {\n _color = context._palette(d.data.label);\n }\n d.color = _color;\n }\n this.style.color = Palette.textColor(_color);\n return _color;\n })\n .transition().duration(this.transitionDuration())\n .style(\"pointer-events\", function (d) { return !context.showRoot() && d.depth === 0 ? \"none\" : \"all\"; })\n .style(\"opacity\", function (d) { return d.children ? 1 : null; })\n .style(\"left\", function (d) { return d.x0 + \"px\"; })\n .style(\"top\", function (d) { return d.y0 + \"px\"; })\n .style(\"width\", function (d) { return Math.max(0, d.x1 - d.x0) + \"px\"; })\n .style(\"height\", function (d) { return Math.max(0, d.y1 - d.y0) + \"px\"; })\n .each(function (d) {\n if (d.depth === 0) {\n this.style.color = !context.showRoot() ? \"transparent\" : \"\";\n this.style.borderColor = !context.showRoot() ? \"transparent\" : \"\";\n }\n })\n ;\n node.exit().transition().duration(this.transitionDuration())\n .style(\"opacity\", 0)\n .remove()\n ;\n function tooltip(d) {\n if (d.children && !context.enableParentTooltips()) {\n return null;\n }\n let retVal = d.data.label + \" (\" + d.value + \")\";\n while (d.parent && d.parent.parent) {\n retVal = d.parent.data.label + \" -> \" + retVal;\n d = d.parent;\n }\n return retVal;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n nodeWeight(d) {\n return d.size || 1;\n }\n\n parentWeightHTML(d) {\n return this.showParentWeight() ? `<span class=\"treemap-parent-label\">${d.data.label}</span><span class=\"treemap-parent-value\">${d.value}${this.weightSuffix()}</span>` : `<span class=\"treemap-parent-label\">${d.data.label}</span>`;\n }\n\n leafWeightHTML(d) {\n return this.showLeafWeight() ? `<span class=\"treemap-leaf-label\">${d.data.label}</span><span class=\"treemap-leaf-value\">${d.value}${this.weightSuffix()}</span>` : `<span class=\"treemap-leaf-label\">${d.data.label}</span>`;\n }\n}\nTreemap.prototype._class += \" tree_Treemap\";\nTreemap.prototype.implements(ITree.prototype);\nTreemap.prototype.mixin(Utility.SimpleSelectionMixin);\nTreemap.prototype.Column = TreemapColumn;\n\nexport interface Treemap {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n mappings(): TreemapColumn[];\n mappings(_: TreemapColumn[]): this;\n aggrType(): string;\n aggrType(_: string): this;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n paddingInner(): number;\n paddingInner(_: number): this;\n paddingOuter(): number;\n paddingOuter(_: number): this;\n paddingTop(): number;\n paddingTop(_: number): this;\n showRoot(): boolean;\n showRoot(_: boolean): this;\n parentFontSize(): number;\n parentFontSize(_: number): this;\n leafFontSize(): number;\n leafFontSize(_: number): this;\n usePaletteOnParentNodes(): boolean;\n usePaletteOnParentNodes(_: boolean): this;\n depthColorLimit(): number;\n depthColorLimit(_: number): this;\n squarifyRatio(): number;\n squarifyRatio(_: number): this;\n showParentWeight(): boolean;\n showParentWeight(_: boolean): this;\n showLeafWeight(): boolean;\n showLeafWeight(_: boolean): this;\n weightSuffix(): string;\n weightSuffix(_: string): this;\n brighterLeafNodes(): boolean;\n brighterLeafNodes(_: boolean): this;\n enableParentLabels(): boolean;\n enableParentLabels(_: boolean): this;\n enableParentTooltips(): boolean;\n enableParentTooltips(_: boolean): this;\n transitionDuration(): number[];\n transitionDuration(_: number[]): this;\n tilingMethod(): string;\n tilingMethod(_: string): this;\n}\n\nTreemap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Treemap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nTreemap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nTreemap.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: TreemapColumn });\nTreemap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nTreemap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nTreemap.prototype.publish(\"fontSize\", null, \"number\", \"Font Size\", null, { optional: true });\nTreemap.prototype.publish(\"paddingInner\", 18.6, \"number\", \"Pixel spacing between each sibling node\");\nTreemap.prototype.publish(\"paddingOuter\", 30, \"number\", \"Pixel padding of parent nodes\");\nTreemap.prototype.publish(\"paddingTop\", 41.4, \"number\", \"Additional top pixel padding of parent nodes\");\nTreemap.prototype.publish(\"showRoot\", false, \"boolean\", \"Show root element\");\nTreemap.prototype.publish(\"parentFontSize\", 18, \"number\", \"Parent font-size\");\nTreemap.prototype.publish(\"leafFontSize\", 16, \"number\", \"Leaf font-size\");\nTreemap.prototype.publish(\"usePaletteOnParentNodes\", false, \"boolean\", \"Assign a color from the palette to every parent node\");\nTreemap.prototype.publish(\"depthColorLimit\", 1, \"number\", \"Assign a color from the palette to node with depth lower than this value\", null, { optional: true, disable: (w) => w.usePaletteOnParentNodes() });\nTreemap.prototype.publish(\"squarifyRatio\", 1, \"number\", \"Specifies the desired aspect ratio of the generated rectangles (must be >= 1)\", null, { optional: true, disable: (w) => [\"treemapSquarify\", \"treemapResquarify\"].indexOf(w.tilingMethod()) === -1 });\nTreemap.prototype.publish(\"showParentWeight\", true, \"boolean\", \"Show weight of parent nodes\");\nTreemap.prototype.publish(\"showLeafWeight\", true, \"boolean\", \"Show weight of leaf nodes\");\nTreemap.prototype.publish(\"weightSuffix\", \"\", \"string\", \"Weight suffix (ex: 'ms')\");\nTreemap.prototype.publish(\"brighterLeafNodes\", false, \"boolean\", \"Brighter/darker leaf node color (false = darker)\");\nTreemap.prototype.publish(\"enableParentLabels\", true, \"boolean\", \"Enable parent labels\");\nTreemap.prototype.publish(\"enableParentTooltips\", true, \"boolean\", \"Enable parent tooltips\");\nTreemap.prototype.publish(\"transitionDuration\", 250, \"number\", \"Transition Duration\");\nTreemap.prototype.publish(\"tilingMethod\", \"treemapSquarify\", \"set\", \"Transition Duration\", [\"treemapBinary\", \"treemapDice\", \"treemapResquarify\", \"treemapSlice\", \"treemapSliceDice\", \"treemapSquarify\"]);\n", "(function(){\n if (!document.getElementById('95685909')) {\n var e = document.createElement('style');\n e.id = '95685909';\n e.textContent = `.tree_Treemap * {\n box-sizing: border-box;\n}\n.tree_Treemap .node {\n border: solid 1px #333;\n overflow: hidden;\n text-overflow: ellipsis;\n position: absolute;\n}\n\n.tree_Treemap .node.selected {\n border-color: red;\n}\n\n.tree_Treemap .node.over {\n border-color: orange;\n}\n\n.tree_Treemap .node.selected.over {\n border-color: red;\n}\n.tree_Treemap .node > span.treemap-parent-label {\n font-weight: bold;\n display: inline-block;\n margin: 4px 4px 0 4px;\n}\n.tree_Treemap .node > span.treemap-parent-value {\n font-weight: normal;\n font-style: italic;\n margin: 4px 0 0 0;\n}\n.tree_Treemap .node > span.treemap-singleton-label {\n font-weight: normal;\n display: block;\n margin: 4px 0 0 4px;\n}\n.tree_Treemap .node > span.treemap-singleton-value {\n font-style: italic;\n display: block;\n margin: 0 0 0 4px;\n}\n`;\n document.head.appendChild(e);\n }\n })();"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "ITree", "d3Event", "SVGWidget", "d3Rgb", "defaultSeparation", "a", "b", "__name", "meanX", "children", "meanXReduce", "x", "c", "maxY", "maxYReduce", "y", "leafLeft", "node", "leafRight", "cluster_default", "separation", "dx", "dy", "nodeSize", "cluster", "root", "previousNode", "left", "right", "x0", "x1", "count", "node", "sum", "children", "i", "__name", "count_default", "each_default", "callback", "node", "current", "next", "children", "i", "n", "__name", "eachBefore_default", "callback", "node", "nodes", "children", "__name", "eachAfter_default", "callback", "node", "nodes", "next", "children", "i", "n", "__name", "sum_default", "value", "node", "sum", "children", "__name", "sort_default", "compare", "node", "__name", "path_default", "end", "start", "ancestor", "leastCommonAncestor", "nodes", "k", "__name", "a", "b", "aNodes", "bNodes", "c", "ancestors_default", "node", "nodes", "__name", "descendants_default", "nodes", "node", "__name", "leaves_default", "leaves", "node", "__name", "links_default", "root", "links", "node", "__name", "hierarchy", "data", "children", "root", "Node", "valued", "node", "nodes", "child", "childs", "i", "n", "defaultChildren", "computeHeight", "__name", "node_copy", "copyData", "d", "height", "count_default", "each_default", "eachAfter_default", "eachBefore_default", "sum_default", "sort_default", "path_default", "ancestors_default", "descendants_default", "leaves_default", "links_default", "slice", "shuffle", "array", "m", "t", "i", "__name", "enclose_default", "circles", "i", "shuffle", "slice", "B", "p", "e", "enclosesWeak", "encloseBasis", "extendBasis", "__name", "j", "enclosesWeakAll", "enclosesNot", "encloseBasis2", "encloseBasis3", "a", "b", "dr", "dx", "dy", "encloseBasis1", "x1", "y1", "r1", "x2", "y2", "r2", "x21", "y21", "r21", "l", "c", "x3", "y3", "r3", "a2", "a3", "b2", "b3", "c2", "c3", "d1", "d2", "d3", "ab", "xa", "xb", "ya", "yb", "A", "C", "r", "place", "b", "a", "c", "dx", "x", "a2", "dy", "y", "b2", "d2", "__name", "intersects", "dr", "score", "node", "ab", "Node", "circle", "packEnclose", "circles", "n", "aa", "ca", "i", "j", "k", "sj", "sk", "pack", "enclose_default", "optional", "f", "required", "__name", "constantZero", "__name", "constant_default", "x", "defaultRadius", "d", "__name", "pack_default", "radius", "dx", "dy", "padding", "constantZero", "pack", "root", "radiusLeaf", "packChildren", "translateChild", "x", "optional", "constant_default", "node", "k", "children", "n", "r", "e", "packEnclose", "parent", "round_default", "node", "__name", "dice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "__name", "partition_default", "dx", "dy", "padding", "round", "partition", "root", "n", "positionNode", "round_default", "__name", "node", "dice_default", "x0", "y0", "x1", "y1", "x", "defaultSeparation", "a", "b", "__name", "nextLeft", "v", "children", "nextRight", "moveSubtree", "wm", "wp", "shift", "change", "executeShifts", "w", "nextAncestor", "vim", "ancestor", "TreeNode", "node", "i", "Node", "treeRoot", "root", "tree", "nodes", "child", "n", "tree_default", "separation", "dx", "dy", "nodeSize", "t", "firstWalk", "secondWalk", "sizeNode", "left", "right", "bottom", "s", "tx", "kx", "ky", "siblings", "midpoint", "apportion", "vip", "vop", "vom", "sip", "sop", "sim", "som", "x", "slice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "__name", "phi", "squarifyRatio", "ratio", "parent", "x0", "y0", "x1", "y1", "rows", "nodes", "row", "nodeValue", "i0", "i1", "n", "dx", "dy", "value", "sumValue", "minValue", "maxValue", "newRatio", "minRatio", "alpha", "beta", "dice_default", "slice_default", "__name", "squarify_default", "custom", "squarify", "x", "treemap_default", "tile", "squarify_default", "round", "dx", "dy", "paddingStack", "paddingInner", "constantZero", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "treemap", "root", "positionNode", "round_default", "__name", "node", "p", "x0", "y0", "x1", "y1", "x", "required", "constant_default", "binary_default", "parent", "x0", "y0", "x1", "y1", "nodes", "i", "n", "sum", "sums", "partition", "j", "value", "node", "valueOffset", "valueTarget", "k", "hi", "mid", "valueLeft", "valueRight", "xk", "yk", "__name", "sliceDice_default", "parent", "x0", "y0", "x1", "y1", "slice_default", "dice_default", "__name", "resquarify_default", "__name", "custom", "ratio", "resquarify", "parent", "x0", "y0", "x1", "y1", "rows", "row", "nodes", "i", "j", "n", "m", "value", "dice_default", "slice_default", "squarifyRatio", "x", "phi", "d3InterpolateZoom", "e", "CirclePacking", "SVGWidget", "__name", "ITree", "_domNode", "element", "pack_default", "_element", "context", "root", "hierarchy", "d", "a", "b", "d3Rgb", "d3Event", "newFocus", "transition", "i", "d3InterpolateZoom", "t", "showText", "v", "k", "w", "ITree", "PropertyExt", "SVGZoomWidget", "Utility", "d3Select", "e", "DendrogramColumn", "PropertyExt", "__name", "_", "Dendrogram", "SVGZoomWidget", "ITree", "Utility", "cluster_default", "tree_default", "mapping", "retVal", "formatData", "node", "value", "domNode", "element", "context", "isVertical", "a", "b", "data", "root", "hierarchy", "dataNodes", "links", "linkVertical", "d", "linkHorizontal", "diagonal", "project", "x", "y", "angle", "radius", "radialDiagonal", "transitionDuration", "lines", "textOffsetX", "nodeTransform", "nodes", "enterNodes", "tmp", "e", "d3Select", "w", "HTMLWidget", "Palette", "Platform", "d3Select", "Utility", "d3Max", "DirectoryTree", "HTMLWidget", "__name", "json", "context", "root", "hierarchy", "ret", "visitNode", "node", "weightValue", "d", "flatData", "widest", "padding", "iconWidth", "scrollbarWidth", "Platform", "row", "offsetWidth", "totalWidth", "Utility", "str", "markers", "domNode", "element", "maxWeightValue", "d3Max", "n", "lineHeight", "rowSelection", "fontFamily", "fontSize", "maxWeightWidth", "rowItemPadding", "rowDiv", "d3Select", "fontColor", "weightColor", "weightFontColor", "Palette", "weightDiv", "iconDiv", "labelDiv", "next", "wasClosed", "ext", "ITree", "PropertyExt", "SVGZoomWidget", "Utility", "d3Select", "e", "IndentedColumn", "PropertyExt", "__name", "_", "Indented", "SVGZoomWidget", "ITree", "Utility", "tree_default", "xml", "id", "doc", "xmlToJson", "cellIdx", "retVal", "row", "idx", "mapping", "root", "formatData", "node", "children", "value", "domNode", "element", "_element", "context", "dataChecksum", "getID", "d", "hierarchy", "dataNodes", "links", "nodeIdx", "n", "boxSize", "transitionDuration", "lines", "elbow", "nodes", "enterNodes", "d3Select", "color", "w", "j", "attribute", "i", "item", "child", "ITree", "d3Event", "d3Select", "SVGWidget", "d3Interpolate", "d3ScaleLinear", "d3ScaleSqrt", "pi", "tau", "epsilon", "tauEpsilon", "Path", "__name", "path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path_default", "constant_default", "x", "__name", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "__name", "asin", "arcInnerRadius", "d", "__name", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "path_default", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "e", "SunburstPartition", "SVGWidget", "__name", "ITree", "_", "retVal", "_domNode", "element", "context", "d3ScaleLinear", "d3ScaleSqrt", "partition_default", "arc_default", "d", "_element", "root", "hierarchy", "paths", "i", "event", "d3Event", "d3Select", "xd", "d3Interpolate", "yd", "yr", "t", "d2", "ITree", "HTMLWidget", "Palette", "PropertyExt", "Utility", "d3rgb", "e", "TreemapColumn", "PropertyExt", "__name", "_", "Treemap", "HTMLWidget", "ITree", "Utility", "binary_default", "dice_default", "slice_default", "sliceDice_default", "resquarify_default", "squarify_default", "mapping", "retVal", "formatData", "node", "children", "value", "retVal2", "domNode", "element", "treemap_default", "context", "root", "hierarchy", "d", "columnLabel", "tooltip", "light_dark", "_color", "d3rgb", "Palette", "w"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","names":["defaultSeparation","node_count","node_each","node_eachAfter","node_eachBefore","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","Node","enclose","constant","roundNode","dy","squarify","roundNode","constant","i","x0","y0","x1","y1","slice","dice","root: any","retVal: any","pi","tau","epsilon","max","max","constant","path","retVal2: any"],"sources":["../src/__package__.ts","../node_modules/d3-hierarchy/src/cluster.js","../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","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../src/CirclePacking.ts","../src/Dendrogram.ts","../src/DirectoryTree.ts","../src/Indented.ts","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-shape/src/math.js","../../../node_modules/d3-shape/src/arc.js","../src/SunburstPartition.ts","../src/Treemap.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/tree\";\nexport const PKG_VERSION = \"3.0.0\";\nexport const BUILD_VERSION = \"3.2.1\";\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\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","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import { ITree } from \"@hpcc-js/api\";\nimport { d3Event, SVGWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\nimport { hierarchy as d3Hierarchy, pack as d3Pack } from \"d3-hierarchy\";\nimport { interpolateZoom as d3InterpolateZoom } from \"d3-interpolate\";\nimport \"d3-transition\";\n\nimport \"../src/CirclePacking.css\";\n\nexport class CirclePacking extends SVGWidget {\n diameter;\n pack;\n svg;\n _focus;\n circle;\n view;\n protected _node;\n\n constructor() {\n super();\n ITree.call(this);\n }\n\n enter(_domNode, element) {\n this.diameter = Math.min(this.width(), this.height());\n\n this.pack = d3Pack()\n .size([this.diameter - 4, this.diameter - 4])\n .padding(1.5)\n ;\n\n this.svg = element\n .append(\"g\")\n ;\n }\n\n update(_domNode, _element) {\n const context = this;\n\n this.diameter = Math.min(this.width(), this.height());\n this.pack\n .size([this.diameter - 4, this.diameter - 4])\n .padding(1.5)\n ;\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n this.svg.selectAll(\"circle\").remove();\n this.svg.selectAll(\"text\").remove();\n\n const root: any = d3Hierarchy(this.data())\n .sum(function (d) {\n return d && d.size ? d.size : 1;\n }).sort(function (a, b) {\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n })\n ;\n this._focus = root;\n this.pack(root);\n\n this.circle = this.svg.selectAll(\"circle\").data(root.descendants())\n .enter().append(\"circle\")\n .attr(\"class\", function (d) { return d.parent ? d.children ? \"node\" : \"node leaf\" : \"node root\"; })\n .style(\"fill\", function (d) {\n d.color = context.paletteDepthLevel_exists() && d.depth > context.paletteDepthLevel() ? d3Rgb(d.parent.color)[context.paletteDepthVariant()](1) : context._palette(d.data.label);\n return d.color;\n })\n .on(\"click\", function (d) { context.click(d.data, null, null); })\n .on(\"dblclick\", function (d) {\n if (this._focus !== d) {\n context.zoom(d);\n }\n d3Event().stopPropagation();\n })\n ;\n this.circle.append(\"title\").text(function (d) { return d.data.label; });\n\n this.svg.selectAll(\"text\").data(root.descendants())\n .enter().append(\"text\")\n .attr(\"class\", \"label\")\n .style(\"fill-opacity\", function (d) { return d.parent === root ? 1 : 0; })\n .style(\"display\", function (d) { return d.parent === root ? null : \"none\"; })\n .text(function (d) {\n return d.data.label + (context.showSize() && typeof d.data.size !== \"undefined\" ? \" \" + d.data.size : \"\");\n })\n ;\n\n this._node = this.svg.selectAll(\"circle,text\");\n\n this.zoomTo([root.x, root.y, root.r * 2]);\n }\n\n zoom(newFocus) {\n this._focus = newFocus;\n const context = this;\n const transition = this.svg.transition()\n .duration(d3Event().altKey ? 7500 : 750)\n .tween(\"zoom\", function () {\n const i = d3InterpolateZoom(context.view, [context._focus.x, context._focus.y, context._focus.r * 2]);\n return function (t) { context.zoomTo(i(t)); };\n });\n\n function showText(d) {\n return (d === context._focus && !d.children) || d.parent === context._focus;\n }\n\n transition.selectAll(\"text\")\n .filter(function (d) { return showText(d) || this.style.display === \"inline\"; })\n .style(\"fill-opacity\", function (d) { return showText(d) ? 1 : 0; })\n .on(\"start\", function (d) { if (showText(d)) this.style.display = \"inline\"; })\n .on(\"end\", function (d) { if (!showText(d)) this.style.display = \"none\"; });\n }\n\n zoomTo(v) {\n const k = this.diameter / v[2];\n this.view = v;\n this._node.attr(\"transform\", function (d) { return \"translate(\" + (d.x - v[0]) * k + \",\" + (d.y - v[1]) * k + \")\"; });\n this.circle.attr(\"r\", function (d) { return d.r * k; });\n }\n}\nCirclePacking.prototype._class += \" tree_CirclePacking\";\nCirclePacking.prototype.implements(ITree.prototype);\n\nexport interface CirclePacking {\n _palette;\n\n // I2DChart ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n showSize(): boolean;\n showSize(_: boolean): this;\n paletteDepthLevel(): number;\n paletteDepthLevel(_: number): this;\n paletteDepthLevel_exists(): boolean;\n paletteDepthVariant(): \"brighter\" | \"darker\";\n paletteDepthVariant(_: \"brighter\" | \"darker\"): this;\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n}\n\nCirclePacking.prototype.publish(\"showSize\", true, \"boolean\", \"Show size along with label\");\nCirclePacking.prototype.publish(\"paletteDepthLevel\", null, \"number\", \"If not null then beyond this depth number the child node colors are based on parent\", null, { optional: true });\nCirclePacking.prototype.publish(\"paletteDepthVariant\", \"brighter\", \"set\", \"Determines paletteDepthLevel decendant color shade variant\", [\"brighter\", \"darker\"], { disable: w => w.paletteDepthLevel_exists() });\nCirclePacking.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", CirclePacking.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCirclePacking.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { ITree } from \"@hpcc-js/api\";\nimport { PropertyExt, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { cluster as d3Cluster, hierarchy as d3Hierarchy, tree as d3Tree } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Dendrogram.css\";\n\nexport class DendrogramColumn extends PropertyExt {\n _owner: Dendrogram;\n\n constructor() {\n super();\n }\n\n owner(): Dendrogram;\n owner(_: Dendrogram): this;\n owner(_?: Dendrogram): Dendrogram | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n valid(): boolean {\n return !!this.column();\n }\n\n column: { (): string; (_: string): Dendrogram; };\n}\nDendrogramColumn.prototype._class += \" tree_Dendrogram.DendrogramColumn\";\n\nDendrogramColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: DendrogramColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Dendrogram extends SVGZoomWidget {\n Column;\n _d3LayoutCluster;\n _d3LayoutTree;\n _d3Layout;\n\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this._d3LayoutCluster = d3Cluster();\n this._d3LayoutTree = d3Tree();\n }\n\n dendrogramData() {\n if (this.data().length === 0) return [];\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n const view = this._db.rollupView(this.mappings().map(function (mapping) { return mapping.column(); }));\n const retVal = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(retVal);\n\n function formatData(node) {\n return {\n label: node.key,\n children: node.values.filter(function (value) { return !(value instanceof Array); }).map(function (value) { return formatData(value); }),\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._renderElement\n .attr(\"opacity\", 0)\n .transition().duration(500)\n .attr(\"opacity\", 1)\n ;\n this._selection.widgetElement(this._renderElement);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const isVertical = this.orientation() === \"vertical\";\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._d3Layout = this.dendrogram() ? this._d3LayoutCluster : this._d3LayoutTree;\n\n if (this.radial()) {\n this._d3Layout\n .size([360, this.separation() * 2])\n ;\n this._d3Layout.separation(function separation(a, b) {\n return (a.parent === b.parent ? 1 : 2) / a.depth;\n });\n } else {\n this._d3Layout.nodeSize([14, this.separation()]);\n this._d3Layout.separation(function separation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n });\n }\n\n const data = this.dendrogramData();\n const root = d3Hierarchy(data);\n this._d3Layout(root);\n\n const dataNodes = root.descendants();\n const links = root.descendants().slice(1);\n\n // Lines ---\n function linkVertical(d) {\n return \"M\" + d.parent.x + \",\" + d.parent.y\n + \"C\" + d.parent.x + \",\" + (d.parent.y + d.y) / 2\n + \" \" + d.x + \",\" + (d.parent.y + d.y) / 2\n + \" \" + d.x + \",\" + d.y;\n }\n\n function linkHorizontal(d) {\n return \"M\" + d.y + \",\" + d.x\n + \"C\" + (d.y + d.parent.y) / 2 + \",\" + d.x\n + \" \" + (d.y + d.parent.y) / 2 + \",\" + d.parent.x\n + \" \" + d.parent.y + \",\" + d.parent.x;\n }\n function diagonal(d) {\n return isVertical ? linkVertical(d) : linkHorizontal(d);\n }\n\n function project(x, y) {\n const angle = (x - 90) / 180 * Math.PI;\n const radius = y;\n return [radius * Math.cos(angle), radius * Math.sin(angle)];\n }\n\n function radialDiagonal(d) {\n return \"M\" + project(d.x, d.y)\n + \"C\" + project(d.x, (d.y + d.parent.y) / 2)\n + \" \" + project(d.parent.x, (d.y + d.parent.y) / 2)\n + \" \" + project(d.parent.x, d.parent.y);\n }\n\n const transitionDuration = this._renderCount ? 500 : 0;\n const lines = this._renderElement.selectAll(\".link\").data(links);\n lines.enter().append(\"path\")\n .attr(\"class\", \"link\")\n .attr(\"d\", this.radial() ? radialDiagonal : diagonal)\n ;\n lines.transition().duration(transitionDuration)\n .attr(\"d\", this.radial() ? radialDiagonal : diagonal)\n ;\n lines.exit().remove();\n\n // Nodes ---\n const textOffsetX = this.circleRadius() + 2;\n function nodeTransform(d) {\n if (context.radial()) {\n return \"rotate(\" + (d.x - 90) + \")translate(\" + d.y + \")\";\n }\n return context.orientation() === \"horizontal\" ? \"translate(\" + d.y + \",\" + d.x + \")\" : \"translate(\" + d.x + \",\" + d.y + \")\";\n }\n const nodes = this._renderElement.selectAll(\".node\").data(dataNodes);\n nodes.transition().duration(transitionDuration)\n .attr(\"transform\", nodeTransform)\n ;\n const enterNodes = nodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", nodeTransform)\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n let tmp = d;\n while (tmp.children) {\n tmp = tmp.children[0];\n }\n if (d.depth > 0) {\n if (tmp.origRows) {\n context.click(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);\n } else {\n context.click(tmp.data, context.mappings()[d.depth - 1].column(), true);\n }\n }\n })\n .on(\"dblclick\", function (d) {\n let tmp = d;\n while (tmp.children) {\n tmp = tmp.children[0];\n }\n if (d.depth > 0) {\n if (tmp.origRows) {\n context.dblclick(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);\n } else {\n context.dblclick(tmp.data, context.mappings()[d.depth - 1].column(), true);\n }\n }\n })\n .each(function () {\n const e = d3Select(this);\n e.append(\"circle\");\n e.append(\"text\");\n })\n ;\n enterNodes.merge(nodes).select(\"circle\")\n .attr(\"r\", this.circleRadius())\n .style(\"fill\", function (d) { return context._palette(d.data.label); })\n .append(\"title\")\n .text(function (d) { return d.data.label; })\n ;\n enterNodes.merge(nodes).select(\"text\")\n .attr(\"dx\", function (d) {\n if (context.radial()) {\n if (d.children) {\n return d.x < 180 ? -textOffsetX : textOffsetX;\n } else {\n return d.x < 180 ? textOffsetX : -textOffsetX;\n }\n } else if (isVertical) {\n return d.children ? textOffsetX : -textOffsetX;\n }\n return d.children ? -textOffsetX : textOffsetX;\n })\n .attr(\"dy\", \"0.25em\")\n .style(\"text-anchor\", function (d) {\n if (context.radial()) {\n if (d.children) {\n return d.x < 180 ? \"end\" : \"start\";\n } else {\n return d.x < 180 ? \"start\" : \"end\";\n }\n } else if (isVertical) {\n return d.children ? \"start\" : \"end\";\n }\n return d.children ? \"end\" : \"start\";\n })\n .attr(\"transform\", function (d) {\n if (context.radial()) {\n return d.x < 180 ? null : \"rotate(180)\";\n } else if (isVertical) {\n return \"rotate(-66)\";\n }\n return null;\n })\n .text(function (d) { return d.data.label; })\n ;\n nodes.exit().remove();\n\n if (!this._renderCount) {\n context.zoomToFit();\n }\n }\n}\nDendrogram.prototype._class += \" tree_Dendrogram\";\nDendrogram.prototype.implements(ITree.prototype);\nDendrogram.prototype.mixin(Utility.SimpleSelectionMixin);\nDendrogram.prototype.Column = DendrogramColumn;\n\nexport interface Dendrogram {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // SimpleSelectionMixin ---\n _selection;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n mappings(): DendrogramColumn[];\n mappings(_: DendrogramColumn[]): this;\n\n circleRadius(): number;\n circleRadius(_: number): this;\n separation(): number;\n separation(_: number): this;\n dendrogram(): boolean;\n dendrogram(_: boolean): this;\n radial(): boolean;\n radial(_: boolean): this;\n orientation(): \"horizontal\" | \"vertical\";\n orientation(_: \"horizontal\" | \"vertical\"): this;\n}\n\nDendrogram.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Dendrogram.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nDendrogram.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nDendrogram.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: DendrogramColumn });\n\nDendrogram.prototype.publish(\"circleRadius\", 4.5, \"number\", \"Text offset from circle\");\nDendrogram.prototype.publish(\"separation\", 240, \"number\", \"Leaf Separation\");\nDendrogram.prototype.publish(\"dendrogram\", true, \"boolean\", \"Dendrogram\");\nDendrogram.prototype.publish(\"radial\", false, \"boolean\", \"Radial\");\nDendrogram.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Orientation\", [\"horizontal\", \"vertical\"], { tags: [\"Private\"], disable: w => w.radial() });\n","import { HTMLWidget, Palette, Platform, select as d3Select, Utility, } from \"@hpcc-js/common\";\nimport { max as d3Max } from \"d3-array\";\nimport { hierarchy as d3Hierarchy } from \"d3-hierarchy\";\n\ninterface DirectoryItem {\n color?: string;\n iconClass?: string;\n label: string;\n depth: number;\n content?: string;\n markers?: any;\n isFolder: boolean;\n bold?: boolean;\n selected?: boolean;\n weightValue?: string;\n weightColor?: string;\n}\n\nexport class DirectoryTree extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n flattenData(json): DirectoryItem[] {\n const context = this;\n const root = d3Hierarchy(json);\n const ret = [];\n\n if (!this.omitRoot()) {\n visitNode(root);\n } else if (root.children) {\n root.children.forEach(visitNode);\n }\n\n return ret;\n\n function visitNode(node) {\n const weightValue = node.data.markers && node.data.markers.length ? node.data.markers.length : \"\";\n ret.push({\n label: node.data.label,\n depth: node.depth - (context.omitRoot() ? 1 : 0),\n content: node.data.content,\n isFolder: !!node.data.children,\n iconClass: node.data.iconClass,\n color: node.data.color,\n bold: node.data.bold,\n weightValue,\n markers: node.data.markers,\n selected: node.data.selected\n });\n if (node.children) {\n node.children.forEach(visitNode);\n }\n }\n }\n\n protected iconClass(d) {\n if (d.label === \"error\") {\n return \"fa fa-exclamation\";\n }\n if (d.isFolder) {\n return this.folderIconOpen();\n }\n return this.textFileIcon();\n }\n\n protected calcRequiredWidth() {\n const flatData = this.flattenData(this.data());\n\n let widest = 0;\n\n const padding = this.rowItemPadding();\n const iconWidth = this.iconSize() + (padding * 2);\n const scrollbarWidth = Platform.getScrollbarWidth();\n\n flatData.forEach(row => {\n const offsetWidth = (row.depth * iconWidth) + (padding * 2);\n const textWidth = Utility.textSize(\n row.label,\n this.fontFamily(),\n this.fontSize(),\n !!row.bold\n ).width + (padding * 2);\n const totalWidth = textWidth + iconWidth + offsetWidth + scrollbarWidth;\n if (widest < totalWidth) {\n widest = totalWidth;\n }\n });\n return widest;\n }\n\n rowClick(str, markers) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"width\", \"100%\")\n .style(\"height\", \"100%\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n\n element\n .style(\"overflow-y\", this.verticalScroll() ? \"scroll\" : null)\n ;\n const flatData = this.flattenData(this.data());\n const maxWeightValue = d3Max(flatData, n => Number(n.weightValue));\n\n flatData.forEach(d => {\n if (!d.weightValue) {\n d.weightColor = \"transparent\";\n } else {\n d.weightColor = this._palette(d.weightValue, 1, maxWeightValue);\n }\n });\n const context = this;\n const padding = this.rowItemPadding();\n const iconWidth = this.iconSize() + padding;\n const lineHeight = Math.max(context.iconSize(), context.fontSize());\n const rowSelection = element.selectAll(\".directory-row\").data(flatData);\n const fontFamily = this.fontFamily();\n const fontSize = this.fontSize();\n const maxWeightWidth = d3Max(flatData, d => this.textSize(d.weightValue, fontFamily, fontSize).width);\n const rowItemPadding = `${padding}px ${padding}px ${padding / 2}px ${padding}px`;\n\n const rowEnter = rowSelection.enter().append(\"div\")\n .attr(\"class\", d => `directory-row directory-row-depth-${d.depth}`)\n .style(\"display\", \"flex\")\n .style(\"cursor\", \"pointer\")\n .each(function (d: DirectoryItem) {\n const rowDiv = d3Select(this);\n\n const fontColor = d.color ? d.color : context.fontColor();\n const weightColor = d.weightColor ? d.weightColor : \"transparent\";\n const weightFontColor = Palette.textColor(weightColor);\n\n const weightDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-weight\")\n .style(\"padding\", rowItemPadding)\n .style(\"color\", weightFontColor)\n .style(\"box-shadow\", `inset 0 0 100px ${weightColor}`)\n .style(\"font-weight\", d.bold ? \"bold\" : \"normal\")\n .style(\"font-family\", fontFamily)\n .style(\"font-size\", fontSize + \"px\")\n .text(d.weightValue)\n .attr(\"title\", d.weightValue)\n .style(\"overflow\", \"hidden\")\n .style(\"width\", (maxWeightWidth + (padding * 2)) + \"px\")\n .style(\"text-overflow\", \"ellipsis\")\n .style(\"text-align\", \"right\")\n .style(\"line-height\", lineHeight + \"px\")\n ;\n rowDiv.append(\"div\")\n .attr(\"class\", \"row-depth\")\n .style(\"width\", (context.depthSize() * d.depth) + \"px\")\n .style(\"opacity\", 1)\n .style(\"line-height\", lineHeight + \"px\")\n ;\n const iconDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-icon \" + (d.iconClass ? d.iconClass : context.iconClass(d)))\n .style(\"width\", iconWidth + \"px\")\n .style(\"height\", lineHeight + \"px\")\n .style(\"color\", fontColor)\n .style(\"background-color\", d.selected ? context.selectionBackgroundColor() : \"transparent\")\n .style(\"font-size\", context.iconSize() + \"px\")\n .style(\"padding\", rowItemPadding)\n .style(\"line-height\", lineHeight + \"px\")\n ;\n const labelDiv = rowDiv.append(\"div\")\n .attr(\"class\", \"row-label\")\n .style(\"padding\", rowItemPadding)\n .style(\"color\", fontColor)\n .style(\"background-color\", d.selected ? context.selectionBackgroundColor() : \"transparent\")\n .style(\"font-weight\", d.bold ? \"bold\" : \"normal\")\n .style(\"font-family\", context.fontFamily())\n .style(\"font-size\", context.fontSize() + \"px\")\n .text(d.label)\n .attr(\"title\", d.label)\n .style(\"flex\", 1)\n .style(\"overflow\", \"hidden\")\n .style(\"text-overflow\", \"ellipsis\")\n .style(\"line-height\", lineHeight + \"px\")\n ;\n\n rowDiv\n .on(\"mouseenter\", () => {\n labelDiv.style(\"font-weight\", \"bold\");\n })\n .on(\"mouseleave\", () => {\n labelDiv.style(\"font-weight\", d.bold ? \"bold\" : \"normal\");\n })\n ;\n weightDiv\n .on(\"mouseenter\", () => {\n context.weight_mouseenter(d);\n })\n .on(\"mouseleave\", () => {\n context.weight_mouseleave(d);\n })\n ;\n\n if (d.isFolder) {\n rowDiv.on(\"click\", function (d: any) {\n let next = this.nextSibling;\n const wasClosed = rowDiv.classed(\"folder-closed\");\n if (wasClosed) {\n rowDiv.classed(\"folder-closed\", false);\n rowDiv.classed(\"folder-open\", true);\n iconDiv.attr(\"class\", \"row-icon \" + context.folderIconOpen());\n } else {\n rowDiv.classed(\"folder-closed\", true);\n rowDiv.classed(\"folder-open\", false);\n iconDiv.attr(\"class\", \"row-icon \" + context.folderIconClosed());\n }\n while (next !== null) {\n const nextDepth = (d3Select(next).datum() as any).depth;\n if (nextDepth > d.depth) {\n next.style.display = wasClosed ? \"flex\" : \"none\";\n next = next.nextSibling;\n } else {\n next = null;\n }\n }\n });\n } else {\n rowDiv.on(\"click\", () => {\n element.selectAll(\".row-label\").style(\"background-color\", \"transparent\");\n element.selectAll(\".row-icon\").style(\"background-color\", \"transparent\");\n iconDiv.style(\"background-color\", context.selectionBackgroundColor());\n labelDiv.style(\"background-color\", context.selectionBackgroundColor());\n const ext = d.label.split(\".\").pop().toLowerCase();\n context.rowClick(ext === \"json\" ? JSON.stringify(JSON.parse(d.content), null, 4) : d.content, d.markers);\n });\n }\n })\n ;\n\n rowEnter\n .merge(rowSelection)\n .style(\"background-color\", context.backgroundColor())\n ;\n\n rowSelection.exit().remove();\n }\n weight_mouseenter(d) {\n\n }\n weight_mouseleave(d) {\n\n }\n}\nDirectoryTree.prototype._class += \" tree_DirectoryTree\";\nDirectoryTree.prototype._palette = Palette.rainbow(\"Blues\");\n\nexport interface DirectoryTree {\n _palette;\n\n depthSize(): number;\n depthSize(_: number): this;\n paletteID(): string;\n paletteID(_: string): this;\n omitRoot(): boolean;\n omitRoot(_: boolean): this;\n rowItemPadding(): number;\n rowItemPadding(_: number): this;\n selectionBackgroundColor(): string;\n selectionBackgroundColor(_: string): this;\n backgroundColor(): string;\n backgroundColor(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n iconSize(): number;\n iconSize(_: number): this;\n folderIconOpen(): string;\n folderIconOpen(_: string): this;\n folderIconClosed(): string;\n folderIconClosed(_: string): this;\n textFileIcon(): string;\n textFileIcon(_: string): this;\n verticalScroll(): boolean;\n verticalScroll(_: boolean): this;\n}\n\nDirectoryTree.prototype.publish(\"depthSize\", 14, \"number\", \"Width of indentation per file or folder depth (pixels)\");\nDirectoryTree.prototype.publish(\"paletteID\", \"Blues\", \"set\", \"Color palette for the weight backgrounds\", DirectoryTree.prototype._palette.switch(), { tags: [\"Basic\"] });\nDirectoryTree.prototype.publish(\"omitRoot\", false, \"boolean\", \"If true, root node will not display\");\nDirectoryTree.prototype.publish(\"rowItemPadding\", 2, \"number\", \"Top, bottom, left and right row item padding\");\nDirectoryTree.prototype.publish(\"selectionBackgroundColor\", \"#CCC\", \"html-color\", \"Background color of selected directory rows\");\nDirectoryTree.prototype.publish(\"backgroundColor\", \"#FFF\", \"html-color\", \"Directory item background color\");\nDirectoryTree.prototype.publish(\"fontColor\", \"#000\", \"html-color\", \"Directory item font color\");\nDirectoryTree.prototype.publish(\"fontFamily\", \"Arial\", \"string\", \"Directory item font family\");\nDirectoryTree.prototype.publish(\"fontSize\", 12, \"number\", \"Directory item font size (pixels)\");\nDirectoryTree.prototype.publish(\"iconSize\", 12, \"number\", \"Directory folder and file icon size (pixels)\");\nDirectoryTree.prototype.publish(\"folderIconOpen\", \"fa fa-folder-open\", \"string\", \"Open folder icon class\");\nDirectoryTree.prototype.publish(\"folderIconClosed\", \"fa fa-folder\", \"string\", \"Closed folder icon class\");\nDirectoryTree.prototype.publish(\"textFileIcon\", \"fa fa-file-text-o\", \"string\", \"Text file icon class\");\nDirectoryTree.prototype.publish(\"verticalScroll\", true, \"boolean\", \"If true, vertical scroll bar will be shown\");\n","import { ITree } from \"@hpcc-js/api\";\nimport { PropertyExt, SVGZoomWidget, Utility } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, tree as d3Tree } from \"d3-hierarchy\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Indented.css\";\n\nexport class IndentedColumn extends PropertyExt {\n _owner: Indented;\n\n constructor() {\n super();\n }\n\n owner(): Indented;\n owner(_: Indented): this;\n owner(_?: Indented): Indented | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n valid(): boolean {\n return !!this.column();\n }\n\n column: (_?: string) => string | IndentedColumn;\n}\nIndentedColumn.prototype._class += \" tree_Dendrogram.IndentedColumn\";\n\nIndentedColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: IndentedColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Indented extends SVGZoomWidget {\n Column;\n _d3Tree;\n _xml;\n _svgLinks;\n _svgNodes;\n _treeData;\n _collapsed: { [key: string]: boolean } = {};\n\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this);\n\n this._drawStartPos = \"origin\";\n\n this._d3Tree = d3Tree();\n }\n\n xmlToData(xml, id = \"\") {\n if (DOMParser) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(xml, \"text/xml\");\n return xmlToJson(doc, id).children[0];\n }\n return [];\n }\n\n xml(_) {\n if (!arguments.length) return this._xml;\n this._xml = _;\n this.data(this.xmlToData(this._xml));\n return this;\n }\n\n IndentedData() {\n if (this.data().length === 0) return [];\n if (this.xmlColumn_exists()) {\n const cellIdx = this.columns().indexOf(this.xmlColumn());\n const retVal = {\n label: this.xmlColumn(),\n children: this.data().map(function (row, idx) {\n return this.xmlToData(row[cellIdx], \"[\" + idx + \"]\");\n }, this)\n };\n return retVal.children.length === 1 ? retVal.children[0] : retVal;\n } else {\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n const view = this._db.rollupView(this.mappings().map(function (mapping) { return mapping.column(); }));\n const root = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(root);\n }\n\n function formatData(node): any {\n if (node.values instanceof Array) {\n const children = node.values.filter(function (value) {\n return !(value instanceof Array);\n }).map(function (value) {\n return formatData(value);\n });\n const retVal: any = {\n label: node.key\n };\n if (children.length) {\n retVal.children = children;\n } else {\n retVal.size = 22;\n }\n return retVal;\n }\n return {\n label: node.key,\n size: node.values.aggregate,\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._svgLinks = this._renderElement.append(\"g\");\n this._svgNodes = this._renderElement.append(\"g\");\n this._selection.widgetElement(this._svgNodes);\n }\n\n protected _prevDataChecksum;\n update(domNode, _element) {\n super.update(domNode, _element);\n const context = this;\n\n this._d3Tree\n .nodeSize([0, this.barHeight()])\n ;\n const dataChecksum = this._db.dataChecksum();\n if (this._prevDataChecksum !== dataChecksum) {\n this._treeData = this.IndentedData();\n this._prevDataChecksum = dataChecksum;\n }\n\n function getID(d) {\n return (d.parent ? getID(d.parent) + \".\" : \"\") + d.data.label;\n }\n\n const root = d3Hierarchy(this.data())\n .sum(function (d) {\n return d.size || 50;\n }).each((d) => {\n if (this._collapsed[getID(d)]) {\n delete (d.children);\n }\n })\n ;\n\n const dataNodes = this._d3Tree(root).descendants();\n const links = this._d3Tree(root).descendants().slice(1);\n\n let nodeIdx = 0;\n root.eachBefore((n: any) => {\n n.x = nodeIdx * context.barHeight();\n ++nodeIdx;\n });\n\n const boxSize = this.barHeight() - 4;\n const transitionDuration = this._renderCount ? 500 : 0;\n\n // Lines ---\n const lines = this._svgLinks.selectAll(\".link\").data(links, function (d) { return getID(d); });\n lines.enter().append(\"path\")\n .attr(\"class\", \"link\")\n .attr(\"d\", elbow)\n ;\n lines.transition().duration(transitionDuration)\n .attr(\"d\", elbow)\n ;\n lines.exit().remove();\n\n function elbow(d) {\n return \"M\" + d.parent.y + \",\" + d.parent.x\n + \"V\" + d.x + \", H\" + d.y;\n }\n\n // Nodes ---\n const nodes = this._svgNodes.selectAll(\".node\").data(dataNodes, function (d) { return getID(d); });\n nodes.transition().duration(transitionDuration)\n .attr(\"transform\", function (d) { return \"translate(\" + d.y + \",\" + d.x + \")\"; })\n ;\n const enterNodes = nodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", function (d) { return \"translate(\" + d.y + \",\" + d.x + \")\"; })\n .call(this._selection.enter.bind(this._selection))\n .each(function () {\n const element = d3Select(this);\n element.append(\"rect\")\n .attr(\"height\", boxSize)\n .attr(\"width\", boxSize)\n .on(\"click\", function (d: any) {\n if (context._collapsed[getID(d)]) {\n delete context._collapsed[getID(d)];\n } else if (d.children) {\n context._collapsed[getID(d)] = true;\n }\n context.lazyRender();\n })\n ;\n element.append(\"text\");\n })\n .style(\"opacity\", 0)\n ;\n enterNodes.transition()\n .style(\"opacity\", 1)\n ;\n enterNodes.merge(nodes).select(\"rect\")\n .attr(\"x\", -boxSize / 2)\n .attr(\"y\", -boxSize / 2)\n .style(\"fill\", color)\n ;\n enterNodes.merge(nodes).select(\"text\")\n .attr(\"dx\", boxSize / 2 + 4 + \"px\")\n .attr(\"dy\", \"0.33em\")\n .text(function (d) { return d.data.label; })\n ;\n nodes.exit().transition()\n .style(\"opacity\", 0)\n .remove()\n ;\n\n if (!this._renderCount) {\n context.zoomToFit();\n }\n\n function color(d) {\n return context._collapsed[getID(d)] ? \"#3182bd\" : d.children ? \"#c6dbef\" : \"#fd8d3c\";\n }\n }\n}\nIndented.prototype._class += \" tree_Indented\";\nIndented.prototype.implements(ITree.prototype);\nIndented.prototype.mixin(Utility.SimpleSelectionMixin);\nIndented.prototype.Column = IndentedColumn;\n\nexport interface Indented {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // SimpleSelectionMixin ---\n _selection;\n\n // Properties ---\n xmlColumn(): string;\n xmlColumn(_: string): this;\n xmlColumn_exists(): boolean;\n mappings(): IndentedColumn[];\n mappings(_: IndentedColumn[]): this;\n barHeight(): number;\n barHeight(_: number): this;\n}\n\nIndented.prototype.publish(\"xmlColumn\", null, \"set\", \"Field\", function () { return this.columns(); }, { optional: true });\nIndented.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: IndentedColumn, disable: (w) => w.xmlColumn_exists() });\nIndented.prototype.publish(\"barHeight\", 16, \"number\", \"Bar height\");\n\nfunction xmlToJson(xml, id = \"\") {\n const retVal = {\n id,\n label: \"\",\n attributes: {},\n children: []\n };\n\n retVal.label = xml.nodeName;\n if (xml.nodeType === 1) { // element\n if (xml.attributes.length > 0) {\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n retVal.attributes[attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) { // text\n retVal.label = xml.nodeValue;\n }\n\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const child = xmlToJson(item, id + \"[\" + retVal.children.length + \"]\");\n retVal.children.push(child);\n }\n }\n return retVal;\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","import { ITree } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { hierarchy as d3Hierarchy, partition as d3Parition } from \"d3-hierarchy\";\nimport { interpolate as d3Interpolate } from \"d3-interpolate\";\nimport { scaleLinear as d3ScaleLinear, scaleSqrt as d3ScaleSqrt } from \"d3-scale\";\nimport { arc as d3Arc } from \"d3-shape\";\n\nimport \"../src/SunburstPartition.css\";\n\nexport class SunburstPartition extends SVGWidget {\n svg;\n radius;\n _xScale;\n _yScale;\n partition;\n arc;\n _resetRoot;\n\n constructor() {\n super();\n ITree.call(this);\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = SVGWidget.prototype.data.apply(this, arguments);\n if (arguments.length) {\n this._resetRoot = true;\n }\n return retVal;\n }\n\n enter(_domNode, element) {\n const context = this;\n\n this.radius = Math.min(this.width(), this.height()) / 2;\n\n this._xScale = d3ScaleLinear()\n .range([0, 2 * Math.PI])\n ;\n\n this._yScale = d3ScaleSqrt()\n .range([0, this.radius])\n ;\n\n this.partition = d3Parition();\n\n this.arc = d3Arc()\n .startAngle(function (d: any) {\n return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x0)));\n })\n .endAngle(function (d: any) {\n return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x1)));\n })\n .innerRadius(function (d: any) {\n return Math.max(0, context._yScale(d.y0));\n })\n .outerRadius(function (d: any) {\n return Math.max(0, context._yScale(d.y1));\n })\n ;\n\n this.svg = element.append(\"g\");\n }\n\n 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 this.radius = Math.min(this.width(), this.height()) / 2;\n this._yScale.range([0, this.radius]);\n\n const root = d3Hierarchy(this.data())\n .sum(function (d) {\n return d.size !== undefined ? d.size : 1;\n })\n ;\n\n const paths = this.svg.selectAll(\"path\").data(this.partition(root).descendants(), function (d, i) {\n return d.data.label !== undefined ? d.data.label : i;\n });\n\n paths.enter().append(\"path\")\n .on(\"click\", function (d) { context.click(d.data, null, null); })\n .on(\"dblclick\", function (d) {\n const event = d3Event();\n if (event) {\n event.stopPropagation();\n }\n context.zoomTo(d);\n })\n .each(function () {\n const element = d3Select(this);\n element\n .append(\"title\")\n ;\n })\n .merge(paths)\n .attr(\"d\", this.arc)\n .style(\"fill\", function (d) {\n return d.data.__viz_fill ? d.data.__viz_fill : context._palette(d.data.label);\n })\n .style(\"stroke\", function (d) {\n return d.value > 16 ? \"white\" : \"none\";\n })\n .select(\"title\")\n .text(function (d) {\n return d.data.label;\n })\n ;\n\n paths.exit().remove();\n\n if (this._resetRoot) {\n this._resetRoot = false;\n this.zoomTo(root);\n }\n }\n\n zoomTo(d) {\n const context = this;\n this.svg.transition()\n .duration(750)\n .tween(\"scale\", function () {\n const xd = d3Interpolate(context._xScale.domain(), [d.x0, d.x1]);\n const yd = d3Interpolate(context._yScale.domain(), [d.y0, 1]);\n const yr = d3Interpolate(context._yScale.range(), [d.y0 ? 20 : 0, context.radius]);\n return function (t) { context._xScale.domain(xd(t)); context._yScale.domain(yd(t)).range(yr(t)); };\n })\n .selectAll(\"path\")\n .attrTween(\"d\", function (d2) { return function () { return context.arc(d2); }; });\n }\n}\nSunburstPartition.prototype._class += \" tree_SunburstPartition\";\nSunburstPartition.prototype.implements(ITree.prototype);\n\nexport interface SunburstPartition {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n}\n\nSunburstPartition.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", SunburstPartition.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nSunburstPartition.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n","import { ITree } from \"@hpcc-js/api\";\nimport { HTMLWidget, Palette, PropertyExt, Utility } from \"@hpcc-js/common\";\nimport { rgb as d3rgb } from \"d3-color\";\nimport { hierarchy as d3Hierarchy, treemap as d3Treemap, treemapBinary as d3treemapBinary, treemapDice as d3treemapDice, treemapResquarify as d3treemapResquarify, treemapSlice as d3treemapSlice, treemapSliceDice as d3treemapSliceDice, treemapSquarify as d3treemapSquarify } from \"d3-hierarchy\";\n\nimport \"../src/Treemap.css\";\n\nexport class TreemapColumn extends PropertyExt {\n _owner: Treemap;\n\n constructor() {\n super();\n }\n\n owner(): Treemap;\n owner(_: Treemap): this;\n owner(_?: Treemap): Treemap | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n column: { (): string; (_: string): TreemapColumn; };\n}\nTreemapColumn.prototype._class += \" tree_Dendrogram.TreemapColumn\";\n\nTreemapColumn.prototype.publish(\"column\", null, \"set\", \"Field\", function (this: TreemapColumn) { return this._owner ? this._owner.columns() : []; }, { optional: true });\n\n// ===\nexport class Treemap extends HTMLWidget {\n Column;\n protected _d3Treemap;\n protected _elementDIV;\n protected _selection;\n constructor() {\n super();\n ITree.call(this);\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n private getTilingMethod() {\n switch (this.tilingMethod()) {\n case \"treemapBinary\":\n return d3treemapBinary;\n case \"treemapDice\":\n return d3treemapDice;\n case \"treemapSlice\":\n return d3treemapSlice;\n case \"treemapSliceDice\":\n return d3treemapSliceDice;\n case \"treemapResquarify\":\n return d3treemapResquarify;\n case \"treemapSquarify\":\n default:\n return d3treemapSquarify;\n }\n }\n\n treemapData() {\n if (!this.mappings().filter(mapping => mapping.valid()).length) {\n return this.data();\n }\n\n const view = this._db.aggregateView(this.mappings().map(function (mapping) { return mapping.column(); }), this.aggrType(), this.aggrColumn());\n const retVal = {\n key: \"root\",\n values: view.entries()\n };\n return formatData(retVal);\n\n function formatData(node): any {\n if (node.values instanceof Array) {\n const children = node.values.filter(function (value) {\n return !(value instanceof Array);\n }).map(function (value) {\n return formatData(value);\n });\n const retVal2: any = {\n label: node.key\n };\n if (children.length) {\n retVal2.children = children;\n } else {\n retVal2.size = 22;\n }\n return retVal2;\n }\n return {\n label: node.key,\n size: node.values.aggregate,\n origRows: node.values\n };\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._d3Treemap = d3Treemap();\n\n this._elementDIV = element.append(\"div\");\n this._selection.widgetElement(this._elementDIV);\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(this.treemapData())\n .sum(this.nodeWeight)\n ;\n\n this._d3Treemap\n .size([this.width(), this.height()])\n .paddingInner(this.paddingInner())\n .paddingOuter(this.paddingOuter())\n .paddingTop(this.paddingTop())\n ;\n if ([\"treemapSquarify\", \"treemapResquarify\"].indexOf(this.tilingMethod()) !== -1) {\n this._d3Treemap.tile(this.getTilingMethod()[\"ratio\"](this.squarifyRatio()));\n } else {\n this._d3Treemap.tile(this.getTilingMethod());\n }\n this._d3Treemap(root);\n\n this._elementDIV\n .style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null)\n .style(\"line-height\", this.fontSize_exists() ? (this.fontSize() + 2) + \"px\" : null)\n ;\n\n const node = this._elementDIV.selectAll(\".node\").data(root.descendants());\n node.enter().append(\"div\")\n .attr(\"class\", \"node\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n if (d) {\n let columnLabel = \"\";\n context.mappings().forEach(function (mapping) {\n if (mapping.column()) {\n columnLabel = mapping.column();\n }\n });\n if (d.origRows) {\n context.click(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));\n } else {\n context.click(d.data, columnLabel, context._selection.selected(this));\n }\n }\n })\n .on(\"dblclick\", function (d) {\n if (d) {\n let columnLabel = \"\";\n context.mappings().forEach(function (mapping) {\n if (mapping.column()) {\n columnLabel = mapping.column();\n }\n });\n if (d.origRows) {\n context.dblclick(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));\n } else {\n context.dblclick(d.data, columnLabel, context._selection.selected(this));\n }\n }\n })\n .merge(node)\n .style(\"left\", function (d) { return (d.x0 + Math.max(0, d.x1 - d.x0) / 2) + \"px\"; })\n .style(\"top\", function (d) { return (d.y0 + Math.max(0, d.y1 - d.y0) / 2) + \"px\"; })\n .style(\"width\", function () { return 0 + \"px\"; })\n .style(\"height\", function () { return 0 + \"px\"; })\n .style(\"font-size\", function (d) { return (d.children ? context.parentFontSize() : context.leafFontSize()) + \"px\"; })\n .style(\"line-height\", function (d) { return (d.children ? context.parentFontSize() : context.leafFontSize()) + \"px\"; })\n .attr(\"title\", tooltip)\n .html(function (d) {\n if (!context.showRoot() && d.depth === 0) {\n return null;\n }\n if (d.children) {\n if (context.enableParentLabels()) {\n return context.parentWeightHTML(d);\n } else {\n return null;\n }\n } else {\n return context.leafWeightHTML(d);\n }\n })\n .style(\"background\", function (d) {\n if (!context.showRoot() && d.depth === 0) {\n this.style.color = \"transparent\";\n return \"transparent\";\n }\n const light_dark = context.brighterLeafNodes() ? \"brighter\" : \"darker\";\n let _color;\n if (context.usePaletteOnParentNodes()) {\n _color = d.children ? context._palette(d.data.label) : d3rgb(context._palette(d.parent.data.label))[light_dark](1);\n } else {\n if (d.depth > context.depthColorLimit()) {\n _color = d3rgb(d.parent.color)[light_dark](1);\n } else {\n _color = context._palette(d.data.label);\n }\n d.color = _color;\n }\n this.style.color = Palette.textColor(_color);\n return _color;\n })\n .transition().duration(this.transitionDuration())\n .style(\"pointer-events\", function (d) { return !context.showRoot() && d.depth === 0 ? \"none\" : \"all\"; })\n .style(\"opacity\", function (d) { return d.children ? 1 : null; })\n .style(\"left\", function (d) { return d.x0 + \"px\"; })\n .style(\"top\", function (d) { return d.y0 + \"px\"; })\n .style(\"width\", function (d) { return Math.max(0, d.x1 - d.x0) + \"px\"; })\n .style(\"height\", function (d) { return Math.max(0, d.y1 - d.y0) + \"px\"; })\n .each(function (d) {\n if (d.depth === 0) {\n this.style.color = !context.showRoot() ? \"transparent\" : \"\";\n this.style.borderColor = !context.showRoot() ? \"transparent\" : \"\";\n }\n })\n ;\n node.exit().transition().duration(this.transitionDuration())\n .style(\"opacity\", 0)\n .remove()\n ;\n function tooltip(d) {\n if (d.children && !context.enableParentTooltips()) {\n return null;\n }\n let retVal = d.data.label + \" (\" + d.value + \")\";\n while (d.parent && d.parent.parent) {\n retVal = d.parent.data.label + \" -> \" + retVal;\n d = d.parent;\n }\n return retVal;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n nodeWeight(d) {\n return d.size || 1;\n }\n\n parentWeightHTML(d) {\n return this.showParentWeight() ? `<span class=\"treemap-parent-label\">${d.data.label}</span><span class=\"treemap-parent-value\">${d.value}${this.weightSuffix()}</span>` : `<span class=\"treemap-parent-label\">${d.data.label}</span>`;\n }\n\n leafWeightHTML(d) {\n return this.showLeafWeight() ? `<span class=\"treemap-leaf-label\">${d.data.label}</span><span class=\"treemap-leaf-value\">${d.value}${this.weightSuffix()}</span>` : `<span class=\"treemap-leaf-label\">${d.data.label}</span>`;\n }\n}\nTreemap.prototype._class += \" tree_Treemap\";\nTreemap.prototype.implements(ITree.prototype);\nTreemap.prototype.mixin(Utility.SimpleSelectionMixin);\nTreemap.prototype.Column = TreemapColumn;\n\nexport interface Treemap {\n _palette;\n\n // ITree ---\n click(row, column, selected): void;\n dblclick(row, column, selected): void;\n\n // Properties ---\n paletteID(): string;\n paletteID(_: string): this;\n useClonedPalette(): boolean;\n useClonedPalette(_: boolean): this;\n mappings(): TreemapColumn[];\n mappings(_: TreemapColumn[]): this;\n aggrType(): string;\n aggrType(_: string): this;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontSize_exists(): boolean;\n paddingInner(): number;\n paddingInner(_: number): this;\n paddingOuter(): number;\n paddingOuter(_: number): this;\n paddingTop(): number;\n paddingTop(_: number): this;\n showRoot(): boolean;\n showRoot(_: boolean): this;\n parentFontSize(): number;\n parentFontSize(_: number): this;\n leafFontSize(): number;\n leafFontSize(_: number): this;\n usePaletteOnParentNodes(): boolean;\n usePaletteOnParentNodes(_: boolean): this;\n depthColorLimit(): number;\n depthColorLimit(_: number): this;\n squarifyRatio(): number;\n squarifyRatio(_: number): this;\n showParentWeight(): boolean;\n showParentWeight(_: boolean): this;\n showLeafWeight(): boolean;\n showLeafWeight(_: boolean): this;\n weightSuffix(): string;\n weightSuffix(_: string): this;\n brighterLeafNodes(): boolean;\n brighterLeafNodes(_: boolean): this;\n enableParentLabels(): boolean;\n enableParentLabels(_: boolean): this;\n enableParentTooltips(): boolean;\n enableParentTooltips(_: boolean): this;\n transitionDuration(): number[];\n transitionDuration(_: number[]): this;\n tilingMethod(): string;\n tilingMethod(_: string): this;\n}\n\nTreemap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", Treemap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nTreemap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\nTreemap.prototype.publish(\"mappings\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: TreemapColumn });\nTreemap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nTreemap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nTreemap.prototype.publish(\"fontSize\", null, \"number\", \"Font Size\", null, { optional: true });\nTreemap.prototype.publish(\"paddingInner\", 18.6, \"number\", \"Pixel spacing between each sibling node\");\nTreemap.prototype.publish(\"paddingOuter\", 30, \"number\", \"Pixel padding of parent nodes\");\nTreemap.prototype.publish(\"paddingTop\", 41.4, \"number\", \"Additional top pixel padding of parent nodes\");\nTreemap.prototype.publish(\"showRoot\", false, \"boolean\", \"Show root element\");\nTreemap.prototype.publish(\"parentFontSize\", 18, \"number\", \"Parent font-size\");\nTreemap.prototype.publish(\"leafFontSize\", 16, \"number\", \"Leaf font-size\");\nTreemap.prototype.publish(\"usePaletteOnParentNodes\", false, \"boolean\", \"Assign a color from the palette to every parent node\");\nTreemap.prototype.publish(\"depthColorLimit\", 1, \"number\", \"Assign a color from the palette to node with depth lower than this value\", null, { optional: true, disable: (w) => w.usePaletteOnParentNodes() });\nTreemap.prototype.publish(\"squarifyRatio\", 1, \"number\", \"Specifies the desired aspect ratio of the generated rectangles (must be >= 1)\", null, { optional: true, disable: (w) => [\"treemapSquarify\", \"treemapResquarify\"].indexOf(w.tilingMethod()) === -1 });\nTreemap.prototype.publish(\"showParentWeight\", true, \"boolean\", \"Show weight of parent nodes\");\nTreemap.prototype.publish(\"showLeafWeight\", true, \"boolean\", \"Show weight of leaf nodes\");\nTreemap.prototype.publish(\"weightSuffix\", \"\", \"string\", \"Weight suffix (ex: 'ms')\");\nTreemap.prototype.publish(\"brighterLeafNodes\", false, \"boolean\", \"Brighter/darker leaf node color (false = darker)\");\nTreemap.prototype.publish(\"enableParentLabels\", true, \"boolean\", \"Enable parent labels\");\nTreemap.prototype.publish(\"enableParentTooltips\", true, \"boolean\", \"Enable parent tooltips\");\nTreemap.prototype.publish(\"transitionDuration\", 250, \"number\", \"Transition Duration\");\nTreemap.prototype.publish(\"tilingMethod\", \"treemapSquarify\", \"set\", \"Transition Duration\", [\"treemapBinary\", \"treemapDice\", \"treemapResquarify\", \"treemapSlice\", \"treemapSliceDice\", \"treemapSquarify\"]);\n"],"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,24,25,26,27,28,29,34,35,36,37],"mappings":"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"}
|