{"version":3,"file":"6103-1c70e834644bb34fc3c8.js","mappings":"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","sources":["webpack://james-fisher/./src/helpers/animate.ts","webpack://james-fisher/./src/helpers/api.ts","webpack://james-fisher/./src/helpers/brand.ts","webpack://james-fisher/./src/helpers/cssVar.ts","webpack://james-fisher/./src/helpers/fluid.ts","webpack://james-fisher/./src/helpers/fonts.ts","webpack://james-fisher/./src/helpers/grid.ts","webpack://james-fisher/./src/helpers/image.ts","webpack://james-fisher/./src/helpers/media.ts","webpack://james-fisher/./src/helpers/typography.ts","webpack://james-fisher/./src/hooks/useApi.ts","webpack://james-fisher/./src/stories/Components/SimpleImage/SimpleImage.styles.ts","webpack://james-fisher/./src/stories/Components/SimpleImage/SimpleImage.tsx"],"sourcesContent":["import { css } from 'styled-components';\r\nexport const preView10 = '0px 0px 10% 0px';\r\nexport const inViewMargin = '0px 0px -35% 0px';\r\nexport const inView30 = '0px 0px -30% 0px';\r\nexport const inView20 = '0px 0px -20% 0px';\r\nexport const inView50 = '0px 0px -50% 0px';\r\nexport const inView75 = '0px 0px -75% 0px';\r\nexport const inView100 = '0px 0px -100% 0px';\r\nexport const cubicEaseOut = `cubic-bezier(0.33, 1, 0.68, 1)`;\r\nexport function fadeUp(params) {\r\n return css `\r\n opacity: 0;\r\n transform: translateY(20px);\r\n transition: opacity, transform;\r\n transition-delay: ${params.delay}s;\r\n transition-duration: ${params.duration}s;\r\n transition-timing-function: ${cubicEaseOut};\r\n\r\n [data-animate='true'] & {\r\n opacity: 1;\r\n transform: translateY(0px);\r\n }\r\n `;\r\n}\r\nexport function inViewFade(params) {\r\n return css `\r\n transition: opacity;\r\n transition-delay: ${params.delay}s;\r\n transition-duration: ${params.duration}s;\r\n transition-timing-function: ${cubicEaseOut};\r\n\r\n [data-inview='false'] & {\r\n opacity: 0;\r\n }\r\n\r\n [data-inview='true'] & {\r\n opacity: 1;\r\n }\r\n `;\r\n}\r\nexport function inViewFadeUp(params) {\r\n return css `\r\n transition: opacity, transform;\r\n transition-delay: ${params.delay}s;\r\n transition-duration: ${params.duration}s;\r\n transition-timing-function: ${cubicEaseOut};\r\n\r\n [data-inview='false'] & {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n\r\n [data-inview='true'] & {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n `;\r\n}\r\nexport const shouldAnimate = (innerCss) => {\r\n return css `\r\n @media (prefers-reduced-motion: no-preference) {\r\n ${innerCss}\r\n }\r\n `;\r\n};\r\nexport const transition = (properties, duration = 0.35, timing = cubicEaseOut) => {\r\n return shouldAnimate(css `\r\n transition: ${properties};\r\n transition-duration: ${typeof duration === 'string' ? duration : `${duration}s`};\r\n transition-timing-function: ${timing};\r\n will-change: ${properties};\r\n `);\r\n};\r\nexport function inViewChangeColour(params, initialColor, endColor) {\r\n return css `\r\n transition: color;\r\n transition-delay: ${params.delay}s;\r\n transition-duration: ${params.duration}s;\r\n transition-timing-function: ${cubicEaseOut};\r\n\r\n [data-inview='false'] & {\r\n color: ${initialColor};\r\n }\r\n\r\n [data-inview='true'] & {\r\n color: ${endColor};\r\n }\r\n `;\r\n}\r\n","export const GET_ARTICLES_ENDPOINT = '/umbraco/api/articleapi/getarticles';\r\nexport const GET_CASE_STUDIES_ENDPOINT = '/umbraco/api/casestudyapi/getcasestudies';\r\nexport const GET_PRODUCTS_ENDPOINT = '/umbraco/api/productsapi/getproducts';\r\nexport const GET_COMPANIES_ENDPOINT = '/umbraco/api/groupcompanyapi/getgroupcompanies';\r\nexport const GET_GEOCODE_ENDPOINT = '/umbraco/api/geocode/getlocation';\r\nexport const GET_LOCATIONS_ENDPOINT = '/umbraco/api/locations/getlocations';\r\nexport const GET_NEWSLETTER_ARTICLES_ENDPOINT = '/umbraco/api/newsletterarticleapi/getnewsletterarticles';\r\nexport const GET_SEARCH_ENDPOINT = '/umbraco/api/search/search';\r\nexport const GET_SUGGESTIONS_ENDPOINT = '/umbraco/api/search/typeahead';\r\n","export default {\r\n black: '#04040F',\r\n blue: {\r\n base: '#0065A4',\r\n },\r\n grey: {\r\n grey1: '#E7E8E9',\r\n grey2: '#707070',\r\n grey3: '#8A8A8A',\r\n grey4: '#4D4D4D',\r\n grey5: '#4D555A',\r\n grey6: '#1C1D1E',\r\n grey7: '#575756',\r\n grey8: '#EBECEC',\r\n cta: '#252829',\r\n // Undocumented grey used in the designs.\r\n otherGrey: '#B1B3B5',\r\n borderGrey: '#C8CACD',\r\n },\r\n sectors: {\r\n oilGasGrey: '#708A97',\r\n marineBlue: '#55BCCA',\r\n defencePurple: '#8B5EA0',\r\n energyGreen: '#4BA559',\r\n nuclearOrange: '#E3772E',\r\n transportRed: '#D34E55',\r\n },\r\n sectorsAlt: {\r\n oilGasGreen: '#00AE4D',\r\n marineBlue: '#16BECF',\r\n nuclearPurple: '#A978B4',\r\n defenceGrey: '#6B8D9B',\r\n renewableYellow: '#FFDD00',\r\n portsTerminalsOrange: '#F37032',\r\n transportRed: '#E44151',\r\n constructionCream: '#EDDF98',\r\n },\r\n validation: {\r\n invalid: '#DA291C',\r\n valid: '#008C15',\r\n },\r\n white: '#FFFFFF',\r\n yellow: {\r\n base: '#FFDD00',\r\n },\r\n};\r\n","const variables = ['gutterWidth', 'sectionMargin', 'sitePadding', 'siteWidth'];\r\nfunction cssVar(name) {\r\n return `var(--${name})`;\r\n}\r\nfunction setCssVar(name, value) {\r\n return `--${name}: ${value}`;\r\n}\r\nexport { cssVar, setCssVar };\r\n","import { Device } from './media';\r\n/**\r\n * Base pixel value for the \"rem\" unit.\r\n */\r\nexport const PIXELS_PER_REM = 16;\r\n/**\r\n * Default pixel value for the min width.\r\n */\r\nexport const DEFAULT_MIN_VALUE = Device.TabletSmall;\r\n/**\r\n * Default pixel value for the max width.\r\n */\r\nexport const DEFAULT_MAX_VALUE = Device.DesktopLarge;\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluid(min, max, minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE) {\r\n const minRem = min / PIXELS_PER_REM;\r\n const maxRem = max / PIXELS_PER_REM;\r\n const minWidthRem = minWidth / PIXELS_PER_REM;\r\n const maxWidthRem = maxWidth / PIXELS_PER_REM;\r\n const slope = (maxRem - minRem) / (maxWidthRem - minWidthRem);\r\n const yAxisIntersection = -minWidthRem * slope + minRem;\r\n const clampMin = `${round(minRem)}rem`;\r\n const clampVal = `${round(yAxisIntersection)}rem + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(maxRem)}rem`;\r\n return `clamp(${clampMin}, ${clampVal}, ${clampMax})`;\r\n}\r\n/**\r\n * Round to nearest hundredth.\r\n */\r\nfunction round(num) {\r\n return Math.round(num * 100) / 100;\r\n}\r\n","import { css } from 'styled-components';\r\nexport default {\r\n helvetica: {\r\n light: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-style: normal;\r\n font-weight: 300;\r\n `,\r\n lightItalic: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-weight: 300;\r\n font-style: italic;\r\n `,\r\n regular: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n regularItalic: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-weight: 400;\r\n font-style: italic;\r\n `,\r\n medium: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n `,\r\n mediumItalic: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-weight: 500;\r\n font-style: italic;\r\n `,\r\n bold: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n boldItalic: css `\r\n font-family: 'Helvetica', sans-serif;\r\n font-weight: 700;\r\n font-style: italic;\r\n `,\r\n },\r\n};\r\n","import { css } from 'styled-components';\r\nimport { cssVar, setCssVar } from './cssVar';\r\nimport { Device, from } from './media';\r\nexport const SitePadding = 18;\r\nexport const SiteWidth = 1604;\r\nexport const SiteWidthBreakpoint = SiteWidth + SitePadding * 2;\r\nexport const siteWide = css `\r\n ${setCssVar('sitePadding', `${SitePadding}px`)};\r\n ${setCssVar('siteWidth', `${SiteWidth}px`)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 auto;\r\n max-width: min(\r\n calc(${cssVar('siteWidth')} + ${cssVar('sitePadding')} + ${cssVar('sitePadding')}),\r\n 100vw\r\n );\r\n padding: 0 ${cssVar('sitePadding')};\r\n width: 100%;\r\n`;\r\nexport const baseGrid = css `\r\n ${setCssVar('gutterWidth', '10px')};\r\n\r\n display: grid;\r\n column-gap: ${cssVar('gutterWidth')};\r\n grid-template-columns: repeat(12, 1fr);\r\n\r\n @media ${from(Device.Tablet)} {\r\n ${setCssVar('gutterWidth', '32px')};\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n ${setCssVar('gutterWidth', '64px')};\r\n }\r\n`;\r\n","import queryString from 'query-string';\r\nimport { css } from 'styled-components';\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image || !image.src) {\r\n return '';\r\n }\r\n /**\r\n * Remove any query param string to ensure paramsString is applied correctly and\r\n * there are no double definitions (setting a param twice prevents any tranformations)\r\n */\r\n const imageSource = image.src.split('?')[0];\r\n const params = {\r\n rxy: image.focalPoint ? `${image.focalPoint.left},${image.focalPoint.top}` : undefined,\r\n // Define default quality as 95 to ensure some reduction in size for all but the smallest images\r\n quality: imageParams.width && imageParams.width > 400 ? 95 : undefined,\r\n ...imageParams,\r\n };\r\n const paramsString = queryString.stringify(params);\r\n return `${imageSource}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function srcSet(image, imageParams) {\r\n if (!image || !image.src) {\r\n return '';\r\n }\r\n const pixelDensities = [1, 1.5, 2, 2.5, 3];\r\n return pixelDensities\r\n .map((pd) => `${imageUrl(image, {\r\n ...imageParams,\r\n ...(imageParams.width ? { width: imageParams.width * pd } : {}),\r\n ...(imageParams.height ? { height: imageParams.height * pd } : {}),\r\n })} ${pd}x`)\r\n .join(',');\r\n}\r\n/**\r\n * Re-usable styles for image container where the\r\n * image needs to maintain it's aspect ratio\r\n *\r\n * @param width\r\n * @param height\r\n * @returns\r\n */\r\nexport function imageWrapperPreserveRatio(width, height) {\r\n if (!width && !height) {\r\n return null;\r\n }\r\n return css `\r\n position: relative;\r\n height: 0;\r\n overflow: hidden;\r\n overflow: clip;\r\n ${imageWrapperRatioPadding(width, height)};\r\n `;\r\n}\r\n/**\r\n * Calculates the percentage bottom padding\r\n * required to maintain a certain ratio.\r\n *\r\n * To be used in cases where the image ratio\r\n * changes based on viewport.\r\n *\r\n * @param width\r\n * @param height\r\n * @returns padding-bottom: {ratioPercentage}%\r\n */\r\nexport function imageWrapperRatioPadding(width, height) {\r\n if (!width && !height) {\r\n return '';\r\n }\r\n const ratioPercentage = ((height / width) * 100).toFixed(2);\r\n return `padding-bottom: ${ratioPercentage}%`;\r\n}\r\n/**\r\n * Re-usable styles for an image placed within\r\n * a container maintaining aspect ratio\r\n */\r\nexport const imageCoverContainer = (relative) => css `\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center;\r\n ${!relative && 'position: absolute; top: 0;left: 0;'}\r\n`;\r\n","export var Device;\r\n(function (Device) {\r\n Device[Device[\"MobileSmall\"] = 320] = \"MobileSmall\";\r\n Device[Device[\"Mobile\"] = 375] = \"Mobile\";\r\n Device[Device[\"MobileLarge\"] = 480] = \"MobileLarge\";\r\n Device[Device[\"TabletSmall\"] = 568] = \"TabletSmall\";\r\n Device[Device[\"Tablet\"] = 768] = \"Tablet\";\r\n Device[Device[\"TabletLarge\"] = 1024] = \"TabletLarge\";\r\n Device[Device[\"DesktopSmall\"] = 1280] = \"DesktopSmall\";\r\n Device[Device[\"Desktop\"] = 1366] = \"Desktop\";\r\n Device[Device[\"DesktopLarge\"] = 1600] = \"DesktopLarge\";\r\n Device[Device[\"SubActualDesktop\"] = 1800] = \"SubActualDesktop\";\r\n Device[Device[\"ActualDesktop\"] = 1920] = \"ActualDesktop\";\r\n Device[Device[\"DesktopXL\"] = 2560] = \"DesktopXL\";\r\n})(Device || (Device = {}));\r\nexport function from(size) {\r\n return `(min-width: ${size}px)`;\r\n}\r\nexport function until(size) {\r\n return `(max-width: ${size - 1}px)`;\r\n}\r\nexport function between(start, end) {\r\n return `${from(start)} and ${until(end)}`;\r\n}\r\n","import { mix } from 'polished';\r\nimport { css } from 'styled-components';\r\nimport { cubicEaseOut } from './animate';\r\nimport brand from './brand';\r\nimport fonts from './fonts';\r\nimport { Device, from } from './media';\r\nconst headingStyles = css `\r\n color: currentColor;\r\n ${fonts.helvetica.bold};\r\n margin: 0 0 1em;\r\n`;\r\nexport const h1 = css `\r\n ${headingStyles};\r\n font-size: 42px;\r\n line-height: 50px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 56px;\r\n line-height: 66px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 68px;\r\n line-height: 78px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 72px;\r\n line-height: 82px;\r\n }\r\n`;\r\nexport const h2 = css `\r\n ${headingStyles};\r\n font-size: 36px;\r\n line-height: 44px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 45px;\r\n line-height: 55px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 52px;\r\n line-height: 62px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 56px;\r\n line-height: 68px;\r\n }\r\n`;\r\nexport const h3 = css `\r\n ${headingStyles};\r\n font-size: 30px;\r\n line-height: 38px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 33px;\r\n line-height: 43px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 35px;\r\n line-height: 45px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 40px;\r\n line-height: 52px;\r\n }\r\n`;\r\nexport const h4 = css `\r\n ${headingStyles};\r\n font-size: 25px;\r\n line-height: 33px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 28px;\r\n line-height: 38px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 30px;\r\n line-height: 40px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 32px;\r\n line-height: 44px;\r\n }\r\n`;\r\nexport const h5 = css `\r\n ${headingStyles};\r\n font-size: 20px;\r\n line-height: 28px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 23px;\r\n line-height: 33px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 25px;\r\n line-height: 35px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 28px;\r\n line-height: 40px;\r\n }\r\n`;\r\nexport const h6 = css `\r\n ${headingStyles};\r\n ${fonts.helvetica.regular};\r\n font-size: 16px;\r\n line-height: 24px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 20px;\r\n line-height: 30px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 22px;\r\n line-height: 34px;\r\n }\r\n`;\r\nexport const h6Bold = css `\r\n ${headingStyles};\r\n font-size: 16px;\r\n line-height: 24px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 20px;\r\n line-height: 30px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 22px;\r\n line-height: 34px;\r\n }\r\n`;\r\nexport const subhead = css `\r\n ${headingStyles};\r\n ${fonts.helvetica.regular};\r\n font-size: 22px;\r\n line-height: 30px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 24px;\r\n line-height: 32px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 24px;\r\n line-height: 32px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 28px;\r\n line-height: 40px;\r\n }\r\n`;\r\nexport const headingUnderline = css `\r\n position: relative;\r\n padding-bottom: 16px;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n display: block;\r\n background: ${brand.yellow.base};\r\n height: 10px;\r\n width: 80px;\r\n transform: scaleX(0);\r\n transform-origin: 0 0;\r\n will-change: transform;\r\n transition: transform 0.75s cubic-bezier(0.33, 1, 0.68, 1);\r\n\r\n [data-inview='true'] & {\r\n transform: scaleX(1);\r\n }\r\n }\r\n`;\r\nconst paragraphStyles = css `\r\n color: currentColor;\r\n ${fonts.helvetica.regular};\r\n margin: 0 0 1em;\r\n`;\r\nexport const paragraphHero = css `\r\n ${paragraphStyles};\r\n font-size: 20px;\r\n line-height: 28px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 18px;\r\n line-height: 32px;\r\n }\r\n`;\r\nexport const paragraph = css `\r\n ${paragraphStyles};\r\n font-size: 18px;\r\n line-height: 26px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n`;\r\nexport const paragraphSmall = css `\r\n ${paragraphStyles};\r\n font-size: 16px;\r\n line-height: 26px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 16px;\r\n line-height: 26px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n line-height: 26px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 16px;\r\n line-height: 28px;\r\n }\r\n`;\r\nexport const micro = css `\r\n ${fonts.helvetica.bold};\r\n font-size: 14px;\r\n line-height: 22px;\r\n letter-spacing: -0.01em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 14px;\r\n line-height: 24px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 14px;\r\n line-height: 24px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 14px;\r\n line-height: 26px;\r\n }\r\n`;\r\nexport const contentSub = css `\r\n ${fonts.helvetica.regular};\r\n font-size: 14px;\r\n line-height: 26px;\r\n text-transform: uppercase;\r\n letter-spacing: 0.1em;\r\n`;\r\nexport const link = css `\r\n color: currentColor;\r\n background: linear-gradient(\r\n to right,\r\n var(--accentColor, ${brand.blue.base}),\r\n var(--accentColor, ${brand.blue.base})\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n padding: 0.25em 4px;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n transition: background-size 0.15s ${cubicEaseOut}, color 0.15s ${cubicEaseOut};\r\n box-decoration-break: clone;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n background-size: 100% 100%;\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport const tag = css `\r\n ${fonts.helvetica.regular};\r\n font-size: 12px;\r\n letter-spacing: 0.1em;\r\n line-height: 1em;\r\n text-transform: uppercase;\r\n`;\r\nexport const blockquote = css `\r\n ${paragraph};\r\n position: relative;\r\n padding: 8px 0 8px 20px;\r\n\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background-color: ${brand.grey.grey1};\r\n }\r\n`;\r\nexport const tagBold = css `\r\n ${tag};\r\n ${fonts.helvetica.bold};\r\n`;\r\nexport const table = css `\r\n background: ${brand.white};\r\n border-collapse: collapse;\r\n color: ${brand.black};\r\n margin-bottom: 1em;\r\n width: 100%;\r\n\r\n thead {\r\n tr {\r\n background: ${brand.blue.base};\r\n\r\n td,\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.helvetica.bold};\r\n font-size: 18px;\r\n letter-spacing: -0.01em;\r\n line-height: 22px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n }\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n &:nth-child(odd) {\r\n background: ${mix(0.48, brand.grey.grey1, brand.white)};\r\n }\r\n\r\n &:nth-child(even) {\r\n background: ${mix(0.48, brand.grey.otherGrey, brand.white)};\r\n }\r\n\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.helvetica.bold};\r\n font-size: 18px;\r\n letter-spacing: -0.01em;\r\n line-height: 22px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n }\r\n\r\n td {\r\n border: 2px solid ${brand.white};\r\n ${fonts.helvetica.regular};\r\n font-size: 16px;\r\n letter-spacing: -0.01em;\r\n line-height: 20px;\r\n padding: 12px 16px;\r\n text-align: left;\r\n }\r\n }\r\n }\r\n`;\r\nexport const contentStyles = css `\r\n h1,\r\n .h1-styles {\r\n ${h1}\r\n }\r\n\r\n h2,\r\n .h2-styles {\r\n ${h2}\r\n }\r\n\r\n h3,\r\n .h3-styles {\r\n ${h3}\r\n }\r\n\r\n h4,\r\n .h4-styles {\r\n ${h4}\r\n }\r\n\r\n h5,\r\n .h5-styles {\r\n ${h5}\r\n }\r\n\r\n h6,\r\n .h6-styles {\r\n ${h6}\r\n }\r\n\r\n .h6-bold-styles {\r\n ${h6Bold}\r\n }\r\n\r\n p {\r\n ${paragraph}\r\n }\r\n\r\n p.subhead,\r\n span.subhead {\r\n ${subhead}\r\n }\r\n\r\n p.hero,\r\n span.hero {\r\n ${paragraphHero}\r\n }\r\n\r\n p.small,\r\n span.small {\r\n ${paragraphSmall}\r\n }\r\n\r\n p.micro,\r\n span.micro {\r\n ${micro}\r\n }\r\n\r\n p.content-sub {\r\n ${contentSub}\r\n }\r\n\r\n a {\r\n ${link}\r\n }\r\n\r\n ol,\r\n ul {\r\n ${paragraphStyles};\r\n font-size: 18px;\r\n line-height: 26px;\r\n letter-spacing: -0.01em;\r\n margin: 0 0 0.5em;\r\n\r\n @media ${from(Device.TabletSmall)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 18px;\r\n line-height: 28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n font-size: 18px;\r\n line-height: 36px;\r\n }\r\n }\r\n\r\n ol {\r\n list-style: decimal;\r\n padding-left: 1.2em;\r\n }\r\n\r\n ul {\r\n list-style: disc;\r\n padding-left: 1.2em;\r\n }\r\n\r\n li span {\r\n display: inline;\r\n }\r\n\r\n blockquote {\r\n ${blockquote};\r\n }\r\n\r\n hr {\r\n display: block;\r\n background: currentColor;\r\n border: 0;\r\n height: 4px;\r\n margin: 40px 0;\r\n padding: 0;\r\n width: 100%;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin: 80px 0;\r\n }\r\n }\r\n\r\n table {\r\n ${table};\r\n }\r\n\r\n .responsive-table {\r\n position: relative;\r\n overflow-x: auto;\r\n }\r\n\r\n .brand-black {\r\n color: ${brand.black};\r\n }\r\n\r\n .brand-blue {\r\n color: ${brand.blue.base};\r\n }\r\n\r\n .brand-sectors-defence-purple {\r\n color: ${brand.sectors.defencePurple};\r\n }\r\n\r\n .brand-sectors-energy-green {\r\n color: ${brand.sectors.energyGreen};\r\n }\r\n\r\n .brand-sectors-marine-blue {\r\n color: ${brand.sectors.marineBlue};\r\n }\r\n\r\n .brand-sectors-nuclear-orange {\r\n color: ${brand.sectors.nuclearOrange};\r\n }\r\n\r\n .brand-sectors-oil-gas-grey {\r\n color: ${brand.sectors.oilGasGrey};\r\n }\r\n\r\n .brand-sectors-transport-red {\r\n color: ${brand.sectors.transportRed};\r\n }\r\n\r\n .brand-white {\r\n color: ${brand.white};\r\n }\r\n\r\n .brand-yellow {\r\n color: ${brand.yellow.base};\r\n }\r\n\r\n > *:first-child {\r\n margin-top: 0;\r\n }\r\n\r\n > *:last-child {\r\n margin-bottom: 0;\r\n }\r\n`;\r\n","import * as React from 'react';\r\nimport { useFirstMountState } from 'react-use';\r\nexport function useApi(params) {\r\n const refAbortController = React.useRef();\r\n const isFirstMount = useFirstMountState();\r\n const [data, setData] = React.useState(params.initialData);\r\n const [status, setStatus] = React.useState('initial');\r\n const clear = () => {\r\n setData(undefined);\r\n };\r\n React.useEffect(() => {\r\n // Ignore first mount if initial data is supplied.\r\n if (isFirstMount && params.initialData) {\r\n return;\r\n }\r\n // Ignore if validate is supplied and returns false.\r\n if (params.validate && !params.validate()) {\r\n return;\r\n }\r\n // Setup abortable fetch.\r\n refAbortController.current = new AbortController();\r\n const signal = refAbortController.current.signal;\r\n // Trigger fetch with abort signal.\r\n doAsync(signal);\r\n return () => {\r\n // Abort pending request if re-fetching.\r\n refAbortController.current?.abort();\r\n };\r\n async function doAsync(signal) {\r\n setStatus('loading');\r\n const res = await fetch(params.url, {\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n method: 'get',\r\n signal,\r\n });\r\n const resData = await res.json();\r\n setData(resData);\r\n setStatus('complete');\r\n }\r\n }, [params.url]);\r\n return { clear, data, status };\r\n}\r\n","import styled from 'styled-components';\r\nconst Img = styled.img ``;\r\nconst SimpleImageStyles = {\r\n Img,\r\n};\r\nexport default SimpleImageStyles;\r\n","import * as React from 'react';\r\nimport S from './SimpleImage.styles';\r\nconst SimpleImage = React.forwardRef(({ alt = '', loading = 'lazy', ...otherProps }, ref) => {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(S.Img, { ...otherProps, ref: ref, alt: alt, loading: loading, role: alt === '' ? 'presentation' : undefined })));\r\n});\r\nSimpleImage.displayName = 'SimpleImage';\r\nexport default SimpleImage;\r\n"],"names":["preView10","inViewMargin","inView30","inView20","inView50","cubicEaseOut","inViewFade","params","css","delay","duration","inViewFadeUp","shouldAnimate","innerCss","transition","properties","timing","inViewChangeColour","initialColor","endColor","GET_COMPANIES_ENDPOINT","GET_GEOCODE_ENDPOINT","GET_LOCATIONS_ENDPOINT","GET_NEWSLETTER_ARTICLES_ENDPOINT","GET_SEARCH_ENDPOINT","GET_SUGGESTIONS_ENDPOINT","black","blue","base","grey","grey1","grey2","grey3","grey4","grey5","grey6","grey7","grey8","cta","otherGrey","borderGrey","sectors","oilGasGrey","marineBlue","defencePurple","energyGreen","nuclearOrange","transportRed","sectorsAlt","oilGasGreen","nuclearPurple","defenceGrey","renewableYellow","portsTerminalsOrange","constructionCream","validation","invalid","valid","white","yellow","cssVar","name","setCssVar","value","PIXELS_PER_REM","DEFAULT_MIN_VALUE","Device","DEFAULT_MAX_VALUE","fluid","min","max","minWidth","maxWidth","minRem","maxRem","minWidthRem","maxWidthRem","slope","yAxisIntersection","clampMin","round","clampVal","clampMax","num","Math","helvetica","light","lightItalic","regular","regularItalic","medium","mediumItalic","bold","boldItalic","SitePadding","SiteWidth","SiteWidthBreakpoint","siteWide","baseGrid","from","imageUrl","image","imageParams","src","imageSource","split","rxy","focalPoint","left","top","undefined","quality","width","queryString","srcSet","map","pd","height","join","imageWrapperPreserveRatio","imageWrapperRatioPadding","toFixed","imageCoverContainer","relative","size","until","headingStyles","fonts","h1","h2","h3","h4","h5","h6","h6Bold","subhead","headingUnderline","brand","paragraphStyles","paragraphHero","paragraph","paragraphSmall","micro","contentSub","link","tag","blockquote","tagBold","table","mix","contentStyles","useApi","refAbortController","React","isFirstMount","useFirstMountState","data","setData","initialData","status","setStatus","validate","current","AbortController","async","signal","res","fetch","url","cache","credentials","headers","Accept","method","resData","json","doAsync","abort","clear","Img","styled","SimpleImage","ref","alt","loading","otherProps","S","role","displayName"],"sourceRoot":""}