{"version":3,"sources":["../../../../../src/components/MultistepButtons/MultistepButtons.tsx","../../../../../src/components/MultistepButtons/MultistepButtons.style.tsx","../../../../../src/components/ErrorScreen/BaseErrorScreen.tsx","../../../../src/hocs/withScrollError.tsx","../../../../src/util/AnalyticsService.ts","../../../../src/util/TestUtils.ts","serviceWorker.ts","util/Statics.tsx","components/styles/contentAggregator.style.tsx","util/BlogsUtil.ts","components/filter/Filter.tsx","hooks/useBlogList.tsx","hooks/useBlogTags.tsx","components/content/FeatureCard.tsx","components/content/StandardCard.tsx","containers/SummaryContainer.tsx","components/error/ErrorScreen.tsx","components/error/ErrorBoundary.tsx","containers/TeaserContainer.tsx","App.tsx","index.tsx","../../../../src/hocs/withScrollLoad.tsx","../../../src/index.ts"],"names":["Boolean","window","location","hostname","match","Statics","summaryInit","summaryMore","teasers","mlc","plum","mlcam","mlcsecure","antares","content","noContent","aemFetchFailure","csvFetchFailure","csvMultiMatchFound","csvNoMatchFound","summaryNoContent","teaserNoContent","timeToRead","timeToWatch","topic","id","label","placeHolder","mlcTheme","colour","brandPrimary","body","background","ctaBackground","blogDetailTitle","brandPrimaryHover","buttonHoverText","breadcrumb","cardBorder","tableBorder","fonts","medium","regular","bold","light","wrapper","leftPaddingLarge","leftPaddingMedium","fieldWrapper","labelFontWeight","antaresTheme","plumTheme","mlcamTheme","ContentAggregatorThemeProvider","props","theme","contentAggregator","children","PageWrapperContentAggregator","styled","div","StyledLink","a","StyledFeatureCard","StyledStandardCard","StyledBlogCategory","StyledBlogShortDescription","StyledBlogTimeToRead","StyledShowMoreButton","StyledBlogTitle","StyledTopicHeading","StyledFieldWrapper","BlogsUtil","getTheme","brand","getQueryString","limit","offset","queryString","isEmpty","split","map","item","encodeURIComponent","join","encodeWithoutSlash","dateFormat","dateString","destFormat","formattedDate","format","Date","ListActionKind","Filter","dataTag","applyFilter","topicFilter","topicHeadline","filter","value","xl","lg","md","sm","xs","placeholder","name","onChange","event","target","options","data-id","listReducer","state","action","type","payload","UPDATE","blogs","useBlogList","process","siteSection","useState","errorList","setErrorList","loadingList","setLoadingList","useReducer","dataList","dispatch","isEmptyPage","setIsEmptyPage","insightsUrl","insightsByTopicUrl","getUrls","setState","url","qs","toString","useEffect","AuthFetch","get","then","dataObj","data","insightsList","items","length","err","Error","catch","e","useBlogTags","errorTag","setErrorTag","loadingTag","setLoadingTag","setDataTag","tagPrefix","getBlogTags","tagInfo","Object","keys","key","o","undefined","FeatureCard","blog","href","pageReference","_path","featureImage","src","alt","title","effectiveDate","dangerouslySetInnerHTML","__html","shortDescription","media","symbol","play","clock","StandardCard","className","SummaryContainer","setTopicFilter","setOffset","setLimit","showForm","fullPage","isMore","divRef","useRef","current","scrollIntoView","getElementsByTagName","focus","Fragment","topicPath","index","cards","toIndex","numMorePages","Math","ceil","focusIndex","i","push","ref","renderColumns","onClick","chevronDownSolid","ErrorScreen","text","code","heading","paragraph","ErrorBoundary","hasError","errorMsg","error","errorInfo","this","message","React","Component","TeaserContainer","topicTag","forEach","blogPath","slice","pathname","splice","console","log","App","formConfigProps","themeName","mode","defaultProps","ReactWebComponent","getAppConfig","getAttribute","JSON","parse","x","warn","appConfig","applicationConfig","ReactDOM","HTMLElement","customElements","define","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.82c8aee5.chunk.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultistepButtons = void 0;\nconst tslib_1 = require(\"tslib\");\nconst react_1 = tslib_1.__importDefault(require(\"react\"));\nconst web_ui_toolkit_1 = require(\"@mlc/web-ui-toolkit\");\nconst MultistepButtons_style_1 = require(\"./MultistepButtons.style\");\nconst symbols_1 = require(\"@mlc/symbols\");\nconst lodash_1 = require(\"lodash\");\nconst Statics = {\n backButtonLabelDefault: 'Back',\n nextButtonLabelDefault: 'Next'\n};\nconst getAriaLabelProp = (defaultLabel, buttonLabel, ariaLabel) => {\n // Return aria-label if there is no button text.\n if (!lodash_1.isEmpty(ariaLabel)) {\n if (!lodash_1.isEmpty(buttonLabel)) {\n return { 'aria-labelledby': ariaLabel };\n }\n else {\n return { 'aria-label': ariaLabel };\n }\n }\n else if (lodash_1.isEmpty(buttonLabel)) {\n return { 'aria-label': defaultLabel };\n }\n return {};\n};\nconst Next = (nextProps) => {\n const buttonLabel = !lodash_1.isUndefined(nextProps.buttonLabel) ? nextProps.buttonLabel : Statics.nextButtonLabelDefault;\n const ariaLabelProp = getAriaLabelProp(Statics.nextButtonLabelDefault, buttonLabel, nextProps.ariaLabel);\n return (react_1.default.createElement(web_ui_toolkit_1.PrimaryButton, Object.assign({ type: \"submit\", isLoading: nextProps.isLoading }, nextProps.testIdProp, ariaLabelProp),\n buttonLabel,\n nextProps.showSvg && react_1.default.createElement(web_ui_toolkit_1.Svg, { symbol: symbols_1.chevronRight, verticalAlign: \"text-top\", marginLeft: 2 })));\n};\nconst Back = (backProps) => {\n const buttonLabel = !lodash_1.isUndefined(backProps.buttonLabel) ? backProps.buttonLabel : Statics.backButtonLabelDefault;\n const ariaLabelProp = getAriaLabelProp(Statics.backButtonLabelDefault, backProps.buttonLabel, backProps.ariaLabel);\n return (react_1.default.createElement(web_ui_toolkit_1.SecondaryButton, Object.assign({ type: \"button\", onClick: backProps.onClick }, backProps.testIdProp, ariaLabelProp),\n backProps.showSvg && react_1.default.createElement(web_ui_toolkit_1.Svg, { symbol: symbols_1.chevronLeft, verticalAlign: \"text-top\", marginRight: 2 }),\n buttonLabel));\n};\nexports.MultistepButtons = ({ backFunction, isLoading, nextButtonLabel, backButtonLabel, nextButtonAriaLabel, backButtonAriaLabel, nextShowSvg, backShowSvg, nextTestId, backTestId }) => (react_1.default.createElement(MultistepButtons_style_1.MultistepButtonGroup, null,\n react_1.default.createElement(Next, { isLoading: isLoading || false, ariaLabel: nextButtonAriaLabel, showSvg: !lodash_1.isUndefined(nextShowSvg) ? nextShowSvg : true, buttonLabel: nextButtonLabel, testIdProp: !lodash_1.isEmpty(nextTestId) ? { 'data-testid': nextTestId } : {} }),\n backFunction && react_1.default.createElement(Back, { onClick: backFunction, ariaLabel: backButtonAriaLabel, showSvg: !lodash_1.isUndefined(backShowSvg) ? backShowSvg : true, buttonLabel: backButtonLabel, testIdProp: !lodash_1.isEmpty(backTestId) ? { 'data-testid': backTestId } : {} })));\n//# sourceMappingURL=MultistepButtons.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultistepButtonGroup = void 0;\nconst tslib_1 = require(\"tslib\");\nconst styled_components_1 = tslib_1.__importDefault(require(\"styled-components\"));\nexports.MultistepButtonGroup = styled_components_1.default.div `\n\tmax-width: 100%;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tmargin-bottom: 0;\n\tbutton:not(:last-child) {\n\t\tmargin-bottom: 20px;\n\t}\n\n\t@media screen and (min-width: 768px) {\n\t\tjustify-content: space-between;\n\t\tflex-direction: row-reverse;\n\n\t\tbutton {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n`;\n//# sourceMappingURL=MultistepButtons.style.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseErrorScreen = void 0;\nconst tslib_1 = require(\"tslib\");\nconst web_ui_toolkit_1 = require(\"@mlc/web-ui-toolkit\");\nconst symbols_1 = require(\"@mlc/symbols\");\nconst React = tslib_1.__importStar(require(\"react\"));\nconst styled_components_1 = tslib_1.__importDefault(require(\"styled-components\"));\nconst withScrollLoad_1 = require(\"../../hocs/withScrollLoad\");\nconst StyledDiv = styled_components_1.default.div `\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\ttext-align: center;\n\tpadding-top: 60px;\n\t\n\tspan {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tcolor: #161818;\n\t\tmargin-bottom: 20px;\n\t}\n\t\n\th2 {\n\t\tmargin-top: 30px;\n\t\tmargin-bottom: 20px;\n\t}\n\t\n\t@media screen and (min-wdith: 768px) and (max-width: 991px) {\n\t\tpadding-top: 40px;\n\t}\n\t\n\t@media screen (max-width: 767px) {\n\t\tpadding-top: 40px;\n\t\tpadding-bottom: 30px;\n\t\tpadding-left: 30px;\n\t\tpadding-right: 30px;\n\t}\n`;\nconst ErrorMessage = props => (React.createElement(\"div\", { style: { height: '55vh' } },\n React.createElement(React.Fragment, null,\n React.createElement(StyledDiv, null,\n React.createElement(web_ui_toolkit_1.Svg, { symbol: symbols_1.moneyBag, height: \"48px\", width: \"48px\" }),\n React.createElement(web_ui_toolkit_1.Heading, { el: \"h2\" }, props.heading),\n props.text && React.createElement(web_ui_toolkit_1.Text, null, props.text),\n props.paragraph && React.createElement(web_ui_toolkit_1.Paragraph, null, props.paragraph)))));\nexports.BaseErrorScreen = withScrollLoad_1.withScrollLoad(ErrorMessage);\n//# sourceMappingURL=BaseErrorScreen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withScrollError = void 0;\nconst tslib_1 = require(\"tslib\");\nconst React = tslib_1.__importStar(require(\"react\"));\n/*\n withScrollError is an HOC that will cause the wrapped\n component to scroll to the first formik error on the page\n when the component has finished validation and is submitting\n*/\nexports.withScrollError = (WrappedComponent, props) => {\n return class ErrorSpy extends React.Component {\n constructor() {\n super(props);\n // smooth scrolls to element\n this.scrollElement = function (element) {\n const pos = element.getBoundingClientRect().top - 120;\n window.scrollBy(0, pos);\n element.focus({ preventScroll: true });\n return element;\n };\n // prevents excessive calls to function\n this.debounce = (fn, time) => {\n let timeout;\n return function () {\n const functionCall = () => fn.apply(this, arguments);\n clearTimeout(timeout);\n timeout = setTimeout(functionCall, time);\n };\n };\n // debounces scrollElement\n this.dbScrollElement = this.debounce(this.scrollElement, 300);\n this.wrappedRef = React.createRef();\n }\n // validate selector during recursion\n isObject(value) {\n return value && typeof value === 'object' && value.constructor === Object;\n }\n componentDidUpdate(prevProps) {\n const { isSubmitting, isValidating, errors } = prevProps;\n if (isSubmitting && !isValidating) {\n const errorKeys = Object.keys(errors);\n // given an error and attempted submit and finished validation\n if (errorKeys.length > 0) {\n const form = this.wrappedRef.current;\n // get first error\n const selector = `[aria-invalid=\"true\"]`;\n const errorElement = form.querySelector(selector);\n if (errorElement) {\n // scroll to error\n this.dbScrollElement(errorElement);\n }\n }\n }\n }\n render() {\n return React.createElement(WrappedComponent, Object.assign({ forwardRef: this.wrappedRef }, this.props));\n }\n };\n};\n//# sourceMappingURL=withScrollError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnalyticsService = void 0;\nclass AnalyticsService {\n}\nexports.AnalyticsService = AnalyticsService;\n/** Usage: {...AnalyticsService.VALUE_CAPTURE_TAG}\n * Applying this will make Ensighten tag capture the value for the required field. Only add it to */\nAnalyticsService.VALUE_CAPTURE_TAG = {\n 'data-analytics-capture-value': true\n};\n/** Usage: {...AnalyticsService.stepTag(1, 5)} or {...AnalyticsService.stepTag(null, null, 'MyStep')}\n * Applying this will ensure Ensighten has the info to report on the step name. */\nAnalyticsService.stepTag = (step, totalSteps, stepName) => {\n let stepLabel = {};\n if (stepName !== undefined && stepName !== '') {\n stepLabel = { 'data-analytics-step': `${stepName}` };\n }\n else if (step !== null && totalSteps !== null) {\n stepLabel = { 'data-analytics-step': `Step ${step} of ${totalSteps}` };\n }\n return stepLabel;\n};\n//# sourceMappingURL=AnalyticsService.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateString = exports.getMockFetchPromise = void 0;\nfunction getMockFetchPromise(ok, status, payload) {\n const mockJsonPromise = Promise.resolve(payload);\n return Promise.resolve({\n ok: ok,\n status: status,\n json: () => mockJsonPromise,\n text: () => mockJsonPromise,\n });\n}\nexports.getMockFetchPromise = getMockFetchPromise;\nfunction generateString(length) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nexports.generateString = generateString;\n//# sourceMappingURL=TestUtils.js.map","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","export const Statics = {\n pageLimit: {\n summaryInit: 5,\n summaryMore: 4,\n teasers: 4\n },\n brand: {\n mlc: 'mlc',\n plum: 'plum',\n mlcam: 'mlcam',\n mlcsecure: 'mlcsecure',\n antares: 'antares'\n },\n error: {\n content: {\n noContent: 'no-content'\n },\n aemFetchFailure: '001',\n csvFetchFailure: '010',\n csvMultiMatchFound: '011',\n csvNoMatchFound: '012'\n },\n contentInline: {\n summaryNoContent: 'No Content',\n teaserNoContent: '',\n timeToRead: 'read',\n timeToWatch: 'watch'\n },\n fields: {\n topic: {\n id: 'topic',\n label: 'Select a topic',\n placeHolder: 'Latest Insights'\n }\n }\n};\n","import React from 'react';\nimport styled, { ThemeProvider } from 'styled-components';\n\n// These themes override the toolkit themes for the parts exclusive to contentAggregator.\n// Note all font-sizes are important due to the plum site CSS specifying important.\nexport const mlcTheme = {\n colour: {\n brandPrimary: '#c95109',\n body: '#181816',\n background: '#ffffff',\n ctaBackground: '#faf8f4',\n blogDetailTitle: '#181816',\n brandPrimaryHover: '#bc4401',\n buttonHoverText: '#ffffff',\n breadcrumb: '#3b3b3b',\n cardBorder: '#e5e5e5',\n tableBorder: '#c8c6c2'\n },\n fonts: {\n medium: 'Charlie-Std-Medium',\n regular: 'Helvetica Neue Regular',\n bold: 'Charlie-Std-SemiBold',\n light: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n },\n wrapper: {\n leftPaddingLarge: '40px',\n leftPaddingMedium: '30px'\n },\n content: {\n bold: 'HelveticaNeueW01-75Bold, Helvetica, Arial, sans-serif'\n },\n fieldWrapper: {\n labelFontWeight: '500'\n }\n};\n\nexport const antaresTheme = {\n colour: {\n brandPrimary: '#e42313',\n body: '#181816',\n background: '#ffffff',\n ctaBackground: '#faf8f4',\n blogDetailTitle: '#181816',\n brandPrimaryHover: '#e42313',\n buttonHoverText: '#ffffff',\n breadcrumb: '#3b3b3b',\n cardBorder: '#e5e5e5',\n tableBorder: '#c8c6c2'\n },\n fonts: {\n medium: 'Charlie-Std-Medium',\n regular: 'Helvetica Neue Regular',\n bold: 'Charlie-Std-SemiBold',\n light: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n },\n wrapper: {\n leftPaddingLarge: '40px',\n leftPaddingMedium: '30px'\n },\n content: {\n bold: 'HelveticaNeueW01-75Bold, Helvetica, Arial, sans-serif'\n },\n fieldWrapper: {\n labelFontWeight: '500'\n }\n};\n\nexport const plumTheme = {\n colour: {\n brandPrimary: '#572381',\n body: '#000000',\n background: '#f2f4f6',\n ctaBackground: '#2f4f6',\n blogDetailTitle: '#000000',\n brandPrimaryHover: '#572381',\n buttonHoverText: '#ffffff',\n breadcrumb: '#3b3b3b',\n tableBorder: '#c8c6c2'\n },\n fonts: {\n medium: 'CorpidC1s-Regular',\n regular: 'CorpidC1s-Regular',\n bold: 'CorpidC1s-Bold',\n light: 'CorpidC1s-Light, Helvetica, Arial, sans-serif'\n },\n wrapper: {\n leftPaddingLarge: '15px',\n leftPaddingMedium: '0px'\n },\n content: {\n bold: 'CorpidC1s-Bold'\n },\n fieldWrapper: {\n labelFontWeight: '700'\n }\n};\n\nexport const mlcamTheme = {\n colour: {\n brandPrimary: '#c95109',\n body: '#181816',\n background: '#ffffff',\n ctaBackground: '#f0eeea',\n blogDetailTitle: '#181816',\n brandPrimaryHover: '#741915',\n buttonHoverText: '#ffffff',\n breadcrumb: '#161818',\n cardBorder: '#99948a'\n },\n fonts: {\n medium: 'Charlie-Std-Medium',\n regular: 'Helvetica Neue Regular',\n bold: 'Charlie-Std-Medium',\n light: 'Helvetica Neue Regular'\n },\n wrapper: {\n leftPaddingLarge: '40px',\n leftPaddingMedium: '30px'\n },\n content: {\n bold: 'HelveticaNeueW01-75Bold, Helvetica, Arial, sans-serif'\n },\n fieldWrapper: {\n labelFontWeight: '500'\n }\n};\n\nexport const ContentAggregatorThemeProvider = (props: any) => {\n const theme = {\n contentAggregator: props.theme // Namespace ensures no conflict with parent (UI Toolkit) theme.\n };\n\n return {props.children};\n};\n\nexport const PageWrapperContentAggregator = styled.div`\n .bootstrap-nav-breadcrumb {\n max-height: 60px;\n }\n\n .breadcrumb {\n padding-left: 0;\n margin-top: 0;\n background: none;\n\n li {\n list-style-type: none;\n display: inline-block;\n }\n\n li:before {\n content: '/';\n padding: 0 5px;\n color: #ccc;\n }\n\n li.first:before {\n display: none;\n }\n\n a {\n color: ${props => props.theme.contentAggregator.colour.breadcrumb};\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n & > .active {\n color: ${props => props.theme.contentAggregator.colour.breadcrumb};\n font-weight: bold;\n }\n }\n\n .Select {\n &:hover,\n &:focus {\n outline: none;\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset,\n 0 0 4px ${props => props.theme.contentAggregator.colour.brandPrimary};\n border: thin solid ${props => props.theme.contentAggregator.colour.brandPrimary};\n }\n }\n\n .accordionTitle,\n .chevronUp,\n .chevronDown {\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n }\n\n .accordionBody {\n padding-top: 30px;\n padding-bottom: 15px;\n }\n\n .disclaimer button:hover,\n .videoTranscript button:hover,\n .disclaimer button:focus,\n .videoTranscript button:focus {\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset,\n 0 0 4px ${props => props.theme.contentAggregator.colour.brandPrimary};\n }\n\n .blogContainer {\n padding-left: 30px;\n padding-right: 30px;\n min-height: 245px;\n display: block;\n\n @media screen and (max-width: 991px) {\n padding-left: 0;\n padding-right: 0;\n height: auto;\n }\n }\n\n .teaserContainer {\n img {\n height: 100%;\n }\n\n .blogContainer {\n min-height: 300px;\n padding-left: 30px;\n padding-right: 30px;\n }\n }\n\n @media screen and (max-width: 767px) {\n .breadcrumb {\n display: none;\n }\n }\n`;\n\nexport const StyledLink = styled.a`\n color: ${props => props.theme.contentAggregator.colour.body} !important;\n text-decoration: none !important;\n font-size: 16px;\n display: block;\n margin: 0 0 60px 0;\n transition: box-shadow 1s linear;\n\n &:hover,\n &:focus,\n &:active {\n color: ${props => props.theme.contentAggregator.colour.body} !important;\n text-decoration: none !important;\n\n h2 {\n text-decoration: underline !important;\n color: ${props => props.theme.contentAggregator.colour.brandPrimaryHover} !important;\n }\n }\n\n @media screen and (max-width: 991px) {\n height: auto;\n margin: 0 0 30px 0;\n padding-bottom: 30px;\n }\n`;\n\nexport const StyledFeatureCard = styled.div`\n border: 1px solid #e5e5e;\n height: 100%;\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .Svg {\n padding-top: 3px;\n }\n\n @media screen and (max-width: 767px) {\n img {\n height: auto;\n }\n }\n\n @media screen and (min-width: 768px) and (max-width: 991px) {\n img {\n height: auto;\n }\n }\n`;\n\nexport const StyledStandardCard = styled.div`\n img {\n width: 100%;\n height: 280px;\n }\n\n h2 {\n height: 50px;\n }\n\n .Svg {\n padding-top: 3px;\n }\n\n @media screen and (max-width: 991px) {\n img {\n width: 100%;\n height: auto;\n }\n }\n`;\n\nexport const StyledBlogCategory = styled.div`\n font-size: 14px;\n line-height: 22px;\n font-family: ${props => props.theme.contentAggregator.fonts.light};\n margin-top: 30px;\n\n @media screen and (max-width: 991px) {\n padding-left: 15px;\n padding-right: 15px;\n }\n`;\n\nexport const StyledBlogShortDescription = styled.div`\n padding-right: 15px;\n\n @media screen and (max-width: 991px) {\n padding-left: 15px;\n }\n`;\n\nexport const StyledBlogTimeToRead = styled.div`\n padding-right: 15px;\n\n @media screen and (max-width: 991px) {\n padding-left: 15px;\n }\n`;\n\nexport const StyledShowMoreButton = styled.div`\n text-align: center;\n margin-bottom: 30px;\n\n button {\n background-color: transparent;\n border: 0;\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n font-size: 18px;\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n cursor: pointer;\n position: relative;\n\n &:hover {\n text-decoration: underline;\n color: ${props => props.theme.contentAggregator.colour.brandPrimaryHover};\n }\n }\n \n svg {\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n position: absolute;\n top: 7px;\n margin-left: 10px;\n pointer-events: inherit;\n }\n`;\n\nexport const StyledBlogDetail = styled.div`\n font-family: '${props => props.theme.contentAggregator.fonts.regular}';\n color: ${props => props.theme.contentAggregator.colour.body} !important;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: ${props => props.theme.contentAggregator.colour.blogDetailTitle};\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n }\n\n h1 {\n font-size: 34px;\n line-height: 42px;\n margin-bottom: 0;\n }\n\n h2 {\n font-size: 26px;\n line-height: 34px;\n margin-bottom: 20px;\n }\n\n h3 {\n font-size: 26px;\n line-height: 34px;\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n }\n\n a {\n text-decoration: underline;\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n p,\n div {\n color: ${props => props.theme.contentAggregator.colour.body};\n text-decoration: none;\n }\n }\n\n table {\n border-bottom: 1px solid ${props => props.theme.contentAggregator.colour.tableBorder};\n width: 100%;\n max-width: 100%;\n margin-bottom: 30px;\n }\n \n table tr td, table tr th {\n padding: 8px;\n line-height: 24px;\n vertical-align: top;\n border-top: 1px solid ${props => props.theme.contentAggregator.colour.tableBorder} !important;\n font-size: 16px;\n }\n\n .blogEffectiveDate {\n margin-bottom: 15px;\n font-size: 16px;\n line-height: 24px;\n margin-top: 15px;\n }\n\n .blogFeatureImage {\n margin-bottom: 30px;\n width: 100%;\n margin-top: 15px;\n }\n\n .hr {\n margin-top: 30px;\n margin-bottom: 30px;\n border-top: 1px solid ${props => props.theme.contentAggregator.colour.cardBorder};\n }\n\n .relatedLinks {\n margin-top: 30px;\n padding-top: 15px;\n border-top: 1px solid ${props => props.theme.contentAggregator.colour.cardBorder};\n }\n\n #video-id-blogs {\n margin-bottom: 30px;\n margin-top: 15px;\n }\n\n .disclaimer {\n .accordionTitle,\n .accordionBody {\n font-size: 14px;\n }\n }\n\n @media screen and (max-width: 767px) {\n img {\n height: auto;\n }\n }\n`;\n\nexport const StyledBlogTitle = styled.div`\n h2 {\n font-size: 20px;\n line-height: 24px;\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n margin-top: 15px;\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n }\n\n @media screen and (max-width: 991px) {\n padding-left: 15px;\n padding-right: 15px;\n }\n`;\n\nexport const StyledTopicHeading = styled.div`\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n font-size: 26px;\n line-height: 34px;\n padding-top: 60px;\n\n @media screen and (max-width: 991px) {\n display: none;\n }\n`;\n\nexport const StyledFieldWrapper = styled.div`\n font-family: '${props => props.theme.contentAggregator.fonts.regular}';\n font-size: 16px;\n line-height: 24px;\n padding-top: 60px;\n display:block;\n padding-bottom: 60px;\n\n .Select {\n margin-bottom: 0;\n }\n\n .FieldWrapper {\n margin-bottom: 0;\n }\n\n @media screen and (max-width: 991px) {\n padding-top: 20px;\n padding-bottom: 30px;\n }\n\n @media screen and (min-width: 992px) {\n label {\n width: 30%;\n }\n\n .FieldWrapper__body {\n display: inline-block;\n width: 70%;\n }\n }\n`;\n\nexport const StyledCTA = styled.div`\n background-color: ${props => props.theme.contentAggregator.colour.ctaBackground};\n padding: 30px 15px 30px 15px;\n margin-top: 15px;\n\n h2 {\n margin-top: 0;\n }\n\n button {\n font-size: 18px;\n line-height: 18px;\n height: 44px;\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n font-family: '${props => props.theme.contentAggregator.fonts.bold}';\n background-color: transparent;\n border: 3px solid ${props => props.theme.contentAggregator.colour.brandPrimary};\n min-width: 165px;\n cursor: pointer;\n margin-top: 10px;\n\n &:hover,\n &:focus,\n &:active {\n text-decoration: underline;\n background-color: ${props => props.theme.contentAggregator.colour.brandPrimaryHover};\n color: ${props => props.theme.contentAggregator.colour.buttonHoverText};\n border-color: ${props => props.theme.contentAggregator.colour.brandPrimaryHover};\n }\n }\n\n a {\n text-decoration: underline;\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n }\n`;\n\nexport const StyledRelatedInsights = styled.div`\n .relatedInsightsHeading {\n text-align: center;\n margin-bottom: 30px;\n }\n\n a {\n text-decoration: none;\n margin-bottom: 30px;\n\n div:nth-child(2) {\n h2 {\n color: ${props => props.theme.contentAggregator.colour.brandPrimary};\n }\n }\n }\n`;\n","import { format } from 'date-fns';\nimport { Statics } from './Statics';\nimport { isEmpty } from 'lodash';\nimport { mlcTheme, plumTheme, mlcamTheme, antaresTheme } from '../components/styles/contentAggregator.style';\n\nexport class BlogsUtil {\n public static dateFormat = (dateString: string, destFormat: string) => {\n let formattedDate = '';\n try {\n formattedDate = format(new Date(dateString), destFormat);\n } catch {\n // ignore\n }\n return formattedDate;\n };\n}\n\nexport function getThemeName(brand: string) {\n return brand === Statics.brand.plum\n ? 'plum'\n : Statics.brand.mlcam\n ? 'mlcam'\n : Statics.brand.mlcsecure\n ? 'mlc'\n : Statics.brand.antares\n ? 'antares'\n : 'mlc';\n}\n\nexport function getTheme(brand: string) {\n return brand === Statics.brand.plum\n ? plumTheme\n : brand === Statics.brand.mlcam\n ? mlcamTheme\n : brand === Statics.brand.mlcsecure\n ? mlcTheme\n : brand === Statics.brand.antares\n ? antaresTheme\n : mlcTheme;\n}\nexport function getUrls(brand: string, siteSection?: string) {\n return isEmpty(siteSection)\n ? {\n insightsUrl: `/graphql/execute.json/mlc/insights-${brand}`,\n insightsByTopicUrl: `/graphql/execute.json/mlc/insights-${brand}-by-topic`\n }\n : {\n insightsUrl: `/graphql/execute.json/mlc/insights-${brand}-${siteSection}`,\n insightsByTopicUrl: `/graphql/execute.json/mlc/insights-${brand}-${siteSection}-by-topic`\n };\n}\nexport function encodeWithoutSlash(queryString: string) {\n const encodedParts = queryString.split('/').map(item => encodeURIComponent(item));\n return encodedParts.join('/');\n}\nexport function getContentFragmentPath(brand: string, siteSection?: string) {\n return isEmpty(siteSection)\n ? `;path=/content/dam/${brand}/insights/cf`\n : `;path=/content/dam/${brand}/${siteSection}/insights/cf`;\n}\n/** return encoded querystring with content fragment path and brand provided with siteSection '' as default */\nexport function getQueryString(limit: string, offset: string, brand: string, topic: string) {\n let queryString = `;limit=${limit};offset=${offset};variation=${brand}`;\n if (!isEmpty(topic)) queryString += `;topic=${topic}`;\n return encodeWithoutSlash(queryString);\n}\n\n/** return url and tagprefix with brand and siteSection if passed */\nexport function getBlogTags(brand: string, siteSection: string) {\n return isEmpty(siteSection)\n ? {\n url: `/content/cq:tags/${brand}/Topics.1.json`,\n tagPrefix: `${brand}:Topics/`\n }\n : {\n url: `/content/cq:tags/${brand}/${siteSection}/Topics.1.json`,\n tagPrefix: `${brand}:${siteSection}/Topics/`\n };\n}\n","import React from 'react';\nimport { filter } from 'lodash';\nimport { Col, FieldWrapper, Row, Select } from '@mlc/web-ui-toolkit';\nimport { Statics } from '../../util';\nimport { StyledTopicHeading, StyledFieldWrapper } from '../styles/contentAggregator.style';\n\nexport interface FilterProps {\n dataTag: any[];\n applyFilter: any;\n topicFilter: string;\n}\n\nconst Filter: React.FunctionComponent = ({ dataTag, applyFilter, topicFilter }) => {\n const topicHeadline = !topicFilter\n ? Statics.fields.topic.placeHolder\n : filter(dataTag, { value: topicFilter })[0].label;\n const handleChange = (event: any) => {\n applyFilter(event.target.value);\n };\n return (\n \n \n {topicHeadline}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Filter;\n","import { useEffect, useReducer, useState } from 'react';\nimport { AuthFetch } from '@mlconline/auth-fetch';\nimport { Statics } from '../util/Statics';\nimport { isEmpty } from 'lodash';\nimport { getQueryString, getUrls } from '../util/BlogsUtil';\n\nexport interface BlogSummary {\n _path: string;\n title: string;\n shortDescription: string;\n topics: string[];\n timeToRead: string;\n media: boolean;\n effectiveDate: string;\n featureImage: {\n _path: string;\n };\n pageReference: {\n _path: string;\n };\n}\n\nenum ListActionKind {\n UPDATE = 'UPDATE'\n}\n\ninterface ListAction {\n type: ListActionKind;\n payload: BlogSummary[];\n topic: string;\n}\n\ninterface ListState {\n topic: string;\n blogs: BlogSummary[];\n}\n\n// Allows us to store previous state in the case of 'show more', but reset back to the beginning when topic changes\nfunction listReducer(state: ListState, action: ListAction) {\n const { type, payload, topic } = action;\n switch (type) {\n case ListActionKind.UPDATE:\n if (topic === state.topic) {\n return {\n topic: topic,\n blogs: [...state.blogs, ...payload]\n };\n } else {\n return {\n topic: topic,\n blogs: payload\n };\n }\n default:\n return state;\n }\n}\n\nexport const useBlogList = (\n process: boolean,\n topic: string,\n limit: number,\n offset: number,\n brand: string,\n siteSection: string\n) => {\n const [errorList, setErrorList] = useState(null);\n const [loadingList, setLoadingList] = useState(true);\n const [dataList, dispatch] = useReducer(listReducer, { topic: topic, blogs: [] });\n const [isEmptyPage, setIsEmptyPage] = useState(false);\n const { insightsUrl, insightsByTopicUrl } = getUrls(brand, siteSection);\n // See https://github.com/facebook/react/issues/14981\n // Allows Error Boundaries to handle async code.\n const [, /* state */ setState] = useState();\n\n // We either query by topic or by all.\n const url = isEmpty(topic) ? insightsUrl : insightsByTopicUrl;\n let qs = getQueryString(limit.toString(), offset.toString(), brand, topic);\n\n useEffect(() => {\n (async () => {\n setLoadingList(true); // reset for subsequent calls.\n // This flag is used to decide if we need to call this at all.\n // Sometimes a dependency on other async data.\n if (!process) {\n setLoadingList(false);\n } else {\n await AuthFetch.get(url + qs)\n .then((dataObj: any) => {\n if (dataObj && dataObj.data && dataObj.data.insightsList) {\n if (dataObj.data.insightsList.items.length === 0) {\n setIsEmptyPage(true);\n } else {\n dispatch({\n type: ListActionKind.UPDATE,\n payload: dataObj.data.insightsList.items,\n topic: topic\n });\n }\n } else {\n const err = new Error(Statics.error.content.noContent);\n setState(() => {\n throw err;\n });\n setErrorList(err);\n }\n })\n .catch((e: any) => {\n const err = new Error(Statics.error.aemFetchFailure + e.toString());\n setState(() => {\n throw err;\n });\n setErrorList(err);\n });\n // Note this will wait for the topic to be set before it sets 'loading' to false.\n setLoadingList(false);\n }\n })();\n }, [process, url, qs, topic, limit, offset, brand]);\n\n return { errorList, loadingList, dataList, isEmptyPage };\n};\n","import { useEffect, useState } from 'react';\nimport { AuthFetch } from '@mlconline/auth-fetch';\nimport { Statics } from '../util/Statics';\nimport { filter } from 'lodash';\nimport { getBlogTags } from '../util/BlogsUtil';\n\nexport const useBlogTags = (brand: string, siteSection: string) => {\n const [errorTag, setErrorTag] = useState(null);\n const [loadingTag, setLoadingTag] = useState(true);\n const [dataTag, setDataTag] = useState([]);\n\n const { url, tagPrefix } = getBlogTags(brand, siteSection);\n // See https://github.com/facebook/react/issues/14981\n // Allows Error Boundaries to handle async code.\n const [, /* state */ setState] = useState();\n useEffect(() => {\n (async () => {\n setLoadingTag(true); // reset for subsequent calls.\n await AuthFetch.get(url)\n .then((data: any) => {\n if (data.length === 0) {\n const err = new Error(Statics.error.content.noContent);\n setState(() => {\n throw err;\n });\n setErrorTag(err);\n } else {\n // the incoming data is not ideal. Convert to something useful.\n let tagInfo = Object.keys(data).map(key => ({\n label: data[key]['jcr:title'],\n value: tagPrefix + key\n }));\n tagInfo = filter(tagInfo, function(o) {\n return o.label !== undefined;\n });\n\n setDataTag(tagInfo);\n }\n })\n .catch((e: any) => {\n const err = new Error(Statics.error.aemFetchFailure + e.toString());\n setState(() => {\n throw err;\n });\n setErrorTag(err);\n });\n\n setLoadingTag(false);\n })();\n }, [url, tagPrefix]);\n\n return { errorTag, loadingTag, dataTag };\n};\n","import * as React from 'react';\nimport { BlogSummary } from '../../hooks/useBlogList';\nimport {\n StyledLink,\n StyledFeatureCard,\n StyledBlogCategory,\n StyledBlogTitle,\n StyledBlogTimeToRead,\n StyledBlogShortDescription\n} from '../styles/contentAggregator.style';\nimport { BlogsUtil, Statics } from '../../util';\nimport { Col, Row, Svg } from '@mlc/web-ui-toolkit';\nimport { clock, play } from '@mlc/symbols';\n\nexport interface FormProps {\n blog: BlogSummary;\n}\n\nconst FeatureCard: React.FunctionComponent = ({ blog }) => {\n return (\n \n \n \n \n \n {blog.featureImage && \"\"}\n \n \n {blog.effectiveDate && (\n \n

{BlogsUtil.dateFormat(blog.effectiveDate, 'MMM yyyy')}

\n
\n )}\n \n

