-
Notifications
You must be signed in to change notification settings - Fork 104
/
indexRollup.js.map
1 lines (1 loc) · 54.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\"\nimport { format, formatPrefix } from \"d3-format\"\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\n .text()\n .split(/\\s+/)\n .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\n .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\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + dy + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst d3_mergeLabels = (gen = [], labels, domain, range, labelDelimiter) => {\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(\n labels({\n i,\n genLength,\n generatedLabels: gen,\n domain,\n range,\n labelDelimiter\n })\n )\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 } 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 {\n data: data,\n labels: labels,\n feature: d => scale(d)\n }\n}\n\nconst d3_quantLegend = (scale, labelFormat, labelDelimiter) => {\n const labels = scale.range().map(d => {\n const invert = scale.invertExtent(d)\n return (\n labelFormat(invert[0]) +\n \" \" +\n labelDelimiter +\n \" \" +\n labelFormat(invert[1])\n )\n })\n\n return {\n data: scale.range(),\n labels: labels,\n feature: d3_identity\n }\n}\n\nconst d3_ordinalLegend = scale => ({\n 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\nexport default {\n d3_drawShapes: (\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n ) => {\n if (shape === \"rect\") {\n shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth)\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius)\n } else if (shape === \"line\") {\n shapes\n .attr(\"x1\", 0)\n .attr(\"x2\", shapeWidth)\n .attr(\"y1\", 0)\n .attr(\"y2\", 0)\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\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .data(labels)\n .text(d3_identity)\n\n if (labelWidth) {\n svg\n .selectAll(`g.${classPrefix}cell text.${classPrefix}label`)\n .call(d3_textWrapping, labelWidth)\n }\n\n return text\n },\n\n d3_calcType: function(\n scale,\n ascending,\n cells,\n labels,\n labelFormat,\n labelDelimiter\n ) {\n const type = scale.invertExtent\n ? d3_quantLegend(scale, labelFormat, labelDelimiter)\n : scale.ticks\n ? d3_linearLegend(scale, cells, labelFormat)\n : 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(\n type.labels,\n labels,\n scale.domain(),\n range,\n labelDelimiter\n )\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\n .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\n .on(\"mouseover.legend\", function(d) {\n d3_cellOver(dispatcher, d, this)\n })\n .on(\"mouseout.legend\", function(d) {\n d3_cellOut(dispatcher, d, this)\n })\n .on(\"click.legend\", function(d) {\n d3_cellClick(dispatcher, d, this)\n })\n },\n\n d3_title: (svg, title, classPrefix, titleWidth) => {\n if (title !== \"\") {\n const titleText = svg.selectAll(\"text.\" + classPrefix + \"legendTitle\")\n\n titleText\n .data([title])\n .enter()\n .append(\"text\")\n .attr(\"class\", classPrefix + \"legendTitle\")\n\n svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title)\n\n if (titleWidth) {\n svg\n .selectAll(\"text.\" + classPrefix + \"legendTitle\")\n .call(d3_textWrapping, titleWidth)\n }\n\n const cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\")\n const yOffset = svg\n .select(\".\" + classPrefix + \"legendTitle\")\n .nodes()\n .map(d => d.getBBox().height)[0],\n xOffset = -cellsSvg.nodes().map(function(d) {\n return d.getBBox().x\n })[0]\n cellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\")\n }\n },\n\n d3_defaultLocale: {\n format,\n formatPrefix\n },\n\n d3_defaultFormatSpecifier: \".01f\",\n\n d3_defaultDelimiter: \"to\"\n}\n","import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\n\nimport { sum } from \"d3-array\"\n\nexport default function color() {\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 locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\")\n\n function legend(svg) {\n const type = helper.d3_calcType(\n scale,\n ascending,\n cells,\n labels,\n locale.format(specifier),\n labelDelimiter\n ),\n legendG = svg.selectAll(\"g\").data([scale])\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\n\n const cellEnter = cell\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n let shapes = svg\n .selectAll(\n \"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\"\n )\n .data(type.data)\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n cell\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n\n shapes = shapes.merge(shapes)\n\n helper.d3_drawShapes(\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n path\n )\n const text = helper.d3_addText(\n svg,\n cellEnter,\n type.labels,\n classPrefix,\n labelWrap\n )\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 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) =>\n Math.max(d.height, shapeSize[i].height)\n )\n\n cellTrans = (d, i) => {\n const height = sum(cellSize.slice(0, i))\n return `translate(0, ${height + i * shapePadding})`\n }\n\n textTrans = (d, i) =>\n `translate( ${shapeSize[i].width +\n shapeSize[i].x +\n labelOffset}, ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) =>\n `translate(${i * (shapeSize[i].width + shapePadding)},0)`\n textTrans = (d, i) => `translate(${shapeSize[i].width * textAlign +\n 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 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 (\n _ == \"rect\" ||\n _ == \"circle\" ||\n _ == \"line\" ||\n (_ == \"path\" && typeof d === \"string\")\n ) {\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.locale = function(_) {\n if (!arguments.length) return locale\n locale = formatLocale(_)\n return legend\n }\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return legend.locale().format(specifier)\n specifier = formatSpecifier(_)\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","import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\nimport { sum, max } from \"d3-array\"\n\nexport default function size() {\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 locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n path,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\")\n\n function legend(svg) {\n const type = helper.d3_calcType(\n scale,\n ascending,\n cells,\n labels,\n locale.format(specifier),\n labelDelimiter\n ),\n legendG = svg.selectAll(\"g\").data([scale])\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\n const cellEnter = cell\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n let shapes = svg.selectAll(\n \"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\"\n )\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n cell\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes = shapes.merge(shapes)\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(\n shape,\n shapes,\n type.feature,\n type.feature,\n type.feature,\n path\n )\n }\n\n const text = helper.d3_addText(\n svg,\n cellEnter,\n type.labels,\n classPrefix,\n labelWrap\n )\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((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\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) =>\n Math.max(d.height, shapeSize[i].height)\n )\n const y =\n 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\n textTrans = (d, i) => `translate( ${maxW + labelOffset},\n ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\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\n const offset = shape == \"line\" ? maxH / 2 : maxH\n textTrans = (d, i) => {\n return `translate( ${shapeSize[i].width * textAlign + shapeSize[i].x},\n ${offset + labelOffset})`\n }\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 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.locale = function(_) {\n if (!arguments.length) return locale\n locale = formatLocale(_)\n return legend\n }\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return legend.locale().format(specifier)\n specifier = formatSpecifier(_)\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","import helper from \"./legend\"\nimport { dispatch } from \"d3-dispatch\"\nimport { scaleLinear } from \"d3-scale\"\nimport { formatLocale, formatSpecifier } from \"d3-format\"\nimport { sum, max } from \"d3-array\"\n\nexport default function symbol() {\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 locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelAlign = \"middle\",\n labelOffset = 10,\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap,\n orient = \"vertical\",\n ascending = false,\n titleWidth,\n legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\")\n\n function legend(svg) {\n const type = helper.d3_calcType(\n scale,\n ascending,\n cells,\n labels,\n locale.format(specifier),\n labelDelimiter\n ),\n legendG = svg.selectAll(\"g\").data([scale])\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter)\n }\n\n legendG\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"legendCells\")\n\n let cell = svg\n .select(\".\" + classPrefix + \"legendCells\")\n .selectAll(\".\" + classPrefix + \"cell\")\n .data(type.data)\n const cellEnter = cell\n .enter()\n .append(\"g\")\n .attr(\"class\", classPrefix + \"cell\")\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\")\n\n let shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\")\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher)\n\n //remove old shapes\n cell\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes\n .exit()\n .transition()\n .style(\"opacity\", 0)\n .remove()\n shapes = shapes.merge(shapes)\n\n helper.d3_drawShapes(\n shape,\n shapes,\n shapeHeight,\n shapeWidth,\n shapeRadius,\n type.feature\n )\n const text = helper.d3_addText(\n svg,\n cellEnter,\n type.labels,\n classPrefix,\n labelWrap\n )\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 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 }\n textTrans = (d, i) => `translate( ${maxW + labelOffset},\n ${shapeSize[i].y + shapeSize[i].height / 2 + 5})`\n } else if (orient === \"horizontal\") {\n cellTrans = (d, i) => `translate( ${i * (maxW + shapePadding)},0)`\n textTrans = (d, i) => `translate( ${shapeSize[i].width * textAlign +\n 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 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.locale = function(_) {\n if (!arguments.length) return locale\n locale = formatLocale(_)\n return legend\n }\n\n legend.labelFormat = function(_) {\n if (!arguments.length) return legend.locale().format(specifier)\n specifier = formatSpecifier(_)\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","export const thresholdLabels = function({\n i,\n genLength,\n generatedLabels,\n labelDelimiter\n}) {\n if (i === 0) {\n const values = generatedLabels[i].split(` ${labelDelimiter} `)\n return `Less than ${values[1]}`\n } else if (i === genLength - 1) {\n const values = generatedLabels[i].split(` ${labelDelimiter} `)\n return `${values[0]} or more`\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","mirror","i","l","arr","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","labelDelimiter","customLabels","genLength","d3_linearLegend","scale","cells","labelFormat","data","increment","map","d3_quantLegend","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","locale","helper","d3_defaultLocale","specifier","d3_defaultFormatSpecifier","labelOffset","d3_defaultDelimiter","labelWrap","legendDispatcher","dispatch","legend","d3_calcType","format","legendG","d3_filterCells","cellEnter","d3_addEvents","exit","transition","remove","merge","d3_drawShapes","d3_addText","textSize","shapeSize","feature","textAlign","cellSize","Math","max","sum","slice","y","d3_placement","d3_title","_","arguments","formatLocale","formatSpecifier","toLowerCase","textWrap","value","apply","size","bbox","stroke","maxH","maxW","offset","symbol","thresholdLabels","generatedLabels","values"],"mappings":"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"}