@hpcc-js/tree 3.2.19 → 3.2.20
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 +1398 -3
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -2
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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 = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","defaultSeparation","a","b","parent","meanX","children","reduce","meanXReduce","length","x","c","maxY","maxYReduce","y","Math","max","leafLeft","node","leafRight","d3Cluster","separation","dx","dy","nodeSize","cluster","root","previousNode","eachAfter","left","right","x0","x1","__name","arguments","size","count","sum","i","value","node_count","this","node_each","callback","current","n","next","reverse","pop","push","node_eachBefore","nodes","node_eachAfter","node_sum","data","node_sort","compare","eachBefore","sort","node_path","end","start","ancestor","leastCommonAncestor","k","splice","aNodes","ancestors","bNodes","node_ancestors","node_descendants","each","node_leaves","leaves","node_links","links","source","target","hierarchy","child","childs","Node","valued","defaultChildren","Array","depth","computeHeight","node_copy","copyData","d","height","prototype","constructor","path","descendants","copy","slice","shuffle","array","t","m","random","enclose","circles","p","e","call","B","enclosesWeak","encloseBasis","extendBasis","j","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","Error","dr","r","encloseBasis1","y1","r1","x2","y2","r2","x21","y21","r21","l","sqrt","x3","y3","r3","a2","a3","b2","b3","c2","c3","d1","d2","d3","ab","xa","xb","ya","yb","A","C","place","intersects","score","_","circle","previous","packEnclose","aa","ca","sj","sk","pack","optional","f","required","constantZero","constant$1","defaultRadius","d3Pack","radius","padding","radiusLeaf","packChildren","translateChild","min","constant","roundNode","round","y0","d3treemapDice","d3Parition","partition","positionNode","treemapDice","nextLeft","v","nextRight","moveSubtree","wm","wp","shift","change","s","z","executeShifts","w","nextAncestor","vim","TreeNode","treeRoot","tree","d3Tree","firstWalk","secondWalk","sizeNode","bottom","tx","kx","ky","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","d3treemapSlice","Object","create","phi","squarifyRatio","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","rows","i0","i1","dice","treemapSlice","d3treemapSquarify","custom","squarify","d3Treemap","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","d3treemapBinary","sums","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","d3treemapSliceDice","d3treemapResquarify","resquarify","_squarify","_CirclePacking","SVGWidget","diameter","svg","_focus","view","_node","super","ITree","enter","_domNode","element","width","append","update","_element","context","_palette","switch","paletteID","useClonedPalette","cloneNotExists","id","selectAll","remove","d3Hierarchy","attr","style","color","paletteDepthLevel_exists","paletteDepthLevel","d3Rgb","paletteDepthVariant","label","on","click","zoom","d3Event","stopPropagation","text","showSize","zoomTo","newFocus","transition","duration","altKey","tween","d3InterpolateZoom","showText","filter","display","CirclePacking","_class","implements","publish","disable","tags","_DendrogramColumn","PropertyExt","_owner","owner","valid","column","DendrogramColumn","columns","_Dendrogram","SVGZoomWidget","Column","_d3LayoutCluster","_d3LayoutTree","_d3Layout","Utility","SimpleSelectionMixin","_drawStartPos","dendrogramData","mappings","mapping","formatData","key","values","_db","rollupView","map","entries","origRows","domNode","_renderElement","_selection","widgetElement","isVertical","orientation","dendrogram","radial","dataNodes","linkVertical","linkHorizontal","diagonal","project","angle","PI","cos","sin","radialDiagonal","transitionDuration","_renderCount","lines","exit","textOffsetX","circleRadius","nodeTransform","enterNodes","bind","tmp","rowToObj","dblclick","d3Select","merge","select","zoomToFit","Dendrogram","mixin","autoExpand","_DirectoryTree","HTMLWidget","flattenData","json","ret","omitRoot","forEach","visitNode","weightValue","markers","content","isFolder","iconClass","bold","selected","folderIconOpen","textFileIcon","calcRequiredWidth","flatData","widest","rowItemPadding","iconWidth","iconSize","scrollbarWidth","Platform","getScrollbarWidth","offsetWidth","totalWidth","textSize","fontFamily","fontSize","rowClick","str","verticalScroll","maxWeightValue","d3Max","Number","weightColor","lineHeight","rowSelection","maxWeightWidth","rowDiv","fontColor","weightFontColor","Palette","textColor","weightDiv","depthSize","iconDiv","selectionBackgroundColor","labelDiv","weight_mouseenter","weight_mouseleave","nextSibling","wasClosed","classed","folderIconClosed","datum","ext","split","toLowerCase","JSON","stringify","parse","backgroundColor","DirectoryTree","rainbow","_IndentedColumn","IndentedColumn","_Indented","_d3Tree","_xml","_svgLinks","_svgNodes","_treeData","_collapsed","xmlToData","xml","DOMParser","xmlToJson","parseFromString","IndentedData","xmlColumn_exists","cellIdx","indexOf","xmlColumn","retVal","idx","aggregate","_prevDataChecksum","barHeight","dataChecksum","getID","nodeIdx","boxSize","elbow","lazyRender","Indented","attributes","nodeName","nodeType","attribute","item","hasChildNodes","childNodes","pi","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","arc","a0","a1","ccw","cw","da","rect","h","toString","atan2","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x10","y10","x32","y32","cornerTangents","rc","lo","ox","oy","x11","y11","x00","y00","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","d3Arc","cornerRadius","padRadius","buffer","r0","apply","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","_SunburstPartition","_xScale","_yScale","_resetRoot","d3ScaleLinear","range","d3ScaleSqrt","paths","event","__viz_fill","xd","d3Interpolate","domain","yd","yr","attrTween","SunburstPartition","_TreemapColumn","TreemapColumn","_Treemap","_d3Treemap","_elementDIV","getTilingMethod","tilingMethod","treemapData","aggregateView","aggrType","aggrColumn","retVal2","nodeWeight","fontSize_exists","tooltip","enableParentTooltips","columnLabel","parentFontSize","leafFontSize","html","showRoot","enableParentLabels","parentWeightHTML","leafWeightHTML","light_dark","brighterLeafNodes","_color","usePaletteOnParentNodes","d3rgb","depthColorLimit","borderColor","showParentWeight","weightSuffix","showLeafWeight","Treemap"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,34,35,36,37]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["defaultSeparation","Node","node_count","node_each","node_eachAfter","node_eachBefore","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","enclose","constant","roundNode","Node","squarify","roundNode","constant","slice","dice","pi","tau","epsilon","max","max","constant"],"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 = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\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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"}
|