forked from susielu/d3-legend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindexRollup.js.map
1 lines (1 loc) · 51.1 KB
/
indexRollup.js.map
1
{"version":3,"file":"indexRollup.js","sources":["src/legend.js","src/color.js","src/size.js","src/symbol.js","src/helpers.js","index.js"],"sourcesContent":["import { select } from 'd3-selection'\n\nconst d3_identity = (d) => d\n\nconst d3_reverse = (arr) => {\n const mirror = [];\n for (let i = 0, l = arr.length; i < l; i++) {\n mirror[i] = arr[l-i-1];\n }\n return mirror;\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst d3_textWrapping = (text, width) => {\n text.each(function() {\n var text = select(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.2, //ems\n y = text.attr(\"y\"),\n dy = parseFloat(text.attr(\"dy\")) || 0,\n tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", dy + \"em\");\n\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\").text(word);\n }\n }\n });\n}\n\n\nconst d3_mergeLabels = (gen=[], labels, domain, range) => {\n\n if (typeof labels === \"object\"){\n if(labels.length === 0) return gen;\n\n let i = labels.length;\n for (; i < gen.length; i++) {\n labels.push(gen[i]);\n }\n return labels;\n } else if (typeof labels === \"function\") {\n const customLabels = []\n const genLength = gen.length\n for (let i=0; i < genLength; i++){\n customLabels.push(labels({\n i,\n genLength,\n generatedLabels : gen,\n domain,\n range }))\n }\n return customLabels\n }\n\n return gen;\n }\n\nconst d3_linearLegend = (scale, cells, labelFormat) => {\n let data = [];\n\n if (cells.length > 1){\n data = cells;\n\n } else {\n const domain = scale.domain(),\n increment = (domain[domain.length - 1] - domain[0])/(cells - 1)\n let i = 0;\n\n for (; i < cells; i++){\n data.push(domain[0] + i*increment);\n }\n }\n\n const labels = data.map(labelFormat);\n return {data: data,\n labels: labels,\n feature: d => scale(d)};\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map( d => {\n const invert = scale.invertExtent(d);\n return labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n });\n\n return {data: scale.range(),\n labels: labels,\n feature: d3_identity\n };\n}\n\nconst d3_ordinalLegend= scale => ({data: scale.domain(),\n labels: scale.domain(),\n feature: d => scale(d) }\n)\n\nconst d3_cellOver = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellover\", obj, d);\n}\n\nconst d3_cellOut = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellout\", obj, d);\n}\n\nconst d3_cellClick = (cellDispatcher, d, obj) => {\n cellDispatcher.call(\"cellclick\", obj, d);\n}\n\n\nexport default {\n\n d3_drawShapes: (shape, shapes, shapeHeight, shapeWidth, shapeRadius, path) => {\n if (shape === \"rect\"){\n shapes.attr(\"height\", shapeHeight)\n .attr(\"width\", shapeWidth);\n\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n\n } else if (shape === \"line\") {\n shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n\n } else if (shape === \"path\") {\n shapes.attr(\"d\", path);\n }\n },\n\n d3_addText: function (svg, enter, labels, classPrefix, labelWidth){\n enter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n const text = svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity);\n\n if (labelWidth){\n svg.selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function (scale, ascending, cells, labels, labelFormat, labelDelimiter){\n const type = scale.invertExtent ?\n d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ?\n d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\n //for d3.scaleSequential that doesn't have a range function\n const range = scale.range && scale.range() || scale.domain() \n type.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range);\n\n if (ascending) {\n type.labels = d3_reverse(type.labels);\n type.data = d3_reverse(type.data);\n }\n\n return type;\n },\n\n d3_filterCells: (type, cellFilter) => {\n let filterCells = type.data.map((d, i) => ({ data: d, label: type.labels[i] }))\n .filter(cellFilter)\n const dataValues = filterCells.map(d => d.data)\n const labelValues = filterCells.map(d => d.label)\n type.data = type.data.filter(d => dataValues.indexOf(d) !== -1)\n type.labels = type.labels.filter(d => labelValues.indexOf(d) !== -1)\n return type\n },\n\n d3_placement: (orient, cell, cellTrans, text, textTrans, labelAlign) => {\n cell.attr(\"transform\", cellTrans);\n text.attr(\"transform\", textTrans);\n if (orient === \"horizontal\"){\n text.style(\"text-anchor\", labelAlign);\n }\n },\n\n d3_addEvents: function(cells, dispatcher){\n cells.on(\"mouseover.legend\", function (d) { d3_cellOver(dispatcher, d, this); })\n .on(\"mouseout.legend\", function (d) { d3_cellOut(dispatcher, d, this); })\n .on(\"click.legend\", function (d) { d3_cellClick(dispatcher, d, this); });\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\"){\n\n const titleText = svg.selectAll('text.' + classPrefix + 'legendTitle');\n\n titleText.data([title])\n .enter()\n .append('text')\n .attr('class', classPrefix + 'legendTitle');\n\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .text(title)\n\n if (titleWidth){\n svg.selectAll('text.' + classPrefix + 'legendTitle')\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select('.' + classPrefix + 'legendCells')\n const yOffset = svg.select('.' + classPrefix + 'legendTitle').nodes()\n .map(d => d.getBBox().height)[0],\n\n xOffset = -cellsSvg.nodes().map(function(d) { return d.getBBox().x})[0];\n cellsSvg.attr('transform', 'translate(' + xOffset + ',' + (yOffset) + ')');\n\n }\n }\n}\n","import helper from './legend';\nimport { dispatch } from 'd3-dispatch';\nimport { scaleLinear } from 'd3-scale';\nimport { format } from 'd3-format';\nimport { sum } from 'd3-array';\n\nexport default function color(){\n\n let scale = scaleLinear(),\n shape = \"rect\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 2,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n useClass = false,\n title = \"\",\n labelFormat = format(\".01f\"),\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = \"to\",\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\");\n\n function legend(svg) {\n\n const type = helper.d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter),\n legendG = svg.selectAll('g').data([scale]);\n\n legendG.enter().append('g').attr('class', classPrefix + 'legendCells');\n \n if (cellFilter){\n helper.d3_filterCells(type, cellFilter)\n }\n \n let cell = svg.select('.' + classPrefix + 'legendCells')\n .selectAll(\".\" + classPrefix + \"cell\").data(type.data)\n\n const cellEnter = cell.enter().append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n const shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape);\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n cell.exit().transition().style(\"opacity\", 0).remove();\n\n helper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path);\n helper.d3_addText( svg, cellEnter, type.labels, classPrefix, labelWrap)\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n // sets placement\n const text = cell.selectAll(\"text\"),\n textSize = text.nodes().map(d => d.getBBox()),\n shapeSize = shapes.nodes().map( d => d.getBBox());\n //sets scale\n //everything is fill except for line which is stroke,\n if (!useClass){\n if (shape == \"line\"){\n shapes.style(\"stroke\", type.feature);\n } else {\n shapes.style(\"fill\", type.feature);\n }\n } else {\n shapes.attr(\"class\", d => `${classPrefix}swatch ${type.feature(d)}`);\n }\n\n let cellTrans,\n textTrans,\n textAlign = (labelAlign == \"start\") ? 0 : (labelAlign == \"middle\") ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\"){\n const cellSize = textSize.map((d, i) => Math.max(d.height, shapeSize[i].height))\n\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i));\n return `translate(0, ${height + i*shapePadding})`}\n\n textTrans = (d,i) => `translate( ${(shapeSize[i].width + shapeSize[i].x +\n labelOffset)}, ${(shapeSize[i].y + shapeSize[i].height/2 + 5)})`;\n\n } else if (orient === \"horizontal\"){\n cellTrans = (d,i) => `translate(${(i * (shapeSize[i].width + shapePadding))},0)`\n textTrans = (d,i) => `translate(${(shapeSize[i].width*textAlign + shapeSize[i].x)},\n ${(shapeSize[i].height + shapeSize[i].y + labelOffset + 8)})`;\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n\n cell.transition().style(\"opacity\", 1);\n\n }\n\n legend.scale = function(_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function(_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2 ){\n cells = _;\n }\n return legend;\n };\n\n legend.cellFilter = function(_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n\n legend.shape = function(_, d) {\n if (!arguments.length) return shape;\n if (_ == \"rect\" || _ == \"circle\" || _ == \"line\" || (_ == \"path\" && (typeof d === 'string')) ){\n shape = _;\n path = d;\n }\n return legend;\n };\n\n legend.shapeWidth = function(_) {\n if (!arguments.length) return shapeWidth;\n shapeWidth = +_;\n return legend;\n };\n\n legend.shapeHeight = function(_) {\n if (!arguments.length) return shapeHeight;\n shapeHeight = +_;\n return legend;\n };\n\n legend.shapeRadius = function(_) {\n if (!arguments.length) return shapeRadius;\n shapeRadius = +_;\n return legend;\n };\n\n legend.shapePadding = function(_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function(_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function(_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return labelFormat;\n labelFormat = typeof(_) === 'string' ? format(_) : _;\n return legend;\n };\n\n legend.labelOffset = function(_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function(_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function(_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.useClass = function(_) {\n if (!arguments.length) return useClass;\n if (_ === true || _ === false){\n useClass = _;\n }\n return legend;\n };\n\n legend.orient = function(_){\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function(_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function(_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function(_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function(_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.textWrap = function(_) {\n if (!arguments.length) return textWrap;\n textWrap = _;\n return legend;\n }\n\n legend.on = function(){\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value;\n }\n\n return legend;\n\n};\n","import helper from './legend';\nimport { dispatch } from 'd3-dispatch';\nimport { scaleLinear } from 'd3-scale';\nimport { format } from 'd3-format';\nimport { sum, max } from 'd3-array';\n\nexport default function size(){\n\n let scale = scaleLinear(),\n shape = \"rect\",\n shapeWidth = 15,\n shapePadding = 2,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n title = \"\",\n labelFormat = format(\".01f\"),\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = \"to\",\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\");\n\n function legend(svg){\n\n const type = helper.d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter),\n legendG = svg.selectAll('g').data([scale]);\n\n if (cellFilter){\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG.enter().append('g').attr('class', classPrefix + 'legendCells');\n\n let cell = svg.select('.' + classPrefix + 'legendCells')\n .selectAll(\".\" + classPrefix + \"cell\").data(type.data)\n const cellEnter = cell.enter().append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n const shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape);\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n cell.exit().transition().style(\"opacity\", 0).remove();\n\n //creates shape\n if (shape === \"line\"){\n helper.d3_drawShapes(shape, shapes, 0, shapeWidth);\n shapes.attr(\"stroke-width\", type.feature);\n } else {\n helper.d3_drawShapes(shape, shapes, type.feature, type.feature, type.feature, path);\n }\n\n const text = helper.d3_addText( svg, cellEnter, type.labels, classPrefix, labelWrap)\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n //sets placement\n\n const textSize = text.nodes().map( d => d.getBBox()),\n shapeSize = shapes.nodes().map(\n (d, i) => {\n const bbox = d.getBBox()\n const stroke = scale(type.data[i]);\n\n if (shape === \"line\" && orient === \"horizontal\") {\n bbox.height = bbox.height + stroke;\n } else if (shape === \"line\" && orient === \"vertical\"){\n bbox.width = bbox.width;\n }\n return bbox;\n });\n //console.log('SHAPESIZE')\n const maxH = max(shapeSize, d => d.height + d.y),\n maxW = max(shapeSize, d => d.width + d.x);\n\n let cellTrans,\n textTrans,\n textAlign = (labelAlign == \"start\") ? 0 : (labelAlign == \"middle\") ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\"){\n const cellSize = textSize.map((d, i) => Math.max(d.height, shapeSize[i].height))\n const y = shape == \"circle\" || shape == \"line\" ? shapeSize[0].height/2 : 0\n cellTrans = (d,i) => {\n const height = sum(cellSize.slice(0, i));\n \n return `translate(0, ${(y + height + i*shapePadding)})`};\n\n textTrans = (d,i) => `translate( ${(maxW + labelOffset)},\n ${(shapeSize[i].y + shapeSize[i].height/2 + 5)})`;\n\n } else if (orient === \"horizontal\"){\n cellTrans = (d,i) => {\n const width = sum(shapeSize.slice(0, i), d => d.width);\n const y = shape == \"circle\" || shape == \"line\" ? maxH/2 : 0\n return `translate(${(width + i*shapePadding)}, ${y})`; };\n\n textTrans = (d,i) => {\n return `translate( ${(shapeSize[i].width*textAlign + shapeSize[i].x)},\n ${(maxH + labelOffset )})`};\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n\n cell.transition().style(\"opacity\", 1);\n\n }\n\n legend.scale = function(_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function(_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2 ){\n cells = _;\n }\n return legend;\n };\n\n legend.cellFilter = function(_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n \n legend.shape = function(_, d) {\n if (!arguments.length) return shape;\n if (_ == \"rect\" || _ == \"circle\" || _ == \"line\" ){\n shape = _;\n path = d;\n }\n return legend;\n };\n\n legend.shapeWidth = function(_) {\n if (!arguments.length) return shapeWidth;\n shapeWidth = +_;\n return legend;\n };\n\n legend.shapePadding = function(_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function(_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function(_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return labelFormat;\n labelFormat = typeof(_) === 'string' ? format(_) : _;\n return legend;\n };\n\n legend.labelOffset = function(_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function(_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function(_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.orient = function(_){\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function(_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function(_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function(_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function(_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.on = function(){\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value;\n }\n\n return legend;\n\n};\n","import helper from './legend';\nimport { dispatch } from 'd3-dispatch';\nimport { scaleLinear } from 'd3-scale';\nimport { format } from 'd3-format';\nimport { sum, max } from 'd3-array';\n\nexport default function symbol(){\n\n let scale = scaleLinear(),\n shape = \"path\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 5,\n cells = [5],\n cellFilter,\n labels = [],\n classPrefix = \"\",\n title = \"\",\n labelFormat = format(\".01f\"),\n labelAlign = \"middle\",\n labelOffset = 10,\n labelDelimiter = \"to\",\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\");\n\n function legend(svg){\n\n const type = helper.d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter),\n legendG = svg.selectAll('g').data([scale]);\n\n if (cellFilter){\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG.enter().append('g').attr('class', classPrefix + 'legendCells');\n\n let cell = svg.select('.' + classPrefix + 'legendCells')\n .selectAll(\".\" + classPrefix + \"cell\").data(type.data)\n const cellEnter = cell.enter().append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n const shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape);\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n //remove old shapes\n cell.exit().transition().style(\"opacity\", 0).remove();\n\n helper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, type.feature);\n helper.d3_addText( svg, cellEnter, type.labels, classPrefix, labelWrap)\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n // sets placement\n const text = cell.selectAll(\"text\"),\n textSize = text.nodes().map(d => d.getBBox()),\n shapeSize = shapes.nodes().map( d => d.getBBox());\n\n const maxH = max(shapeSize, d => d.height),\n maxW = max(shapeSize, d => d.width);\n\n let cellTrans,\n textTrans,\n textAlign = (labelAlign == \"start\") ? 0 : (labelAlign == \"middle\") ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\"){\n const cellSize = textSize.map((d, i) => Math.max(maxH, d.height))\n\n cellTrans = (d,i) => {\n const height = sum(cellSize.slice(0, i));\n return `translate(0, ${(height + (i *shapePadding))} )`};\n textTrans = (d,i) => `translate( ${(maxW + labelOffset)},\n ${(shapeSize[i].y + shapeSize[i].height/2 + 5)})`;\n\n } else if (orient === \"horizontal\"){\n cellTrans = (d,i) => `translate( ${(i * (maxW + shapePadding))},0)`;\n textTrans = (d,i) => `translate( ${(shapeSize[i].width*textAlign + shapeSize[i].x)},\n ${(maxH + labelOffset )})`;\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n cell.transition().style(\"opacity\", 1);\n\n }\n\n\n legend.scale = function(_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function(_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2 ){\n cells = _;\n }\n return legend;\n };\n \n legend.cellFilter = function(_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n\n legend.shapePadding = function(_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function(_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function(_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return labelFormat;\n labelFormat = typeof(_) === 'string' ? format(_) : _;\n return legend;\n };\n\n legend.labelOffset = function(_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function(_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function(_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.orient = function(_){\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function(_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function(_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function(_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function(_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.on = function(){\n const value = legendDispatcher.on.apply(legendDispatcher, arguments)\n return value === legendDispatcher ? legend : value;\n }\n\n return legend;\n\n};\n","export const thresholdLabels = function({ i, genLength, generatedLabels }){\n\n if (i === 0 ){\n return generatedLabels[i].replace('NaN to', 'Less than')\n } else if (i === genLength - 1) {\n return `More than ${generatedLabels[genLength - 1].replace(' to NaN', '')}`\n }\n return generatedLabels[i]\n}\n\nexport default {\n thresholdLabels\n}\n","import legendColor from './src/color'\nimport legendSize from './src/size'\nimport legendSymbol from './src/symbol'\nimport legendHelpers from './src/helpers'\n\nexport { legendColor, legendSize, legendSymbol, legendHelpers }\n\nexport default {\n legendColor,\n legendSize,\n legendSymbol,\n legendHelpers\n};\n"],"names":["d3_identity","d","d3_reverse","arr","mirror","i","l","length","d3_textWrapping","text","width","each","select","words","split","reverse","word","line","lineNumber","lineHeight","attr","dy","parseFloat","tspan","append","pop","push","join","node","getComputedTextLength","d3_mergeLabels","gen","labels","domain","range","customLabels","genLength","d3_linearLegend","scale","cells","labelFormat","data","increment","map","d3_quantLegend","labelDelimiter","invert","invertExtent","d3_ordinalLegend","d3_cellOver","cellDispatcher","obj","call","d3_cellOut","d3_cellClick","shape","shapes","shapeHeight","shapeWidth","shapeRadius","path","svg","enter","classPrefix","labelWidth","selectAll","ascending","type","ticks","cellFilter","filterCells","label","filter","dataValues","labelValues","indexOf","orient","cell","cellTrans","textTrans","labelAlign","style","dispatcher","on","title","titleWidth","titleText","cellsSvg","yOffset","nodes","getBBox","height","xOffset","x","color","scaleLinear","shapePadding","useClass","format","labelOffset","labelWrap","legendDispatcher","dispatch","legend","helper","d3_calcType","legendG","d3_filterCells","cellEnter","d3_addEvents","exit","transition","remove","d3_drawShapes","d3_addText","merge","textSize","shapeSize","feature","textAlign","cellSize","Math","max","sum","slice","y","d3_placement","d3_title","_","arguments","toLowerCase","textWrap","value","apply","size","bbox","stroke","maxH","maxW","symbol","thresholdLabels","generatedLabels","replace"],"mappings":"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"}