{"version":3,"sources":["core/components/CtaContainer/CtaContainer.style.ts","core/components/CtaContainer/CtaContainer.tsx","core/components/Collapse/Collapse.tsx","core/components/Card/Card.tsx","core/components/InlineNotification/InlineNotification.content.ts","core/components/InlineNotification/InlineNotification.tsx","core/components/DynamicSubLayout/DynamicSubLayout.tsx","core/sitecore/jss-proxy-components/JssImage/JssImage.style.ts","core/sitecore/jss-proxy-components/JssImage/JssImage.tsx","core/components/DynamicSubLayout/DynamicSubLayout.style.ts","core/analytics/TrackLinksWithin/TrackLinksWithin.tsx","core/components/Card/Card.style.ts","pods/theme/components/BackgroundContainer/BackgroundContainer.style.ts","pods/theme/components/BackgroundContainer/BackgroundContainer.types.ts","pods/theme/components/BackgroundContainer/BackgroundContainer.tsx","../node_modules/react-animate-height/lib/AnimateHeight.js","../node_modules/react-animate-height/node_modules/classnames/index.js","jss-components/t02-layout/e02-modules/ContentBlock/ContentBlock.style.ts","jss-components/t02-layout/e02-modules/ContentBlock/ContentBlock.tsx","../node_modules/react-uid/dist/es2015/context.js","../node_modules/react-uid/dist/es2015/hooks.js"],"names":["CtaContainer","styled","div","margin","css","Segment","disableFullWidth","Cta","JSS_CTA_CLASS","children","direction","props","DynamicSubLayout","stackAt","gap","align","layout","defaultProps","Collapse","isOpen","forceFlexDisplay","className","contentClassName","duration","onOpenStart","onCloseStart","onOpenEnd","onCloseEnd","ariaAttributes","height","aria-expanded","ariaExpanded","undefined","onAnimationStart","executeCallback","onAnimationEnd","style","display","Card","noPadding","withShadow","noBorder","hover","allowOverflow","allowChildrenEscape","bgProps","BackgroundContainer","isDefaultModule","InlineNotification","type","hasCloseButton","handleClose","title","content","jss","isRichText","optionalIcon","handleTrackEvent","contentOnClick","pagePostScrollToTop","closeButtonLabel","topAlignCloseButton","isAnimated","useState","isDismissed","setIsDismissed","useEffect","window","scrollTo","top","behavior","hasCloseButtonLabel","role","data-target-id","isBold","onClick","aria-label","CONTENT","moveToTop","Icon","name","ICONS","CLOSE","size","getResponsiveLayout","layouts","defaultLayout","reduce","acc","resolveBp","bp","getSegmentWidth","currentLayout","idx","layoutWidths","trim","replace","split","layoutIdx","length","widthCSS","segmentWidth","match","map","num","parseInt","numerator","denominator","e","console","error","inline","reverse","debug","useThisBp","useThisSize","leftPadding","rightPadding","customCss","overrideBpc","shouldOverrideBpc","_renderSubLayout","bpName","bpcSize","isColumn","isStacked","hasFixedLayout","hasResponsiveLayout","React","Children","count","xGap","safeGet","yGap","cx","field","key","width","noBpClasses","Wrapper","mx","JssImage","value","class","doesImageExist","media","getFormattedJSSImage","BpWrapper","Container","DATA_ATTR","TrackLinksWithin","targetLinks","trackWithinId","useUID","forEach","link","analyticsId","trackingCallback","document","querySelectorAll","el","text","textContent","getAttribute","addEventListener","theme","global","borders","module","variables","baseTransition","Content","applyBackgroundShade","bgImageShadeColor","bgImageShadeOpacity","bgColor","core","getCompositionColor","shade","Number","toLowerCase","rgba","applyBackgroundColor","util","isBrandColor","getBackgroundAndText","isDark","typography","colors","genericLight","genericDark","InlineImgShade","Background","bgImage","color","getDarkText","getLightText","bgPadding","bgImagePosition","getText","applyBackgroundImage","textColor","allowChildrenScape","JSSpropsMap","backgroundColour","BackgroundImage","BackgroundImagePosition","ImageOverlayColour","Opacity","TextColour","getBgProps","fields","Object","keys","matchingKey","isObject","src","bgImageInline","bgImageInlineAltText","alt","defineProperty","exports","_typeof","Symbol","iterator","obj","constructor","prototype","_extends","assign","target","i","arguments","source","hasOwnProperty","call","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","require","_propTypes2","_classnames2","__esModule","default","_defineProperty","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","PROPS_TO_OMIT","omit","_len","Array","_key","res","objectKeys","indexOf","cancelAnimationFrames","requestAnimationFrameIDs","id","cancelAnimationFrame","isNumber","n","isNaN","parseFloat","isFinite","isPercentage","search","substr","runCallback","callback","params","AnimateHeight","_React$Component","instance","TypeError","_classCallCheck","this","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","animationFrameIDs","overflow","animationStateClasses","getStaticStateClasses","state","shouldUseTransitions","subClass","superClass","create","setPrototypeOf","_inherits","contentElement","hideContent","prevProps","prevState","_this2","_props","delay","_cx","showContent","contentHeight","offsetHeight","totalDuration","newHeight","timeoutState","isCurrentHeightAuto","timeoutAnimationStateClasses","setState","clearTimeout","timeoutID","animationClassesTimeoutID","requestAnimationFrame","startAnimationHelper","setTimeout","_cx2","_cx3","_this3","_props2","animateOpacity","applyInlineTransitions","easing","_state","componentStyle","transition","WebkitTransition","contentStyle","opacity","componentClasses","ariaHidden","createElement","apply","concat","ref","Component","propTypes","bool","object","any","isRequired","string","number","propName","componentName","func","hasOwn","classNames","classes","arg","argType","push","isArray","inner","join","ImageBlock","isDashboardModule","TextBlock","FONT_WEIGHT","BOOK","FONT_NAMES","GOTHAM_ROUNDED_BOOKED","NotificationBlock","alignTop","Text","CtaWrapper","CTA_CLASS","SecondaryCtaWrapper","ContentBlock","hasImage","imageAlignRight","isImageCircle","isContentCentered","CONTENT_IMAGE_PADDING","Hr","withTheme","image","Image","description","heading","ctaButton","ctaRightButton","isSecondary","secondaryButtonStyle","hasButtons","hasCtaDivider","hasApiCall","useAppContext","talSsoUrl","isTalSsoUrlLoading","handleTriggerTalSsoUrl","talSsoError","setNotification","handleSetNotification","trackEvent","useTrackEvent","event_section","event_type","event_title","useModal","Modal","toggleModal","goToTalSsoCtaBtn","setGoToTalSsoCtaBtn","talSSODsmModalCtaBtn","href","E72","getMessageByCode","ERROR_CODES","TAL_SSO_NOT_AVAILABLE","errorMessages","talSSODsmModalDescription","ctaStyle","jssLink","notificationContent","notificationContentPosition","notificationContentType","tag","event_label","event_trigger","event_url","getFormattedRichTextWithImage","ctaType","isInverted","shouldCtaInvert","isLoading","isDisabled","createSource","prefix","uid","generateUID","counter","useUIDState","context","quartz","getPrefix","getId","gen","item","useUIDSeed"],"mappings":"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","file":"static/js/ContentBlock.ccfb2d2d.chunk.js","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { JSS_CTA_CLASS, Cta } from 'core/components/Cta/Cta.style';\n\nimport { Segment } from 'core/components/DynamicSubLayout/DynamicSubLayout.style';\n\nexport const CtaContainer = styled.div<{\n\tmargin?: string;\n\tdisableFullWidth: boolean;\n}>`\n\tdisplay: block;\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t.cta {\n\t\tmargin: 0;\n\t\tjustify-content: center;\n\t}\n\n\t${Segment} {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t${({ disableFullWidth }) =>\n\t\t!disableFullWidth &&\n\t\tcss`\n\t\t\t.dynamicSubLayout.-stacked {\n\t\t\t\t${Cta},\n\t\t\t\t.${JSS_CTA_CLASS} {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t`}\n`;\n","import React from 'react';\n\nimport DynamicSubLayout, {\n\tIProps as DSLprops,\n} from 'core/components/DynamicSubLayout';\n\nimport * as S from './CtaContainer.style';\n\ninterface IProps extends DSLprops {\n\tmargin?: string;\n\t/* Whether to stretch the Cta to full-width when stacked responsively. */\n\tdisableFullWidth?: boolean;\n\tdirection?: string;\n\tchildren: React.ReactNode;\n}\n\nconst STACK_AT = 'xxs';\n\nconst CtaContainer = ({\n\tchildren,\n\tmargin,\n\tdirection = 'row',\n\tdisableFullWidth = false,\n\t...props\n}: IProps) => (\n\t\n\t\t\n\t\t\t{children}\n\t\t\n\t\n);\n\nCtaContainer.defaultProps = {\n\tmargin: '12px 0 0 0',\n};\n\nexport default CtaContainer;\n","import React from 'react';\nimport AnimateHeight from 'react-animate-height';\n\nimport { executeCallback } from 'core/utils/global-utils';\n\ninterface IProps {\n\tisOpen: boolean;\n\n\tforceFlexDisplay?: boolean;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tduration?: number;\n\n\tonOpenStart?: () => void;\n\tonCloseStart?: () => void;\n\tonOpenEnd?: () => void;\n\tonCloseEnd?: () => void;\n\n\tariaAttributes?: { [key: string]: string | number };\n\n\tchildren: React.ReactNode;\n}\n\nconst Collapse = ({\n\tisOpen,\n\n\tforceFlexDisplay,\n\tclassName,\n\tcontentClassName,\n\tduration = 300,\n\n\tonOpenStart,\n\tonCloseStart,\n\tonOpenEnd,\n\tonCloseEnd,\n\n\tariaAttributes,\n\n\tchildren,\n}: IProps) => (\n\t {\n\t\t\tif (isOpen) {\n\t\t\t\texecuteCallback(onOpenStart);\n\t\t\t} else {\n\t\t\t\texecuteCallback(onCloseStart);\n\t\t\t}\n\t\t}}\n\t\tonAnimationEnd={() => {\n\t\t\tif (isOpen) {\n\t\t\t\texecuteCallback(onOpenEnd);\n\t\t\t} else {\n\t\t\t\texecuteCallback(onCloseEnd);\n\t\t\t}\n\t\t}}\n\t\tstyle={forceFlexDisplay ? { display: 'flex' } : {}}\n\t>\n\t\t{children}\n\t\n);\n\nexport default Collapse;\n","import React from 'react';\n\nimport BackgroundContainer, {\n\tBackgroundContainerProps as IBgProps,\n} from 'pods/theme/components/BackgroundContainer';\n\nimport * as S from './Card.style';\n\ninterface IProps extends IBgProps {\n\tnoPadding?: boolean;\n\thover?: boolean;\n\twithShadow?: boolean;\n\tnoBorder?: boolean;\n\tmargin?: string;\n\t/** Allow the content overflow the card container, e.g. dropdown selection */\n\tallowOverflow?: boolean;\n\tallowChildrenEscape?: boolean;\n\tchildren: React.ReactNode;\n}\n\nconst Card = ({\n\tnoPadding = false,\n\twithShadow = false,\n\tnoBorder = false,\n\thover = false,\n\tallowOverflow = false,\n\tallowChildrenEscape = false,\n\tmargin,\n\tchildren,\n\t...bgProps\n}: IProps) => (\n\t\n\t\t\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t\n);\n\nexport default Card;\n","export default {\n\tDISMISS: 'Dismiss this notification',\n};\n","import React, { useState, useEffect } from 'react';\n\nimport Collapse from 'core/components/Collapse';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport * as Typo from 'core/styles/Typography';\nimport { JssTextType } from 'core/utils/sitecore-utils';\nimport { executeCallback } from 'core/utils/global-utils';\n\nimport * as S from './InlineNotification.style';\nimport CONTENT from './InlineNotification.content';\n\nexport type NotificationType =\n\t| 'info'\n\t| 'success'\n\t| 'error'\n\t| 'warning'\n\t| 'loading';\n\nexport interface IProps {\n\t/** Visual styles/colours for the notification. */\n\ttype?: NotificationType;\n\t/** Optionally include a button to dismiss/hide the notification. */\n\thasCloseButton?: boolean;\n\t/** Optionally include a callback on close */\n\thandleClose?: () => void;\n\t/** CSS margin */\n\tmargin?: string;\n\t/** Whether to parse RichText (for both JSS and non-JSS content). */\n\tisRichText?: boolean;\n\t/** Notification contents are either jss text object, or content string. */\n\tjss?: JssTextType;\n\t/** Notification contents are either jss text object, or content string. */\n\ttitle?: React.ReactNode | 'string';\n\t/** Notification contents are either jss text object, or content string. */\n\tcontent?: React.ReactNode | 'string';\n\t/** Generic className prop passthrough */\n\tclassName?: string;\n\t/** optional ICON if content author wants to override the generic icon of the Notification type */\n\toptionalIcon?: ICONS | string;\n\t/** optional track event handling */\n\thandleTrackEvent?: () => void;\n\t/** optional onClick event for content */\n\tcontentOnClick?: React.MouseEventHandler;\n\t/** optional scroll to top on inline notification trigger */\n\tpagePostScrollToTop?: boolean;\n\t/** Close button label */\n\tcloseButtonLabel?: string;\n\t/** Put close button on top, a hack for DbImportantNotice */\n\ttopAlignCloseButton?: boolean;\n\t/** Animates icon */\n\tisAnimated?: boolean;\n}\n\nconst InlineNotification = ({\n\ttype = 'info',\n\thasCloseButton = false,\n\thandleClose,\n\tmargin,\n\ttitle,\n\tcontent,\n\tjss,\n\tisRichText = false,\n\tclassName,\n\toptionalIcon,\n\thandleTrackEvent,\n\tcontentOnClick,\n\tpagePostScrollToTop = false,\n\tcloseButtonLabel,\n\ttopAlignCloseButton = false,\n\tisAnimated = false,\n}: IProps) => {\n\tconst [isDismissed, setIsDismissed] = useState(false);\n\n\tuseEffect(() => {\n\t\t/**\n\t\t * Note: This will trigger on every mount but is countered by\n\t\t * the nature of InlineNotification's structure which is inside a conditional statement\n\t\t * from the consuming component.\n\t\t */\n\t\tif (pagePostScrollToTop) {\n\t\t\twindow.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t}\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{title && (\n\t\t\t\t\t\n\t\t\t\t\t\t{title}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\t{!jss && content}\n\t\t\t\t\n\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\thandleTrackEvent?.();\n\t\t\t\t\t\t\tif (handleClose) {\n\t\t\t\t\t\t\t\texecuteCallback(handleClose);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetIsDismissed(true);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tmoveToTop={topAlignCloseButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!closeButtonLabel && (\n\t\t\t\t\t\t\t{closeButtonLabel}\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default InlineNotification;\n","// Ref: https://css-tricks.com/css-grid-in-ie-faking-an-auto-placement-grid-with-gaps/\n\n// ------------------------------------\n// MVP implementation\n\n// TODO \tpotentially defer to `layout` prop if no `layouts` match,\n// \t\t\treverting back to default auto-layout?\n// \t\t\t\t-- e.g. specifying both layout AND layouts\n// TODO \tsupport opt-OUT equal height for segments in rows\n//\t\t\t\t-- plus DOCS for how to enable propagate equal heights within segment wrappers (either display: flex or height: 100%)\n// TODO \tfor bp queries, can we have a type export from dd-bpc for the different/valid queries?\n// TODO \tunit tests\n// TODO \tintegration tests\n// TODO \tflag for opting out of responsive/bpc behaviour? Just purely layout?\n// TODO \tprop for aligning content within segments? like vertically centre align when equal heights stretched\n\n// ------------------------------------\n// Future package-admin\n\n// TODO \tprobably deprecate inline prop? is there actually a use-case for this?\n// TODO \tpotentially deprecate useThisSize? Or? should align with decisions inside dd-bpc whether its kept there or not\n// TODO \tsupport CSS border styles within the grid? somehow?\n// \t\t\t\t-- including sub-options like including perimeter borders, or inner borders only (if possible)\n// \t\t\t\t-- (is this potentially out-of-scope for this package...?)\n// TODO \tcan we remove classnames dependency? (yes!)\n\n// ------------------------------------\n// Known bugs\n\n// TODO \tfully validate IE11 support; it's kinda the whole point we're using the CSS-Tricks implementation (it does work in IE11!)\n// \t\t\t\t-- looks to be a discrepancy bug with the dynamic responsive example? is this replicable?\n// TODO \tedge-to-edge DSL; is this a problem? (no overflow hidden pushes out width by the padding offset?)\n// TODO \toverflow: hidden - is this absolutely necessary? Seems like a limitation?\n\n// ------------------------------------------\n\nimport React from 'react';\n\nimport cx from 'classnames';\n\nimport safeGet from 'lodash/get';\n\nimport {\n\tBreakpointContainer,\n\tresolveBp,\n} from '@deloitte-digital-au/dd-breakpoint-container';\n\nimport * as S from './DynamicSubLayout.style';\n\n// ------------------------------------\n// Types\n\ntype LayoutAlign = 'left' | 'right' | 'center' | 'between';\ntype LayoutGapObject = { x: number; y: number };\ntype LayoutGap = number | LayoutGapObject;\n\ntype LayoutObject = {\n\tbp: string;\n\tlayout?: string;\n\talign?: LayoutAlign;\n\tgap?: LayoutGap;\n};\n\nexport interface IProps {\n\t/** Feed in a named breakpoint from another BreakpointContainer, instead of using a new one. */\n\tuseThisBp?: string;\n\n\t/** Override component behaviour according to the supplied pixel value; component won't use its own BreakpointContainer. */\n\tuseThisSize?: number;\n\n\t/** Breakpoint name from which to stack segments vertically (for mobile layouts). 'Stack from this breakpoint (inclusive) and below'. Opt-out by passing `null`. */\n\tstackAt?: string | number | null;\n\n\t/** CSS marging string applied to component's container. */\n\tmargin?: string;\n\n\t/** Vertical/horizontal spacing between segments in the layout. */\n\tgap?: LayoutGap;\n\n\t/** Align items within the layout; left, right, center, or between. */\n\talign?: LayoutAlign;\n\n\t/** Opt-out of inherent width: 100%; changes wrapper div to `display: inline-block`. */\n\tinline?: boolean;\n\n\t/** Updates current layout order by toggling `flex-direction`. */\n\tdirection?: string;\n\n\t/** Reverses current layout order by toggling `flex-direction`. */\n\treverse?: boolean;\n\n\t/** Layout query string; either a fraction or valid CSS width e.g. `${number}px`, percentage, or calc() expression. */\n\tlayout?: string;\n\n\t/** Array of layouts for dynamic, responsive layouts. Supercedes `layout` prop. */\n\tlayouts?: LayoutObject[];\n\n\t/** Passthrough `debug` flag to */\n\tdebug?: boolean;\n\n\tchildren: React.ReactNode;\n\n\tleftPadding?: number;\n\n\trightPadding?: number;\n\n\tcustomCss?: string;\n}\n\n// ------------------------------------\n// Core functions\n\n/**\n * Find the most relevant layout according to current breakpoint.\n *\n * @param layouts - Responsive layout objects.\n * @param defaultLayout - Default layout object.\n * @param size - Module size in px, or breakpoint name.\n */\nconst getResponsiveLayout = (\n\tlayouts: LayoutObject[],\n\tdefaultLayout: LayoutObject,\n\tsize: number | string,\n): LayoutObject =>\n\tlayouts.reduce((acc, layout) => {\n\t\tif (resolveBp(layout.bp, size)) {\n\t\t\t// Combined with defaultLayout to allow for\n\t\t\t// partial layout specifications, with fallback\n\t\t\t// values according to default layout\n\t\t\treturn { ...defaultLayout, ...layout };\n\t\t} else {\n\t\t\treturn acc;\n\t\t}\n\t\t// (`defaultLayout` is used as accumulator as an overall fallback,\n\t\t// and so any ommitted values have a set of 'default' values)\n\t}, defaultLayout);\n\n// ------------------------------------\n\n/**\n * @param currentLayout - Current layout object.\n * @param idx - Index.\n * @returns {string} A CSS expression: for example a px value, percentage, or calc.\n */\nconst getSegmentWidth = (\n\tcurrentLayout: LayoutObject,\n\tidx: number,\n): string | undefined => {\n\tif (!currentLayout || !currentLayout.layout) return;\n\n\t// Normalise comma/whitespace separation to just commas\n\t// Note we can't accept just whitespace separation, because\n\t// a segment width may be a CSS calc() expression which will\n\t// also contain whitespaces; hence the comma separation requirement\n\tconst layoutWidths = currentLayout.layout\n\t\t.trim()\n\t\t.replace(/,\\s/g, ',')\n\t\t.split(',');\n\tlet layoutIdx = idx;\n\n\t// Check if segment 'overflows' defined layout\n\t// If it does, find which segment/layout index\n\t// it corresponds to for wrapping purposes\n\tif (idx + 1 > layoutWidths.length) {\n\t\tlayoutIdx = (idx + 1) % layoutWidths.length;\n\t\t// If modulo returns 0, it means its ought to in fact\n\t\t// be placed in the last position of the layout\n\t\tlayoutIdx = layoutIdx === 0 ? layoutWidths.length : layoutIdx;\n\t\t// Re-correct for index\n\t\tlayoutIdx -= 1;\n\t}\n\n\t// Get layout definition for the specificed segment\n\tconst segmentWidth = layoutWidths[layoutIdx].trim();\n\tlet widthCSS;\n\n\t// If it's a fraction, convert to a percentage\n\tif (!!segmentWidth.match(/^[0-9]+\\/[0-9]+$/)) {\n\t\tconst [numerator, denominator] = segmentWidth\n\t\t\t.split('/')\n\t\t\t.map(num => parseInt(num));\n\n\t\ttry {\n\t\t\twidthCSS = `${(numerator / denominator) * 100}%`;\n\t\t} catch (e) {\n\t\t\tconsole.error(\n\t\t\t\t'Invalid fraction:',\n\t\t\t\tsegmentWidth,\n\t\t\t\t'parsed as - numerator:',\n\t\t\t\tnumerator,\n\t\t\t\t'denominator:',\n\t\t\t\tdenominator,\n\t\t\t\t'. Full error:',\n\t\t\t\te,\n\t\t\t);\n\t\t}\n\t} else {\n\t\t// Else, we can otherwise assume the definition is a CSS expression\n\t\twidthCSS = segmentWidth;\n\t}\n\n\treturn widthCSS;\n};\n\n// ------------------------------------\n\nconst DynamicSubLayout = ({\n\tstackAt = 's',\n\tmargin,\n\tgap = 20,\n\talign = 'left',\n\tdirection = 'row',\n\tinline = false,\n\treverse = false,\n\tdebug = false,\n\tlayout,\n\tlayouts,\n\tchildren,\n\tuseThisBp,\n\tuseThisSize,\n\tleftPadding,\n\trightPadding,\n\tcustomCss,\n}: IProps) => {\n\t// Component can defer to outside logic for bp or size\n\t// e.g. so this module could be driven by the browser breakpoint,\n\t// or another BreakpointContainer in a controlling component.\n\t// (By default this component will use its own BreakpointContainer)\n\tconst overrideBpc = useThisBp ?? useThisSize;\n\tconst shouldOverrideBpc = !!overrideBpc;\n\n\tconst _renderSubLayout = (\n\t\tbpName: string | undefined,\n\t\tbpcSize: number | undefined,\n\t\tshouldOverrideBpc = false,\n\t): React.ReactNode => {\n\t\tconst size = (overrideBpc ?? bpcSize ?? bpName) as string | number;\n\t\tconst isColumn = direction === 'column';\n\t\tconst isStacked = !!stackAt && resolveBp(`0, ${stackAt}`, size);\n\t\tconst hasFixedLayout = !!layout && !layouts;\n\t\tconst hasResponsiveLayout = !!layouts;\n\n\t\tlet currentLayout = {\n\t\t\tgap,\n\t\t\tlayout: `1/${React.Children.count(children) ?? '1'}`,\n\t\t} as LayoutObject;\n\n\t\tif (hasFixedLayout) {\n\t\t\tcurrentLayout.layout = layout;\n\t\t} else if (hasResponsiveLayout) {\n\t\t\tcurrentLayout = getResponsiveLayout(\n\t\t\t\tlayouts as LayoutObject[],\n\t\t\t\tcurrentLayout,\n\t\t\t\tsize,\n\t\t\t);\n\t\t}\n\n\t\t// Use align from current responsive layout; fallback to default align\n\t\talign = currentLayout?.align ?? align;\n\n\t\tconst xGap = safeGet(gap, 'x') ?? gap;\n\t\tconst yGap = safeGet(gap, 'y') ?? gap;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{React.Children.map(children, (field, idx) => {\n\t\t\t\t\t\t// It's appropriate to use an index value as a key here because\n\t\t\t\t\t\t// this component never changes the order of its children, and there\n\t\t\t\t\t\t// have been side-effects trying to calculate dynamic unique IDs.\n\t\t\t\t\t\t// The index key doesn't cause a problem here because if the children\n\t\t\t\t\t\t// passed through to DSL are reordered or removed/changed, it's up\n\t\t\t\t\t\t// to the controlling component to maintain the unique keys.\n\t\t\t\t\t\t/* eslint-disable-next-line react/no-array-index-key */\n\t\t\t\t\t\tconst key = idx;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfield && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{field}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t{!shouldOverrideBpc ? (\n\t\t\t\t\n\t\t\t\t\t{(bpName, bpcSize) => _renderSubLayout(bpName, bpcSize)}\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t_renderSubLayout(useThisBp, useThisSize, true)\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default DynamicSubLayout;\n","import styled from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\n\nexport const Wrapper = styled.div`\n\timg {\n\t\t${mx.square('100%')}\n\t}\n`;\n","import React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { Image } from '@sitecore-jss/sitecore-jss-react';\n\nimport { getFormattedJSSImage, JssImageType } from 'core/utils/sitecore-utils';\n\nimport * as S from './JssImage.style';\n\ninterface IProps {\n\tfield?: JssImageType;\n}\n\n/**\n * Sitecore never in fact returns a 'null' image, it will instead\n * give us a default 'placeholder' image; however we can discern if\n * this is the case by checking if the adjacent `class` === 'scEmptyImage'.\n */\nexport const doesImageExist = (field: JssImageType | undefined) => {\n\tconst imageClass = field?.value?.class;\n\n\treturn imageClass !== 'scEmptyImage';\n};\n\nconst JssImage = ({ field, ...props }: IProps) =>\n\tdoesImageExist(field) ? (\n\t\t\n\t\t\t\n\t\t\n\t) : null;\n\nexport default JssImage;\n","import styled, { css } from 'styled-components';\n\nexport const BpWrapper = styled.div<{\n\tinline?: boolean;\n}>`\n\twidth: 100%;\n\n\t${({ inline }) =>\n\t\tinline &&\n\t\tcss`\n\t\t\twidth: auto;\n\t\t\tdisplay: inline-block;\n\t\t`}\n`;\n\nexport const Wrapper = styled.div<{\n\tmargin?: string;\n\tdebug?: boolean;\n\tshouldOverrideBpc: boolean;\n\tsize: string | number;\n\tcustomCss?: string;\n}>`\n\toverflow: visible;\n\tposition: relative;\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ debug, shouldOverrideBpc, size }) =>\n\t\tdebug &&\n\t\tcss`\n\t\t\t${shouldOverrideBpc &&\n\t\t\t\tsize &&\n\t\t\t\tcss`\n\t\t\t\t\tborder: 1px dashed black;\n\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcontent: 'controlled: ${size}';\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tbackground-color: white;\n\t\t\t\t\t\tcolor: black;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tz-index: 9999;\n\t\t\t\t\t\tborder: 1px dashed red;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tmin-height: 15px;\n\t\t\t\t\t\tz-index: 9999;\n\t\t\t\t\t\tpadding: 0 3px;\n\t\t\t\t\t\tfont-family: monospace;\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t`}\n\n\t\t${({ customCss }) =>\n\t\t\tcustomCss &&\n\t\t\tcss`\n\t\t\t\t${customCss}\n\t\t\t`}\n`;\n\nexport const Container = styled.div<{\n\tyGap?: number;\n\txGap?: number;\n\talign?: string;\n\treverse?: boolean;\n\tisStacked: boolean;\n\tdirection?: string;\n\tisColumn?: boolean;\n}>`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t${({ yGap, xGap }) => css`\n\t\tmargin: 0 -${xGap}px -${yGap}px 0;\n\t`}\n\n\t${({ align }) => css`\n\t\tjustify-content: ${align === 'left'\n\t\t\t? 'flex-start'\n\t\t\t: align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: align === 'center'\n\t\t\t? 'center'\n\t\t\t: align === 'between'\n\t\t\t? 'space-between'\n\t\t\t: 'initial'};\n\t`}\n\n\t${({ isColumn }) =>\n\t\tisColumn &&\n\t\tcss`\n\t\t\tflex-direction: ${isColumn ? 'column' : 'row'};\n\t\t`}\n\n\t${({ reverse, isStacked }) =>\n\t\treverse &&\n\t\tcss`\n\t\t\tflex-direction: ${isStacked ? 'column-reverse' : 'row-reverse'};\n\t\t`}\n`;\n\nexport const Segment = styled.div<{\n\tdebug: boolean;\n\tisStacked: boolean;\n\twidth?: string;\n\tyGap: number;\n\txGap: number;\n\tleftPadding?: number;\n\trightPadding?: number;\n}>`\n\tborder: 0 solid transparent;\n\tbackground-clip: padding-box;\n\tbox-sizing: border-box;\n\n\t${({ debug }) =>\n\t\tdebug &&\n\t\tcss`\n\t\t\t/* Note we can't use border here due to Segment relying\n\t\t\ton the transparent border to achieve the grid gap. */\n\t\t\tbox-shadow: inset 0 0 0 2px black;\n\t\t`}\n\n\t${({ isStacked, width, yGap, xGap }) => css`\n\t\twidth: ${isStacked ? '100%' : width};\n\t\tborder-width: 0 ${xGap}px ${yGap}px 0;\n\t`}\n\n\t${({ leftPadding, rightPadding }) => css`\n\t\tpadding-left: ${leftPadding ?? '0'}px;\n\t\tpadding-right: ${rightPadding ?? '0'}px;\n\t`}\n`;\n","import React, { useEffect } from 'react';\nimport { useUID } from 'react-uid';\n\nconst DATA_ATTR = {\n\tTRACK_WITHIN_CONTAINER_ID: 'data-analytics-track-within',\n\tANALYTICS_TARGET_ID: 'data-analytics-id',\n};\n\nexport type TTrackingCallbackParams = {\n\ttext: string;\n\tlink: string;\n};\n\nexport type TTargetLinksCallback = [\n\tstring,\n\t(props: TTrackingCallbackParams) => void,\n][];\n\ninterface IProps {\n\ttargetLinks: TTargetLinksCallback;\n\tchildren: React.ReactNode;\n}\n/**\n * Bind tracking events to target links that will exist somewhere\n * amongst the children provided to this component.\n *\n * Useful for when hyperlinks or other clickable content is\n * not explicitly controllable (e.g. in CMS richtext).\n */\nconst TrackLinksWithin = ({ targetLinks, children }: IProps) => {\n\t// Unique ID generated for the container div wrapping the provided\n\t// children. This is necessary to limit the scope of the below\n\t// `querySelectorAll` event bind to just the children provided\n\tconst trackWithinId = useUID();\n\n\t// Ensure component has mounted\n\tuseEffect(() => {\n\t\ttargetLinks.forEach(link => {\n\t\t\tconst [analyticsId, trackingCallback] = link;\n\n\t\t\t// `querySelectorAll` to potentially track multiple links\n\t\t\t// that share the same `DATA_ATTR.ANALYTICS_TARGET_ID` attribute value\n\t\t\tconst targetElements = document.querySelectorAll(\n\t\t\t\t`[${DATA_ATTR.TRACK_WITHIN_CONTAINER_ID}=\"${trackWithinId}\"] [${DATA_ATTR.ANALYTICS_TARGET_ID}=\"${analyticsId}\"]`,\n\t\t\t);\n\n\t\t\ttargetElements.forEach(el => {\n\t\t\t\tconst text = el.textContent as string;\n\t\t\t\tconst link = el.getAttribute('href') as string;\n\n\t\t\t\t// Note that the actual `trackEvent` analytics function\n\t\t\t\t// call still belongs in the implementing component, passed\n\t\t\t\t// into the `targetLinks` props tuple array\n\t\t\t\tel.addEventListener('click', () => trackingCallback({ text, link }));\n\t\t\t});\n\t\t});\n\t}, [targetLinks, trackWithinId, children]);\n\n\t// We're using a data attribute with unique value on the container\n\t// here instead of an ID so we can chain it as a valid selector above\n\t// in `querySelectorAll`; using an `id` attribute would make an invalid selector\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t
\n\t);\n};\n\nexport default TrackLinksWithin;\n","import styled, { css } from 'styled-components';\n\nexport const Card = styled.div<{\n\twithShadow?: boolean;\n\thover?: boolean;\n\tnoBorder?: boolean;\n\tallowOverflow?: boolean;\n\tmargin?: string;\n}>`\n\n\tborder: 1px solid ${({ theme }) => theme.global.borders.module};\n\ttext-align: left;\n\tborder-radius: 8px;\n\toverflow: ${({ allowOverflow }) => (allowOverflow ? 'visible' : 'hidden')};\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ hover }) =>\n\t\thover &&\n\t\tcss`\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbox-shadow: 0 12px 24px 0 rgba(184, 188, 194.05);\n\t\t\t\ttransition: all ${({ theme }) => theme.variables.baseTransition}\n\t\t\t\t\tease-in-out;\n\t\t\t}\n\t\t`}\n\n\t${({ withShadow, hover }) =>\n\t\twithShadow &&\n\t\t!hover &&\n\t\tcss`\n\t\t\tbox-shadow: 0 3px 8px 0 rgba(212, 222, 232, 0.24);\n\t\t`}\n\n\t${({ noBorder }) =>\n\t\tnoBorder &&\n\t\tcss`\n\t\t\tborder: 0px;\n\t\t`}\n`;\n\nexport const Content = styled.div<{\n\tnoPadding: boolean;\n}>`\n\t${({ noPadding }) =>\n\t\t!noPadding &&\n\t\tcss`\n\t\t\tpadding: 25px;\n\t\t`}\n`;\n\nexport const Wrapper = styled.div``;\n","import styled, {\n\tcss,\n\tFlattenSimpleInterpolation as CSS,\n} from 'styled-components';\nimport { rgba } from 'polished';\n\nimport * as mx from 'core/styles/mixins';\nimport { IThemeObject } from 'pods/theme';\n\nimport { IProps } from './BackgroundContainer';\n\n/**\n * Applies semi-transparent shade/overlay ontop of the background image.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgImageShadeColor - `BrandColor` id identifier - or 'black', 'white'.\n * @param {number} bgImageShadeOpacity - CSS opacity of shade overlay.\n */\nconst applyBackgroundShade = (\n\ttheme: IThemeObject,\n\tbgImageShadeColor?: string,\n\tbgImageShadeOpacity?: number,\n): CSS | null => {\n\tconst bgColor =\n\t\t(bgImageShadeColor && theme.core.getCompositionColor(bgImageShadeColor)) ||\n\t\tbgImageShadeColor;\n\tconst shade = Number(bgImageShadeOpacity);\n\n\treturn bgColor && bgColor.toLowerCase() !== 'none'\n\t\t? css`\n\t\t\t\tbackground-color: ${rgba(bgColor, shade)};\n\t\t `\n\t\t: null;\n};\n\n/**\n * Applies background image, and optional shade overlay color.\n * Also sets appropriate text color.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgImage - Background image URL.\n * @param {string} [bgImageShadeColor] - `BrandColor` id identifier - or 'black', 'white'.\n * @param {number} [bgImageShadeOpacity] - Opacity of shade overlay, if applicable.\n * @param {string} [bgImagePosition] - CSS 'background-position' property.\n */\nconst applyBackgroundImage = (\n\ttheme: IThemeObject,\n\tbgImage?: string,\n\tbgImageShadeColor?: string,\n\tbgImageShadeOpacity?: number,\n\tbgImagePosition?: string,\n): CSS =>\n\tcss`\n\t\t&::before,\n\t\t&::after {\n\t\t\t${mx.pseudo}\n\t\t\t${mx.square('100%')}\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tz-index: -1;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\t&::before {\n\t\t\tbackground-image: url(${bgImage});\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: ${bgImagePosition};\n\t\t}\n\n\t\t${bgImageShadeColor &&\n\t\t\tcss`\n\t\t\t\t${bgImageShadeColor === 'black'\n\t\t\t\t\t? css`\n\t\t\t\t\t\t\t${theme.css.getLightText()}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(theme, 'black', bgImageShadeOpacity)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `\n\t\t\t\t\t: bgImageShadeColor === 'white'\n\t\t\t\t\t? css`\n\t\t\t\t\t\t\t${theme.css.getDarkText()}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(theme, 'white', bgImageShadeOpacity)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `\n\t\t\t\t\t: css`\n\t\t\t\t\t\t\t${theme.css.getText(bgImageShadeColor)}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(\n\t\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\t\tbgImageShadeColor,\n\t\t\t\t\t\t\t\t\tbgImageShadeOpacity,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `}\n\t\t\t`}\n\t`;\n\n/**\n * Applies background color and accompanying text color for children to inherit too.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgColor - `BrandColor` name identifier - or any other valid CSS colour string.\n */\nconst applyBackgroundColor = (\n\ttheme: IThemeObject,\n\tbgColor?: string,\n): CSS | '' =>\n\tbgColor\n\t\t? !theme.util.isBrandColor(bgColor)\n\t\t\t? css`\n\t\t\t\t\t/* This block constitutes the user essentially setting\n\t\t\t\t\ta 'manual' background colour, as opposed to a 'BrandColor'.\n\t\t\t\t\tThis can be problematic since we can't know the appropriate\n\t\t\t\t\ttext color to set. We can hope that they utilise the\n\t\t\t\t\t'textColor' override prop to set the corresponding light/dark\n\t\t\t\t\tto complement their choice of 'bgColor'; but failing that\n\t\t\t\t\twe can make an educated guess to serve as a robust fallback\n\t\t\t\t\tby applying the inverse text of the global theme default\n\t\t\t\t\tmodule colour. */\n\t\t\t\t\tcolor: ${theme.global.module.isDark\n\t\t\t\t\t\t? theme.global.typography.colors.genericLight\n\t\t\t\t\t\t: theme.global.typography.colors.genericDark};\n\t\t\t\t\tbackground-color: ${bgColor};\n\t\t\t `\n\t\t\t: theme.css.getBackgroundAndText(bgColor)\n\t\t: '';\n\nexport const InlineImgShade = styled.div<{\n\tbgImageShadeColor?: string;\n\tbgImageShadeOpacity?: number;\n}>`\n\tposition: relative;\n\n\t&::before {\n\t\t${mx.pseudo}\n\t\t${mx.square('100%')}\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t${({ theme, bgImageShadeColor, bgImageShadeOpacity }) =>\n\t\t\tapplyBackgroundShade(theme, bgImageShadeColor, bgImageShadeOpacity)}\n\t}\n`;\n\nexport const Background = styled.div`\n\tborder-radius: inherit;\n\n\t/* Comprehensive defaults */\n\t${({ isDefaultModule, bgColor, bgImage, theme }) => css`\n\t\t/* Modules can opt-in to having the 'default' background value of\n\t\tthis module set to the global module default, as opposed to null/transparent. */\n\t\t${isDefaultModule &&\n\t\t\t!bgImage &&\n\t\t\tapplyBackgroundColor(theme, theme.global.module.color)}\n\n\t\t/* When there is no background colour or image, apply a default\n\t\ttext colour for children of this component based on the global\n\t\tmodule background colour. This is so any component utilising\n\t\tthis module can totally defer text 'color' responsibilities to this\n\t\tcomponent, even when no 'bgImage' or 'bgColor' has been set. If\n\t\tthis default colour is inaccurate it can be overriden with 'textColor' */\n\t\t${\n\t\t\t!bgColor && !bgImage && theme.global.module.isDark\n\t\t\t\t? theme.css.getLightText()\n\t\t\t\t: theme.css.getDarkText()\n\t\t}\n\t`}\n\n\t/* Optionally apply vertical padding when background color/image exists */\n\t${({ bgColor, bgImage, bgPadding }) =>\n\t\t(bgColor || bgImage) &&\n\t\tcss`\n\t\t\tpadding: ${bgPadding};\n\t\t`}\n\n\t/* Apply background image or color and appropriate text color; image takes priority */\n\t${({\n\t\tbgColor,\n\t\tbgImage,\n\t\tbgImageShadeColor,\n\t\tbgImageShadeOpacity,\n\t\tbgImagePosition,\n\t\ttheme,\n\t}) =>\n\t\tbgImage\n\t\t\t? applyBackgroundImage(\n\t\t\t\t\ttheme,\n\t\t\t\t\tbgImage,\n\t\t\t\t\tbgImageShadeColor,\n\t\t\t\t\tbgImageShadeOpacity,\n\t\t\t\t\tbgImagePosition,\n\t\t\t )\n\t\t\t: bgColor && applyBackgroundColor(theme, bgColor)}\n\n\t/* Optional text color overrides; ONLY applicable\n\tfor background images without a shade/overlay */\n\t${({ textColor, theme, bgImage, bgImageShadeColor }) =>\n\t\ttextColor &&\n\t\tbgImage &&\n\t\t!bgImageShadeColor &&\n\t\t(textColor === 'light'\n\t\t\t? theme.css.getLightText()\n\t\t\t: theme.css.getDarkText())}\n`;\n\n// Ensures:\n// - Absolutely positioned children won't escape component's bounds\n// - Nested BackgroundContainer modules will be layered\n// appropriately with relative z-indexes\n// - Fill available height of container\nexport const Wrapper = styled.div<{\n\tallowChildrenScape?: boolean;\n}>`\n\t${mx.square('100%')}\n\tposition: relative;\n\tz-index: ${props => (props.allowChildrenScape ? 'auto' : '0')};\n\tborder-radius: inherit;\n\n\t&,\n\t${Background as any} {\n\t\theight: 100%;\n\t}\n`;\n","import { isObject } from 'core/utils/object-utils';\n\n/**\n * Core BackgroundContainer component props\n */\nexport interface BackgroundContainerProps {\n\tbgPadding?: string;\n\tbgColor?: string;\n\tbgImage?: string;\n\tbgImageInlineAltText?: string;\n\tbgImageInline?: boolean;\n\tbgImageShadeColor?: string;\n\tbgImageShadeOpacity?: number;\n\tbgImagePosition?: string;\n\ttextColor?: 'light' | 'dark';\n}\n\n/**\n * Map of JSS prop names corresponding to this module,\n * and their component-prop name equivlanets.\n */\nconst JSSpropsMap: { [key: string]: string } = {\n\tbackgroundColour: 'bgColor',\n\t// ! TODO - what about new definitions for these?\n\t// - also can the knobs helper draw from some central/exported definition const here?\n\tBackgroundImage: 'bgImage',\n\tBackgroundImagePosition: 'bgImagePosition',\n\tImageOverlayColour: 'bgImageShadeColor',\n\tOpacity: 'bgImageShadeOpacity',\n\tTextColour: 'textColor',\n};\n\n/**\n * Sitecore format of the BackgroundContainer props, used for\n * extending interfaces of other components. Usage example:\n *\n * \t\timport { JSSprops as IBgProps } from 'pods/theme/components/BackgroundContainer';\n *\n * \t\tinterface IProps {\n * \t\t\tfields: IBGProps & {\n * \t\t\t\t...\n * \t\t\t};\n * \t\t}\n */\nexport interface JSSprops {\n\tbackgroundColour?: {\n\t\tvalue: BackgroundContainerProps['bgColor'];\n\t};\n\tBackgroundImage?: {\n\t\tvalue: {\n\t\t\tsrc: BackgroundContainerProps['bgImage'];\n\t\t};\n\t};\n\tBackgroundImagePosition?: {\n\t\tvalue: BackgroundContainerProps['bgImagePosition'];\n\t};\n\tImageOverlayColour?: {\n\t\tvalue: BackgroundContainerProps['bgImageShadeColor'];\n\t};\n\tOpacity?: {\n\t\tvalue: BackgroundContainerProps['bgImageShadeOpacity'];\n\t};\n\tTextColour?: {\n\t\tvalue: BackgroundContainerProps['textColor'];\n\t};\n}\n\n/**\n * Extracts all relevant BackgroundContainer JSS props\n * from a provided props `fields` object, and returns just those\n * props appropriately renamed from their JSS equivalents.\n *\n * @param {Object} fields - The instigating module's `props.fields` object.\n * @returns {Object} Only relevant BackgroundContainer props, appropriately renamed.\n */\nexport const getBgProps = (fields: JSSprops): BackgroundContainerProps | {} =>\n\tfields\n\t\t? Object.keys(fields).reduce(\n\t\t\t\t(acc: BackgroundContainerProps, key: string) => {\n\t\t\t\t\tconst matchingKey: string = JSSpropsMap[key];\n\t\t\t\t\tconst value = fields?.[key as keyof JSSprops]?.value as any;\n\n\t\t\t\t\tif (matchingKey && value) {\n\t\t\t\t\t\tif (isObject(value)) {\n\t\t\t\t\t\t\t// BackgroundImage has two edge-cases; firstly its value\n\t\t\t\t\t\t\t// is nested inside an object as 'src' which we must account for.\n\t\t\t\t\t\t\t// secondly Sitecore never returns a 'null' image, it will instead\n\t\t\t\t\t\t\t// give us a default image; however we can discern if this is the\n\t\t\t\t\t\t\t// case by checking the adjacent `class` key, if it's === 'scEmptyImage'\n\t\t\t\t\t\t\t// in which case we can override the default image with null.\n\t\t\t\t\t\t\tif (matchingKey === 'bgImage') {\n\t\t\t\t\t\t\t\tacc[matchingKey] =\n\t\t\t\t\t\t\t\t\tvalue?.class === 'scEmptyImage' ? null : value?.src;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tacc[matchingKey as keyof BackgroundContainerProps] =\n\t\t\t\t\t\t\t\ttypeof value === 'string' ? value.toLowerCase() : value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t )\n\t\t: {};\n","// TODO - StyledComponents `theme` provide could negate the necessity of extracting the likes of bgColor from bgProps?\n// -- (and instead have it directly available in the build in `theme` styled component function param?\n\nimport React from 'react';\nimport * as S from './BackgroundContainer.style';\n\nimport { BackgroundContainerProps } from './BackgroundContainer.types';\n\nexport * from './BackgroundContainer.types';\n\nexport interface IProps extends BackgroundContainerProps {\n\tisDefaultModule?: boolean;\n\tchildren?: React.ReactNode;\n\tallowChildrenEscape?: boolean;\n}\n\nconst BackgroundContainer = ({\n\tchildren,\n\tbgImageInline,\n\tbgImageInlineAltText,\n\tallowChildrenEscape,\n\t...props\n}: IProps) => {\n\tconst { bgImage } = props;\n\n\treturn (\n\t\t\n\t\t\t{!!bgImage && bgImageInline ? (\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t{children}\n\t\t\t)}\n\t\t\n\t);\n};\n\nBackgroundContainer.defaultProps = {\n\tbgPadding: '0',\n\tbgImageShadeColor: null,\n\tbgImageShadeOpacity: 0.6,\n\tbgImagePosition: 'center',\n};\n\nexport default BackgroundContainer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ANIMATION_STATE_CLASSES = {\n animating: 'rah-animating',\n animatingUp: 'rah-animating--up',\n animatingDown: 'rah-animating--down',\n animatingToHeightZero: 'rah-animating--to-height-zero',\n animatingToHeightAuto: 'rah-animating--to-height-auto',\n animatingToHeightSpecific: 'rah-animating--to-height-specific',\n static: 'rah-static',\n staticHeightZero: 'rah-static--height-zero',\n staticHeightAuto: 'rah-static--height-auto',\n staticHeightSpecific: 'rah-static--height-specific'\n};\n\nvar PROPS_TO_OMIT = ['animateOpacity', 'animationStateClasses', 'applyInlineTransitions', 'children', 'contentClassName', 'delay', 'duration', 'easing', 'height', 'onAnimationEnd', 'onAnimationStart'];\n\nfunction omit(obj) {\n for (var _len = arguments.length, keys = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n keys[_key - 1] = arguments[_key];\n }\n\n if (!keys.length) {\n return obj;\n }\n\n var res = {};\n var objectKeys = Object.keys(obj);\n\n for (var i = 0; i < objectKeys.length; i++) {\n var key = objectKeys[i];\n\n if (keys.indexOf(key) === -1) {\n res[key] = obj[key];\n }\n }\n\n return res;\n}\n\n// Start animation helper using nested requestAnimationFrames\nfunction startAnimationHelper(callback) {\n var requestAnimationFrameIDs = [];\n\n requestAnimationFrameIDs[0] = requestAnimationFrame(function () {\n requestAnimationFrameIDs[1] = requestAnimationFrame(function () {\n callback();\n });\n });\n\n return requestAnimationFrameIDs;\n}\n\nfunction cancelAnimationFrames(requestAnimationFrameIDs) {\n requestAnimationFrameIDs.forEach(function (id) {\n return cancelAnimationFrame(id);\n });\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction isPercentage(height) {\n // Percentage height\n return typeof height === 'string' && height.search('%') === height.length - 1 && isNumber(height.substr(0, height.length - 1));\n}\n\nfunction runCallback(callback, params) {\n if (callback && typeof callback === 'function') {\n callback(params);\n }\n}\n\nvar AnimateHeight = function (_React$Component) {\n _inherits(AnimateHeight, _React$Component);\n\n function AnimateHeight(props) {\n _classCallCheck(this, AnimateHeight);\n\n var _this = _possibleConstructorReturn(this, (AnimateHeight.__proto__ || Object.getPrototypeOf(AnimateHeight)).call(this, props));\n\n _this.animationFrameIDs = [];\n\n var height = 'auto';\n var overflow = 'visible';\n\n if (isNumber(props.height)) {\n // If value is string \"0\" make sure we convert it to number 0\n height = props.height < 0 || props.height === '0' ? 0 : props.height;\n overflow = 'hidden';\n } else if (isPercentage(props.height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n height = props.height === '0%' ? 0 : props.height;\n overflow = 'hidden';\n }\n\n _this.animationStateClasses = _extends({}, ANIMATION_STATE_CLASSES, props.animationStateClasses);\n\n var animationStateClasses = _this.getStaticStateClasses(height);\n\n _this.state = {\n animationStateClasses: animationStateClasses,\n height: height,\n overflow: overflow,\n shouldUseTransitions: false\n };\n return _this;\n }\n\n _createClass(AnimateHeight, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var height = this.state.height;\n\n // Hide content if height is 0 (to prevent tabbing into it)\n // Check for contentElement is added cause this would fail in tests (react-test-renderer)\n // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n\n if (this.contentElement && this.contentElement.style) {\n this.hideContent(height);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _props = this.props,\n delay = _props.delay,\n duration = _props.duration,\n height = _props.height,\n onAnimationEnd = _props.onAnimationEnd,\n onAnimationStart = _props.onAnimationStart;\n\n // Check if 'height' prop has changed\n\n if (this.contentElement && height !== prevProps.height) {\n var _cx;\n\n // Remove display: none from the content div\n // if it was hidden to prevent tabbing into it\n this.showContent(prevState.height);\n\n // Cache content height\n this.contentElement.style.overflow = 'hidden';\n var contentHeight = this.contentElement.offsetHeight;\n this.contentElement.style.overflow = '';\n\n // set total animation time\n var totalDuration = duration + delay;\n\n var newHeight = null;\n var timeoutState = {\n height: null, // it will be always set to either 'auto' or specific number\n overflow: 'hidden'\n };\n var isCurrentHeightAuto = prevState.height === 'auto';\n\n if (isNumber(height)) {\n // If value is string \"0\" make sure we convert it to number 0\n newHeight = height < 0 || height === '0' ? 0 : height;\n timeoutState.height = newHeight;\n } else if (isPercentage(height)) {\n // If value is string \"0%\" make sure we convert it to number 0\n newHeight = height === '0%' ? 0 : height;\n timeoutState.height = newHeight;\n } else {\n // If not, animate to content height\n // and then reset to auto\n newHeight = contentHeight; // TODO solve contentHeight = 0\n timeoutState.height = 'auto';\n timeoutState.overflow = null;\n }\n\n if (isCurrentHeightAuto) {\n // This is the height to be animated to\n timeoutState.height = newHeight;\n\n // If previous height was 'auto'\n // set starting height explicitly to be able to use transition\n newHeight = contentHeight;\n }\n\n // Animation classes\n var animationStateClasses = (0, _classnames2.default)((_cx = {}, _defineProperty(_cx, this.animationStateClasses.animating, true), _defineProperty(_cx, this.animationStateClasses.animatingUp, prevProps.height === 'auto' || height < prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingDown, height === 'auto' || height > prevProps.height), _defineProperty(_cx, this.animationStateClasses.animatingToHeightZero, timeoutState.height === 0), _defineProperty(_cx, this.animationStateClasses.animatingToHeightAuto, timeoutState.height === 'auto'), _defineProperty(_cx, this.animationStateClasses.animatingToHeightSpecific, timeoutState.height > 0), _cx));\n\n // Animation classes to be put after animation is complete\n var timeoutAnimationStateClasses = this.getStaticStateClasses(timeoutState.height);\n\n // Set starting height and animating classes\n // We are safe to call set state as it will not trigger infinite loop\n // because of the \"height !== prevProps.height\" check\n this.setState({ // eslint-disable-line react/no-did-update-set-state\n animationStateClasses: animationStateClasses,\n height: newHeight,\n overflow: 'hidden',\n // When animating from 'auto' we first need to set fixed height\n // that change should be animated\n shouldUseTransitions: !isCurrentHeightAuto\n });\n\n // Clear timeouts\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n if (isCurrentHeightAuto) {\n // When animating from 'auto' we use a short timeout to start animation\n // after setting fixed height above\n timeoutState.shouldUseTransitions = true;\n\n cancelAnimationFrames(this.animationFrameIDs);\n this.animationFrameIDs = startAnimationHelper(function () {\n _this2.setState(timeoutState);\n\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: timeoutState.height });\n });\n\n // Set static classes and remove transitions when animation ends\n this.animationClassesTimeoutID = setTimeout(function () {\n _this2.setState({\n animationStateClasses: timeoutAnimationStateClasses,\n shouldUseTransitions: false\n });\n\n // ANIMATION ENDS\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(timeoutState.height);\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: timeoutState.height });\n }, totalDuration);\n } else {\n // ANIMATION STARTS, run a callback if it exists\n runCallback(onAnimationStart, { newHeight: newHeight });\n\n // Set end height, classes and remove transitions when animation is complete\n this.timeoutID = setTimeout(function () {\n timeoutState.animationStateClasses = timeoutAnimationStateClasses;\n timeoutState.shouldUseTransitions = false;\n\n _this2.setState(timeoutState);\n\n // ANIMATION ENDS\n // If height is auto, don't hide the content\n // (case when element is empty, therefore height is 0)\n if (height !== 'auto') {\n // Hide content if height is 0 (to prevent tabbing into it)\n _this2.hideContent(newHeight); // TODO solve newHeight = 0\n }\n // Run a callback if it exists\n runCallback(onAnimationEnd, { newHeight: newHeight });\n }, totalDuration);\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n cancelAnimationFrames(this.animationFrameIDs);\n\n clearTimeout(this.timeoutID);\n clearTimeout(this.animationClassesTimeoutID);\n\n this.timeoutID = null;\n this.animationClassesTimeoutID = null;\n this.animationStateClasses = null;\n }\n }, {\n key: 'showContent',\n value: function showContent(height) {\n if (height === 0) {\n this.contentElement.style.display = '';\n }\n }\n }, {\n key: 'hideContent',\n value: function hideContent(newHeight) {\n if (newHeight === 0) {\n this.contentElement.style.display = 'none';\n }\n }\n }, {\n key: 'getStaticStateClasses',\n value: function getStaticStateClasses(height) {\n var _cx2;\n\n return (0, _classnames2.default)((_cx2 = {}, _defineProperty(_cx2, this.animationStateClasses.static, true), _defineProperty(_cx2, this.animationStateClasses.staticHeightZero, height === 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightSpecific, height > 0), _defineProperty(_cx2, this.animationStateClasses.staticHeightAuto, height === 'auto'), _cx2));\n }\n }, {\n key: 'render',\n value: function render() {\n var _cx3,\n _this3 = this;\n\n var _props2 = this.props,\n animateOpacity = _props2.animateOpacity,\n applyInlineTransitions = _props2.applyInlineTransitions,\n children = _props2.children,\n className = _props2.className,\n contentClassName = _props2.contentClassName,\n delay = _props2.delay,\n duration = _props2.duration,\n easing = _props2.easing,\n id = _props2.id,\n style = _props2.style;\n var _state = this.state,\n height = _state.height,\n overflow = _state.overflow,\n animationStateClasses = _state.animationStateClasses,\n shouldUseTransitions = _state.shouldUseTransitions;\n\n\n var componentStyle = _extends({}, style, {\n height: height,\n overflow: overflow || style.overflow\n });\n\n if (shouldUseTransitions && applyInlineTransitions) {\n componentStyle.transition = 'height ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n\n // Include transition passed through styles\n if (style.transition) {\n componentStyle.transition = style.transition + ', ' + componentStyle.transition;\n }\n\n // Add webkit vendor prefix still used by opera, blackberry...\n componentStyle.WebkitTransition = componentStyle.transition;\n }\n\n var contentStyle = {};\n\n if (animateOpacity) {\n contentStyle.transition = 'opacity ' + duration + 'ms ' + easing + ' ' + delay + 'ms';\n // Add webkit vendor prefix still used by opera, blackberry...\n contentStyle.WebkitTransition = contentStyle.transition;\n\n if (height === 0) {\n contentStyle.opacity = 0;\n }\n }\n\n var componentClasses = (0, _classnames2.default)((_cx3 = {}, _defineProperty(_cx3, animationStateClasses, true), _defineProperty(_cx3, className, className), _cx3));\n\n // Check if user passed aria-hidden prop\n var hasAriaHiddenProp = typeof this.props['aria-hidden'] !== 'undefined';\n var ariaHidden = hasAriaHiddenProp ? this.props['aria-hidden'] : height === 0;\n\n return _react2.default.createElement(\n 'div',\n _extends({}, omit.apply(undefined, [this.props].concat(PROPS_TO_OMIT)), {\n 'aria-hidden': ariaHidden,\n className: componentClasses,\n id: id,\n style: componentStyle\n }),\n _react2.default.createElement(\n 'div',\n {\n className: contentClassName,\n style: contentStyle,\n ref: function ref(el) {\n return _this3.contentElement = el;\n }\n },\n children\n )\n );\n }\n }]);\n\n return AnimateHeight;\n}(_react2.default.Component);\n\nvar heightPropType = function heightPropType(props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value === 'number' && value >= 0 || isPercentage(value) || value === 'auto') {\n return null;\n }\n\n return new TypeError('value \"' + value + '\" of type \"' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '\" is invalid type for ' + propName + ' in ' + componentName + '. ' + 'It needs to be a positive number, string \"auto\" or percentage string (e.g. \"15%\").');\n};\n\nAnimateHeight.propTypes = {\n 'aria-hidden': _propTypes2.default.bool,\n animateOpacity: _propTypes2.default.bool,\n animationStateClasses: _propTypes2.default.object,\n applyInlineTransitions: _propTypes2.default.bool,\n children: _propTypes2.default.any.isRequired,\n className: _propTypes2.default.string,\n contentClassName: _propTypes2.default.string,\n delay: _propTypes2.default.number,\n duration: _propTypes2.default.number,\n easing: _propTypes2.default.string,\n height: heightPropType,\n id: _propTypes2.default.string,\n onAnimationEnd: _propTypes2.default.func,\n onAnimationStart: _propTypes2.default.func,\n style: _propTypes2.default.object\n};\n\nAnimateHeight.defaultProps = {\n animateOpacity: false,\n animationStateClasses: ANIMATION_STATE_CLASSES,\n applyInlineTransitions: true,\n duration: 250,\n delay: 0,\n easing: 'ease',\n style: {}\n};\n\nexports.default = AnimateHeight;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/* stylelint-disable selector-type-case */\n/* stylelint-disable selector-type-no-unknown */\n\nimport styled, { css } from 'styled-components';\nimport { FONT_NAMES, FONT_WEIGHT } from 'core/styles/fonts';\n\nimport * as mx from 'core/styles/mixins';\nimport { CTA_CLASS } from 'core/components/Cta/Cta.style';\n\nconst CONTENT_IMAGE_PADDING = 32;\n\nexport const ImageBlock = styled.div<{\n\tisDashboardModule: boolean;\n}>`\n\twidth: 100%;\n\tz-index: 0;\n\n\tdiv {\n\t\t${({ isDashboardModule }) =>\n\t\t\tisDashboardModule &&\n\t\t\tcss`\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 100%;\n\t\t\t`}\n\t}\n\n\t${({ isDashboardModule }) =>\n\t\tisDashboardModule &&\n\t\tcss`\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tobject-fit: cover;\n\t\t\t\tobject-position: 100% 0;\n\t\t\t}\n\t\t`}\n`;\n\nexport const TextBlock = styled.div`\n\twidth: 100%;\n\tz-index: 1;\n\tfont-size: 16px;\n\th3 {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: ${FONT_WEIGHT.BOOK};\n\t\tfont-family: ${FONT_NAMES.GOTHAM_ROUNDED_BOOKED};\n\t}\n`;\n\nexport const NotificationBlock = styled.div<{ alignTop: boolean }>`\n\twidth: 100%;\n\tz-index: 1;\n\n\t${({ alignTop }) =>\n\t\talignTop\n\t\t\t? css`\n\t\t\t\t\tmargin-bottom: 24px;\n\t\t\t\t\tmargin-top: 0;\n\t\t\t\t\torder: 0;\n\t\t\t `\n\t\t\t: css`\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t\tmargin-top: 24px;\n\t\t\t\t\torder: 3;\n\t\t\t `}\n`;\n\nexport const Text = styled.div<{ isDashboardModule: boolean }>`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\n\t${({ isDashboardModule }) =>\n\t\tisDashboardModule &&\n\t\tcss`\n\t\t\tpadding: 48px 24px 0px;\n\t\t`}\n`;\n\nexport const CtaWrapper = styled.div<{\n\tisDashboardModule: boolean;\n}>`\n\t${({ isDashboardModule }) =>\n\t\tisDashboardModule\n\t\t\t? css`\n\t\t\t\t\tpadding: 4px 0 0;\n\t\t\t `\n\t\t\t: css`\n\t\t\t\t\tpadding: 20px 0 0;\n\t\t\t `}\n\tdisplay: flex;\n\tjustify-content: space-between;\n\n\t.${CTA_CLASS} {\n\t\tmargin: 0;\n\n\t\t&.cta-plain a {\n\t\t\tpadding-left: 14px;\n\t\t\tpadding-right: 14px;\n\t\t}\n\t}\n`;\n\nexport const SecondaryCtaWrapper = styled.div`\n\tmargin-left: auto;\n`;\n\nexport const ContentBlock = styled.div<{\n\timageAlignRight: boolean;\n\thasImage: boolean;\n\tbpName: string;\n\tisImageCircle: boolean;\n\tisContentCentered: boolean;\n\tisDashboardModule: boolean;\n}>`\n\tdisplay: flex;\n\tflex-flow: row wrap;\n\n\t${({\n\t\thasImage,\n\t\tbpName,\n\t\timageAlignRight,\n\t\tisImageCircle,\n\t\tisContentCentered,\n\t\tisDashboardModule,\n\t}) =>\n\t\thasImage &&\n\t\tcss`\n\t\t\t${isDashboardModule &&\n\t\t\t\tcss`\n\t\t\t\t\tmin-height: 517px;\n\t\t\t\t\theight: inherit;\n\t\t\t\t`}\n\t\t\t${ImageBlock} {\n\t\t\t\torder: 2;\n\t\t\t\tmargin-top: ${CONTENT_IMAGE_PADDING}px;\n\t\t\t\t${isDashboardModule &&\n\t\t\t\t\tcss`\n\t\t\t\t\t\tmin-height: 186px;\n\t\t\t\t\t`}\n\t\t\t}\n\t\t\t${TextBlock} {\n\t\t\t\torder: 1;\n\t\t\t}\n\t\t\t${isContentCentered &&\n\t\t\t\tcss`\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tbox-sizing: content-box;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\n\t\t\t\t\t${CtaWrapper} {\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t}\n\t\t\t\t\t${ImageBlock} {\n\t\t\t\t\t\torder: 1;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t}\n\t\t\t\t\t${TextBlock} {\n\t\t\t\t\t\torder: 2;\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t\t${isImageCircle &&\n\t\t\t\tcss`\n\t\t\t\t\timg {\n\t\t\t\t\t\t${mx.circle('160px')}\n\t\t\t\t\t}\n\n\t\t\t\t\t${!isContentCentered &&\n\t\t\t\t\t\tcss`\n\t\t\t\t\t\t\t${ImageBlock} {\n\t\t\t\t\t\t\t\tflex: 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t${TextBlock} {\n\t\t\t\t\t\t\t\tflex: 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`}\n\t\t\t\t`}\n\n\t\t\t${mx.bpc('m', bpName)`\n\t\t\t\t${ImageBlock} {\n\t\t\t\t\torder: ${imageAlignRight ? 2 : 1};\n\t\t\t\t}\n\t\t\t\t${TextBlock} {\n\t\t\t\t\torder: ${imageAlignRight ? 1 : 2};\n\t\t\t\t}\n\t\t\t\t${ImageBlock},\n\t\t\t\t${TextBlock} {\n\t\t\t\t\twidth: 50%;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t}\n\n\t\t\t\t${imageAlignRight ? ImageBlock : TextBlock} {\n\t\t\t\t\tpadding-left: ${CONTENT_IMAGE_PADDING / 2}px;\n\t\t\t\t}\n\n\t\t\t\t${imageAlignRight ? TextBlock : ImageBlock} {\n\t\t\t\t\tpadding-right: ${CONTENT_IMAGE_PADDING / 2}px;\n\t\t\t\t}\n\t\t\t`}\n\t\t`}\n`;\n\nexport const Hr = styled.div`\n\tbackground-color: ${({ theme }) => theme.global.borders.module};\n\theight: 1px;\n\twidth: calc(100% + 50px);\n\tmargin-left: -25px;\n`;\n","/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/camelcase */\n\nimport React from 'react';\nimport { withTheme } from 'styled-components';\nimport { BreakpointContainer } from '@deloitte-digital-au/dd-breakpoint-container';\n\nimport Image from 'core/sitecore/jss-proxy-components/JssImage';\nimport { IThemeObject } from 'pods/theme';\nimport Cta from 'core/components/Cta';\nimport CtaContainer from 'core/components/CtaContainer';\nimport Card from 'core/components/Card';\nimport {\n\tgetBgProps,\n\tJSSprops as IBgProps,\n} from 'pods/theme/components/BackgroundContainer';\nimport InlineNotification from 'core/components/InlineNotification';\nimport * as Typo from 'core/styles/Typography';\nimport { useAppContext, useTrackEvent, useModal } from 'core/hooks';\n\nimport {\n\tJssLinkType,\n\tgetMessageByCode,\n\tgetFormattedRichTextWithImage,\n\tJssTextType,\n} from 'core/utils/sitecore-utils';\nimport { ERROR_CODES } from 'core/constants';\nimport TrackLinksWithin from 'core/analytics/TrackLinksWithin';\n\nimport { IFields } from './ContentBlock.sitecore';\nimport * as S from './ContentBlock.style';\n\ninterface IProps extends IFields {\n\ttheme: IThemeObject;\n\tfields: IBgProps & IFields;\n}\n\nconst ContentBlock = ({ fields, theme }: IProps) => {\n\tconst {\n\t\tImage: image,\n\t\tdescription,\n\t\theading: title,\n\t\tctaButton,\n\t\tctaRightButton,\n\t} = fields;\n\tconst isSecondary = fields?.secondaryButtonStyle?.value ?? false;\n\tconst imageAlignRight = fields?.imageAlignRight?.value ?? false;\n\tconst hasImage = !!image?.value?.src;\n\tconst hasButtons = !!ctaButton || !!ctaRightButton;\n\tconst hasCtaDivider = (fields?.hasCtaDivider?.value ?? false) && hasButtons;\n\tconst isDashboardModule = fields?.isDashboardModule?.value ?? false;\n\tconst isImageCircle = fields?.isImageCircle?.value ?? false;\n\tconst isContentCentered = fields?.isContentCentered?.value ?? false;\n\tconst hasApiCall = fields?.hasApiCall?.value ?? false;\n\n\tconst bgProps = getBgProps(fields);\n\n\tconst {\n\t\ttalSsoUrl,\n\t\tisTalSsoUrlLoading,\n\t\thandleTriggerTalSsoUrl,\n\t\ttalSsoError,\n\t\thandleSetNotification: setNotification,\n\t} = useAppContext();\n\n\t/**\n\t * A function to handle dynamic Typography for heading sitecore field\n\t * This is for Dashboard VS other modules that might consume content block module.\n\t */\n\tconst displayTitle = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t>\n\t\t);\n\t};\n\t// Analytics spreadsheet:\n\t// - Section: 'Modules'\n\t// - ID: 2.2.g\n\tconst { trackEvent } = useTrackEvent({\n\t\tevent_section: 'modules',\n\t\tevent_type: 'content block',\n\t\tevent_title: title?.value?.toLowerCase(),\n\t});\n\n\t// Start of hasApiCall\n\tconst [Modal, toggleModal] = useModal();\n\n\tconst [goToTalSsoCtaBtn, setGoToTalSsoCtaBtn] = React.useState<\n\t\tJssLinkType | undefined\n\t>();\n\n\tReact.useEffect(() => {\n\t\tif (!!talSsoUrl) {\n\t\t\tsetNotification(null);\n\t\t\tsetGoToTalSsoCtaBtn({\n\t\t\t\tvalue: {\n\t\t\t\t\ttext: fields?.talSSODsmModalCtaBtn?.value?.text ?? '',\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\thref: talSsoUrl ?? 'javascript:void(0);',\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}, [talSsoUrl]);\n\n\tReact.useEffect(() => {\n\t\tif (!!goToTalSsoCtaBtn) {\n\t\t\ttoggleModal(true);\n\t\t}\n\t}, [goToTalSsoCtaBtn]);\n\n\tReact.useEffect(() => {\n\t\t// show error message when tal-sso failed\n\t\tif (!!talSsoError) {\n\t\t\tsetNotification(null);\n\n\t\t\tconst E72 = getMessageByCode(\n\t\t\t\tERROR_CODES.TAL_SSO_NOT_AVAILABLE,\n\t\t\t\tfields.errorMessages,\n\t\t\t\t'errorMessage',\n\t\t\t);\n\n\t\t\tsetNotification({\n\t\t\t\tcontent: E72,\n\t\t\t\ttype: 'error',\n\t\t\t});\n\n\t\t\twindow.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t}\n\t}, [talSsoError]);\n\n\t/**\n\t * @note This is to handle any callbacks for API's\n\t * For now only TAL is using it\n\t */\n\tconst hasApiCallHandler = () => {\n\t\thandleTriggerTalSsoUrl(true);\n\t};\n\n\t// End of hasApiCall\n\n\treturn (\n\t\t\n\t\t\t{(bpName: string) => (\n\t\t\t\t\n\t\t\t\t\t{hasApiCall && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{fields?.talSSODsmModalCtaBtn?.value?.text}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\t{!!fields?.notificationContent?.value && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{hasImage && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{displayTitle()}\n\t\t\t\t\t\t\t\t{description && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_label: text?.toLowerCase(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_url: link,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{hasCtaDivider && }\n\n\t\t\t\t\t\t\t\t{hasButtons && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{!!ctaButton?.value?.text && (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\thasApiCallHandler();\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t\t\t\t\t\t\t\t\t\t// - Section: 'Modules'\n\t\t\t\t\t\t\t\t\t\t\t\t\t// - ID: 2.2.g\n\t\t\t\t\t\t\t\t\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_label: ctaButton.value?.text.toLowerCase(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_trigger: 'click button',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_url: ctaButton.value?.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t\t\t\t * Note: If there will be other scenarios like this for the ContentBlock\n\t\t\t\t\t\t\t\t\t\t\t\t * then we should refactor isLoadingState to only cater for a particular API\n\t\t\t\t\t\t\t\t\t\t\t\t * and not directly on TAL if there is an API call\n\t\t\t\t\t\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t\t\t\t\t\t * e.g. {hasApiCall ? (api0 || api1) : false}\n\t\t\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t\t\tisLoading={hasApiCall ? isTalSsoUrlLoading : false}\n\t\t\t\t\t\t\t\t\t\t\t\tisDisabled={hasApiCall ? isTalSsoUrlLoading : false}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{hasApiCall ? ctaButton?.value?.text : undefined}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!ctaRightButton?.value?.text && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// - Section: 'Modules'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// - ID: 2.2.g\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_label: ctaRightButton.value?.text.toLowerCase(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_trigger: 'click button',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_url: ctaRightButton.value?.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default withTheme(ContentBlock);\n","import * as React from 'react';\nimport { generateUID } from \"./uid\";\nexport var createSource = function (prefix) {\n if (prefix === void 0) { prefix = ''; }\n return ({\n value: 1,\n prefix: prefix,\n uid: generateUID()\n });\n};\nexport var counter = createSource();\nexport var source = React.createContext(createSource());\nexport var lastUsed = React.createContext(\"\");\nexport var getId = function (source) { return source.value++; };\nexport var getPrefix = function (source) { return source ? source.prefix : ''; };\n","import * as React from \"react\";\nimport { counter, getId, getPrefix, source } from \"./context\";\nvar generateUID = function (context) {\n var quartz = context || counter;\n var prefix = getPrefix(quartz);\n var id = getId(quartz);\n var uid = prefix + id;\n var gen = function (item) { return uid + quartz.uid(item); };\n return { uid: uid, gen: gen };\n};\nvar useUIDState = function () {\n if (process.env.NODE_ENV !== \"production\") {\n if (!('useContext' in React)) {\n throw new Error('Hooks API requires React 16.7+');\n }\n }\n return React.useState(generateUID(React.useContext(source)));\n};\nexport var useUID = function () {\n var uid = useUIDState()[0].uid;\n return uid;\n};\nexport var useUIDSeed = function () {\n var gen = useUIDState()[0].gen;\n return gen;\n};\n"],"sourceRoot":""}