@guardian/interactive-component-library 0.1.0-alpha.11 → 0.1.0-alpha.13

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/colors/index.js","../src/lib/components/particles/stacked-bar/index.jsx","../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/molecules/table/useTable.jsx","../src/lib/components/molecules/table/index.jsx","../src/lib/components/molecules/slope-chart/slope-chart-util.js","../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/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/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 (!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 const classNames = []\n if (firstStyle && key in firstStyle) {\n classNames.push(firstStyle[key])\n }\n\n if (secondStyle && key in secondStyle) {\n classNames.push(secondStyle[key])\n }\n\n result[key] = classNames.join(' ')\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\nexport function Chevron({ active = false, direction = DIRECTION.down, 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 (\n <svg width=\"16\" height=\"24\" viewBox=\"0 0 16 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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","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","// Source: https://gist.github.com/krabs-github/ec56e4f1c12cddf86ae9c551aa9d9e04\nexport function isDarkColor(color) {\n let r, g, b\n // Check the format of the color, HEX or RGB?\n if (color.match(/^rgb/)) {\n // If HEX --> store the red, green, blue values in separate variables\n color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n\n r = color[1]\n g = color[2]\n b = color[3]\n } else {\n // If RGB --> Convert it to HEX: http://gist.github.com/983661\n color = +`0x${color.slice(1).replace(color.length < 5 && /./g, '$&$&')}`\n\n r = color >> 16\n g = (color >> 8) & 255\n b = color & 255\n }\n\n // HSP equation from http://alienryderflex.com/hsp.html\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n\n // Using the HSP value, determine whether the color is light or dark\n if (hsp > 140) {\n return false\n }\n return true\n}\n\nexport function isLightColor(color) {\n return !isDarkColor(color)\n}\n","import { useRef, useLayoutEffect, useState } from 'preact/hooks'\nimport { isDarkColor } from '$shared/colors'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function StackedBar({ stack, width, height, showBackgroundRect = false, createSVG = true, styles }) {\n const rectElements = useRef([])\n const textElements = useRef([])\n const [hideLabels, setHideLabels] = useState(true)\n\n useLayoutEffect(() => {\n for (let index = 0; index < stack.length; index++) {\n const rectElement = rectElements.current[index]\n const textElement = textElements.current[index]\n\n const paddingX = 8\n const hideText = textElement.getBBox().width + paddingX > rectElement.getBBox().width\n\n const rectStyle = window.getComputedStyle(rectElement)\n const rectColor = rectStyle.getPropertyValue('fill')\n const textColor = isDarkColor(rectColor) ? '#FFF' : '#121212'\n textElement.style.fill = textColor\n\n\n if (hideText) {\n // if any are too big, hide all and break\n setHideLabels(true)\n return\n }\n }\n\n // if all fit, show all after loop ends\n setHideLabels(false)\n }, [stack, width, height])\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let totalWidth = 0\n const content = stack.map((d, index) => {\n const itemWidth = d.fraction * width\n\n const value = (\n <g key={index} transform={`translate(${totalWidth}, 0)`}>\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 <text\n ref={(element) => (textElements.current[index] = element)}\n x={itemWidth - 4}\n y={height / 2}\n text-anchor=\"end\"\n alignment-baseline=\"central\"\n text-rendering=\"optimizeLegibility\"\n className={styles.label}\n style={{ visibility: hideLabels ? 'hidden' : 'visible' }} //using visibility rather than display makes sure the text width is always calculated correctly\n >\n {d.label}\n </text>\n </g>\n )\n\n totalWidth += itemWidth\n return value\n })\n\n const backgroundRect = <g><rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} /></g>\n \n if (createSVG) {\n return (\n <svg\n overflow=\"hidden\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {showBackgroundRect && backgroundRect}\n {content}\n </svg>\n )\n }\n\n return <>{content}</>\n}\n","import defaultStyles from \"./style.module.css\"\nimport { mergeStyles } from \"$styles/helpers/mergeStyles\"\nimport { useId } from 'preact/hooks'\n\nexport const GradientIcon = ({\n previous,\n next,\n styles\n}) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n const gradientId = useId()\n\n return (\n <svg\n class={styles.svg}\n width=\"24\"\n height=\"11\"\n viewBox=\"0 0 24 11\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\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 <defs>\n <linearGradient id={gradientId} 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 </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 = ({ abbreviation, styles}) => {\n\n styles = mergeStyles({...defaultStyles}, styles)\n\n return (\n <svg\n style={styles.circleicon}\n fill=\"none\" \n height=\"11\" \n viewBox=\"0 0 11 11\" \n width=\"11\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <rect class={`${styles.rect} fill-color--${abbreviation}`} height=\"11\" rx=\"5.5\" width=\"11\" />\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 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}></div>\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\n\nconst getItemRotate = (fromBottom, fromLeft) => {\n if(fromBottom && fromLeft) {\n return 'stackedGridRotateItems270'\n } \n else if(fromBottom && !fromLeft) {\n return 'stackedGridRotateItems180'\n }\n else if(!fromBottom && !fromLeft) {\n return 'stackedGridRotateItems90' \n }\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\n\nexport const StackedGrid = ({ fromLeft, fromBottom, containerWidth, children, styles }) => {\n\n\n // CSS attributes driven by args\n let containerFlip = getContainerFlip(fromBottom, fromLeft);\n let itemRotateClass = getItemRotate(fromBottom, fromLeft);\n\n\n let flexStyles = {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n width: containerWidth, \n transform: containerFlip,\n }\n\n styles = mergeStyles(defaultStyles, styles)\n\n\n return (\n <div style={flexStyles} 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 { 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}>\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","export function preventOverlap(labelPositions, iteration = 0, labelHeight = 12) {\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.y - (element.y - labelHeight)\n if (overlap < 0) {\n // no overlap, continue\n continue\n }\n\n previousElement.y -= overlap / 2\n element.y += overlap / 2\n\n totalOverlap += overlap\n }\n\n if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1)\n }\n\n return labelPositions\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\nexport function positionLabels(labels) {\n labels = uniqueBy(labels, 'value')\n // sort by y-position\n labels.sort((a, b) => a.y - b.y)\n\n return preventOverlap(labels)\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 { 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 './slope-chart-util'\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 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({ positionInTarget, tooltip, displayElement }) {\n const displayElementRect = displayElement.getBoundingClientRect()\n\n const newPosition = {\n x: positionInTarget.x + displayElementRect.x,\n y: positionInTarget.y + displayElementRect.y,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\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","\nimport { 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 { \n hasChanged \n ?\n <GradientIcon\n previous={previous}\n next={next}\n styles={{\n previous: styles.previous,\n next: styles.next,\n }}\n />\n :\n <CircleIcon abbreviation={next} styles={{ rect: styles.next }} />\n }\n <strong className={styles.text}>{text}</strong>\n </>\n </div>)\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 mainNumber,\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 (\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}>{mainNumber}</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(({ children, styles, borderTop = false }, ref) => {\n styles = mergeStyles({...defaultStyles}, styles)\n\n return (\n <section ref={ref} className={[styles.section, borderTop && styles.borderTop].join(' ')}>\n <div className={styles.header}>{children.header}</div>\n <div className={styles.content}>{children.content}</div>\n </section>\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\n styles = mergeStyles(defaultStyles, styles)\n const yScale = scaleLinear([maxValue,minValue], [0, chartHeight])\n\n return (\n <svg width={chartWidth} height={chartHeight} style=\"\">\n {columns.map((column, index) => {\n\n const getHeight = (input) => {\n return yScale(0) - yScale(input)\n } \n let totalColumnWidth = Number(columnWidth) + Number(columnPadding.left) + Number(columnPadding.right)\n\n return (\n <g key={index}>\n <rect\n key={index}\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 className={styles.text} x={index * totalColumnWidth + 2} y={\n column.value < 0 ? yScale(0) - 6 : yScale(0) + 20\n }>{column.label}</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","\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const PartyProfile = ({ styles, title, subtitle, blurb, imgSrc, abbreviation }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return(\n <div class={styles.container}>\n <>\n <div className={styles.leftCell}>\n <h3 className={`${styles.title}`}>{title}</h3>\n <div className={styles.subtitle}>{subtitle}</div>\n <div className={styles.blurb}>{blurb}</div>\n </div>\n <div className={styles.rightCell}>\n <img src={imgSrc} className={`${styles.mugshot} bg-color--${abbreviation}`}></img>\n </div>\n </>\n </div>)\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","import { useMemo } from 'preact/hooks'\nimport { geoPath } from 'd3-geo'\nimport { bboxFeature } from '../helpers/bboxFeature'\nimport { MapContext } from './MapContext'\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 context = {\n id,\n mapRef,\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 }\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, mapRef, config, size, selectedFeature, padding } = useContext(MapContext)\n\n return (\n <svg\n id={id}\n ref={mapRef}\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 } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Polygon({ id, features, fill = null, stroke = null, strokeWidth = 1, styles }) {\n const context = useContext(MapContext)\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 } 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, styles }) {\n const context = useContext(MapContext)\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, geoContains, 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 } 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 useImperativeHandle(\n ref,\n () => ({\n isReady,\n getContainer: () => containerRef.current,\n findFeatureAtPoint,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isReady],\n )\n\n function findFeatureAtPoint({ x, y }) {\n const adjustedPoint = [x - padding.left, y - padding.top]\n const coordinates = config.projection.invert(adjustedPoint)\n\n for (const child of toChildArray(children)) {\n if (Object.prototype.hasOwnProperty.call(child.props, 'features')) {\n const features = child.props.features\n for (const feature of features) {\n if (geoContains(feature, coordinates)) {\n return feature\n }\n }\n }\n }\n return null\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 mapRef = useRef()\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>{children}</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 { 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 } 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\nfunction totalSizeForElements(elements) {\n return Array.from(elements).reduce(\n (totalSize, element) => {\n totalSize.width += element.clientWidth\n totalSize.height += element.clientHeight\n return totalSize\n },\n { width: 0, height: 0 },\n )\n}\n\nexport function Ticker({ maxItems = 20, onStateChange, children }) {\n const [offset, setOffset] = useState(0)\n const windowSize = useWindowSize()\n\n const tickerRef = useRef()\n const tickerItemsRef = useRef()\n const [hideButtons, setHideButtons] = useState(false)\n const [nextButtonDisabled, setNextButtonDisabled] = useState(false)\n\n const [expanded, setExpanded] = useState(false)\n\n const childArray = toChildArray(children)\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n if (tickerItemsContainer) {\n const { width, height } = totalSizeForElements(tickerItemsContainer.children)\n const hideButtons =\n windowSize.width >= 480\n ? width <= tickerItemsContainer.clientWidth\n : height <= tickerItemsContainer.clientHeight\n setHideButtons(hideButtons)\n\n if (tickerItemsContainer.children.length > 0) {\n const itemWidth = tickerItemsContainer.children[0].clientWidth\n const nextButtonDisabled = offset * itemWidth > width - tickerItemsContainer.clientWidth\n setNextButtonDisabled(nextButtonDisabled)\n }\n }\n }, [offset, windowSize, childArray, setHideButtons, setNextButtonDisabled])\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 ref={tickerRef} className={styles.ticker} style={`--ticker-offset: ${offset}`} data-expanded={expanded}>\n <div ref={tickerItemsRef} className={styles.tickerItems}>\n {childArray.map((child, index) => (\n <div className={styles.tickerItem} key={index}>\n {child}\n </div>\n ))}\n </div>\n <div className={styles.controls} style={hideButtons && { display: 'none' }}>\n <div className={styles.gradient}>\n <Gradient />\n </div>\n <div className={styles.buttons}>\n <ArrowButton onClick={() => setOffset((d) => d + 1)} disabled={nextButtonDisabled} />\n <ArrowButton direction=\"left\" onClick={() => setOffset((d) => d - 1)} disabled={offset <= 0} />\n </div>\n <div className={styles.button}>\n <Button\n type=\"small\"\n styles={{ buttonInner: styles.buttonInner }}\n onClick={toggleExpandedState}\n >\n {expanded ? 'Show less' : `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","classNames","push","join","DIRECTION","up","down","Chevron","active","direction","styles","defaultStylesCopy","defaultStyles","path","group","rotated","_jsx","width","height","viewBox","fill","xmlns","children","className","style","d","DOT_TYPE","round","square","LegendItem","dotType","text","abbreviation","dot","circle","_jsxs","container","isDarkColor","color","r","g","b","match","slice","replace","length","hsp","Math","sqrt","StackedBar","stack","showBackgroundRect","createSVG","rectElements","useRef","textElements","hideLabels","setHideLabels","useState","useLayoutEffect","index","rectElement","current","textElement","paddingX","hideText","getBBox","rectStyle","window","getComputedStyle","rectColor","getPropertyValue","textColor","totalWidth","content","map","itemWidth","fraction","value","transform","ref","element","bar","x","y","label","visibility","backgroundRect","overflow","_Fragment","GradientIcon","previous","next","gradientId","useId","class","svg","id","x1","y1","x2","y2","gradientUnits","offset","InfoButton","onClick","button","CircleIcon","circleicon","rect","rx","this","n","s","u","c","t","e","i","p","_","a","M","m","f","l","$","v","D","o","h","dayjs","extend","relativeTime","RelativeTimeSentence","timeStamp","timeSince","fromNow","Container","sideBorders","pageContainer","sideBordersStyle","ChangeBar","positive","party","centre","parseFloat","barwidth","negleft","posleft","thisStyles","thisColor","wrapper","SquareCutCornerIcon","cornerColor","squareColor","squareSize","cornerSize","cornerMargin","dividingLineColor","points","corner","getItemRotate","fromBottom","fromLeft","getContainerFlip","scaleX","scaleY","StackedGrid","containerWidth","containerFlip","itemRotateClass","flexStyles","display","flexDirection","flexWrap","stackedGridContainer","SquareIcon","size","squareFill","ArrowButton","disabled","icon","cx","cy","Button","type","buttonInner","CloseButton","border","buttonBorder","sortAscending","accessor","valueA","valueB","sortDescending","useTable","columns","data","sortState","sortedData","useMemo","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","sort","table","sortByColumn","currentState","headerCell","HeaderCell","hideHeaderNoBorder","bodyRow","bodyCell","headerCellButton","preventOverlap","labelPositions","iteration","labelHeight","maxIterations","totalOverlap","previousElement","overlap","uniqueBy","array","set","Map","values","positionLabels","labels","scaleLinear","domain","range","domainMin","domainMax","rangeMin","rangeMax","slope","intercept","useWindowSize","windowSize","setWindowSize","innerWidth","innerHeight","useEffect","handleResize","addEventListener","removeEventListener","SlopeChart","lines","y1Label","y2Label","axis","padding","left","right","top","bottom","wrapperRef","setWidth","contentWidth","floor","contentHeight","yScale","show","newWidth","getBoundingClientRect","y1Labels","y2Labels","chart","axisLabel","startLabel","endLabel","line","itemStyles","slopeChartContainer","useTooltipTarget","targetElement","trackPosition","targetRect","setTargetRect","position","setPosition","hoverActive","setHoverActive","onMouseMove","clientX","clientY","currentTarget","requestAnimationFrame","onMouseOut","positionInTarget","N","R","P","E","Modal","visible","CSSTransition","in","duration","alwaysMounted","transitionContainer","modalBox","TooltipType","float","modal","Tooltip","for","renderIn","refOrSelector","tooltipPosition","setTooltipPosition","displayElement","setDisplayElement","tooltipRef","document","querySelector","newPosition","tooltipPositionForPoint","tooltip","tooltipPositionForRect","displayTooltip","fixedStyle","zIndex","createPortal","displayElementRect","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","ControlChange","hasChanged","ToplineResult","name","mainNumber","secondaryNumber","displayRow","onMouseOver","onInfoPress","showInfoButton","displayStyle","displayColumn","toplineResult","topRow","infoButton","displayNumbers","PageSection","forwardRef","borderTop","section","ColumnChart","maxValue","minValue","chartHeight","chartWidth","columnWidth","columnPadding","getHeight","input","totalColumnWidth","Number","abs","PartyProfile","title","subtitle","blurb","imgSrc","leftCell","rightCell","src","mugshot","epsilon","x0","y0","main","albers","bboxFeature","bounds","minLon","minLat","maxLon","maxLat","feature","properties","geometry","coordinates","MapContext","createContext","SVGMapProvider","mapRef","config","zoom","selectedFeature","contentSize","projection","fitSize","geoPath","context","extent","Provider","CompositionBorders","useContext","getCompositionBorders","SVGRenderer","drawCompositionBorders","useContainerSize","containerRef","containerSize","setContainerSize","clientWidth","clientHeight","dynamicPropValue","prop","Polygon","features","stroke","strokeWidth","Line","draw","ctx","beginPath","lineWidth","pixelRatio","strokeStyle","drawToCanvas","register","unregister","initialStrokeWidth","scaledStrokeWidth","zoomScale","Prerendered","url","href","Point","radius","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","findFeatureAtPoint","adjustedPoint","invert","child","toChildArray","props","geoContains","containerStyle","renderSVG","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","onSelectSuggestion","suggestion","blur","showClearButton","searchContainer","onInput","target","onBlur","onFocus","select","searchIcon","clearButton","emptyValue","focus","SuggestionList","highlightText","selected","onMouseDown","split","RegExp","part","highlighted","CoalitionsTracker","coalitions","threshold","barChartHeight","listMembersAccessor","listMemberTotalAccessor","listDescriptionAccessor","abbreviationAccessor","thresholdTextBold","thresholdText","thresholdTextRef","biggestListTotal","acc","cur","thresholdTextMinWidth","thresholdDotWidth","thresholdTextPaddingLeft","maxBarWidth","thresholdLeft","parsedLists","coalition","listTotal","description","renderCoalition","list","maxWidth","coalitionsWrapper","coalitionsContainer","thresholdDot","thresholdLine","minWidth","Gradient","preserveAspectRatio","gradient","firstStop","lastStop","totalSizeForElements","elements","totalSize","Ticker","maxItems","onStateChange","setOffset","tickerRef","tickerItemsRef","hideButtons","setHideButtons","nextButtonDisabled","setNextButtonDisabled","expanded","setExpanded","childArray","tickerItemsContainer","toggleExpandedState","newState","ticker","tickerItems","tickerItem","controls","buttons"],"mappings":"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","x_google_ignoreList":[8,9,25,26,34,35,36,37,38]}
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/colors/index.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/molecules/table/useTable.jsx","../src/lib/components/molecules/table/index.jsx","../src/lib/components/molecules/slope-chart/slope-chart-util.js","../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/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/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 (!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 const classNames = []\n if (firstStyle && key in firstStyle) {\n classNames.push(firstStyle[key])\n }\n\n if (secondStyle && key in secondStyle) {\n classNames.push(secondStyle[key])\n }\n\n result[key] = classNames.join(' ')\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\nexport function Chevron({ active = false, direction = DIRECTION.down, 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 (\n <svg width=\"16\" height=\"24\" viewBox=\"0 0 16 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\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","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","// Source: https://gist.github.com/krabs-github/ec56e4f1c12cddf86ae9c551aa9d9e04\nexport function isDarkColor(color) {\n let r, g, b\n // Check the format of the color, HEX or RGB?\n if (color.match(/^rgb/)) {\n // If HEX --> store the red, green, blue values in separate variables\n color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n\n r = color[1]\n g = color[2]\n b = color[3]\n } else {\n // If RGB --> Convert it to HEX: http://gist.github.com/983661\n color = +`0x${color.slice(1).replace(color.length < 5 && /./g, '$&$&')}`\n\n r = color >> 16\n g = (color >> 8) & 255\n b = color & 255\n }\n\n // HSP equation from http://alienryderflex.com/hsp.html\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n\n // Using the HSP value, determine whether the color is light or dark\n if (hsp > 140) {\n return false\n }\n return true\n}\n\nexport function isLightColor(color) {\n return !isDarkColor(color)\n}\n","import { useRef, useLayoutEffect, useState } from 'preact/hooks'\nimport { isDarkColor } from '$shared/colors'\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport function StackedBar({ stack, width, height, showBackgroundRect = false, createSVG = true, styles }) {\n const rectElements = useRef([])\n const textElements = useRef([])\n const [hideLabels, setHideLabels] = useState(true)\n\n useLayoutEffect(() => {\n for (let index = 0; index < stack.length; index++) {\n const rectElement = rectElements.current[index]\n const textElement = textElements.current[index]\n\n const paddingX = 8\n const hideText = textElement.getBBox().width + paddingX > rectElement.getBBox().width\n\n const rectStyle = window.getComputedStyle(rectElement)\n const rectColor = rectStyle.getPropertyValue('fill')\n const textColor = isDarkColor(rectColor) ? '#FFF' : '#121212'\n textElement.style.fill = textColor\n\n\n if (hideText) {\n // if any are too big, hide all and break\n setHideLabels(true)\n return\n }\n }\n\n // if all fit, show all after loop ends\n setHideLabels(false)\n }, [stack, width, height])\n\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n let totalWidth = 0\n const content = stack.map((d, index) => {\n const itemWidth = d.fraction * width\n\n const value = (\n <g key={index} transform={`translate(${totalWidth}, 0)`}>\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 <text\n ref={(element) => (textElements.current[index] = element)}\n x={itemWidth - 4}\n y={height / 2}\n text-anchor=\"end\"\n alignment-baseline=\"central\"\n text-rendering=\"optimizeLegibility\"\n className={styles.label}\n style={{ visibility: hideLabels ? 'hidden' : 'visible' }} //using visibility rather than display makes sure the text width is always calculated correctly\n >\n {d.label}\n </text>\n </g>\n )\n\n totalWidth += itemWidth\n return value\n })\n\n const backgroundRect = <g><rect x=\"0\" y=\"0\" height={height} width={width} className={styles.backgroundRect} /></g>\n \n if (createSVG) {\n return (\n <svg\n overflow=\"hidden\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {showBackgroundRect && backgroundRect}\n {content}\n </svg>\n )\n }\n\n return <>{content}</>\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 }, [])\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 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}></div>\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\n\nconst getItemRotate = (fromBottom, fromLeft) => {\n if(fromBottom && fromLeft) {\n return 'stackedGridRotateItems270'\n } \n else if(fromBottom && !fromLeft) {\n return 'stackedGridRotateItems180'\n }\n else if(!fromBottom && !fromLeft) {\n return 'stackedGridRotateItems90' \n }\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\n\nexport const StackedGrid = ({ fromLeft, fromBottom, containerWidth, children, styles }) => {\n\n\n // CSS attributes driven by args\n let containerFlip = getContainerFlip(fromBottom, fromLeft);\n let itemRotateClass = getItemRotate(fromBottom, fromLeft);\n\n\n let flexStyles = {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n width: containerWidth, \n transform: containerFlip,\n }\n\n styles = mergeStyles(defaultStyles, styles)\n\n\n return (\n <div style={flexStyles} 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 { 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}>\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","export function preventOverlap(labelPositions, iteration = 0, labelHeight = 12) {\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.y - (element.y - labelHeight)\n if (overlap < 0) {\n // no overlap, continue\n continue\n }\n\n previousElement.y -= overlap / 2\n element.y += overlap / 2\n\n totalOverlap += overlap\n }\n\n if (totalOverlap > 0 && iteration < maxIterations) {\n return preventOverlap(labelPositions, iteration + 1)\n }\n\n return labelPositions\n}\n\nexport function uniqueBy(array, key) {\n return [...array.reduce((map, d) => map.set(d[key], d), new Map()).values()]\n}\n\nexport function positionLabels(labels) {\n labels = uniqueBy(labels, 'value')\n // sort by y-position\n labels.sort((a, b) => a.y - b.y)\n\n return preventOverlap(labels)\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 { 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 './slope-chart-util'\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 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({ positionInTarget, tooltip, displayElement }) {\n const displayElementRect = displayElement.getBoundingClientRect()\n\n const newPosition = {\n x: positionInTarget.x + displayElementRect.x,\n y: positionInTarget.y + displayElementRect.y,\n }\n\n const tooltipWidth = tooltip.offsetWidth\n const tooltipHeight = tooltip.offsetHeight\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: styles.next || `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 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 (\n !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}>{mainNumber}</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}>{mainNumber}</div>\n <div class={styles.secondaryNumber}>{secondaryNumber}</div>\n </div>\n </div>\n </>\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\n return (\n <svg width={chartWidth} height={chartHeight}>\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","\nimport defaultStyles from './style.module.css'\nimport { mergeStyles } from '$styles/helpers/mergeStyles'\n\nexport const PartyProfile = ({ styles, title, subtitle, blurb, imgSrc, abbreviation }) => {\n styles = mergeStyles({ ...defaultStyles }, styles)\n\n return(\n <div class={styles.container}>\n <>\n <div className={styles.leftCell}>\n <h3 className={`${styles.title}`}>{title}</h3>\n <div className={styles.subtitle}>{subtitle}</div>\n <div className={styles.blurb}>{blurb}</div>\n </div>\n <div className={styles.rightCell}>\n <img src={imgSrc} className={`${styles.mugshot} bg-color--${abbreviation}`}></img>\n </div>\n </>\n </div>)\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","import { useMemo } from 'preact/hooks'\nimport { geoPath } from 'd3-geo'\nimport { bboxFeature } from '../helpers/bboxFeature'\nimport { MapContext } from './MapContext'\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 context = {\n id,\n mapRef,\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 }\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, mapRef, config, size, selectedFeature, padding } = useContext(MapContext)\n\n return (\n <svg\n id={id}\n ref={mapRef}\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 } from 'preact/hooks'\nimport { MapContext } from '../context/MapContext'\nimport { dynamicPropValue } from '../helpers/dynamicPropValue'\n\nexport function Polygon({ id, features, fill = null, stroke = null, strokeWidth = 1, styles }) {\n const context = useContext(MapContext)\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 } 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, styles }) {\n const context = useContext(MapContext)\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, geoContains, 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 } 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 useImperativeHandle(\n ref,\n () => ({\n isReady,\n getContainer: () => containerRef.current,\n findFeatureAtPoint,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isReady],\n )\n\n function findFeatureAtPoint({ x, y }) {\n const adjustedPoint = [x - padding.left, y - padding.top]\n const coordinates = config.projection.invert(adjustedPoint)\n\n for (const child of toChildArray(children)) {\n if (Object.prototype.hasOwnProperty.call(child.props, 'features')) {\n const features = child.props.features\n for (const feature of features) {\n if (geoContains(feature, coordinates)) {\n return feature\n }\n }\n }\n }\n return null\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 mapRef = useRef()\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>{children}</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.css'\n\nexport function RefreshIndicator({ text, styles }) {\n styles = mergeStyles(defaultStyles, styles)\n return (\n <div className={styles.refreshIndicator}>\n <CircleIcon pulse={true} />\n <span className={styles.liveText}>LIVE</span>\n <span className={styles.refreshText}>{text}</span>\n </div>\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 } 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\nfunction totalSizeForElements(elements) {\n return Array.from(elements).reduce(\n (totalSize, element) => {\n totalSize.width += element.clientWidth\n totalSize.height += element.clientHeight\n return totalSize\n },\n { width: 0, height: 0 },\n )\n}\n\nexport function Ticker({ maxItems = 20, onStateChange, children }) {\n const [offset, setOffset] = useState(0)\n const windowSize = useWindowSize()\n\n const tickerRef = useRef()\n const tickerItemsRef = useRef()\n const [hideButtons, setHideButtons] = useState(false)\n const [nextButtonDisabled, setNextButtonDisabled] = useState(false)\n\n const [expanded, setExpanded] = useState(false)\n\n const childArray = toChildArray(children)\n\n useLayoutEffect(() => {\n const tickerItemsContainer = tickerItemsRef.current\n if (tickerItemsContainer) {\n const { width, height } = totalSizeForElements(tickerItemsContainer.children)\n const hideButtons =\n windowSize.width >= 480\n ? width <= tickerItemsContainer.clientWidth\n : height <= tickerItemsContainer.clientHeight\n setHideButtons(hideButtons)\n\n if (tickerItemsContainer.children.length > 0) {\n const itemWidth = tickerItemsContainer.children[0].clientWidth\n const nextButtonDisabled = offset * itemWidth > width - tickerItemsContainer.clientWidth\n setNextButtonDisabled(nextButtonDisabled)\n }\n }\n }, [offset, windowSize, childArray, setHideButtons, setNextButtonDisabled])\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 ref={tickerRef} className={styles.ticker} style={`--ticker-offset: ${offset}`} data-expanded={expanded}>\n <div ref={tickerItemsRef} className={styles.tickerItems}>\n {childArray.map((child, index) => (\n <div className={styles.tickerItem} key={index}>\n {child}\n </div>\n ))}\n </div>\n <div className={styles.controls} style={hideButtons && { display: 'none' }}>\n <div className={styles.gradient}>\n <Gradient />\n </div>\n <div className={styles.buttons}>\n <ArrowButton onClick={() => setOffset((d) => d + 1)} disabled={nextButtonDisabled} />\n <ArrowButton direction=\"left\" onClick={() => setOffset((d) => d - 1)} disabled={offset <= 0} />\n </div>\n <div className={styles.button}>\n <Button\n type=\"small\"\n styles={{ buttonInner: styles.buttonInner }}\n onClick={toggleExpandedState}\n >\n {expanded ? 'Show less' : `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","classNames","push","join","DIRECTION","up","down","Chevron","active","direction","styles","defaultStylesCopy","defaultStyles","path","group","rotated","_jsx","width","height","viewBox","fill","xmlns","children","className","style","d","DOT_TYPE","round","square","LegendItem","dotType","text","abbreviation","dot","circle","_jsxs","container","isDarkColor","color","r","g","b","match","slice","replace","length","hsp","Math","sqrt","StackedBar","stack","showBackgroundRect","createSVG","rectElements","useRef","textElements","hideLabels","setHideLabels","useState","useLayoutEffect","index","rectElement","current","textElement","paddingX","hideText","getBBox","rectStyle","window","getComputedStyle","rectColor","getPropertyValue","textColor","totalWidth","content","map","itemWidth","fraction","value","transform","ref","element","bar","x","y","label","visibility","backgroundRect","overflow","_Fragment","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","values","class","svg","x1","y1","x2","y2","gradientUnits","offset","InfoButton","onClick","button","CircleIcon","pulse","rx","this","n","s","u","c","t","e","i","p","_","a","M","m","f","l","$","v","D","o","h","dayjs","extend","relativeTime","RelativeTimeSentence","timeStamp","timeSince","fromNow","Container","sideBorders","pageContainer","sideBordersStyle","ChangeBar","positive","party","centre","parseFloat","barwidth","negleft","posleft","thisStyles","thisColor","wrapper","SquareCutCornerIcon","cornerColor","squareColor","squareSize","cornerSize","cornerMargin","dividingLineColor","points","corner","getItemRotate","fromBottom","fromLeft","getContainerFlip","scaleX","scaleY","StackedGrid","containerWidth","containerFlip","itemRotateClass","flexStyles","display","flexDirection","flexWrap","stackedGridContainer","SquareIcon","size","squareFill","ArrowButton","disabled","icon","cx","cy","Button","type","buttonInner","CloseButton","border","buttonBorder","sortAscending","accessor","valueA","valueB","sortDescending","useTable","columns","data","sortState","sortedData","useMemo","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","sort","table","sortByColumn","currentState","headerCell","HeaderCell","hideHeaderNoBorder","bodyRow","bodyCell","headerCellButton","preventOverlap","labelPositions","iteration","labelHeight","maxIterations","totalOverlap","previousElement","overlap","uniqueBy","array","set","Map","positionLabels","labels","scaleLinear","domain","range","domainMin","domainMax","rangeMin","rangeMax","slope","intercept","useWindowSize","windowSize","setWindowSize","innerWidth","innerHeight","handleResize","addEventListener","removeEventListener","SlopeChart","lines","y1Label","y2Label","axis","padding","left","right","top","bottom","wrapperRef","setWidth","contentWidth","floor","contentHeight","yScale","show","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","alwaysMounted","transitionContainer","modalBox","TooltipType","float","modal","Tooltip","for","renderIn","refOrSelector","tooltipPosition","setTooltipPosition","displayElement","setDisplayElement","tooltipRef","querySelector","newPosition","tooltipPositionForPoint","tooltip","tooltipPositionForRect","displayTooltip","fixedStyle","zIndex","createPortal","displayElementRect","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","ControlChange","hasChanged","ToplineResult","name","secondaryName","mainNumber","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","getHeight","input","abs","PartyProfile","title","subtitle","blurb","imgSrc","leftCell","rightCell","src","mugshot","epsilon","x0","y0","main","albers","bboxFeature","bounds","minLon","minLat","maxLon","maxLat","feature","properties","geometry","coordinates","MapContext","createContext","SVGMapProvider","mapRef","config","zoom","selectedFeature","contentSize","projection","fitSize","geoPath","context","extent","Provider","CompositionBorders","useContext","getCompositionBorders","SVGRenderer","drawCompositionBorders","useContainerSize","containerRef","containerSize","setContainerSize","clientWidth","clientHeight","dynamicPropValue","prop","Polygon","features","stroke","strokeWidth","Line","draw","ctx","beginPath","lineWidth","pixelRatio","strokeStyle","drawToCanvas","register","unregister","initialStrokeWidth","scaledStrokeWidth","zoomScale","Prerendered","url","href","Point","radius","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","findFeatureAtPoint","adjustedPoint","invert","child","toChildArray","geoContains","containerStyle","renderSVG","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","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","CoalitionsTracker","coalitions","threshold","barChartHeight","listMembersAccessor","listMemberTotalAccessor","listDescriptionAccessor","abbreviationAccessor","thresholdTextBold","thresholdText","thresholdTextRef","biggestListTotal","acc","cur","thresholdTextMinWidth","thresholdDotWidth","thresholdTextPaddingLeft","maxBarWidth","thresholdLeft","parsedLists","coalition","listTotal","description","renderCoalition","list","maxWidth","coalitionsWrapper","coalitionsContainer","thresholdDot","thresholdLine","minWidth","Gradient","preserveAspectRatio","gradient","firstStop","lastStop","totalSizeForElements","elements","totalSize","Ticker","maxItems","onStateChange","setOffset","tickerRef","tickerItemsRef","hideButtons","setHideButtons","nextButtonDisabled","setNextButtonDisabled","expanded","setExpanded","childArray","tickerItemsContainer","toggleExpandedState","ticker","tickerItems","tickerItem","controls","buttons"],"mappings":"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","x_google_ignoreList":[11,12,28,29,37,38,39,40,41]}