@guardian/interactive-component-library 0.1.0-alpha.26 → 0.1.0-alpha.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-component-library.umd.cjs","sources":["../src/lib/styles/helpers/mergeStyles.js","../src/lib/components/particles/chevron/index.jsx","../src/lib/components/particles/legend-item/index.jsx","../src/lib/shared/helpers/labelsUtil.js","../src/lib/components/particles/stacked-bar/index.jsx","../src/lib/shared/helpers/shouldUpdate.js","../src/lib/shared/helpers/createStore.js","../src/lib/components/particles/gradient-icon/gradientStore.js","../src/lib/components/particles/gradient-icon/index.jsx","../src/lib/shared/hooks/useWindowSize.js","../src/lib/shared/hooks/useContainerSize.js","../src/lib/components/particles/waffle/index.jsx","../src/lib/components/particles/info-button/index.jsx","../src/lib/components/particles/circle-icon/index.jsx","../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/dayjs.min.js","../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/relativeTime.js","../src/lib/components/particles/relative-time-sentence/index.jsx","../src/lib/components/particles/container/index.jsx","../src/lib/components/particles/change-bar/index.jsx","../src/lib/components/particles/square-cut-corner-icon/index.jsx","../src/lib/components/particles/stacked-grid/index.jsx","../src/lib/components/particles/square-icon/index.jsx","../src/lib/components/particles/arrow-button/index.jsx","../src/lib/components/particles/button/index.jsx","../src/lib/components/particles/close-button/index.jsx","../src/lib/components/particles/ad-slot/index.jsx","../src/lib/components/molecules/table/useTable.jsx","../src/lib/components/molecules/table/index.jsx","../src/lib/components/molecules/slope-chart/index.jsx","../src/lib/shared/helpers/geometry.js","../src/lib/components/molecules/tooltip/index.jsx","../src/lib/components/molecules/control-change/index.jsx","../src/lib/components/molecules/first-past-the-post-waffle/index.jsx","../src/lib/components/molecules/topline-result/index.jsx","../src/lib/components/molecules/page-section/index.jsx","../src/lib/components/molecules/column-chart/index.jsx","../src/lib/components/molecules/party-profile/index.jsx","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/math.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/bounds.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/fit.js","../node_modules/.pnpm/d3-path@2.0.0/node_modules/d3-path/src/path.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/albersUk.js","../src/lib/components/molecules/map/helpers/bboxFeature.js","../src/lib/components/molecules/map/context/MapContext.js","../src/lib/components/molecules/map/helpers/geoMath.js","../src/lib/components/molecules/map/context/SVGMapProvider.jsx","../src/lib/components/molecules/map/layers/CompositionBorders.jsx","../src/lib/components/molecules/map/renderers/SVGRenderer.jsx","../src/lib/components/molecules/map/helpers/dynamicPropValue.js","../src/lib/components/molecules/map/layers/Polygon.jsx","../src/lib/components/molecules/map/layers/Line.jsx","../src/lib/components/molecules/map/layers/Prerendered.jsx","../src/lib/components/molecules/map/layers/Point.jsx","../src/lib/components/molecules/map/index.jsx","../src/lib/components/molecules/result-summary/index.jsx","../src/lib/components/molecules/search-input/icons/search.jsx","../src/lib/components/molecules/search-input/index.jsx","../src/lib/components/molecules/refresh-indicator/index.jsx","../src/lib/components/molecules/responsive-grid/index.jsx","../node_modules/.pnpm/preact-merge-refs@1.0.2_preact@10.12.1/node_modules/preact-merge-refs/lib/preact-merge-refs.modern.js","../node_modules/.pnpm/preact-transitioning@1.4.1_preact@10.12.1/node_modules/preact-transitioning/lib/preact-transitioning.modern.mjs","../src/lib/components/molecules/modal/index.jsx","../src/lib/components/molecules/dropdown/index.jsx","../src/lib/components/organisms/coalitions-tracker/index.jsx","../src/lib/components/organisms/ticker/gradient/index.jsx","../src/lib/components/organisms/ticker/index.jsx","../src/lib/shared/hooks/useTouchOrHover.js"],"sourcesContent":["export function mergeStyles(firstStyle, secondStyle) {\n if (!firstStyle) return secondStyle\n if (!secondStyle) return firstStyle\n if (typeof firstStyle === 'string') {\n if (typeof secondStyle !== 'string') {\n throw new Error('Styles to merge must be of the same type')\n }\n return firstStyle.concat(' ', secondStyle)\n }\n\n const allKeys = new Set([...Object.keys(firstStyle), ...Object.keys(secondStyle)])\n const merged = Array.from(allKeys).reduce((result, key) => {\n result[key] = mergeStyles(firstStyle[key], secondStyle[key])\n return result\n }, {})\n\n return merged\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst DIRECTION = {\n up: 'up',\n down: 'down',\n}\n\nconst SIZE = {\n small: 'small',\n large: 'large',\n}\n\nexport function Chevron({ active = false, direction = DIRECTION.down, size = SIZE.small, styles }) {\n const defaultStylesCopy = { ...defaultStyles }\n\n if (active) {\n defaultStylesCopy.path = mergeStyles(defaultStyles.path, defaultStyles.active)\n }\n\n if (direction === DIRECTION.up) {\n defaultStylesCopy.group = mergeStyles(defaultStyles.group, defaultStyles.rotated)\n }\n\n styles = mergeStyles(defaultStylesCopy, styles)\n\n return size === SIZE.small ? <SmallChevron styles={styles} /> : <LargeChevron styles={styles} />\n}\n\nfunction SmallChevron({ styles }) {\n return (\n <svg\n width=\"16\"\n height=\"24\"\n viewBox=\"0 0 16 24\"\n className={styles.svg}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g className={styles.group} style=\"transform-box: fill-box;\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.80569 10.7123L11.6344 15H12.365L16.1938 10.7123L15.4997 10L11.9997 13L8.49976 10L7.80569 10.7123Z\"\n className={styles.path}\n />\n </g>\n </svg>\n )\n}\n\nfunction LargeChevron({ styles }) {\n return (\n <svg\n width=\"15\"\n height=\"19\"\n className={styles.svg}\n viewBox=\"0 0 15 19\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g className={styles.group}>\n <path\n d=\"M0.667809 7.5L6.81507 12.1053L8.18493 12.1053L14.3322 7.5L15 8.09868L7.84247 14.5L7.15753 14.5L-2.61693e-08 8.09868L0.667809 7.5Z\"\n className={styles.path}\n />\n </g>\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst DOT_TYPE = {\n round: 'round',\n square: 'square',\n}\n\nexport const LegendItem = ({ dotType = DOT_TYPE.round, text, styles, abbreviation }) => {\n const defaultStylesCopy = { ...defaultStyles }\n\n if (dotType === DOT_TYPE.round) {\n defaultStylesCopy.dot = mergeStyles(defaultStyles.dot, defaultStyles.circle)\n }\n\n styles = mergeStyles(defaultStylesCopy, styles)\n return (\n <div className={styles.container}>\n <span className={`${styles.dot} bg-color--${abbreviation}`} />\n <p className={styles.text}>{text}</p>\n </div>\n )\n}\n","export function preventOverlap(labelPositions, iteration = 0, labelSize = 12, coordinate = \"y\", moveBothLabels = true) {\n const maxIterations = 10\n let totalOverlap = 0\n\n for (let index = 1; index < labelPositions.length; index++) {\n const previousElement = labelPositions[index - 1]\n const element = labelPositions[index]\n\n const overlap = previousElement[coordinate] - (element[coordinate] - labelSize)\n if (overlap < 0) {\n // no overlap, continue\n continue\n }\n\n if (moveBothLabels) {\n previousElement[coordinate] -= overlap / 2\n element[coordinate] += overlap / 2\n } else {\n previousElement[coordinate] -= overlap\n }\n\n totalOverlap += overlap\n }\n\n if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1, labelSize, coordinate, moveBothLabels)\n }\n\n return labelPositions\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\nexport function positionLabels(labels, labelSize = 12, coordinate = \"y\", moveBothLabels = true) {\n labels = uniqueBy(labels, \"value\")\n // sort by coordinate-position\n labels.sort((a, b) => a[coordinate] - b[coordinate])\n\n return preventOverlap(labels, 0, labelSize, coordinate, moveBothLabels)\n}\n// same as this one https://gist.github.com/vectorsize/7031902\nexport function scaleLinear(domain, range) {\n const [domainMin, domainMax] = domain\n const [rangeMin, rangeMax] = range\n\n const slope = (rangeMax - rangeMin) / (domainMax - domainMin)\n const intercept = rangeMin - slope * domainMin\n\n return function (x) {\n return slope * x + intercept\n }\n}\n","import { useRef, useMemo } from \"preact/hooks\"\nimport defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\nimport { preventOverlap } from \"$shared/helpers/labelsUtil\"\n\nexport const LabelType = {\n hanging: \"hanging\",\n inline: \"inline\",\n}\n\nexport const LabelOverlapConfig = {\n labelSize: 20,\n moveBothLabels: false,\n}\n\nexport function StackedBar({ stack, width, height, hideLabels = false, labelType = LabelType.inline, showBackgroundRect = false, createSVG = true, styles, labelOverlapConfig = LabelOverlapConfig }) {\n const rectElements = useRef([])\n const textElements = useRef([])\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n const svgHeight = labelType === LabelType.hanging && !hideLabels ? height + 20 : height\n\n const renderLabel = (config, i) => (\n <text\n key={`label-${i}`}\n ref={(element) => (textElements.current[i] = element)}\n text-rendering=\"optimizeLegibility\"\n className={styles.label}\n style={{ display: \"visible\" }} // using visibility rather than display makes sure the text width is always calculated correctly\n x={config.x}\n y={config.y}\n textAnchor={config.textAnchor}\n dominantBaseline={config.dominantBaseline}\n >\n {config.value}\n </text>\n )\n\n let totalWidth = 0\n const content = stack.map((d, index) => {\n const itemWidth = d.fraction * width\n\n const labelConfig = {\n value: d.label,\n x: itemWidth - 4,\n y: height / 2,\n textAnchor: \"end\",\n dominantBaseline: \"middle\",\n }\n\n const value = (\n <g transform={`translate(${totalWidth}, 0)`} key={index}>\n <rect\n ref={(element) => (rectElements.current[index] = element)}\n width={itemWidth}\n height={height}\n className={`${styles.bar} fill-color--${d.abbreviation}`}\n style={{ fill: d.fill }}\n shape-rendering=\"crispEdges\"\n />\n {labelType === LabelType.inline && !hideLabels && renderLabel(labelConfig, index)}\n </g>\n )\n\n totalWidth += itemWidth\n return value\n })\n\n const hangingLabelConfig = useMemo(() => {\n let totalW = 0\n let labels = stack.map((d) => {\n const itemWidth = d.fraction * width\n\n const labelConfig = { x: itemWidth + totalW, y: height + 4, value: d.label, textAnchor: \"end\", dominantBaseline: \"hanging\" }\n\n totalW += itemWidth\n return labelConfig\n })\n\n return preventOverlap(labels, 0, labelOverlapConfig.labelSize, \"x\", labelOverlapConfig.moveBothLabels)\n }, [stack, height, width])\n\n const backgroundRect = (\n <g>\n <rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} />\n </g>\n )\n\n if (createSVG) {\n return (\n <svg overflow=\"hidden\" width={width} height={svgHeight} viewBox={`0 0 ${width} ${svgHeight}`} xmlns=\"http://www.w3.org/2000/svg\">\n {showBackgroundRect && backgroundRect}\n <g>\n {content}\n {labelType === LabelType.hanging && !hideLabels && hangingLabelConfig.map((config, i) => renderLabel(config, i))}\n </g>\n </svg>\n )\n }\n\n return (\n <g>\n {content}\n {labelType === LabelType.hanging && !hideLabels && hangingLabelConfig.map((config, i) => renderLabel(config, i))}\n </g>\n )\n}\n","export default function shouldUpdate(oldState, newState) {\n if (oldState === newState) return false\n\n if (isObj(oldState) && isObj(newState)) {\n for (let key in newState) {\n if (oldState[key] !== newState[key]) return true\n }\n return false\n }\n\n return true\n}\n\nfunction isObj(obj) {\n return typeof obj === 'object' && !Array.isArray(obj) && obj !== null\n}\n","import { useCallback } from 'preact/hooks'\nimport { useSyncExternalStore } from 'preact/compat'\nimport shouldUpdate from './shouldUpdate'\n\nexport default function createStore(initialStore) {\n let store = initialStore\n const listeners = new Set()\n\n function useStore(selectorFn = (store) => store) {\n const subscribe = useCallback((updater) => {\n const listener = {\n updater,\n selectorFn,\n }\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }, [selectorFn])\n\n const syncedStore = useSyncExternalStore(subscribe, getStore, getServerStore)\n return selectorFn(syncedStore)\n }\n\n function setStore(action) {\n const oldStore = store\n\n store = action instanceof Function ? action(store) : action\n\n listeners.forEach(({ selectorFn, updater }) => {\n const oldState = selectorFn(oldStore)\n const newState = selectorFn(store)\n if (shouldUpdate(oldState, newState)) updater(() => newState)\n })\n }\n\n function getStore() {\n return store\n }\n\n function getServerStore() {\n return initialStore\n }\n\n return [useStore, setStore, getStore]\n}\n","import createStore from '$shared/helpers/createStore'\n\nexport const [useGradients, setGradients, getGradients] = createStore({})\n","import { render } from 'preact'\nimport { useEffect } from 'preact/hooks'\nimport { useGradients, setGradients } from './gradientStore'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const GradientIcon = (props) => {\n let { previous, next, styles } = props\n styles = mergeStyles(defaultStyles, styles)\n\n const gradientId = `gv-gradient-def-${previous}-${next}`\n const gradients = useGradients()\n\n useEffect(() => {\n setGradients((current) => {\n current[gradientId] = { id: gradientId, ...props }\n return current\n })\n }, [gradientId, props])\n\n useEffect(() => {\n let container = document.getElementById('gv-gradient-defs')\n if (!container) {\n container = document.createElement('div')\n container.id = 'gv-gradient-defs'\n document.body.prepend(container)\n }\n\n render(<GradientDefs gradients={Object.values(gradients)} />, container)\n }, [gradients])\n\n return (\n <svg class={styles.svg} width=\"24\" height=\"11\" viewBox=\"0 0 24 11\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0 5.434C0 2.43288 2.43288 0 5.434 0H5.69626C6.85818 0 7.9797 0.426401 8.84813 1.19834C10.6456 2.79612 13.3544 2.79612 15.1519 1.19834C16.0203 0.426401 17.1418 0 18.3037 0L18.566 0C21.5671 0 24 2.43288 24 5.434V5.566C24 8.56712 21.5671 11 18.566 11H18.3037C17.1418 11 16.0203 10.5736 15.1519 9.80166C13.3544 8.20388 10.6456 8.20388 8.84813 9.80166C7.9797 10.5736 6.85818 11 5.69626 11H5.434C2.43288 11 0 8.56712 0 5.566V5.434Z\"\n fill={`url(#${gradientId})`}\n />\n </svg>\n )\n}\n\nfunction GradientDefs({ gradients }) {\n return (\n <svg width=\"24\" height=\"11\" viewBox=\"0 0 24 11\">\n <defs>\n {gradients.map(({ id, previous, next, styles }) => {\n return (\n <linearGradient key={id} id={id} x1=\"5.5\" y1=\"5.5\" x2=\"12\" y2=\"5.5\" gradientUnits=\"userSpaceOnUse\">\n <stop class={`${styles?.previous} stop-color--${previous}`} />\n <stop class={`${styles?.next} stop-color--${next}`} offset=\"1\" />\n </linearGradient>\n )\n })}\n </defs>\n </svg>\n )\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nfunction useWindowSize() {\n\n const [windowSize, setWindowSize] = useState(() => {\n if (typeof window === 'undefined') return { width: 0, height: 0 }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n })\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n return windowSize\n}\n\nexport { useWindowSize }\n","import { useWindowSize } from './useWindowSize'\nimport { useLayoutEffect, useState } from 'preact/hooks'\n\nexport function useContainerSize(containerRef) {\n const windowSize = useWindowSize()\n const [containerSize, setContainerSize] = useState()\n\n useLayoutEffect(() => {\n const container = containerRef.current\n if (!container) return\n setContainerSize({ width: container.clientWidth, height: container.clientHeight })\n }, [containerRef, windowSize])\n\n return containerSize\n}\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\nimport { useContainerSize } from '$shared/hooks/useContainerSize'\nimport { useRef } from 'preact/hooks'\n\nexport const WaffleType = {\n circle: 'circle',\n square: 'square',\n}\n\nconst WaffleUnit = ({ type, attributes }) => type === WaffleType.square ? <rect {...attributes} /> : <circle {...attributes} />\n\nexport const Waffle = ({ units, numberOfRows, type = WaffleType.circle, idAccessor, onMouseOver, styles }) => {\n\n const containerRef = useRef()\n const containerSize = useContainerSize(containerRef)\n const width = containerSize ? containerSize.width : 0\n const total = units.length\n const columns = Math.ceil(total / numberOfRows)\n const unitWidth = width / columns\n const unitHeight = unitWidth\n const height = numberOfRows * unitHeight\n \n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <div ref={containerRef} className={styles.container}>\n { containerSize &&\n <svg viewBox={`0 0 ${width} ${height}`} class={styles.svg}>\n <g>\n {\n units.map((unit, j) => {\n let attributes\n \n if (type === WaffleType.square) {\n attributes = {\n id: unit[idAccessor] || `w-${j}`,\n onMouseOver: e => onMouseOver(unit, e),\n class: `${styles.unit} ${unit.class}`,\n height: unitHeight,\n width: unitWidth,\n x: unitWidth * Math.floor(j / numberOfRows),\n y: unitHeight * (j % numberOfRows)\n }\n } else {\n attributes = {\n id: unit[idAccessor] || `w-${j}`,\n onMouseOver: e => onMouseOver(unit, e),\n class: `${styles.unit} ${unit.class}`,\n r: unitWidth / 2,\n transform: `translate(${unitWidth * Math.floor(j / numberOfRows) + unitWidth / 2}, ${unitHeight * (j % numberOfRows) + unitHeight / 2 })`\n }\n }\n\n return <WaffleUnit key={`wu-${j}`} type={type} attributes={attributes} />\n })\n }\n </g>\n </svg>\n }\n </div>\n )\n}","import { forwardRef } from 'preact/compat'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport const InfoButton = forwardRef(({ onClick, styles }, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <button ref={ref} class={styles.button} onClick={onClick}>\n <svg class={styles.svg} viewBox=\"0 0 5 13\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m3.72905 10.8229v.5256c-.11944.0955-.28666.1672-.45388.2628-.16723.0716-.35834.1433-.54945.215-.19111.0716-.38222.1194-.57333.1433s-.38222.0478-.54945.0478c-.38222 0-.621109-.0717-.764442-.215-.167222-.1434-.238889-.3106-.238889-.4778 0-.1911.023889-.3822.047778-.5733s.071667-.3823.119445-.6211l1.003328-4.56282-.931662-.215v-.50167c.143333-.04777.334442-.11944.597222-.19111.23889-.07166.50167-.11944.78833-.16722.28667-.04778.54945-.09556.81223-.11944.26277-.02389.50166-.04778.71666-.04778l.26278.16722-1.33778 6.33052zm.45389-8.02663c-.215.19111-.52555.28667-.88389.28667-.33444 0-.62111-.09556-.86-.28667-.215-.19111-.33444-.43-.33444-.74056 0-.33444.11944-.59722.33444-.78833s.50167-.286667.86-.286667c.38223 0 .66889.095557.88389.286667s.33445.45389.33445.78833c-.02389.31056-.11945.54945-.33445.74056z\" />\n </svg>\n </button>\n )\n})\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const CircleIcon = ({ color, pulse = false, styles }) => {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <svg style={styles.svg} fill=\"none\" height=\"11\" viewBox=\"0 0 11 11\" width=\"11\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect\n class={[styles.circle, pulse && styles.pulse].join(' ')}\n style={{ fill: color }}\n height=\"11\"\n rx=\"5.5\"\n width=\"11\"\n />\n </svg>\n )\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles.js'\nimport dayjs from 'dayjs'\nimport relativeTime from 'dayjs/plugin/relativeTime'\ndayjs.extend(relativeTime)\n\nexport const RelativeTimeSentence = ({ timeStamp, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n // dayjs docs: - range of results: https://day.js.org/docs/en/display/from-now#list-of-breakdown-range\n let timeSince = dayjs(timeStamp).fromNow()\n\n return <span className={styles.text}>{timeSince}</span>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Container({ children, sideBorders = false, styles }) {\n const { pageContainer, sideBorders: sideBordersStyle } = mergeStyles(defaultStyles, styles)\n\n return <div className={[pageContainer, sideBorders && sideBordersStyle].join(' ')}>{children}</div>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\n/* \nNOTE: The fraction is the fraction of the maximum possible value \nwhether positive or negative.\nSo if used for a party change scenario where the biggest party\nchange is -20ppt the maximum value is 20 and the fraction of a bar representing 10 \nwould be 0.5. \nSo the visual area of the chart \nis implicitly 40\n*/\n\nexport function ChangeBar({ fraction, positive, party, width, height, styles }) {\n let centre = parseFloat(width) / 2\n let barwidth = parseFloat(fraction) * (parseFloat(width) /2)\n let negleft = `${centre - barwidth}px`\n let posleft = `${centre}px` \n let thisStyles = \n ` height: ${height}; width: ${barwidth}px; ${positive ? `left: ${posleft}` : `left: ${negleft}`}`\n let thisColor = ` bg-color--${party}`\n\n let zeroStyles = ` height: ${height};`\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n\n return <div className={styles.wrapper} style={`width: ${width}px`}>\n <div className={styles.bar.concat(thisColor)} style={thisStyles} />\n <div className={styles.zero} style={zeroStyles} />\n </div>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const SquareCutCornerIcon = ({ cornerColor, squareColor, squareSize, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let cornerSize = squareSize * 0.625\n let cornerMargin = squareSize < 100 ? squareSize / 6 : 10 // margin should increase with the size of square but cap at 10px\n\n return (\n <svg width={squareSize} height={squareSize} className={styles.svg} viewBox={`0 0 ${squareSize} ${squareSize}`}>\n <g id=\"square-cutoff-corner-icon\">\n <rect id=\"square\" fill={squareColor} className={styles.square} width={squareSize} height={squareSize} />\n\n <g id=\"corner\">\n <polygon\n id=\"cornerTriangleBg\"\n className={styles.dividingLineColor}\n points={`0,0 0,${cornerSize} ${cornerSize},0`}\n />\n\n <polygon\n id=\"cornerTriangle\"\n fill={cornerColor}\n className={styles.corner}\n points={`0,0 0,${cornerSize - cornerMargin} ${cornerSize - cornerMargin},0`}\n />\n </g>\n </g>\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst getItemRotate = (fromBottom, fromLeft) => {\n if (fromBottom && fromLeft) {\n return 'stackedGridRotateItems270'\n } else if (fromBottom && !fromLeft) {\n return 'stackedGridRotateItems180'\n } else if (!fromBottom && !fromLeft) {\n return 'stackedGridRotateItems90'\n } else if (!fromBottom && fromLeft) {\n return 'stackedGridRotateItems0' // the css default\n }\n}\n\n// nb: using this trick: https://css-tricks.com/snippets/css/flip-an-image/\n// this works better than changing flex direction because it allows for an X and Y change\n\nconst getContainerFlip = (fromBottom, fromLeft) => {\n let scaleX = fromLeft ? 1 : -1\n let scaleY = fromBottom ? -1 : 1\n return `scale(${scaleX}, ${scaleY})`\n}\n\nexport const StackedGrid = ({ fromLeft, fromBottom, children, styles }) => {\n // CSS attributes driven by args\n let containerFlip = getContainerFlip(fromBottom, fromLeft)\n let itemRotateClass = getItemRotate(fromBottom, fromLeft)\n\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <div style={{ transform: containerFlip }} className={`${styles.stackedGridContainer} ${styles[itemRotateClass]}`}>\n {children}\n </div>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport const SquareIcon = ({ color, size, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <svg width={size} height={size} className={styles.svg} viewBox={`0 0 ${size} ${size}`}>\n <rect id=\"square\" fill={color} className={styles.squareFill} width={size} height={size} />\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function ArrowButton({ direction = 'right', disabled = false, styles, onClick }) {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <button className={styles.button} disabled={disabled} onClick={onClick}>\n <svg className={[styles.icon, direction].join(' ')} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx={14} cy={14} r=\"13\" fill-rule=\"nonzero\" />\n <g transform=\"translate(6 7)\">\n <path\n d=\"M0.667319 7.63692L12.8497 7.63692L8.07231 13.3539L8.69338 13.975L15.334 7.31842L15.334 6.68143L8.69338 0.0249018L8.07231 0.645966L12.8497 6.36294L0.667319 6.36294L0.667319 7.63692Z\"\n fill=\"#121212\"\n />\n </g>\n </svg>\n </button>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Button({ type = 'regular', onClick, styles, children }) {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <button className={styles.button} data-type={type} onClick={onClick}>\n <div className={styles.buttonInner}>{children}</div>\n </button>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function CloseButton({ border = true, onClick, styles }) {\n styles = mergeStyles(defaultStyles, styles)\n return (\n <button className={[styles.button, border && styles.buttonBorder].join(' ')} onClick={onClick}>\n <svg className={styles.svg} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n className={styles.path}\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.32497 10.025L15.5499 16.6499L16.6249 15.5749L10.025 8.32497L16.6249 1.075L15.5499 0L8.32497 6.62498L1.075 0.0249999L0 1.1L6.62498 8.32497L0 15.5499L1.075 16.6249L8.32497 10.025Z\"\n />\n </svg>\n </button>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n/**\n * Array of available breakpoints.\n * @typedef {\"mobile\" | \"phablet\" | \"tablet\" | \"desktop\"} Breakpoint\n *\n * Type representing an ad size, defined as a tuple of two numbers in the format [width, height].\n * @typedef {[number, number]} AdSize\n *\n * Type representing a size mapping for different breakpoints,\n * the breakpoints cascade from the smallest to the largest.\n * AKA if only mobile and desktop are defined, the mobile size will be used for phablet and tablet.\n *\n * @typedef {Partial<Record<Breakpoint, AdSize[]>>} SizeMapping\n *\n * @interface AdSlotProps\n * @property {string} name - The unique name of the ad slot.\n * @property {SizeMapping} sizeMapping - The size mapping for the ad slot.\n * @property {Object} styles - The styles for the ad slot.\n */\n\n/**\n * A placeholder for an ad slot, the commercial bundle will fill this slot with an ad,\n * matching the size mapping.\n *\n * @param {AdSlotProps} props\n * @returns {React.ComponentElement<AdSlotProps, null>}\n */\nexport function AdSlot({ name, sizeMapping, styles }) {\n const slotId = `dfp-ad--${name}`\n\n styles = mergeStyles(defaultStyles, styles)\n\n const mobileSizes = sizeMapping.mobile?.map((size) => size.join(',')).join('|')\n const tabletSizes = sizeMapping.tablet?.map((size) => size.join(',')).join('|')\n const desktopSizes = sizeMapping.desktop?.map((size) => size.join(',')).join('|')\n\n return (\n <div className={['ad-slot-container', styles.container].join(' ')}>\n <div\n id={slotId}\n className={['js-ad-slot', 'ad-slot', 'interactive-ad-slot', styles.slot].join(' ')}\n data-link-name={`ad slot ${name}`}\n data-name={`${name}`}\n data-label-show=\"true\"\n ad-label-text=\"Advertisement\"\n aria-hidden=\"true\"\n data-mobile={mobileSizes}\n data-tablet={tabletSizes}\n data-desktop={desktopSizes}\n />\n </div>\n )\n}\n","import { useMemo } from 'preact/hooks'\n\nconst sortAscending = (accessor) => {\n return (a, b) => {\n const valueA = a[accessor]\n const valueB = b[accessor]\n if (valueA < valueB) return -1\n if (valueA > valueB) return 1\n return 0\n }\n}\n\nconst sortDescending = (accessor) => {\n return (a, b) => {\n const valueA = a[accessor]\n const valueB = b[accessor]\n if (valueA > valueB) return -1\n if (valueA < valueB) return 1\n return 0\n }\n}\n\nexport function useTable({ columns, data, sortState }) {\n const sortedData = useMemo(() => {\n if (sortState.columnIndex < 0) {\n return data\n }\n const column = columns[sortState.columnIndex]\n const sortFunction = sortState.ascending ? sortAscending(column.accessor) : sortDescending(column.accessor)\n return data.toSorted(sortFunction)\n }, [columns, data, sortState])\n\n const columnModels = useMemo(() => {\n return columns.map((column, columnIndex) => {\n const isSorted = sortState.columnIndex === columnIndex && sortState\n return new ColumnModel(columnIndex, column, isSorted)\n })\n }, [columns, sortState])\n\n const rowModels = useMemo(() => {\n return sortedData.map((d, rowIndex) => {\n const cells = columnModels.map((column, columnIndex) => {\n return new CellModel(column, columnIndex, d, column.cell)\n })\n return new RowModel(rowIndex, cells)\n })\n }, [columnModels, sortedData])\n\n return {\n columns: columnModels,\n rows: rowModels,\n }\n}\n\nclass ColumnModel {\n constructor(index, definition, isSorted) {\n this.index = index\n this.definition = definition\n this.isSorted = isSorted\n this.defaultValue = definition.defaultValue\n }\n\n get id() {\n return this.definition.id || this.header\n }\n\n get accessor() {\n return this.definition.accessor\n }\n\n get header() {\n return this.definition.header\n }\n\n get headerProps() {\n return {\n text: this.header,\n sortable: this.definition.sortable,\n isSorted: this.isSorted,\n ...this.headerCellStyle,\n }\n }\n\n get cell() {\n return this.definition.cell\n }\n\n get styles() {\n return this.definition.styles\n }\n}\n\nclass RowModel {\n constructor(index, cells) {\n this.index = index\n this.cells = cells\n }\n\n get id() {\n return this.index\n }\n}\n\nclass CellModel {\n constructor(column, columnIndex, row, cell) {\n this.column = column\n this.columnIndex = columnIndex\n this.row = row\n this.cell = cell\n }\n\n get id() {\n return this.columnIndex\n }\n\n get displayValue() {\n if (this.cell) {\n return this.cell(this.row)\n }\n\n if (!Object.prototype.hasOwnProperty.call(this.row, this.column.accessor)) {\n if (this.column.defaultValue) {\n return this.column.defaultValue.toString()\n }\n\n const rowData = JSON.stringify(this.row, null, 2)\n throw new Error(`Missing value for key ${this.column.accessor} in ${rowData}`)\n }\n\n return this.row[this.column.accessor].toString()\n }\n}\n","import { useState } from 'preact/hooks'\nimport { useTable } from './useTable'\nimport { Chevron } from '$particles/chevron'\nimport defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Table({ columns, data, hideHeader=false, styles }) {\n const [sortState, setSortState] = useState(() => {\n const columnIndex = columns.findIndex((column) => {\n if ('sort' in column) {\n return true\n }\n return false\n })\n\n const ascending = columnIndex >= 0 ? columns[columnIndex].sort.ascending : false\n return {\n columnIndex,\n ascending,\n }\n })\n const table = useTable({ columns, data, sortState })\n\n const sortByColumn = (index) => {\n setSortState((currentState) => {\n return {\n columnIndex: index,\n ascending: index === currentState.columnIndex ? !currentState.ascending : false,\n }\n })\n }\n\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <table className={styles.table} cellSpacing={0} cellPadding={0}>\n <thead className={hideHeader && styles.hideHeader}>\n <tr>\n {table.columns.map((column, index) => (\n <th key={column.id} className={mergeStyles(styles.headerCell, column.styles?.headerCell)}>\n <HeaderCell\n key={index}\n styles={mergeStyles(styles, column.styles)}\n onClick={() => sortByColumn(index)}\n {...column.headerProps}\n />\n </th>\n ))}\n </tr>\n </thead>\n <tbody className={hideHeader && styles.hideHeaderNoBorder}>\n {table.rows.map((row) => {\n return (\n <tr key={row.id} className={styles.bodyRow}>\n {row.cells.map((cell) => (\n <td key={cell.id} className={mergeStyles(styles.bodyCell, cell.column.styles?.bodyCell)}>\n {cell.displayValue}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n )\n}\n\nfunction HeaderCell({ text, sortable, isSorted, styles, onClick }) {\n if (!sortable) {\n return text\n }\n\n let direction = 'down'\n if (isSorted?.ascending === false) {\n direction = 'up'\n }\n\n return (\n <button onClick={onClick} className={styles.headerCellButton}>\n <span>{text}</span>\n <Chevron active={!!isSorted} direction={direction} />\n </button>\n )\n}\n","import { useMemo, useRef, useState, useLayoutEffect } from 'preact/hooks'\nimport { positionLabels, scaleLinear } from '$shared/helpers/labelsUtil'\nimport { useWindowSize } from '$shared/hooks/useWindowSize'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const SlopeChart = ({\n domain,\n lines,\n y1Label = (d) => d.y1,\n y2Label = (d) => d.y2,\n axis,\n styles,\n padding = { left: 24, right: 24, top: 20, bottom: 20 },\n}) => {\n const wrapperRef = useRef(null)\n const windowSize = useWindowSize()\n const [width, setWidth] = useState(0)\n\n const contentWidth = Math.floor(width - padding.left - padding.right)\n // force 1:1 aspect ratio for chart area\n const contentHeight = contentWidth\n\n const height = contentHeight + padding.top + padding.bottom\n const yScale = scaleLinear(domain, [contentHeight, 0])\n const show = width > 0\n\n useLayoutEffect(() => {\n const newWidth = wrapperRef.current.getBoundingClientRect().width\n setWidth(newWidth)\n }, [windowSize])\n\n const y1Labels = useMemo(() => {\n let labels = lines.map((d) => ({ y: yScale(d.y1), value: y1Label(d) }))\n return positionLabels(labels)\n }, [lines, y1Label, yScale])\n\n const y2Labels = useMemo(() => {\n let labels = lines.map((d) => ({ y: yScale(d.y2), value: y2Label(d) }))\n return positionLabels(labels)\n }, [lines, y2Label, yScale])\n\n styles = mergeStyles({...defaultStyles}, styles)\n\n const chart = (\n <svg class={styles.svg} width={width} height={height}>\n <g transform={`translate(${padding.left} ${padding.top})`}>\n {/* draw axis */}\n <g transform={`translate(0 ${contentHeight})`}>\n <line x1={0} x2={contentWidth} className={styles.axis} shape-rendering=\"crispEdges\" />\n <text dominant-baseline=\"hanging\" className={[styles.label, styles.axisLabel].join(' ')}>\n {axis.startLabel}\n </text>\n <text\n x={contentWidth}\n dominant-baseline=\"hanging\"\n text-anchor=\"end\"\n className={[styles.label, styles.axisLabel].join(' ')}\n >\n {axis.endLabel}\n </text>\n </g>\n\n {/* draw lines */}\n {lines.map((line, index) => {\n const itemStyles = mergeStyles({ ...styles }, line.styles)\n return (\n <g key={index}>\n <line x1={0} y1={yScale(line.y1)} x2={contentWidth} y2={yScale(line.y2)} className={`${itemStyles.line} stroke-color--${line.abbreviation}`} />\n <circle cx={0} cy={yScale(line.y1)} r={4} className={`${itemStyles.circle} fill-color--${line.abbreviation}`} />\n <circle cx={contentWidth} cy={yScale(line.y2)} r={4} className={`${itemStyles.circle} fill-color--${line.abbreviation}`} />\n </g>\n )\n })}\n\n {/* draw labels */}\n {y1Labels.map((label, index) => {\n return (\n <g key={index}>\n <text\n x={0}\n y={label.y}\n className={[styles.label, styles.y1Label].join(' ')}\n text-anchor=\"end\"\n dominant-baseline=\"middle\"\n >\n {label.value}\n </text>\n </g>\n )\n })}\n {y2Labels.map((label, index) => {\n return (\n <g key={index}>\n <text\n x={contentWidth}\n y={label.y}\n className={[styles.label, styles.y2Label].join(' ')}\n text-anchor=\"start\"\n dominant-baseline=\"middle\"\n >\n {label.value}\n </text>\n </g>\n )\n })}\n </g>\n </svg>\n )\n\n return <div class={styles.slopeChartContainer} ref={wrapperRef}>{show && chart}</div>\n}\n\nexport default SlopeChart\n","\n// Function to check if two rectangles intersect\nexport function rectsIntersect(rect1, rect2) {\n // Check if either rectangle is actually a line\n if (rect1.width === 0 || rect1.height === 0 || rect2.width === 0 || rect2.height === 0) {\n return false;\n }\n \n // Check for no intersection by comparing positions\n if (rect1.x + rect1.width <= rect2.x || \n rect2.x + rect2.width <= rect1.x || \n rect1.y + rect1.height <= rect2.y || \n rect2.y + rect2.height <= rect1.y) {\n return false;\n }\n \n // If above conditions are false, the rectangles intersect\n return true;\n}\n\n// Function to check if a point is inside a rectangle\nexport function pointInsideRect(point, rect) {\n return point.x >= rect.x && point.x <= rect.x + rect.width &&\n point.y >= rect.y && point.y <= rect.y + rect.height;\n}\n\n// Function to check if a rectangle is inside another rectangle\nexport function rectInsideRect(rect1, rect2) {\n return rect1.x >= rect2.x && rect1.x + rect1.width <= rect2.x + rect2.width &&\n rect1.y >= rect2.y && rect1.y + rect1.height <= rect2.y + rect2.height;\n}\n","import { useLayoutEffect, useEffect, useRef, useState } from 'preact/hooks'\nimport { createPortal } from 'preact/compat'\nimport { rectsIntersect } from '$shared/helpers/geometry'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function Tooltip({ for: targetElement, touchRect, positionInTarget, show = true, styles, children }) {\n if (!targetElement) throw new Error('Target for tooltip cannot be undefined')\n\n const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 })\n const [displayElement, setDisplayElement] = useState(null)\n\n const tooltipRef = useRef()\n\n styles = mergeStyles(defaultStyles, styles)\n\n useEffect(() => {\n setDisplayElement(document.querySelector('body'))\n\n return () => {\n setDisplayElement(null)\n }\n }, [])\n\n useLayoutEffect(() => {\n if (!tooltipRef.current) return\n\n const targetRect = targetElement.getBoundingClientRect()\n\n if (positionInTarget) {\n const newPosition = tooltipPositionForPoint({\n targetRect,\n positionInTarget,\n tooltip: tooltipRef.current,\n displayElement,\n })\n setTooltipPosition(newPosition)\n } else if (!positionInTarget) {\n const newPosition = tooltipPositionForRect({\n targetRect,\n touchRect,\n tooltip: tooltipRef.current,\n displayElement,\n })\n setTooltipPosition(newPosition)\n }\n }, [targetElement, positionInTarget, displayElement, tooltipRef, touchRect])\n\n if (!displayElement) return\n\n const fixedStyle = {\n display: show ? 'block' : 'none',\n position: 'fixed',\n left: tooltipPosition.x,\n top: tooltipPosition.y,\n zIndex: 100,\n }\n\n const tooltip = (\n <div ref={tooltipRef} className={styles.tooltip} style={fixedStyle}>\n {children}\n </div>\n )\n\n return createPortal(tooltip, displayElement)\n}\n\nfunction tooltipPositionForPoint({ targetRect, positionInTarget, tooltip, displayElement }) {\n const newPosition = {\n x: positionInTarget.x + targetRect.x,\n y: positionInTarget.y + targetRect.y,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\n\n const displayElementRect = displayElement.getBoundingClientRect()\n\n if (newPosition.x + tooltipWidth > displayElementRect.right) {\n newPosition.x -= tooltipWidth\n }\n\n if (newPosition.y + tooltipHeight > displayElementRect.bottom) {\n newPosition.y -= tooltipHeight\n }\n\n if (newPosition.x <= displayElementRect.left) {\n newPosition.x = displayElementRect.left + displayElementRect.width / 2 - tooltipWidth / 2\n }\n\n return newPosition\n}\n\nfunction tooltipPositionForRect({\n targetRect,\n touchRect = { x: 0, y: 0, width: 0, height: 0 },\n tooltip,\n displayElement,\n}) {\n // touchRect is defined relative to the targetRect\n\n // start with top-right position\n const newPosition = {\n x: targetRect.right,\n y: targetRect.top,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\n\n const tooltipRect = {\n ...newPosition,\n width: tooltipWidth,\n height: tooltipHeight,\n }\n\n if (rectsIntersect(tooltipRect, touchRect)) {\n // tooltip rect intersects with touch rect, which means it will be (partially) obscured by the user's finger\n newPosition.x = touchRect.x + touchRect.width / 2\n newPosition.y = touchRect.y - tooltipHeight\n }\n\n const displayElementRect = displayElement.getBoundingClientRect()\n\n if (newPosition.x + tooltipWidth > displayElementRect.right) {\n newPosition.x = targetRect.left - tooltipWidth\n }\n\n if (newPosition.y - tooltipHeight < displayElementRect.top) {\n newPosition.y = targetRect.bottom\n }\n\n if (newPosition.x <= displayElementRect.left) {\n newPosition.x = displayElementRect.left + displayElementRect.width / 2 - tooltipWidth / 2\n }\n\n return newPosition\n}\n","import { GradientIcon, CircleIcon } from '$particles'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const ControlChange = ({ previous, next, text, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let hasChanged = next !== previous\n\n return (\n <div class={styles.container}>\n <>\n {hasChanged ? (\n <GradientIcon\n previous={previous}\n next={next}\n styles={{\n previous: styles.previous,\n next: styles.next,\n }}\n />\n ) : (\n <CircleIcon styles={{ circle: `fill-color--${next}` }} />\n )}\n <strong className={styles.text}>{text}</strong>\n </>\n </div>\n )\n}\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nexport const FirstPastThePostWaffle = ({ styles, children, lineOverHang }) => {\n styles = mergeStyles(defaultStyles, styles)\n \n return (\n <div class={styles.wrapper}>\n <p style={{ height: lineOverHang + 20 }} class={styles.halfLineText}>{children.halfLineText}</p>\n <div class={styles.line}> </div>\n {children.waffle}\n </div>\n )\n}","import { InfoButton } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { forwardRef } from 'preact/compat'\nimport defaultStyles from './style.module.scss'\n\nexport const ToplineResult = forwardRef(({\n name,\n secondaryName,\n mainNumber,\n mainNumberSuffix,\n secondaryNumber,\n styles,\n displayRow = false,\n abbreviation,\n onMouseOver,\n onInfoPress,\n showInfoButton = false,\n infoButtonRef,\n}, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n const displayStyle = displayRow ? styles.displayRow : styles.displayColumn\n\n return !secondaryName ? (\n <div class={styles.toplineResult} onMouseOver={onMouseOver} ref={ref}>\n <div class={styles.topRow}>\n <span class={`${styles.name} before-color--${abbreviation}`}>{name}</span>{' '}\n {showInfoButton && (\n <span class={styles.infoButton}>\n <InfoButton onClick={onInfoPress} ref={infoButtonRef} />\n </span>\n )}\n </div>\n <div class={`${styles.displayNumbers} ${displayStyle}`}>\n <div class={styles.mainNumber}>\n {mainNumber}\n {mainNumberSuffix && <span className={styles.mainNumberSuffix}>{mainNumberSuffix}</span>}\n </div>\n <div class={styles.secondaryNumber}>{secondaryNumber}</div>\n </div>\n </div>\n ) : (\n <div class={styles.toplineResult} onMouseOver={onMouseOver} ref={ref}>\n <div class={styles.topRow}>\n <span class={`${styles.primaryname} before-color--${abbreviation}`}>{name}</span>{' '}\n {showInfoButton && (\n <span class={styles.infoButton}>\n <InfoButton onClick={onInfoPress} />\n </span>\n )}\n </div>\n <div class={styles.subhead}>\n <span class={styles.secondaryname}>{secondaryName}</span>{' '}\n </div>\n\n <div class={`${styles.displayNumbers} ${displayStyle}`}>\n <div class={styles.mainNumber}>\n {mainNumber}\n {mainNumberSuffix && <span className={styles.mainNumberSuffix}>{mainNumberSuffix}</span>}\n </div>\n <div class={styles.secondaryNumber}>{secondaryNumber}</div>\n </div>\n </div>\n )\n})\n","import { forwardRef } from 'preact/compat'\nimport { useLayoutEffect, useRef, useState } from 'preact/hooks'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport const PageSection = forwardRef(\n ({ children, styles, borderTop = false, backgroundColor = 'transparent' }, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n const [minHeight, setMinHeight] = useState('auto')\n const headerRef = useRef()\n\n useLayoutEffect(() => {\n const headerElement = headerRef.current\n setMinHeight(headerElement.offsetHeight)\n }, [children])\n\n return (\n <section\n ref={ref}\n className={[styles.section, borderTop && styles.borderTop].join(' ')}\n style={{ '--background-color': backgroundColor, minHeight }}\n >\n <div className={styles.header} ref={headerRef}>{children.header}</div>\n <div className={styles.content}>{children.content}</div>\n </section>\n )\n },\n)\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { scaleLinear } from 'd3-scale'\n\nexport const ColumnChart = ({\n columns,\n maxValue,\n minValue,\n chartHeight,\n chartWidth,\n columnWidth,\n columnPadding,\n styles,\n}) => {\n styles = mergeStyles(defaultStyles, styles)\n\n const yScale = scaleLinear([maxValue, minValue], [0, chartHeight])\n const totalColumnWidth = Number(columnWidth) + Number(columnPadding.left) + Number(columnPadding.right)\n let marginBottom = minValue < 0 ? 0 : 40\n\n return (\n <svg width={chartWidth} height={chartHeight + marginBottom}>\n {columns.map((column, index) => {\n const getHeight = (input) => {\n return yScale(0) - yScale(input)\n }\n\n return (\n <g key={index}>\n <rect\n x={index * totalColumnWidth}\n height={getHeight(Math.abs(column.value))}\n width={columnWidth}\n y={column.value > 0 ? yScale(column.value) : yScale(0)}\n fill={column.color}\n className={`${styles.bar} fill-color--${column.id}`}\n id={column.id}\n />\n <text\n className={styles.text}\n x={index * totalColumnWidth + 2}\n y={column.value < 0 ? yScale(0) - 6 : yScale(0) + 20}\n >\n {column.label}\n </text>\n </g>\n )\n })}\n <rect className={styles.axis} x={0} y={yScale(0)} width={chartWidth} height={1} />\n </svg>\n )\n}\n\nexport default ColumnChart\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst SubtitleStyle = {\n small: \"small\",\n large: \"large\",\n}\n\nexport const PartyProfile = ({ title, subtitle, subtitleStyle = SubtitleStyle.large, blurb, footnote, imgSrc, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div class={styles.container}>\n <img src={imgSrc} className={styles.img} />\n <h3 className={styles.title}>{title}</h3>\n <div className={[styles.subtitle, styles[subtitleStyle]].join(' ')}>{subtitle}</div>\n <div className={styles.blurb}>{blurb}</div>\n <div className={styles.footnote}>{footnote}</div>\n </div>\n )\n}\n","export var epsilon = 1e-6;\r\n","function noop() {}\r\n\r\nvar x0 = Infinity,\r\n y0 = x0,\r\n x1 = -x0,\r\n y1 = x1;\r\n\r\nvar boundsStream = {\r\n point: boundsPoint,\r\n lineStart: noop,\r\n lineEnd: noop,\r\n polygonStart: noop,\r\n polygonEnd: noop,\r\n result: function() {\r\n var bounds = [[x0, y0], [x1, y1]];\r\n x1 = y1 = -(y0 = x0 = Infinity);\r\n return bounds;\r\n }\r\n};\r\n\r\nfunction boundsPoint(x, y) {\r\n if (x < x0) x0 = x;\r\n if (x > x1) x1 = x;\r\n if (y < y0) y0 = y;\r\n if (y > y1) y1 = y;\r\n}\r\n\r\nexport default boundsStream;\r\n","import {geoStream} from \"d3-geo\";\r\nimport boundsStream from \"./bounds\";\r\n\r\nexport function fitExtent(projection, extent, object) {\r\n var w = extent[1][0] - extent[0][0],\r\n h = extent[1][1] - extent[0][1],\r\n clip = projection.clipExtent && projection.clipExtent();\r\n\r\n projection\r\n .scale(150)\r\n .translate([0, 0]);\r\n\r\n if (clip != null) projection.clipExtent(null);\r\n\r\n geoStream(object, projection.stream(boundsStream));\r\n\r\n var b = boundsStream.result(),\r\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\r\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\r\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\r\n\r\n if (clip != null) projection.clipExtent(clip);\r\n\r\n return projection\r\n .scale(k * 150)\r\n .translate([x, y]);\r\n}\r\n\r\nexport function fitSize(projection, size, object) {\r\n return fitExtent(projection, [[0, 0], size], object);\r\n}\r\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import { epsilon } from \"./math\";\r\nimport { geoAlbers as albers } from \"d3-geo\";\r\nimport { fitExtent, fitSize } from \"./fit\";\r\nimport { path } from \"d3-path\";\r\n\r\nfunction multiplex(streams) {\r\n var n = streams.length;\r\n return {\r\n point: function(x, y) {\r\n var i = -1;\r\n while (++i < n) streams[i].point(x, y);\r\n },\r\n sphere: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].sphere();\r\n },\r\n lineStart: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].lineStart();\r\n },\r\n lineEnd: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].lineEnd();\r\n },\r\n polygonStart: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].polygonStart();\r\n },\r\n polygonEnd: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].polygonEnd();\r\n }\r\n };\r\n}\r\n\r\nexport default function() {\r\n var cache,\r\n cacheStream,\r\n main = albers()\r\n .rotate([4.4, 0.8])\r\n .center([0, 55.4])\r\n .parallels([50, 60]),\r\n mainPoint,\r\n shetland = albers()\r\n .rotate([4.4, 0.8])\r\n .center([0, 55.4])\r\n .parallels([50, 60]),\r\n shetlandPoint,\r\n point,\r\n pointStream = {\r\n point: function(x, y) {\r\n point = [x, y];\r\n }\r\n };\r\n\r\n var shetlandBbox = [\r\n [-2.1, 70],\r\n [-0.7, 59.8]\r\n ];\r\n function albersUk(coordinates) {\r\n var x = coordinates[0],\r\n y = coordinates[1];\r\n return (\r\n (point = null),\r\n (mainPoint.point(x, y), point) || (shetlandPoint.point(x, y), point)\r\n );\r\n }\r\n\r\n albersUk.invert = function(coordinates) {\r\n var k = main.scale(),\r\n t = main.translate(),\r\n x = (coordinates[0] - t[0]) / k,\r\n y = (coordinates[1] - t[1]) / k;\r\n\r\n return (y >= -0.089 && y < 0.06 && x >= 0.029 && x < 0.046\r\n ? shetland\r\n : main\r\n ).invert(coordinates);\r\n };\r\n\r\n albersUk.stream = function(stream) {\r\n return cache && cacheStream === stream\r\n ? cache\r\n : (cache = multiplex([\r\n main.stream((cacheStream = stream)),\r\n shetland.stream(stream)\r\n ]));\r\n };\r\n\r\n albersUk.precision = function(_) {\r\n if (!arguments.length) return main.precision();\r\n main.precision(_), shetland.precision(_);\r\n return reset();\r\n };\r\n\r\n albersUk.scale = function(_) {\r\n if (!arguments.length) return main.scale();\r\n main.scale(_), shetland.scale(_);\r\n return albersUk.translate(main.translate());\r\n };\r\n\r\n albersUk.translate = function(_) {\r\n if (!arguments.length) return main.translate();\r\n var k = main.scale(),\r\n x = +_[0],\r\n y = +_[1];\r\n\r\n mainPoint = main\r\n .translate(_)\r\n .clipExtent([\r\n [x - 0.065 * k, y - 0.089 * k],\r\n [x + 0.075 * k, y + 0.089 * k]\r\n ])\r\n .stream(pointStream);\r\n\r\n shetlandPoint = shetland\r\n .translate([x + 0.01 * k, y + 0.025 * k])\r\n .clipExtent([\r\n [x + 0.029 * k + epsilon, y - 0.089 * k + epsilon],\r\n [x + 0.046 * k - epsilon, y - 0.06 * k - epsilon]\r\n ])\r\n .stream(pointStream);\r\n\r\n return reset();\r\n };\r\n\r\n albersUk.fitExtent = function(extent, object) {\r\n return fitExtent(albersUk, extent, object);\r\n };\r\n\r\n albersUk.fitSize = function(size, object) {\r\n return fitSize(albersUk, size, object);\r\n };\r\n\r\n function reset() {\r\n cache = cacheStream = null;\r\n return albersUk;\r\n }\r\n\r\n albersUk.drawCompositionBorders = function(context) {\r\n /*var ul = main.invert([\r\n shetland.clipExtent()[0][0],\r\n shetland.clipExtent()[0][1]\r\n ]);\r\n var ur = main.invert([\r\n shetland.clipExtent()[1][0],\r\n shetland.clipExtent()[0][1]\r\n ]);\r\n var ld = main.invert([\r\n shetland.clipExtent()[1][0],\r\n shetland.clipExtent()[1][1]\r\n ]);\r\n var ll = main.invert([\r\n shetland.clipExtent()[0][0],\r\n shetland.clipExtent()[1][1]\r\n ]);\r\n\r\n console.log(\"ul = main([\" + ul + \"]);\");\r\n console.log(\"ur = main([\" + ur + \"]);\");\r\n console.log(\"ld = main([\" + ld + \"]);\");\r\n console.log(\"ll = main([\" + ll + \"]);\");\r\n\r\n console.log(\"context.moveTo(ul[0], ul[1]);\");\r\n console.log(\"context.lineTo(ur[0], ur[1]);\");\r\n console.log(\"context.lineTo(ld[0], ld[1]);\");\r\n console.log(\"context.lineTo(ll[0], ll[1]);\");\r\n console.log(\"context.closePath();\");*/\r\n\r\n var ul, ur, ld, ll;\r\n ul = main([-1.113205870242365, 59.64920050773357]);\r\n ur = main([0.807899092399606, 59.59085836472269]);\r\n ld = main([0.5778611961420386, 57.93467822832577]);\r\n ll = main([-1.25867782078448, 57.99029450085142]);\r\n context.moveTo(ul[0], ul[1]);\r\n context.lineTo(ur[0], ur[1]);\r\n context.lineTo(ld[0], ld[1]);\r\n context.lineTo(ll[0], ll[1]);\r\n context.closePath();\r\n };\r\n albersUk.getCompositionBorders = function() {\r\n var context = path();\r\n this.drawCompositionBorders(context);\r\n return context.toString();\r\n };\r\n\r\n return albersUk.scale(2800);\r\n}\r\n","// bounds in [[SW lon, SW lat], [NE lon], [NE lat]] format\n// e.g. UK bounding box: [[-8.642194417322951, 49.88234469492934], [1.7683086664999994, 60.8456995072]]\n// Note the reverse winding order of coordinates. This is essential in D3 https://stackoverflow.com/questions/49311001/d3-js-drawing-geojson-incorrectly\n\nexport function bboxFeature(bounds) {\n const minLon = bounds[0][0]\n const minLat = bounds[0][1]\n const maxLon = bounds[1][0]\n const maxLat = bounds[1][1]\n\n const feature = {\n type: 'Feature',\n properties: {},\n geometry: {\n coordinates: [\n [\n [minLon, maxLat],\n [maxLon, maxLat],\n [maxLon, minLat],\n [minLon, minLat],\n [minLon, maxLat],\n ],\n ],\n type: 'Polygon',\n },\n }\n\n return feature\n}\n","import { createContext } from 'preact'\n\nexport const MapContext = createContext()\n","export function calculateScale(mapBounds, mapWidthPixels, mapHeightPixels) {\n const south = mapBounds[0][1]\n const west = mapBounds[0][0]\n const north = mapBounds[1][1]\n const east = mapBounds[1][0]\n\n const widthKilometers = distanceInKmBetweenEarthCoordinates([west, south], [east, south])\n const heightKilometers = distanceInKmBetweenEarthCoordinates([west, south], [west, north])\n\n const scaleX = mapWidthPixels / widthKilometers\n const scaleY = mapHeightPixels / heightKilometers\n\n const scale = (scaleX + scaleY) / 2\n\n return scale\n}\n\nexport function circleContainsCoordinates(circleCoordinates, radius, coordinates) {\n const realWorldDistance = distanceInKmBetweenEarthCoordinates(circleCoordinates, coordinates)\n return realWorldDistance <= radius\n}\n\n// from: https://stackoverflow.com/questions/59633860/check-if-point-is-inside-circle\nexport function distanceInKmBetweenEarthCoordinates(point1, point2) {\n let [lon1, lat1] = point1\n let [lon2, lat2] = point2\n\n const earthRadiusKm = 6371\n\n const dLat = degreesToRadians(lat2 - lat1)\n const dLon = degreesToRadians(lon2 - lon1)\n\n lat1 = degreesToRadians(lat1)\n lat2 = degreesToRadians(lat2)\n\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2)\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n return earthRadiusKm * c\n}\n\nexport function degreesToRadians(degrees) {\n return (degrees * Math.PI) / 180\n}\n","import { useMemo, useRef, useCallback } from 'preact/hooks'\nimport { geoPath } from 'd3-geo'\nimport { bboxFeature } from '../helpers/bboxFeature'\nimport { MapContext } from './MapContext'\nimport { calculateScale } from '../helpers/geoMath'\n\nexport function SVGMapProvider({ id, mapRef, width, height, padding, config, zoom, selectedFeature, children }) {\n const contentSize = useMemo(\n () => ({\n width: width - padding.left - padding.right,\n height: height - padding.top - padding.bottom,\n }),\n [width, height, padding],\n )\n\n const projection = useMemo(() => {\n return config.projection.fitSize([contentSize.width, contentSize.height], bboxFeature(config.bounds))\n }, [contentSize, config])\n\n const path = geoPath().projection(projection)\n\n const layerSet = useRef(new Set())\n const layers = useRef([])\n\n const updateLayers = useCallback((layerSet) => {\n const _layers = Array.from(layerSet.current)\n // sort layers in reverse order (top layer first)\n _layers.sort((a, b) => {\n return b.zIndex - a.zIndex\n })\n layers.current = _layers\n }, [])\n\n const registerLayer = useCallback(\n (layer) => {\n layerSet.current.add(layer)\n updateLayers(layerSet)\n },\n [updateLayers],\n )\n\n const unregisterLayer = useCallback(\n (layer) => {\n layerSet.current.delete(layer)\n updateLayers(layerSet)\n },\n [updateLayers],\n )\n\n const findFeatureAtPoint = useCallback(\n ({ x, y }) => {\n const adjustedPoint = [x - padding.left, y - padding.top]\n\n for (const layer of layers.current) {\n if (typeof layer.findFeatureAtPoint === 'function') {\n const feature = layer.findFeatureAtPoint(adjustedPoint)\n if (feature) return feature\n }\n }\n return null\n },\n [padding],\n )\n\n const getVisibleBounds = useCallback(() => {\n const projectedSW = projection.invert([padding.left, contentSize.height])\n const projectedNE = projection.invert([padding.left + contentSize.width, padding.top])\n return [projectedSW, projectedNE]\n }, [projection, contentSize, padding])\n\n const getZoomScale = useCallback(() => {\n return calculateScale(getVisibleBounds(), contentSize.width, contentSize.height)\n }, [getVisibleBounds, contentSize])\n\n const context = {\n id,\n projection,\n config,\n path,\n size: { width, height },\n contentSize,\n padding,\n zoom,\n extent: [\n [0, 0],\n [width, height],\n ],\n selectedFeature,\n getZoomScale,\n registerLayer,\n unregisterLayer,\n findFeatureAtPoint,\n }\n\n mapRef.current = context\n\n return <MapContext.Provider value={context}>{children}</MapContext.Provider>\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport defaultStyles from './compositionBorders.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function CompositionBorders({ styles }) {\n const { projection } = useContext(MapContext)\n \n styles = mergeStyles(defaultStyles, styles)\n\n // const ctx = drawingContext\n // if (drawingContext) {\n // ctx.beginPath()\n // ctx.lineWidth = 1\n // ctx.strokeStyle = '#dcdcdc'\n // projection.drawCompositionBorders(ctx)\n // ctx.stroke()\n // return\n // }\n\n return <path className={styles.path} d={projection.getCompositionBorders()} />\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { CompositionBorders } from '../layers/CompositionBorders'\n\nexport function SVGRenderer({ children }) {\n const { id, config, size, selectedFeature, padding } = useContext(MapContext)\n\n return (\n <svg\n id={id}\n width={size.width}\n height={size.height}\n viewBox={`0 0 ${size.width} ${size.height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={() => {\n if (selectedFeature) {\n selectedFeature.value = null\n }\n }}\n >\n <g transform={`translate(${padding.left} ${padding.top})`}>\n <g>{children}</g>\n {config.drawCompositionBorders &&\n Object.prototype.hasOwnProperty.call(config.projection, 'getCompositionBorders') && <CompositionBorders />}\n </g>\n </svg>\n )\n}\n","export function dynamicPropValue(prop, d, index) {\n if (typeof prop === 'function') {\n return prop(d, index)\n }\n return prop\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\nimport { geoContains } from 'd3-geo'\n\nexport function Polygon({ id, features, fill = null, stroke = null, strokeWidth = 1, zIndex = 0, styles }) {\n const context = useContext(MapContext)\n\n useEffect(() => {\n function findFeatureAtPoint(point) {\n const projectedPoint = context.projection.invert(point)\n for (const feature of features) {\n if (geoContains(feature, projectedPoint)) {\n return feature\n }\n }\n }\n\n const layer = {\n zIndex,\n findFeatureAtPoint,\n }\n context.registerLayer(layer)\n\n return () => {\n context.unregisterLayer(layer)\n }\n }, [context, zIndex, features])\n\n // const { drawToCanvas } = context.config\n\n // const draw = (ctx, path) => {\n // for (const feature of features) {\n // ctx.beginPath()\n // ctx.lineWidth = strokeWidth\n // ctx.strokeStyle = stroke\n // ctx.fillStyle = fill\n // path(feature)\n // ctx.fill()\n // }\n // }\n\n // useEffect(() => {\n // if (context.config.drawToCanvas) {\n // context.register(draw)\n // }\n // return () => {\n // if (context.config.drawToCanvas) {\n // context.unregister(draw)\n // }\n // }\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, [])\n\n // useEffect(() => {\n // if (drawToCanvas) {\n // context.invalidate()\n // }\n // }, [drawToCanvas, features, fill, stroke, strokeWidth])\n\n // if (context.config.drawToCanvas) {\n // return '<!--Polygon layer-->'\n // }\n\n return (\n <>\n {features.map((d, index) => {\n return (\n <path\n key={index}\n id={dynamicPropValue(id, d, index)}\n className={dynamicPropValue(styles, d, index)}\n fill={dynamicPropValue(fill, d, index)}\n stroke={dynamicPropValue(stroke, d, index)}\n stroke-width={dynamicPropValue(strokeWidth, d, index)}\n d={context.path(d)}\n />\n )\n })}\n </>\n )\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Line({ id, features, stroke = null, strokeWidth = 1, styles }) {\n const context = useContext(MapContext)\n\n const draw = (ctx, path) => {\n for (const feature of features) {\n ctx.beginPath()\n ctx.lineWidth = strokeWidth / context.pixelRatio\n ctx.strokeStyle = stroke\n path(feature)\n ctx.stroke()\n }\n }\n\n useEffect(() => {\n if (context.config.drawToCanvas) {\n context.register(draw)\n }\n return () => {\n if (context.config.drawToCanvas) {\n context.unregister(draw)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n if (context.config.drawToCanvas) {\n return '<!--Line layer-->'\n }\n\n return (\n <>\n {features.map((d, index) => {\n const initialStrokeWidth = dynamicPropValue(strokeWidth, d, index)\n const scaledStrokeWidth = initialStrokeWidth / context.zoomScale\n return (\n <path\n id={dynamicPropValue(id, d, index)}\n key={index}\n stroke={dynamicPropValue(stroke, d, index)}\n stroke-line-join=\"round\"\n stroke-width={scaledStrokeWidth}\n fill=\"none\"\n className={dynamicPropValue(styles, d, index)}\n d={context.path(d)}\n />\n )\n })}\n </>\n )\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\n\nexport function Prerendered({ url }) {\n const context = useContext(MapContext)\n const { width, height } = context.contentSize\n\n return <image width={width} height={height} href={url} />\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Point({ id, features, radius = 4, fill = null, stroke = null, strokeWidth = 1, zIndex = 0, styles }) {\n const context = useContext(MapContext)\n\n useEffect(() => {\n function findFeatureAtPoint(point) {\n for (const [index, feature] of features.entries()) {\n const resolvedRadius = dynamicPropValue(radius, feature, index)\n if (isNaN(resolvedRadius)) return\n\n const [cx, cy] = context.projection(feature.geometry.coordinates)\n\n const distanceSquared = (point[0] - cx) ** 2 + (point[1] - cy) ** 2\n const radiusSquared = resolvedRadius ** 2\n\n if (distanceSquared <= radiusSquared) {\n return feature\n }\n }\n\n return null\n }\n\n const layer = {\n zIndex,\n findFeatureAtPoint,\n }\n context.registerLayer(layer)\n\n return () => {\n context.unregisterLayer(layer)\n }\n }, [context, features, radius, zIndex])\n\n return (\n <>\n {features.map((d, index) => {\n const [cx, cy] = context.projection(d.geometry.coordinates)\n return (\n <circle\n id={dynamicPropValue(id, d, index)}\n cx={cx}\n cy={cy}\n r={dynamicPropValue(radius, d, index)}\n key={index}\n className={dynamicPropValue(styles, d, index)}\n fill={dynamicPropValue(fill, d, index)}\n stroke={dynamicPropValue(stroke, d, index)}\n strokeWidth={dynamicPropValue(strokeWidth, d, index)}\n />\n )\n })}\n </>\n )\n}\n","import { geoAlbers, geoMercator } from 'd3-geo'\nimport { geoAlbersUk } from 'd3-composite-projections'\nimport { SVGMapProvider } from './context/SVGMapProvider'\nimport { SVGRenderer } from './renderers/SVGRenderer'\n// import { CanvasMapProvider } from './context/CanvasMapProvider'\n// import { CanvasRenderer } from './renderers/CanvasRenderer'\nimport { toChildArray, cloneElement } from 'preact'\nimport { useRef, useMemo, useLayoutEffect, useState, useImperativeHandle } from 'preact/hooks'\nimport { forwardRef } from 'preact/compat'\nimport { useContainerSize } from '$shared/hooks/useContainerSize'\nimport styles from './style.module.css'\nexport * as MapLayers from './layers'\n\nexport const Projection = {\n geoAlbersUKComposite: geoAlbersUk(),\n geoAlbersEngland: geoAlbers().center([0, 52.7]).rotate([1.1743, 0]).parallels([50, 54]),\n geoMercator: geoMercator(),\n}\n\nexport const MapConfiguration = {\n UKComposite: {\n projection: Projection.geoAlbersUKComposite,\n bounds: [\n [-8.642194417322951, 49.88234469492934],\n [1.7683086664999994, 60.8456995072],\n ],\n drawCompositionBorders: true,\n drawToCanvas: false,\n },\n England: {\n projection: Projection.geoAlbersEngland,\n bounds: [\n [-6.41866730264044, 49.8647926027119],\n [1.76370537625026, 55.8111151140706],\n ],\n drawCompositionBorders: false,\n drawToCanvas: false,\n },\n London: {\n projection: geoMercator(),\n bounds: [\n [-0.510356073504132, 51.2867586289553],\n [0.334043866981608, 51.6918768002741],\n ],\n drawCompositionBorders: false,\n drawToCanvas: false,\n },\n}\n\nconst ZERO_PADDING = { top: 0, right: 0, bottom: 0, left: 0 }\nconst DEFAULT_ZOOM = {\n enabled: false,\n minZoom: 1,\n maxZoom: 8,\n}\n\nexport const Map = forwardRef(\n (\n {\n id,\n width,\n height,\n config,\n children,\n padding = { top: 20, right: 20, bottom: 20, left: 20 },\n zoom,\n selectedFeature,\n },\n ref,\n ) => {\n padding = padding || ZERO_PADDING\n zoom = Object.assign(DEFAULT_ZOOM, zoom)\n\n const containerRef = useRef()\n const [isReady, setIsReady] = useState(false)\n useLayoutEffect(() => {\n if (!isReady) {\n setIsReady(true)\n }\n }, [isReady])\n\n const mapRef = useRef()\n\n useImperativeHandle(\n ref,\n () => ({\n isReady,\n getContainer: () => containerRef.current,\n getContext: () => mapRef.current,\n }),\n [isReady],\n )\n\n const containerSize = useContainerSize(containerRef)\n const containerStyle = useMemo(() => {\n const style = {}\n if (width > 0) style['width'] = width\n if (height > 0) style['height'] = height\n return style\n }, [width, height])\n\n const renderSVG = containerSize && !config.drawToCanvas\n // const renderCanvas = containerSize && config.drawToCanvas\n\n return (\n <div ref={containerRef} className={styles.container} style={containerStyle}>\n {renderSVG && (\n <SVGMapProvider\n id={id}\n width={containerSize.width}\n height={containerSize.height}\n padding={padding}\n config={config}\n mapRef={mapRef}\n selectedFeature={selectedFeature}\n zoom={zoom}\n >\n <SVGRenderer>\n {toChildArray(children).map((child, index) => cloneElement(child, { zIndex: index }))}\n </SVGRenderer>\n </SVGMapProvider>\n )}\n {/* {renderCanvas && (\n <CanvasMapProvider\n id={id}\n width={containerSize.width}\n height={containerSize.height}\n padding={padding}\n config={config}\n mapRef={mapRef}\n selectedFeature={selectedFeature}\n zoom={zoom}\n >\n <CanvasRenderer>{children}</CanvasRenderer>\n </CanvasMapProvider>\n )} */}\n </div>\n )\n },\n)\n","import { ControlChange } from '$molecules'\nimport { RelativeTimeSentence } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function ResultSummary({ previous, next, title, text, timestamp, styles }) {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div class={styles.container}>\n <ControlChange previous={previous} next={next} text={title} />\n <p className={styles.paragraph}>{text}</p>\n <RelativeTimeSentence timeStamp={timestamp} />\n </div>\n )\n}\n","import styles from './search.module.css'\n\nexport function SearchIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\" className={styles.svg}>\n <path\n className={styles.path}\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.273 0c4.022 0 7.25 3.295 7.25 7.273a7.226 7.226 0 01-7.25 7.25C3.25 14.523 0 11.295 0 7.273 0 3.295 3.25 0 7.273 0zm0 1.84A5.403 5.403 0 001.84 7.274c0 3 2.409 5.454 5.432 5.454 3 0 5.454-2.454 5.454-5.454 0-3.023-2.454-5.432-5.454-5.432zM20 18.16l-5.432-5.432h-.932l-.909.91v.931L18.16 20 20 18.159z\"\n />\n </svg>\n )\n}\n","import { useRef, useState } from 'preact/hooks'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { SearchIcon } from './icons/search'\nimport { CloseButton } from '$particles'\nimport defaultStyles from './style.module.css'\n\nexport function SearchInput({\n placeholder,\n inputValue,\n maxSuggestions = 5,\n onInputChange,\n onSubmit,\n onSelect,\n onClear,\n styles,\n}) {\n styles = mergeStyles(defaultStyles, styles)\n\n const inputRef = useRef(null)\n const [selectedIndex, setSelectedIndex] = useState(-1)\n const [suggestions, setSuggestions] = useState()\n const [showSuggestions, setShowSuggestions] = useState(true)\n\n function onKeyDown(event) {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n setSelectedIndex((currentIndex) => Math.min(currentIndex + 1, suggestions.length - 1))\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n setSelectedIndex((currentIndex) => Math.max(currentIndex - 1, -1))\n } else if (event.key === 'Enter' && selectedIndex >= 0) {\n event.preventDefault()\n onSelectSuggestion(suggestions[selectedIndex])\n } else if (event.key === 'Enter') {\n onSubmit(inputRef.current.value)\n }\n }\n\n async function inputChanged(input) {\n let suggestions = await onInputChange(input)\n if (suggestions) {\n suggestions = suggestions.slice(0, maxSuggestions)\n }\n setSuggestions(suggestions)\n setSelectedIndex(-1)\n }\n\n function onSelectSuggestion(suggestion) {\n onSelect(suggestion)\n inputRef.current.value = suggestion.text\n inputRef.current.blur()\n }\n\n const showClearButton = inputRef.current?.value && inputRef.current?.value !== ''\n\n return (\n <div className={styles.searchContainer}>\n <input\n name=\"search\"\n placeholder={placeholder}\n ref={inputRef}\n type=\"text\"\n aria-label=\"Search input\"\n value={inputValue}\n onKeyDown={onKeyDown}\n onInput={(e) => {\n inputChanged(e.target.value)\n }}\n onBlur={() => {\n setShowSuggestions(false)\n }}\n onFocus={(e) => {\n e.target.select()\n setShowSuggestions(true)\n }}\n className={styles.input}\n />\n <div className={styles.searchIcon}>\n <SearchIcon />\n </div>\n {showClearButton && (\n <div className={styles.clearButton}>\n <CloseButton\n border={false}\n onClick={() => {\n const emptyValue = ''\n inputRef.current.value = emptyValue\n inputChanged(emptyValue)\n inputRef.current.focus()\n\n onClear()\n }}\n />\n </div>\n )}\n {showSuggestions && (\n <SuggestionList\n suggestions={suggestions}\n highlightText={inputRef.current?.value}\n selectedIndex={selectedIndex}\n styles={styles}\n onMouseOver={(_, index) => setSelectedIndex(index)}\n onSelect={onSelectSuggestion}\n />\n )}\n </div>\n )\n}\n\nfunction SuggestionList({ suggestions, highlightText, selectedIndex, styles, onMouseOver, onSelect }) {\n if (!suggestions || suggestions.length === 0) return\n return (\n <ul className={styles.suggestions} aria-label=\"Search suggestions\">\n {suggestions.map((d, index) => {\n return (\n <li\n key={index}\n aria-label={d.text}\n className={[styles.suggestion, index === selectedIndex && styles.selected].join(' ')}\n onMouseDown={(e) => e.preventDefault()}\n onMouseOver={() => onMouseOver(d, index)}\n onClick={() => {\n onSelect(d)\n }}\n >\n {d.text.split(new RegExp(`(${highlightText})`, 'ig')).map((part, i) =>\n i % 2 === 1 ? (\n <span className={styles.highlighted} key={i}>\n {part}\n </span>\n ) : (\n part\n ),\n )}\n </li>\n )\n })}\n </ul>\n )\n}\n","import { CircleIcon } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport function RefreshIndicator({ text, styles }) {\n styles = mergeStyles(defaultStyles, styles)\n return (\n <div className={styles.refreshIndicator}>\n <span className={styles.icon}>\n <CircleIcon pulse={true} />\n </span>\n <span className={styles.liveText}>LIVE</span>\n <span className={styles.refreshText}>{text}</span>\n </div>\n )\n}\n","import { toChildArray } from 'preact'\nimport defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const GridType = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n}\n\nexport function ResponsiveGrid({ type = GridType.medium, children, styles }) {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div className={styles.grid} data-grid-type={type}>\n {toChildArray(children).map((child, index) => {\n return (\n <div key={index} className={styles.gridItem}>\n {child}\n </div>\n )\n })}\n </div>\n )\n}\n","function n(n){return r=>{n.forEach(n=>{\"function\"==typeof n?n(r):null!=n&&(n.current=r)})}}export{n as mergeRefs};\n","import{cloneElement as e,createElement as r}from\"preact\";import{mergeRefs as E}from\"preact-merge-refs\";import{useRef as t,useState as n,useEffect as o,useLayoutEffect as i,useMemo as a}from\"preact/hooks\";var T,c;!function(e){e.APPEAR=\"appear\",e.APPEAR_ACTIVE=\"appearActive\",e.APPEAR_DONE=\"appearDone\",e.ENTER=\"enter\",e.ENTER_ACTIVE=\"enterActive\",e.ENTER_DONE=\"enterDone\",e.EXIT=\"exit\",e.EXIT_ACTIVE=\"exitActive\",e.EXIT_DONE=\"exitDone\"}(T||(T={})),function(e){e.ENTER=\"onEnter\",e.ENTERING=\"onEntering\",e.ENTERED=\"onEntered\",e.EXIT=\"onExit\",e.EXITING=\"onExiting\",e.EXITED=\"onExited\"}(c||(c={}));const s={[T.APPEAR]:[c.ENTER,T.APPEAR_ACTIVE],[T.APPEAR_ACTIVE]:[c.ENTERING,T.APPEAR_DONE,!0],[T.APPEAR_DONE]:[c.ENTERED],[T.ENTER]:[c.ENTER,T.ENTER_ACTIVE],[T.ENTER_ACTIVE]:[c.ENTERING,T.ENTER_DONE,!0],[T.ENTER_DONE]:[c.ENTERED],[T.EXIT]:[c.EXIT,T.EXIT_ACTIVE],[T.EXIT_ACTIVE]:[c.EXITING,T.EXIT_DONE,!0],[T.EXIT_DONE]:[c.EXITED]};var u=r=>{const{children:c,in:u=!1,appear:A=!1,enter:N=!0,exit:l=!0,duration:I=500,alwaysMounted:p=!1,addEndListener:R}=r,P=t(),_=t();let d=!1;const[f,D]=n(()=>(d=!0,u?A?T.APPEAR:T.APPEAR_DONE:T.EXIT_DONE));o(()=>{var e;const{setTimeout:E,clearTimeout:t}=window,[n,o,i]=s[f];return null==(e=r[n])||e.call(r,P.current),o&&(i?R?R(P.current,()=>D(o)):_.current=E(D,I,o):D(o)),()=>{t(_.current)}},[f,I]),i(()=>{d||D(u?N?T.ENTER:T.ENTER_DONE:l?T.EXIT:T.EXIT_DONE)},[u]);const X=a(()=>{const e={};return Object.values(T).forEach(r=>{e[r]=f===r}),e},[f]);if(!p&&f===T.EXIT_DONE)return null;const O=c(X,f);return e(O,{ref:E([P,O.ref])})};function A(){return A=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var E=arguments[r];for(var t in E)Object.prototype.hasOwnProperty.call(E,t)&&(e[t]=E[t])}return e},A.apply(this,arguments)}function N(e,r){if(null==e)return{};var E,t,n={},o=Object.keys(e);for(t=0;t<o.length;t++)r.indexOf(E=o[t])>=0||(n[E]=e[E]);return n}const l=(e,r,E)=>{const{[r]:t=E}=e.props;return t};var I=r=>{const{children:E,appear:n=!1,enter:o=!0,exit:i=!0,duration:a=500}=r,T=Array.isArray(E)?E:[E],c=t(!0),s=t([]),u=[],N=[],I=(r,E)=>{if(!r)return;const t=e(r,A({enter:o,exit:i,duration:a},r.props,{in:!E,appear:c.current?l(r,\"appear\",n):l(r,\"enter\",o)}));u.push({visibleChild:t,removeTimeout:E}),N.push(t)};let p=0;s.current.forEach(({visibleChild:e,removeTimeout:r})=>{const{key:E}=e,t=T.findIndex(e=>e.key===E);if(t<0)r?I(e,r):i&&!1!==e.props.exit&&I(e,(n=e,setTimeout(()=>{const{current:e}=s,r=e.findIndex(({visibleChild:e})=>e.key===n.key);r>-1&&e.splice(r,1)},l(n,\"duration\",a))));else{r&&clearTimeout(r);for(let e=p;e<=t;e++)I(T[e],null)}var n;p=Math.max(p,t+1)});for(let e=p;e<T.length;e++)I(T[e],null);return s.current=u,c.current=!1,N};const p=[\"children\",\"classNames\"],R={[T.APPEAR]:\"-appear\",[T.APPEAR_ACTIVE]:\"-appear-active\",[T.APPEAR_DONE]:\"-appear-done\",[T.ENTER]:\"-enter\",[T.ENTER_ACTIVE]:\"-enter-active\",[T.ENTER_DONE]:\"-enter-done\",[T.EXIT]:\"-exit\",[T.EXIT_ACTIVE]:\"-exit-active\",[T.EXIT_DONE]:\"-exit-done\"},P=(...e)=>e.filter(e=>!!e).join(\" \"),_=(e,r)=>\"string\"==typeof r?`${r}${R[e]}`:r[e];var d=E=>{const{children:t,classNames:n}=E,o=N(E,p);return r(u,o,(r,E)=>{const{className:o}=t.props,i=a(()=>P(o,((e,r)=>{const E=_(e,r);switch(e){case T.APPEAR_ACTIVE:return P(_(T.APPEAR,r),E);case T.ENTER_ACTIVE:return P(_(T.ENTER,r),E);case T.EXIT_ACTIVE:return P(_(T.EXIT,r),E);default:return E}})(E,n)),[o,n,E]);return e(t,{className:i})})};const f=[\"children\",\"styles\"];var D=E=>{const{children:t,styles:n}=E,o=N(E,f);return r(u,o,(r,E)=>{const{style:o}=t.props,i=a(()=>A({},((e,r)=>{const E=r[e];switch(e){case T.APPEAR_ACTIVE:return A({},r[T.APPEAR],E);case T.ENTER_ACTIVE:return A({},r[T.ENTER],E);case T.EXIT_ACTIVE:return A({},r[T.EXIT],E);default:return E}})(E,n),o),[o,n,E]);return e(t,{style:i})})};export{d as CSSTransition,D as StyleTransition,u as Transition,I as TransitionGroup};\n","import { CSSTransition } from \"preact-transitioning\"\nimport { useCallback, useEffect, useRef } from \"preact/hooks\"\nimport { createPortal } from \"preact/compat\"\nimport styles from \"./style.module.css\"\n\nexport function Modal({ visible = false, children, onClickOutside }) {\n const modalBoxRef = useRef()\n const onClick = useCallback(\n (event) => {\n if (!modalBoxRef.current.contains(event.target)) {\n if (onClickOutside && visible) onClickOutside(event)\n }\n },\n [onClickOutside, visible],\n )\n\n useEffect(() => {\n if (visible) {\n window.addEventListener(\"scroll\", onClick, { once: true })\n }\n return () => {\n if (visible) {\n window.removeEventListener(\"scroll\", onClick)\n }\n }\n }, [onClick, visible])\n\n return createPortal(\n <CSSTransition in={visible} duration={300} classNames={styles}>\n <div class={styles.transitionContainer} onClick={onClick} style={{ pointerEvents: visible ? \"auto\" : \"none\" }}>\n <div ref={modalBoxRef} class={styles.modalBox}>\n {children}\n </div>\n </div>\n </CSSTransition>,\n document.body,\n )\n}\n","import { useState, useCallback, useMemo } from \"preact/hooks\"\nimport { Chevron } from \"$particles\"\nimport styles from \"./style.module.css\"\n\nexport function Dropdown({ title, hint, options, onSelect, collapseOnSelect = false, expandByDefault = true }) {\n const [expanded, setExpanded] = useState(expandByDefault)\n const [selectedIndex, setSelectedIndex] = useState(0)\n\n const onOptionClick = useCallback(\n (option, index) => {\n setSelectedIndex(index)\n if (onSelect) onSelect(option, index)\n if (collapseOnSelect) setExpanded(false)\n },\n [onSelect],\n )\n\n const optionGroups = useMemo(() => {\n const containsOptionGroups = \"options\" in options[0]\n if (!containsOptionGroups) {\n // create single option group\n return [{ options }]\n }\n\n // assign consecutive indices to options within groups\n let optionIndex = 0\n for (const group of options) {\n for (const option of group.options) {\n option.index = optionIndex\n optionIndex++\n }\n }\n\n return options\n }, options)\n\n const flatOptions = useMemo(() => {\n return optionGroups.map((group) => group.options).flat()\n }, [optionGroups])\n\n const iconForSelectedOption = useMemo(() => {\n const selectedOption = flatOptions[selectedIndex]\n return selectedOption.icon\n }, [flatOptions, selectedIndex])\n\n return (\n <div className={styles.container}>\n <button className={styles.button} onClick={() => setExpanded((current) => !current)}>\n <img src={iconForSelectedOption} className={styles.icon} />\n <span className={styles.title}>{title}</span>\n <Chevron active={true} size=\"large\" direction={expanded ? \"up\" : \"down\"} />\n </button>\n\n <div className={styles.popout} style={{ visibility: expanded ? \"visible\" : \"hidden\" }}>\n {hint && <p className={styles.hint}>{hint}</p>}\n {optionGroups.map((group) => (\n <OptionGroup {...group} selectedIndex={selectedIndex} onOptionClick={onOptionClick} />\n ))}\n </div>\n </div>\n )\n}\n\nfunction OptionGroup({ title, options, selectedIndex, onOptionClick }) {\n return (\n <>\n {title && <p className={styles.groupHeader}>{title}</p>}\n {options.map((option) => {\n return (\n <button key={option.title} className={styles.option} onClick={() => onOptionClick(option, option.index)}>\n <img src={option.icon} className={styles.optionIcon} />\n <div className={styles.optionText}>\n <h4 className={styles.optionTitle}>{option.title}</h4>\n <p className={styles.optionDescription}>{option.description}</p>\n </div>\n {option.index === selectedIndex && (\n <div className={styles.checkmark}>\n <Checkmark />\n </div>\n )}\n </button>\n )\n })}\n </>\n )\n}\n\nfunction Checkmark() {\n return (\n <svg width=\"11\" height=\"9\" viewBox=\"0 0 11 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M0.631814 4.43687L0.0839844 4.9847L2.82313 8.8195H3.08335L10.9173 0.711624L10.3695 0.17749L3.08335 6.77884L0.631814 4.43687Z\"\n className={styles.checkmarkPath}\n />\n </svg>\n )\n}\n","import { useLayoutEffect, useState, useRef } from \"preact/hooks\"\nimport { useWindowSize } from \"$shared/hooks/useWindowSize\"\nimport { StackedBar, LabelType, LabelOverlapConfig } from \"$particles/stacked-bar\"\nimport defaultStyles from \"./style.module.scss\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nexport function CoalitionsTracker({\n coalitions,\n threshold,\n barChartHeight = 32,\n listMembersAccessor = \"parties\",\n listMemberTotalAccessor = \"totalSeats\",\n listDescriptionAccessor = \"description\",\n abbreviationAccessor = \"abbreviation\",\n thresholdTextBold,\n thresholdText,\n styles,\n labelOverlapConfig = LabelOverlapConfig,\n}) {\n const wrapperRef = useRef(null)\n const thresholdTextRef = useRef(null)\n const [width, setWidth] = useState(0)\n const biggestListTotal = Math.max(...coalitions.map((l) => l[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)))\n const windowSize = useWindowSize()\n const thresholdTextMinWidth = windowSize.width < 740 ? 66 : 150\n const thresholdDotWidth = 11\n const thresholdTextPaddingLeft = 5\n const maxBarWidth = width - thresholdTextMinWidth - (thresholdDotWidth - 1) / 2 - thresholdTextPaddingLeft\n const thresholdLeft = (threshold / biggestListTotal) * maxBarWidth\n\n const parsedLists = coalitions.map((coalition) => {\n const listTotal = coalition[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)\n return {\n title: coalition[\"name\"],\n description: coalition[listDescriptionAccessor],\n height: barChartHeight,\n width: (listTotal / biggestListTotal) * maxBarWidth,\n stack: coalition[listMembersAccessor]\n .map((m) => {\n const listTotal = coalition[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)\n\n return {\n label: m[listMemberTotalAccessor],\n fraction: m[listMemberTotalAccessor] / listTotal,\n abbreviation: m[abbreviationAccessor],\n }\n })\n .sort((a, b) => b.fraction - a.fraction),\n }\n })\n\n styles = mergeStyles(defaultStyles, styles)\n\n useLayoutEffect(() => {\n const newWidth = wrapperRef.current.getBoundingClientRect().width\n setWidth(newWidth)\n }, [windowSize])\n\n const renderCoalition = (list, index) => {\n if (list.width <= 0) {\n return\n }\n return (\n <div key={index} className={styles.coalition} style={{ position: \"relative\", zIndex: 2 }}>\n <h4 className={styles.title}>{list.title}</h4>\n <p className={styles.description} style={{ maxWidth: thresholdLeft <= 620 ? thresholdLeft - 8 : 620 }}>\n {list.description}\n </p>\n <StackedBar labelOverlapConfig={labelOverlapConfig} labelType={LabelType.hanging} stack={list.stack} width={list.width} height={barChartHeight} createSVG={true} />\n </div>\n )\n }\n\n return (\n <div ref={wrapperRef} className={styles.coalitionsWrapper}>\n <div className={styles.coalitionsContainer}>{parsedLists.map(renderCoalition)}</div>\n <div\n className={styles.thresholdDot}\n style={{\n position: \"absolute\",\n height: thresholdDotWidth,\n width: thresholdDotWidth,\n top: 0,\n left: 0.5 + thresholdLeft - thresholdDotWidth / 2,\n }}\n />\n <div\n className={styles.thresholdLine}\n style={{\n position: \"absolute\",\n height: \"100%\",\n width: 1,\n top: 0,\n left: thresholdLeft,\n }}\n />\n <div\n ref={thresholdTextRef}\n className={styles.thresholdText}\n style={{\n position: \"absolute\",\n minWidth: thresholdTextMinWidth,\n width: \"auto\",\n top: -(thresholdDotWidth + 1) / 2,\n left: thresholdLeft + (thresholdDotWidth - 1) / 2 + thresholdTextPaddingLeft,\n }}\n >\n {thresholdTextBold && <span className={styles.thresholdTextBold}>{thresholdTextBold}</span>}\n {thresholdText && <span>{thresholdText}</span>}\n </div>\n </div>\n )\n}\n","import styles from './style.module.scss'\n\nexport function Gradient() {\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"none\"\n >\n <g className={styles.gradient}>\n <rect fill=\"url(#paint0_linear_3798_6653)\" />\n </g>\n <defs>\n <linearGradient id=\"paint0_linear_3798_6653\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop className={styles.firstStop} />\n <stop className={styles.lastStop} offset=\"1\" />\n </linearGradient>\n </defs>\n </svg>\n )\n}\n","import { toChildArray } from 'preact'\nimport { useState, useRef, useLayoutEffect, useMemo } from 'preact/hooks'\nimport { useWindowSize } from '$shared/hooks/useWindowSize'\nimport { Gradient } from './gradient'\nimport { ArrowButton, Button } from '$particles'\nimport styles from './style.module.scss'\n\nexport function Ticker({ maxItems = 20, onStateChange, children }) {\n const [pageIndex, setPageIndex] = useState(0)\n const [pageWidth, setPageWidth] = useState(0)\n const [numberOfPages, setNumberOfPages] = useState(0)\n\n const offsetWidth = useMemo(() => {\n return -pageIndex * (pageWidth || 0)\n }, [pageIndex, pageWidth])\n\n const windowSize = useWindowSize()\n\n const tickerRef = useRef()\n const tickerItemsRef = useRef()\n const tickerScrollRef = useRef()\n const controlsRef = useRef()\n\n const [hideButtons, setHideButtons] = useState(false)\n\n const [expanded, setExpanded] = useState(false)\n\n const childArray = toChildArray(children)\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n const pageWidth = tickerItemsContainer.clientWidth * 0.75\n setPageWidth(pageWidth)\n\n const numberOfPages = Math.ceil(tickerScrollRef.current.scrollWidth / pageWidth)\n setNumberOfPages(numberOfPages)\n }, [])\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n\n const hideButtons =\n windowSize.width >= 480\n ? tickerScrollRef.current.scrollWidth <= tickerItemsContainer.clientWidth\n : tickerScrollRef.current.scrollHeight <= tickerItemsContainer.clientHeight\n setHideButtons(hideButtons)\n }, [windowSize, setHideButtons])\n\n function toggleExpandedState() {\n setExpanded((expanded) => {\n const newState = !expanded\n if (onStateChange) onStateChange({ expanded: newState })\n return newState\n })\n }\n\n return (\n <div\n ref={tickerRef}\n className={styles.ticker}\n style={`--ticker-offset: ${offsetWidth}px;`}\n data-expanded={expanded}\n >\n <div ref={tickerItemsRef} className={styles.tickerItems}>\n <div ref={tickerScrollRef} className={styles.tickerScroll}>\n {childArray.map((child, index) => (\n <div className={styles.tickerItem} key={index}>\n {child}\n </div>\n ))}\n </div>\n </div>\n <div ref={controlsRef} className={styles.controls} style={hideButtons && { display: 'none' }}>\n <div className={styles.gradient}>\n <Gradient />\n </div>\n <div className={styles.buttons}>\n <ArrowButton onClick={() => setPageIndex((d) => d + 1)} disabled={pageIndex >= numberOfPages - 1} />\n <ArrowButton direction=\"left\" onClick={() => setPageIndex((d) => d - 1)} disabled={pageIndex <= 0} />\n </div>\n <div className={styles.button}>\n <Button type=\"regular\" styles={{ buttonInner: styles.buttonInner }} onClick={toggleExpandedState}>\n {expanded ? 'Show fewer' : `Show ${maxItems} most recent`}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import { useRef, useEffect, useState } from 'preact/hooks'\nimport { pointInsideRect } from '$shared/helpers/geometry'\n\nexport function useTouchOrHover() {\n const ref = useRef()\n const [position, setPosition] = useState()\n const [isActive, setIsActive] = useState(false)\n const [touchRect, setTouchRect] = useState()\n\n useEffect(() => {\n const element = ref.current\n\n let touchCancelled = false\n\n const touchStarted = (event) => {\n if (event.touches.length > 1) return\n\n touchCancelled = false\n\n const touch = event.touches[0]\n const { clientX, clientY } = touch\n\n const rect = element.getBoundingClientRect()\n const point = { x: clientX - rect.left, y: clientY - rect.top }\n setPosition(point)\n\n const touchRect = {\n x: clientX - touch.radiusX,\n y: clientY - touch.radiusY,\n width: touch.radiusX * 2,\n height: touch.radiusY * 2,\n }\n setTouchRect(touchRect)\n\n setIsActive(true)\n\n event.stopPropagation()\n }\n\n const touchMoved = (event) => {\n if (touchCancelled || event.targetTouches.length !== 1) return\n\n const touch = event.targetTouches[0]\n\n const { clientX, clientY } = touch\n const rect = element.getBoundingClientRect()\n const point = { x: clientX - rect.left, y: clientY - rect.top }\n\n // check if touch is:\n // 1. cancelable. if it is not, then another gesture has started\n // 2. still inside target rect\n // if one of those conditions is not met, we hide the tooltip\n if (!event.cancelable || !pointInsideRect(point, rect)) {\n setIsActive(false)\n touchCancelled = true\n } else {\n setPosition(point)\n setIsActive(true)\n }\n }\n\n const touchEnded = (event) => {\n if (event.cancelable) {\n // prevent simulated click events\n event.preventDefault()\n }\n setIsActive(false)\n setPosition(null)\n }\n\n const mouseOver = (event) => {\n const { clientX, clientY } = event\n\n const rect = element.getBoundingClientRect()\n const x = clientX - rect.left\n const y = clientY - rect.top\n\n setPosition({ x, y })\n setIsActive(true)\n }\n\n const mouseMoved = (event) => {\n const { clientX, clientY } = event\n\n const rect = element.getBoundingClientRect()\n const x = clientX - rect.left\n const y = clientY - rect.top\n\n setPosition({ x, y })\n }\n\n const mouseOut = () => {\n setIsActive(false)\n setPosition(null)\n }\n\n element.addEventListener('touchstart', touchStarted)\n element.addEventListener('touchmove', touchMoved)\n element.addEventListener('touchend', touchEnded)\n element.addEventListener('touchcancel', touchEnded)\n\n element.addEventListener('mouseover', mouseOver)\n element.addEventListener('mousemove', mouseMoved)\n element.addEventListener('mouseout', mouseOut)\n\n return () => {\n element.removeEventListener('touchstart', touchStarted)\n element.removeEventListener('touchmove', touchMoved)\n element.removeEventListener('touchend', mouseOut)\n element.removeEventListener('touchcancel', mouseOut)\n\n element.removeEventListener('mouseover', touchStarted)\n element.removeEventListener('mousemove', mouseMoved)\n element.removeEventListener('mouseout', mouseOut)\n }\n }, [])\n\n return {\n touchOrHoverRef: ref,\n touchOrHoverIsActive: isActive,\n touchRect,\n positionInTarget: position,\n }\n}\n\n"],"names":["mergeStyles","firstStyle","secondStyle","Error","concat","allKeys","Set","Object","keys","merged","Array","from","reduce","result","key","DIRECTION","up","down","SIZE","small","large","Chevron","active","direction","size","styles","defaultStylesCopy","defaultStyles","path","group","rotated","_jsx","SmallChevron","LargeChevron","width","height","viewBox","className","svg","fill","xmlns","children","style","d","DOT_TYPE","round","square","LegendItem","dotType","text","abbreviation","dot","circle","_jsxs","container","preventOverlap","labelPositions","iteration","labelSize","coordinate","moveBothLabels","maxIterations","totalOverlap","index","length","previousElement","element","overlap","uniqueBy","array","map","set","Map","values","positionLabels","labels","sort","a","b","scaleLinear","domain","range","domainMin","domainMax","rangeMin","rangeMax","slope","intercept","x","LabelType","hanging","inline","LabelOverlapConfig","StackedBar","stack","hideLabels","labelType","showBackgroundRect","createSVG","labelOverlapConfig","rectElements","useRef","textElements","svgHeight","renderLabel","config","i","ref","current","label","display","y","textAnchor","dominantBaseline","value","totalWidth","content","itemWidth","fraction","labelConfig","transform","bar","hangingLabelConfig","useMemo","totalW","backgroundRect","overflow","shouldUpdate","oldState","newState","isObj","obj","isArray","createStore","initialStore","store","listeners","useStore","selectorFn","subscribe","useCallback","updater","listener","add","delete","syncedStore","useSyncExternalStore","getStore","getServerStore","setStore","action","oldStore","Function","forEach","useGradients","setGradients","getGradients","GradientIcon","props","previous","next","gradientId","gradients","useEffect","id","document","getElementById","createElement","body","prepend","render","GradientDefs","class","x1","y1","x2","y2","gradientUnits","offset","useWindowSize","windowSize","setWindowSize","useState","window","innerWidth","innerHeight","handleResize","addEventListener","removeEventListener","useContainerSize","containerRef","containerSize","setContainerSize","useLayoutEffect","clientWidth","clientHeight","WaffleType","WaffleUnit","type","attributes","Waffle","units","numberOfRows","idAccessor","onMouseOver","total","columns","Math","ceil","unitWidth","unitHeight","unit","j","e","floor","r","InfoButton","forwardRef","onClick","button","CircleIcon","color","pulse","join","rx","module","this","n","s","u","c","t","p","_","M","m","f","l","$","v","g","D","o","h","dayjs","extend","relativeTime","RelativeTimeSentence","timeStamp","timeSince","fromNow","Container","sideBorders","pageContainer","sideBordersStyle","ChangeBar","positive","party","centre","parseFloat","barwidth","negleft","posleft","thisStyles","thisColor","zeroStyles","wrapper","zero","SquareCutCornerIcon","cornerColor","squareColor","squareSize","cornerSize","cornerMargin","dividingLineColor","points","corner","getItemRotate","fromBottom","fromLeft","getContainerFlip","scaleX","scaleY","StackedGrid","containerFlip","itemRotateClass","stackedGridContainer","SquareIcon","squareFill","ArrowButton","disabled","icon","cx","cy","Button","buttonInner","CloseButton","border","buttonBorder","AdSlot","name","sizeMapping","slotId","mobileSizes","mobile","tabletSizes","tablet","desktopSizes","desktop","slot","sortAscending","accessor","valueA","valueB","sortDescending","useTable","data","sortState","sortedData","columnIndex","column","sortFunction","ascending","toSorted","columnModels","isSorted","ColumnModel","rowModels","rowIndex","cells","CellModel","cell","RowModel","rows","constructor","definition","defaultValue","header","headerProps","sortable","headerCellStyle","row","displayValue","prototype","hasOwnProperty","call","toString","rowData","JSON","stringify","Table","hideHeader","setSortState","findIndex","table","sortByColumn","currentState","cellSpacing","cellPadding","headerCell","HeaderCell","hideHeaderNoBorder","bodyRow","bodyCell","headerCellButton","SlopeChart","lines","y1Label","y2Label","axis","padding","left","right","top","bottom","wrapperRef","setWidth","contentWidth","contentHeight","yScale","show","newWidth","getBoundingClientRect","y1Labels","y2Labels","chart","axisLabel","startLabel","endLabel","line","itemStyles","slopeChartContainer","rectsIntersect","rect1","rect2","pointInsideRect","point","rect","Tooltip","for","targetElement","touchRect","positionInTarget","tooltipPosition","setTooltipPosition","displayElement","setDisplayElement","tooltipRef","querySelector","targetRect","newPosition","tooltipPositionForPoint","tooltip","tooltipPositionForRect","fixedStyle","position","zIndex","createPortal","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","displayElementRect","tooltipRect","ControlChange","hasChanged","_Fragment","FirstPastThePostWaffle","lineOverHang","halfLineText","waffle","ToplineResult","secondaryName","mainNumber","mainNumberSuffix","secondaryNumber","displayRow","onInfoPress","showInfoButton","infoButtonRef","displayStyle","displayColumn","toplineResult","topRow","infoButton","displayNumbers","primaryname","subhead","secondaryname","PageSection","borderTop","backgroundColor","minHeight","setMinHeight","headerRef","headerElement","section","ColumnChart","maxValue","minValue","chartHeight","chartWidth","columnWidth","columnPadding","totalColumnWidth","Number","marginBottom","getHeight","input","abs","SubtitleStyle","PartyProfile","title","subtitle","subtitleStyle","blurb","footnote","imgSrc","src","img","epsilon","geoStream","x0","y0","main","albers","bboxFeature","bounds","minLon","minLat","maxLon","maxLat","feature","properties","geometry","coordinates","MapContext","createContext","calculateScale","mapBounds","mapWidthPixels","mapHeightPixels","south","west","north","east","widthKilometers","distanceInKmBetweenEarthCoordinates","heightKilometers","scale","point1","point2","lon1","lat1","lon2","lat2","earthRadiusKm","dLat","degreesToRadians","dLon","sin","cos","atan2","sqrt","degrees","PI","SVGMapProvider","mapRef","zoom","selectedFeature","contentSize","projection","fitSize","geoPath","layerSet","layers","updateLayers","_layers","registerLayer","layer","unregisterLayer","findFeatureAtPoint","adjustedPoint","getVisibleBounds","projectedSW","invert","projectedNE","getZoomScale","context","extent","Provider","CompositionBorders","useContext","getCompositionBorders","SVGRenderer","drawCompositionBorders","dynamicPropValue","prop","Polygon","features","stroke","strokeWidth","projectedPoint","geoContains","Line","draw","ctx","beginPath","lineWidth","pixelRatio","strokeStyle","drawToCanvas","register","unregister","initialStrokeWidth","scaledStrokeWidth","zoomScale","Prerendered","url","href","Point","radius","entries","resolvedRadius","isNaN","distanceSquared","radiusSquared","Projection","geoAlbersUKComposite","geoAlbersUk","geoAlbersEngland","geoAlbers","center","rotate","parallels","geoMercator","MapConfiguration","UKComposite","England","London","ZERO_PADDING","DEFAULT_ZOOM","enabled","minZoom","maxZoom","assign","isReady","setIsReady","useImperativeHandle","getContainer","getContext","containerStyle","renderSVG","toChildArray","child","cloneElement","ResultSummary","timestamp","paragraph","SearchIcon","SearchInput","placeholder","inputValue","maxSuggestions","onInputChange","onSubmit","onSelect","onClear","inputRef","selectedIndex","setSelectedIndex","suggestions","setSuggestions","showSuggestions","setShowSuggestions","onKeyDown","event","preventDefault","currentIndex","min","max","inputChanged","slice","onSelectSuggestion","suggestion","blur","showClearButton","searchContainer","onInput","target","onBlur","onFocus","select","searchIcon","clearButton","emptyValue","focus","SuggestionList","highlightText","selected","onMouseDown","split","RegExp","part","highlighted","RefreshIndicator","refreshIndicator","liveText","refreshText","GridType","medium","ResponsiveGrid","grid","gridItem","N","R","P","E","Modal","visible","onClickOutside","modalBoxRef","contains","once","CSSTransition","in","duration","classNames","transitionContainer","pointerEvents","modalBox","Dropdown","hint","options","collapseOnSelect","expandByDefault","expanded","setExpanded","onOptionClick","option","optionGroups","containsOptionGroups","optionIndex","flatOptions","flat","iconForSelectedOption","selectedOption","popout","visibility","OptionGroup","groupHeader","optionIcon","optionText","optionTitle","optionDescription","description","checkmark","Checkmark","checkmarkPath","CoalitionsTracker","coalitions","threshold","barChartHeight","listMembersAccessor","listMemberTotalAccessor","listDescriptionAccessor","abbreviationAccessor","thresholdTextBold","thresholdText","thresholdTextRef","biggestListTotal","acc","cur","thresholdTextMinWidth","thresholdDotWidth","thresholdTextPaddingLeft","maxBarWidth","thresholdLeft","parsedLists","coalition","listTotal","renderCoalition","list","maxWidth","coalitionsWrapper","coalitionsContainer","thresholdDot","thresholdLine","minWidth","Gradient","preserveAspectRatio","gradient","firstStop","lastStop","Ticker","maxItems","onStateChange","pageIndex","setPageIndex","pageWidth","setPageWidth","numberOfPages","setNumberOfPages","tickerRef","tickerItemsRef","tickerScrollRef","controlsRef","hideButtons","setHideButtons","childArray","tickerItemsContainer","scrollWidth","scrollHeight","toggleExpandedState","ticker","tickerItems","tickerScroll","tickerItem","controls","buttons","useTouchOrHover","setPosition","isActive","setIsActive","setTouchRect","touchCancelled","touchStarted","touches","touch","clientX","clientY","radiusX","radiusY","stopPropagation","touchMoved","targetTouches","cancelable","touchEnded","mouseOver","mouseMoved","mouseOut","touchOrHoverRef","touchOrHoverIsActive"],"mappings":"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","x_google_ignoreList":[14,15,37,38,39,40,41,59,60]}
|
|
1
|
+
{"version":3,"file":"interactive-component-library.umd.cjs","sources":["../src/lib/styles/helpers/mergeStyles.js","../src/lib/components/particles/chevron/index.jsx","../src/lib/components/particles/legend-item/index.jsx","../src/lib/shared/helpers/labelsUtil.js","../src/lib/components/particles/stacked-bar/index.jsx","../src/lib/shared/helpers/shouldUpdate.js","../src/lib/shared/helpers/createStore.js","../src/lib/components/particles/gradient-icon/gradientStore.js","../src/lib/components/particles/gradient-icon/index.jsx","../src/lib/shared/hooks/useWindowSize.js","../src/lib/shared/hooks/useContainerSize.js","../src/lib/components/particles/waffle/index.jsx","../src/lib/components/particles/info-button/index.jsx","../src/lib/components/particles/circle-icon/index.jsx","../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/dayjs.min.js","../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/relativeTime.js","../src/lib/components/particles/relative-time-sentence/index.jsx","../src/lib/components/particles/container/index.jsx","../src/lib/components/particles/change-bar/index.jsx","../src/lib/components/particles/square-cut-corner-icon/index.jsx","../src/lib/components/particles/stacked-grid/index.jsx","../src/lib/components/particles/square-icon/index.jsx","../src/lib/components/particles/arrow-button/index.jsx","../src/lib/components/particles/button/index.jsx","../src/lib/components/particles/close-button/index.jsx","../src/lib/components/particles/ad-slot/index.jsx","../src/lib/components/molecules/table/useTable.jsx","../src/lib/components/molecules/table/index.jsx","../src/lib/components/molecules/slope-chart/index.jsx","../src/lib/shared/helpers/geometry.js","../src/lib/components/molecules/tooltip/index.jsx","../src/lib/components/molecules/control-change/index.jsx","../src/lib/components/molecules/first-past-the-post-waffle/index.jsx","../src/lib/components/molecules/topline-result/index.jsx","../src/lib/components/molecules/page-section/index.jsx","../src/lib/components/molecules/column-chart/index.jsx","../src/lib/components/molecules/party-profile/index.jsx","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/math.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/bounds.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/fit.js","../node_modules/.pnpm/d3-path@2.0.0/node_modules/d3-path/src/path.js","../node_modules/.pnpm/d3-composite-projections@1.4.0/node_modules/d3-composite-projections/src/albersUk.js","../src/lib/components/molecules/map/helpers/bboxFeature.js","../src/lib/components/molecules/map/context/MapContext.js","../src/lib/components/molecules/map/helpers/geoMath.js","../src/lib/components/molecules/map/context/SVGMapProvider.jsx","../src/lib/components/molecules/map/layers/CompositionBorders.jsx","../src/lib/components/molecules/map/renderers/SVGRenderer.jsx","../src/lib/components/molecules/map/helpers/dynamicPropValue.js","../src/lib/components/molecules/map/layers/Polygon.jsx","../src/lib/components/molecules/map/layers/Line.jsx","../src/lib/components/molecules/map/layers/Prerendered.jsx","../src/lib/components/molecules/map/layers/Point.jsx","../src/lib/components/molecules/map/index.jsx","../src/lib/components/molecules/result-summary/index.jsx","../src/lib/components/molecules/search-input/icons/search.jsx","../src/lib/components/molecules/search-input/index.jsx","../src/lib/components/molecules/refresh-indicator/index.jsx","../src/lib/components/molecules/responsive-grid/index.jsx","../node_modules/.pnpm/preact-merge-refs@1.0.2_preact@10.12.1/node_modules/preact-merge-refs/lib/preact-merge-refs.modern.js","../node_modules/.pnpm/preact-transitioning@1.4.1_preact@10.12.1/node_modules/preact-transitioning/lib/preact-transitioning.modern.mjs","../src/lib/components/molecules/modal/index.jsx","../src/lib/components/molecules/dropdown/index.jsx","../src/lib/components/organisms/coalitions-tracker/index.jsx","../src/lib/components/organisms/ticker/gradient/index.jsx","../src/lib/components/organisms/ticker/index.jsx","../src/lib/shared/hooks/useTouchOrHover.js"],"sourcesContent":["export function mergeStyles(firstStyle, secondStyle) {\n if (!firstStyle) return secondStyle\n if (!secondStyle) return firstStyle\n if (typeof firstStyle === 'string') {\n if (typeof secondStyle !== 'string') {\n throw new Error('Styles to merge must be of the same type')\n }\n return firstStyle.concat(' ', secondStyle)\n }\n\n const allKeys = new Set([...Object.keys(firstStyle), ...Object.keys(secondStyle)])\n const merged = Array.from(allKeys).reduce((result, key) => {\n result[key] = mergeStyles(firstStyle[key], secondStyle[key])\n return result\n }, {})\n\n return merged\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst DIRECTION = {\n up: 'up',\n down: 'down',\n}\n\nconst SIZE = {\n small: 'small',\n large: 'large',\n}\n\nexport function Chevron({ active = false, direction = DIRECTION.down, size = SIZE.small, styles }) {\n const defaultStylesCopy = { ...defaultStyles }\n\n if (active) {\n defaultStylesCopy.path = mergeStyles(defaultStyles.path, defaultStyles.active)\n }\n\n if (direction === DIRECTION.up) {\n defaultStylesCopy.group = mergeStyles(defaultStyles.group, defaultStyles.rotated)\n }\n\n styles = mergeStyles(defaultStylesCopy, styles)\n\n return size === SIZE.small ? <SmallChevron styles={styles} /> : <LargeChevron styles={styles} />\n}\n\nfunction SmallChevron({ styles }) {\n return (\n <svg\n width=\"16\"\n height=\"24\"\n viewBox=\"0 0 16 24\"\n className={styles.svg}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g className={styles.group} style=\"transform-box: fill-box;\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.80569 10.7123L11.6344 15H12.365L16.1938 10.7123L15.4997 10L11.9997 13L8.49976 10L7.80569 10.7123Z\"\n className={styles.path}\n />\n </g>\n </svg>\n )\n}\n\nfunction LargeChevron({ styles }) {\n return (\n <svg\n width=\"15\"\n height=\"19\"\n className={styles.svg}\n viewBox=\"0 0 15 19\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g className={styles.group}>\n <path\n d=\"M0.667809 7.5L6.81507 12.1053L8.18493 12.1053L14.3322 7.5L15 8.09868L7.84247 14.5L7.15753 14.5L-2.61693e-08 8.09868L0.667809 7.5Z\"\n className={styles.path}\n />\n </g>\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst DOT_TYPE = {\n round: 'round',\n square: 'square',\n}\n\nexport const LegendItem = ({ dotType = DOT_TYPE.round, text, styles, abbreviation }) => {\n const defaultStylesCopy = { ...defaultStyles }\n\n if (dotType === DOT_TYPE.round) {\n defaultStylesCopy.dot = mergeStyles(defaultStyles.dot, defaultStyles.circle)\n }\n\n styles = mergeStyles(defaultStylesCopy, styles)\n return (\n <div className={styles.container}>\n <span className={`${styles.dot} bg-color--${abbreviation}`} />\n <p className={styles.text}>{text}</p>\n </div>\n )\n}\n","export function preventOverlap(labelPositions, iteration = 0, labelSize = 12, coordinate = \"y\", moveBothLabels = true) {\n const maxIterations = 10\n let totalOverlap = 0\n\n for (let index = 1; index < labelPositions.length; index++) {\n const previousElement = labelPositions[index - 1]\n const element = labelPositions[index]\n\n const overlap = previousElement[coordinate] - (element[coordinate] - labelSize)\n if (overlap < 0) {\n // no overlap, continue\n continue\n }\n\n if (moveBothLabels) {\n previousElement[coordinate] -= overlap / 2\n element[coordinate] += overlap / 2\n } else {\n previousElement[coordinate] -= overlap\n }\n\n totalOverlap += overlap\n }\n\n if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1, labelSize, coordinate, moveBothLabels)\n }\n\n return labelPositions\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\nexport function positionLabels(labels, labelSize = 12, coordinate = \"y\", moveBothLabels = true) {\n labels = uniqueBy(labels, \"value\")\n // sort by coordinate-position\n labels.sort((a, b) => a[coordinate] - b[coordinate])\n\n return preventOverlap(labels, 0, labelSize, coordinate, moveBothLabels)\n}\n// same as this one https://gist.github.com/vectorsize/7031902\nexport function scaleLinear(domain, range) {\n const [domainMin, domainMax] = domain\n const [rangeMin, rangeMax] = range\n\n const slope = (rangeMax - rangeMin) / (domainMax - domainMin)\n const intercept = rangeMin - slope * domainMin\n\n return function (x) {\n return slope * x + intercept\n }\n}\n","import { useRef, useMemo } from \"preact/hooks\"\nimport defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\nimport { preventOverlap } from \"$shared/helpers/labelsUtil\"\n\nexport const LabelType = {\n hanging: \"hanging\",\n inline: \"inline\",\n}\n\nexport const LabelOverlapConfig = {\n labelSize: 20,\n moveBothLabels: false,\n}\n\nexport function StackedBar({\n stack,\n width,\n height,\n hideLabels = false,\n labelType = LabelType.inline,\n showBackgroundRect = false,\n createSVG = true,\n labelOverlapConfig = LabelOverlapConfig,\n border = false,\n styles,\n}) {\n const rectElements = useRef([])\n const textElements = useRef([])\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n const svgHeight = labelType === LabelType.hanging && !hideLabels ? height + 20 : height\n\n // no secondary colors used for borders\n const cleanBorderAbbr = (abbrText) => {\n return abbrText.split(\"-\")[0]\n }\n\n const renderLabel = (config, i) => (\n <text\n key={`label-${i}`}\n ref={(element) => (textElements.current[i] = element)}\n text-rendering=\"optimizeLegibility\"\n className={styles.label}\n style={{ display: \"visible\" }} // using visibility rather than display makes sure the text width is always calculated correctly\n x={config.x}\n y={config.y}\n textAnchor={config.textAnchor}\n dominantBaseline={config.dominantBaseline}\n >\n {config.value}\n </text>\n )\n\n let totalWidth = 0\n const content = stack.map((d, index) => {\n const itemWidth = d.fraction * width\n\n const labelConfig = {\n value: d.label,\n x: itemWidth - 4,\n y: height / 2,\n textAnchor: \"end\",\n dominantBaseline: \"middle\",\n }\n\n const value = (\n <g transform={`translate(${totalWidth}, 0)`} key={index}>\n <rect\n ref={(element) => (rectElements.current[index] = element)}\n width={itemWidth}\n height={height}\n className={`${styles.bar} fill-color--${d.abbreviation} ${border && \"stroke-color--\" + cleanBorderAbbr(d.abbreviation)}`}\n style={{ fill: d.fill }}\n shape-rendering=\"crispEdges\"\n // stroke={border && var()}\n />\n {labelType === LabelType.inline && !hideLabels && renderLabel(labelConfig, index)}\n </g>\n )\n\n totalWidth += itemWidth\n return value\n })\n\n const hangingLabelConfig = useMemo(() => {\n let totalW = 0\n let labels = stack.map((d) => {\n const itemWidth = d.fraction * width\n\n const labelConfig = { x: itemWidth + totalW, y: height + 4, value: d.label, textAnchor: \"end\", dominantBaseline: \"hanging\" }\n\n totalW += itemWidth\n return labelConfig\n })\n\n return preventOverlap(labels, 0, labelOverlapConfig.labelSize, \"x\", labelOverlapConfig.moveBothLabels)\n }, [stack, height, width])\n\n const backgroundRect = (\n <g>\n <rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} />\n </g>\n )\n\n if (createSVG) {\n return (\n <svg overflow=\"hidden\" width={width} height={svgHeight} viewBox={`0 0 ${width} ${svgHeight}`} xmlns=\"http://www.w3.org/2000/svg\">\n {showBackgroundRect && backgroundRect}\n <g>\n {content}\n {labelType === LabelType.hanging && !hideLabels && hangingLabelConfig.map((config, i) => renderLabel(config, i))}\n </g>\n </svg>\n )\n }\n\n return (\n <g>\n {content}\n {labelType === LabelType.hanging && !hideLabels && hangingLabelConfig.map((config, i) => renderLabel(config, i))}\n </g>\n )\n}\n","export default function shouldUpdate(oldState, newState) {\n if (oldState === newState) return false\n\n if (isObj(oldState) && isObj(newState)) {\n for (let key in newState) {\n if (oldState[key] !== newState[key]) return true\n }\n return false\n }\n\n return true\n}\n\nfunction isObj(obj) {\n return typeof obj === 'object' && !Array.isArray(obj) && obj !== null\n}\n","import { useCallback } from 'preact/hooks'\nimport { useSyncExternalStore } from 'preact/compat'\nimport shouldUpdate from './shouldUpdate'\n\nexport default function createStore(initialStore) {\n let store = initialStore\n const listeners = new Set()\n\n function useStore(selectorFn = (store) => store) {\n const subscribe = useCallback((updater) => {\n const listener = {\n updater,\n selectorFn,\n }\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }, [selectorFn])\n\n const syncedStore = useSyncExternalStore(subscribe, getStore, getServerStore)\n return selectorFn(syncedStore)\n }\n\n function setStore(action) {\n const oldStore = store\n\n store = action instanceof Function ? action(store) : action\n\n listeners.forEach(({ selectorFn, updater }) => {\n const oldState = selectorFn(oldStore)\n const newState = selectorFn(store)\n if (shouldUpdate(oldState, newState)) updater(() => newState)\n })\n }\n\n function getStore() {\n return store\n }\n\n function getServerStore() {\n return initialStore\n }\n\n return [useStore, setStore, getStore]\n}\n","import createStore from '$shared/helpers/createStore'\n\nexport const [useGradients, setGradients, getGradients] = createStore({})\n","import { render } from 'preact'\nimport { useEffect } from 'preact/hooks'\nimport { useGradients, setGradients } from './gradientStore'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const GradientIcon = (props) => {\n let { previous, next, styles } = props\n styles = mergeStyles(defaultStyles, styles)\n\n const gradientId = `gv-gradient-def-${previous}-${next}`\n const gradients = useGradients()\n\n useEffect(() => {\n setGradients((current) => {\n current[gradientId] = { id: gradientId, ...props }\n return current\n })\n }, [gradientId, props])\n\n useEffect(() => {\n let container = document.getElementById('gv-gradient-defs')\n if (!container) {\n container = document.createElement('div')\n container.id = 'gv-gradient-defs'\n document.body.prepend(container)\n }\n\n render(<GradientDefs gradients={Object.values(gradients)} />, container)\n }, [gradients])\n\n return (\n <svg class={styles.svg} width=\"24\" height=\"11\" viewBox=\"0 0 24 11\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0 5.434C0 2.43288 2.43288 0 5.434 0H5.69626C6.85818 0 7.9797 0.426401 8.84813 1.19834C10.6456 2.79612 13.3544 2.79612 15.1519 1.19834C16.0203 0.426401 17.1418 0 18.3037 0L18.566 0C21.5671 0 24 2.43288 24 5.434V5.566C24 8.56712 21.5671 11 18.566 11H18.3037C17.1418 11 16.0203 10.5736 15.1519 9.80166C13.3544 8.20388 10.6456 8.20388 8.84813 9.80166C7.9797 10.5736 6.85818 11 5.69626 11H5.434C2.43288 11 0 8.56712 0 5.566V5.434Z\"\n fill={`url(#${gradientId})`}\n />\n </svg>\n )\n}\n\nfunction GradientDefs({ gradients }) {\n return (\n <svg width=\"24\" height=\"11\" viewBox=\"0 0 24 11\">\n <defs>\n {gradients.map(({ id, previous, next, styles }) => {\n return (\n <linearGradient key={id} id={id} x1=\"5.5\" y1=\"5.5\" x2=\"12\" y2=\"5.5\" gradientUnits=\"userSpaceOnUse\">\n <stop class={`${styles?.previous} stop-color--${previous}`} />\n <stop class={`${styles?.next} stop-color--${next}`} offset=\"1\" />\n </linearGradient>\n )\n })}\n </defs>\n </svg>\n )\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nfunction useWindowSize() {\n\n const [windowSize, setWindowSize] = useState(() => {\n if (typeof window === 'undefined') return { width: 0, height: 0 }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n })\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n return windowSize\n}\n\nexport { useWindowSize }\n","import { useWindowSize } from './useWindowSize'\nimport { useLayoutEffect, useState } from 'preact/hooks'\n\nexport function useContainerSize(containerRef) {\n const windowSize = useWindowSize()\n const [containerSize, setContainerSize] = useState()\n\n useLayoutEffect(() => {\n const container = containerRef.current\n if (!container) return\n setContainerSize({ width: container.clientWidth, height: container.clientHeight })\n }, [containerRef, windowSize])\n\n return containerSize\n}\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\nimport { useContainerSize } from '$shared/hooks/useContainerSize'\nimport { useRef } from 'preact/hooks'\n\nexport const WaffleType = {\n circle: 'circle',\n square: 'square',\n}\n\nconst WaffleUnit = ({ type, attributes }) => type === WaffleType.square ? <rect {...attributes} /> : <circle {...attributes} />\n\nexport const Waffle = ({ units, numberOfRows, type = WaffleType.circle, idAccessor, onMouseOver, styles }) => {\n\n const containerRef = useRef()\n const containerSize = useContainerSize(containerRef)\n const width = containerSize ? containerSize.width : 0\n const total = units.length\n const columns = Math.ceil(total / numberOfRows)\n const unitWidth = width / columns\n const unitHeight = unitWidth\n const height = numberOfRows * unitHeight\n \n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <div ref={containerRef} className={styles.container}>\n { containerSize &&\n <svg viewBox={`0 0 ${width} ${height}`} class={styles.svg}>\n <g>\n {\n units.map((unit, j) => {\n let attributes\n \n if (type === WaffleType.square) {\n attributes = {\n id: unit[idAccessor] || `w-${j}`,\n onMouseOver: e => onMouseOver(unit, e),\n class: `${styles.unit} ${unit.class}`,\n height: unitHeight,\n width: unitWidth,\n x: unitWidth * Math.floor(j / numberOfRows),\n y: unitHeight * (j % numberOfRows)\n }\n } else {\n attributes = {\n id: unit[idAccessor] || `w-${j}`,\n onMouseOver: e => onMouseOver(unit, e),\n class: `${styles.unit} ${unit.class}`,\n r: unitWidth / 2,\n transform: `translate(${unitWidth * Math.floor(j / numberOfRows) + unitWidth / 2}, ${unitHeight * (j % numberOfRows) + unitHeight / 2 })`\n }\n }\n\n return <WaffleUnit key={`wu-${j}`} type={type} attributes={attributes} />\n })\n }\n </g>\n </svg>\n }\n </div>\n )\n}","import { forwardRef } from 'preact/compat'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport const InfoButton = forwardRef(({ onClick, styles }, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <button ref={ref} class={styles.button} onClick={onClick}>\n <svg class={styles.svg} viewBox=\"0 0 5 13\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m3.72905 10.8229v.5256c-.11944.0955-.28666.1672-.45388.2628-.16723.0716-.35834.1433-.54945.215-.19111.0716-.38222.1194-.57333.1433s-.38222.0478-.54945.0478c-.38222 0-.621109-.0717-.764442-.215-.167222-.1434-.238889-.3106-.238889-.4778 0-.1911.023889-.3822.047778-.5733s.071667-.3823.119445-.6211l1.003328-4.56282-.931662-.215v-.50167c.143333-.04777.334442-.11944.597222-.19111.23889-.07166.50167-.11944.78833-.16722.28667-.04778.54945-.09556.81223-.11944.26277-.02389.50166-.04778.71666-.04778l.26278.16722-1.33778 6.33052zm.45389-8.02663c-.215.19111-.52555.28667-.88389.28667-.33444 0-.62111-.09556-.86-.28667-.215-.19111-.33444-.43-.33444-.74056 0-.33444.11944-.59722.33444-.78833s.50167-.286667.86-.286667c.38223 0 .66889.095557.88389.286667s.33445.45389.33445.78833c-.02389.31056-.11945.54945-.33445.74056z\" />\n </svg>\n </button>\n )\n})\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const CircleIcon = ({ color, pulse = false, styles }) => {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <svg style={styles.svg} fill=\"none\" height=\"11\" viewBox=\"0 0 11 11\" width=\"11\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect\n class={[styles.circle, pulse && styles.pulse].join(' ')}\n style={{ fill: color }}\n height=\"11\"\n rx=\"5.5\"\n width=\"11\"\n />\n </svg>\n )\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles.js'\nimport dayjs from 'dayjs'\nimport relativeTime from 'dayjs/plugin/relativeTime'\ndayjs.extend(relativeTime)\n\nexport const RelativeTimeSentence = ({ timeStamp, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n // dayjs docs: - range of results: https://day.js.org/docs/en/display/from-now#list-of-breakdown-range\n let timeSince = dayjs(timeStamp).fromNow()\n\n return <span className={styles.text}>{timeSince}</span>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Container({ children, sideBorders = false, styles }) {\n const { pageContainer, sideBorders: sideBordersStyle } = mergeStyles(defaultStyles, styles)\n\n return <div className={[pageContainer, sideBorders && sideBordersStyle].join(' ')}>{children}</div>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\n/* \nNOTE: The fraction is the fraction of the maximum possible value \nwhether positive or negative.\nSo if used for a party change scenario where the biggest party\nchange is -20ppt the maximum value is 20 and the fraction of a bar representing 10 \nwould be 0.5. \nSo the visual area of the chart \nis implicitly 40\n*/\n\nexport function ChangeBar({ fraction, positive, party, width, height, styles }) {\n let centre = parseFloat(width) / 2\n let barwidth = parseFloat(fraction) * (parseFloat(width) /2)\n let negleft = `${centre - barwidth}px`\n let posleft = `${centre}px` \n let thisStyles = \n ` height: ${height}; width: ${barwidth}px; ${positive ? `left: ${posleft}` : `left: ${negleft}`}`\n let thisColor = ` bg-color--${party}`\n\n let zeroStyles = ` height: ${height};`\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n\n return <div className={styles.wrapper} style={`width: ${width}px`}>\n <div className={styles.bar.concat(thisColor)} style={thisStyles} />\n <div className={styles.zero} style={zeroStyles} />\n </div>\n}\n","import defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const SquareCutCornerIcon = ({ cornerColor, squareColor, squareSize, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let cornerSize = squareSize * 0.625\n let cornerMargin = squareSize < 100 ? squareSize / 6 : 10 // margin should increase with the size of square but cap at 10px\n\n return (\n <svg width={squareSize} height={squareSize} className={styles.svg} viewBox={`0 0 ${squareSize} ${squareSize}`}>\n <g id=\"square-cutoff-corner-icon\">\n <rect id=\"square\" fill={squareColor} className={styles.square} width={squareSize} height={squareSize} />\n\n <g id=\"corner\">\n <polygon\n id=\"cornerTriangleBg\"\n className={styles.dividingLineColor}\n points={`0,0 0,${cornerSize} ${cornerSize},0`}\n />\n\n <polygon\n id=\"cornerTriangle\"\n fill={cornerColor}\n className={styles.corner}\n points={`0,0 0,${cornerSize - cornerMargin} ${cornerSize - cornerMargin},0`}\n />\n </g>\n </g>\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nconst getItemRotate = (fromBottom, fromLeft) => {\n if (fromBottom && fromLeft) {\n return 'stackedGridRotateItems270'\n } else if (fromBottom && !fromLeft) {\n return 'stackedGridRotateItems180'\n } else if (!fromBottom && !fromLeft) {\n return 'stackedGridRotateItems90'\n } else if (!fromBottom && fromLeft) {\n return 'stackedGridRotateItems0' // the css default\n }\n}\n\n// nb: using this trick: https://css-tricks.com/snippets/css/flip-an-image/\n// this works better than changing flex direction because it allows for an X and Y change\n\nconst getContainerFlip = (fromBottom, fromLeft) => {\n let scaleX = fromLeft ? 1 : -1\n let scaleY = fromBottom ? -1 : 1\n return `scale(${scaleX}, ${scaleY})`\n}\n\nexport const StackedGrid = ({ fromLeft, fromBottom, children, styles }) => {\n // CSS attributes driven by args\n let containerFlip = getContainerFlip(fromBottom, fromLeft)\n let itemRotateClass = getItemRotate(fromBottom, fromLeft)\n\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <div style={{ transform: containerFlip }} className={`${styles.stackedGridContainer} ${styles[itemRotateClass]}`}>\n {children}\n </div>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport const SquareIcon = ({ color, size, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <svg width={size} height={size} className={styles.svg} viewBox={`0 0 ${size} ${size}`}>\n <rect id=\"square\" fill={color} className={styles.squareFill} width={size} height={size} />\n </svg>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function ArrowButton({ direction = 'right', disabled = false, styles, onClick }) {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <button className={styles.button} disabled={disabled} onClick={onClick}>\n <svg className={[styles.icon, direction].join(' ')} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx={14} cy={14} r=\"13\" fill-rule=\"nonzero\" />\n <g transform=\"translate(6 7)\">\n <path\n d=\"M0.667319 7.63692L12.8497 7.63692L8.07231 13.3539L8.69338 13.975L15.334 7.31842L15.334 6.68143L8.69338 0.0249018L8.07231 0.645966L12.8497 6.36294L0.667319 6.36294L0.667319 7.63692Z\"\n fill=\"#121212\"\n />\n </g>\n </svg>\n </button>\n )\n}\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Button({ type = 'regular', onClick, styles, children }) {\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <button className={styles.button} data-type={type} onClick={onClick}>\n <div className={styles.buttonInner}>{children}</div>\n </button>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function CloseButton({ border = true, onClick, styles }) {\n styles = mergeStyles(defaultStyles, styles)\n return (\n <button className={[styles.button, border && styles.buttonBorder].join(' ')} onClick={onClick}>\n <svg className={styles.svg} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n className={styles.path}\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.32497 10.025L15.5499 16.6499L16.6249 15.5749L10.025 8.32497L16.6249 1.075L15.5499 0L8.32497 6.62498L1.075 0.0249999L0 1.1L6.62498 8.32497L0 15.5499L1.075 16.6249L8.32497 10.025Z\"\n />\n </svg>\n </button>\n )\n}\n","import { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n/**\n * Array of available breakpoints.\n * @typedef {\"mobile\" | \"phablet\" | \"tablet\" | \"desktop\"} Breakpoint\n *\n * Type representing an ad size, defined as a tuple of two numbers in the format [width, height].\n * @typedef {[number, number]} AdSize\n *\n * Type representing a size mapping for different breakpoints,\n * the breakpoints cascade from the smallest to the largest.\n * AKA if only mobile and desktop are defined, the mobile size will be used for phablet and tablet.\n *\n * @typedef {Partial<Record<Breakpoint, AdSize[]>>} SizeMapping\n *\n * @interface AdSlotProps\n * @property {string} name - The unique name of the ad slot.\n * @property {SizeMapping} sizeMapping - The size mapping for the ad slot.\n * @property {Object} styles - The styles for the ad slot.\n */\n\n/**\n * A placeholder for an ad slot, the commercial bundle will fill this slot with an ad,\n * matching the size mapping.\n *\n * @param {AdSlotProps} props\n * @returns {React.ComponentElement<AdSlotProps, null>}\n */\nexport function AdSlot({ name, sizeMapping, styles }) {\n const slotId = `dfp-ad--${name}`\n\n styles = mergeStyles(defaultStyles, styles)\n\n const mobileSizes = sizeMapping.mobile?.map((size) => size.join(',')).join('|')\n const tabletSizes = sizeMapping.tablet?.map((size) => size.join(',')).join('|')\n const desktopSizes = sizeMapping.desktop?.map((size) => size.join(',')).join('|')\n\n return (\n <div className={['ad-slot-container', styles.container].join(' ')}>\n <div\n id={slotId}\n className={['js-ad-slot', 'ad-slot', 'interactive-ad-slot', styles.slot].join(' ')}\n data-link-name={`ad slot ${name}`}\n data-name={`${name}`}\n data-label-show=\"true\"\n ad-label-text=\"Advertisement\"\n aria-hidden=\"true\"\n data-mobile={mobileSizes}\n data-tablet={tabletSizes}\n data-desktop={desktopSizes}\n />\n </div>\n )\n}\n","import { useMemo } from 'preact/hooks'\n\nconst sortAscending = (accessor) => {\n return (a, b) => {\n const valueA = a[accessor]\n const valueB = b[accessor]\n if (valueA < valueB) return -1\n if (valueA > valueB) return 1\n return 0\n }\n}\n\nconst sortDescending = (accessor) => {\n return (a, b) => {\n const valueA = a[accessor]\n const valueB = b[accessor]\n if (valueA > valueB) return -1\n if (valueA < valueB) return 1\n return 0\n }\n}\n\nexport function useTable({ columns, data, sortState }) {\n const sortedData = useMemo(() => {\n if (sortState.columnIndex < 0) {\n return data\n }\n const column = columns[sortState.columnIndex]\n const sortFunction = sortState.ascending ? sortAscending(column.accessor) : sortDescending(column.accessor)\n return data.toSorted(sortFunction)\n }, [columns, data, sortState])\n\n const columnModels = useMemo(() => {\n return columns.map((column, columnIndex) => {\n const isSorted = sortState.columnIndex === columnIndex && sortState\n return new ColumnModel(columnIndex, column, isSorted)\n })\n }, [columns, sortState])\n\n const rowModels = useMemo(() => {\n return sortedData.map((d, rowIndex) => {\n const cells = columnModels.map((column, columnIndex) => {\n return new CellModel(column, columnIndex, d, column.cell)\n })\n return new RowModel(rowIndex, cells)\n })\n }, [columnModels, sortedData])\n\n return {\n columns: columnModels,\n rows: rowModels,\n }\n}\n\nclass ColumnModel {\n constructor(index, definition, isSorted) {\n this.index = index\n this.definition = definition\n this.isSorted = isSorted\n this.defaultValue = definition.defaultValue\n }\n\n get id() {\n return this.definition.id || this.header\n }\n\n get accessor() {\n return this.definition.accessor\n }\n\n get header() {\n return this.definition.header\n }\n\n get headerProps() {\n return {\n text: this.header,\n sortable: this.definition.sortable,\n isSorted: this.isSorted,\n ...this.headerCellStyle,\n }\n }\n\n get cell() {\n return this.definition.cell\n }\n\n get styles() {\n return this.definition.styles\n }\n}\n\nclass RowModel {\n constructor(index, cells) {\n this.index = index\n this.cells = cells\n }\n\n get id() {\n return this.index\n }\n}\n\nclass CellModel {\n constructor(column, columnIndex, row, cell) {\n this.column = column\n this.columnIndex = columnIndex\n this.row = row\n this.cell = cell\n }\n\n get id() {\n return this.columnIndex\n }\n\n get displayValue() {\n if (this.cell) {\n return this.cell(this.row)\n }\n\n if (!Object.prototype.hasOwnProperty.call(this.row, this.column.accessor)) {\n if (this.column.defaultValue) {\n return this.column.defaultValue.toString()\n }\n\n const rowData = JSON.stringify(this.row, null, 2)\n throw new Error(`Missing value for key ${this.column.accessor} in ${rowData}`)\n }\n\n return this.row[this.column.accessor].toString()\n }\n}\n","import { useState } from 'preact/hooks'\nimport { useTable } from './useTable'\nimport { Chevron } from '$particles/chevron'\nimport defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function Table({ columns, data, hideHeader=false, styles }) {\n const [sortState, setSortState] = useState(() => {\n const columnIndex = columns.findIndex((column) => {\n if ('sort' in column) {\n return true\n }\n return false\n })\n\n const ascending = columnIndex >= 0 ? columns[columnIndex].sort.ascending : false\n return {\n columnIndex,\n ascending,\n }\n })\n const table = useTable({ columns, data, sortState })\n\n const sortByColumn = (index) => {\n setSortState((currentState) => {\n return {\n columnIndex: index,\n ascending: index === currentState.columnIndex ? !currentState.ascending : false,\n }\n })\n }\n\n styles = mergeStyles(defaultStyles, styles)\n\n return (\n <table className={styles.table} cellSpacing={0} cellPadding={0}>\n <thead className={hideHeader && styles.hideHeader}>\n <tr>\n {table.columns.map((column, index) => (\n <th key={column.id} className={mergeStyles(styles.headerCell, column.styles?.headerCell)}>\n <HeaderCell\n key={index}\n styles={mergeStyles(styles, column.styles)}\n onClick={() => sortByColumn(index)}\n {...column.headerProps}\n />\n </th>\n ))}\n </tr>\n </thead>\n <tbody className={hideHeader && styles.hideHeaderNoBorder}>\n {table.rows.map((row) => {\n return (\n <tr key={row.id} className={styles.bodyRow}>\n {row.cells.map((cell) => (\n <td key={cell.id} className={mergeStyles(styles.bodyCell, cell.column.styles?.bodyCell)}>\n {cell.displayValue}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n )\n}\n\nfunction HeaderCell({ text, sortable, isSorted, styles, onClick }) {\n if (!sortable) {\n return text\n }\n\n let direction = 'down'\n if (isSorted?.ascending === false) {\n direction = 'up'\n }\n\n return (\n <button onClick={onClick} className={styles.headerCellButton}>\n <span>{text}</span>\n <Chevron active={!!isSorted} direction={direction} />\n </button>\n )\n}\n","import { useMemo, useRef, useState, useLayoutEffect } from \"preact/hooks\"\nimport { positionLabels, scaleLinear } from \"$shared/helpers/labelsUtil\"\nimport { useWindowSize } from \"$shared/hooks/useWindowSize\"\nimport defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nexport const SlopeChart = ({ domain, lines, y1Label = (d) => d.y1, y2Label = (d) => d.y2, axis, styles, padding = { left: 24, right: 24, top: 20, bottom: 20 } }) => {\n const wrapperRef = useRef(null)\n const windowSize = useWindowSize()\n const [width, setWidth] = useState(0)\n\n const contentWidth = Math.floor(width - padding.left - padding.right)\n // force 1:1 aspect ratio for chart area\n const contentHeight = contentWidth\n\n const height = contentHeight + padding.top + padding.bottom\n const yScale = scaleLinear(domain, [contentHeight, 0])\n const show = width > 0\n\n useLayoutEffect(() => {\n const newWidth = wrapperRef.current.getBoundingClientRect().width\n setWidth(newWidth)\n }, [windowSize])\n\n const y1Labels = useMemo(() => {\n let labels = lines.map((d) => ({ y: yScale(d.y1), value: y1Label(d) }))\n return positionLabels(labels)\n }, [lines, y1Label, yScale])\n\n const y2Labels = useMemo(() => {\n let labels = lines.map((d) => ({ y: yScale(d.y2), value: y2Label(d) }))\n return positionLabels(labels)\n }, [lines, y2Label, yScale])\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n const chart = (\n <svg class={styles.svg} width={width} height={height}>\n <g transform={`translate(${padding.left} ${padding.top})`}>\n {/* draw axis */}\n <g transform={`translate(0 ${contentHeight})`}>\n <line x1={0} x2={contentWidth} className={styles.axis} shape-rendering=\"crispEdges\" />\n <text dominant-baseline=\"hanging\" className={[styles.label, styles.axisLabel].join(\" \")}>\n {axis.startLabel}\n </text>\n <text x={contentWidth} dominant-baseline=\"hanging\" text-anchor=\"end\" className={[styles.label, styles.axisLabel].join(\" \")}>\n {axis.endLabel}\n </text>\n </g>\n\n {/* draw lines */}\n {lines.map((line, index) => {\n const itemStyles = mergeStyles({ ...styles }, line.styles)\n return (\n <g key={index}>\n <line x1={0} y1={yScale(line.y1)} x2={contentWidth} y2={yScale(line.y2)} className={`${itemStyles.lineWhite}`} />\n <line x1={0} y1={yScale(line.y1)} x2={contentWidth} y2={yScale(line.y2)} className={`${itemStyles.line} stroke-color--${line.abbreviation}`} />\n <circle cx={0} cy={yScale(line.y1)} r={4} className={`${itemStyles.circle} fill-color--${line.abbreviation}`} />\n <circle cx={contentWidth} cy={yScale(line.y2)} r={4} className={`${itemStyles.circle} fill-color--${line.abbreviation}`} />\n </g>\n )\n })}\n\n {/* draw labels */}\n {y1Labels.map((label, index) => {\n return (\n <g key={index}>\n <text x={0} y={label.y} className={[styles.label, styles.y1Label].join(\" \")} text-anchor=\"end\" dominant-baseline=\"middle\">\n {label.value}\n </text>\n </g>\n )\n })}\n {y2Labels.map((label, index) => {\n return (\n <g key={index}>\n <text x={contentWidth} y={label.y} className={[styles.label, styles.y2Label].join(\" \")} text-anchor=\"start\" dominant-baseline=\"middle\">\n {label.value}\n </text>\n </g>\n )\n })}\n </g>\n </svg>\n )\n\n return (\n <div class={styles.slopeChartContainer} ref={wrapperRef}>\n {show && chart}\n </div>\n )\n}\n\nexport default SlopeChart\n","\n// Function to check if two rectangles intersect\nexport function rectsIntersect(rect1, rect2) {\n // Check if either rectangle is actually a line\n if (rect1.width === 0 || rect1.height === 0 || rect2.width === 0 || rect2.height === 0) {\n return false;\n }\n \n // Check for no intersection by comparing positions\n if (rect1.x + rect1.width <= rect2.x || \n rect2.x + rect2.width <= rect1.x || \n rect1.y + rect1.height <= rect2.y || \n rect2.y + rect2.height <= rect1.y) {\n return false;\n }\n \n // If above conditions are false, the rectangles intersect\n return true;\n}\n\n// Function to check if a point is inside a rectangle\nexport function pointInsideRect(point, rect) {\n return point.x >= rect.x && point.x <= rect.x + rect.width &&\n point.y >= rect.y && point.y <= rect.y + rect.height;\n}\n\n// Function to check if a rectangle is inside another rectangle\nexport function rectInsideRect(rect1, rect2) {\n return rect1.x >= rect2.x && rect1.x + rect1.width <= rect2.x + rect2.width &&\n rect1.y >= rect2.y && rect1.y + rect1.height <= rect2.y + rect2.height;\n}\n","import { useLayoutEffect, useEffect, useRef, useState } from 'preact/hooks'\nimport { createPortal } from 'preact/compat'\nimport { rectsIntersect } from '$shared/helpers/geometry'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function Tooltip({ for: targetElement, touchRect, positionInTarget, show = true, styles, children }) {\n if (!targetElement) throw new Error('Target for tooltip cannot be undefined')\n\n const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 })\n const [displayElement, setDisplayElement] = useState(null)\n\n const tooltipRef = useRef()\n\n styles = mergeStyles(defaultStyles, styles)\n\n useEffect(() => {\n setDisplayElement(document.querySelector('body'))\n\n return () => {\n setDisplayElement(null)\n }\n }, [])\n\n useLayoutEffect(() => {\n if (!tooltipRef.current) return\n\n const targetRect = targetElement.getBoundingClientRect()\n\n if (positionInTarget) {\n const newPosition = tooltipPositionForPoint({\n targetRect,\n positionInTarget,\n tooltip: tooltipRef.current,\n displayElement,\n })\n setTooltipPosition(newPosition)\n } else if (!positionInTarget) {\n const newPosition = tooltipPositionForRect({\n targetRect,\n touchRect,\n tooltip: tooltipRef.current,\n displayElement,\n })\n setTooltipPosition(newPosition)\n }\n }, [targetElement, positionInTarget, displayElement, tooltipRef, touchRect])\n\n if (!displayElement) return\n\n const fixedStyle = {\n display: show ? 'block' : 'none',\n position: 'fixed',\n left: tooltipPosition.x,\n top: tooltipPosition.y,\n zIndex: 100,\n }\n\n const tooltip = (\n <div ref={tooltipRef} className={styles.tooltip} style={fixedStyle}>\n {children}\n </div>\n )\n\n return createPortal(tooltip, displayElement)\n}\n\nfunction tooltipPositionForPoint({ targetRect, positionInTarget, tooltip, displayElement }) {\n const newPosition = {\n x: positionInTarget.x + targetRect.x,\n y: positionInTarget.y + targetRect.y,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\n\n const displayElementRect = displayElement.getBoundingClientRect()\n\n if (newPosition.x + tooltipWidth > displayElementRect.right) {\n newPosition.x -= tooltipWidth\n }\n\n if (newPosition.y + tooltipHeight > displayElementRect.bottom) {\n newPosition.y -= tooltipHeight\n }\n\n if (newPosition.x <= displayElementRect.left) {\n newPosition.x = displayElementRect.left + displayElementRect.width / 2 - tooltipWidth / 2\n }\n\n return newPosition\n}\n\nfunction tooltipPositionForRect({\n targetRect,\n touchRect = { x: 0, y: 0, width: 0, height: 0 },\n tooltip,\n displayElement,\n}) {\n // touchRect is defined relative to the targetRect\n\n // start with top-right position\n const newPosition = {\n x: targetRect.right,\n y: targetRect.top,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\n\n const tooltipRect = {\n ...newPosition,\n width: tooltipWidth,\n height: tooltipHeight,\n }\n\n if (rectsIntersect(tooltipRect, touchRect)) {\n // tooltip rect intersects with touch rect, which means it will be (partially) obscured by the user's finger\n newPosition.x = touchRect.x + touchRect.width / 2\n newPosition.y = touchRect.y - tooltipHeight\n }\n\n const displayElementRect = displayElement.getBoundingClientRect()\n\n if (newPosition.x + tooltipWidth > displayElementRect.right) {\n newPosition.x = targetRect.left - tooltipWidth\n }\n\n if (newPosition.y - tooltipHeight < displayElementRect.top) {\n newPosition.y = targetRect.bottom\n }\n\n if (newPosition.x <= displayElementRect.left) {\n newPosition.x = displayElementRect.left + displayElementRect.width / 2 - tooltipWidth / 2\n }\n\n return newPosition\n}\n","import { GradientIcon, CircleIcon } from '$particles'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const ControlChange = ({ previous, next, text, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let hasChanged = next !== previous\n\n return (\n <div class={styles.container}>\n <>\n {hasChanged ? (\n <GradientIcon\n previous={previous}\n next={next}\n styles={{\n previous: styles.previous,\n next: styles.next,\n }}\n />\n ) : (\n <CircleIcon styles={{ circle: `fill-color--${next}` }} />\n )}\n <strong className={styles.text}>{text}</strong>\n </>\n </div>\n )\n}\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nexport const FirstPastThePostWaffle = ({ styles, children, lineOverHang }) => {\n styles = mergeStyles(defaultStyles, styles)\n \n return (\n <div class={styles.wrapper}>\n <p style={{ height: lineOverHang + 20 }} class={styles.halfLineText}>{children.halfLineText}</p>\n <div class={styles.line}> </div>\n {children.waffle}\n </div>\n )\n}","import { InfoButton } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { forwardRef } from 'preact/compat'\nimport defaultStyles from './style.module.scss'\n\nexport const ToplineResult = forwardRef(({\n name,\n secondaryName,\n mainNumber,\n mainNumberSuffix,\n secondaryNumber,\n styles,\n displayRow = false,\n abbreviation,\n onMouseOver,\n onInfoPress,\n showInfoButton = false,\n infoButtonRef,\n}, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n const displayStyle = displayRow ? styles.displayRow : styles.displayColumn\n\n return !secondaryName ? (\n <div class={styles.toplineResult} onMouseOver={onMouseOver} ref={ref}>\n <div class={styles.topRow}>\n <span class={`${styles.name} before-color--${abbreviation}`}>{name}</span>{' '}\n {showInfoButton && (\n <span class={styles.infoButton}>\n <InfoButton onClick={onInfoPress} ref={infoButtonRef} />\n </span>\n )}\n </div>\n <div class={`${styles.displayNumbers} ${displayStyle}`}>\n <div class={styles.mainNumber}>\n {mainNumber}\n {mainNumberSuffix && <span className={styles.mainNumberSuffix}>{mainNumberSuffix}</span>}\n </div>\n <div class={styles.secondaryNumber}>{secondaryNumber}</div>\n </div>\n </div>\n ) : (\n <div class={styles.toplineResult} onMouseOver={onMouseOver} ref={ref}>\n <div class={styles.topRow}>\n <span class={`${styles.primaryname} before-color--${abbreviation}`}>{name}</span>{' '}\n {showInfoButton && (\n <span class={styles.infoButton}>\n <InfoButton onClick={onInfoPress} />\n </span>\n )}\n </div>\n <div class={styles.subhead}>\n <span class={styles.secondaryname}>{secondaryName}</span>{' '}\n </div>\n\n <div class={`${styles.displayNumbers} ${displayStyle}`}>\n <div class={styles.mainNumber}>\n {mainNumber}\n {mainNumberSuffix && <span className={styles.mainNumberSuffix}>{mainNumberSuffix}</span>}\n </div>\n <div class={styles.secondaryNumber}>{secondaryNumber}</div>\n </div>\n </div>\n )\n})\n","import { forwardRef } from 'preact/compat'\nimport { useLayoutEffect, useRef, useState } from 'preact/hooks'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport const PageSection = forwardRef(\n ({ children, styles, borderTop = false, backgroundColor = 'transparent' }, ref) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n const [minHeight, setMinHeight] = useState('auto')\n const headerRef = useRef()\n\n useLayoutEffect(() => {\n const headerElement = headerRef.current\n setMinHeight(headerElement.offsetHeight)\n }, [children])\n\n return (\n <section\n ref={ref}\n className={[styles.section, borderTop && styles.borderTop].join(' ')}\n style={{ '--background-color': backgroundColor, minHeight }}\n >\n <div className={styles.header} ref={headerRef}>{children.header}</div>\n <div className={styles.content}>{children.content}</div>\n </section>\n )\n },\n)\n","import defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { scaleLinear } from 'd3-scale'\n\nexport const ColumnChart = ({\n columns,\n maxValue,\n minValue,\n chartHeight,\n chartWidth,\n columnWidth,\n columnPadding,\n styles,\n}) => {\n styles = mergeStyles(defaultStyles, styles)\n\n const yScale = scaleLinear([maxValue, minValue], [0, chartHeight])\n const totalColumnWidth = Number(columnWidth) + Number(columnPadding.left) + Number(columnPadding.right)\n let marginBottom = minValue < 0 ? 0 : 40\n\n return (\n <svg width={chartWidth} height={chartHeight + marginBottom}>\n {columns.map((column, index) => {\n const getHeight = (input) => {\n return yScale(0) - yScale(input)\n }\n\n return (\n <g key={index}>\n <rect\n x={index * totalColumnWidth}\n height={getHeight(Math.abs(column.value))}\n width={columnWidth}\n y={column.value > 0 ? yScale(column.value) : yScale(0)}\n fill={column.color}\n className={`${styles.bar} fill-color--${column.id}`}\n id={column.id}\n />\n <text\n className={styles.text}\n x={index * totalColumnWidth + 2}\n y={column.value < 0 ? yScale(0) - 6 : yScale(0) + 20}\n >\n {column.label}\n </text>\n </g>\n )\n })}\n <rect className={styles.axis} x={0} y={yScale(0)} width={chartWidth} height={1} />\n </svg>\n )\n}\n\nexport default ColumnChart\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nconst SubtitleStyle = {\n small: \"small\",\n large: \"large\",\n}\n\nexport const PartyProfile = ({ title, subtitle, subtitleStyle = SubtitleStyle.large, blurb, footnote, imgSrc, imgAltText, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div class={styles.container}>\n <img src={imgSrc} className={styles.img} alt={imgAltText} />\n <h3 className={styles.title}>{title}</h3>\n <div className={[styles.subtitle, styles[subtitleStyle]].join(\" \")}>{subtitle}</div>\n <div className={styles.blurb}>{blurb}</div>\n <div className={styles.footnote}>{footnote}</div>\n </div>\n )\n}\n","export var epsilon = 1e-6;\r\n","function noop() {}\r\n\r\nvar x0 = Infinity,\r\n y0 = x0,\r\n x1 = -x0,\r\n y1 = x1;\r\n\r\nvar boundsStream = {\r\n point: boundsPoint,\r\n lineStart: noop,\r\n lineEnd: noop,\r\n polygonStart: noop,\r\n polygonEnd: noop,\r\n result: function() {\r\n var bounds = [[x0, y0], [x1, y1]];\r\n x1 = y1 = -(y0 = x0 = Infinity);\r\n return bounds;\r\n }\r\n};\r\n\r\nfunction boundsPoint(x, y) {\r\n if (x < x0) x0 = x;\r\n if (x > x1) x1 = x;\r\n if (y < y0) y0 = y;\r\n if (y > y1) y1 = y;\r\n}\r\n\r\nexport default boundsStream;\r\n","import {geoStream} from \"d3-geo\";\r\nimport boundsStream from \"./bounds\";\r\n\r\nexport function fitExtent(projection, extent, object) {\r\n var w = extent[1][0] - extent[0][0],\r\n h = extent[1][1] - extent[0][1],\r\n clip = projection.clipExtent && projection.clipExtent();\r\n\r\n projection\r\n .scale(150)\r\n .translate([0, 0]);\r\n\r\n if (clip != null) projection.clipExtent(null);\r\n\r\n geoStream(object, projection.stream(boundsStream));\r\n\r\n var b = boundsStream.result(),\r\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\r\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\r\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\r\n\r\n if (clip != null) projection.clipExtent(clip);\r\n\r\n return projection\r\n .scale(k * 150)\r\n .translate([x, y]);\r\n}\r\n\r\nexport function fitSize(projection, size, object) {\r\n return fitExtent(projection, [[0, 0], size], object);\r\n}\r\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import { epsilon } from \"./math\";\r\nimport { geoAlbers as albers } from \"d3-geo\";\r\nimport { fitExtent, fitSize } from \"./fit\";\r\nimport { path } from \"d3-path\";\r\n\r\nfunction multiplex(streams) {\r\n var n = streams.length;\r\n return {\r\n point: function(x, y) {\r\n var i = -1;\r\n while (++i < n) streams[i].point(x, y);\r\n },\r\n sphere: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].sphere();\r\n },\r\n lineStart: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].lineStart();\r\n },\r\n lineEnd: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].lineEnd();\r\n },\r\n polygonStart: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].polygonStart();\r\n },\r\n polygonEnd: function() {\r\n var i = -1;\r\n while (++i < n) streams[i].polygonEnd();\r\n }\r\n };\r\n}\r\n\r\nexport default function() {\r\n var cache,\r\n cacheStream,\r\n main = albers()\r\n .rotate([4.4, 0.8])\r\n .center([0, 55.4])\r\n .parallels([50, 60]),\r\n mainPoint,\r\n shetland = albers()\r\n .rotate([4.4, 0.8])\r\n .center([0, 55.4])\r\n .parallels([50, 60]),\r\n shetlandPoint,\r\n point,\r\n pointStream = {\r\n point: function(x, y) {\r\n point = [x, y];\r\n }\r\n };\r\n\r\n var shetlandBbox = [\r\n [-2.1, 70],\r\n [-0.7, 59.8]\r\n ];\r\n function albersUk(coordinates) {\r\n var x = coordinates[0],\r\n y = coordinates[1];\r\n return (\r\n (point = null),\r\n (mainPoint.point(x, y), point) || (shetlandPoint.point(x, y), point)\r\n );\r\n }\r\n\r\n albersUk.invert = function(coordinates) {\r\n var k = main.scale(),\r\n t = main.translate(),\r\n x = (coordinates[0] - t[0]) / k,\r\n y = (coordinates[1] - t[1]) / k;\r\n\r\n return (y >= -0.089 && y < 0.06 && x >= 0.029 && x < 0.046\r\n ? shetland\r\n : main\r\n ).invert(coordinates);\r\n };\r\n\r\n albersUk.stream = function(stream) {\r\n return cache && cacheStream === stream\r\n ? cache\r\n : (cache = multiplex([\r\n main.stream((cacheStream = stream)),\r\n shetland.stream(stream)\r\n ]));\r\n };\r\n\r\n albersUk.precision = function(_) {\r\n if (!arguments.length) return main.precision();\r\n main.precision(_), shetland.precision(_);\r\n return reset();\r\n };\r\n\r\n albersUk.scale = function(_) {\r\n if (!arguments.length) return main.scale();\r\n main.scale(_), shetland.scale(_);\r\n return albersUk.translate(main.translate());\r\n };\r\n\r\n albersUk.translate = function(_) {\r\n if (!arguments.length) return main.translate();\r\n var k = main.scale(),\r\n x = +_[0],\r\n y = +_[1];\r\n\r\n mainPoint = main\r\n .translate(_)\r\n .clipExtent([\r\n [x - 0.065 * k, y - 0.089 * k],\r\n [x + 0.075 * k, y + 0.089 * k]\r\n ])\r\n .stream(pointStream);\r\n\r\n shetlandPoint = shetland\r\n .translate([x + 0.01 * k, y + 0.025 * k])\r\n .clipExtent([\r\n [x + 0.029 * k + epsilon, y - 0.089 * k + epsilon],\r\n [x + 0.046 * k - epsilon, y - 0.06 * k - epsilon]\r\n ])\r\n .stream(pointStream);\r\n\r\n return reset();\r\n };\r\n\r\n albersUk.fitExtent = function(extent, object) {\r\n return fitExtent(albersUk, extent, object);\r\n };\r\n\r\n albersUk.fitSize = function(size, object) {\r\n return fitSize(albersUk, size, object);\r\n };\r\n\r\n function reset() {\r\n cache = cacheStream = null;\r\n return albersUk;\r\n }\r\n\r\n albersUk.drawCompositionBorders = function(context) {\r\n /*var ul = main.invert([\r\n shetland.clipExtent()[0][0],\r\n shetland.clipExtent()[0][1]\r\n ]);\r\n var ur = main.invert([\r\n shetland.clipExtent()[1][0],\r\n shetland.clipExtent()[0][1]\r\n ]);\r\n var ld = main.invert([\r\n shetland.clipExtent()[1][0],\r\n shetland.clipExtent()[1][1]\r\n ]);\r\n var ll = main.invert([\r\n shetland.clipExtent()[0][0],\r\n shetland.clipExtent()[1][1]\r\n ]);\r\n\r\n console.log(\"ul = main([\" + ul + \"]);\");\r\n console.log(\"ur = main([\" + ur + \"]);\");\r\n console.log(\"ld = main([\" + ld + \"]);\");\r\n console.log(\"ll = main([\" + ll + \"]);\");\r\n\r\n console.log(\"context.moveTo(ul[0], ul[1]);\");\r\n console.log(\"context.lineTo(ur[0], ur[1]);\");\r\n console.log(\"context.lineTo(ld[0], ld[1]);\");\r\n console.log(\"context.lineTo(ll[0], ll[1]);\");\r\n console.log(\"context.closePath();\");*/\r\n\r\n var ul, ur, ld, ll;\r\n ul = main([-1.113205870242365, 59.64920050773357]);\r\n ur = main([0.807899092399606, 59.59085836472269]);\r\n ld = main([0.5778611961420386, 57.93467822832577]);\r\n ll = main([-1.25867782078448, 57.99029450085142]);\r\n context.moveTo(ul[0], ul[1]);\r\n context.lineTo(ur[0], ur[1]);\r\n context.lineTo(ld[0], ld[1]);\r\n context.lineTo(ll[0], ll[1]);\r\n context.closePath();\r\n };\r\n albersUk.getCompositionBorders = function() {\r\n var context = path();\r\n this.drawCompositionBorders(context);\r\n return context.toString();\r\n };\r\n\r\n return albersUk.scale(2800);\r\n}\r\n","// bounds in [[SW lon, SW lat], [NE lon], [NE lat]] format\n// e.g. UK bounding box: [[-8.642194417322951, 49.88234469492934], [1.7683086664999994, 60.8456995072]]\n// Note the reverse winding order of coordinates. This is essential in D3 https://stackoverflow.com/questions/49311001/d3-js-drawing-geojson-incorrectly\n\nexport function bboxFeature(bounds) {\n const minLon = bounds[0][0]\n const minLat = bounds[0][1]\n const maxLon = bounds[1][0]\n const maxLat = bounds[1][1]\n\n const feature = {\n type: 'Feature',\n properties: {},\n geometry: {\n coordinates: [\n [\n [minLon, maxLat],\n [maxLon, maxLat],\n [maxLon, minLat],\n [minLon, minLat],\n [minLon, maxLat],\n ],\n ],\n type: 'Polygon',\n },\n }\n\n return feature\n}\n","import { createContext } from 'preact'\n\nexport const MapContext = createContext()\n","export function calculateScale(mapBounds, mapWidthPixels, mapHeightPixels) {\n const south = mapBounds[0][1]\n const west = mapBounds[0][0]\n const north = mapBounds[1][1]\n const east = mapBounds[1][0]\n\n const widthKilometers = distanceInKmBetweenEarthCoordinates([west, south], [east, south])\n const heightKilometers = distanceInKmBetweenEarthCoordinates([west, south], [west, north])\n\n const scaleX = mapWidthPixels / widthKilometers\n const scaleY = mapHeightPixels / heightKilometers\n\n const scale = (scaleX + scaleY) / 2\n\n return scale\n}\n\nexport function circleContainsCoordinates(circleCoordinates, radius, coordinates) {\n const realWorldDistance = distanceInKmBetweenEarthCoordinates(circleCoordinates, coordinates)\n return realWorldDistance <= radius\n}\n\n// from: https://stackoverflow.com/questions/59633860/check-if-point-is-inside-circle\nexport function distanceInKmBetweenEarthCoordinates(point1, point2) {\n let [lon1, lat1] = point1\n let [lon2, lat2] = point2\n\n const earthRadiusKm = 6371\n\n const dLat = degreesToRadians(lat2 - lat1)\n const dLon = degreesToRadians(lon2 - lon1)\n\n lat1 = degreesToRadians(lat1)\n lat2 = degreesToRadians(lat2)\n\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2)\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n return earthRadiusKm * c\n}\n\nexport function degreesToRadians(degrees) {\n return (degrees * Math.PI) / 180\n}\n","import { useMemo, useRef, useCallback } from 'preact/hooks'\nimport { geoPath } from 'd3-geo'\nimport { bboxFeature } from '../helpers/bboxFeature'\nimport { MapContext } from './MapContext'\nimport { calculateScale } from '../helpers/geoMath'\n\nexport function SVGMapProvider({ id, mapRef, width, height, padding, config, zoom, selectedFeature, children }) {\n const contentSize = useMemo(\n () => ({\n width: width - padding.left - padding.right,\n height: height - padding.top - padding.bottom,\n }),\n [width, height, padding],\n )\n\n const projection = useMemo(() => {\n return config.projection.fitSize([contentSize.width, contentSize.height], bboxFeature(config.bounds))\n }, [contentSize, config])\n\n const path = geoPath().projection(projection)\n\n const layerSet = useRef(new Set())\n const layers = useRef([])\n\n const updateLayers = useCallback((layerSet) => {\n const _layers = Array.from(layerSet.current)\n // sort layers in reverse order (top layer first)\n _layers.sort((a, b) => {\n return b.zIndex - a.zIndex\n })\n layers.current = _layers\n }, [])\n\n const registerLayer = useCallback(\n (layer) => {\n layerSet.current.add(layer)\n updateLayers(layerSet)\n },\n [updateLayers],\n )\n\n const unregisterLayer = useCallback(\n (layer) => {\n layerSet.current.delete(layer)\n updateLayers(layerSet)\n },\n [updateLayers],\n )\n\n const findFeatureAtPoint = useCallback(\n ({ x, y }) => {\n const adjustedPoint = [x - padding.left, y - padding.top]\n\n for (const layer of layers.current) {\n if (typeof layer.findFeatureAtPoint === 'function') {\n const feature = layer.findFeatureAtPoint(adjustedPoint)\n if (feature) return feature\n }\n }\n return null\n },\n [padding],\n )\n\n const getVisibleBounds = useCallback(() => {\n const projectedSW = projection.invert([padding.left, contentSize.height])\n const projectedNE = projection.invert([padding.left + contentSize.width, padding.top])\n return [projectedSW, projectedNE]\n }, [projection, contentSize, padding])\n\n const getZoomScale = useCallback(() => {\n return calculateScale(getVisibleBounds(), contentSize.width, contentSize.height)\n }, [getVisibleBounds, contentSize])\n\n const context = {\n id,\n projection,\n config,\n path,\n size: { width, height },\n contentSize,\n padding,\n zoom,\n extent: [\n [0, 0],\n [width, height],\n ],\n selectedFeature,\n getZoomScale,\n registerLayer,\n unregisterLayer,\n findFeatureAtPoint,\n }\n\n mapRef.current = context\n\n return <MapContext.Provider value={context}>{children}</MapContext.Provider>\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport defaultStyles from './compositionBorders.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function CompositionBorders({ styles }) {\n const { projection } = useContext(MapContext)\n \n styles = mergeStyles(defaultStyles, styles)\n\n // const ctx = drawingContext\n // if (drawingContext) {\n // ctx.beginPath()\n // ctx.lineWidth = 1\n // ctx.strokeStyle = '#dcdcdc'\n // projection.drawCompositionBorders(ctx)\n // ctx.stroke()\n // return\n // }\n\n return <path className={styles.path} d={projection.getCompositionBorders()} />\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { CompositionBorders } from '../layers/CompositionBorders'\n\nexport function SVGRenderer({ children }) {\n const { id, config, size, selectedFeature, padding } = useContext(MapContext)\n\n return (\n <svg\n id={id}\n width={size.width}\n height={size.height}\n viewBox={`0 0 ${size.width} ${size.height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={() => {\n if (selectedFeature) {\n selectedFeature.value = null\n }\n }}\n >\n <g transform={`translate(${padding.left} ${padding.top})`}>\n <g>{children}</g>\n {config.drawCompositionBorders &&\n Object.prototype.hasOwnProperty.call(config.projection, 'getCompositionBorders') && <CompositionBorders />}\n </g>\n </svg>\n )\n}\n","export function dynamicPropValue(prop, d, index) {\n if (typeof prop === 'function') {\n return prop(d, index)\n }\n return prop\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\nimport { geoContains } from 'd3-geo'\n\nexport function Polygon({ id, features, fill = null, stroke = null, strokeWidth = 1, zIndex = 0, styles }) {\n const context = useContext(MapContext)\n\n useEffect(() => {\n function findFeatureAtPoint(point) {\n const projectedPoint = context.projection.invert(point)\n for (const feature of features) {\n if (geoContains(feature, projectedPoint)) {\n return feature\n }\n }\n }\n\n const layer = {\n zIndex,\n findFeatureAtPoint,\n }\n context.registerLayer(layer)\n\n return () => {\n context.unregisterLayer(layer)\n }\n }, [context, zIndex, features])\n\n // const { drawToCanvas } = context.config\n\n // const draw = (ctx, path) => {\n // for (const feature of features) {\n // ctx.beginPath()\n // ctx.lineWidth = strokeWidth\n // ctx.strokeStyle = stroke\n // ctx.fillStyle = fill\n // path(feature)\n // ctx.fill()\n // }\n // }\n\n // useEffect(() => {\n // if (context.config.drawToCanvas) {\n // context.register(draw)\n // }\n // return () => {\n // if (context.config.drawToCanvas) {\n // context.unregister(draw)\n // }\n // }\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, [])\n\n // useEffect(() => {\n // if (drawToCanvas) {\n // context.invalidate()\n // }\n // }, [drawToCanvas, features, fill, stroke, strokeWidth])\n\n // if (context.config.drawToCanvas) {\n // return '<!--Polygon layer-->'\n // }\n\n return (\n <>\n {features.map((d, index) => {\n return (\n <path\n key={index}\n id={dynamicPropValue(id, d, index)}\n className={dynamicPropValue(styles, d, index)}\n fill={dynamicPropValue(fill, d, index)}\n stroke={dynamicPropValue(stroke, d, index)}\n stroke-width={dynamicPropValue(strokeWidth, d, index)}\n d={context.path(d)}\n />\n )\n })}\n </>\n )\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Line({ id, features, stroke = null, strokeWidth = 1, styles }) {\n const context = useContext(MapContext)\n\n const draw = (ctx, path) => {\n for (const feature of features) {\n ctx.beginPath()\n ctx.lineWidth = strokeWidth / context.pixelRatio\n ctx.strokeStyle = stroke\n path(feature)\n ctx.stroke()\n }\n }\n\n useEffect(() => {\n if (context.config.drawToCanvas) {\n context.register(draw)\n }\n return () => {\n if (context.config.drawToCanvas) {\n context.unregister(draw)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n if (context.config.drawToCanvas) {\n return '<!--Line layer-->'\n }\n\n return (\n <>\n {features.map((d, index) => {\n const initialStrokeWidth = dynamicPropValue(strokeWidth, d, index)\n const scaledStrokeWidth = initialStrokeWidth / context.zoomScale\n return (\n <path\n id={dynamicPropValue(id, d, index)}\n key={index}\n stroke={dynamicPropValue(stroke, d, index)}\n stroke-line-join=\"round\"\n stroke-width={scaledStrokeWidth}\n fill=\"none\"\n className={dynamicPropValue(styles, d, index)}\n d={context.path(d)}\n />\n )\n })}\n </>\n )\n}\n","import { useContext } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\n\nexport function Prerendered({ url }) {\n const context = useContext(MapContext)\n const { width, height } = context.contentSize\n\n return <image width={width} height={height} href={url} />\n}\n","import { useContext, useEffect } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Point({ id, features, radius = 4, fill = null, stroke = null, strokeWidth = 1, zIndex = 0, styles }) {\n const context = useContext(MapContext)\n\n useEffect(() => {\n function findFeatureAtPoint(point) {\n for (const [index, feature] of features.entries()) {\n const resolvedRadius = dynamicPropValue(radius, feature, index)\n if (isNaN(resolvedRadius)) return\n\n const [cx, cy] = context.projection(feature.geometry.coordinates)\n\n const distanceSquared = (point[0] - cx) ** 2 + (point[1] - cy) ** 2\n const radiusSquared = resolvedRadius ** 2\n\n if (distanceSquared <= radiusSquared) {\n return feature\n }\n }\n\n return null\n }\n\n const layer = {\n zIndex,\n findFeatureAtPoint,\n }\n context.registerLayer(layer)\n\n return () => {\n context.unregisterLayer(layer)\n }\n }, [context, features, radius, zIndex])\n\n return (\n <>\n {features.map((d, index) => {\n const [cx, cy] = context.projection(d.geometry.coordinates)\n return (\n <circle\n id={dynamicPropValue(id, d, index)}\n cx={cx}\n cy={cy}\n r={dynamicPropValue(radius, d, index)}\n key={index}\n className={dynamicPropValue(styles, d, index)}\n fill={dynamicPropValue(fill, d, index)}\n stroke={dynamicPropValue(stroke, d, index)}\n strokeWidth={dynamicPropValue(strokeWidth, d, index)}\n />\n )\n })}\n </>\n )\n}\n","import { geoAlbers, geoMercator } from 'd3-geo'\nimport { geoAlbersUk } from 'd3-composite-projections'\nimport { SVGMapProvider } from './context/SVGMapProvider'\nimport { SVGRenderer } from './renderers/SVGRenderer'\n// import { CanvasMapProvider } from './context/CanvasMapProvider'\n// import { CanvasRenderer } from './renderers/CanvasRenderer'\nimport { toChildArray, cloneElement } from 'preact'\nimport { useRef, useMemo, useLayoutEffect, useState, useImperativeHandle } from 'preact/hooks'\nimport { forwardRef } from 'preact/compat'\nimport { useContainerSize } from '$shared/hooks/useContainerSize'\nimport styles from './style.module.css'\nexport * as MapLayers from './layers'\n\nexport const Projection = {\n geoAlbersUKComposite: geoAlbersUk(),\n geoAlbersEngland: geoAlbers().center([0, 52.7]).rotate([1.1743, 0]).parallels([50, 54]),\n geoMercator: geoMercator(),\n}\n\nexport const MapConfiguration = {\n UKComposite: {\n projection: Projection.geoAlbersUKComposite,\n bounds: [\n [-8.642194417322951, 49.88234469492934],\n [1.7683086664999994, 60.8456995072],\n ],\n drawCompositionBorders: true,\n drawToCanvas: false,\n },\n England: {\n projection: Projection.geoAlbersEngland,\n bounds: [\n [-6.41866730264044, 49.8647926027119],\n [1.76370537625026, 55.8111151140706],\n ],\n drawCompositionBorders: false,\n drawToCanvas: false,\n },\n London: {\n projection: geoMercator(),\n bounds: [\n [-0.510356073504132, 51.2867586289553],\n [0.334043866981608, 51.6918768002741],\n ],\n drawCompositionBorders: false,\n drawToCanvas: false,\n },\n}\n\nconst ZERO_PADDING = { top: 0, right: 0, bottom: 0, left: 0 }\nconst DEFAULT_ZOOM = {\n enabled: false,\n minZoom: 1,\n maxZoom: 8,\n}\n\nexport const Map = forwardRef(\n (\n {\n id,\n width,\n height,\n config,\n children,\n padding = { top: 20, right: 20, bottom: 20, left: 20 },\n zoom,\n selectedFeature,\n },\n ref,\n ) => {\n padding = padding || ZERO_PADDING\n zoom = Object.assign(DEFAULT_ZOOM, zoom)\n\n const containerRef = useRef()\n const [isReady, setIsReady] = useState(false)\n useLayoutEffect(() => {\n if (!isReady) {\n setIsReady(true)\n }\n }, [isReady])\n\n const mapRef = useRef()\n\n useImperativeHandle(\n ref,\n () => ({\n isReady,\n getContainer: () => containerRef.current,\n getContext: () => mapRef.current,\n }),\n [isReady],\n )\n\n const containerSize = useContainerSize(containerRef)\n const containerStyle = useMemo(() => {\n const style = {}\n if (width > 0) style['width'] = width\n if (height > 0) style['height'] = height\n return style\n }, [width, height])\n\n const renderSVG = containerSize && !config.drawToCanvas\n // const renderCanvas = containerSize && config.drawToCanvas\n\n return (\n <div ref={containerRef} className={styles.container} style={containerStyle}>\n {renderSVG && (\n <SVGMapProvider\n id={id}\n width={containerSize.width}\n height={containerSize.height}\n padding={padding}\n config={config}\n mapRef={mapRef}\n selectedFeature={selectedFeature}\n zoom={zoom}\n >\n <SVGRenderer>\n {toChildArray(children).map((child, index) => cloneElement(child, { zIndex: index }))}\n </SVGRenderer>\n </SVGMapProvider>\n )}\n {/* {renderCanvas && (\n <CanvasMapProvider\n id={id}\n width={containerSize.width}\n height={containerSize.height}\n padding={padding}\n config={config}\n mapRef={mapRef}\n selectedFeature={selectedFeature}\n zoom={zoom}\n >\n <CanvasRenderer>{children}</CanvasRenderer>\n </CanvasMapProvider>\n )} */}\n </div>\n )\n },\n)\n","import { ControlChange } from '$molecules'\nimport { RelativeTimeSentence } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.css'\n\nexport function ResultSummary({ previous, next, title, text, timestamp, styles }) {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div class={styles.container}>\n <ControlChange previous={previous} next={next} text={title} />\n <p className={styles.paragraph}>{text}</p>\n <RelativeTimeSentence timeStamp={timestamp} />\n </div>\n )\n}\n","import styles from './search.module.css'\n\nexport function SearchIcon() {\n return (\n <svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\" className={styles.svg}>\n <path\n className={styles.path}\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.273 0c4.022 0 7.25 3.295 7.25 7.273a7.226 7.226 0 01-7.25 7.25C3.25 14.523 0 11.295 0 7.273 0 3.295 3.25 0 7.273 0zm0 1.84A5.403 5.403 0 001.84 7.274c0 3 2.409 5.454 5.432 5.454 3 0 5.454-2.454 5.454-5.454 0-3.023-2.454-5.432-5.454-5.432zM20 18.16l-5.432-5.432h-.932l-.909.91v.931L18.16 20 20 18.159z\"\n />\n </svg>\n )\n}\n","import { useRef, useState } from 'preact/hooks'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { SearchIcon } from './icons/search'\nimport { CloseButton } from '$particles'\nimport defaultStyles from './style.module.css'\n\nexport function SearchInput({\n placeholder,\n inputValue,\n maxSuggestions = 5,\n onInputChange,\n onSubmit,\n onSelect,\n onClear,\n styles,\n}) {\n styles = mergeStyles(defaultStyles, styles)\n\n const inputRef = useRef(null)\n const [selectedIndex, setSelectedIndex] = useState(-1)\n const [suggestions, setSuggestions] = useState()\n const [showSuggestions, setShowSuggestions] = useState(true)\n\n function onKeyDown(event) {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n setSelectedIndex((currentIndex) => Math.min(currentIndex + 1, suggestions.length - 1))\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n setSelectedIndex((currentIndex) => Math.max(currentIndex - 1, -1))\n } else if (event.key === 'Enter' && selectedIndex >= 0) {\n event.preventDefault()\n onSelectSuggestion(suggestions[selectedIndex])\n } else if (event.key === 'Enter') {\n onSubmit(inputRef.current.value)\n }\n }\n\n async function inputChanged(input) {\n let suggestions = await onInputChange(input)\n if (suggestions) {\n suggestions = suggestions.slice(0, maxSuggestions)\n }\n setSuggestions(suggestions)\n setSelectedIndex(-1)\n }\n\n function onSelectSuggestion(suggestion) {\n onSelect(suggestion)\n inputRef.current.value = suggestion.text\n inputRef.current.blur()\n }\n\n const showClearButton = inputRef.current?.value && inputRef.current?.value !== ''\n\n return (\n <div className={styles.searchContainer}>\n <input\n name=\"search\"\n placeholder={placeholder}\n ref={inputRef}\n type=\"text\"\n aria-label=\"Search input\"\n value={inputValue}\n onKeyDown={onKeyDown}\n onInput={(e) => {\n inputChanged(e.target.value)\n }}\n onBlur={() => {\n setShowSuggestions(false)\n }}\n onFocus={(e) => {\n e.target.select()\n setShowSuggestions(true)\n }}\n className={styles.input}\n />\n <div className={styles.searchIcon}>\n <SearchIcon />\n </div>\n {showClearButton && (\n <div className={styles.clearButton}>\n <CloseButton\n border={false}\n onClick={() => {\n const emptyValue = ''\n inputRef.current.value = emptyValue\n inputChanged(emptyValue)\n inputRef.current.focus()\n\n onClear()\n }}\n />\n </div>\n )}\n {showSuggestions && (\n <SuggestionList\n suggestions={suggestions}\n highlightText={inputRef.current?.value}\n selectedIndex={selectedIndex}\n styles={styles}\n onMouseOver={(_, index) => setSelectedIndex(index)}\n onSelect={onSelectSuggestion}\n />\n )}\n </div>\n )\n}\n\nfunction SuggestionList({ suggestions, highlightText, selectedIndex, styles, onMouseOver, onSelect }) {\n if (!suggestions || suggestions.length === 0) return\n return (\n <ul className={styles.suggestions} aria-label=\"Search suggestions\">\n {suggestions.map((d, index) => {\n return (\n <li\n key={index}\n aria-label={d.text}\n className={[styles.suggestion, index === selectedIndex && styles.selected].join(' ')}\n onMouseDown={(e) => e.preventDefault()}\n onMouseOver={() => onMouseOver(d, index)}\n onClick={() => {\n onSelect(d)\n }}\n >\n {d.text.split(new RegExp(`(${highlightText})`, 'ig')).map((part, i) =>\n i % 2 === 1 ? (\n <span className={styles.highlighted} key={i}>\n {part}\n </span>\n ) : (\n part\n ),\n )}\n </li>\n )\n })}\n </ul>\n )\n}\n","import { CircleIcon } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport function RefreshIndicator({ text, styles }) {\n styles = mergeStyles(defaultStyles, styles)\n return (\n <div className={styles.refreshIndicator}>\n <span className={styles.icon}>\n <CircleIcon pulse={true} />\n </span>\n <span className={styles.liveText}>LIVE</span>\n <span className={styles.refreshText}>{text}</span>\n </div>\n )\n}\n","import { toChildArray } from 'preact'\nimport defaultStyles from './style.module.scss'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const GridType = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n}\n\nexport function ResponsiveGrid({ type = GridType.medium, children, styles }) {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <div className={styles.grid} data-grid-type={type}>\n {toChildArray(children).map((child, index) => {\n return (\n <div key={index} className={styles.gridItem}>\n {child}\n </div>\n )\n })}\n </div>\n )\n}\n","function n(n){return r=>{n.forEach(n=>{\"function\"==typeof n?n(r):null!=n&&(n.current=r)})}}export{n as mergeRefs};\n","import{cloneElement as e,createElement as r}from\"preact\";import{mergeRefs as E}from\"preact-merge-refs\";import{useRef as t,useState as n,useEffect as o,useLayoutEffect as i,useMemo as a}from\"preact/hooks\";var T,c;!function(e){e.APPEAR=\"appear\",e.APPEAR_ACTIVE=\"appearActive\",e.APPEAR_DONE=\"appearDone\",e.ENTER=\"enter\",e.ENTER_ACTIVE=\"enterActive\",e.ENTER_DONE=\"enterDone\",e.EXIT=\"exit\",e.EXIT_ACTIVE=\"exitActive\",e.EXIT_DONE=\"exitDone\"}(T||(T={})),function(e){e.ENTER=\"onEnter\",e.ENTERING=\"onEntering\",e.ENTERED=\"onEntered\",e.EXIT=\"onExit\",e.EXITING=\"onExiting\",e.EXITED=\"onExited\"}(c||(c={}));const s={[T.APPEAR]:[c.ENTER,T.APPEAR_ACTIVE],[T.APPEAR_ACTIVE]:[c.ENTERING,T.APPEAR_DONE,!0],[T.APPEAR_DONE]:[c.ENTERED],[T.ENTER]:[c.ENTER,T.ENTER_ACTIVE],[T.ENTER_ACTIVE]:[c.ENTERING,T.ENTER_DONE,!0],[T.ENTER_DONE]:[c.ENTERED],[T.EXIT]:[c.EXIT,T.EXIT_ACTIVE],[T.EXIT_ACTIVE]:[c.EXITING,T.EXIT_DONE,!0],[T.EXIT_DONE]:[c.EXITED]};var u=r=>{const{children:c,in:u=!1,appear:A=!1,enter:N=!0,exit:l=!0,duration:I=500,alwaysMounted:p=!1,addEndListener:R}=r,P=t(),_=t();let d=!1;const[f,D]=n(()=>(d=!0,u?A?T.APPEAR:T.APPEAR_DONE:T.EXIT_DONE));o(()=>{var e;const{setTimeout:E,clearTimeout:t}=window,[n,o,i]=s[f];return null==(e=r[n])||e.call(r,P.current),o&&(i?R?R(P.current,()=>D(o)):_.current=E(D,I,o):D(o)),()=>{t(_.current)}},[f,I]),i(()=>{d||D(u?N?T.ENTER:T.ENTER_DONE:l?T.EXIT:T.EXIT_DONE)},[u]);const X=a(()=>{const e={};return Object.values(T).forEach(r=>{e[r]=f===r}),e},[f]);if(!p&&f===T.EXIT_DONE)return null;const O=c(X,f);return e(O,{ref:E([P,O.ref])})};function A(){return A=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var E=arguments[r];for(var t in E)Object.prototype.hasOwnProperty.call(E,t)&&(e[t]=E[t])}return e},A.apply(this,arguments)}function N(e,r){if(null==e)return{};var E,t,n={},o=Object.keys(e);for(t=0;t<o.length;t++)r.indexOf(E=o[t])>=0||(n[E]=e[E]);return n}const l=(e,r,E)=>{const{[r]:t=E}=e.props;return t};var I=r=>{const{children:E,appear:n=!1,enter:o=!0,exit:i=!0,duration:a=500}=r,T=Array.isArray(E)?E:[E],c=t(!0),s=t([]),u=[],N=[],I=(r,E)=>{if(!r)return;const t=e(r,A({enter:o,exit:i,duration:a},r.props,{in:!E,appear:c.current?l(r,\"appear\",n):l(r,\"enter\",o)}));u.push({visibleChild:t,removeTimeout:E}),N.push(t)};let p=0;s.current.forEach(({visibleChild:e,removeTimeout:r})=>{const{key:E}=e,t=T.findIndex(e=>e.key===E);if(t<0)r?I(e,r):i&&!1!==e.props.exit&&I(e,(n=e,setTimeout(()=>{const{current:e}=s,r=e.findIndex(({visibleChild:e})=>e.key===n.key);r>-1&&e.splice(r,1)},l(n,\"duration\",a))));else{r&&clearTimeout(r);for(let e=p;e<=t;e++)I(T[e],null)}var n;p=Math.max(p,t+1)});for(let e=p;e<T.length;e++)I(T[e],null);return s.current=u,c.current=!1,N};const p=[\"children\",\"classNames\"],R={[T.APPEAR]:\"-appear\",[T.APPEAR_ACTIVE]:\"-appear-active\",[T.APPEAR_DONE]:\"-appear-done\",[T.ENTER]:\"-enter\",[T.ENTER_ACTIVE]:\"-enter-active\",[T.ENTER_DONE]:\"-enter-done\",[T.EXIT]:\"-exit\",[T.EXIT_ACTIVE]:\"-exit-active\",[T.EXIT_DONE]:\"-exit-done\"},P=(...e)=>e.filter(e=>!!e).join(\" \"),_=(e,r)=>\"string\"==typeof r?`${r}${R[e]}`:r[e];var d=E=>{const{children:t,classNames:n}=E,o=N(E,p);return r(u,o,(r,E)=>{const{className:o}=t.props,i=a(()=>P(o,((e,r)=>{const E=_(e,r);switch(e){case T.APPEAR_ACTIVE:return P(_(T.APPEAR,r),E);case T.ENTER_ACTIVE:return P(_(T.ENTER,r),E);case T.EXIT_ACTIVE:return P(_(T.EXIT,r),E);default:return E}})(E,n)),[o,n,E]);return e(t,{className:i})})};const f=[\"children\",\"styles\"];var D=E=>{const{children:t,styles:n}=E,o=N(E,f);return r(u,o,(r,E)=>{const{style:o}=t.props,i=a(()=>A({},((e,r)=>{const E=r[e];switch(e){case T.APPEAR_ACTIVE:return A({},r[T.APPEAR],E);case T.ENTER_ACTIVE:return A({},r[T.ENTER],E);case T.EXIT_ACTIVE:return A({},r[T.EXIT],E);default:return E}})(E,n),o),[o,n,E]);return e(t,{style:i})})};export{d as CSSTransition,D as StyleTransition,u as Transition,I as TransitionGroup};\n","import { CSSTransition } from \"preact-transitioning\"\nimport { useCallback, useEffect, useRef } from \"preact/hooks\"\nimport { createPortal } from \"preact/compat\"\nimport styles from \"./style.module.css\"\n\nexport function Modal({ visible = false, children, onClickOutside }) {\n const modalBoxRef = useRef()\n const onClick = useCallback(\n (event) => {\n if (!modalBoxRef.current.contains(event.target)) {\n if (onClickOutside && visible) onClickOutside(event)\n }\n },\n [onClickOutside, visible],\n )\n\n useEffect(() => {\n if (visible) {\n window.addEventListener(\"scroll\", onClick, { once: true })\n }\n return () => {\n if (visible) {\n window.removeEventListener(\"scroll\", onClick)\n }\n }\n }, [onClick, visible])\n\n return createPortal(\n <CSSTransition in={visible} duration={300} classNames={styles}>\n <div class={styles.transitionContainer} onClick={onClick} style={{ pointerEvents: visible ? \"auto\" : \"none\" }}>\n <div ref={modalBoxRef} class={styles.modalBox}>\n {children}\n </div>\n </div>\n </CSSTransition>,\n document.body,\n )\n}\n","import { useState, useCallback, useMemo } from \"preact/hooks\"\nimport { Chevron } from \"$particles\"\nimport styles from \"./style.module.css\"\n\nexport function Dropdown({ title, hint, options, onSelect, collapseOnSelect = false, expandByDefault = true }) {\n const [expanded, setExpanded] = useState(expandByDefault)\n const [selectedIndex, setSelectedIndex] = useState(0)\n\n const onOptionClick = useCallback(\n (option, index) => {\n setSelectedIndex(index)\n if (onSelect) onSelect(option, index)\n if (collapseOnSelect) setExpanded(false)\n },\n [onSelect],\n )\n\n const optionGroups = useMemo(() => {\n const containsOptionGroups = \"options\" in options[0]\n if (!containsOptionGroups) {\n // create single option group\n return [{ options }]\n }\n\n // assign consecutive indices to options within groups\n let optionIndex = 0\n for (const group of options) {\n for (const option of group.options) {\n option.index = optionIndex\n optionIndex++\n }\n }\n\n return options\n }, options)\n\n const flatOptions = useMemo(() => {\n return optionGroups.map((group) => group.options).flat()\n }, [optionGroups])\n\n const iconForSelectedOption = useMemo(() => {\n const selectedOption = flatOptions[selectedIndex]\n return selectedOption.icon\n }, [flatOptions, selectedIndex])\n\n return (\n <div className={styles.container}>\n <button className={styles.button} onClick={() => setExpanded((current) => !current)}>\n <img src={iconForSelectedOption} className={styles.icon} />\n <span className={styles.title}>{title}</span>\n <Chevron active={true} size=\"large\" direction={expanded ? \"up\" : \"down\"} />\n </button>\n\n <div className={styles.popout} style={{ visibility: expanded ? \"visible\" : \"hidden\" }}>\n {hint && <p className={styles.hint}>{hint}</p>}\n {optionGroups.map((group) => (\n <OptionGroup {...group} selectedIndex={selectedIndex} onOptionClick={onOptionClick} />\n ))}\n </div>\n </div>\n )\n}\n\nfunction OptionGroup({ title, options, selectedIndex, onOptionClick }) {\n return (\n <>\n {title && <span className={styles.groupHeader}>{title}</span>}\n {options.map((option) => {\n return (\n <button key={option.title} className={styles.option} onClick={() => onOptionClick(option, option.index)}>\n <img src={option.icon} className={styles.optionIcon} />\n <div className={styles.optionText}>\n <h4 className={styles.optionTitle}>{option.title}</h4>\n <p className={styles.optionDescription}>{option.description}</p>\n </div>\n {option.index === selectedIndex && (\n <div className={styles.checkmark}>\n <Checkmark />\n </div>\n )}\n </button>\n )\n })}\n </>\n )\n}\n\nfunction Checkmark() {\n return (\n <svg width=\"11\" height=\"9\" viewBox=\"0 0 11 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M0.631814 4.43687L0.0839844 4.9847L2.82313 8.8195H3.08335L10.9173 0.711624L10.3695 0.17749L3.08335 6.77884L0.631814 4.43687Z\"\n className={styles.checkmarkPath}\n />\n </svg>\n )\n}\n","import { useLayoutEffect, useState, useRef } from \"preact/hooks\"\nimport { useWindowSize } from \"$shared/hooks/useWindowSize\"\nimport { StackedBar, LabelType, LabelOverlapConfig } from \"$particles/stacked-bar\"\nimport defaultStyles from \"./style.module.scss\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\n\nexport function CoalitionsTracker({\n coalitions,\n threshold,\n barChartHeight = 32,\n listMembersAccessor = \"parties\",\n listMemberTotalAccessor = \"totalSeats\",\n listDescriptionAccessor = \"description\",\n abbreviationAccessor = \"abbreviation\",\n thresholdTextBold,\n thresholdText,\n styles,\n labelOverlapConfig = LabelOverlapConfig,\n}) {\n const wrapperRef = useRef(null)\n const thresholdTextRef = useRef(null)\n const [width, setWidth] = useState(0)\n const biggestListTotal = Math.max(...coalitions.map((l) => l[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)))\n const windowSize = useWindowSize()\n const thresholdTextMinWidth = windowSize.width < 740 ? 66 : 150\n const thresholdDotWidth = 11\n const thresholdTextPaddingLeft = 5\n const maxBarWidth = width - thresholdTextMinWidth - (thresholdDotWidth - 1) / 2 - thresholdTextPaddingLeft\n const thresholdLeft = (threshold / biggestListTotal) * maxBarWidth\n\n const parsedLists = coalitions.map((coalition) => {\n const listTotal = coalition[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)\n return {\n title: coalition[\"name\"],\n description: coalition[listDescriptionAccessor],\n height: barChartHeight,\n width: (listTotal / biggestListTotal) * maxBarWidth,\n stack: coalition[listMembersAccessor]\n .map((m) => {\n const listTotal = coalition[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)\n\n return {\n label: m[listMemberTotalAccessor],\n fraction: m[listMemberTotalAccessor] / listTotal,\n abbreviation: m[abbreviationAccessor],\n }\n })\n .sort((a, b) => b.fraction - a.fraction),\n }\n })\n\n styles = mergeStyles(defaultStyles, styles)\n\n useLayoutEffect(() => {\n const newWidth = wrapperRef.current.getBoundingClientRect().width\n setWidth(newWidth)\n }, [windowSize])\n\n const renderCoalition = (list, index) => {\n if (list.width <= 0) {\n return\n }\n return (\n <div key={index} className={styles.coalition} style={{ position: \"relative\", zIndex: 2 }}>\n <h4 className={styles.title}>{list.title}</h4>\n <p className={styles.description} style={{ maxWidth: thresholdLeft <= 620 ? thresholdLeft - 8 : 620 }}>\n {list.description}\n </p>\n <StackedBar labelOverlapConfig={labelOverlapConfig} labelType={LabelType.hanging} stack={list.stack} width={list.width} height={barChartHeight} createSVG={true} />\n </div>\n )\n }\n\n return (\n <div ref={wrapperRef} className={styles.coalitionsWrapper}>\n <div className={styles.coalitionsContainer}>{parsedLists.map(renderCoalition)}</div>\n <div\n className={styles.thresholdDot}\n style={{\n position: \"absolute\",\n height: thresholdDotWidth,\n width: thresholdDotWidth,\n top: 0,\n left: 0.5 + thresholdLeft - thresholdDotWidth / 2,\n }}\n />\n <div\n className={styles.thresholdLine}\n style={{\n position: \"absolute\",\n height: \"100%\",\n width: 1,\n top: 0,\n left: thresholdLeft,\n }}\n />\n <div\n ref={thresholdTextRef}\n className={styles.thresholdText}\n style={{\n position: \"absolute\",\n minWidth: thresholdTextMinWidth,\n width: \"auto\",\n top: -(thresholdDotWidth + 1) / 2,\n left: thresholdLeft + (thresholdDotWidth - 1) / 2 + thresholdTextPaddingLeft,\n }}\n >\n {thresholdTextBold && <span className={styles.thresholdTextBold}>{thresholdTextBold}</span>}\n {thresholdText && <span>{thresholdText}</span>}\n </div>\n </div>\n )\n}\n","import styles from './style.module.scss'\n\nexport function Gradient() {\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"none\"\n >\n <g className={styles.gradient}>\n <rect fill=\"url(#paint0_linear_3798_6653)\" />\n </g>\n <defs>\n <linearGradient id=\"paint0_linear_3798_6653\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop className={styles.firstStop} />\n <stop className={styles.lastStop} offset=\"1\" />\n </linearGradient>\n </defs>\n </svg>\n )\n}\n","import { toChildArray } from 'preact'\nimport { useState, useRef, useLayoutEffect, useMemo } from 'preact/hooks'\nimport { useWindowSize } from '$shared/hooks/useWindowSize'\nimport { Gradient } from './gradient'\nimport { ArrowButton, Button } from '$particles'\nimport styles from './style.module.scss'\n\nexport function Ticker({ maxItems = 20, onStateChange, children }) {\n const [pageIndex, setPageIndex] = useState(0)\n const [pageWidth, setPageWidth] = useState(0)\n const [numberOfPages, setNumberOfPages] = useState(0)\n\n const offsetWidth = useMemo(() => {\n return -pageIndex * (pageWidth || 0)\n }, [pageIndex, pageWidth])\n\n const windowSize = useWindowSize()\n\n const tickerRef = useRef()\n const tickerItemsRef = useRef()\n const tickerScrollRef = useRef()\n const controlsRef = useRef()\n\n const [hideButtons, setHideButtons] = useState(false)\n\n const [expanded, setExpanded] = useState(false)\n\n const childArray = toChildArray(children)\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n const pageWidth = tickerItemsContainer.clientWidth * 0.75\n setPageWidth(pageWidth)\n\n const numberOfPages = Math.ceil(tickerScrollRef.current.scrollWidth / pageWidth)\n setNumberOfPages(numberOfPages)\n }, [])\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n\n const hideButtons =\n windowSize.width >= 480\n ? tickerScrollRef.current.scrollWidth <= tickerItemsContainer.clientWidth\n : tickerScrollRef.current.scrollHeight <= tickerItemsContainer.clientHeight\n setHideButtons(hideButtons)\n }, [windowSize, setHideButtons])\n\n function toggleExpandedState() {\n setExpanded((expanded) => {\n const newState = !expanded\n if (onStateChange) onStateChange({ expanded: newState })\n return newState\n })\n }\n\n return (\n <div\n ref={tickerRef}\n className={styles.ticker}\n style={`--ticker-offset: ${offsetWidth}px;`}\n data-expanded={expanded}\n >\n <div ref={tickerItemsRef} className={styles.tickerItems}>\n <div ref={tickerScrollRef} className={styles.tickerScroll}>\n {childArray.map((child, index) => (\n <div className={styles.tickerItem} key={index}>\n {child}\n </div>\n ))}\n </div>\n </div>\n <div ref={controlsRef} className={styles.controls} style={hideButtons && { display: 'none' }}>\n <div className={styles.gradient}>\n <Gradient />\n </div>\n <div className={styles.buttons}>\n <ArrowButton onClick={() => setPageIndex((d) => d + 1)} disabled={pageIndex >= numberOfPages - 1} />\n <ArrowButton direction=\"left\" onClick={() => setPageIndex((d) => d - 1)} disabled={pageIndex <= 0} />\n </div>\n <div className={styles.button}>\n <Button type=\"regular\" styles={{ buttonInner: styles.buttonInner }} onClick={toggleExpandedState}>\n {expanded ? 'Show fewer' : `Show ${maxItems} most recent`}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import { useRef, useEffect, useState } from 'preact/hooks'\nimport { pointInsideRect } from '$shared/helpers/geometry'\n\nexport function useTouchOrHover() {\n const ref = useRef()\n const [position, setPosition] = useState()\n const [isActive, setIsActive] = useState(false)\n const [touchRect, setTouchRect] = useState()\n\n useEffect(() => {\n const element = ref.current\n\n let touchCancelled = false\n\n const touchStarted = (event) => {\n if (event.touches.length > 1) return\n\n touchCancelled = false\n\n const touch = event.touches[0]\n const { clientX, clientY } = touch\n\n const rect = element.getBoundingClientRect()\n const point = { x: clientX - rect.left, y: clientY - rect.top }\n setPosition(point)\n\n const touchRect = {\n x: clientX - touch.radiusX,\n y: clientY - touch.radiusY,\n width: touch.radiusX * 2,\n height: touch.radiusY * 2,\n }\n setTouchRect(touchRect)\n\n setIsActive(true)\n\n event.stopPropagation()\n }\n\n const touchMoved = (event) => {\n if (touchCancelled || event.targetTouches.length !== 1) return\n\n const touch = event.targetTouches[0]\n\n const { clientX, clientY } = touch\n const rect = element.getBoundingClientRect()\n const point = { x: clientX - rect.left, y: clientY - rect.top }\n\n // check if touch is:\n // 1. cancelable. if it is not, then another gesture has started\n // 2. still inside target rect\n // if one of those conditions is not met, we hide the tooltip\n if (!event.cancelable || !pointInsideRect(point, rect)) {\n setIsActive(false)\n touchCancelled = true\n } else {\n setPosition(point)\n setIsActive(true)\n }\n }\n\n const touchEnded = (event) => {\n if (event.cancelable) {\n // prevent simulated click events\n event.preventDefault()\n }\n setIsActive(false)\n setPosition(null)\n }\n\n const mouseOver = (event) => {\n const { clientX, clientY } = event\n\n const rect = element.getBoundingClientRect()\n const x = clientX - rect.left\n const y = clientY - rect.top\n\n setPosition({ x, y })\n setIsActive(true)\n }\n\n const mouseMoved = (event) => {\n const { clientX, clientY } = event\n\n const rect = element.getBoundingClientRect()\n const x = clientX - rect.left\n const y = clientY - rect.top\n\n setPosition({ x, y })\n }\n\n const mouseOut = () => {\n setIsActive(false)\n setPosition(null)\n }\n\n element.addEventListener('touchstart', touchStarted)\n element.addEventListener('touchmove', touchMoved)\n element.addEventListener('touchend', touchEnded)\n element.addEventListener('touchcancel', touchEnded)\n\n element.addEventListener('mouseover', mouseOver)\n element.addEventListener('mousemove', mouseMoved)\n element.addEventListener('mouseout', mouseOut)\n\n return () => {\n element.removeEventListener('touchstart', touchStarted)\n element.removeEventListener('touchmove', touchMoved)\n element.removeEventListener('touchend', mouseOut)\n element.removeEventListener('touchcancel', mouseOut)\n\n element.removeEventListener('mouseover', touchStarted)\n element.removeEventListener('mousemove', mouseMoved)\n element.removeEventListener('mouseout', mouseOut)\n }\n }, [])\n\n return {\n touchOrHoverRef: ref,\n touchOrHoverIsActive: isActive,\n touchRect,\n positionInTarget: position,\n }\n}\n\n"],"names":["mergeStyles","firstStyle","secondStyle","Error","concat","allKeys","Set","Object","keys","merged","Array","from","reduce","result","key","DIRECTION","up","down","SIZE","small","large","Chevron","active","direction","size","styles","defaultStylesCopy","defaultStyles","path","group","rotated","_jsx","SmallChevron","LargeChevron","width","height","viewBox","className","svg","fill","xmlns","children","style","d","DOT_TYPE","round","square","LegendItem","dotType","text","abbreviation","dot","circle","_jsxs","container","preventOverlap","labelPositions","iteration","labelSize","coordinate","moveBothLabels","maxIterations","totalOverlap","index","length","previousElement","element","overlap","uniqueBy","array","map","set","Map","values","positionLabels","labels","sort","a","b","scaleLinear","domain","range","domainMin","domainMax","rangeMin","rangeMax","slope","intercept","x","LabelType","hanging","inline","LabelOverlapConfig","StackedBar","stack","hideLabels","labelType","showBackgroundRect","createSVG","labelOverlapConfig","border","rectElements","useRef","textElements","svgHeight","cleanBorderAbbr","abbrText","split","renderLabel","config","i","ref","current","label","display","y","textAnchor","dominantBaseline","value","totalWidth","content","itemWidth","fraction","labelConfig","transform","bar","hangingLabelConfig","useMemo","totalW","backgroundRect","overflow","shouldUpdate","oldState","newState","isObj","obj","isArray","createStore","initialStore","store","listeners","useStore","selectorFn","subscribe","useCallback","updater","listener","add","delete","syncedStore","useSyncExternalStore","getStore","getServerStore","setStore","action","oldStore","Function","forEach","useGradients","setGradients","getGradients","GradientIcon","props","previous","next","gradientId","gradients","useEffect","id","document","getElementById","createElement","body","prepend","render","GradientDefs","class","x1","y1","x2","y2","gradientUnits","offset","useWindowSize","windowSize","setWindowSize","useState","window","innerWidth","innerHeight","handleResize","addEventListener","removeEventListener","useContainerSize","containerRef","containerSize","setContainerSize","useLayoutEffect","clientWidth","clientHeight","WaffleType","WaffleUnit","type","attributes","Waffle","units","numberOfRows","idAccessor","onMouseOver","total","columns","Math","ceil","unitWidth","unitHeight","unit","j","e","floor","r","InfoButton","forwardRef","onClick","button","CircleIcon","color","pulse","join","rx","module","this","n","s","u","c","t","p","_","M","m","f","l","$","v","g","D","o","h","dayjs","extend","relativeTime","RelativeTimeSentence","timeStamp","timeSince","fromNow","Container","sideBorders","pageContainer","sideBordersStyle","ChangeBar","positive","party","centre","parseFloat","barwidth","negleft","posleft","thisStyles","thisColor","zeroStyles","wrapper","zero","SquareCutCornerIcon","cornerColor","squareColor","squareSize","cornerSize","cornerMargin","dividingLineColor","points","corner","getItemRotate","fromBottom","fromLeft","getContainerFlip","scaleX","scaleY","StackedGrid","containerFlip","itemRotateClass","stackedGridContainer","SquareIcon","squareFill","ArrowButton","disabled","icon","cx","cy","Button","buttonInner","CloseButton","buttonBorder","AdSlot","name","sizeMapping","slotId","mobileSizes","mobile","tabletSizes","tablet","desktopSizes","desktop","slot","sortAscending","accessor","valueA","valueB","sortDescending","useTable","data","sortState","sortedData","columnIndex","column","sortFunction","ascending","toSorted","columnModels","isSorted","ColumnModel","rowModels","rowIndex","cells","CellModel","cell","RowModel","rows","constructor","definition","defaultValue","header","headerProps","sortable","headerCellStyle","row","displayValue","prototype","hasOwnProperty","call","toString","rowData","JSON","stringify","Table","hideHeader","setSortState","findIndex","table","sortByColumn","currentState","cellSpacing","cellPadding","headerCell","HeaderCell","hideHeaderNoBorder","bodyRow","bodyCell","headerCellButton","SlopeChart","lines","y1Label","y2Label","axis","padding","left","right","top","bottom","wrapperRef","setWidth","contentWidth","contentHeight","yScale","show","newWidth","getBoundingClientRect","y1Labels","y2Labels","chart","axisLabel","startLabel","endLabel","line","itemStyles","lineWhite","slopeChartContainer","rectsIntersect","rect1","rect2","pointInsideRect","point","rect","Tooltip","for","targetElement","touchRect","positionInTarget","tooltipPosition","setTooltipPosition","displayElement","setDisplayElement","tooltipRef","querySelector","targetRect","newPosition","tooltipPositionForPoint","tooltip","tooltipPositionForRect","fixedStyle","position","zIndex","createPortal","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","displayElementRect","tooltipRect","ControlChange","hasChanged","_Fragment","FirstPastThePostWaffle","lineOverHang","halfLineText","waffle","ToplineResult","secondaryName","mainNumber","mainNumberSuffix","secondaryNumber","displayRow","onInfoPress","showInfoButton","infoButtonRef","displayStyle","displayColumn","toplineResult","topRow","infoButton","displayNumbers","primaryname","subhead","secondaryname","PageSection","borderTop","backgroundColor","minHeight","setMinHeight","headerRef","headerElement","section","ColumnChart","maxValue","minValue","chartHeight","chartWidth","columnWidth","columnPadding","totalColumnWidth","Number","marginBottom","getHeight","input","abs","SubtitleStyle","PartyProfile","title","subtitle","subtitleStyle","blurb","footnote","imgSrc","imgAltText","src","img","alt","epsilon","geoStream","x0","y0","main","albers","bboxFeature","bounds","minLon","minLat","maxLon","maxLat","feature","properties","geometry","coordinates","MapContext","createContext","calculateScale","mapBounds","mapWidthPixels","mapHeightPixels","south","west","north","east","widthKilometers","distanceInKmBetweenEarthCoordinates","heightKilometers","scale","point1","point2","lon1","lat1","lon2","lat2","earthRadiusKm","dLat","degreesToRadians","dLon","sin","cos","atan2","sqrt","degrees","PI","SVGMapProvider","mapRef","zoom","selectedFeature","contentSize","projection","fitSize","geoPath","layerSet","layers","updateLayers","_layers","registerLayer","layer","unregisterLayer","findFeatureAtPoint","adjustedPoint","getVisibleBounds","projectedSW","invert","projectedNE","getZoomScale","context","extent","Provider","CompositionBorders","useContext","getCompositionBorders","SVGRenderer","drawCompositionBorders","dynamicPropValue","prop","Polygon","features","stroke","strokeWidth","projectedPoint","geoContains","Line","draw","ctx","beginPath","lineWidth","pixelRatio","strokeStyle","drawToCanvas","register","unregister","initialStrokeWidth","scaledStrokeWidth","zoomScale","Prerendered","url","href","Point","radius","entries","resolvedRadius","isNaN","distanceSquared","radiusSquared","Projection","geoAlbersUKComposite","geoAlbersUk","geoAlbersEngland","geoAlbers","center","rotate","parallels","geoMercator","MapConfiguration","UKComposite","England","London","ZERO_PADDING","DEFAULT_ZOOM","enabled","minZoom","maxZoom","assign","isReady","setIsReady","useImperativeHandle","getContainer","getContext","containerStyle","renderSVG","toChildArray","child","cloneElement","ResultSummary","timestamp","paragraph","SearchIcon","SearchInput","placeholder","inputValue","maxSuggestions","onInputChange","onSubmit","onSelect","onClear","inputRef","selectedIndex","setSelectedIndex","suggestions","setSuggestions","showSuggestions","setShowSuggestions","onKeyDown","event","preventDefault","currentIndex","min","max","inputChanged","slice","onSelectSuggestion","suggestion","blur","showClearButton","searchContainer","onInput","target","onBlur","onFocus","select","searchIcon","clearButton","emptyValue","focus","SuggestionList","highlightText","selected","onMouseDown","RegExp","part","highlighted","RefreshIndicator","refreshIndicator","liveText","refreshText","GridType","medium","ResponsiveGrid","grid","gridItem","N","R","P","E","Modal","visible","onClickOutside","modalBoxRef","contains","once","CSSTransition","in","duration","classNames","transitionContainer","pointerEvents","modalBox","Dropdown","hint","options","collapseOnSelect","expandByDefault","expanded","setExpanded","onOptionClick","option","optionGroups","containsOptionGroups","optionIndex","flatOptions","flat","iconForSelectedOption","selectedOption","popout","visibility","OptionGroup","groupHeader","optionIcon","optionText","optionTitle","optionDescription","description","checkmark","Checkmark","checkmarkPath","CoalitionsTracker","coalitions","threshold","barChartHeight","listMembersAccessor","listMemberTotalAccessor","listDescriptionAccessor","abbreviationAccessor","thresholdTextBold","thresholdText","thresholdTextRef","biggestListTotal","acc","cur","thresholdTextMinWidth","thresholdDotWidth","thresholdTextPaddingLeft","maxBarWidth","thresholdLeft","parsedLists","coalition","listTotal","renderCoalition","list","maxWidth","coalitionsWrapper","coalitionsContainer","thresholdDot","thresholdLine","minWidth","Gradient","preserveAspectRatio","gradient","firstStop","lastStop","Ticker","maxItems","onStateChange","pageIndex","setPageIndex","pageWidth","setPageWidth","numberOfPages","setNumberOfPages","tickerRef","tickerItemsRef","tickerScrollRef","controlsRef","hideButtons","setHideButtons","childArray","tickerItemsContainer","scrollWidth","scrollHeight","toggleExpandedState","ticker","tickerItems","tickerScroll","tickerItem","controls","buttons","useTouchOrHover","setPosition","isActive","setIsActive","setTouchRect","touchCancelled","touchStarted","touches","touch","clientX","clientY","radiusX","radiusY","stopPropagation","touchMoved","targetTouches","cancelable","touchEnded","mouseOver","mouseMoved","mouseOut","touchOrHoverRef","touchOrHoverIsActive"],"mappings":"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","x_google_ignoreList":[14,15,37,38,39,40,41,59,60]}
|