{blog.title}

\n
\n \n \n {blog.media && (\n

\n {blog.timeToRead} {Statics.contentInline.timeToWatch} \n

\n )}\n {!blog.media && (\n

\n {blog.timeToRead} {Statics.contentInline.timeToRead} \n

\n )}\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default FeatureCard;\n","import * as React from 'react';\nimport { BlogSummary } from '../../hooks/useBlogList';\nimport {\n StyledLink,\n StyledStandardCard,\n StyledBlogTitle,\n StyledBlogCategory,\n StyledBlogTimeToRead,\n StyledBlogShortDescription\n} from '../styles/contentAggregator.style';\nimport { BlogsUtil, Statics } from '../../util';\nimport { Svg } from '@mlc/web-ui-toolkit';\nimport { clock, play } from '@mlc/symbols';\n\nexport interface FormProps {\n blog: BlogSummary;\n}\n\nconst StandardCard: React.FunctionComponent = ({ blog }) => {\n return (\n \n \n \n {blog.featureImage && \"\"}\n\n
\n {blog.effectiveDate && (\n \n

{BlogsUtil.dateFormat(blog.effectiveDate, 'MMM yyyy')}

\n
\n )}\n \n

{blog.title}

\n
\n \n \n {blog.media && (\n

\n {blog.timeToRead} {Statics.contentInline.timeToWatch} \n

\n )}\n {!blog.media && (\n

\n {blog.timeToRead} {Statics.contentInline.timeToRead} \n

\n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default StandardCard;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Col, Grid, Row, Svg } from '@mlc/web-ui-toolkit';\nimport Filter from '../components/filter/Filter';\nimport { useBlogList, useBlogTags } from '../hooks';\nimport FeatureCard from '../components/content/FeatureCard';\nimport StandardCard from '../components/content/StandardCard';\nimport { StyledShowMoreButton } from '../components/styles/contentAggregator.style';\nimport { chevronDownSolid } from '@mlc/symbols';\nimport { Statics } from '../util';\n\nexport interface ContentConfig {\n readonly brand: string;\n readonly topicTag: string;\n readonly siteSection: string;\n readonly mode: string;\n}\n\nconst SummaryContainer: React.FunctionComponent = ({ brand, siteSection }) => {\n const [topicFilter, setTopicFilter] = useState('');\n const [offset, setOffset] = useState(0);\n const [limit, setLimit] = useState(Statics.pageLimit.summaryInit);\n const { errorList, loadingList, dataList, isEmptyPage } = useBlogList(\n true,\n topicFilter,\n limit,\n offset,\n brand,\n siteSection\n );\n const { errorTag, loadingTag, dataTag } = useBlogTags(brand, siteSection);\n\n const showForm = !errorList && !loadingList && !errorTag && !loadingTag;\n\n const applyFilter = (topicPath: string) => {\n setTopicFilter(topicPath);\n // This will reset state in useBlogList so the list starts again.\n setOffset(0);\n setLimit(Statics.pageLimit.summaryInit);\n };\n\n const getNextPage = () => {\n // Note the order is important here. Limit changes after the first page.\n setOffset(offset + limit);\n setLimit(Statics.pageLimit.summaryMore);\n };\n\n // Focus on the correct card after loadMore. Working out showMore is not foolproof. If a full page is\n // followed by an empty page, we will only detect there is no more content on the empty page.\n // If however we get back a partial page, we know straight away there is no more content.\n const fullPage =\n showForm && (dataList.blogs.length - Statics.pageLimit.summaryInit) % Statics.pageLimit.summaryMore === 0;\n const isMore = showForm && !isEmptyPage && fullPage;\n const divRef = useRef(null);\n useEffect(() => {\n divRef.current?.scrollIntoView();\n divRef.current?.getElementsByTagName('a')[0].focus();\n }, [showForm]); // make sure this executes again after the last render\n\n // This function is required to allow 2 cards per row in the main iteration.\n const renderColumns = (index: number) => {\n let cards = [];\n let toIndex = index;\n if (dataList.blogs.length > index + 1) {\n toIndex = index + 1;\n }\n // Focus on the first item in the new page (accessibility), should only be after the initial page load\n // (eg after loadMore). So do not apply the React ref until we are on subsequent pages.\n const numMorePages = Math.ceil(\n (dataList.blogs.length - Statics.pageLimit.summaryInit) / Statics.pageLimit.summaryMore\n );\n let focusIndex = -1;\n if (numMorePages > 0) {\n focusIndex = Statics.pageLimit.summaryInit + (numMorePages - 1) * Statics.pageLimit.summaryMore;\n }\n\n for (let i = index; i <= toIndex; i++) {\n cards.push(\n \n
0 && i === focusIndex ? { ref: divRef } : {})}>\n \n
\n \n );\n }\n return cards;\n };\n\n return (\n \n {showForm && (\n \n \n \n \n \n \n\n {dataList.blogs.length === 0 && (\n \n \n \n
{Statics.contentInline.summaryNoContent}
\n \n
\n
\n )}\n\n {dataList.blogs.map((blog: any, index: number) => (\n \n {index === 0 && (\n \n \n \n \n \n )}\n {index > 0 && index % 2 !== 0 && {renderColumns(index)}}\n \n ))}\n\n {isMore && (\n \n \n \n \n \n \n \n \n \n )}\n
\n )}\n
\n );\n};\n\nexport default SummaryContainer;\n","import * as React from 'react';\nimport { BaseErrorScreen } from '@mlc/mlc-webcomponents-common';\n\ninterface Props {\n code: string;\n}\n\nexport const ErrorScreen: React.FunctionComponent = ({ code }) => {\n const heading = 'We are unable to provide a service at this time.';\n const text = 'We apologise for any inconvenience this may cause [error code: ' + code + ']';\n const paragraph = 'Please contact MLC on 132 652 if you require further information.';\n\n return ;\n};\n","import React from 'react';\nimport { ErrorScreen } from './ErrorScreen';\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n errorMsg: string;\n}\n\nexport class ErrorBoundary extends React.Component<{}, ErrorBoundaryState> {\n constructor(props: any) {\n super(props);\n this.state = { hasError: false, errorMsg: '' };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n this.setState({\n hasError: true,\n errorMsg: error.message\n });\n }\n\n render() {\n if (this.state.hasError) {\n return ;\n }\n // Normally, just render children\n return this.props.children;\n }\n}\n","import React from 'react';\nimport { Col, Grid, Row } from '@mlc/web-ui-toolkit';\nimport { useBlogList } from '../hooks';\nimport { Statics } from '../util';\nimport StandardCard from '../components/content/StandardCard';\nimport { ContentConfig } from './SummaryContainer';\n\nconst TeaserContainer: React.FunctionComponent = ({ brand, topicTag, siteSection }) => {\n const { errorList, loadingList, dataList, isEmptyPage } = useBlogList(\n true,\n topicTag,\n Statics.pageLimit.teasers,\n 0,\n brand,\n siteSection\n );\n const showForm = !errorList && !loadingList;\n const checkIsInsightCurrentPage = () => {\n dataList.blogs.forEach((blog: any, index: number) => {\n const blogPath =\n '/' +\n blog.pageReference._path\n .split('/')\n .slice(4)\n .join('/');\n if (window.location.pathname === blogPath) {\n dataList.blogs.splice(index, 1);\n console.log('Blog page path' + blogPath);\n }\n });\n };\n\n return (\n \n {showForm && (\n \n {isEmptyPage && (\n \n \n \n
{Statics.contentInline.teaserNoContent}
\n \n
\n
\n )}\n\n \n {checkIsInsightCurrentPage()}\n {dataList.blogs.map((blog: any, index: number) => (\n \n {index < 3 && (\n \n \n \n )}\n \n ))}\n \n
\n )}\n
\n );\n};\n\nexport default TeaserContainer;\n","import * as React from 'react';\nimport '@mlc/charlie-web-fonts';\nimport { Container } from '@mlc/web-ui-toolkit';\nimport SummaryContainer, { ContentConfig } from './containers/SummaryContainer';\nimport { ErrorBoundary } from './components/error/ErrorBoundary';\nimport { isEmpty } from 'lodash';\nimport {\n ContentAggregatorThemeProvider,\n PageWrapperContentAggregator\n} from './components/styles/contentAggregator.style';\nimport { getTheme, getThemeName } from './util/BlogsUtil';\nimport TeaserContainer from './containers/TeaserContainer';\n\nconst App: React.FunctionComponent = formConfigProps => (\n \n \n \n \n \n {!isEmpty(formConfigProps.mode) && formConfigProps.mode === 'summary' ? (\n \n ) : (\n \n )}\n \n \n \n \n \n);\n\nexport default App;\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as serviceWorker from './serviceWorker';\nimport 'whatwg-fetch';\nimport 'abortcontroller-polyfill/dist/polyfill-patch-fetch';\nimport { ContentConfig } from './containers/SummaryContainer';\nimport App from './App';\n\nconst defaultProps: ContentConfig = {\n brand: process.env.REACT_APP_BRAND as string,\n topicTag: process.env.REACT_APP_TOPIC_TAG as string,\n siteSection: process.env.REACT_APP_SITE_SECTION as string,\n mode: process.env.REACT_APP_MODE as string\n};\n\nclass ReactWebComponent extends HTMLElement {\n constructor() {\n super();\n const appConfig = this.getAppConfig();\n const applicationConfig = { ...defaultProps, ...appConfig };\n\n // Note that routing was used for detail pages, but this was removed, leaving just the entry point routes.\n ReactDOM.render(, this);\n }\n\n getAppConfig = (): any => {\n const value = this.getAttribute('appConfig');\n if (value) {\n try {\n return JSON.parse(value);\n } catch (x) {\n console.warn(`Could not JSON.parse value ${value}`);\n }\n }\n\n return {};\n };\n}\n\ncustomElements.define(process.env.REACT_APP_WEBCOMPONENT_NAME as string, ReactWebComponent);\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withScrollLoad = void 0;\nconst tslib_1 = require(\"tslib\");\nconst React = tslib_1.__importStar(require(\"react\"));\n/*\n withScrollLoad is an HOC that will cause the wrapped\n component to scroll to the top of the page when it mounts\n*/\nexports.withScrollLoad = (WrappedComponent) => {\n return class ScrollLoader extends React.Component {\n constructor(props) {\n super(props);\n }\n componentDidMount() {\n window.scrollTo({ top: 0, left: 0 });\n }\n render() {\n return React.createElement(WrappedComponent, Object.assign({}, this.props));\n }\n };\n};\n//# sourceMappingURL=withScrollLoad.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MultistepButtons_1 = require(\"./components/MultistepButtons/MultistepButtons\");\nObject.defineProperty(exports, \"MultistepButtons\", { enumerable: true, get: function () { return MultistepButtons_1.MultistepButtons; } });\nvar BaseErrorScreen_1 = require(\"./components/ErrorScreen/BaseErrorScreen\");\nObject.defineProperty(exports, \"BaseErrorScreen\", { enumerable: true, get: function () { return BaseErrorScreen_1.BaseErrorScreen; } });\nvar withScrollLoad_1 = require(\"./hocs/withScrollLoad\");\nObject.defineProperty(exports, \"withScrollLoad\", { enumerable: true, get: function () { return withScrollLoad_1.withScrollLoad; } });\nvar withScrollError_1 = require(\"./hocs/withScrollError\");\nObject.defineProperty(exports, \"withScrollError\", { enumerable: true, get: function () { return withScrollError_1.withScrollError; } });\nvar AnalyticsService_1 = require(\"./util/AnalyticsService\");\nObject.defineProperty(exports, \"AnalyticsService\", { enumerable: true, get: function () { return AnalyticsService_1.AnalyticsService; } });\nvar TestUtils_1 = require(\"./util/TestUtils\");\nObject.defineProperty(exports, \"generateString\", { enumerable: true, get: function () { return TestUtils_1.generateString; } });\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}