@guardian/interactive-component-library 0.1.0-alpha.21 → 0.1.0-alpha.23
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.js","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/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/shared/hooks/useWindowSize.js","../src/lib/components/molecules/slope-chart/index.jsx","../src/lib/components/molecules/tooltip/useTooltipTarget.js","../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/tooltip/modal/index.jsx","../src/lib/components/molecules/tooltip/index.jsx","../src/lib/components/molecules/control-change/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/shared/hooks/useContainerSize.js","../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","../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"],"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","\nexport 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 if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1, labelSize, coordinate, moveBothLabels)\n }\n\n return labelPositions\n }\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\n export 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\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 function StackedBar({\n stack,\n width,\n height,\n hideLabels = false,\n labelType = LabelType.inline,\n showBackgroundRect = false,\n createSVG = true,\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 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\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 {\n labelType === LabelType.inline && !hideLabels &&\n renderLabel(labelConfig, index)\n }\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 \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, 20, 'x', false)\n }, [stack, height, width])\n\n\n\n const backgroundRect = (\n <g><rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} /></g>\n )\n\n if (createSVG) {\n return (\n <svg\n overflow=\"hidden\"\n width={width}\n height={svgHeight}\n viewBox={`0 0 ${width} ${svgHeight}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\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}","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 defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const InfoButton = ({ onClick, styles }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return (\n <button 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 { 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 { 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","import { useEffect, useState } from 'preact/hooks'\n\nexport const useTooltipTarget = (targetElement, trackPosition) => {\n const [targetRect, setTargetRect] = useState()\n const [position, setPosition] = useState(null)\n const [hoverActive, setHoverActive] = useState(false)\n\n const onMouseMove = ({ clientX, clientY, currentTarget }) => {\n const rect = currentTarget.getBoundingClientRect()\n const x = clientX - rect.left\n const y = clientY - rect.top\n requestAnimationFrame(() => {\n setTargetRect(rect)\n setPosition({ x, y })\n setHoverActive(true)\n })\n }\n\n const onMouseOut = () => {\n requestAnimationFrame(() => {\n setHoverActive(false)\n })\n }\n\n useEffect(() => {\n setTargetRect(targetElement.getBoundingClientRect())\n\n if (trackPosition) {\n targetElement.addEventListener('mousemove', onMouseMove)\n targetElement.addEventListener('mouseout', onMouseOut)\n }\n\n return () => {\n if (trackPosition) {\n targetElement.removeEventListener('mousemove', onMouseMove)\n targetElement.removeEventListener('mouseout', onMouseOut)\n }\n }\n }, [targetElement, trackPosition])\n\n return {\n targetRect,\n positionInTarget: position,\n hoverActive,\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 styles from './style.module.css'\n\nexport function Modal({ visible = false, children }) {\n return (\n <CSSTransition in={visible} duration={300} classNames={styles} alwaysMounted>\n <div class={styles.transitionContainer}>\n <div class={styles.modalBox}>{children}</div>\n </div>\n </CSSTransition>\n )\n}\n","import { useLayoutEffect, useEffect, useRef, useState } from 'preact/hooks'\nimport { useTooltipTarget } from './useTooltipTarget'\nimport { createPortal } from 'preact/compat'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport { Modal } from './modal'\nimport defaultStyles from './style.module.css'\n\nexport const TooltipType = {\n float: 'float',\n modal: 'modal',\n}\n\nexport function Tooltip({ for: targetElement, renderIn: refOrSelector, type = TooltipType.float, 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 trackPosition = typeof children === 'function'\n const { targetRect, positionInTarget, hoverActive } = useTooltipTarget(targetElement, trackPosition)\n const tooltipRef = useRef(null)\n\n styles = mergeStyles(defaultStyles, styles)\n\n useEffect(() => {\n let element = null\n if (typeof refOrSelector === 'string') {\n element = document.querySelector(refOrSelector)\n } else if ('current' in refOrSelector) {\n element = refOrSelector.current\n } else {\n throw new Error('renderIn prop needs to be a selector or ref (from useRef)')\n }\n setDisplayElement(element)\n }, [refOrSelector])\n\n useLayoutEffect(() => {\n if (!tooltipRef.current) return\n\n if (trackPosition && positionInTarget) {\n const newPosition = tooltipPositionForPoint({\n targetRect,\n positionInTarget,\n tooltip: tooltipRef.current,\n displayElement,\n })\n setTooltipPosition(newPosition)\n } else if (!trackPosition) {\n const newPosition = tooltipPositionForRect({ targetRect, tooltip: tooltipRef.current, displayElement })\n setTooltipPosition(newPosition)\n }\n }, [trackPosition, targetRect, positionInTarget, displayElement, tooltipRef])\n\n if (!displayElement) return\n\n const displayTooltip = hoverActive || !trackPosition\n\n const fixedStyle =\n type === TooltipType.modal\n ? {}\n : {\n display: displayTooltip ? '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 {positionInTarget && children(positionInTarget)}\n {!trackPosition && children}\n </div>\n )\n\n return createPortal(\n type === TooltipType.modal ? <Modal visible={hoverActive}>{tooltip}</Modal> : tooltip,\n displayElement,\n )\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 if (newPosition.y + tooltipHeight > displayElementRect.bottom) {\n newPosition.y -= tooltipHeight\n }\n\n return newPosition\n}\n\nfunction tooltipPositionForRect({ targetRect, tooltip, displayElement }) {\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 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 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 { InfoButton } from '$particles'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\nimport defaultStyles from './style.module.scss'\n\nexport const ToplineResult = ({\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}) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n const displayStyle = displayRow ? styles.displayRow : styles.displayColumn\n\n return !secondaryName ? (\n <div class={styles.toplineResult} onMouseOver={onMouseOver}>\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} />\n </span>\n )}\n </div>\n <div class={`${styles.displayNumbers} ${displayStyle}`}>\n <div class={styles.mainNumber}>\n {mainNumber}{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}>\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}{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 { 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 return (\n <section\n ref={ref}\n className={[styles.section, borderTop && styles.borderTop].join(' ')}\n style={{ '--background-color': backgroundColor }}\n >\n <div className={styles.header}>{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","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","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","import { CSSTransition } from 'preact-transitioning'\nimport { useCallback, 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 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 }) {\n const [expanded, setExpanded] = useState(true)\n const [selectedIndex, setSelectedIndex] = useState(0)\n\n const onOptionClick = useCallback((option, index) => {\n setSelectedIndex(index)\n if (onSelect) onSelect(option, index)\n }, [onSelect])\n\n const iconForSelectedOption = useMemo(() => {\n const selectedOption = options[selectedIndex]\n return selectedOption.icon\n }, [options, selectedIndex])\n \n return (\n <div>\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 {options.map((option, index) => (\n <button key={option.title} className={styles.option} onClick={() => onOptionClick(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 {index === selectedIndex && (\n <div className={styles.checkmark}>\n <Checkmark />\n </div>\n )}\n </button>\n ))}\n </div>\n </div>\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 } 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}) {\n const wrapperRef = useRef(null)\n const thresholdTextRef = useRef(null)\n const [width, setWidth] = useState(0)\n const biggestListTotal = Math.max(\n ...coalitions.map((l) => l[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)),\n )\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 }}>{list.description}</p>\n <StackedBar 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"],"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","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","StackedBar","stack","hideLabels","labelType","showBackgroundRect","createSVG","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","InfoButton","onClick","button","CircleIcon","color","pulse","join","rx","this","n","s","u","c","t","e","r","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","type","buttonInner","CloseButton","border","buttonBorder","AdSlot","name","sizeMapping","slotId","mobileSizes","mobile","tabletSizes","tablet","desktopSizes","desktop","slot","sortAscending","accessor","valueA","valueB","sortDescending","useTable","columns","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","useState","findIndex","table","sortByColumn","currentState","cellSpacing","cellPadding","headerCell","HeaderCell","hideHeaderNoBorder","bodyRow","bodyCell","headerCellButton","useWindowSize","windowSize","setWindowSize","window","innerWidth","innerHeight","handleResize","addEventListener","removeEventListener","SlopeChart","lines","y1Label","y2Label","axis","padding","left","right","top","bottom","wrapperRef","setWidth","contentWidth","Math","floor","contentHeight","yScale","show","useLayoutEffect","newWidth","getBoundingClientRect","y1Labels","y2Labels","chart","axisLabel","startLabel","endLabel","line","itemStyles","slopeChartContainer","useTooltipTarget","targetElement","trackPosition","targetRect","setTargetRect","position","setPosition","hoverActive","setHoverActive","onMouseMove","clientX","clientY","currentTarget","rect","requestAnimationFrame","onMouseOut","positionInTarget","N","R","P","E","Modal","visible","CSSTransition","in","duration","classNames","alwaysMounted","transitionContainer","modalBox","TooltipType","float","modal","Tooltip","for","renderIn","refOrSelector","tooltipPosition","setTooltipPosition","displayElement","setDisplayElement","tooltipRef","querySelector","newPosition","tooltipPositionForPoint","tooltip","tooltipPositionForRect","displayTooltip","fixedStyle","zIndex","createPortal","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","displayElementRect","ControlChange","hasChanged","_Fragment","ToplineResult","secondaryName","mainNumber","mainNumberSuffix","secondaryNumber","displayRow","onMouseOver","onInfoPress","showInfoButton","displayStyle","displayColumn","toplineResult","topRow","infoButton","displayNumbers","primaryname","subhead","secondaryname","PageSection","forwardRef","borderTop","backgroundColor","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","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","useContainerSize","containerRef","containerSize","setContainerSize","clientWidth","clientHeight","dynamicPropValue","prop","Polygon","features","stroke","strokeWidth","point","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","onClickOutside","modalBoxRef","contains","pointerEvents","Dropdown","hint","options","expanded","setExpanded","onOptionClick","option","iconForSelectedOption","selectedOption","popout","visibility","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","ceil","scrollWidth","scrollHeight","toggleExpandedState","ticker","tickerItems","tickerScroll","tickerItem","controls","buttons"],"mappings":"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","x_google_ignoreList":[11,12,28,29,37,38,39,40,41]}
|
|
1
|
+
{"version":3,"file":"interactive-component-library.js","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","\nexport 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 if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1, labelSize, coordinate, moveBothLabels)\n }\n\n return labelPositions\n }\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\n export 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\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 function StackedBar({\n stack,\n width,\n height,\n hideLabels = false,\n labelType = LabelType.inline,\n showBackgroundRect = false,\n createSVG = true,\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 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\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 {\n labelType === LabelType.inline && !hideLabels &&\n renderLabel(labelConfig, index)\n }\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 \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, 20, 'x', false)\n }, [stack, height, width])\n\n\n\n const backgroundRect = (\n <g><rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} /></g>\n )\n\n if (createSVG) {\n return (\n <svg\n overflow=\"hidden\"\n width={width}\n height={svgHeight}\n viewBox={`0 0 ${width} ${svgHeight}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\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}","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, 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 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 }) {\n const [expanded, setExpanded] = useState(true)\n const [selectedIndex, setSelectedIndex] = useState(0)\n\n const onOptionClick = useCallback((option, index) => {\n setSelectedIndex(index)\n if (onSelect) onSelect(option, index)\n }, [onSelect])\n\n const iconForSelectedOption = useMemo(() => {\n const selectedOption = options[selectedIndex]\n return selectedOption.icon\n }, [options, 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 {options.map((option, index) => (\n <button key={option.title} className={styles.option} onClick={() => onOptionClick(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 {index === selectedIndex && (\n <div className={styles.checkmark}>\n <Checkmark />\n </div>\n )}\n </button>\n ))}\n </div>\n </div>\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 } 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}) {\n const wrapperRef = useRef(null)\n const thresholdTextRef = useRef(null)\n const [width, setWidth] = useState(0)\n const biggestListTotal = Math.max(\n ...coalitions.map((l) => l[listMembersAccessor].reduce((acc, cur) => acc + cur[listMemberTotalAccessor], 0)),\n )\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 }}>{list.description}</p>\n <StackedBar 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","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","StackedBar","stack","hideLabels","labelType","showBackgroundRect","createSVG","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","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","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","CSSTransition","in","duration","classNames","transitionContainer","pointerEvents","modalBox","Dropdown","hint","options","expanded","setExpanded","onOptionClick","option","iconForSelectedOption","selectedOption","popout","visibility","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]}
|