datly 0.1.1 → 0.1.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datly.mjs","sources":["../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/extent.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/count.js","../node_modules/d3-array/src/bin.js","../node_modules/d3-array/src/nice.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-array/src/range.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/curve/basis.js","../src/plot.js","../src/code.js","../src/index.js","../node_modules/d3-shape/src/pie.js"],"sourcesContent":["export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(x) {\n return x;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const 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","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let 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 this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`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._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let 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._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let 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 this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`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._append`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._append`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._append`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(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.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 path = withPath(arc);\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. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (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 } else {\n rc0 = rc1 = 0;\n }\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","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","// ========================\n// 📊 D3 Core Imports\n// ========================\n// d3-selection\nimport { select, selectAll } from \"d3-selection\";\n// d3-scale\nimport {\n scaleLinear,\n scaleBand,\n scalePoint,\n scaleOrdinal,\n scaleSequential,\n} from \"d3-scale\";\n// d3-array\nimport {\n extent,\n max,\n min,\n sum,\n range,\n mean,\n deviation,\n histogram as d3Histogram,\n quantile,\n} from \"d3-array\";\n// d3-axis\nimport { axisBottom, axisLeft } from \"d3-axis\";\n// d3-colors\nimport {\n schemeCategory10,\n interpolateRdYlBu,\n interpolateViridis,\n} from \"d3-scale-chromatic\";\n// d3-shape\nimport { line as d3Line, curveBasis, pie as d3Pie, arc as d3Arc } from \"d3-shape\";\n\nlet plotCounter = 0;\n\nconst defaultConfig = {\n width: 400,\n height: 400,\n color: \"#000\",\n background: \"#fff\",\n title: \"\",\n xlabel: \"\",\n ylabel: \"\",\n axisColor: \"#000000\",\n titleColor: \"#000000\",\n xAxisColor: null,\n yAxisColor: null\n};\n\nfunction createSvg(userSelector, opts) {\n const config = { ...defaultConfig, ...opts };\n let selector = userSelector;\n let container;\n\n if (!selector) {\n selector = `#datly-plot-${plotCounter++}`;\n const div = document.createElement(\"div\");\n div.id = selector.replace(\"#\", \"\");\n document.body.appendChild(div);\n }\n\n container = select(selector);\n container.html(\"\");\n container.style(\"background\", config.background).style(\"display\", \"inline-block\");\n\n if (config.title) {\n container\n .append(\"h3\")\n .style(\"text-align\", \"center\")\n .style(\"font-family\", \"sans-serif\")\n .style(\"margin-bottom\", \"5px\")\n .style(\"color\", config.titleColor || defaultConfig.titleColor)\n .text(config.title);\n }\n\n const svg = container\n .append(\"svg\")\n .attr(\"width\", config.width)\n .attr(\"height\", config.height)\n .style(\"background\", config.background);\n\n // Adicionar xlabel\n if (config.xlabel) {\n svg.append(\"text\")\n .attr(\"x\", config.width / 2)\n .attr(\"y\", config.height - 10) // 10px da borda inferior\n .attr(\"text-anchor\", \"middle\")\n .style(\"font-family\", \"sans-serif\")\n .style(\"font-size\", \"14px\")\n .style(\"fill\", config.xAxisColor || config.axisColor || defaultConfig.axisColor)\n .text(config.xlabel);\n }\n\n // Adicionar ylabel\n if (config.ylabel) {\n svg.append(\"text\")\n .attr(\"transform\", `translate(15, ${config.height / 2}) rotate(-90)`)\n .attr(\"text-anchor\", \"middle\")\n .style(\"font-family\", \"sans-serif\")\n .style(\"font-size\", \"14px\")\n .style(\"fill\", config.yAxisColor || config.axisColor || defaultConfig.axisColor)\n .text(config.ylabel);\n }\n\n return { svg, config };\n}\n\n// ✅ Função para aplicar cor nos eixos\nfunction styleAxis(axisSelection, color) {\n axisSelection.selectAll(\"path\").attr(\"stroke\", color);\n axisSelection.selectAll(\"line\").attr(\"stroke\", color);\n axisSelection.selectAll(\"text\").attr(\"fill\", color);\n}\n\n// =======================================================\n// HISTOGRAM\n// =======================================================\nexport function plotHistogram(data, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleLinear().domain(extent(data)).nice().range([0, width]);\n const bins = d3Histogram().domain(x.domain()).thresholds(options.bins || 10)(data);\n const y = scaleLinear().domain([0, max(bins, (d) => d.length)]).nice().range([height, 0]);\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n g.selectAll(\"rect\")\n .data(bins)\n .enter()\n .append(\"rect\")\n .attr(\"x\", (d) => x(d.x0))\n .attr(\"y\", (d) => y(d.length))\n .attr(\"width\", (d) => x(d.x1) - x(d.x0) - 1)\n .attr(\"height\", (d) => height - y(d.length))\n .attr(\"fill\", config.color);\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// BOXPLOT\n// =======================================================\nexport function plotBoxplot(data, options = {}, selector) {\n const groups = Array.isArray(data[0]) ? data : [data];\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleBand()\n .domain(groups.map((_, i) => options.labels ? options.labels[i] : `Group ${i+1}`))\n .range([0, width])\n .padding(0.5);\n\n const allValues = groups.flat();\n const y = scaleLinear().domain(extent(allValues)).nice().range([height, 0]);\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n groups.forEach((group, i) => {\n const sorted = [...group].sort((a, b) => a - b);\n const q1 = quantile(sorted, 0.25);\n const median = quantile(sorted, 0.5);\n const q3 = quantile(sorted, 0.75);\n const minVal = min(sorted);\n const maxVal = max(sorted);\n const xPos = x(options.labels ? options.labels[i] : `Group ${i+1}`) + x.bandwidth()/2;\n const boxWidth = x.bandwidth()/2;\n\n g.append(\"line\")\n .attr(\"x1\", xPos)\n .attr(\"x2\", xPos)\n .attr(\"y1\", y(minVal))\n .attr(\"y2\", y(maxVal))\n .attr(\"stroke\", config.color);\n\n g.append(\"rect\")\n .attr(\"x\", xPos - boxWidth / 2)\n .attr(\"y\", y(q3))\n .attr(\"width\", boxWidth)\n .attr(\"height\", y(q1) - y(q3))\n .attr(\"stroke\", config.color)\n .attr(\"fill\", \"none\");\n\n g.append(\"line\")\n .attr(\"x1\", xPos - boxWidth / 2)\n .attr(\"x2\", xPos + boxWidth / 2)\n .attr(\"y1\", y(median))\n .attr(\"y2\", y(median))\n .attr(\"stroke\", config.color);\n });\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// SCATTER\n// =======================================================\nexport function plotScatter(xData, yData, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleLinear().domain(extent(xData)).nice().range([0, width]);\n const y = scaleLinear().domain(extent(yData)).nice().range([height, 0]);\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n g.selectAll(\"circle\")\n .data(xData)\n .enter()\n .append(\"circle\")\n .attr(\"cx\", (_, i) => x(xData[i]))\n .attr(\"cy\", (_, i) => y(yData[i]))\n .attr(\"r\", options.size || 4)\n .attr(\"fill\", config.color);\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// LINE\n// =======================================================\nexport function plotLine(xData, yData, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleLinear().domain(extent(xData)).range([0, width]);\n const y = scaleLinear().domain(extent(yData)).range([height, 0]);\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const path = d3Line()\n .x((_, i) => x(xData[i]))\n .y((_, i) => y(yData[i]))\n .curve(curveBasis);\n\n g.append(\"path\")\n .datum(xData)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", config.color)\n .attr(\"stroke-width\", options.lineWidth || 2)\n .attr(\"d\", path);\n\n if (options.showPoints) {\n g.selectAll(\"circle\")\n .data(xData)\n .enter()\n .append(\"circle\")\n .attr(\"cx\", (_, i) => x(xData[i]))\n .attr(\"cy\", (_, i) => y(yData[i]))\n .attr(\"r\", 3)\n .attr(\"fill\", config.color);\n }\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// BAR\n// =======================================================\nexport function plotBar(categories, values, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleBand().domain(categories).range([0, width]).padding(0.2);\n const y = scaleLinear().domain([0, max(values)]).nice().range([height, 0]);\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n g.selectAll(\"rect\")\n .data(values)\n .enter()\n .append(\"rect\")\n .attr(\"x\", (_, i) => x(categories[i]))\n .attr(\"y\", (d) => y(d))\n .attr(\"width\", x.bandwidth())\n .attr(\"height\", (d) => height - y(d))\n .attr(\"fill\", config.color);\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// PIE\n// =======================================================\nexport function plotPie(labels, values, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const radius = Math.min(config.width, config.height) / 2;\n const g = svg.append(\"g\").attr(\"transform\", `translate(${config.width/2},${config.height/2})`);\n const color = scaleOrdinal(schemeCategory10);\n const pieGen = d3Pie();\n const arcs = pieGen(values);\n const arcGen = d3Arc().innerRadius(0).outerRadius(radius);\n\n g.selectAll(\"path\")\n .data(arcs)\n .enter()\n .append(\"path\")\n .attr(\"d\", arcGen)\n .attr(\"fill\", (d, i) => color(i));\n\n if (options.showLabels) {\n g.selectAll(\"text\")\n .data(arcs)\n .enter()\n .append(\"text\")\n .attr(\"transform\", (d) => `translate(${arcGen.centroid(d)})`)\n .attr(\"text-anchor\", \"middle\")\n .text((d, i) => labels[i]);\n }\n}\n\n// =======================================================\n// HEATMAP\n// =======================================================\nexport function plotHeatmap(matrix, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const labels = options.labels || matrix.map((_, i) => `Var${i+1}`);\n const margin = { top: 40, right: 20, bottom: 40, left: 60 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleBand().domain(labels).range([0, width]).padding(0.05);\n const y = scaleBand().domain(labels).range([0, height]).padding(0.05);\n const color = scaleSequential(interpolateRdYlBu).domain([1, -1]);\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const cells = [];\n matrix.forEach((row, i) => {\n row.forEach((value, j) => cells.push({ x: labels[j], y: labels[i], value }));\n });\n\n g.selectAll(\"rect\")\n .data(cells)\n .enter()\n .append(\"rect\")\n .attr(\"x\", d => x(d.x))\n .attr(\"y\", d => y(d.y))\n .attr(\"width\", x.bandwidth())\n .attr(\"height\", y.bandwidth())\n .attr(\"fill\", d => color(d.value));\n\n if (options.showValues) {\n g.selectAll(\"text\")\n .data(cells)\n .enter()\n .append(\"text\")\n .attr(\"x\", d => x(d.x) + x.bandwidth()/2)\n .attr(\"y\", d => y(d.y) + y.bandwidth()/2)\n .attr(\"text-anchor\", \"middle\")\n .style(\"font-size\", \"10px\")\n .text(d => d.value.toFixed(2));\n }\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// VIOLIN\n// =======================================================\nexport function plotViolin(groups, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const dataGroups = Array.isArray(groups[0]) ? groups : [groups];\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleBand()\n .domain(dataGroups.map((_, i) => options.labels ? options.labels[i] : `Group ${i+1}`))\n .range([0, width])\n .padding(0.5);\n const allValues = dataGroups.flat();\n const y = scaleLinear().domain(extent(allValues)).nice().range([height, 0]);\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n dataGroups.forEach((group, i) => {\n const bins = d3Histogram().domain(y.domain()).thresholds(20)(group);\n const maxLen = max(bins, d => d.length);\n const xPos = x(options.labels ? options.labels[i] : `Group ${i+1}`);\n const scaleW = scaleLinear().domain([0, maxLen]).range([0, x.bandwidth()/2]);\n\n const areaGen = d3Line()\n .x(d => scaleW(d.length))\n .y(d => y((d.x0 + d.x1)/2));\n\n const mirrored = d3Line()\n .x(d => -scaleW(d.length))\n .y(d => y((d.x0 + d.x1)/2));\n\n const g2 = g.append(\"g\").attr(\"transform\", `translate(${xPos + x.bandwidth()/2},0)`);\n\n g2.append(\"path\")\n .datum(bins)\n .attr(\"fill\", options.color || config.color)\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", config.color)\n .attr(\"d\", areaGen);\n\n g2.append(\"path\")\n .datum(bins)\n .attr(\"fill\", options.color || config.color)\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", config.color)\n .attr(\"d\", mirrored);\n });\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\n// =======================================================\n// DENSITY\n// =======================================================\nexport function plotDensity(data, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scaleLinear().domain(extent(data)).nice().range([0, width]);\n const kde = kernelDensityEstimator(epanechnikovKernel(options.bandwidth || 5), x.ticks(50));\n const density = kde(data);\n const y = scaleLinear().domain([0, max(density, d => d[1])]).range([height, 0]);\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const path = d3Line().curve(curveBasis).x(d => x(d[0])).y(d => y(d[1]));\n\n g.append(\"path\")\n .datum(density)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", config.color)\n .attr(\"stroke-width\", 2)\n .attr(\"d\", path);\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n\nfunction kernelDensityEstimator(kernel, X) {\n return function (V) {\n return X.map(function (x) {\n return [x, mean(V, v => kernel(x - v))];\n });\n };\n}\nfunction epanechnikovKernel(bandwidth) {\n return function (u) {\n u /= bandwidth;\n return Math.abs(u) <= 1 ? 0.75 * (1 - u * u) / bandwidth : 0;\n };\n}\n\n// =======================================================\n// QQ PLOT\n// =======================================================\nexport function plotQQ(data, options = {}, selector) {\n const sorted = [...data].sort((a,b)=>a-b);\n const n = sorted.length;\n const quantiles = sorted.map((_,i)=>(i+0.5)/n);\n const theoretical = quantiles.map(q => normalQuantile(q));\n plotScatter(theoretical, sorted, options, selector);\n}\n\nfunction normalQuantile(p) {\n const a1 = -39.6968302866538, a2 = 220.946098424521, a3 = -275.928510446969;\n const a4 = 138.357751867269, a5 = -30.6647980661472, a6 = 2.50662827745924;\n const b1 = -54.4760987982241, b2 = 161.585836858041, b3 = -155.698979859887;\n const b4 = 66.8013118877197, b5 = -13.2806815528857;\n const c1 = -0.00778489400243029, c2 = -0.322396458041136;\n const c3 = -2.40075827716184, c4 = -2.54973253934373;\n const c5 = 4.37466414146497, c6 = 2.93816398269878;\n const d1 = 0.00778469570904146, d2 = 0.32246712907004;\n const d3 = 2.445134137143, d4 = 3.75440866190742;\n const plow = 0.02425;\n const phigh = 1 - plow;\n let q, r;\n if (p < plow) {\n q = Math.sqrt(-2 * Math.log(p));\n return (((((c1*q+c2)*q+c3)*q+c4)*q+c5)*q+c6)/((((d1*q+d2)*q+d3)*q+d4)*q+1);\n } else if (phigh < p) {\n q = Math.sqrt(-2 * Math.log(1 - p));\n return -(((((c1*q+c2)*q+c3)*q+c4)*q+c5)*q+c6)/((((d1*q+d2)*q+d3)*q+d4)*q+1);\n } else {\n q = p - 0.5;\n r = q * q;\n return (((((a1*r+a2)*r+a3)*r+a4)*r+a5)*r+a6)*q/((((b1*r+b2)*r+b3)*r+b4)*r+b5)+1;\n }\n}\n\n// =======================================================\n// PARALLEL COORDINATES\n// =======================================================\nexport function plotParallel(data, dimensions, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 30, right: 30, bottom: 10, left: 30 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const x = scalePoint().range([0, width]).padding(1).domain(dimensions);\n const y = {};\n dimensions.forEach(dim => {\n y[dim] = scaleLinear()\n .domain(extent(data, d => d[dim]))\n .range([height, 0]);\n });\n\n const lineGen = d3Line();\n const path = d => lineGen(dimensions.map(p => [x(p), y[p](d[p])]));\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n g.selectAll(\"path\")\n .data(data)\n .enter().append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", (d, i) => options.colors ? options.colors[i % options.colors.length] : config.color)\n .attr(\"stroke-width\", 1)\n .attr(\"opacity\", 0.6);\n\n dimensions.forEach(dim => {\n const axis = g.append(\"g\")\n .attr(\"transform\", `translate(${x(dim)},0)`)\n .call(axisLeft(y[dim]));\n styleAxis(axis, config.yAxisColor || config.axisColor);\n axis.append(\"text\")\n .style(\"text-anchor\", \"middle\")\n .attr(\"y\", -9)\n .text(dim);\n });\n}\n\n// =======================================================\n// PAIRPLOT\n// =======================================================\nexport function plotPairplot(data, columns, options = {}, selector) {\n const n = columns.length;\n const size = options.size || 120;\n const gap = 10;\n const totalSize = n * (size + gap);\n const container = selector || `#datly-plot-${plotCounter++}`;\n const div = document.createElement(\"div\");\n div.id = container.replace(\"#\", \"\");\n document.body.appendChild(div);\n\n const containerSel = select(container);\n containerSel.html(\"\");\n containerSel.style(\"display\", \"inline-block\");\n\n const svg = containerSel\n .append(\"svg\")\n .attr(\"width\", totalSize)\n .attr(\"height\", totalSize)\n .style(\"background\", \"#fff\");\n\n const x = {};\n const y = {};\n columns.forEach(col => {\n x[col] = scaleLinear().domain(extent(data, d => d[col])).range([gap, size - gap]);\n y[col] = scaleLinear().domain(extent(data, d => d[col])).range([size - gap, gap]);\n });\n\n columns.forEach((colX, i) => {\n columns.forEach((colY, j) => {\n const g = svg.append(\"g\")\n .attr(\"transform\", `translate(${i * (size + gap)},${j * (size + gap)})`);\n g.selectAll(\"circle\")\n .data(data)\n .enter()\n .append(\"circle\")\n .attr(\"cx\", d => x[colX](d[colX]))\n .attr(\"cy\", d => y[colY](d[colY]))\n .attr(\"r\", 2)\n .attr(\"fill\", options.color || \"#000\");\n });\n });\n}\n\n// =======================================================\n// MULTILINE\n// =======================================================\nexport function plotMultiline(series, options = {}, selector) {\n const { svg, config } = createSvg(selector, options);\n const margin = { top: 20, right: 20, bottom: 40, left: 40 };\n const width = config.width - margin.left - margin.right;\n const height = config.height - margin.top - margin.bottom;\n\n const allX = series.flatMap(s => s.data.map(d => d.x));\n const allY = series.flatMap(s => s.data.map(d => d.y));\n const x = scaleLinear().domain(extent(allX)).range([0, width]);\n const y = scaleLinear().domain(extent(allY)).range([height, 0]);\n const color = scaleOrdinal(schemeCategory10);\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n series.forEach((s, i) => {\n const path = d3Line()\n .x(d => x(d.x))\n .y(d => y(d.y));\n\n g.append(\"path\")\n .datum(s.data)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", color(i))\n .attr(\"stroke-width\", 2)\n .attr(\"d\", path);\n });\n\n if (options.legend) {\n const legend = svg.append(\"g\").attr(\"transform\", `translate(${width - 100},20)`);\n series.forEach((s, i) => {\n legend.append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", i * 20)\n .attr(\"width\", 12)\n .attr(\"height\", 12)\n .attr(\"fill\", color(i));\n legend.append(\"text\")\n .attr(\"x\", 20)\n .attr(\"y\", i * 20 + 10)\n .text(s.name)\n .style(\"font-size\", \"12px\");\n });\n }\n\n const xAxis = g.append(\"g\").attr(\"transform\", `translate(0,${height})`).call(axisBottom(x));\n const yAxis = g.append(\"g\").call(axisLeft(y));\n styleAxis(xAxis, config.xAxisColor || config.axisColor);\n styleAxis(yAxis, config.yAxisColor || config.axisColor);\n}\n","// datly.js — functional, text-first data-science toolkit for JavaScript\n// =========================\n// Helpers internos\n// =========================\nconst _inferType = (value) => {\n if (value == null) return null;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'boolean') return value;\n\n const stringValue = String(value);\n if (stringValue === \"\" || stringValue === \"null\" || stringValue === \"NULL\" || stringValue === \"NaN\")\n return null;\n if (stringValue === \"true\" || stringValue === \"TRUE\") return true;\n if (stringValue === \"false\" || stringValue === \"FALSE\") return false;\n if (/^-?\\d+$/.test(stringValue)) return parseInt(stringValue, 10);\n if (/^-?\\d*\\.\\d+$/.test(stringValue)) return parseFloat(stringValue);\n return stringValue;\n};\n\nconst _build_df = (columns, data) => ({\n type: \"dataframe\",\n columns,\n data,\n n_rows: data.length,\n n_cols: columns.length,\n});\n\nconst _empty_df = () => _build_df([], []);\n\nconst _uniq = (arr) => [...new Set(arr)];\n\nconst _text = (obj) => obj;\n\nconst _flatten = (obj, prefix = \"\", maxDepth = 5, currentDepth = 0) => {\n const result = {};\n\n if (currentDepth >= maxDepth) {\n result[prefix || \"value\"] = obj;\n return result;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n const path = prefix ? `${prefix}.${key}` : key;\n\n if (Array.isArray(value)) {\n // Adiciona o array completo\n result[path] = value;\n\n // Se é array de objetos, expande as propriedades\n if (\n value.length > 0 &&\n typeof value[0] === \"object\" &&\n !Array.isArray(value[0])\n ) {\n const firstItem = value[0];\n Object.keys(firstItem).forEach((subKey) => {\n result[`${path}.${subKey}`] = value.map(\n (item) => item[subKey] ?? null\n );\n });\n }\n } else if (value && typeof value === \"object\" && value !== null) {\n // Recursivamente achata objetos aninhados\n const nested = _flatten(value, path, maxDepth, currentDepth + 1);\n Object.assign(result, nested);\n } else {\n // Valor primitivo\n result[path] = value;\n }\n }\n\n return result;\n};\n\nconst _toTable = (data, opts = {}) => {\n const maxWidth = opts.max_width ?? 80;\n const padding = opts.padding ?? 2;\n\n if (Array.isArray(data) && data.length > 0 && typeof data[0] === \"object\") {\n // array of objects -> table\n const keys = Object.keys(data[0]);\n const rows = data.map((obj) => keys.map((k) => String(obj[k] ?? \"\")));\n const headers = keys;\n\n // calculate column widths\n const widths = headers.map((h, i) => {\n const maxContentWidth = Math.max(\n h.length,\n ...rows.map((r) => r[i].length)\n );\n return Math.min(maxContentWidth + padding, maxWidth / keys.length);\n });\n\n // build table\n const separator = \"+\" + widths.map((w) => \"-\".repeat(w)).join(\"+\") + \"+\";\n const headerRow =\n \"|\" + headers.map((h, i) => h.padEnd(widths[i])).join(\"|\") + \"|\";\n const dataRows = rows.map(\n (row) =>\n \"|\" +\n row\n .map((cell, i) => cell.slice(0, widths[i]).padEnd(widths[i]))\n .join(\"|\") +\n \"|\"\n );\n\n return [separator, headerRow, separator, ...dataRows, separator].join(\"\\n\");\n }\n\n if (typeof data === \"object\" && !Array.isArray(data)) {\n // single object -> key-value table\n const entries = Object.entries(data).map(([k, v]) => ({\n key: String(k),\n value: typeof v === \"object\" ? JSON.stringify(v) : String(v),\n }));\n return _toTable(entries, opts);\n }\n\n return String(data);\n};\n\nconst _isNumber = (v) => typeof v === \"number\" && Number.isFinite(v);\nconst _toNum = (v) => (v == null || v === \"\" ? NaN : Number(v));\n\nconst _numeric = (arr) => arr.map(_toNum).filter((x) => Number.isFinite(x));\n\nconst _sum = (arr) => _numeric(arr).reduce((a, b) => a + b, 0);\nconst _mean = (arr) => {\n const x = _numeric(arr);\n const n = x.length;\n if (!n) return NaN;\n return _sum(x) / n;\n};\nconst _variance = (arr, sample = true) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 2) return NaN;\n const m = _mean(x);\n const s = x.reduce((a, b) => a + (b - m) ** 2, 0);\n return s / (sample ? n - 1 : n);\n};\nconst _std = (arr, sample = true) => Math.sqrt(_variance(arr, sample));\nconst _min = (arr) => Math.min(..._numeric(arr));\nconst _max = (arr) => Math.max(..._numeric(arr));\nconst _median = (arr) => {\n const x = _numeric(arr).sort((a, b) => a - b);\n const n = x.length;\n if (!n) return NaN;\n const mid = Math.floor(n / 2);\n return n % 2 ? x[mid] : (x[mid - 1] + x[mid]) / 2;\n};\nconst _quantile = (arr, q) => {\n const x = _numeric(arr).sort((a, b) => a - b);\n const n = x.length;\n if (!n) return NaN;\n const pos = (n - 1) * q;\n const base = Math.floor(pos);\n const rest = pos - base;\n return x[base] + (x[Math.min(base + 1, n - 1)] - x[base]) * rest;\n};\nconst _skewness = (arr) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 3) return NaN;\n const m = _mean(x);\n const s = _std(x, true);\n const m3 = x.reduce((a, b) => a + (b - m) ** 3, 0) / n;\n return ((m3 / s ** 3) * Math.sqrt(n * (n - 1))) / (n - 2);\n};\nconst _kurtosis = (arr) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 4) return NaN;\n const m = _mean(x);\n const s2 = _variance(x, true);\n const m4 = x.reduce((a, b) => a + (b - m) ** 4, 0) / n;\n const g2 = m4 / s2 ** 2 - 3;\n return g2;\n};\n\nconst _corrPearson = (x, y) => {\n const a = _numeric(x),\n b = _numeric(y);\n const n = Math.min(a.length, b.length);\n if (n < 2) return NaN;\n const ax = a.slice(0, n),\n by = b.slice(0, n);\n const mx = _mean(ax),\n my = _mean(by);\n let num = 0,\n dx = 0,\n dy = 0;\n for (let i = 0; i < n; i++) {\n const vx = ax[i] - mx,\n vy = by[i] - my;\n num += vx * vy;\n dx += vx * vx;\n dy += vy * vy;\n }\n return num / Math.sqrt(dx * dy);\n};\n\nconst _rank = (arr) => {\n const indexed = _numeric(arr)\n .map((v, i) => ({ v, i }))\n .sort((a, b) => a.v - b.v);\n const ranks = Array(arr.length).fill(NaN);\n let i = 0;\n while (i < indexed.length) {\n let j = i;\n while (j + 1 < indexed.length && indexed[j + 1].v === indexed[i].v) j++;\n const r = (i + j) / 2 + 1;\n for (let k = i; k <= j; k++) ranks[indexed[k].i] = r;\n i = j + 1;\n }\n return ranks.filter(Number.isFinite);\n};\n\nconst _corrSpearman = (x, y) => _corrPearson(_rank(x), _rank(y));\n\nconst _invErf = (x) => {\n // numerical approx of inverse error function (for normal quantile)\n const a = 0.147;\n const ln = Math.log(1 - x * x);\n const t = 2 / (Math.PI * a) + ln / 2;\n const s = Math.sign(x) * Math.sqrt(Math.sqrt(t * t - ln / a) - t);\n return s;\n};\n\n// standard normal pdf/cdf/ppf\nconst _phi = (z) => Math.exp(-0.5 * z * z) / Math.sqrt(2 * Math.PI);\nconst _Phi = (z) => 0.5 * (1 + erf(z / Math.SQRT2));\nconst erf = (x) => {\n // numerical approx for erf\n const sign = Math.sign(x);\n x = Math.abs(x);\n const a1 = 0.254829592,\n a2 = -0.284496736,\n a3 = 1.421413741,\n a4 = -1.453152027,\n a5 = 1.061405429,\n p = 0.3275911;\n const t = 1 / (1 + p * x);\n const y =\n 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);\n return sign * y;\n};\nconst _normInv = (p) => {\n if (p <= 0 || p >= 1) return NaN;\n return Math.SQRT2 * _invErf(2 * p - 1);\n};\n\n// lowercased text output\n// const _text = (obj) => {\n// const lowerKeys = (o) =>\n// Array.isArray(o)\n// ? o.map(lowerKeys)\n// : o && typeof o === \"object\"\n// ? Object.fromEntries(\n// Object.entries(o).map(([k, v]) => [\n// String(k).toLowerCase(),\n// lowerKeys(v),\n// ])\n// )\n// : typeof o === \"number\" && Number.isFinite(o)\n// ? Number(Number(o).toPrecision(2))\n// : o;\n// const normalized = lowerKeys(obj);\n// const lines = [];\n// const walk = (o, indent = 0) => {\n// const pad = \" \".repeat(indent);\n// if (Array.isArray(o)) {\n// lines.push(pad + \"- array:\");\n// o.forEach((v) => walk(v, indent + 2));\n// } else if (o && typeof o === \"object\") {\n// Object.keys(o).forEach((k) => {\n// const v = o[k];\n// if (v && typeof v === \"object\") {\n// lines.push(pad + k + \":\");\n// walk(v, indent + 2);\n// } else {\n// lines.push(pad + k + \": \" + String(v).toLowerCase());\n// }\n// });\n// } else {\n// lines.push(pad + String(o).toLowerCase());\n// }\n// };\n// walk(normalized);\n// return lines.join(\"\\n\");\n// };\n\n// const _text = (obj) => {\n// const lowerKeys = (o) =>\n// Array.isArray(o)\n// ? o.map(lowerKeys)\n// : o && typeof o === \"object\"\n// ? Object.fromEntries(\n// Object.entries(o).map(([k, v]) => [\n// String(k).toLowerCase(),\n// lowerKeys(v),\n// ])\n// )\n// : typeof o === \"number\" && Number.isFinite(o)\n// ? Number(Number(o).toPrecision(12))\n// : o;\n// const normalized = lowerKeys(obj);\n// const lines = [];\n// const walk = (o, indent = 0) => {\n// const pad = \" \".repeat(indent);\n// if (Array.isArray(o)) {\n// lines.push(pad + `- array (${o.length} items):`);\n// const limited = o.slice(0, 5);\n// limited.forEach((v) => walk(v, indent + 2));\n// if (o.length > 5) {\n// lines.push(pad + ` ... ${o.length - 5} more items omitted`);\n// }\n// } else if (o && typeof o === \"object\") {\n// Object.keys(o).forEach((k) => {\n// const v = o[k];\n// if (v && typeof v === \"object\") {\n// lines.push(pad + k + \":\");\n// walk(v, indent + 2);\n// } else {\n// lines.push(pad + k + \": \" + String(v).toLowerCase());\n// }\n// });\n// } else {\n// lines.push(pad + String(o).toLowerCase());\n// }\n// };\n// walk(normalized);\n// return lines.join(\"\\n\");\n// };\n\nconst _ok = (type, payload) => _text({ type, ...payload });\nconst _err = (type, message) => _text({ type, error: message });\n\n// =========================\n// dataframe\n// =========================\n\n// utilities to operate directly on raw rows (array of objects)\n// const df_describe = (rows) => {\n// if (!Array.isArray(rows) || !rows.length)\n// return _err(\"describe\", \"empty data\");\n// const cols = _uniq(_flatten(rows.map((r) => Object.keys(r))));\n// const out = { type: \"describe\", columns: {} };\n// cols.forEach((c) => {\n// const col = rows.map((r) => r[c]);\n// const nums = col.map(_toNum).filter(Number.isFinite);\n// const miss = col.filter(\n// (v) =>\n// v == null || (typeof v === \"number\" && !Number.isFinite(v)) || v === \"\"\n// ).length;\n// const dtype =\n// nums.length === col.length\n// ? \"number\"\n// : col.every((v) => typeof v === \"boolean\")\n// ? \"boolean\"\n// : \"string\";\n// const info = { dtype, count: col.length, missing: miss };\n// if (dtype === \"number\") {\n// info.mean = _mean(nums);\n// info.std = _std(nums);\n// info.min = _min(nums);\n// info.q1 = _quantile(nums, 0.25);\n// info.median = _median(nums);\n// info.q3 = _quantile(nums, 0.75);\n// info.max = _max(nums);\n// info.skewness = _skewness(nums);\n// info.kurtosis = _kurtosis(nums);\n// } else if (dtype === \"string\" || dtype === \"boolean\") {\n// const vc = {};\n// col.forEach((v) => {\n// const key = String(v);\n// vc[key] = (vc[key] || 0) + 1;\n// });\n// const entries = Object.entries(vc)\n// .sort((a, b) => b[1] - a[1])\n// .slice(0, 10);\n// info.top = entries.map(([k, v]) => ({ value: k, freq: v }));\n// info.unique = Object.keys(vc).length;\n// }\n// out.columns[c] = info;\n// });\n// return _text(out);\n// };\n\nconst df_missing_report = (rows) => {\n if (!Array.isArray(rows) || !rows.length)\n return _err(\"missing_report\", \"empty data\");\n const cols = _uniq(_flatten(rows.map((r) => Object.keys(r))));\n const res = cols.map((c) => {\n const col = rows.map((r) => r[c]);\n const miss = col.filter((v) => v == null || v === \"\").length;\n return { column: c, missing: miss, missing_rate: miss / col.length };\n });\n return _text({ type: \"missing_report\", rows: res });\n};\n\nconst df_corr = (rows, method = \"pearson\") => {\n const cols = _uniq(_flatten(rows.map((r) => Object.keys(r))));\n const numericCols = cols.filter((c) =>\n rows.every((r) => Number.isFinite(_toNum(r[c])) || r[c] == null)\n );\n const mat = {};\n numericCols.forEach((a) => {\n mat[a] = {};\n const xa = rows.map((r) => _toNum(r[a]));\n numericCols.forEach((b) => {\n const xb = rows.map((r) => _toNum(r[b]));\n const c =\n method === \"spearman\" ? _corrSpearman(xa, xb) : _corrPearson(xa, xb);\n mat[a][b] = c;\n });\n });\n return _text({ type: \"correlation_matrix\", method, matrix: mat });\n};\n\n// =========================\n// core statistics (public)\n// =========================\n\nconst mean = (arr) =>\n _ok(\"statistic\", {\n name: \"mean\",\n n: _numeric(arr).length,\n value: _mean(arr),\n });\nconst stddeviation = (arr, sample = true) =>\n _ok(\"statistic\", {\n name: \"std_deviation\",\n sample,\n n: _numeric(arr).length,\n value: _std(arr, sample),\n });\nconst variance = (arr, sample = true) =>\n _ok(\"statistic\", {\n name: \"variance\",\n sample,\n n: _numeric(arr).length,\n value: _variance(arr, sample),\n });\nconst median = (arr) =>\n _ok(\"statistic\", {\n name: \"median\",\n n: _numeric(arr).length,\n value: _median(arr),\n });\nconst quantile = (arr, q) =>\n _ok(\"statistic\", {\n name: \"quantile\",\n q,\n n: _numeric(arr).length,\n value: _quantile(arr, q),\n });\nconst minv = (arr) => _ok(\"statistic\", { name: \"min\", value: _min(arr) });\nconst maxv = (arr) => _ok(\"statistic\", { name: \"max\", value: _max(arr) });\nconst skewness = (arr) =>\n _ok(\"statistic\", { name: \"skewness\", value: _skewness(arr) });\nconst kurtosis = (arr) =>\n _ok(\"statistic\", { name: \"kurtosis\", value: _kurtosis(arr) });\nconst corr_pearson = (x, y) =>\n _ok(\"statistic\", { name: \"pearson_correlation\", value: _corrPearson(x, y) });\nconst corr_spearman = (x, y) =>\n _ok(\"statistic\", {\n name: \"spearman_correlation\",\n value: _corrSpearman(x, y),\n });\n\n// =========================\n// probability distributions\n// =========================\n\nconst normal_pdf = (x, mu = 0, sigma = 1) =>\n _ok(\"distribution\", {\n name: \"normal_pdf\",\n params: { mu, sigma },\n value: Array.isArray(x)\n ? x.map((v) => _phi((v - mu) / sigma) / sigma)\n : _phi((x - mu) / sigma) / sigma,\n });\n\nconst normal_cdf = (x, mu = 0, sigma = 1) =>\n _ok(\"distribution\", {\n name: \"normal_cdf\",\n params: { mu, sigma },\n value: Array.isArray(x)\n ? x.map((v) => _Phi((v - mu) / sigma))\n : _Phi((x - mu) / sigma),\n });\n\nconst normal_ppf = (p, mu = 0, sigma = 1) =>\n _ok(\"distribution\", {\n name: \"normal_ppf\",\n params: { mu, sigma },\n value: Array.isArray(p)\n ? p.map((q) => mu + sigma * _normInv(q))\n : mu + sigma * _normInv(p),\n });\n\nconst binomial_pmf = (k, n, p) => {\n const C = (n, k) => {\n if (k < 0 || k > n) return 0;\n k = Math.min(k, n - k);\n let num = 1,\n den = 1;\n for (let i = 1; i <= k; i++) {\n num *= n - (k - i);\n den *= i;\n }\n return num / den;\n };\n const f = (x) => C(n, x) * p ** x * (1 - p) ** (n - x);\n const val = Array.isArray(k) ? k.map(f) : f(k);\n return _ok(\"distribution\", {\n name: \"binomial_pmf\",\n params: { n, p },\n value: val,\n });\n};\n\nconst binomial_cdf = (k, n, p) => {\n const pmf = (x) =>\n JSON.parse(binomial_pmf(x, n, p).toLowerCase ? '{\"ignore\":0}' : \"{}\"); // safeguard no-op\n const f = (t) => {\n let s = 0;\n for (let i = 0; i <= t; i++) {\n s +=\n (function C(n, k) {\n if (k < 0 || k > n) return 0;\n k = Math.min(k, n - k);\n let num = 1,\n den = 1;\n for (let j = 1; j <= k; j++) {\n num *= n - (k - j);\n den *= j;\n }\n return num / den;\n })(n, i) *\n p ** i *\n (1 - p) ** (n - i);\n }\n return s;\n };\n const val = Array.isArray(k) ? k.map(f) : f(k);\n return _ok(\"distribution\", {\n name: \"binomial_cdf\",\n params: { n, p },\n value: val,\n });\n};\n\nconst poisson_pmf = (k, lambda) => {\n const fact = (m) => {\n let r = 1;\n for (let i = 2; i <= m; i++) r *= i;\n return r;\n };\n const f = (x) => (Math.exp(-lambda) * lambda ** x) / fact(x);\n return _ok(\"distribution\", {\n name: \"poisson_pmf\",\n params: { lambda },\n value: Array.isArray(k) ? k.map(f) : f(k),\n });\n};\n\nconst poisson_cdf = (k, lambda) => {\n const f = (t) => {\n let s = 0;\n for (let i = 0; i <= t; i++)\n s +=\n (Math.exp(-lambda) * lambda ** i) /\n (function fact(m) {\n let r = 1;\n for (let j = 2; j <= m; j++) r *= j;\n return r;\n })(i);\n return s;\n };\n return _ok(\"distribution\", {\n name: \"poisson_cdf\",\n params: { lambda },\n value: Array.isArray(k) ? k.map(f) : f(k),\n });\n};\n\n// =========================\n// hypothesis tests\n// =========================\n\nconst _tCDF = (t, df) => {\n // symmetric; use relationship with regularized incomplete beta (approx via numerical integration)\n const a = df / 2,\n b = 0.5;\n const x = df / (df + t * t);\n const betacf = (a, b, x) => {\n const itmax = 200,\n eps = 3e-7;\n let am = 1,\n bm = 1,\n az = 1,\n qab = a + b,\n qap = a + 1,\n qam = a - 1,\n bz = 1 - (qab * x) / qap;\n let aold;\n for (let m = 1; m <= itmax; m++) {\n const em = m,\n tem = em + em;\n let d = (em * (b - m) * x) / ((qam + tem) * (a + tem));\n let ap = az + d * am;\n let bp = bz + d * bm;\n d = (-(a + em) * (qab + em) * x) / ((a + tem) * (qap + tem));\n let app = ap + d * az;\n let bpp = bp + d * bz;\n aold = az;\n am = ap / bpp;\n bm = bp / bpp;\n az = app / bpp;\n bz = 1;\n if (Math.abs(az - aold) < eps * Math.abs(az)) return az;\n }\n return az;\n };\n const ib = ((Math.pow(x, a) * Math.pow(1 - x, b)) / a) * betacf(a, b, x);\n const p = 0.5 * ib;\n return t >= 0 ? 1 - p : p;\n};\n\nconst t_test_independent = (a, b, equal_var = true) => {\n const xa = _numeric(a),\n xb = _numeric(b);\n const na = xa.length,\n nb = xb.length;\n if (na < 2 || nb < 2) return _err(\"t_test_independent\", \"insufficient data\");\n const ma = _mean(xa),\n mb = _mean(xb),\n va = _variance(xa, true),\n vb = _variance(xb, true);\n let df, se;\n if (equal_var) {\n const sp2 = ((na - 1) * va + (nb - 1) * vb) / (na + nb - 2);\n se = Math.sqrt(sp2 * (1 / na + 1 / nb));\n df = na + nb - 2;\n } else {\n se = Math.sqrt(va / na + vb / nb);\n const num = (va / na + vb / nb) ** 2;\n const den = va ** 2 / (na ** 2 * (na - 1)) + vb ** 2 / (nb ** 2 * (nb - 1));\n df = num / den;\n }\n const t = (ma - mb) / se;\n const p = 2 * (1 - _tCDF(Math.abs(t), df));\n return _text({\n type: \"hypothesis_test\",\n name: \"independent_t_test\",\n statistic: t,\n df,\n p_value: p,\n means: { group_a: ma, group_b: mb },\n });\n};\n\nconst z_test_one_sample = (data, mu0 = 0, sigma = null, alpha = 0.05) => {\n const x = _numeric(data);\n const n = x.length;\n if (n < 2) return _err(\"z_test_one_sample\", \"insufficient data\");\n\n const mean = _mean(x);\n const s = sigma ?? _std(x, true);\n const se = s / Math.sqrt(n);\n const z = (mean - mu0) / se;\n\n const p = 2 * (1 - normal_cdf(Math.abs(z)));\n const zcrit = normal_ppf(1 - alpha / 2);\n const moe = zcrit * se;\n\n return _text({\n type: \"hypothesis_test\",\n name: \"one_sample_z_test\",\n statistic: z,\n p_value: p,\n ci_lower: mean - moe,\n ci_upper: mean + moe,\n confidence: 1 - alpha,\n extra: {\n sample_mean: mean,\n hypothesized_mean: mu0,\n se,\n sigma_used: s,\n n,\n effect_size: (mean - mu0) / s,\n },\n });\n};\n\nconst chi_square_independence = (table, alpha = 0.05) => {\n const r = table.length;\n const c = table[0].length;\n const rowS = table.map((row) => row.reduce((a, b) => a + b, 0));\n const colS = Array(c).fill(0);\n table.forEach((row) => row.forEach((v, j) => (colS[j] += v)));\n const N = rowS.reduce((a, b) => a + b, 0);\n let chi = 0;\n const expected = Array.from({ length: r }, (_, i) =>\n Array.from({ length: c }, (_, j) => (rowS[i] * colS[j]) / N)\n );\n\n for (let i = 0; i < r; i++) {\n for (let j = 0; j < c; j++) {\n chi += (table[i][j] - expected[i][j]) ** 2 / expected[i][j];\n }\n }\n const df = (r - 1) * (c - 1);\n const p = 1 - chi_square_cdf(chi, df);\n\n return _text({\n type: \"hypothesis_test\",\n name: \"chi_square_independence\",\n statistic: chi,\n df,\n p_value: p,\n confidence: 1 - alpha,\n extra: {\n observed: table,\n expected,\n dof: df,\n },\n });\n};\n\nconst anova_oneway = (groups, alpha = 0.05) => {\n const k = groups.length;\n const ns = groups.map((g) => _numeric(g).length);\n const means = groups.map(_mean);\n const overall = _mean(groups.flat());\n const ssb = groups.reduce(\n (s, g, i) => s + ns[i] * (means[i] - overall) ** 2,\n 0\n );\n const ssw = groups.reduce(\n (s, g, i) => s + _numeric(g).reduce((a, x) => a + (x - means[i]) ** 2, 0),\n 0\n );\n const dfb = k - 1;\n const dfw = ns.reduce((a, b) => a + b, 0) - k;\n const msb = ssb / dfb;\n const msw = ssw / dfw;\n const F = msb / msw;\n const p = 1 - f_cdf(F, dfb, dfw);\n\n return _text({\n type: \"hypothesis_test\",\n name: \"anova_oneway\",\n statistic: F,\n df: { between: dfb, within: dfw },\n p_value: p,\n confidence: 1 - alpha,\n extra: {\n group_means: means,\n grand_mean: overall,\n ssb,\n ssw,\n },\n });\n};\n\n// =========================\n// machine learning (linear regression, logistic regression)\n// models are serialized as lowercase json text strings\n// =========================\n\nconst _addBias = (X) => X.map((row) => [1, ...row]);\nconst _transpose = (A) => A[0].map((_, j) => A.map((row) => row[j]));\nconst _dot = (A, B) => {\n const n = A.length,\n m = B[0].length,\n p = B.length;\n const out = Array(n)\n .fill(0)\n .map(() => Array(m).fill(0));\n for (let i = 0; i < n; i++)\n for (let j = 0; j < m; j++) {\n let s = 0;\n for (let k = 0; k < p; k++) s += A[i][k] * B[k][j];\n out[i][j] = s;\n }\n return out;\n};\nconst _pinv = (A, lambda = 1e-8) => {\n // ridge-stabilized (A^T A + λI)^-1 A^T\n const At = _transpose(A);\n const AtA = _dot(At, A);\n const n = AtA.length;\n for (let i = 0; i < n; i++) AtA[i][i] += lambda;\n const inv = _inv(AtA);\n return _dot(inv, At);\n};\nconst _inv = (M) => {\n const n = M.length;\n const A = M.map((row, i) =>\n row.concat(Array.from({ length: n }, (_, j) => (i === j ? 1 : 0)))\n );\n for (let i = 0; i < n; i++) {\n let pivot = A[i][i];\n let r = i;\n for (let k = i + 1; k < n; k++)\n if (Math.abs(A[k][i]) > Math.abs(pivot)) {\n pivot = A[k][i];\n r = k;\n }\n if (r !== i) {\n const tmp = A[i];\n A[i] = A[r];\n A[r] = tmp;\n }\n const pv = A[i][i];\n if (Math.abs(pv) < 1e-12) continue;\n for (let j = 0; j < 2 * n; j++) A[i][j] /= pv;\n for (let k = 0; k < n; k++)\n if (k !== i) {\n const f = A[k][i];\n for (let j = 0; j < 2 * n; j++) A[k][j] -= f * A[i][j];\n }\n }\n return A.map((row) => row.slice(n));\n};\n\nconst train_linear_regression = (X, y) => {\n const Xb = _addBias(X);\n const pinv = _pinv(Xb);\n const w = _dot(\n pinv,\n y.map((v) => [v])\n ).map((r) => r[0]);\n const predict = (row) => w[0] + row.reduce((s, v, i) => s + w[i + 1] * v, 0);\n const yhat = X.map(predict);\n const resid = y.map((v, i) => v - yhat[i]);\n const mse = _mean(resid.map((e) => e * e));\n const r2 =\n 1 - _sum(resid.map((e) => e * e)) / _sum(y.map((v) => (v - _mean(y)) ** 2));\n const model = {\n type: \"linear_regression\",\n weights: w,\n mse,\n r2,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst _sigmoid = (z) => 1 / (1 + Math.exp(-z));\n\nconst train_logistic_regression = (X, y, opts = {}) => {\n const lr = opts.learning_rate ?? 0.1;\n const iters = opts.iterations ?? 1000;\n const lambda = opts.l2 ?? 0;\n const p = X[0]?.length ?? 0;\n let w = Array(p + 1).fill(0);\n const addBias = (row) => [1, ...row];\n const Xb = X.map(addBias);\n for (let t = 0; t < iters; t++) {\n const grad = Array(p + 1).fill(0);\n for (let i = 0; i < Xb.length; i++) {\n const z = w.reduce((s, wi, j) => s + wi * Xb[i][j], 0);\n const p1 = _sigmoid(z);\n const e = p1 - y[i];\n for (let j = 0; j < grad.length; j++) grad[j] += e * Xb[i][j];\n }\n for (let j = 0; j < w.length; j++) {\n grad[j] = grad[j] / Xb.length + lambda * w[j];\n w[j] -= lr * grad[j];\n }\n }\n const predict_proba_row = (row) =>\n _sigmoid(w[0] + row.reduce((s, v, i) => s + w[i + 1] * v, 0));\n const proba = X.map(predict_proba_row);\n const pred = proba.map((p) => (p >= 0.5 ? 1 : 0));\n const acc = pred.filter((v, i) => v === y[i]).length / y.length;\n const model = {\n type: \"logistic_regression\",\n weights: w,\n accuracy: acc,\n n: y.length,\n p,\n };\n return _text(model);\n};\n\nconst predict_linear = (model_text, X) => {\n try {\n const m = JSON.parse(JSON.stringify(_lowerJson(model_text)));\n const w = m.weights || m.model?.weights;\n if (!w) return _err(\"predict_linear\", \"invalid model\");\n const yhat = X.map(\n (row) => w[0] + row.reduce((s, v, i) => s + w[i + 1] * v, 0)\n );\n return _text({\n type: \"prediction\",\n name: \"linear_regression\",\n predictions: yhat,\n });\n } catch {\n return _err(\"predict_linear\", \"invalid model text\");\n }\n};\n\nconst predict_logistic = (model_text, X, threshold = 0.5) => {\n try {\n const m = JSON.parse(JSON.stringify(_lowerJson(model_text)));\n const w = m.weights || m.model?.weights;\n if (!w) return _err(\"predict_logistic\", \"invalid model\");\n const proba = X.map((row) =>\n _sigmoid(w[0] + row.reduce((s, v, i) => s + w[i + 1] * v, 0))\n );\n const pred = proba.map((p) => (p >= threshold ? 1 : 0));\n return _text({\n type: \"prediction\",\n name: \"logistic_regression\",\n threshold,\n probabilities: proba,\n classes: pred,\n });\n } catch {\n return _err(\"predict_logistic\", \"invalid model text\");\n }\n};\n\nconst _lowerJson = (textOrObj) => {\n const parse = (v) => {\n try {\n return typeof v === \"string\" ? JSON.parse(v) : v;\n } catch {\n return {};\n }\n };\n const lower = (o) =>\n Array.isArray(o)\n ? o.map(lower)\n : o && typeof o === \"object\"\n ? Object.fromEntries(\n Object.entries(o).map(([k, v]) => [String(k).toLowerCase(), lower(v)])\n )\n : o;\n return lower(parse(textOrObj));\n};\n\nconst train_test_split = (X, y, test_size = 0.2, seed = 42) => {\n const n = X.length;\n const idx = Array.from({ length: n }, (_, i) => i);\n let s = seed;\n const rand = () => (s = (s * 9301 + 49297) % 233280) / 233280;\n idx.sort(() => rand() - 0.5);\n const ntest = Math.max(1, Math.floor(n * test_size));\n const test_idx = idx.slice(0, ntest);\n const train_idx = idx.slice(ntest);\n const X_train = train_idx.map((i) => X[i]);\n const y_train = train_idx.map((i) => y[i]);\n const X_test = test_idx.map((i) => X[i]);\n const y_test = test_idx.map((i) => y[i]);\n return _text({\n type: \"split\",\n sizes: { train: y_train.length, test: y_test.length },\n indices: { train: train_idx, test: test_idx },\n preview: { x_train: X_train.slice(0, 2), y_train: y_train.slice(0, 5) },\n });\n};\n\nconst metrics_classification = (y_true, y_pred) => {\n const n = Math.min(y_true.length, y_pred.length);\n let tp = 0,\n tn = 0,\n fp = 0,\n fn = 0;\n for (let i = 0; i < n; i++) {\n if (y_pred[i] === 1 && y_true[i] === 1) tp++;\n else if (y_pred[i] === 0 && y_true[i] === 0) tn++;\n else if (y_pred[i] === 1 && y_true[i] === 0) fp++;\n else if (y_pred[i] === 0 && y_true[i] === 1) fn++;\n }\n const accuracy = (tp + tn) / n;\n const precision = tp + fp ? tp / (tp + fp) : 0;\n const recall = tp + fn ? tp / (tp + fn) : 0;\n const f1 =\n precision + recall ? (2 * precision * recall) / (precision + recall) : 0;\n return _text({\n type: \"metric\",\n name: \"classification_report\",\n confusion_matrix: { tp, fp, tn, fn },\n accuracy,\n precision,\n recall,\n f1,\n });\n};\n\nconst metrics_regression = (y_true, y_pred) => {\n const n = Math.min(y_true.length, y_pred.length);\n const e = Array.from({ length: n }, (_, i) => y_true[i] - y_pred[i]);\n const mse = _mean(e.map((v) => v * v));\n const mae = _mean(e.map((v) => Math.abs(v)));\n const r2 =\n 1 -\n _sum(e.map((v) => v * v)) /\n _sum(y_true.map((v) => (v - _mean(y_true)) ** 2));\n return _text({ type: \"metric\", name: \"regression_report\", mse, mae, r2 });\n};\n\n// =========================\n// eda convenience\n// =========================\n\nconst eda_overview = (rows) => {\n const desc = _lowerJson(df_describe(rows));\n const miss = _lowerJson(df_missing_report(rows));\n const corr = _lowerJson(df_corr(rows, \"pearson\"));\n return _text({\n type: \"eda\",\n summary: desc.columns ?? desc,\n missing: miss.rows ?? miss,\n correlation: corr.matrix ?? corr,\n });\n};\n\n// =========================\n// ADDITIONAL STATISTICAL TESTS\n// =========================\n\nconst t_test_paired = (a, b) => {\n const xa = _numeric(a),\n xb = _numeric(b);\n const n = Math.min(xa.length, xb.length);\n if (n < 2) return _err(\"t_test_paired\", \"insufficient data\");\n const diffs = Array.from({ length: n }, (_, i) => xa[i] - xb[i]);\n const md = _mean(diffs),\n sd = _std(diffs, true);\n const t = md / (sd / Math.sqrt(n));\n const df = n - 1;\n const p = 2 * (1 - _tCDF(Math.abs(t), df));\n return _text({\n type: \"hypothesis_test\",\n name: \"paired_t_test\",\n statistic: t,\n df,\n p_value: p,\n mean_difference: md,\n });\n};\n\nconst t_test_one_sample = (arr, mu0) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 2) return _err(\"t_test_one_sample\", \"insufficient data\");\n const m = _mean(x),\n s = _std(x, true);\n const t = (m - mu0) / (s / Math.sqrt(n));\n const df = n - 1;\n const p = 2 * (1 - _tCDF(Math.abs(t), df));\n return _text({\n type: \"hypothesis_test\",\n name: \"one_sample_t_test\",\n statistic: t,\n df,\n p_value: p,\n mean: m,\n hypothesized_mean: mu0,\n });\n};\n\nconst shapiro_wilk = (arr) => {\n const x = _numeric(arr).sort((a, b) => a - b);\n const n = x.length;\n if (n < 3 || n > 5000)\n return _err(\"shapiro_wilk\", \"sample size must be between 3 and 5000\");\n const m = _mean(x);\n const ss = x.reduce((s, v) => s + (v - m) ** 2, 0);\n let b = 0;\n const k = Math.floor(n / 2);\n for (let i = 0; i < k; i++) {\n const ai =\n i === 0\n ? -2.706056 / Math.sqrt(n)\n : i === k - 1 && n % 2 === 0\n ? 2.706056 / Math.sqrt(n)\n : 0;\n b += ai * (x[n - 1 - i] - x[i]);\n }\n const w = (b * b) / ss;\n return _text({\n type: \"hypothesis_test\",\n name: \"shapiro_wilk\",\n statistic: w,\n n,\n note: \"approximation; w > 0.9 suggests normality\",\n });\n};\n\nconst jarque_bera = (arr) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 4) return _err(\"jarque_bera\", \"insufficient data\");\n const s = _skewness(x);\n const k = _kurtosis(x);\n const jb = (n / 6) * (s * s + (k * k) / 4);\n return _text({\n type: \"hypothesis_test\",\n name: \"jarque_bera\",\n statistic: jb,\n n,\n df: 2,\n note: \"tests normality; low p-value rejects normality\",\n });\n};\n\nconst levene_test = (groups) => {\n const k = groups.length;\n const medians = groups.map(_median);\n const zs = groups.map((g, i) =>\n _numeric(g).map((v) => Math.abs(v - medians[i]))\n );\n const allz = _flatten(zs);\n const overall_median = _median(allz);\n const ns = zs.map((z) => z.length);\n const N = ns.reduce((a, b) => a + b, 0);\n const ssb = zs.reduce(\n (s, z, i) => s + ns[i] * (_mean(z) - overall_median) ** 2,\n 0\n );\n const ssw = zs.reduce(\n (s, z) => s + z.reduce((a, v) => a + (v - _mean(z)) ** 2, 0),\n 0\n );\n const dfb = k - 1;\n const dfw = N - k;\n const msb = ssb / dfb;\n const msw = ssw / dfw;\n const W = msb / msw;\n return _text({\n type: \"hypothesis_test\",\n name: \"levene_test\",\n statistic: W,\n df_between: dfb,\n df_within: dfw,\n note: \"tests homogeneity of variance\",\n });\n};\n\nconst kruskal_wallis = (groups) => {\n const all = _flatten(groups);\n const n = all.length;\n const ranks = _rank(all);\n let pos = 0;\n const rankSums = groups.map((g) => {\n const len = _numeric(g).length;\n const rsum = ranks.slice(pos, pos + len).reduce((a, b) => a + b, 0);\n pos += len;\n return { n: len, rsum };\n });\n const H =\n (12 / (n * (n + 1))) *\n rankSums.reduce((s, { n: ni, rsum }) => s + (rsum * rsum) / ni, 0) -\n 3 * (n + 1);\n const df = groups.length - 1;\n return _text({\n type: \"hypothesis_test\",\n name: \"kruskal_wallis\",\n statistic: H,\n df,\n note: \"non-parametric alternative to anova\",\n });\n};\n\nconst mann_whitney = (a, b) => {\n const xa = _numeric(a);\n const xb = _numeric(b);\n const na = xa.length;\n const nb = xb.length;\n if (na < 1 || nb < 1) return _err(\"mann_whitney\", \"insufficient data\");\n const combined = xa.concat(xb);\n const ranks = _rank(combined);\n const ra = ranks.slice(0, na).reduce((s, r) => s + r, 0);\n const U1 = ra - (na * (na + 1)) / 2;\n const U2 = na * nb - U1;\n const U = Math.min(U1, U2);\n const mu = (na * nb) / 2;\n const sigma = Math.sqrt((na * nb * (na + nb + 1)) / 12);\n const z = (U - mu) / sigma;\n const p = 2 * (1 - _Phi(Math.abs(z)));\n return _text({\n type: \"hypothesis_test\",\n name: \"mann_whitney_u\",\n statistic: U,\n z_score: z,\n p_value: p,\n note: \"non-parametric alternative to t-test\",\n });\n};\n\nconst wilcoxon_signed_rank = (a, b) => {\n const xa = _numeric(a);\n const xb = _numeric(b);\n const n = Math.min(xa.length, xb.length);\n if (n < 2) return _err(\"wilcoxon_signed_rank\", \"insufficient data\");\n const diffs = Array.from({ length: n }, (_, i) => xa[i] - xb[i]).filter(\n (d) => d !== 0\n );\n const absDiffs = diffs.map(Math.abs);\n const ranks = _rank(absDiffs);\n const Wplus = ranks.reduce((s, r, i) => s + (diffs[i] > 0 ? r : 0), 0);\n const m = diffs.length;\n const mu = (m * (m + 1)) / 4;\n const sigma = Math.sqrt((m * (m + 1) * (2 * m + 1)) / 24);\n const z = (Wplus - mu) / sigma;\n const p = 2 * (1 - _Phi(Math.abs(z)));\n return _text({\n type: \"hypothesis_test\",\n name: \"wilcoxon_signed_rank\",\n statistic: Wplus,\n z_score: z,\n p_value: p,\n n: m,\n });\n};\n\nconst chi_square_goodness = (observed, expected, alpha = 0.05) => {\n const obs = _numeric(observed);\n const exp = _numeric(expected);\n const n = Math.min(obs.length, exp.length);\n let chi = 0;\n for (let i = 0; i < n; i++) chi += (obs[i] - exp[i]) ** 2 / exp[i];\n const df = n - 1;\n const p = 1 - chi_square_cdf(chi, df);\n\n return _text({\n type: \"hypothesis_test\",\n name: \"chi_square_goodness_of_fit\",\n statistic: chi,\n df,\n p_value: p,\n confidence: 1 - alpha,\n extra: {\n observed: obs,\n expected: exp,\n dof: df,\n },\n });\n};\n\n// =========================\n// CONFIDENCE INTERVALS\n// =========================\n\nconst confidence_interval_mean = (arr, confidence = 0.95) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 2) return _err(\"confidence_interval_mean\", \"insufficient data\");\n const m = _mean(x);\n const s = _std(x, true);\n const alpha = 1 - confidence;\n const t_crit = _normInv(1 - alpha / 2) * (n > 30 ? 1 : 1.15);\n const margin = (t_crit * s) / Math.sqrt(n);\n const lower = m - margin;\n const upper = m + margin;\n return _text({\n type: \"confidence_interval\",\n parameter: \"mean\",\n confidence,\n n,\n mean: m,\n lower,\n upper,\n margin,\n });\n};\n\nconst confidence_interval_proportion = (successes, n, confidence = 0.95) => {\n if (n < 1)\n return _err(\"confidence_interval_proportion\", \"invalid sample size\");\n const p = successes / n;\n const alpha = 1 - confidence;\n const z = _normInv(1 - alpha / 2);\n const se = Math.sqrt((p * (1 - p)) / n);\n const margin = z * se;\n const lower = Math.max(0, p - margin);\n const upper = Math.min(1, p + margin);\n return _text({\n type: \"confidence_interval\",\n parameter: \"proportion\",\n confidence,\n n,\n proportion: p,\n lower,\n upper,\n margin,\n });\n};\n\nconst confidence_interval_variance = (arr, confidence = 0.95) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < 2) return _err(\"confidence_interval_variance\", \"insufficient data\");\n const s2 = _variance(x, true);\n const df = n - 1;\n const alpha = 1 - confidence;\n const chi_lower = df / (1 + _normInv(1 - alpha / 2) * Math.sqrt(2 / df));\n const chi_upper = df / (1 - _normInv(1 - alpha / 2) * Math.sqrt(2 / df));\n const lower = (df * s2) / chi_upper;\n const upper = (df * s2) / chi_lower;\n return _text({\n type: \"confidence_interval\",\n parameter: \"variance\",\n confidence,\n n,\n variance: s2,\n lower,\n upper,\n });\n};\n\nconst confidence_interval_difference = (a, b, confidence = 0.95) => {\n const xa = _numeric(a);\n const xb = _numeric(b);\n const na = xa.length;\n const nb = xb.length;\n if (na < 2 || nb < 2)\n return _err(\"confidence_interval_difference\", \"insufficient data\");\n const ma = _mean(xa);\n const mb = _mean(xb);\n const va = _variance(xa, true);\n const vb = _variance(xb, true);\n const diff = ma - mb;\n const se = Math.sqrt(va / na + vb / nb);\n const alpha = 1 - confidence;\n const z = _normInv(1 - alpha / 2);\n const margin = z * se;\n const lower = diff - margin;\n const upper = diff + margin;\n return _text({\n type: \"confidence_interval\",\n parameter: \"difference_of_means\",\n confidence,\n difference: diff,\n lower,\n upper,\n margin,\n means: { group_a: ma, group_b: mb },\n });\n};\n\n// =========================\n// ADDITIONAL CORRELATIONS\n// =========================\n\nconst corr_kendall = (x, y) => {\n const ax = _numeric(x);\n const by = _numeric(y);\n const n = Math.min(ax.length, by.length);\n if (n < 2) return _err(\"corr_kendall\", \"insufficient data\");\n let concordant = 0;\n let discordant = 0;\n for (let i = 0; i < n - 1; i++) {\n for (let j = i + 1; j < n; j++) {\n const dx = ax[j] - ax[i];\n const dy = by[j] - by[i];\n if (dx * dy > 0) concordant++;\n else if (dx * dy < 0) discordant++;\n }\n }\n const tau = (concordant - discordant) / (0.5 * n * (n - 1));\n return _ok(\"statistic\", {\n name: \"kendall_tau\",\n value: tau,\n concordant,\n discordant,\n n,\n });\n};\n\nconst corr_partial = (x, y, z) => {\n const rxy = _corrPearson(x, y);\n const rxz = _corrPearson(x, z);\n const ryz = _corrPearson(y, z);\n const rxy_z =\n (rxy - rxz * ryz) / Math.sqrt((1 - rxz * rxz) * (1 - ryz * ryz));\n return _ok(\"statistic\", {\n name: \"partial_correlation\",\n value: rxy_z,\n controlling_for: \"third_variable\",\n });\n};\n\nconst corr_matrix_all = (rows, method = \"pearson\") => {\n const pearson = _lowerJson(df_corr(rows, \"pearson\")).matrix;\n const spearman = _lowerJson(df_corr(rows, \"spearman\")).matrix;\n const cols = Object.keys(pearson);\n const kendall = {};\n cols.forEach((a) => {\n kendall[a] = {};\n cols.forEach((b) => {\n const xa = rows.map((r) => _toNum(r[a]));\n const xb = rows.map((r) => _toNum(r[b]));\n const tau = _lowerJson(corr_kendall(xa, xb)).value ?? NaN;\n kendall[a][b] = tau;\n });\n });\n return _text({ type: \"correlation_analysis\", pearson, spearman, kendall });\n};\n\n// =========================\n// K-NEAREST NEIGHBORS\n// =========================\n\nconst _euclidean = (a, b) =>\n Math.sqrt(a.reduce((s, v, i) => s + (v - b[i]) ** 2, 0));\n\nconst train_knn_classifier = (X, y, k = 5) => {\n if (X.length !== y.length)\n return _err(\"train_knn_classifier\", \"X and y length mismatch\");\n const model = {\n type: \"knn_classifier\",\n k,\n X,\n y,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst predict_knn_classifier = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n if (m.type !== \"knn_classifier\")\n return _err(\"predict_knn_classifier\", \"invalid model type\");\n const { k, x: X_train, y: y_train } = m;\n const predictions = X_test.map((x) => {\n const distances = X_train.map((xt, i) => ({\n dist: _euclidean(x, xt),\n label: y_train[i],\n }));\n distances.sort((a, b) => a.dist - b.dist);\n const neighbors = distances.slice(0, k);\n const votes = {};\n neighbors.forEach(({ label }) => {\n votes[label] = (votes[label] || 0) + 1;\n });\n const pred = Object.entries(votes).sort((a, b) => b[1] - a[1])[0][0];\n return Number(pred);\n });\n return _text({\n type: \"prediction\",\n name: \"knn_classifier\",\n k,\n predictions,\n });\n } catch {\n return _err(\"predict_knn_classifier\", \"invalid model text\");\n }\n};\n\nconst train_knn_regressor = (X, y, k = 5) => {\n if (X.length !== y.length)\n return _err(\"train_knn_regressor\", \"X and y length mismatch\");\n const model = {\n type: \"knn_regressor\",\n k,\n X,\n y,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst predict_knn_regressor = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n if (m.type !== \"knn_regressor\")\n return _err(\"predict_knn_regressor\", \"invalid model type\");\n const { k, x: X_train, y: y_train } = m;\n const predictions = X_test.map((x) => {\n const distances = X_train.map((xt, i) => ({\n dist: _euclidean(x, xt),\n value: y_train[i],\n }));\n distances.sort((a, b) => a.dist - b.dist);\n const neighbors = distances.slice(0, k);\n return _mean(neighbors.map((n) => n.value));\n });\n return _text({ type: \"prediction\", name: \"knn_regressor\", k, predictions });\n } catch {\n return _err(\"predict_knn_regressor\", \"invalid model text\");\n }\n};\n\n// =========================\n// DECISION TREE (CART)\n// =========================\n\nconst _gini = (y) => {\n const counts = {};\n y.forEach((v) => {\n counts[v] = (counts[v] || 0) + 1;\n });\n const total = y.length;\n return 1 - Object.values(counts).reduce((s, c) => s + (c / total) ** 2, 0);\n};\n\nconst _mse_split = (y) => {\n const m = _mean(y);\n return _mean(y.map((v) => (v - m) ** 2));\n};\n\nconst _best_split = (X, y, task = \"classification\") => {\n let best = { feature: -1, threshold: 0, score: Infinity };\n const n_features = X[0].length;\n for (let f = 0; f < n_features; f++) {\n const values = _uniq(X.map((row) => row[f])).sort((a, b) => a - b);\n for (let i = 0; i < values.length - 1; i++) {\n const thresh = (values[i] + values[i + 1]) / 2;\n const left_idx = [];\n const right_idx = [];\n X.forEach((row, idx) => {\n if (row[f] <= thresh) left_idx.push(idx);\n else right_idx.push(idx);\n });\n if (left_idx.length === 0 || right_idx.length === 0) continue;\n const left_y = left_idx.map((i) => y[i]);\n const right_y = right_idx.map((i) => y[i]);\n let score;\n if (task === \"classification\") {\n score =\n (left_y.length / y.length) * _gini(left_y) +\n (right_y.length / y.length) * _gini(right_y);\n } else {\n score =\n (left_y.length / y.length) * _mse_split(left_y) +\n (right_y.length / y.length) * _mse_split(right_y);\n }\n if (score < best.score) best = { feature: f, threshold: thresh, score };\n }\n }\n return best;\n};\n\nconst _build_tree = (X, y, depth, max_depth, min_samples, task) => {\n if (depth >= max_depth || y.length < min_samples) {\n const pred =\n task === \"classification\"\n ? Object.entries(\n y.reduce((a, v) => {\n a[v] = (a[v] || 0) + 1;\n return a;\n }, {})\n ).sort((a, b) => b[1] - a[1])[0][0]\n : _mean(y);\n return { leaf: true, prediction: Number(pred), n: y.length };\n }\n const split = _best_split(X, y, task);\n if (split.feature === -1) {\n const pred =\n task === \"classification\"\n ? Object.entries(\n y.reduce((a, v) => {\n a[v] = (a[v] || 0) + 1;\n return a;\n }, {})\n ).sort((a, b) => b[1] - a[1])[0][0]\n : _mean(y);\n return { leaf: true, prediction: Number(pred), n: y.length };\n }\n const left_idx = [];\n const right_idx = [];\n X.forEach((row, i) => {\n if (row[split.feature] <= split.threshold) left_idx.push(i);\n else right_idx.push(i);\n });\n const left_X = left_idx.map((i) => X[i]);\n const left_y = left_idx.map((i) => y[i]);\n const right_X = right_idx.map((i) => X[i]);\n const right_y = right_idx.map((i) => y[i]);\n return {\n leaf: false,\n feature: split.feature,\n threshold: split.threshold,\n left: _build_tree(left_X, left_y, depth + 1, max_depth, min_samples, task),\n right: _build_tree(\n right_X,\n right_y,\n depth + 1,\n max_depth,\n min_samples,\n task\n ),\n };\n};\n\nconst train_decision_tree_classifier = (X, y, opts = {}) => {\n const max_depth = opts.max_depth ?? 5;\n const min_samples = opts.min_samples_split ?? 2;\n const tree = _build_tree(X, y, 0, max_depth, min_samples, \"classification\");\n const model = {\n type: \"decision_tree_classifier\",\n tree,\n max_depth,\n min_samples,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst train_decision_tree_regressor = (X, y, opts = {}) => {\n const max_depth = opts.max_depth ?? 5;\n const min_samples = opts.min_samples_split ?? 2;\n const tree = _build_tree(X, y, 0, max_depth, min_samples, \"regression\");\n const model = {\n type: \"decision_tree_regressor\",\n tree,\n max_depth,\n min_samples,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst _predict_tree = (tree, x) => {\n if (tree.leaf) return tree.prediction;\n return x[tree.feature] <= tree.threshold\n ? _predict_tree(tree.left, x)\n : _predict_tree(tree.right, x);\n};\n\nconst predict_decision_tree = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n const predictions = X_test.map((x) => _predict_tree(m.tree, x));\n return _text({ type: \"prediction\", name: m.type, predictions });\n } catch {\n return _err(\"predict_decision_tree\", \"invalid model text\");\n }\n};\n\n// =========================\n// RANDOM FOREST\n// =========================\n\nconst _bootstrap_sample = (X, y, seed) => {\n const n = X.length;\n let s = seed;\n const rand = () => (s = (s * 9301 + 49297) % 233280) / 233280;\n const indices = Array.from({ length: n }, () => Math.floor(rand() * n));\n const X_boot = indices.map((i) => X[i]);\n const y_boot = indices.map((i) => y[i]);\n return { X_boot, y_boot };\n};\n\nconst train_random_forest_classifier = (X, y, opts = {}) => {\n const n_trees = opts.n_estimators ?? 10;\n const max_depth = opts.max_depth ?? 5;\n const min_samples = opts.min_samples_split ?? 2;\n const seed = opts.seed ?? 42;\n const trees = [];\n for (let i = 0; i < n_trees; i++) {\n const { X_boot, y_boot } = _bootstrap_sample(X, y, seed + i);\n const tree_model = _lowerJson(\n train_decision_tree_classifier(X_boot, y_boot, { max_depth, min_samples })\n );\n trees.push(tree_model.tree);\n }\n const model = {\n type: \"random_forest_classifier\",\n trees,\n n_trees,\n max_depth,\n min_samples,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst train_random_forest_regressor = (X, y, opts = {}) => {\n const n_trees = opts.n_estimators ?? 10;\n const max_depth = opts.max_depth ?? 5;\n const min_samples = opts.min_samples_split ?? 2;\n const seed = opts.seed ?? 42;\n const trees = [];\n for (let i = 0; i < n_trees; i++) {\n const { X_boot, y_boot } = _bootstrap_sample(X, y, seed + i);\n const tree_model = _lowerJson(\n train_decision_tree_regressor(X_boot, y_boot, { max_depth, min_samples })\n );\n trees.push(tree_model.tree);\n }\n const model = {\n type: \"random_forest_regressor\",\n trees,\n n_trees,\n max_depth,\n min_samples,\n n: y.length,\n p: X[0]?.length ?? 0,\n };\n return _text(model);\n};\n\nconst predict_random_forest_classifier = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n const predictions = X_test.map((x) => {\n const votes = m.trees.map((tree) => _predict_tree(tree, x));\n const counts = {};\n votes.forEach((v) => {\n counts[v] = (counts[v] || 0) + 1;\n });\n return Number(Object.entries(counts).sort((a, b) => b[1] - a[1])[0][0]);\n });\n return _text({\n type: \"prediction\",\n name: \"random_forest_classifier\",\n n_trees: m.n_trees,\n predictions,\n });\n } catch {\n return _err(\"predict_random_forest_classifier\", \"invalid model text\");\n }\n};\n\nconst predict_random_forest_regressor = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n const predictions = X_test.map((x) => {\n const preds = m.trees.map((tree) => _predict_tree(tree, x));\n return _mean(preds);\n });\n return _text({\n type: \"prediction\",\n name: \"random_forest_regressor\",\n n_trees: m.n_trees,\n predictions,\n });\n } catch {\n return _err(\"predict_random_forest_regressor\", \"invalid model text\");\n }\n};\n\n// =========================\n// NAIVE BAYES\n// =========================\n\nconst train_naive_bayes = (X, y) => {\n const classes = _uniq(y);\n const n = y.length;\n const p = X[0]?.length ?? 0;\n const priors = {};\n const stats = {};\n classes.forEach((c) => {\n const indices = y.map((v, i) => (v === c ? i : -1)).filter((i) => i >= 0);\n priors[c] = indices.length / n;\n stats[c] = Array.from({ length: p }, (_, j) => {\n const col = indices.map((i) => X[i][j]);\n return { mean: _mean(col), std: _std(col, true) };\n });\n });\n const model = { type: \"naive_bayes\", classes, priors, stats, n, p };\n return _text(model);\n};\n\nconst predict_naive_bayes = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n const predictions = X_test.map((x) => {\n const scores = {};\n m.classes.forEach((c) => {\n let log_prob = Math.log(m.priors[c]);\n m.stats[c].forEach((s, j) => {\n const val = (x[j] - s.mean) / s.std;\n log_prob +=\n -0.5 * val * val - Math.log(s.std) - 0.5 * Math.log(2 * Math.PI);\n });\n scores[c] = log_prob;\n });\n return Number(Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0]);\n });\n return _text({ type: \"prediction\", name: \"naive_bayes\", predictions });\n } catch {\n return _err(\"predict_naive_bayes\", \"invalid model text\");\n }\n};\n\n// =========================\n// FEATURE SCALING\n// =========================\n\nconst standard_scaler_fit = (X) => {\n const p = X[0]?.length ?? 0;\n const params = Array.from({ length: p }, (_, j) => {\n const col = X.map((row) => row[j]);\n return { mean: _mean(col), std: _std(col, true) };\n });\n return _text({ type: \"standard_scaler\", params, n: X.length, p });\n};\n\nconst standard_scaler_transform = (scaler_text, X) => {\n try {\n const m = _lowerJson(scaler_text);\n const X_scaled = X.map((row) =>\n row.map((v, j) => (v - m.params[j].mean) / m.params[j].std)\n );\n return _text({\n type: \"scaled_data\",\n method: \"standard\",\n data: X_scaled,\n preview: X_scaled.slice(0, 5),\n });\n } catch {\n return _err(\"standard_scaler_transform\", \"invalid scaler text\");\n }\n};\n\nconst minmax_scaler_fit = (X) => {\n const p = X[0]?.length ?? 0;\n const params = Array.from({ length: p }, (_, j) => {\n const col = X.map((row) => row[j]);\n return { min: _min(col), max: _max(col) };\n });\n return _text({ type: \"minmax_scaler\", params, n: X.length, p });\n};\n\nconst minmax_scaler_transform = (scaler_text, X) => {\n try {\n const m = _lowerJson(scaler_text);\n const X_scaled = X.map((row) =>\n row.map((v, j) => {\n const range = m.params[j].max - m.params[j].min;\n return range === 0 ? 0 : (v - m.params[j].min) / range;\n })\n );\n return _text({\n type: \"scaled_data\",\n method: \"minmax\",\n preview: X_scaled.slice(0, 5),\n });\n } catch {\n return _err(\"minmax_scaler_transform\", \"invalid scaler text\");\n }\n};\n\n// =========================\n// DIMENSIONALITY REDUCTION (PCA)\n// =========================\n\nconst train_pca = (X, n_components = 2) => {\n const n = X.length;\n const p = X[0]?.length ?? 0;\n if (n_components > p)\n return _err(\"train_pca\", \"n_components cannot exceed number of features\");\n\n // center data\n const means = Array.from({ length: p }, (_, j) =>\n _mean(X.map((row) => row[j]))\n );\n const X_centered = X.map((row) => row.map((v, j) => v - means[j]));\n\n // covariance matrix\n const cov = Array.from({ length: p }, (_, i) =>\n Array.from({ length: p }, (_, j) => {\n let sum = 0;\n for (let k = 0; k < n; k++) sum += X_centered[k][i] * X_centered[k][j];\n return sum / (n - 1);\n })\n );\n\n // simple power iteration for first n_components eigenvectors\n const components = [];\n for (let c = 0; c < n_components; c++) {\n let v = Array.from({ length: p }, () => Math.random());\n for (let iter = 0; iter < 100; iter++) {\n const v_new = Array.from({ length: p }, (_, i) =>\n cov[i].reduce((s, val, j) => s + val * v[j], 0)\n );\n const norm = Math.sqrt(v_new.reduce((s, val) => s + val * val, 0));\n v = v_new.map((val) => val / norm);\n }\n components.push(v);\n\n // deflate covariance matrix\n for (let i = 0; i < p; i++) {\n for (let j = 0; j < p; j++) {\n cov[i][j] -=\n v[i] * v[j] * cov[i].reduce((s, val, k) => s + val * v[k], 0);\n }\n }\n }\n\n const model = { type: \"pca\", n_components, means, components, n, p };\n return _text(model);\n};\n\nconst transform_pca = (model_text, X) => {\n try {\n const m = _lowerJson(model_text);\n const X_centered = X.map((row) => row.map((v, j) => v - m.means[j]));\n const X_transformed = X_centered.map((row) =>\n m.components.map((comp) => row.reduce((s, v, i) => s + v * comp[i], 0))\n );\n return _text({\n type: \"pca_transform\",\n n_components: m.n_components,\n preview: X_transformed.slice(0, 5),\n });\n } catch {\n return _err(\"transform_pca\", \"invalid model text\");\n }\n};\n\n// =========================\n// CLUSTERING (K-MEANS)\n// =========================\n\nconst train_kmeans = (X, k = 3, opts = {}) => {\n const max_iter = opts.max_iterations ?? 100;\n const seed = opts.seed ?? 42;\n let s = seed;\n const rand = () => (s = (s * 9301 + 49297) % 233280) / 233280;\n\n const n = X.length;\n const p = X[0]?.length ?? 0;\n\n // initialize centroids randomly\n const indices = Array.from({ length: k }, () => Math.floor(rand() * n));\n let centroids = indices.map((i) => [...X[i]]);\n let labels = Array(n).fill(0);\n\n for (let iter = 0; iter < max_iter; iter++) {\n // assign points to nearest centroid\n const new_labels = X.map((x) => {\n const distances = centroids.map((c) => _euclidean(x, c));\n return distances.indexOf(Math.min(...distances));\n });\n\n // check convergence\n if (labels.every((l, i) => l === new_labels[i])) break;\n labels = new_labels;\n\n // update centroids\n centroids = Array.from({ length: k }, (_, c) => {\n const cluster_points = X.filter((_, i) => labels[i] === c);\n if (cluster_points.length === 0) return centroids[c];\n return Array.from({ length: p }, (_, j) =>\n _mean(cluster_points.map((pt) => pt[j]))\n );\n });\n }\n\n // calculate inertia\n const inertia = X.reduce(\n (s, x, i) => s + _euclidean(x, centroids[labels[i]]) ** 2,\n 0\n );\n\n const model = { type: \"kmeans\", k, centroids, inertia, n, p };\n return _text(model);\n};\n\nconst predict_kmeans = (model_text, X_test) => {\n try {\n const m = _lowerJson(model_text);\n const predictions = X_test.map((x) => {\n const distances = m.centroids.map((c) => _euclidean(x, c));\n return distances.indexOf(Math.min(...distances));\n });\n return _text({\n type: \"prediction\",\n name: \"kmeans\",\n k: m.k,\n cluster_labels: predictions,\n });\n } catch {\n return _err(\"predict_kmeans\", \"invalid model text\");\n }\n};\n\n// =========================\n// ENSEMBLE VOTING\n// =========================\n\nconst ensemble_voting_classifier = (models_text, X_test, voting = \"hard\") => {\n try {\n const models = models_text.map((mt) => _lowerJson(mt));\n\n if (voting === \"hard\") {\n const all_preds = models.map((m) => {\n if (m.type === \"logistic_regression\") {\n const pred_result = _lowerJson(predict_logistic(_text(m), X_test));\n return pred_result.classes;\n } else if (m.type === \"knn_classifier\") {\n const pred_result = _lowerJson(\n predict_knn_classifier(_text(m), X_test)\n );\n return pred_result.predictions;\n } else if (m.type === \"decision_tree_classifier\") {\n const pred_result = _lowerJson(\n predict_decision_tree(_text(m), X_test)\n );\n return pred_result.predictions;\n } else if (m.type === \"random_forest_classifier\") {\n const pred_result = _lowerJson(\n predict_random_forest_classifier(_text(m), X_test)\n );\n return pred_result.predictions;\n } else if (m.type === \"naive_bayes\") {\n const pred_result = _lowerJson(predict_naive_bayes(_text(m), X_test));\n return pred_result.predictions;\n }\n return [];\n });\n\n const ensemble_preds = X_test.map((_, i) => {\n const votes = {};\n all_preds.forEach((preds) => {\n const v = preds[i];\n votes[v] = (votes[v] || 0) + 1;\n });\n return Number(Object.entries(votes).sort((a, b) => b[1] - a[1])[0][0]);\n });\n\n return _text({\n type: \"ensemble_prediction\",\n method: \"voting_hard\",\n n_models: models.length,\n predictions: ensemble_preds,\n });\n } else {\n return _err(\n \"ensemble_voting_classifier\",\n \"soft voting not yet implemented\"\n );\n }\n } catch {\n return _err(\"ensemble_voting_classifier\", \"invalid models\");\n }\n};\n\nconst ensemble_voting_regressor = (models_text, X_test) => {\n try {\n const models = models_text.map((mt) => _lowerJson(mt));\n\n const all_preds = models.map((m) => {\n if (m.type === \"linear_regression\") {\n const pred_result = _lowerJson(predict_linear(_text(m), X_test));\n return pred_result.predictions;\n } else if (m.type === \"knn_regressor\") {\n const pred_result = _lowerJson(predict_knn_regressor(_text(m), X_test));\n return pred_result.predictions;\n } else if (m.type === \"decision_tree_regressor\") {\n const pred_result = _lowerJson(predict_decision_tree(_text(m), X_test));\n return pred_result.predictions;\n } else if (m.type === \"random_forest_regressor\") {\n const pred_result = _lowerJson(\n predict_random_forest_regressor(_text(m), X_test)\n );\n return pred_result.predictions;\n }\n return [];\n });\n\n const ensemble_preds = X_test.map((_, i) => {\n const values = all_preds.map((preds) => preds[i]);\n return _mean(values);\n });\n\n return _text({\n type: \"ensemble_prediction\",\n method: \"voting_average\",\n n_models: models.length,\n predictions: ensemble_preds,\n });\n } catch {\n return _err(\"ensemble_voting_regressor\", \"invalid models\");\n }\n};\n\n// =========================\n// CROSS-VALIDATION\n// =========================\n\nconst cross_validate = (X, y, model_type, opts = {}) => {\n const k_folds = opts.k_folds ?? 5;\n const normalize = opts.normalize ?? false;\n const shuffle = opts.shuffle ?? true; // ← Embaralhar antes de dividir\n const seed = opts.seed ?? 42;\n const n = X.length;\n\n // ✅ Embaralhar índices se solicitado\n let indices = Array.from({ length: n }, (_, i) => i);\n if (shuffle) {\n let s = seed;\n const rand = () => (s = (s * 9301 + 49297) % 233280) / 233280;\n indices.sort(() => rand() - 0.5);\n }\n\n const fold_size = Math.floor(n / k_folds);\n const scores = [];\n\n for (let fold = 0; fold < k_folds; fold++) {\n const test_start = fold * fold_size;\n const test_end = fold === k_folds - 1 ? n : (fold + 1) * fold_size;\n\n // Usar índices embaralhados\n const train_idx = [...indices.slice(0, test_start), ...indices.slice(test_end)];\n const test_idx = indices.slice(test_start, test_end);\n\n let X_train = train_idx.map(i => X[i]);\n let y_train = train_idx.map(i => y[i]);\n let X_test = test_idx.map(i => X[i]);\n const y_test = test_idx.map(i => y[i]);\n\n // Normalização dentro do fold\n if (normalize) {\n const scaler = standard_scaler_fit(X_train);\n const train_scaled = standard_scaler_transform(scaler, X_train);\n const test_scaled = standard_scaler_transform(scaler, X_test);\n\n X_train = _lowerJson(train_scaled).data || train_scaled.data;\n X_test = _lowerJson(test_scaled).data || test_scaled.data;\n }\n\n let model_text;\n let predictions;\n\n // Treinar e avaliar baseado no tipo de modelo\n if (model_type === \"linear_regression\") {\n model_text = train_linear_regression(X_train, y_train);\n const pred_result = _lowerJson(predict_linear(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_regression(y_test, predictions));\n scores.push(metrics.r2);\n\n } else if (model_type === \"logistic_regression\") {\n model_text = train_logistic_regression(X_train, y_train, opts);\n const pred_result = _lowerJson(predict_logistic(model_text, X_test));\n predictions = pred_result.classes;\n const metrics = _lowerJson(metrics_classification(y_test, predictions));\n scores.push(metrics.accuracy);\n\n } else if (model_type === \"knn_classifier\") {\n model_text = train_knn_classifier(X_train, y_train, opts.k ?? 5);\n const pred_result = _lowerJson(predict_knn_classifier(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_classification(y_test, predictions));\n scores.push(metrics.accuracy);\n\n } else if (model_type === \"decision_tree_classifier\") {\n model_text = train_decision_tree_classifier(X_train, y_train, opts);\n const pred_result = _lowerJson(predict_decision_tree(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_classification(y_test, predictions));\n scores.push(metrics.accuracy);\n\n } else if (model_type === \"random_forest_classifier\") {\n model_text = train_random_forest_classifier(X_train, y_train, opts);\n const pred_result = _lowerJson(predict_random_forest_classifier(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_classification(y_test, predictions));\n scores.push(metrics.accuracy);\n\n } else if (model_type === \"knn_regressor\") {\n model_text = train_knn_regressor(X_train, y_train, opts.k ?? 5);\n const pred_result = _lowerJson(predict_knn_regressor(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_regression(y_test, predictions));\n scores.push(metrics.r2);\n\n } else if (model_type === \"decision_tree_regressor\") {\n model_text = train_decision_tree_regressor(X_train, y_train, opts);\n const pred_result = _lowerJson(predict_decision_tree(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_regression(y_test, predictions));\n scores.push(metrics.r2);\n\n } else if (model_type === \"random_forest_regressor\") {\n model_text = train_random_forest_regressor(X_train, y_train, opts);\n const pred_result = _lowerJson(predict_random_forest_regressor(model_text, X_test));\n predictions = pred_result.predictions;\n const metrics = _lowerJson(metrics_regression(y_test, predictions));\n scores.push(metrics.r2);\n }\n }\n\n return _text({\n type: \"cross_validation\",\n model_type,\n k_folds,\n scores,\n mean_score: _mean(scores),\n std_score: _std(scores, true),\n min_score: _min(scores),\n max_score: _max(scores),\n normalized: normalize,\n shuffled: shuffle,\n });\n};\n\n// =========================\n// FEATURE IMPORTANCE (for tree-based models)\n// =========================\n\nconst _tree_feature_importance = (tree, n_features) => {\n const importance = Array(n_features).fill(0);\n\n const traverse = (node, n_samples) => {\n if (node.leaf) return;\n importance[node.feature] += n_samples;\n traverse(node.left, n_samples);\n traverse(node.right, n_samples);\n };\n\n traverse(tree, 1);\n const total = importance.reduce((a, b) => a + b, 0);\n return importance.map((v) => (total > 0 ? v / total : 0));\n};\n\nconst feature_importance_tree = (model_text) => {\n try {\n const m = _lowerJson(model_text);\n if (\n m.type === \"decision_tree_classifier\" ||\n m.type === \"decision_tree_regressor\"\n ) {\n const importance = _tree_feature_importance(m.tree, m.p);\n return _text({ type: \"feature_importance\", model: m.type, importance });\n } else if (\n m.type === \"random_forest_classifier\" ||\n m.type === \"random_forest_regressor\"\n ) {\n const all_importance = m.trees.map((tree) =>\n _tree_feature_importance(tree, m.p)\n );\n const avg_importance = Array.from({ length: m.p }, (_, i) =>\n _mean(all_importance.map((imp) => imp[i]))\n );\n return _text({\n type: \"feature_importance\",\n model: m.type,\n n_trees: m.n_trees,\n importance: avg_importance,\n });\n } else {\n return _err(\"feature_importance_tree\", \"model must be tree-based\");\n }\n } catch {\n return _err(\"feature_importance_tree\", \"invalid model text\");\n }\n};\n\n// =========================\n// OUTLIER DETECTION\n// =========================\n\nconst outliers_iqr = (arr) => {\n const x = _numeric(arr);\n const q1 = _quantile(x, 0.25);\n const q3 = _quantile(x, 0.75);\n const iqr = q3 - q1;\n const lower = q1 - 1.5 * iqr;\n const upper = q3 + 1.5 * iqr;\n const outliers = x.filter((v) => v < lower || v > upper);\n const indices = arr\n .map((v, i) => (_isNumber(v) && (v < lower || v > upper) ? i : -1))\n .filter((i) => i >= 0);\n return _text({\n type: \"outlier_detection\",\n method: \"iqr\",\n lower_bound: lower,\n upper_bound: upper,\n n_outliers: outliers.length,\n outlier_indices: indices,\n outlier_values: outliers,\n });\n};\n\nconst outliers_zscore = (arr, threshold = 3) => {\n const x = _numeric(arr);\n const m = _mean(x);\n const s = _std(x, true);\n const zscores = x.map((v) => Math.abs((v - m) / s));\n const outliers = x.filter((_, i) => zscores[i] > threshold);\n const indices = arr\n .map((v, i) => (_isNumber(v) && Math.abs((v - m) / s) > threshold ? i : -1))\n .filter((i) => i >= 0);\n return _text({\n type: \"outlier_detection\",\n method: \"zscore\",\n threshold,\n n_outliers: outliers.length,\n outlier_indices: indices,\n outlier_values: outliers,\n });\n};\n\n// =========================\n// TIME SERIES BASICS\n// =========================\n\nconst moving_average = (arr, window = 3) => {\n const x = _numeric(arr);\n const ma = [];\n for (let i = 0; i < x.length; i++) {\n const start = Math.max(0, i - window + 1);\n const slice = x.slice(start, i + 1);\n ma.push(_mean(slice));\n }\n return _text({\n type: \"time_series\",\n method: \"moving_average\",\n window,\n values: ma,\n });\n};\n\nconst exponential_smoothing = (arr, alpha = 0.3) => {\n const x = _numeric(arr);\n if (x.length === 0) return _err(\"exponential_smoothing\", \"empty data\");\n const smoothed = [x[0]];\n for (let i = 1; i < x.length; i++) {\n smoothed.push(alpha * x[i] + (1 - alpha) * smoothed[i - 1]);\n }\n return _text({\n type: \"time_series\",\n method: \"exponential_smoothing\",\n alpha,\n values: smoothed,\n });\n};\n\nconst autocorrelation = (arr, lag = 1) => {\n const x = _numeric(arr);\n const n = x.length;\n if (n < lag + 1) return _err(\"autocorrelation\", \"insufficient data for lag\");\n const m = _mean(x);\n let num = 0;\n let den = 0;\n for (let i = 0; i < n; i++) {\n den += (x[i] - m) ** 2;\n if (i >= lag) num += (x[i] - m) * (x[i - lag] - m);\n }\n const acf = num / den;\n return _ok(\"statistic\", { name: \"autocorrelation\", lag, value: acf });\n};\n\n// =========================\n// Loaders\n// =========================\nconst df_from_csv = (content, opts = {}) => {\n const config = {\n delimiter: \",\",\n header: true,\n skipEmptyLines: true,\n ...opts,\n };\n const lines = content\n .split(\"\\n\")\n .filter((l) => (config.skipEmptyLines ? l.trim() !== \"\" : true));\n if (lines.length === 0) return _empty_df();\n\n const headers = config.header\n ? lines[0].split(config.delimiter).map((h) => h.trim().replace(/['\"]/g, \"\"))\n : Array.from(\n { length: lines[0].split(config.delimiter).length },\n (_, i) => `col_${i}`\n );\n\n const startIndex = config.header ? 1 : 0;\n const data = [];\n\n for (let i = startIndex; i < lines.length; i++) {\n const values = lines[i].split(config.delimiter);\n if (values.length === headers.length) {\n const row = {};\n headers.forEach((header, idx) => {\n row[header] = _inferType(values[idx].trim().replace(/['\"]/g, \"\"));\n });\n data.push(row);\n }\n }\n\n return _build_df(headers, data);\n};\n\n/**\n * Converte array de objetos em estrutura dataframe\n * @param {Array<Object>} arrayOfObjects - Array de objetos JavaScript\n * @returns {Object} Estrutura dataframe { type, columns, data, n_rows, n_cols }\n */\nconst df_from_array = (arr) => {\n if (!Array.isArray(arr) || arr.length === 0) {\n return _empty_df();\n }\n\n if (!arr.every(item => item && typeof item === 'object' && !Array.isArray(item))) {\n return _empty_df();\n }\n\n // Extrair colunas únicas\n const columns = [];\n arr.forEach(obj => {\n Object.keys(obj).forEach(key => {\n if (!columns.includes(key)) {\n columns.push(key);\n }\n });\n });\n\n // Processar dados\n const data = arr.map(obj => {\n const row = {};\n columns.forEach(col => {\n row[col] = _inferType(obj[col]);\n });\n return row;\n });\n\n return _build_df(columns, data);\n};\n\n\n/**\n * CORRIGIDO: df_from_json\n * Processa JSON de diferentes formatos\n */\nconst df_from_json = (input) => {\n let jsonData;\n\n // Parse string JSON\n if (typeof input === \"string\") {\n try {\n jsonData = JSON.parse(input);\n } catch (e) {\n return _empty_df();\n }\n } else {\n jsonData = input;\n }\n\n // Roteamento inteligente\n if (Array.isArray(jsonData)) {\n return df_from_array(jsonData);\n }\n\n if (jsonData && typeof jsonData === 'object') {\n // JSON estruturado: {headers: [...], data: [...]}\n if (jsonData.headers && Array.isArray(jsonData.headers) &&\n jsonData.data && Array.isArray(jsonData.data)) {\n return df_from_structured_json(jsonData);\n }\n\n // Objeto simples\n return df_from_object(jsonData);\n }\n\n return _empty_df();\n};\n\n/**\n * CORRIGIDO: df_from_structured_json\n * Processa formato {headers: [...], data: [...]}\n */\nconst df_from_structured_json = (jsonData) => {\n if (!jsonData || typeof jsonData !== 'object' ||\n !jsonData.headers || !Array.isArray(jsonData.headers) ||\n !jsonData.data || !Array.isArray(jsonData.data)) {\n return _empty_df();\n }\n\n const headers = jsonData.headers;\n const data = jsonData.data.map(row => {\n const obj = {};\n\n if (Array.isArray(row)) {\n // data = [[\"val1\", \"val2\"], [\"val3\", \"val4\"]]\n headers.forEach((header, i) => {\n obj[header] = _inferType(row[i]);\n });\n } else if (row && typeof row === 'object') {\n // data = [{col1: \"val1\", col2: \"val2\"}]\n headers.forEach(header => {\n obj[header] = _inferType(row[header]);\n });\n } else {\n headers.forEach(header => {\n obj[header] = null;\n });\n }\n\n return obj;\n });\n\n return _build_df(headers, data);\n};\n\n/**\n * CORRIGIDO: df_from_object\n * Converte objeto simples em dataframe\n */\nconst df_from_object = (obj, opts = {}) => {\n if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {\n return _empty_df();\n }\n\n const config = {\n flatten: true,\n maxDepth: 10,\n keyValue: false,\n ...opts,\n };\n\n if (config.keyValue || !config.flatten) {\n // Formato key-value\n const headers = [\"key\", \"value\"];\n const data = Object.entries(obj).map(([key, val]) => ({\n key: key,\n value: _inferType(val),\n }));\n return _build_df(headers, data);\n } else {\n // Formato achatado (padrão)\n const flattened = _flatten(obj, \"\", config.maxDepth);\n const columns = Object.keys(flattened);\n const processedRow = {};\n columns.forEach(col => {\n processedRow[col] = _inferType(flattened[col]);\n });\n const data = [processedRow];\n return _build_df(columns, data);\n }\n};\n\n// =========================\n// Manipulação básica\n// =========================\nconst df_get_column = (df, col) => {\n if (!df.columns.includes(col)) {\n throw new Error(\n `Column '${col}' not found. Available: ${df.columns.join(\", \")}`\n );\n }\n return df.data.map((row) => row[col]);\n};\n\n// NOVA: Pegar valor único (útil para dataframes de objeto achatado)\nconst df_get_value = (df, col) => {\n const column = df_get_column(df, col);\n return column[0];\n};\n\nconst df_get_columns = (df, cols) => {\n const result = {};\n cols.forEach((c) => (result[c] = df_get_column(df, c)));\n return result;\n};\n\nconst df_filter = (df, predicate) => {\n const filtered = df.data.filter(predicate);\n return _build_df(df.columns, filtered);\n};\n\nconst df_sort = (df, col, order = \"asc\") => {\n if (!df.columns.includes(col)) throw new Error(`Column '${col}' not found`);\n const sorted = [...df.data].sort((a, b) => {\n const av = a[col],\n bv = b[col];\n if (av == null) return 1;\n if (bv == null) return -1;\n if (typeof av === \"string\" && typeof bv === \"string\")\n return order === \"asc\" ? av.localeCompare(bv) : bv.localeCompare(av);\n return order === \"asc\" ? av - bv : bv - av;\n });\n return _build_df(df.columns, sorted);\n};\n\nconst df_select = (df, cols) => {\n cols.forEach((c) => {\n if (!df.columns.includes(c)) throw new Error(`Column '${c}' not found`);\n });\n const data = df.data.map((row) => {\n const newRow = {};\n cols.forEach((c) => (newRow[c] = row[c]));\n return newRow;\n });\n return _build_df(cols, data);\n};\n\n// MODIFICADO: Retorna string formatada com _text\nconst df_info = (df) => {\n const types = {};\n const nulls = {};\n const uniques = {};\n\n df.columns.forEach((c) => {\n const colVals = df.data.map((r) => r[c]);\n const nonNull = colVals.filter((v) => v != null);\n\n // Coletar os tipos únicos\n const typeSet = new Set(nonNull.map((v) => typeof v));\n\n // Converter Set para array e pegar o tipo apropriado\n if (typeSet.size === 0) {\n types[c] = \"empty\";\n } else if (typeSet.size === 1) {\n types[c] = Array.from(typeSet)[0]; // ou [...typeSet][0]\n } else {\n types[c] = \"mixed\";\n }\n\n nulls[c] = colVals.length - nonNull.length;\n uniques[c] = new Set(nonNull).size;\n });\n\n const info = {\n n_rows: df.n_rows,\n n_cols: df.n_cols,\n columns: df.columns,\n types,\n null_counts: nulls,\n unique_counts: uniques,\n };\n\n return _text(info);\n};\n\nconst df_head = (df, n = 5) => _build_df(df.columns, df.data.slice(0, n));\nconst df_tail = (df, n = 5) => _build_df(df.columns, df.data.slice(-n));\n\n// =========================\n// Avançadas\n// =========================\nconst df_concat = (...dfs) => {\n if (!dfs.length) return _empty_df();\n const allColumns = _uniq(dfs.flatMap((df) => df.columns));\n const allRows = dfs.flatMap((df) => {\n return df.data.map((row) => {\n const newRow = {};\n allColumns.forEach((c) => (newRow[c] = row[c] ?? null));\n return newRow;\n });\n });\n return _build_df(allColumns, allRows);\n};\n\nconst df_merge = (df1, df2, { on, how = \"inner\" }) => {\n if (!Array.isArray(on)) on = [on];\n const colSet = _uniq([...df1.columns, ...df2.columns]);\n const merged = [];\n\n for (const row1 of df1.data) {\n const matches = df2.data.filter((row2) =>\n on.every((key) => row1[key] === row2[key])\n );\n\n if (matches.length > 0) {\n for (const row2 of matches) merged.push({ ...row1, ...row2 });\n } else if (how === \"left\" || how === \"outer\") {\n const newRow = { ...row1 };\n df2.columns.forEach((c) => {\n if (!on.includes(c)) newRow[c] = null;\n });\n merged.push(newRow);\n }\n }\n\n if (how === \"right\" || how === \"outer\") {\n for (const row2 of df2.data) {\n const match = df1.data.some((row1) =>\n on.every((key) => row1[key] === row2[key])\n );\n if (!match) {\n const newRow = { ...row2 };\n df1.columns.forEach((c) => {\n if (!on.includes(c)) newRow[c] = null;\n });\n merged.push(newRow);\n }\n }\n }\n\n return _build_df(colSet, merged);\n};\n\nconst df_dropna = (df, subset = null) => {\n const cols = subset || df.columns;\n const filtered = df.data.filter((row) =>\n cols.every((c) => row[c] !== null && row[c] !== undefined)\n );\n return _build_df(df.columns, filtered);\n};\n\nconst df_fillna = (df, value, subset = null) => {\n const cols = subset || df.columns;\n const filled = df.data.map((row) => {\n const newRow = { ...row };\n cols.forEach((c) => {\n if (newRow[c] === null || newRow[c] === undefined) newRow[c] = value;\n });\n return newRow;\n });\n return _build_df(df.columns, filled);\n};\n\nconst df_groupby = (df, keys) => {\n if (!Array.isArray(keys)) keys = [keys];\n const groups = new Map();\n\n df.data.forEach((row) => {\n const key = keys.map((k) => row[k]).join(\"|\");\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key).push(row);\n });\n\n return { keys, groups };\n};\n\nconst df_aggregate = (grouped, aggMap) => {\n const result = [];\n\n grouped.groups.forEach((rows, key) => {\n const keyParts = key.split(\"|\");\n const rowOut = {};\n grouped.keys.forEach((k, idx) => (rowOut[k] = keyParts[idx]));\n\n Object.entries(aggMap).forEach(([col, fn]) => {\n const vals = rows.map((r) => r[col]).filter((v) => v != null);\n rowOut[col] = fn(vals);\n });\n\n result.push(rowOut);\n });\n\n const allCols = _uniq([...grouped.keys, ...Object.keys(aggMap)]);\n return _build_df(allCols, result);\n};\n\n// =========================\n// UTILITÁRIAS\n// =========================\n\n// 📉 aplicar função em uma coluna\nconst df_apply = (df, col, fn) => {\n if (!df.columns.includes(col)) throw new Error(`Column '${col}' not found`);\n const newData = df.data.map((row) => ({ ...row, [col]: fn(row[col], row) }));\n return _build_df(df.columns, newData);\n};\n\n// 🧾 exportar dataframe para CSV\nconst df_to_csv = (df, delimiter = \",\") => {\n const header = df.columns.join(delimiter);\n const rows = df.data.map((row) =>\n df.columns\n .map((c) => {\n const val = row[c];\n // Serializa arrays e objetos como JSON\n if (Array.isArray(val) || (typeof val === \"object\" && val !== null)) {\n return JSON.stringify(val);\n }\n return val ?? \"\";\n })\n .join(delimiter)\n );\n return [header, ...rows].join(\"\\n\");\n};\n\n// 🧭 amostragem aleatória\nconst df_sample = (df, n = 5, seed = null) => {\n const data = [...df.data];\n if (seed !== null) {\n // seed opcional\n let m = seed;\n data.sort(() => (Math.sin(m++) > 0 ? 1 : -1));\n } else {\n data.sort(() => Math.random() - 0.5);\n }\n return _build_df(df.columns, data.slice(0, n));\n};\n\n// 🧪 valores únicos de uma coluna\nconst df_unique = (df, col) => {\n if (!df.columns.includes(col)) throw new Error(`Column '${col}' not found`);\n return _uniq(df.data.map((row) => row[col]));\n};\n\n// 🧼 renomear coluna(s)\nconst df_rename = (df, renameMap) => {\n const newColumns = df.columns.map((c) => renameMap[c] || c);\n const newData = df.data.map((row) => {\n const newRow = {};\n df.columns.forEach((c) => {\n const newName = renameMap[c] || c;\n newRow[newName] = row[c];\n });\n return newRow;\n });\n return _build_df(newColumns, newData);\n};\n\n// 🧱 adicionar coluna derivada\nconst df_add_column = (df, colName, fn) => {\n if (df.columns.includes(colName))\n throw new Error(`Column '${colName}' already exists`);\n const newData = df.data.map((row) => ({ ...row, [colName]: fn(row) }));\n return _build_df([...df.columns, colName], newData);\n};\n\n// 🧹 remover colunas\nconst df_drop = (df, cols) => {\n if (!Array.isArray(cols)) cols = [cols];\n const newColumns = df.columns.filter((c) => !cols.includes(c));\n const newData = df.data.map((row) => {\n const newRow = {};\n newColumns.forEach((c) => (newRow[c] = row[c]));\n return newRow;\n });\n return _build_df(newColumns, newData);\n};\n\n// =========================\n// NOVAS: Funções para análise de dados aninhados\n// =========================\n\n// 📊 Expandir array de objetos em múltiplas linhas (explode)\nconst df_explode = (df, col) => {\n if (!df.columns.includes(col)) throw new Error(`Column '${col}' not found`);\n\n const newData = [];\n df.data.forEach((row) => {\n const value = row[col];\n if (Array.isArray(value) && value.length > 0) {\n value.forEach((item) => {\n newData.push({ ...row, [col]: item });\n });\n } else {\n newData.push(row);\n }\n });\n\n return _build_df(df.columns, newData);\n};\n\n// 🔍 Buscar colunas por padrão - RETORNA STRING\nconst df_find_columns = (df, pattern) => {\n const regex = new RegExp(pattern, \"i\");\n const matched = df.columns.filter((col) => regex.test(col));\n\n return _text({\n pattern,\n matches_found: matched.length,\n columns: matched,\n });\n};\n\n// 📈 Estatísticas descritivas de colunas numéricas - RETORNA STRING\nconst df_describe = (df, cols = null) => {\n const targetCols =\n cols ||\n df.columns.filter((col) => {\n const sample = df.data[0]?.[col];\n return typeof sample === \"number\";\n });\n\n const stats = {};\n\n targetCols.forEach((col) => {\n const values = df.data\n .map((row) => row[col])\n .filter((v) => typeof v === \"number\" && !isNaN(v));\n\n if (values.length === 0) {\n stats[col] = { error: \"no numeric values\" };\n return;\n }\n\n const sorted = [...values].sort((a, b) => a - b);\n const sum = values.reduce((a, b) => a + b, 0);\n const mean = sum / values.length;\n const min = sorted[0];\n const max = sorted[sorted.length - 1];\n const median =\n sorted.length % 2 === 0\n ? (sorted[sorted.length / 2 - 1] + sorted[sorted.length / 2]) / 2\n : sorted[Math.floor(sorted.length / 2)];\n\n stats[col] = { count: values.length, mean, median, min, max, sum };\n });\n\n return _text({\n description: \"Descriptive Statistics\",\n analyzed_columns: targetCols.length,\n statistics: stats,\n });\n};\n\n// =========================\n// ADDITIONAL EXPORTS\n// =========================\n\nexport {\n // Loaders\n df_from_csv,\n df_from_json,\n df_from_array,\n df_from_structured_json,\n df_from_object,\n\n // Manipulação básica\n df_get_column,\n df_get_columns,\n df_filter,\n df_sort,\n df_select,\n df_info,\n df_head,\n df_tail,\n\n // Avançadas\n df_concat,\n df_merge,\n df_dropna,\n df_fillna,\n df_groupby,\n df_aggregate,\n\n // Utilitárias\n df_apply,\n df_to_csv,\n df_sample,\n df_unique,\n df_rename,\n df_add_column,\n df_drop,\n df_describe,\n df_missing_report,\n df_corr,\n df_explode,\n eda_overview,\n // stats\n mean,\n stddeviation,\n variance,\n median,\n quantile,\n minv,\n maxv,\n skewness,\n kurtosis,\n corr_pearson,\n corr_spearman,\n // distributions\n normal_pdf,\n normal_cdf,\n normal_ppf,\n binomial_pmf,\n binomial_cdf,\n poisson_pmf,\n poisson_cdf,\n // hypothesis tests\n t_test_independent,\n z_test_one_sample,\n chi_square_independence,\n anova_oneway,\n // ml\n train_test_split,\n train_linear_regression,\n train_logistic_regression,\n predict_linear,\n predict_logistic,\n metrics_classification,\n metrics_regression,\n // additional statistical tests\n t_test_paired,\n t_test_one_sample,\n shapiro_wilk,\n jarque_bera,\n levene_test,\n kruskal_wallis,\n mann_whitney,\n wilcoxon_signed_rank,\n chi_square_goodness,\n // confidence intervals\n confidence_interval_mean,\n confidence_interval_proportion,\n confidence_interval_variance,\n confidence_interval_difference,\n // additional correlations\n corr_kendall,\n corr_partial,\n corr_matrix_all,\n // knn\n train_knn_classifier,\n predict_knn_classifier,\n train_knn_regressor,\n predict_knn_regressor,\n // decision trees\n train_decision_tree_classifier,\n train_decision_tree_regressor,\n predict_decision_tree,\n // random forest\n train_random_forest_classifier,\n train_random_forest_regressor,\n predict_random_forest_classifier,\n predict_random_forest_regressor,\n // naive bayes\n train_naive_bayes,\n predict_naive_bayes,\n // feature scaling\n standard_scaler_fit,\n standard_scaler_transform,\n minmax_scaler_fit,\n minmax_scaler_transform,\n // dimensionality reduction\n train_pca,\n transform_pca,\n // clustering\n train_kmeans,\n predict_kmeans,\n // ensemble\n ensemble_voting_classifier,\n ensemble_voting_regressor,\n // cross-validation\n cross_validate,\n // feature importance\n feature_importance_tree,\n // outlier detection\n outliers_iqr,\n outliers_zscore,\n // time series\n moving_average,\n exponential_smoothing,\n autocorrelation,\n};","import {\n plotHistogram,\n plotBoxplot,\n plotScatter,\n plotLine,\n plotBar,\n plotPie,\n plotHeatmap,\n plotViolin,\n plotDensity,\n plotQQ,\n plotParallel,\n plotPairplot,\n plotMultiline,\n} from \"./plot.js\";\n\nimport {\n// Loaders\n df_from_csv,\n df_from_json,\n df_from_array,\n df_from_structured_json,\n df_from_object,\n\n // Manipulação básica\n df_get_column,\n df_get_columns,\n df_filter,\n df_sort,\n df_select,\n df_info,\n df_head,\n df_tail,\n\n // Avançadas\n df_concat,\n df_merge,\n df_dropna,\n df_fillna,\n df_groupby,\n df_aggregate,\n\n // Utilitárias\n df_apply,\n df_to_csv,\n df_sample,\n df_unique,\n df_rename,\n df_add_column,\n df_drop,\n df_describe,\n df_missing_report,\n df_corr,\n df_explode,\n\n eda_overview,\n // stats\n mean,\n stddeviation,\n variance,\n median,\n quantile,\n minv,\n maxv,\n skewness,\n kurtosis,\n corr_pearson,\n corr_spearman,\n // distributions\n normal_pdf,\n normal_cdf,\n normal_ppf,\n binomial_pmf,\n binomial_cdf,\n poisson_pmf,\n poisson_cdf,\n // hypothesis tests\n t_test_independent,\n z_test_one_sample,\n chi_square_independence,\n anova_oneway,\n // ml\n train_test_split,\n train_linear_regression,\n train_logistic_regression,\n predict_linear,\n predict_logistic,\n metrics_classification,\n metrics_regression,\n // additional statistical tests\n t_test_paired,\n t_test_one_sample,\n shapiro_wilk,\n jarque_bera,\n levene_test,\n kruskal_wallis,\n mann_whitney,\n wilcoxon_signed_rank,\n chi_square_goodness,\n // confidence intervals\n confidence_interval_mean,\n confidence_interval_proportion,\n confidence_interval_variance,\n confidence_interval_difference,\n // additional correlations\n corr_kendall,\n corr_partial,\n corr_matrix_all,\n // knn\n train_knn_classifier,\n predict_knn_classifier,\n train_knn_regressor,\n predict_knn_regressor,\n // decision trees\n train_decision_tree_classifier,\n train_decision_tree_regressor,\n predict_decision_tree,\n // random forest\n train_random_forest_classifier,\n train_random_forest_regressor,\n predict_random_forest_classifier,\n predict_random_forest_regressor,\n // naive bayes\n train_naive_bayes,\n predict_naive_bayes,\n // feature scaling\n standard_scaler_fit,\n standard_scaler_transform,\n minmax_scaler_fit,\n minmax_scaler_transform,\n // dimensionality reduction\n train_pca,\n transform_pca,\n // clustering\n train_kmeans,\n predict_kmeans,\n // ensemble\n ensemble_voting_classifier,\n ensemble_voting_regressor,\n // cross-validation\n cross_validate,\n // feature importance\n feature_importance_tree,\n // outlier detection\n outliers_iqr,\n outliers_zscore,\n // time series\n moving_average,\n exponential_smoothing,\n autocorrelation,\n} from \"./code.js\";\n\nconst datly = {\n // Loaders\n df_from_csv,\n df_from_json,\n df_from_array,\n df_from_structured_json,\n df_from_object,\n\n // Manipulação básica\n df_get_column,\n df_get_columns,\n df_filter,\n df_sort,\n df_select,\n df_info,\n df_head,\n df_tail,\n\n // Avançadas\n df_concat,\n df_merge,\n df_dropna,\n df_fillna,\n df_groupby,\n df_aggregate,\n\n // Utilitárias\n df_apply,\n df_to_csv,\n df_sample,\n df_unique,\n df_rename,\n df_add_column,\n df_drop,\n df_describe,\n df_missing_report,\n df_corr,\n df_explode,\n eda_overview,\n // stats\n mean,\n stddeviation,\n variance,\n median,\n quantile,\n minv,\n maxv,\n skewness,\n kurtosis,\n corr_pearson,\n corr_spearman,\n // distributions\n normal_pdf,\n normal_cdf,\n normal_ppf,\n binomial_pmf,\n binomial_cdf,\n poisson_pmf,\n poisson_cdf,\n // hypothesis tests\n t_test_independent,\n z_test_one_sample,\n chi_square_independence,\n anova_oneway,\n // ml\n train_test_split,\n train_linear_regression,\n train_logistic_regression,\n predict_linear,\n predict_logistic,\n metrics_classification,\n metrics_regression,\n // additional statistical tests\n t_test_paired,\n t_test_one_sample,\n shapiro_wilk,\n jarque_bera,\n levene_test,\n kruskal_wallis,\n mann_whitney,\n wilcoxon_signed_rank,\n chi_square_goodness,\n // confidence intervals\n confidence_interval_mean,\n confidence_interval_proportion,\n confidence_interval_variance,\n confidence_interval_difference,\n // additional correlations\n corr_kendall,\n corr_partial,\n corr_matrix_all,\n // knn\n train_knn_classifier,\n predict_knn_classifier,\n train_knn_regressor,\n predict_knn_regressor,\n // decision trees\n train_decision_tree_classifier,\n train_decision_tree_regressor,\n predict_decision_tree,\n // random forest\n train_random_forest_classifier,\n train_random_forest_regressor,\n predict_random_forest_classifier,\n predict_random_forest_regressor,\n // naive bayes\n train_naive_bayes,\n predict_naive_bayes,\n // feature scaling\n standard_scaler_fit,\n standard_scaler_transform,\n minmax_scaler_fit,\n minmax_scaler_transform,\n // dimensionality reduction\n train_pca,\n transform_pca,\n // clustering\n train_kmeans,\n predict_kmeans,\n // ensemble\n ensemble_voting_classifier,\n ensemble_voting_regressor,\n // cross-validation\n cross_validate,\n // feature importance\n feature_importance_tree,\n // outlier detection\n outliers_iqr,\n outliers_zscore,\n // time series\n moving_average,\n exponential_smoothing,\n autocorrelation,\n // plots\n plotHistogram,\n plotBoxplot,\n plotScatter,\n plotLine,\n plotBar,\n plotPie,\n plotHeatmap,\n plotViolin,\n plotDensity,\n plotQQ,\n plotParallel,\n plotPairplot,\n plotMultiline,\n};\n\nexport default datly;","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n"],"names":["xhtml","namespaces","svg","xlink","xml","xmlns","namespace","name","prefix","i","indexOf","slice","hasOwnProperty","space","local","creatorInherit","document","this","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","childMatcher","node","matches","find","Array","prototype","childFirst","firstElementChild","filter","children","from","sparse","update","length","EnterNode","parent","datum","_next","_parent","__data__","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","call","has","set","get","delete","arraylike","ascending","a","b","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","value","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","apply","arguments","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","n","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","appendChild","lower","previousSibling","insertBefore","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","typename","on","__on","o","j","m","type","removeEventListener","listener","options","onAdd","event","contextListener","addEventListener","push","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","constructor","child","next","querySelectorAll","join","splice","contains","root","Selection","groups","parents","_groups","_parents","select","descending","bisector","f","compare1","compare2","delta","left","x","lo","hi","mid","d","zero","center","right","subgroups","subnode","subgroup","selectAll","isArray","array","arrayAll","selectorAll","selectChild","match","childFind","selectChildren","childrenFilter","matcher","bind","constant","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","onenter","onupdate","onexit","selection","append","merge","order","context","groups0","groups1","m0","Math","min","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","callback","nodes","size","each","attr","getAttributeNS","getPropertyValue","getComputedStyle","styleValue","property","classed","text","html","create","insert","before","deep","t","typenames","parseTypenames","dispatch","Symbol","iterator","bisectRight","bisect","extent","values","valueof","max","undefined","index","InternMap","entries","keyof","super","Object","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","valueOf","identity","ascendingDefined","e10","sqrt","e5","e2","tickSpec","start","stop","count","step","power","floor","log10","error","pow","factor","i2","inc","round","ticks","reverse","tickIncrement","thresholdSturges","ceil","log","LN2","bin","domain","threshold","sturges","histogram","xz","x0","x1","tz","tn","prestep","isFinite","nice","pop","bins","_","thresholds","quickselect","k","Infinity","TypeError","compareDefined","z","s","exp","sd","swap","quantile","p","Float64Array","numbers","isNaN","value0","subarray","mean","sum","initRange","range","initInterpolator","interpolator","implicit","ordinal","unknown","scale","copy","band","bandwidth","ordinalRange","r0","r1","paddingInner","paddingOuter","align","rescale","sequence","rangeRound","padding","pointish","point","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","toString","h","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","channels","assign","displayable","formatHex8","formatHsl","clamp","constant$1","nogamma","linear","spline","rgbGamma","y","exponential","gamma","end","colorRgb","rgbBasis","v1","v2","t1","v0","v3","t2","t3","basis","colors","numberArray","c","genericArray","nb","na","date","Date","setTime","interpolateNumber","object","reA","reB","source","am","bm","bs","bi","lastIndex","q","number","one","interpolate","ArrayBuffer","isView","DataView","isNumberArray","interpolateRound","unit","normalize","bimap","d0","d1","polymap","formatDecimalParts","toExponential","coefficient","exponent","abs","prefixExponent","re","formatSpecifier","specifier","Error","FormatSpecifier","fill","sign","symbol","width","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","replace","e","toPrecision","X","toUpperCase","identity$2","locale","formatPrefix","prefixes","linearish","tickFormat","tickStep","precisionPrefix","precisionRound","precisionFixed","maxIter","transform","untransform","piecewise","output","input","interpolateValue","invert","u","transformer","sequential","t0","k10","identity$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","test","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","formatLocale","epsilon","translateX","translateY","offset","entering","__axis","axis","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","spacing","range0","range1","position","path","tick","tickExit","tickEnter","line","transition","tickSize","axisBottom","axisLeft","scheme","schemeCategory10","interpolateRdYlBu","interpolateRgbBasis","concat","atan2","cos","sin","pi","PI","halfPi","tau","asin","tauEpsilon","strings","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","w","withPath","shape","RangeError","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","Linear","_context","curveLinear","d3Line","defined","curve","buffer","defined0","lineStart","lineEnd","pointX","pointY","that","Basis","curveBasis","areaStart","_line","areaEnd","_point","plotCounter","defaultConfig","height","background","title","xlabel","ylabel","axisColor","titleColor","xAxisColor","yAxisColor","createSvg","userSelector","opts","container","config","_extends","div","id","body","styleAxis","axisSelection","plotScatter","xData","yData","_createSvg3","scaleLinear","xAxis","yAxis","_inferType","stringValue","parseFloat","_build_df","columns","n_rows","n_cols","_empty_df","_uniq","arr","Set","_flatten","obj","maxDepth","currentDepth","result","_loop","_Object$entries$_i","_Object$entries","_i","keys","forEach","subKey","item","_item$subKey","nested","_isNumber","_toNum","_numeric","_sum","reduce","_mean","_variance","sample","_std","_min","_max","_median","_quantile","pos","base","rest","_skewness","_kurtosis","s2","_corrPearson","ax","by","mx","my","num","vx","vy","_rank","indexed","ranks","_corrSpearman","_phi","_Phi","erf","SQRT2","_normInv","ln","_invErf","_ok","payload","_err","message","df_missing_report","rows","col","miss","column","missing","missing_rate","df_corr","method","numericCols","every","mat","xa","xb","matrix","normal_cdf","mu","sigma","normal_ppf","_tCDF","df","ib","aold","az","qab","qap","qam","bz","tem","ap","bp","bpp","betacf","_dot","A","B","train_linear_regression","_X$0$length","_X$","Xb","row","_addBias","pinv","lambda","At","_transpose","AtA","inv","M","pivot","tmp","pv","_inv","_pinv","yhat","resid","mse","r2","weights","_sigmoid","train_logistic_regression","_opts$learning_rate","_opts$iterations","_opts$l","_X$0$length2","_X$2","lr","learning_rate","iters","iterations","l2","grad","_loop2","wi","proba","pred","acc","accuracy","predict_linear","model_text","_m$model","JSON","parse","stringify","_lowerJson","model","predictions","_unused","predict_logistic","_m$model2","probabilities","classes","_unused2","textOrObj","fromEntries","_ref2","_unused3","metrics_classification","y_true","y_pred","tp","fp","fn","recall","confusion_matrix","f1","metrics_regression","mae","corr_kendall","concordant","discordant","_euclidean","train_knn_classifier","_X$0$length3","_X$3","predict_knn_classifier","X_test","X_train","y_train","distances","xt","dist","label","neighbors","votes","_ref4","_unused4","train_knn_regressor","_X$0$length4","_X$4","predict_knn_regressor","_unused5","_gini","counts","total","_mse_split","_build_tree","depth","max_depth","min_samples","task","leaf","prediction","best","feature","score","n_features","_loop3","_loop4","thresh","left_idx","right_idx","idx","left_y","right_y","_best_split","left_X","right_X","train_decision_tree_classifier","_opts$max_depth","_opts$min_samples_spl","_X$0$length5","_X$5","min_samples_split","tree","train_decision_tree_regressor","_opts$max_depth2","_opts$min_samples_spl2","_X$0$length6","_X$6","_predict_tree","predict_decision_tree","_unused6","_bootstrap_sample","seed","indices","X_boot","y_boot","train_random_forest_classifier","_opts$n_estimators","_opts$max_depth3","_opts$min_samples_spl3","_opts$seed","_X$0$length7","_X$7","n_trees","n_estimators","trees","_bootstrap_sample2","tree_model","train_random_forest_regressor","_opts$n_estimators2","_opts$max_depth4","_opts$min_samples_spl4","_opts$seed2","_X$0$length8","_X$8","_bootstrap_sample3","predict_random_forest_classifier","_unused7","predict_random_forest_regressor","preds","_unused8","predict_naive_bayes","scores","log_prob","priors","stats","val","std","_unused9","standard_scaler_fit","_X$0$length0","_X$0","standard_scaler_transform","scaler_text","X_scaled","preview","_unused0","_tree_feature_importance","importance","traverse","n_samples","df_from_array","includes","df_from_structured_json","jsonData","headers","header","df_from_object","flatten","_ref5","flattened","processedRow","df_get_column","df_describe","cols","targetCols","_df$data$","sorted","median","description","analyzed_columns","statistics","datly","df_from_csv","content","delimiter","skipEmptyLines","lines","_loop8","df_from_json","df_get_columns","df_filter","predicate","filtered","df_sort","av","bv","localeCompare","df_select","newRow","df_info","types","nulls","uniques","colVals","nonNull","typeSet","null_counts","unique_counts","df_head","df_tail","df_concat","dfs","allColumns","flatMap","allRows","_row$c","df_merge","df1","df2","_ref6","_ref6$how","how","_step","colSet","merged","_loop0","row1","row2","_step3","_iterator3","_createForOfIteratorHelperLoose","done","_iterator","_loop9","_step2","some","_iterator2","df_dropna","subset","df_fillna","filled","df_groupby","df_aggregate","grouped","aggMap","keyParts","rowOut","_ref7","vals","allCols","df_apply","newData","_extends2","df_to_csv","df_sample","random","df_unique","df_rename","renameMap","newColumns","df_add_column","colName","_extends3","df_drop","df_explode","_extends4","eda_overview","_desc$columns","_miss$rows","_corr$matrix","desc","corr","summary","correlation","stddeviation","variance","minv","maxv","skewness","kurtosis","corr_pearson","corr_spearman","normal_pdf","binomial_pmf","den","C","binomial_cdf","poisson_pmf","fact","poisson_cdf","t_test_independent","equal_var","se","ma","mb","va","vb","statistic","p_value","means","group_a","group_b","z_test_one_sample","mu0","alpha","moe","ci_lower","ci_upper","confidence","extra","sample_mean","hypothesized_mean","sigma_used","effect_size","chi_square_independence","table","rowS","colS","N","chi","expected","chi_square_cdf","observed","dof","anova_oneway","ns","overall","flat","ssb","ssw","dfb","dfw","F","between","within","f_cdf","group_means","grand_mean","train_test_split","test_size","ntest","test_idx","train_idx","y_test","sizes","train","x_train","t_test_paired","diffs","md","mean_difference","t_test_one_sample","shapiro_wilk","ss","note","jarque_bera","levene_test","medians","zs","allz","overall_median","df_between","df_within","kruskal_wallis","all","len","rsum","_ref3","mann_whitney","combined","U1","U","z_score","wilcoxon_signed_rank","absDiffs","Wplus","chi_square_goodness","obs","confidence_interval_mean","margin","parameter","upper","confidence_interval_proportion","successes","proportion","confidence_interval_variance","chi_lower","confidence_interval_difference","diff","difference","corr_partial","rxy","rxz","ryz","rxy_z","controlling_for","corr_matrix_all","pearson","spearman","kendall","_lowerJson$value","train_naive_bayes","_X$0$length9","_X$9","minmax_scaler_fit","_X$0$length1","_X$1","minmax_scaler_transform","_unused1","train_pca","n_components","_X$0$length10","_X$10","X_centered","cov","components","_loop5","_loop6","v_new","norm","iter","transform_pca","X_transformed","comp","_unused10","train_kmeans","_opts$max_iterations","_opts$seed3","_X$0$length11","_X$11","max_iter","max_iterations","centroids","labels","_loop7","new_labels","cluster_points","pt","inertia","predict_kmeans","cluster_labels","_unused11","ensemble_voting_classifier","models_text","voting","models","mt","all_preds","ensemble_preds","n_models","_unused12","ensemble_voting_regressor","_unused13","cross_validate","model_type","_opts$k_folds","_opts$normalize","_opts$shuffle","_opts$seed4","k_folds","shuffle","fold_size","fold","test_start","test_end","scaler","train_scaled","test_scaled","pred_result","metrics","_opts$k","_opts$k2","mean_score","std_score","min_score","max_score","normalized","shuffled","feature_importance_tree","all_importance","avg_importance","imp","_unused14","outliers_iqr","q1","q3","iqr","outliers","lower_bound","upper_bound","n_outliers","outlier_indices","outlier_values","outliers_zscore","zscores","moving_average","exponential_smoothing","smoothed","autocorrelation","lag","plotHistogram","_createSvg","d3Histogram","plotBoxplot","_createSvg2","scaleBand","allValues","minVal","maxVal","xPos","boxWidth","plotLine","_createSvg4","lineWidth","showPoints","plotBar","categories","_createSvg5","plotPie","_createSvg6","radius","scaleOrdinal","arcs","sortValues","pie","pa","d3Pie","pieGen","arcGen","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","intersect","ay","bx","kc","lc","centroid","d3Arc","showLabels","plotHeatmap","_createSvg7","scaleSequential","cells","showValues","plotViolin","_createSvg8","dataGroups","maxLen","scaleW","areaGen","mirrored","g2","plotDensity","kernel","_createSvg9","density","V","plotQQ","c1","c2","c3","c4","c5","c6","d3","d4","normalQuantile","plotParallel","dimensions","_createSvg0","scalePoint","dim","lineGen","plotPairplot","gap","totalSize","containerSel","colX","colY","plotMultiline","series","_createSvg1","allX","allY","legend"],"mappings":"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"}