{"version":3,"sources":["webpack:///./src/helpers/fonts.ts","webpack:///./src/helpers/media.ts","webpack:///./src/helpers/brand.ts","webpack:///./src/stories/Widgets/ArticleContent/ArticleContent.styles.ts","webpack:///./src/stories/Widgets/ArticleContent/ArticleContent.tsx","webpack:///./src/helpers/fluid.ts","webpack:///./src/helpers/animate.ts","webpack:///./src/helpers/typography.ts","webpack:///./src/helpers/image.ts"],"names":["altGothicNo2","regular","css","apercu","light","lightItalic","bold","Device","from","size","until","black","blackDark","grey","greyMidLight","greyMid","greyDark","pureBlack","white","yellow","green","availability","amber","red","validation","invalid","valid","ArticleContentStyles","Container","styled","section","fluid","Content","div","contentStylesSmall","ArticleContent","content","transformCloudinarySrcsInHtmlString","he","decode","width","heightratio","React","S","dangerouslySetInnerHTML","__html","DEFAULT_MIN_VALUE","TabletSmall","DEFAULT_MAX_VALUE","DesktopLarge","min","max","minWidth","maxWidth","minRem","maxRem","minWidthRem","maxWidthRem","slope","yAxisIntersection","clampMin","round","clampVal","clampMax","num","Math","rootMargin","cubicEaseOut","shouldAnimate","innerCss","transition","properties","duration","timing","titleFill","brand","headerLink","MobileLarge","headingStyles","fonts","h1","h2","h3","h4","h5","h6","paragraphStyles","paragraphLarge","paragraphMedium","paragraphSmall","paragraphMicro","meta","link","table","blockquote","contentStyles","cl","Cloudinary","cloud","cloudName","url","secure","imageUrl","image","imageParams","src","clImage","resizeAction","height","console","warn","crop","fill","limitFill","widthratio","aspectRatio","gravity","focusOn","face","autoGravity","getResizeAction","resize","delivery","formatAction","format","autoFormat","getFormatAction","quality","autoQuality","dpr","setVersion","process","CLOUDINARY_VERSION","toURL","getSrcs","upper","lower","steps","ratio","increment","Array","map","_","index","ceil","getRange","getRetinaSrcs","imgSrcRegex","cloudinaryPathRegex","HtmlString","images","replace","trim","matchAll","undefined","forEach","cloudinaryPath","match","indexOf","decodedPath","decodeURI","srcSet","join"],"mappings":"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","file":"ArticleContent-03403a6ef32fa1c6dea1.js","sourcesContent":["import { css } from 'styled-components';\r\nexport default {\r\n altGothicNo2: {\r\n regular: css `\r\n font-family: 'Alternate Gothic No2 D', sans-serif;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n },\r\n apercu: {\r\n light: css `\r\n font-family: 'Apercu', sans-serif;\r\n font-style: normal;\r\n font-weight: 300;\r\n `,\r\n lightItalic: css `\r\n font-family: 'Apercu', sans-serif;\r\n font-style: italic;\r\n font-weight: 300;\r\n `,\r\n bold: css `\r\n font-family: 'Apercu', sans-serif;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n },\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[\"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","export default {\r\n black: '#282828',\r\n blackDark: '#121212',\r\n grey: '#f4f4f4',\r\n greyMidLight: '#BABABA',\r\n greyMid: '#707070',\r\n greyDark: '#4a4a4a',\r\n pureBlack: '#000000',\r\n white: '#ffffff',\r\n yellow: '#ffdc00',\r\n green: '#80C342',\r\n availability: {\r\n green: '#68F087',\r\n amber: '#FFA969',\r\n red: '#F84848',\r\n },\r\n validation: {\r\n invalid: '#da291c',\r\n valid: '#008c15',\r\n },\r\n};\r\n","import { fluid } from '@helpers/fluid';\r\nimport { contentStylesSmall } from '@helpers/typography';\r\nimport styled from 'styled-components';\r\nconst Container = styled.section `\r\n margin: ${fluid(32, 40)} 0;\r\n`;\r\nconst Content = styled.div `\r\n ${contentStylesSmall}\r\n\r\n img {\r\n width: 100% !important;\r\n height: auto !important;\r\n }\r\n`;\r\nconst ArticleContentStyles = {\r\n Container,\r\n Content,\r\n};\r\nexport default ArticleContentStyles;\r\n","import * as React from 'react';\r\nimport S from './ArticleContent.styles';\r\nimport { transformCloudinarySrcsInHtmlString } from '@helpers/image';\r\nimport he from 'he';\r\nconst ArticleContent = ({ content }) => {\r\n content = transformCloudinarySrcsInHtmlString(he.decode(content), { width: 866, heightratio: 16 / 9 }, 800, 400, 3);\r\n return (React.createElement(S.Container, null,\r\n React.createElement(S.Content, { dangerouslySetInnerHTML: { __html: content } })));\r\n};\r\nexport default ArticleContent;\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\nimport brand from './brand';\r\nexport const rootMargin = '0px 0px -33% 0px';\r\nexport const cubicEaseOut = `cubic-bezier(0.33, 1, 0.68, 1)`;\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-duration: ${typeof duration === 'string' ? duration : `${duration}s`};\r\n transition-property: ${properties};\r\n transition-timing-function: ${timing};\r\n will-change: ${properties};\r\n `);\r\n};\r\nconst TITLE_FILL_SPEED = '0.1s';\r\nexport const titleFill = shouldAnimate(css `\r\n @supports (background-clip: text) or (-webkit-background-clip: text) {\r\n ${transition('opacity, background-size', `0.25s, var(--duration, calc(var(--length) * var(--speed, ${TITLE_FILL_SPEED})))`)}\r\n transition-delay: var(--delay, 0.15s), calc(var(--delay, 0.15s) * 2);\r\n\r\n display: inline;\r\n -webkit-background-clip: text;\r\n background-clip: text;\r\n background-color: var(--textColor, ${brand.white});\r\n background-image: linear-gradient(\r\n to right,\r\n var(--fillColor, ${brand.yellow}),\r\n var(--fillColor, ${brand.yellow})\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 0% 100%;\r\n color: transparent;\r\n opacity: 0;\r\n\r\n [data-animate='true'] & {\r\n background-size: 100% 100%;\r\n opacity: 1;\r\n }\r\n }\r\n`);\r\n","import { css } from 'styled-components';\r\nimport { transition } from './animate';\r\nimport brand from './brand';\r\nimport { fluid } from './fluid';\r\nimport fonts from './fonts';\r\nimport { Device, until } from './media';\r\nexport const headerLink = css `\r\n ${transition('color, text-decoration-color')};\r\n\r\n display: inline;\r\n color: currentColor;\r\n text-decoration: underline;\r\n text-decoration-color: ${brand.yellow};\r\n text-underline-offset: -0.19em;\r\n text-underline-position: under;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n word-break: break-word;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-width: thin;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n text-decoration-color: currentColor; \r\n }\r\n`;\r\nexport const headingStyles = css `\r\n color: currentColor;\r\n ${fonts.altGothicNo2.regular};\r\n margin: 0 0 ${fluid(16, 24)};\r\n text-transform: uppercase;\r\n a{\r\n ${headerLink}\r\n }\r\n\r\n`;\r\nexport const h1 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(45, 96)};\r\n line-height: ${fluid(45, 96)};\r\n`;\r\nexport const h2 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(30, 56)};\r\n line-height: ${fluid(30, 54)};\r\n`;\r\nexport const h3 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(24, 30)};\r\n line-height: ${fluid(24, 30)};\r\n`;\r\nexport const h4 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(18, 20)};\r\n line-height: ${fluid(18, 18)};\r\n`;\r\nexport const h5 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(18, 20)};\r\n line-height: ${fluid(18, 18)};\r\n`;\r\nexport const h6 = css `\r\n ${headingStyles};\r\n font-size: ${fluid(18, 18)};\r\n line-height: ${fluid(22, 22)};\r\n`;\r\nexport const paragraphStyles = css `\r\n color: currentColor;\r\n ${fonts.apercu.light};\r\n margin: 0 0 ${fluid(16, 24)};\r\n`;\r\nexport const paragraphLarge = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(18, 24)};\r\n line-height: ${fluid(28, 32)};\r\n`;\r\nexport const paragraphMedium = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(16, 18)};\r\n line-height: ${fluid(26, 26)};\r\n`;\r\nexport const paragraphSmall = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(24, 24)};\r\n`;\r\nexport const paragraphMicro = css `\r\n ${paragraphStyles};\r\n font-size: ${fluid(12, 14)};\r\n line-height: ${fluid(22, 24)};\r\n`;\r\nexport const meta = css `\r\n display: block;\r\n ${fonts.altGothicNo2.regular};\r\n font-size: ${fluid(18, 18)};\r\n line-height: ${fluid(22, 22)};\r\n letter-spacing: 0.01em;\r\n text-transform: uppercase;\r\n\r\n sup {\r\n font-size: 60%;\r\n }\r\n`;\r\nexport const link = css `\r\n ${transition('color, text-decoration-color')};\r\n\r\n display: inline;\r\n color: currentColor;\r\n text-decoration: underline;\r\n text-decoration-color: currentColor;\r\n text-underline-position: under;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n word-break: break-word;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-width: thin;\r\n }\r\n\r\n &:focus,\r\n &:hover {\r\n text-decoration-color: ${brand.yellow};\r\n }\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.black};\r\n\r\n td,\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.altGothicNo2.regular};\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 text-transform: uppercase;\r\n }\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n &:nth-child(odd) {\r\n background: ${brand.white};\r\n }\r\n\r\n &:nth-child(even) {\r\n background: ${brand.white};\r\n }\r\n\r\n th {\r\n border: 2px solid ${brand.white};\r\n color: ${brand.white};\r\n ${fonts.altGothicNo2.regular};\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 text-transform: uppercase;\r\n }\r\n\r\n td {\r\n border: 2px solid ${brand.white};\r\n ${fonts.apercu.light};\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 @media ${until(Device.TabletSmall)} {\r\n padding: 4px;\r\n }\r\n`;\r\nexport const blockquote = css `\r\n ${paragraphLarge}\r\n\r\n position: relative;\r\n border-left: 4px solid currentColor;\r\n padding-left: 16px;\r\n text-align: left;\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 p {\r\n ${paragraphLarge}\r\n }\r\n\r\n p.small {\r\n ${paragraphSmall}\r\n }\r\n\r\n a {\r\n ${link}\r\n }\r\n\r\n ol,\r\n ul {\r\n ${paragraphLarge};\r\n\r\n li {\r\n &::marker {\r\n color: ${brand.yellow};\r\n }\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 hr {\r\n display: block;\r\n background: currentColor;\r\n border: 0;\r\n height: 4px;\r\n margin: ${fluid(40, 80)} 0;\r\n padding: 0;\r\n width: 100%;\r\n }\r\n\r\n table {\r\n ${table};\r\n }\r\n\r\n blockquote {\r\n ${blockquote};\r\n }\r\n\r\n .responsive-table {\r\n position: relative;\r\n overflow-x: auto;\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\nexport const contentStylesSmall = 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 p {\r\n ${paragraphMedium}\r\n }\r\n\r\n p.small {\r\n ${paragraphSmall}\r\n }\r\n\r\n a {\r\n ${link}\r\n }\r\n\r\n ol,\r\n ul {\r\n ${paragraphMedium};\r\n\r\n li {\r\n &::marker {\r\n color: ${brand.yellow};\r\n }\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 hr {\r\n display: block;\r\n background: currentColor;\r\n border: 0;\r\n height: 4px;\r\n margin: ${fluid(40, 80)} 0;\r\n padding: 0;\r\n width: 100%;\r\n }\r\n\r\n table {\r\n ${table};\r\n }\r\n\r\n blockquote {\r\n ${blockquote};\r\n }\r\n\r\n .responsive-table {\r\n position: relative;\r\n overflow-x: auto;\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 { Cloudinary } from '@cloudinary/url-gen';\r\nimport { dpr, format, quality } from '@cloudinary/url-gen/actions/delivery';\r\nimport { crop, fill, limitFill } from '@cloudinary/url-gen/actions/resize';\r\nimport { face } from '@cloudinary/url-gen/qualifiers/focusOn';\r\nimport { auto as autoFormat } from '@cloudinary/url-gen/qualifiers/format';\r\nimport { autoGravity, focusOn } from '@cloudinary/url-gen/qualifiers/gravity';\r\nimport { auto as autoQuality } from '@cloudinary/url-gen/qualifiers/quality';\r\nconst cl = new Cloudinary({\r\n cloud: {\r\n cloudName: 'essential-living',\r\n },\r\n url: {\r\n secure: true,\r\n },\r\n});\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?.src) {\r\n return '';\r\n }\r\n let clImage = cl.image(image.src);\r\n const resizeAction = getResizeAction(image, imageParams);\r\n if (resizeAction) {\r\n clImage = clImage.resize(resizeAction);\r\n }\r\n clImage = clImage.delivery(getFormatAction(imageParams)).delivery(quality(autoQuality()));\r\n if (imageParams.dpr) {\r\n clImage = clImage.delivery(dpr(imageParams.dpr));\r\n }\r\n // Set version to enable mass invalidation.\r\n clImage.setVersion(process.env.CLOUDINARY_VERSION ?? '1');\r\n return clImage.toURL();\r\n}\r\nfunction getResizeAction(image, imageParams) {\r\n if (!imageParams.width && !imageParams.height) {\r\n console.warn(`Image Not Resized: \"${image.src}\"`, image, imageParams);\r\n return undefined;\r\n }\r\n let resizeAction;\r\n switch (imageParams.crop) {\r\n case 'crop':\r\n resizeAction = crop();\r\n break;\r\n case 'fill':\r\n resizeAction = fill();\r\n break;\r\n case 'lfill':\r\n resizeAction = limitFill();\r\n break;\r\n default:\r\n resizeAction = fill();\r\n break;\r\n }\r\n if (imageParams.width) {\r\n resizeAction = resizeAction.width(imageParams.width);\r\n }\r\n else if (imageParams.widthratio) {\r\n resizeAction = resizeAction.aspectRatio(imageParams.widthratio);\r\n }\r\n if (imageParams.height) {\r\n resizeAction = resizeAction.height(imageParams.height);\r\n }\r\n else if (imageParams.heightratio) {\r\n resizeAction = resizeAction.aspectRatio(imageParams.heightratio);\r\n }\r\n if (imageParams.gravity === 'face') {\r\n resizeAction = resizeAction.gravity(focusOn(face()));\r\n }\r\n else {\r\n resizeAction = resizeAction.gravity(autoGravity());\r\n }\r\n return resizeAction;\r\n}\r\nfunction getFormatAction(imageParams) {\r\n let formatAction;\r\n if (imageParams.format) {\r\n formatAction = format(imageParams.format);\r\n }\r\n else {\r\n formatAction = format(autoFormat());\r\n }\r\n return formatAction;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio) {\r\n const sizes = getRange(upper, lower, steps);\r\n return sizes.map((size) => `${imageUrl(image, { width: size, heightratio: ratio })} ${size}w`);\r\n}\r\nexport function getRetinaSrcs(image, width, ratio) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n return dprs.map((dpr) => `${imageUrl(image, { width: width, heightratio: ratio, dpr })} ${dpr}x`);\r\n}\r\nfunction getRange(upper, lower, steps) {\r\n const difference = upper - lower;\r\n const increment = difference / (steps - 1);\r\n return [\r\n lower,\r\n ...Array(steps - 2)\r\n .fill('')\r\n .map((_, index) => Math.ceil(lower + increment * (index + 1))),\r\n upper,\r\n ];\r\n}\r\nconst imgSrcRegex = /]*(src=\"[^\"]+\")[^>]*>/g;\r\nconst cloudinaryPathRegex = /res.cloudinary.com\\/[^/]*\\/image\\/upload\\/v[\\d]*\\/(.*)\"/;\r\nexport function transformCloudinarySrcsInHtmlString(HtmlString, imageParams, upper, lower, steps) {\r\n HtmlString = HtmlString.replace(/\\s+/g, ' ').trim();\r\n const images = HtmlString.matchAll(imgSrcRegex);\r\n let ratio = undefined;\r\n if (imageParams.heightratio && imageParams.widthratio) {\r\n ratio = imageParams.heightratio / imageParams.widthratio;\r\n }\r\n if (images) {\r\n Array.from(images).forEach((image) => {\r\n const cloudinaryPath = image[1].match(cloudinaryPathRegex);\r\n if (cloudinaryPath && cloudinaryPath[1] && image[0].indexOf('srcset') == -1) {\r\n const decodedPath = decodeURI(cloudinaryPath[1]);\r\n const src = imageUrl({ src: decodedPath }, imageParams);\r\n const srcSet = getSrcs({ src: decodedPath }, upper, lower, steps, ratio).join(',');\r\n HtmlString = HtmlString.replace(image[1], `src=\"${src}\" srcset=\"${srcSet}\"`);\r\n }\r\n });\r\n }\r\n return HtmlString;\r\n}\r\n"],"sourceRoot":""}