{"version":3,"sources":["webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./src/components/Container/Container303030.jsx","webpack:///./src/components/StaticMapImg/StaticMapImg.jsx","webpack:///./src/components/BannerSplit/BannerSplitImage.jsx","webpack:///./src/components/BannerSplit/BannerSplit.jsx","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./src/components/PieChart/PieChart.jsx","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./src/components/DepartmentPage/DepartmentPage.jsx","webpack:///./src/pages/department/{contentfulDepartmentPage.url}.jsx","webpack:///./src/components/ImageBlock/ImageBlock.jsx"],"names":["abs","Math","atan2","cos","max","min","sin","sqrt","epsilon","pi","PI","halfPi","tau","acos","x","asin","arcInnerRadius","d","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","cw","x01","y01","lo","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","context","arc","buffer","r0","apply","this","arguments","a0","a1","da","moveTo","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","lineTo","closePath","centroid","a","_","length","propTypes","as","string","className","items","node","Container303030","props","otherProps","map","item","key","zoom","number","center","any","width","height","fallback","alt","StaticMapImg","apiKey","aria-label","role","style","backgroundImage","image","object","department","latLng","BannerSplitImage","imgContainer","useRef","setWidth","useState","setHeight","loaded","setLoaded","useEffect","R","ceil","current","getBoundingClientRect","ref","fluid","backgroundSize","state","aos","bool","oneOf","children","content","link","bannerImg","subtitle","textColor","title","mapData","isHeader","BannerSplit","Wrapper","Container5050","left","data-aos","ContentfulLink","right","window","innerWidth","defaultProps","b","NaN","data","arrayOf","shape","subDistributionId","isRequired","subDistributionValue","value","colors","size","midAngle","pointPosition","radius","theta","PieChart","chartRef","GLOBAL_TOP_ARR","activeClass","margin","svgWidth","svgHeight","translate","arcGenerator","arcs","identity","sortValues","descending","sort","constant","pie","i","j","k","v","n","array","sum","index","Array","p","pa","colorDomain","usableColors","reduceColors","COLORS","colorScale","scaleOrdinal","domain","range","total","hideLabel","targetId","targetLabel","querySelector","targetLabelLine","allSlices","querySelectorAll","targetPieSlice","forEach","classList","remove","showLabel","labelsToRemove","linesToRemove","opacityToRemove","activeOpacityToRemove","removeClass","add","handleLabelDisplay","contains","viewBox","transform","id","data-id","onMouseEnter","onMouseLeave","fill","y","side","top","includes","round","push","position","textAlign","formatPercentageNice","tabIndex","onClick","onKeyDown","e","code","backgroundColor","sectionTitle1","sectionTitle2","lineChartTitle","racialDataTitle","ctaBanner","datasetInfo","trendsTableTitle","imageBlock","genderDataTitle","relatedArticle","deptList","departmentListingSectionText","additionalPageContent","lastAnalyzed","cityId","formattedFootnotes","DepartmentPage","chartData","setChartData","apiUrl","useChartData","deptId","slug","coordinates","lat","lon","charts","setCharts","dataResponse","useCreateDataArray","method","mapColors","colorMap","chart","undefined","locationid","AOS","init","offset","duration","once","Page","highlightLogo","name","Section","theme","containerModifier","ChartContent","chartProps","page","defaultIndicator","indicatorItems","locationId","defaultBreakdownLabel","Container100","Fragment","timeFrame","related","ImageBlock","isReverse","smallImages","tags","resourceTags","buttonModifier","DepartmentListing","deptListText","dept","Banner","trendsTabelTitle","extractRichText","url","DepartmentTemplate","extractBanner","extractDatasetInfo","datasetInformation","extractResourceItem","footnotes","footnoteItem","ChartData","fluidImage","text","data-aos-delay"],"mappings":"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","file":"component---src-pages-department-contentful-department-page-url-jsx-116694f3d028bffe7926.js","sourcesContent":["export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}","import { path } from \"d3-path\";\nimport constant from \"./constant.js\";\nimport { abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau } from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0,\n y10 = y1 - y0,\n x32 = x3 - x2,\n 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} // Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\n\n\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; // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function () {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n if (!context) context = buffer = path(); // Ensure that the outer radius is always larger than the inner radius.\n\n if (r1 < r0) r = r1, r1 = r0, r0 = r; // Is it a point?\n\n if (!(r1 > epsilon)) context.moveTo(0, 0); // 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\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\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; // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n\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;else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;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); // Apply rounded corners?\n\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; // Restrict the corner radius according to the sector angle.\n\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n } // Is the sector collapsed to a line?\n\n\n if (!(da1 > epsilon)) context.moveTo(x01, y01); // 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 context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged?\n\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); // 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 } // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); // 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 context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged?\n\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); // 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 } // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n context.closePath();\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}","import { node, string } from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\nimport \"./container.scss\";\r\n\r\nconst propTypes = {\r\n as: string,\r\n className: string,\r\n items: node,\r\n};\r\n\r\nconst Container303030 = (props) => {\r\n const { className, items, ...otherProps } = props;\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item) => (\r\n
\r\n {item}\r\n
\r\n ))}\r\n \r\n );\r\n};\r\n\r\nContainer303030.propTypes = propTypes;\r\nexport default Container303030;\r\n","import { string, number, any, node } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n key: string,\r\n zoom: number,\r\n center: any,\r\n width: number,\r\n height: number,\r\n fallback: node,\r\n alt: string,\r\n};\r\n\r\nconst StaticMapImg = (props) => {\r\n const { apiKey, zoom, center, width, height, alt } = props;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nStaticMapImg.propTypes = propTypes;\r\nexport default StaticMapImg;\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { object, any } from \"prop-types\";\r\nimport * as R from \"ramda\";\r\nimport StaticMapImg from \"../StaticMapImg/StaticMapImg.jsx\";\r\nimport BackgroundImage from \"gatsby-background-image\";\r\nconst propTypes = { image: object, department: object, latLng: any };\r\n\r\nconst BannerSplitImage = (props) => {\r\n // eslint-disable-next-line react/prop-types\r\n const { image, latLng, department } = props;\r\n const imgContainer = useRef(null);\r\n const [width, setWidth] = useState(0);\r\n const [height, setHeight] = useState(0);\r\n const [loaded, setLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!R.isNil(imgContainer)) {\r\n setLoaded(true);\r\n setHeight(Math.ceil(imgContainer.current.getBoundingClientRect().height));\r\n setWidth(Math.ceil(imgContainer.current.getBoundingClientRect().width));\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n {R.isNil(latLng) ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nBannerSplitImage.propTypes = propTypes;\r\nexport default BannerSplitImage;\r\n","import { bool, node, object, oneOf, string } from \"prop-types\";\r\nimport cx from \"classnames\";\r\nimport Container5050 from \"../Container/Container5050.jsx\";\r\nimport ContentfulLink from \"../ContentfulLink/ContentfulLink.jsx\";\r\nimport BannerSplitImage from \"./BannerSplitImage.jsx\";\r\nimport \"./banner-split.scss\";\r\nconst defaultProps = {};\r\n\r\nconst propTypes = {\r\n aos: bool, // https://github.com/michalsnik/aos\r\n backgroundSize: oneOf([\"\", \"contain\", \"cover\"]),\r\n children: node,\r\n className: string,\r\n content: node,\r\n link: object, // link object for \r\n bannerImg: node,\r\n subtitle: node,\r\n textColor: oneOf([\"Light\", \"Dark\"]),\r\n title: node,\r\n mapData: object,\r\n isHeader: bool,\r\n};\r\n\r\nconst BannerSplit = (props) => {\r\n const {\r\n aos,\r\n backgroundSize,\r\n className,\r\n content,\r\n link,\r\n subtitle,\r\n textColor,\r\n title,\r\n children,\r\n isHeader,\r\n ...otherProps\r\n } = props;\r\n\r\n const Wrapper = (props) =>
;\r\n\r\n return (\r\n \r\n {textColor !== \"Dark\" && backgroundSize === \"cover\" && (\r\n
\r\n )}\r\n \r\n
\r\n {isHeader ? (\r\n

{title}

\r\n ) : (\r\n
{title}
\r\n )}\r\n\r\n {subtitle &&
{subtitle}
}\r\n
\r\n
\r\n {children}\r\n {content ? (\r\n
{content}
\r\n ) : null}\r\n {link ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n
\r\n }\r\n right={\r\n window.innerWidth >= 910 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n false\r\n )\r\n }\r\n >\r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nBannerSplit.defaultProps = defaultProps;\r\nBannerSplit.propTypes = propTypes;\r\nexport default BannerSplit;\r\n","export default function (a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","export default function (d) {\n return d;\n}","/**\r\n * http://bl.ocks.org/dbuezas/9306799\r\n */\r\n\r\nimport * as R from \"ramda\";\r\nimport { scaleOrdinal } from \"d3-scale\";\r\nimport { arc, pie } from \"d3-shape\";\r\n\r\nimport { formatPercentageNice } from \"../../common/format.js\";\r\nimport { COLORS } from \"../../common/chart.js\";\r\nimport \"./pie-chart.scss\";\r\n\r\nimport { useRef } from \"react\";\r\nimport { arrayOf, number, shape, string, object } from \"prop-types\";\r\n\r\nconst propTypes = {\r\n data: arrayOf(\r\n shape({\r\n subDistributionId: string.isRequired,\r\n subDistributionValue: string.isRequired,\r\n value: number.isRequired,\r\n }),\r\n ).isRequired,\r\n colors: object,\r\n size: number,\r\n};\r\n\r\nconst defaultProps = {\r\n size: 150,\r\n};\r\n\r\nfunction midAngle(d) {\r\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n}\r\n\r\nfunction pointPosition(d, radius) {\r\n const theta = midAngle(d) - Math.PI / 2; // have to rotate\r\n return [radius * Math.cos(theta), radius * Math.sin(theta)];\r\n}\r\n\r\nconst PieChart = (props) => {\r\n const { data, size, colors } = props;\r\n const chartRef = useRef();\r\n //this is to prevent overlapping labels\r\n const GLOBAL_TOP_ARR = [];\r\n\r\n const activeClass = \"pie-chart__label--active\";\r\n const activeLineClass = \"pie-chart__line--active\";\r\n const activeSliceClass = \"pie-chart__slice--active\";\r\n const inactiveSliceClass = \"pie-chart__slice--inactive\";\r\n\r\n const width = size;\r\n const height = size;\r\n const radius = Math.min(width, height) / 2;\r\n\r\n const margin = { top: 50, right: 75, bottom: 50, left: 75 };\r\n\r\n const svgWidth = width + margin.left + margin.right;\r\n const svgHeight = height + margin.top + margin.bottom;\r\n const translate = {\r\n x: width / 2 + margin.left,\r\n y: height / 2 + margin.top,\r\n };\r\n\r\n const arcGenerator = arc().innerRadius(0).outerRadius(radius);\r\n\r\n const arcs = pie()\r\n .value((d) => d.value)\r\n .sort(null)(data);\r\n\r\n const colorDomain = data.map((d) => d.subDistributionId);\r\n\r\n const reduceColors = (colors) =>\r\n R.pickAll(\r\n data.map((x) => x.subDistributionValue),\r\n colors,\r\n );\r\n\r\n const usableColors = colors ? R.values(reduceColors(colors)) : COLORS;\r\n const colorScale = scaleOrdinal().domain(colorDomain).range(usableColors);\r\n\r\n const total = R.compose(R.sum, R.pluck(\"value\"))(data);\r\n\r\n const hideLabel = (targetId) => {\r\n const targetLabel = chartRef.current.querySelector(`#${targetId}`);\r\n const targetLabelLine = chartRef.current.querySelector(`#line-${targetId}`);\r\n const allSlices = chartRef.current.querySelectorAll(\".pie-chart__slice\");\r\n const targetPieSlice = chartRef.current.querySelector(`#slice-${targetId}`);\r\n\r\n allSlices.forEach((x) => x.classList.remove(inactiveSliceClass));\r\n targetPieSlice.classList.remove(activeSliceClass);\r\n\r\n targetLabel.classList.remove(activeClass);\r\n targetLabelLine.classList.remove(activeLineClass);\r\n };\r\n\r\n const showLabel = (targetId) => {\r\n const labelsToRemove = chartRef.current.querySelectorAll(`.${activeClass}`);\r\n\r\n const linesToRemove = chartRef.current.querySelectorAll(\r\n `.${activeLineClass}`,\r\n );\r\n\r\n const opacityToRemove = chartRef.current.querySelectorAll(\r\n `.${inactiveSliceClass}`,\r\n );\r\n\r\n const activeOpacityToRemove = chartRef.current.querySelectorAll(\r\n `.${activeSliceClass}`,\r\n );\r\n\r\n labelsToRemove.forEach((x) => x.removeClass(activeClass));\r\n linesToRemove.forEach((x) => x.removeClass(activeLineClass));\r\n opacityToRemove.forEach((x) => x.removeClass(inactiveSliceClass));\r\n activeOpacityToRemove.forEach((x) => x.removeClass(activeSliceClass));\r\n\r\n const targetLabel = chartRef.current.querySelector(`#${targetId}`);\r\n const targetLabelLine = chartRef.current.querySelector(`#line-${targetId}`);\r\n const allSlices = chartRef.current.querySelectorAll(\".pie-chart__slice\");\r\n const targetPieSlice = chartRef.current.querySelector(`#slice-${targetId}`);\r\n\r\n allSlices.forEach((x) => x.classList.add(inactiveSliceClass));\r\n targetPieSlice.classList.add(activeSliceClass);\r\n targetLabel.classList.add(activeClass);\r\n targetLabelLine.classList.add(activeLineClass);\r\n };\r\n\r\n const handleLabelDisplay = (targetId) => {\r\n const targetLabel = chartRef.current.querySelector(`#${targetId}`);\r\n targetLabel.classList.contains(activeClass)\r\n ? hideLabel(targetId)\r\n : showLabel(targetId);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {arcs.map((d) => {\r\n return (\r\n \r\n showLabel(`id${d.data.subDistributionId}`)\r\n }\r\n onMouseLeave={() =>\r\n hideLabel(`id${d.data.subDistributionId}`)\r\n }\r\n key={d.data.subDistributionId}\r\n d={arcGenerator(d)}\r\n fill={colorScale(d.data.subDistributionId)}\r\n />\r\n );\r\n })}\r\n \r\n \r\n {arcs.map((d, k) => {\r\n const yOffset = k % 2 == 0 ? -3 : 0;\r\n const [x1, y1] = pointPosition(d, radius + 5);\r\n const [x2, y2] = pointPosition(d, radius + 20);\r\n\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n\r\n {/* labelTopArr, setlabelTopArr */}\r\n
\r\n {arcs.map((d, k) => {\r\n const [x, y] = pointPosition(d, radius + 40);\r\n // const xOffset = x + (midAngle(d) < Math.PI ? 10 : -10);\r\n const yOffset = k % 2 == 0 ? y - 5 : y + 5;\r\n const getAngle = (d) => {\r\n return ((180 / Math.PI) * (d.startAngle + d.endAngle)) / 2 - 90;\r\n };\r\n const side = midAngle(d) < Math.PI ? \"right\" : \"left\";\r\n\r\n const hasOverlap = GLOBAL_TOP_ARR.includes(Math.round(y));\r\n //if y is already in the array (going to overlap), check if it's positive or negative to add/subtract 16 to clear the neighboring label\r\n const top = hasOverlap ? (y > 0 ? y + 16 : y - 16) : y;\r\n GLOBAL_TOP_ARR.push(Math.round(top));\r\n\r\n return (\r\n \r\n {d.data.subDistributionValue} (\r\n {formatPercentageNice(d.data.value / total)})\r\n
\r\n );\r\n })}\r\n
\r\n \r\n
\r\n {arcs.map((d) => {\r\n return (\r\n \r\n handleLabelDisplay(`id${d.data.subDistributionId}`)\r\n }\r\n onKeyDown={(e) => {\r\n e.code === \"Enter\" &&\r\n handleLabelDisplay(`id${d.data.subDistributionId}`);\r\n }}\r\n onMouseEnter={() => showLabel(`id${d.data.subDistributionId}`)}\r\n onMouseLeave={() => hideLabel(`id${d.data.subDistributionId}`)}\r\n >\r\n \r\n
{d.data.subDistributionValue}
\r\n\r\n
\r\n {formatPercentageNice(d.data.value / total)}\r\n
\r\n
\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nPieChart.defaultProps = defaultProps;\r\nPieChart.propTypes = propTypes;\r\nexport default PieChart;\r\n","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\";\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 } // Optionally sort the arcs by previously-computed values or by data.\n\n\n if (sortValues != null) index.sort(function (i, j) {\n return sortValues(arcs[i], arcs[j]);\n });else if (sort != null) index.sort(function (i, j) {\n return sort(data[i], data[j]);\n }); // Compute the arcs! They are stored in the original data's order.\n\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}","import React, { useEffect, useState } from \"react\";\r\nimport { object, array, string } from \"prop-types\";\r\nimport Container100 from \"../Container/Container100.jsx\";\r\nimport Container303030 from \"../Container/Container303030.jsx\";\r\nimport BannerSplit from \"../BannerSplit/BannerSplit.jsx\";\r\nimport Banner from \"../Banner/Banner.jsx\";\r\nimport Page from \"../Page/Page.jsx\";\r\nimport Section from \"../Section/Section.jsx\";\r\nimport ImageBlock from \"../ImageBlock/ImageBlock.jsx\";\r\nimport ChartContent from \"../ChartContent/ChartContent.jsx\";\r\nimport DepartmentListing from \"../DepartmentListing/DepartmentListing.jsx\";\r\nimport PieChart from \"../PieChart/PieChart.jsx\";\r\nimport { useCreateDataArray } from \"../../common/useFetchData.js\";\r\nimport * as R from \"ramda\";\r\nimport \"aos/dist/aos.css\";\r\nimport AOS from \"aos\";\r\nimport \"./department-page.scss\";\r\nimport { useChartData } from \"../../common/ChartData.jsx\";\r\nimport { COLORS } from \"../../common/chart.js\";\r\n\r\nconst propTypes = {\r\n department: object,\r\n image: object,\r\n sectionTitle1: array,\r\n sectionTitle2: array,\r\n lineChartTitle: array,\r\n racialDataTitle: array,\r\n ctaBanner: object,\r\n datasetInfo: object,\r\n trendsTableTitle: array,\r\n imageBlock: object,\r\n genderDataTitle: array,\r\n relatedArticle: array,\r\n deptList: array,\r\n departmentListingSectionText: array,\r\n additionalPageContent: array,\r\n id: string,\r\n lastAnalyzed: string,\r\n cityId: object,\r\n formattedFootnotes: array,\r\n};\r\n\r\nconst DepartmentPage = (props) => {\r\n const {\r\n id,\r\n department,\r\n image,\r\n sectionTitle1,\r\n sectionTitle2,\r\n racialDataTitle,\r\n ctaBanner,\r\n lineChartTitle,\r\n datasetInfo,\r\n genderDataTitle,\r\n trendsTableTitle,\r\n relatedArticle,\r\n departmentListingSectionText,\r\n deptList,\r\n additionalPageContent,\r\n lastAnalyzed,\r\n cityId,\r\n formattedFootnotes,\r\n } = props;\r\n const { chartData, setChartData, apiUrl } = useChartData();\r\n\r\n const deptId = cityId?.slug;\r\n\r\n const latLng = department?.coordinates\r\n ? [department.coordinates.lat, department.coordinates.lon]\r\n : null;\r\n const [charts, setCharts] = useState(false);\r\n const dataResponse = useCreateDataArray(\r\n [\r\n `${apiUrl}/pie-chart?indicator=201&timeframeid=1&locationid=${deptId}`,\r\n `${apiUrl}/pie-chart?indicator=201&timeframeid=2&locationid=${deptId}`,\r\n `${apiUrl}/pie-chart?indicator=201&timeframeid=3&locationid=${deptId}`,\r\n `${apiUrl}/pie-chart?indicator=202&timeframeid=1&locationid=${deptId}`,\r\n `${apiUrl}/pie-chart?indicator=202&timeframeid=2&locationid=${deptId}`,\r\n `${apiUrl}/pie-chart?indicator=202&timeframeid=3&locationid=${deptId}`,\r\n ],\r\n { method: \"GET\" },\r\n );\r\n\r\n const { data } = dataResponse;\r\n\r\n const mapColors = (charts) => {\r\n const colorMap = {};\r\n //finding the max number of sub indicators to map colors to\r\n const maxLength = charts\r\n .map((x) => x.data)\r\n .sort((a, b) => b.length - a.length);\r\n maxLength[0].map((chart, i) => {\r\n return (colorMap[chart.subDistributionValue] = COLORS[i]);\r\n });\r\n return colorMap;\r\n };\r\n\r\n useEffect(() => {\r\n if (deptId !== undefined && deptId !== chartData.locationid) {\r\n setChartData({\r\n locationid: deptId,\r\n });\r\n }\r\n }, [data, deptId]);\r\n\r\n useEffect(() => {\r\n // https://github.com/michalsnik/aos\r\n // initialize animation on scroll when the page loads\r\n AOS.init({\r\n offset: 100,\r\n duration: 1000,\r\n once: true,\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n setCharts(\r\n R.compose(\r\n R.map(R.compose(R.flatten, R.pluck(\"chart\"))),\r\n R.map(R.reject(R.isNil), R.reject(R.isEmpty)),\r\n )(R.splitAt(3, data)),\r\n );\r\n }\r\n }, [data]);\r\n\r\n return department && data && deptId ? (\r\n \r\n {department && (\r\n \r\n )}\r\n {sectionTitle1 && (\r\n \r\n )}\r\n {deptId && (\r\n \r\n )}\r\n {sectionTitle2 && (\r\n \r\n )}\r\n \r\n \r\n {racialDataTitle}\r\n \r\n {charts && charts[0] !== undefined ? (\r\n <>\r\n {\r\n return i ? (\r\n \r\n

{i.timeFrame}

\r\n \r\n
\r\n ) : (\r\n false\r\n );\r\n })}\r\n />\r\n \r\n ) : (\r\n false\r\n )}\r\n \r\n \r\n \r\n {genderDataTitle}\r\n \r\n {charts && charts[1] !== undefined ? (\r\n {\r\n return i ? (\r\n \r\n

{i.timeFrame}

\r\n \r\n
\r\n ) : (\r\n false\r\n );\r\n })}\r\n />\r\n ) : (\r\n false\r\n )}\r\n \r\n {relatedArticle.length > 0 && (\r\n
\r\n {relatedArticle.map((related, i) => {\r\n const { title } = related;\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n )}\r\n id !== dept.id)(deptList)}\r\n />\r\n \r\n {additionalPageContent && (\r\n
\r\n \r\n {additionalPageContent}\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n false\r\n );\r\n};\r\n\r\nDepartmentPage.propTypes = propTypes;\r\nexport default DepartmentPage;\r\n","import * as R from \"ramda\";\r\nimport { object, string, array, shape } from \"prop-types\";\r\nimport { graphql } from \"gatsby\";\r\nimport {\r\n extractRichText,\r\n extractBanner,\r\n extractDatasetInfo,\r\n extractResourceItem,\r\n} from \"../../common/contentful-extract.jsx\";\r\nimport { ChartDataProvider } from \"../../common/ChartData.jsx\";\r\n\r\nimport DepartmentPage from \"../../components/DepartmentPage/DepartmentPage.jsx\";\r\n\r\nconst propTypes = {\r\n data: shape({\r\n ctaBanner: object,\r\n datasetInfo: object,\r\n id: string,\r\n image: object,\r\n lineChartTitle: object,\r\n racialDataTitle: object,\r\n genderDataTitle: array,\r\n relatedArticle: array,\r\n sectionTitle1: object,\r\n sectionTitle2: object,\r\n trendsTabelTitle: object,\r\n departmentListingSectionText: object,\r\n extractRichText: object,\r\n url: string,\r\n }).isRequired, // exported query below\r\n};\r\n\r\nconst DepartmentTemplate = (props) => {\r\n const data = R.compose(\r\n R.evolve({\r\n sectionTitle1: extractRichText,\r\n sectionTitle2: extractRichText,\r\n lineChartTitle: extractRichText,\r\n racialDataTitle: extractRichText,\r\n genderDataTitle: extractRichText,\r\n ctaBanner: extractBanner,\r\n datasetInfo: extractDatasetInfo,\r\n datasetInformation: extractRichText,\r\n trendsTableTitle: extractRichText,\r\n relatedArticle: extractResourceItem,\r\n departmentListingSectionText: extractRichText,\r\n additionalPageContent: extractRichText,\r\n }),\r\n R.defaultTo({}),\r\n R.path([\"contentfulDepartmentPage\"]),\r\n )(props.data);\r\n\r\n const formattedFootnotes =\r\n data.footnotes &&\r\n data.footnotes.map((x) => {\r\n return extractRichText(x.footnoteItem);\r\n });\r\n\r\n const deptList = R.pathOr(\r\n [],\r\n [\"allContentfulDepartmentPage\", \"nodes\"],\r\n props.data,\r\n );\r\n\r\n const lastAnalyzed = R.pathOr(\r\n [],\r\n [\"contentfulDataExplorerPage\", \"lastAnalyzed\"],\r\n props.data,\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDepartmentTemplate.propTypes = propTypes;\r\nexport default DepartmentTemplate;\r\n\r\n// !! it's important that __typename and contentful_id is in there so renderRichText works!\r\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-contentful/src/rich-text.js\r\nexport const query = graphql`\r\n query ($id: String!) {\r\n contentfulDataExplorerPage {\r\n lastAnalyzed(locale: \"en-US\", formatString: \"MMMM DD, yyyy\")\r\n }\r\n contentfulDepartmentPage(id: { eq: $id }) {\r\n cityId {\r\n ... on ContentfulCity {\r\n id\r\n name\r\n slug\r\n __typename\r\n }\r\n }\r\n image {\r\n fluid {\r\n base64\r\n aspectRatio\r\n src\r\n srcSet\r\n srcWebp\r\n srcSetWebp\r\n sizes\r\n }\r\n file {\r\n url\r\n }\r\n }\r\n departmentTitle\r\n id\r\n url\r\n ctaBanner {\r\n backgroundImage {\r\n fluid {\r\n base64\r\n aspectRatio\r\n src\r\n srcSet\r\n srcWebp\r\n srcSetWebp\r\n sizes\r\n }\r\n file {\r\n url\r\n }\r\n }\r\n backgroundSize\r\n textColor\r\n subtitle {\r\n raw\r\n }\r\n title {\r\n raw\r\n }\r\n content {\r\n raw\r\n }\r\n link {\r\n ...Link\r\n }\r\n }\r\n departmentListingSectionText {\r\n raw\r\n }\r\n sectionTitle1 {\r\n raw\r\n }\r\n sectionTitle2 {\r\n raw\r\n references {\r\n ...Link\r\n }\r\n }\r\n racialDataTitle {\r\n raw\r\n }\r\n genderDataTitle {\r\n raw\r\n }\r\n lineChartTitle {\r\n raw\r\n }\r\n trendsTableTitle {\r\n raw\r\n }\r\n relatedArticle {\r\n ... on ContentfulResourceItem {\r\n id\r\n description {\r\n raw\r\n }\r\n title\r\n link {\r\n ...Link\r\n }\r\n resourceTags {\r\n ... on ContentfulCity {\r\n id\r\n name\r\n slug\r\n __typename\r\n }\r\n ... on ContentfulTopic {\r\n id\r\n name\r\n slug\r\n __typename\r\n }\r\n }\r\n featuredImage {\r\n fluid(maxWidth: 570) {\r\n aspectRatio\r\n sizes\r\n src\r\n srcSet\r\n srcSetWebp\r\n srcWebp\r\n base64\r\n }\r\n }\r\n }\r\n }\r\n datasetInfo {\r\n buttonText\r\n content {\r\n raw\r\n }\r\n }\r\n additionalPageContent {\r\n raw\r\n references {\r\n ...Link\r\n ... on ContentfulAsset {\r\n contentful_id\r\n __typename\r\n title\r\n description\r\n fluid {\r\n base64\r\n aspectRatio\r\n src\r\n srcSet\r\n srcWebp\r\n srcSetWebp\r\n sizes\r\n }\r\n fixed {\r\n src\r\n srcSet\r\n width\r\n height\r\n srcSetWebp\r\n srcWebp\r\n tracedSVG\r\n }\r\n file {\r\n url\r\n fileName\r\n details {\r\n size\r\n image {\r\n height\r\n width\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n department {\r\n id\r\n coordinates {\r\n lat\r\n lon\r\n }\r\n state\r\n name\r\n }\r\n\r\n footnotes {\r\n footnoteItem {\r\n raw\r\n }\r\n }\r\n }\r\n allContentfulDepartmentPage {\r\n nodes {\r\n id\r\n department {\r\n id\r\n name\r\n state\r\n }\r\n url\r\n }\r\n }\r\n }\r\n`;\r\n","import cx from \"classnames\";\r\nimport { node, object, string, array, bool } from \"prop-types\";\r\n\r\nimport \"./image-block.scss\";\r\n\r\nimport Container5050 from \"../Container/Container5050.jsx\";\r\nimport ContentfulLink from \"../ContentfulLink/ContentfulLink.jsx\";\r\nimport GatsbyImage from \"gatsby-image\";\r\n\r\nconst propTypes = {\r\n aos: bool, // https://github.com/michalsnik/aos\r\n className: string,\r\n fluidImage: object.isRequired, // gatsby fluid image\r\n isReverse: bool,\r\n title: node.isRequired,\r\n link: object, // ContentfulLink object\r\n smallImages: bool, // for homepage pillars section\r\n text: node.isRequired,\r\n tags: array,\r\n buttonModifier: string,\r\n};\r\n\r\nconst ImageBlock = (props) => {\r\n const {\r\n aos,\r\n className,\r\n fluidImage,\r\n isReverse,\r\n title,\r\n link,\r\n smallImages,\r\n text,\r\n tags,\r\n buttonModifier,\r\n ...otherProps\r\n } = props;\r\n /**\r\n * title/text/link next to an image\r\n * used for homepage pillars and our-story entry\r\n */\r\n return (\r\n \r\n \r\n \r\n }\r\n right={\r\n
\r\n {tags &&

{tags}

}\r\n

{title}

\r\n
{text}
\r\n {link && (\r\n \r\n )}\r\n
\r\n }\r\n {...otherProps}\r\n />\r\n );\r\n};\r\n\r\nImageBlock.propTypes = propTypes;\r\nexport default ImageBlock;\r\n"],"sourceRoot":""}