{"version":3,"sources":["webpack:///./src/components/DocumentGroup/RenderLinkGroups.js","webpack:///./src/components/Demographics/DemographicStorymapImage.js","webpack:///./src/utils/compatibility-utils.js","webpack:///./src/components/Demographics/useMutationObserver.js","webpack:///./src/components/Demographics/useFlowAround.js","webpack:///./src/components/Demographics/DemographicDataBody.js","webpack:///./src/components/Demographics/DemographicData.js","webpack:///./src/components/Demographics/transformDemographicPageData.js"],"names":["DocGroupsWrapper","styled","div","RenderLinkGroups","React","memo","groups","colSpan","linkGroupClass","linkGroupContainerClass","defaultExpanded","className","map","header","links","id","data-toggle","href","role","aria-expanded","aria-controls","url","displayText","getHrefProps","prevProps","nextProps","length","Img","props","imgRef","useRef","useState","style","ref","fluid","srcSet","img","setImg","useEffect","current","complete","onLoad","tridentVersion","window","navigator","userAgent","split","find","s","test","src","width","StorymapImageWrapper","DemographicStorymapImage","useStaticQuery","file","childImageSharp","hasFocus","setHasFocus","aria-labelledby","onFocus","onBlur","objectFit","alt","useMutationObserver","callback","options","observer","MutationObserver","observe","disconnect","FlowHelper","mainGroupContainer","overflowGroupContainer","children","getDocContainer","this","flowChildrenAround","breakPoint","innerHtml","i","appendChild","isGapAboveLastGroup","maxBottom","getFirstChild","childNodes","isGapBelow","firstOverflowNode","getBoundingClientRect","bottom","pageYOffset","useImageIntervalCheck","flowAroundContainer","setContainerAttributesUpdated","handleMut","prev","subtree","attributes","shouldCheckImage","setShouldCheckImage","checkingImage","setCheckingImage","intervalId","setIntervalId","clearInterval","setInterval","querySelector","naturalHeight","checkImage","DemographicDataBody","data","docGroupContainer","docGroupOverflowContainer","imageContainer","imgState","setImgState","storymapLinkHeader","storymapUrl","mainBodyText","documentGroups","additionalInformationLinks","additionalInformationHeader","flowAroundContainerState","mobileBreakpoint","subGroupClass","groupContainerClass","currentWidth","setCurrentWidth","containerAttributesUpdated","container","querySelectorAll","groupContainer","groupOverflowContainer","gc","Array","prototype","slice","call","gcOverflow","nodesInMainContainer","concat","flowHelper","imgBottom","top","innerWidth","updateOverflowOnResize","Math","abs","updateLayoutOnReadyStateChange","document","readyState","addEventListener","removeEventListener","useFlowAround","renderRichTextFields","richTextFields","bulkRenderRichText","group","renderRichText","DemographicData","previewData","transformDemographicPageData","pageContext","PageLayout","tocQuery","pageTitle","renderPage","pageProps","genId","require","generate","assignIdsToHeaders","transformDocumentGroup","module","exports","prismic","allReapredistDemographicsPages","edges","node","storymapLink","text","body","link"],"mappings":"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","file":"component---src-components-demographics-demographic-data-js-24c0b207097212440237.js","sourcesContent":["import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { getHrefProps } from \"@utils/prismic-render-utils\";\r\n\r\nconst DocGroupsWrapper = styled.div`\r\n\th2,\r\n\th3,\r\n\th4,\r\n\th5,\r\n\th6 {\r\n\t\tfont-size: 1.3em;\r\n\t}\r\n`;\r\n\r\n// eslint-disable-next-line react/display-name\r\nconst RenderLinkGroups = React.memo(\r\n\t({\r\n\t\tgroups,\r\n\t\tcolSpan,\r\n\t\tlinkGroupClass,\r\n\t\tlinkGroupContainerClass,\r\n\t\tdefaultExpanded,\r\n\t}) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{groups.map(({ header, links, id }) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{header}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t},\r\n\t(prevProps, nextProps) => {\r\n\t\treturn (\r\n\t\t\tprevProps.groups.length == nextProps.groups.length &&\r\n\t\t\tprevProps.colSpan == nextProps.colSpan\r\n\t\t);\r\n\t}\r\n);\r\nexport default RenderLinkGroups;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { useStaticQuery, graphql } from \"gatsby\";\r\nimport { checkForInternetExplorer11 } from \"@utils/compatibility-utils\";\r\nimport styled from \"styled-components\";\r\n\r\nconst query = graphql`\r\n\t{\r\n\t\tfile(\r\n\t\t\trelativePath: { regex: \"/demographic-data-storymap.(png)|(jpg)$/\" }\r\n\t\t) {\r\n\t\t\tchildImageSharp {\r\n\t\t\t\tfluid(maxWidth: 500) {\r\n\t\t\t\t\t...GatsbyImageSharpFluid\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst Img = props => {\r\n\tconst imgRef = useRef();\r\n\r\n\tconst renderDefaultImage = () => (\r\n\t\t\r\n\t);\r\n\r\n\tconst renderIE11CompatibleImage = () => (\r\n\t\t\r\n\t);\r\n\r\n\tconst [img, setImg] = useState(renderDefaultImage());\r\n\r\n\tuseEffect(() => {\r\n\t\tif (imgRef.current.complete) {\r\n\t\t\tprops.onLoad(\"loaded\");\r\n\t\t}\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (checkForInternetExplorer11()) {\r\n\t\t\tsetImg(renderIE11CompatibleImage());\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn img;\r\n};\r\n\r\nconst StorymapImageWrapper = styled.div`\r\n\theight: 100%;\r\n\tmax-width: 600px;\r\n\r\n\tdiv.image-link-container {\r\n\t\ttransition: all 100ms ease-out;\r\n\t}\r\n\r\n\tdiv.image-link-container:hover,\r\n\tdiv.image-link-container:focus,\r\n\tdiv.image-link-container.has-focus {\r\n\t\tbox-shadow: hsla(0, 0%, 0%, 0.28) 5px 6px 13px 0px;\r\n\t\ttransform: translate(-2px, -2px);\r\n\t\ta {\r\n\t\t\ttext-decoration-color: #fff;\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst DemographicStorymapImage = ({ url, header, onLoad }) => {\r\n\tconst fluid = useStaticQuery(query).file.childImageSharp.fluid;\r\n\tconst [hasFocus, setHasFocus] = useState(false);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t setHasFocus(true)}\r\n\t\t\t\t\tonBlur={() => setHasFocus(false)}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{header}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default DemographicStorymapImage;\r\n","export const checkForInternetExplorer11 = () => {\r\n\tconst tridentVersion = window.navigator.userAgent\r\n\t\t.split(\";\")\r\n\t\t.find(s => /Trident/.test(s));\r\n\r\n\tif (tridentVersion) {\r\n\t\treturn { ie11: tridentVersion.split(\"/\")[1] };\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n","import { useEffect } from \"react\";\r\n\r\nfunction useMutationObserver(ref, callback, options) {\r\n\tuseEffect(() => {\r\n\t\t// Create an observer instance linked to the callback function\r\n\t\tif (ref.current) {\r\n\t\t\tconst observer = new MutationObserver(callback);\r\n\r\n\t\t\t// Start observing the target node for configured mutations\r\n\t\t\tobserver.observe(ref.current, options);\r\n\r\n\t\t\treturn () => {\r\n\t\t\t\tobserver.disconnect();\r\n\t\t\t};\r\n\t\t}\r\n\t}, [callback, options]);\r\n}\r\n\r\nexport { useMutationObserver };\r\n","import { useEffect, useState, useRef } from \"react\";\r\nimport { useMutationObserver } from \"./useMutationObserver\";\r\n\r\nclass FlowHelper {\r\n\tconstructor(\r\n\t\tmainGroupContainer,\r\n\t\toverflowGroupContainer,\r\n\t\tchildren,\r\n\t\tgetDocContainer\r\n\t) {\r\n\t\tthis.mainGroupContainer = mainGroupContainer;\r\n\t\tthis.overflowGroupContainer = overflowGroupContainer;\r\n\t\tthis.children = children;\r\n\t\tthis.getDocContainer = getDocContainer;\r\n\r\n\t\tthis.flowChildrenAround = breakPoint => {\r\n\t\t\tthis.getDocContainer(this.mainGroupContainer).innerHtml = \"\";\r\n\t\t\tthis.getDocContainer(this.overflowGroupContainer).innerHtml = \"\";\r\n\r\n\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\tif (i < breakPoint) {\r\n\t\t\t\t\tgetDocContainer(this.mainGroupContainer).appendChild(\r\n\t\t\t\t\t\tthis.children[i]\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgetDocContainer(this.overflowGroupContainer).appendChild(\r\n\t\t\t\t\t\tthis.children[i]\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.isGapAboveLastGroup = (breakPoint, maxBottom) => {\r\n\t\t\tconst getFirstChild = () =>\r\n\t\t\t\tthis.getDocContainer(this.mainGroupContainer).childNodes[\r\n\t\t\t\t\tbreakPoint - 1\r\n\t\t\t\t];\r\n\r\n\t\t\tconst isGapBelow = firstOverflowNode =>\r\n\t\t\t\tfirstOverflowNode.getBoundingClientRect().bottom +\r\n\t\t\t\t\twindow.pageYOffset <\r\n\t\t\t\tmaxBottom;\r\n\r\n\t\t\tconst firstOverflowNode = getFirstChild();\r\n\r\n\t\t\tif (firstOverflowNode) {\r\n\t\t\t\treturn isGapBelow(firstOverflowNode);\r\n\t\t\t} else {\r\n\t\t\t\tthis.flowChildrenAround(breakPoint);\r\n\t\t\t\tconst firstOverflowNode = getFirstChild();\r\n\t\t\t\tif (firstOverflowNode) {\r\n\t\t\t\t\treturn isGapBelow(firstOverflowNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\t}\r\n}\r\n\r\nconst useImageIntervalCheck = (\r\n\tmainGroupContainer,\r\n\toverflowGroupContainer,\r\n\tflowAroundContainer,\r\n\tsetContainerAttributesUpdated\r\n) => {\r\n\tconst handleMut = () => {\r\n\t\tsetContainerAttributesUpdated(prev => prev + 1);\r\n\t};\r\n\r\n\tuseMutationObserver(mainGroupContainer, handleMut, {\r\n\t\tsubtree: true,\r\n\t\tattributes: true,\r\n\t});\r\n\r\n\tuseMutationObserver(overflowGroupContainer, handleMut, {\r\n\t\tsubtree: true,\r\n\t\tattributes: true,\r\n\t});\r\n\r\n\tconst [shouldCheckImage, setShouldCheckImage] = useState(true);\r\n\tconst [checkingImage, setCheckingImage] = useState(false);\r\n\tconst [intervalId, setIntervalId] = useState(-1);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!shouldCheckImage && checkingImage) {\r\n\t\t\tclearInterval(intervalId);\r\n\t\t\tsetCheckingImage(false);\r\n\t\t\tsetIntervalId(-1);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst checkImage = () => {\r\n\t\t\tif (flowAroundContainer.current) {\r\n\t\t\t\tconst img = flowAroundContainer.current.querySelector(\"img\");\r\n\t\t\t\tif (img && img.complete && img.naturalHeight !== 0) {\r\n\t\t\t\t\tsetContainerAttributesUpdated(prev => prev + 1);\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tif (intervalId === -1) {\r\n\t\t\tsetIntervalId(\r\n\t\t\t\tsetInterval(() => {\r\n\t\t\t\t\tif (checkImage()) {\r\n\t\t\t\t\t\tsetShouldCheckImage(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 300)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn () => (intervalId !== -1 ? clearInterval(intervalId) : null);\r\n\t}, [shouldCheckImage, checkingImage, intervalId]);\r\n};\r\n\r\nexport const useFlowAround = (\r\n\t{\r\n\t\tflowAroundContainer,\r\n\t\tmainGroupContainer,\r\n\t\toverflowGroupContainer,\r\n\t\tsubGroupClass,\r\n\t\tgroupContainerClass,\r\n\t},\r\n\tflowAroundContainerState,\r\n\tmobileBreakpoint = 1200\r\n) => {\r\n\tconst [currentWidth, setCurrentWidth] = useState(0);\r\n\tconst [\r\n\t\tcontainerAttributesUpdated,\r\n\t\tsetContainerAttributesUpdated,\r\n\t] = useState(1);\r\n\r\n\tconst getDocContainer = container =>\r\n\t\tcontainer.current.querySelectorAll(`.${groupContainerClass}`)[0];\r\n\r\n\tuseEffect(() => {\r\n\t\tlet breakPoint;\r\n\r\n\t\tconst groupContainer = getDocContainer(mainGroupContainer);\r\n\t\tconst groupOverflowContainer = getDocContainer(overflowGroupContainer);\r\n\r\n\t\tconst gc = Array.prototype.slice.call(\r\n\t\t\tgroupContainer.querySelectorAll(`.${subGroupClass}`)\r\n\t\t);\r\n\t\tconst gcOverflow = Array.prototype.slice.call(\r\n\t\t\tgroupOverflowContainer.querySelectorAll(`.${subGroupClass}`)\r\n\t\t);\r\n\t\tconst nodesInMainContainer = gc.length;\r\n\t\tconst children = gc.concat(gcOverflow);\r\n\r\n\t\tconst flowHelper = new FlowHelper(\r\n\t\t\tmainGroupContainer,\r\n\t\t\toverflowGroupContainer,\r\n\t\t\tchildren,\r\n\t\t\tgetDocContainer\r\n\t\t);\r\n\r\n\t\tif (currentWidth < mobileBreakpoint) {\r\n\t\t\t// flow into bottom container on mobile\r\n\t\t\tflowHelper.flowChildrenAround(0);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (nodesInMainContainer === 0) {\r\n\t\t\t// flow back into main container if nothing there\r\n\t\t\t// happens when switching from mobile to desktop\r\n\t\t\tflowHelper.flowChildrenAround(children.length);\r\n\t\t}\r\n\r\n\t\tconst imgBottom =\r\n\t\t\tflowAroundContainer.current.getBoundingClientRect().bottom +\r\n\t\t\twindow.pageYOffset;\r\n\r\n\t\tfor (breakPoint = 0; breakPoint < children.length; breakPoint++) {\r\n\t\t\tconst clientRect = children[breakPoint].getBoundingClientRect();\r\n\t\t\tconst top = clientRect.top + window.pageYOffset;\r\n\r\n\t\t\tif (top > imgBottom) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twhile (flowHelper.isGapAboveLastGroup(breakPoint, imgBottom)) {\r\n\t\t\tbreakPoint++;\r\n\t\t}\r\n\r\n\t\tflowHelper.flowChildrenAround(breakPoint);\r\n\t}, [\r\n\t\tcurrentWidth,\r\n\t\tflowAroundContainerState,\r\n\t\tmobileBreakpoint,\r\n\t\tcontainerAttributesUpdated,\r\n\t]);\r\n\r\n\tuseImageIntervalCheck(\r\n\t\tmainGroupContainer,\r\n\t\toverflowGroupContainer,\r\n\t\tflowAroundContainer,\r\n\t\tsetContainerAttributesUpdated\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCurrentWidth(window.innerWidth);\r\n\r\n\t\tconst updateOverflowOnResize = () => {\r\n\t\t\tif (Math.abs(window.innerWidth - currentWidth) > 20) {\r\n\t\t\t\tsetCurrentWidth(window.innerWidth);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst updateLayoutOnReadyStateChange = () => {\r\n\t\t\tif (document.readyState === \"complete\") {\r\n\t\t\t\tsetContainerAttributesUpdated(prev => prev + 1);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener(\"resize\", updateOverflowOnResize);\r\n\t\tdocument.addEventListener(\r\n\t\t\t\"readystatechange\",\r\n\t\t\tupdateLayoutOnReadyStateChange\r\n\t\t);\r\n\r\n\t\tsetContainerAttributesUpdated(prev => prev + 1);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", updateOverflowOnResize);\r\n\t\t\tdocument.removeEventListener(\r\n\t\t\t\t\"readystatechange\",\r\n\t\t\t\tupdateLayoutOnReadyStateChange\r\n\t\t\t);\r\n\t\t};\r\n\t}, []);\r\n};\r\n","import React, { useState, useRef } from \"react\";\r\n\r\nimport DemographicStorymapImage from \"./DemographicStorymapImage\";\r\nimport { useFlowAround } from \"./useFlowAround\";\r\n\r\nimport RenderLinkGroups from \"@components/DocumentGroup/RenderLinkGroups\";\r\n\r\nconst DemographicDataBody = ({ data }) => {\r\n\tconst docGroupContainer = useRef();\r\n\tconst docGroupOverflowContainer = useRef();\r\n\tconst imageContainer = useRef();\r\n\tconst docGroupClass = \"overflow-doc-group\";\r\n\tconst docGroupContainerClass = \"overflow-doc-group-container\";\r\n\tconst [imgState, setImgState] = useState(\"initial\");\r\n\r\n\tconst {\r\n\t\tstorymapLinkHeader,\r\n\t\tstorymapUrl,\r\n\t\tmainBodyText,\r\n\t\tdocumentGroups,\r\n\t\tadditionalInformationLinks,\r\n\t\tadditionalInformationHeader,\r\n\t} = data;\r\n\r\n\tuseFlowAround(\r\n\t\t{\r\n\t\t\tflowAroundContainer: imageContainer,\r\n\t\t\tmainGroupContainer: docGroupContainer,\r\n\t\t\toverflowGroupContainer: docGroupOverflowContainer,\r\n\t\t\tsubGroupClass: docGroupClass,\r\n\t\t\tgroupContainerClass: docGroupContainerClass,\r\n\t\t},\r\n\t\timgState\r\n\t);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

Demographic Data

\r\n\t\t\t
{mainBodyText}
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t{additionalInformationHeader}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default DemographicDataBody;\r\n","import React from \"react\";\r\n\r\nimport PageLayout from \"@layout/PageLayout\";\r\n\r\nimport DemographicDataBody from \"./DemographicDataBody\";\r\nimport { transformDemographicPageData } from \"./transformDemographicPageData\";\r\nimport {\r\n\tbulkRenderRichText,\r\n\trenderRichText,\r\n} from \"@utils/prismic-render-utils\";\r\n\r\nconst renderRichTextFields = data => {\r\n\tconst richTextFields = bulkRenderRichText(data, [\r\n\t\t\"storymapUrl\",\r\n\t\t\"storymapLinkHeader\",\r\n\t\t\"additionalInformationLinks\",\r\n\t\t\"documentGroups\",\r\n\t]);\r\n\tconst documentGroups = data.documentGroups.map(group => ({\r\n\t\t...group,\r\n\t\theader: renderRichText(group.header),\r\n\t}));\r\n\treturn { ...data, ...richTextFields, documentGroups: documentGroups };\r\n};\r\n\r\nconst DemographicData = props => {\r\n\tconst data = props.previewData\r\n\t\t? renderRichTextFields(transformDemographicPageData(props.previewData))\r\n\t\t: renderRichTextFields(props.pageContext.data);\r\n\r\n\treturn (\r\n\t\t }\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default DemographicData;\r\n","const { generate: genId } = require(\"shortid\");\r\nconst {\r\n\tassignIdsToHeaders,\r\n\ttransformDocumentGroup,\r\n} = require(\"../../utils/prismic-data-utils\");\r\n\r\nmodule.exports.transformDemographicPageData = data =>\r\n\tdata.prismic.allReapredistDemographicsPages.edges.map(({ node }) => ({\r\n\t\tmainBodyText: assignIdsToHeaders(node.mainBodyText),\r\n\t\tstorymapUrl: node.storymapLink.url,\r\n\t\tstorymapLinkHeader: node.storymapLinkHeader[0].text,\r\n\t\tdocumentGroups: node.body ? node.body.map(transformDocumentGroup) : [],\r\n\t\tadditionalInformationHeader: assignIdsToHeaders(\r\n\t\t\tnode.additionalInformationHeader\r\n\t\t),\r\n\t\tadditionalInformationLinks: node.additionalInformationLinks.map(\r\n\t\t\tlink => ({\r\n\t\t\t\t...link,\r\n\t\t\t\tid: genId(),\r\n\t\t\t\turl: link.url ? link.url.url : null,\r\n\t\t\t})\r\n\t\t),\r\n\t}))[0];\r\n"],"sourceRoot":""}