{"version":3,"file":"731.bundle.js","mappings":"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","sources":["webpack://vaneckreact/./ReactAU/Components/CompoundHeroBlock/CompoundHeroBlockInner.tsx","webpack://vaneckreact/./ReactAU/Components/CompoundHeroBlock/CompoundHeroBlock.tsx","webpack://vaneckreact/./ReactAU/Components/CompoundHeroBlock/useCompoundHeroBlock.tsx","webpack://vaneckreact/./ReactAU/core/customHooks/useAutoScollUp.tsx","webpack://vaneckreact/./ReactAU/services/fetchDataService.tsx"],"sourcesContent":["import { MediaPreview, RecommendationsBlockViewModel } from \"../../../ReactUS/interfaces/MediaPreview\";\r\nimport parse from \"html-react-parser\";\r\n\r\ninterface CompoundHeroBlockViewModel {\r\n Recommendations: MediaPreview[];\r\n LinkText?: string;\r\n Link?: string;\r\n}\r\n\r\nexport function CompoundHeroBlockInner(props: CompoundHeroBlockViewModel) {\r\n const { Recommendations, LinkText, Link } = props;\r\n const hasLink = Link && LinkText;\r\n\r\n return (\r\n
\r\n
\r\n {Recommendations.map((recommendation, index) => (\r\n \r\n ))}\r\n {hasLink && }\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction CompoundHeroItem(props: { recommendation: MediaPreview, index: number }) {\r\n const { recommendation, index } = props;\r\n const category = recommendation.Category ?? \"\";\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{parse(category)}
\r\n \r\n

{parse(recommendation.Title ?? recommendation.Description)}

\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\ninterface CompoundHeroLinkInnerProps {\r\n Link: string;\r\n LinkText: string;\r\n}\r\n\r\nconst CompoundHeroLink: React.FC = ({ Link, LinkText }) => {\r\n return (\r\n \r\n {parse(LinkText)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\n\r\n","import \"./CompoundHeroBlock.scss\";\r\nimport useAutoScrollUp from \"../../core/customHooks/useAutoScollUp\";\r\nimport { useState } from \"react\";\r\nimport { useCompoundHeroBlock } from \"./useCompoundHeroBlock\";\r\nimport { CompoundHeroBlockInner } from \"./CompoundHeroBlockInner\";\r\n\r\nexport interface CompoundHeroBlockInterface extends ComponentInterface { }\r\n\r\nconst CompoundHeroBlock = (props: CompoundHeroBlockInterface) => {\r\n const element = props.rootElement;\r\n const blockID = element.dataset.blockid as unknown as number;\r\n const pageID = element.dataset.pageid as unknown as number;\r\n\r\n const [markup, setMarkup] = useState(\r\n
\r\n
\r\n
Loading Data...
\r\n
\r\n
\r\n );\r\n\r\n useAutoScrollUp(element);\r\n if (isNaN(blockID)) return

Error: BlockID not found.

;\r\n\r\n const [blockData] = useCompoundHeroBlock({\r\n blockID: blockID,\r\n pageID: pageID,\r\n setMarkup: setMarkup,\r\n });\r\n\r\n return (\r\n <>\r\n {markup}\r\n {blockData && blockData.success && blockData.items && blockData.items.length > 0 && <>\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CompoundHeroBlock;","import { fetchBlockData } from \"../../services/fetchDataService\";\r\nimport { MediaPreview } from \"../../../ReactUS/interfaces/MediaPreview\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\ninterface UseCompoundHeroBlockProps {\r\n blockID: Number;\r\n pageID: Number;\r\n setMarkup: Function;\r\n}\r\n\r\ninterface HeroResult {\r\n success: boolean;\r\n linkText?: string;\r\n linkUrl?: string;\r\n items?: MediaPreview[];\r\n}\r\n\r\nexport function useCompoundHeroBlock(props: UseCompoundHeroBlockProps) {\r\n const { blockID, pageID, setMarkup } = props;\r\n const [blockData, setBlockData] = useState(null);\r\n const url = document.location.href;\r\n\r\n const visits = getVisitsCount();\r\n const isFirstVisit = visits ? parseInt(visits) < 2 : true;\r\n const categoryId = (document.querySelector(\"[data-categoryid]\") as HTMLElement)?.dataset.categoryid;\r\n const ivcookie = getCookie(\"iv\") ?? \"\";\r\n\r\n useEffect(() => {\r\n (async () => {\r\n let additionalParams = getAdditionalParams(categoryId, isFirstVisit);\r\n const response: HeroResult = await fetchBlockData({\r\n url: `/main/HomeAuPage/GetCompoundHero/?blockid=${blockID}&pageid=${pageID}&iv=${ivcookie}¤tPageUrl=${url}${additionalParams}`,\r\n isJson: true,\r\n setMarkup: setMarkup,\r\n });\r\n console.log(\"%c *** COMPOUND HERO BLOCK BLOCK ***\", \"background: #f28bff; color: #fff\");\r\n console.log(\"HybridInsights loaded, response:\", response);\r\n setBlockData(response);\r\n setMarkup(false);\r\n })();\r\n }, [])\r\n\r\n return [blockData]\r\n}\r\n\r\nfunction getAdditionalParams(categoryId: string | undefined, isFirstVisit: boolean) {\r\n let additionalParams = \"\";\r\n if (categoryId) {\r\n additionalParams += \"&categoryId=\" + categoryId;\r\n }\r\n if (isFirstVisit) {\r\n additionalParams += \"&isFirstVisit=\" + isFirstVisit;\r\n }\r\n return additionalParams;\r\n}\r\n\r\nfunction getCookie(name: string) {\r\n const value = `; ${document.cookie}`;\r\n const parts = value.split(`; ${name}=`);\r\n if (parts.length === 2) return parts.pop()?.split(';').shift();\r\n}\r\n\r\nfunction getVisitsCount() {\r\n const key = getLocalStorageKeyByMicrosite();\r\n const visits = localStorage.getItem(key);\r\n return visits;\r\n}\r\n \r\nfunction getLocalStorageKeyByMicrosite() {\r\n let microsite = (document.querySelector(\"#hdnCurrentMicrositeId\") as HTMLInputElement)?.value;\r\n // AU workaround\r\n if (!microsite) {\r\n microsite = (document.querySelector(\"#hdnSelectedCountry\") as HTMLInputElement)?.value.toLowerCase();\r\n }\r\n let key = \"\";\r\n switch (microsite) {\r\n case \"global\":\r\n key = \"ve-PageVisitCount-corp\";\r\n break;\r\n case \"ucits\":\r\n key = \"ve-PageVisitCount-eu\";\r\n break;\r\n case \"au\":\r\n key = \"ve-PageVisitCount-au\";\r\n break;\r\n default:\r\n key = \"ve-PageVisitCount\";\r\n break;\r\n }\r\n\r\n return key;\r\n}","import { useState, useEffect, useLayoutEffect } from \"react\";\r\n\r\n/**\r\n * When a component is rendered above the viewport, it results in the current scroll position being offset by the height difference.\r\n * This custom hook will adjust for the height of the component before every paint.\r\n * @param {HTMLElement} element\r\n */\r\nfunction useAutoScrollUp(element: HTMLElement) {\r\n const [height, setHeight] = useState(0);\r\n\r\n useEffect(() => {\r\n element && setHeight(element.getBoundingClientRect()?.height);\r\n }, [element]);\r\n\r\n useLayoutEffect(() => {\r\n if (!element || !height) return;\r\n const elemBoundingRect = element.getBoundingClientRect();\r\n const newHeight = elemBoundingRect.height;\r\n const heightIncrease = newHeight - height;\r\n\r\n //compensate scrolling only if elem above viewport (scrolling up)\r\n if (elemBoundingRect.top < 50) {\r\n window.scrollBy(0, heightIncrease);\r\n }\r\n\r\n setHeight((height) => height + heightIncrease);\r\n });\r\n}\r\n\r\nexport default useAutoScrollUp;","import React from \"react\";\r\n\r\nexport interface FetchBlockDataInterface {\r\n url: string,\r\n isJson?: Boolean,\r\n setMarkup?: Function | null\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n reactlang: string | null | undefined;\r\n reactctr: string | null | undefined;\r\n isapiepieditmode: string | null | undefined;\r\n isapilatestversionpreview: string | null | undefined;\r\n epiprojectid: string | null | undefined;\r\n }\r\n}\r\n\r\nwindow.reactlang = document.getElementsByTagName(\"ve-language\")[0]?.innerHTML;\r\nwindow.reactctr = document.getElementsByTagName(\"ve-country\")[0]?.innerHTML;\r\nwindow.isapiepieditmode = document.getElementsByTagName(\"ve-is-epi-edit-mode\")[0]?.innerHTML;\r\nwindow.isapilatestversionpreview = document.getElementsByTagName(\"ve-is-latest-version-preview\")[0]?.innerHTML;\r\nwindow.epiprojectid = document.getElementsByTagName(\"ve-epi-project-id\")[0]?.innerHTML;\r\n\r\n/**\r\n * Fetches data for a given API endpoint. Expects any get parameters to be encoded in the url.\r\n * If JSON is expected, returns the JSON object. If not returns the result object.\r\n * @param {FetchBlockDataInterface} options\r\n * @returns {any|Response}\r\n */\r\nexport async function fetchBlockData({ url, isJson = true, setMarkup = null }: FetchBlockDataInterface): Promise {\r\n\r\n try {\r\n let additionalParams = window.isapiepieditmode || window.isapilatestversionpreview\r\n ? `&epieditmode=${window.isapiepieditmode}&latest=${window.isapilatestversionpreview}`\r\n : '';\r\n if(window.epiprojectid){\r\n additionalParams += `&epiprojects=${window.epiprojectid}`;\r\n }\r\n const request = await fetch(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}reactlang=${window.reactlang}&reactctr=${window.reactctr}${additionalParams}&_=${new Date().getTime()}`);\r\n const response: Response|any = isJson ? await request.json() : request;\r\n \r\n return response;\r\n } catch (err) {\r\n console.log(`Error while fetching block data! URL: ${url}`);\r\n\r\n typeof (setMarkup) === \"function\" && setMarkup(\r\n
An error occured when loading data.
\r\n );\r\n\r\n throw new Error(err as string);\r\n }\r\n}"],"names":["CompoundHeroBlockInner","props","Recommendations","LinkText","Link","hasLink","className","map","recommendation","index","CompoundHeroItem","CompoundHeroLink","category","Category","href","MediaLink","Title","Description","focusable","role","xmlns","viewBox","fill","d","element","rootElement","blockID","dataset","blockid","pageID","pageid","markup","setMarkup","useState","isNaN","blockData","setBlockData","url","document","location","visits","key","microsite","querySelector","value","toLowerCase","getLocalStorageKeyByMicrosite","localStorage","getItem","getVisitsCount","isFirstVisit","parseInt","categoryId","categoryid","ivcookie","name","parts","cookie","split","length","pop","shift","getCookie","useEffect","additionalParams","getAdditionalParams","response","isJson","console","log","useCompoundHeroBlock","success","items","linkText","linkUrl","height","setHeight","getBoundingClientRect","useLayoutEffect","elemBoundingRect","heightIncrease","top","window","scrollBy","async","fetchBlockData","isapiepieditmode","isapilatestversionpreview","epiprojectid","request","fetch","indexOf","reactlang","reactctr","Date","getTime","json","err","Error","getElementsByTagName","innerHTML"],"sourceRoot":""}